Skip to content

Commit a6ace28

Browse files
committed
[X86] combineConcatVectorOps - ensure we're only concatenating v2f64 generic shuffles into vXf64 vshufpd
Identified while triaging #143606 - we can't concat v4f64 lhs/rhs subvecs and then expect the v2f64 operands to be in the correct place for VSHUFPD Test coverage will follow
1 parent 0f3c54a commit a6ace28

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59383,7 +59383,8 @@ static SDValue combineConcatVectorOps(const SDLoc &DL, MVT VT,
5938359383

5938459384
// We can always convert per-lane vXf64 shuffles into VSHUFPD.
5938559385
if (!IsSplat &&
59386-
(VT == MVT::v4f64 || (VT == MVT::v8f64 && Subtarget.useAVX512Regs())) &&
59386+
((NumOps == 2 && VT == MVT::v4f64) ||
59387+
(NumOps == 4 && VT == MVT::v8f64 && Subtarget.useAVX512Regs())) &&
5938759388
all_of(Ops, [](SDValue Op) { return Op.hasOneUse(); })) {
5938859389
// Collect the individual per-lane v2f64/v4f64 shuffles.
5938959390
MVT OpVT = Ops[0].getSimpleValueType();

0 commit comments

Comments
 (0)