[PATCH] D99950: [SLP] Avoid multiple attempts to vectorize CmpInsts.
Alexey Bataev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 7 06:17:15 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rGa78e86e6beb2: [SLP]Avoid multiple attempts to vectorize CmpInsts. (authored by ABataev).
Changed prior to commit:
https://reviews.llvm.org/D99950?vs=335495&id=335794#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D99950/new/
https://reviews.llvm.org/D99950
Files:
llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Index: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -7495,6 +7495,9 @@
// horizontal reduction.
// Interrupt the process if the Root instruction itself was vectorized or all
// sub-trees not higher that RecursionMaxDepth were analyzed/vectorized.
+ // Skip the analysis of CmpInsts.Compiler implements postanalysis of the
+ // CmpInsts so we can skip extra attempts in
+ // tryToVectorizeHorReductionOrInstOperands and save compile time.
SmallVector<std::pair<Instruction *, unsigned>, 8> Stack(1, {Root, 0});
SmallPtrSet<Value *, 8> VisitedInstrs;
bool Res = false;
@@ -7531,7 +7534,8 @@
// Set P to nullptr to avoid re-analysis of phi node in
// matchAssociativeReduction function unless this is the root node.
P = nullptr;
- if (Vectorize(Inst, R)) {
+ // Do not try to vectorize CmpInst operands, this is done separately.
+ if (!isa<CmpInst>(Inst) && Vectorize(Inst, R)) {
Res = true;
continue;
}
@@ -7543,7 +7547,10 @@
for (auto *Op : Inst->operand_values())
if (VisitedInstrs.insert(Op).second)
if (auto *I = dyn_cast<Instruction>(Op))
- if (!isa<PHINode>(I) && !R.isDeleted(I) && I->getParent() == BB)
+ // Do not try to vectorize CmpInst operands, this is done
+ // separately.
+ if (!isa<PHINode>(I) && !isa<CmpInst>(I) && !R.isDeleted(I) &&
+ I->getParent() == BB)
Stack.emplace_back(I, Level);
}
return Res;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D99950.335794.patch
Type: text/x-patch
Size: 1669 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210407/9e5cab97/attachment.bin>
More information about the llvm-commits
mailing list