Skip to content

Commit 869a5d5

Browse files
committed
Handling the case when ExtElt is not the OneUse
1 parent 681766d commit 869a5d5

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

llvm/lib/Transforms/Vectorize/VectorCombine.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2786,10 +2786,10 @@ bool VectorCombine::shrinkType(llvm::Instruction &I) {
27862786
bool VectorCombine::foldInsExtVectorToShuffle(Instruction &I) {
27872787
Value *DstVec, *SrcVec;
27882788
uint64_t ExtIdx, InsIdx;
2789-
if (!match(&I, m_InsertElt(m_Value(DstVec),
2790-
m_OneUse(m_ExtractElt(m_Value(SrcVec),
2791-
m_ConstantInt(ExtIdx))),
2792-
m_ConstantInt(InsIdx))))
2789+
if (!match(&I,
2790+
m_InsertElt(m_Value(DstVec),
2791+
m_ExtractElt(m_Value(SrcVec), m_ConstantInt(ExtIdx)),
2792+
m_ConstantInt(InsIdx))))
27932793
return false;
27942794

27952795
auto *VecTy = dyn_cast<FixedVectorType>(I.getType());
@@ -2814,6 +2814,8 @@ bool VectorCombine::foldInsExtVectorToShuffle(Instruction &I) {
28142814

28152815
InstructionCost NewCost =
28162816
TTI.getShuffleCost(TargetTransformInfo::SK_PermuteTwoSrc, VecTy, Mask);
2817+
if (!Ext->hasOneUse())
2818+
NewCost += TTI.getVectorInstrCost(*Ext, VecTy, CostKind, ExtIdx);
28172819

28182820
if (OldCost < NewCost)
28192821
return false;

0 commit comments

Comments
 (0)