Skip to content

Commit

Permalink
[NewPassManager] Add tuning option: SLPVectorization [NFC].
Browse files Browse the repository at this point in the history
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
  • Loading branch information
alinas committed May 8, 2019
1 parent b64c485 commit 458c733
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 5 deletions.
4 changes: 4 additions & 0 deletions llvm/include/llvm/Passes/PassBuilder.h
Expand Up @@ -81,6 +81,10 @@ class PipelineTuningOptions {
/// 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;
Expand Down
2 changes: 2 additions & 0 deletions llvm/include/llvm/Transforms/Vectorize/SLPVectorizer.h
Expand Up @@ -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>;
Expand Down
4 changes: 3 additions & 1 deletion llvm/lib/Passes/PassBuilder.cpp
Expand Up @@ -214,6 +214,7 @@ static cl::opt<bool>
PipelineTuningOptions::PipelineTuningOptions() {
LoopInterleaving = EnableLoopInterleaving;
LoopVectorization = EnableLoopVectorization;
SLPVectorization = RunSLPVectorization;
LicmMssaOptCap = SetLicmMssaOptCap;
LicmMssaNoAccForPromotionCap = SetLicmMssaNoAccForPromotionCap;
}
Expand Down Expand Up @@ -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());

Expand Down
5 changes: 1 addition & 4 deletions llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
Expand Up @@ -43,17 +43,14 @@
#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;

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,
Expand Down
4 changes: 4 additions & 0 deletions llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Expand Up @@ -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 "
Expand Down

0 comments on commit 458c733

Please sign in to comment.