forked from OSchip/llvm-project
[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
This commit is contained in:
parent
b64c48597f
commit
458c7339e1
|
@ -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;
|
||||
|
|
|
@ -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>;
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
@ -50,10 +51,6 @@ static cl::opt<bool>
|
|||
RunPartialInlining("enable-partial-inlining", cl::init(false), cl::Hidden,
|
||||
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,
|
||||
|
|
|
@ -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 "
|
||||
|
|
Loading…
Reference in New Issue