diff options
author | Alina Sbirlea <asbirlea@google.com> | 2019-05-08 17:58:35 +0000 |
---|---|---|
committer | Alina Sbirlea <asbirlea@google.com> | 2019-05-08 17:58:35 +0000 |
commit | 458c7339e10662dd8b37bb39250549c3a4ba44d0 (patch) | |
tree | 8ad67eda7c5d3c65ea399366fb7ec9c14ae7ae83 | |
parent | b64c48597fe9f69859d5ff8873a5eafc76142ffd (diff) | |
download | bcm5719-llvm-458c7339e10662dd8b37bb39250549c3a4ba44d0.tar.gz bcm5719-llvm-458c7339e10662dd8b37bb39250549c3a4ba44d0.zip |
[NewPassManager] Add tuning option: SLPVectorization [NFC].
Summary: Mirror tuning option from old pass manager in new pass manager.
Reviewers: chandlerc
Subscribers: mehdi_amini, jlebar, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61616
llvm-svn: 360276
-rw-r--r-- | llvm/include/llvm/Passes/PassBuilder.h | 4 | ||||
-rw-r--r-- | llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h | 2 | ||||
-rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 4 | ||||
-rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 4 |
5 files changed, 14 insertions, 5 deletions
diff --git a/llvm/include/llvm/Passes/PassBuilder.h b/llvm/include/llvm/Passes/PassBuilder.h index 1218761082c..1f81181c636 100644 --- a/llvm/include/llvm/Passes/PassBuilder.h +++ b/llvm/include/llvm/Passes/PassBuilder.h @@ -81,6 +81,10 @@ public: /// that of the flag: `-vectorize-loops`. bool LoopVectorization; + /// Tuning option to enable/disable slp loop vectorization. Its default value + /// is that of the flag: `vectorize-slp`. + bool SLPVectorization; + /// Tuning option to cap the number of calls to retrive clobbering accesses in /// MemorySSA, in LICM. unsigned LicmMssaOptCap; diff --git a/llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h b/llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h index 9be70557b5b..ac6afb761d4 100644 --- a/llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h +++ b/llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h @@ -55,6 +55,8 @@ class BoUpSLP; } // end namespace slpvectorizer +extern cl::opt<bool> RunSLPVectorization; + struct SLPVectorizerPass : public PassInfoMixin<SLPVectorizerPass> { using StoreList = SmallVector<StoreInst *, 8>; using StoreListMap = MapVector<Value *, StoreList>; diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index f8c62a876ff..89b9c520af8 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -214,6 +214,7 @@ static cl::opt<bool> PipelineTuningOptions::PipelineTuningOptions() { LoopInterleaving = EnableLoopInterleaving; LoopVectorization = EnableLoopVectorization; + SLPVectorization = RunSLPVectorization; LicmMssaOptCap = SetLicmMssaOptCap; LicmMssaNoAccForPromotionCap = SetLicmMssaNoAccForPromotionCap; } @@ -888,7 +889,8 @@ ModulePassManager PassBuilder::buildModuleOptimizationPipeline( sinkCommonInsts(true))); // Optimize parallel scalar instruction chains into SIMD instructions. - OptimizePM.addPass(SLPVectorizerPass()); + if (PTO.SLPVectorization) + OptimizePM.addPass(SLPVectorizerPass()); OptimizePM.addPass(InstCombinePass()); diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index e8b4b8fe75b..298cf47ed83 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -43,6 +43,7 @@ #include "llvm/Transforms/Utils.h" #include "llvm/Transforms/Vectorize.h" #include "llvm/Transforms/Vectorize/LoopVectorize.h" +#include "llvm/Transforms/Vectorize/SLPVectorizer.h" using namespace llvm; @@ -51,10 +52,6 @@ static cl::opt<bool> cl::ZeroOrMore, cl::desc("Run Partial inlinining pass")); static cl::opt<bool> -RunSLPVectorization("vectorize-slp", cl::Hidden, - cl::desc("Run the SLP vectorization passes")); - -static cl::opt<bool> UseGVNAfterVectorization("use-gvn-after-vectorization", cl::init(false), cl::Hidden, cl::desc("Run GVN instead of Early CSE after vectorization passes")); diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index ff9a2d2bf77..f350db5c5fc 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -105,6 +105,10 @@ using namespace slpvectorizer; STATISTIC(NumVectorInstructions, "Number of vector instructions generated"); +cl::opt<bool> + llvm::RunSLPVectorization("vectorize-slp", cl::init(true), cl::Hidden, + cl::desc("Run the SLP vectorization passes")); + static cl::opt<int> SLPCostThreshold("slp-threshold", cl::init(0), cl::Hidden, cl::desc("Only vectorize if you gain more than this " |