[libc] [libcxx] [lld] [clang] [llvm] [compiler-rt] [flang] Fix ISel crash when lowering BUILD_VECTOR (PR #73186)
David Li via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 24 09:30:52 PST 2023
================
@@ -986,15 +1003,15 @@ void X86DAGToDAGISel::PreprocessISelDAG() {
case X86ISD::VBROADCAST: {
MVT VT = N->getSimpleValueType(0);
// Emulate v32i16/v64i8 broadcast without BWI.
- if (!Subtarget->hasBWI() && (VT == MVT::v32i16 || VT == MVT::v64i8)) {
- MVT NarrowVT = VT == MVT::v32i16 ? MVT::v16i16 : MVT::v32i8;
+ if (!Subtarget->hasBWI() && needBWI(VT)) {
+ MVT NarrowVT = getNarrowType(VT);
SDLoc dl(N);
SDValue NarrowBCast =
CurDAG->getNode(X86ISD::VBROADCAST, dl, NarrowVT, N->getOperand(0));
SDValue Res =
CurDAG->getNode(ISD::INSERT_SUBVECTOR, dl, VT, CurDAG->getUNDEF(VT),
NarrowBCast, CurDAG->getIntPtrConstant(0, dl));
- unsigned Index = VT == MVT::v32i16 ? 16 : 32;
+ unsigned Index = getInsertIndex(VT);
----------------
david-xl wrote:
Comments addressed. PTAL
https://github.com/llvm/llvm-project/pull/73186
More information about the cfe-commits
mailing list