summaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
diff options
context:
space:
mode:
authorAnton Afanasyev <anton.a.afanasyev@gmail.com>2021-05-18 11:30:03 +0300
committerAnton Afanasyev <anton.a.afanasyev@gmail.com>2021-05-25 01:35:43 +0300
commitb2cd89501164ebadcddfd92304fe7b5675e59748 (patch)
treef8b3ca709dec031e5486f4e4aaa446ee569de0e2 /llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
parent95cefacfe1c1fe920f22b749f17f630925bd6094 (diff)
[SLP] Fix "gathering" of insertelement instructions
For rare exceptional case vector tree node (insertelements for now only) is marked as `NeedToGather`, this case is processed by patch. Follow-up of D98714 to fix bug reported here https://reviews.llvm.org/D98714#2764135. Differential Revision: https://reviews.llvm.org/D102675
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp')
-rw-r--r--llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 6a0ed7c45506..8de5188de814 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -3694,6 +3694,8 @@ InstructionCost BoUpSLP::getEntryCost(const TreeEntry *E) {
TTI->getShuffleCost(TargetTransformInfo::SK_Broadcast, VecTy, None,
0);
}
+ if (isa<InsertElementInst>(VL[0]))
+ return InstructionCost::getInvalid();
if (E->getOpcode() == Instruction::ExtractElement &&
allSameType(VL) && allSameBlock(VL)) {
SmallVector<int> Mask;