LLVM
8.0.1
|
The LoopVectorize Pass. More...
#include "llvm/Transforms/Vectorize/LoopVectorize.h"
Public Member Functions | |
PreservedAnalyses | run (Function &F, FunctionAnalysisManager &AM) |
bool | runImpl (Function &F, ScalarEvolution &SE_, LoopInfo &LI_, TargetTransformInfo &TTI_, DominatorTree &DT_, BlockFrequencyInfo &BFI_, TargetLibraryInfo *TLI_, DemandedBits &DB_, AliasAnalysis &AA_, AssumptionCache &AC_, std::function< const LoopAccessInfo &(Loop &)> &GetLAA_, OptimizationRemarkEmitter &ORE) |
bool | processLoop (Loop *L) |
Public Attributes | |
bool | InterleaveOnlyWhenForced = false |
If false, consider all loops for interleaving. More... | |
bool | VectorizeOnlyWhenForced = false |
If false, consider all loops for vectorization. More... | |
ScalarEvolution * | SE |
LoopInfo * | LI |
TargetTransformInfo * | TTI |
DominatorTree * | DT |
BlockFrequencyInfo * | BFI |
TargetLibraryInfo * | TLI |
DemandedBits * | DB |
AliasAnalysis * | AA |
AssumptionCache * | AC |
std::function< const LoopAccessInfo &(Loop &)> * | GetLAA |
OptimizationRemarkEmitter * | ORE |
Additional Inherited Members | |
Static Public Member Functions inherited from llvm::PassInfoMixin< LoopVectorizePass > | |
static StringRef | name () |
Gets the name of the pass we are mixed into. More... | |
The LoopVectorize Pass.
Definition at line 80 of file LoopVectorize.h.
Definition at line 7142 of file LoopVectorize.cpp.
References llvm::InnerLoopVectorizer::AA, llvm::InnerLoopVectorizer::AC, AddRuntimeUnrollDisableMetaData(), llvm::InnerLoopVectorizer::areSafetyChecksAdded(), assert(), llvm::LoopVectorizationLegality::canVectorize(), llvm::LoopVectorizationCostModel::collectValuesToIgnore(), llvm::VectorizationFactor::Cost, llvm::createLVMissedAnalysis(), llvm::dbgs(), llvm::LoopVectorizationRequirements::doesNotMeet(), llvm::InnerLoopVectorizer::DT, llvm::OptimizationRemarkEmitter::emit(), llvm::LoopBase< BlockT, LoopT >::empty(), llvm::TargetTransformInfo::enableInterleavedAccessVectorization(), EnableInterleavedMemAccesses, EnableVPlanNativePath, llvm::LoopVectorizationPlanner::executePlan(), F(), llvm::LoopVectorizeHints::FK_Disabled, llvm::LoopVectorizeHints::FK_Enabled, getDebugLocString(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopVectorizationLegality::getLAI(), llvm::getLoopEstimatedTripCount(), llvm::Loop::getLoopID(), llvm::Value::getName(), llvm::BasicBlock::getParent(), llvm::Loop::getStartLoc(), llvm::Optional< T >::getValue(), llvm::APInt::getZExtValue(), llvm::Optional< T >::hasValue(), llvm::TargetTransformInfo::isFPVectorizationPotentiallyUnsafe(), llvm::InnerLoopVectorizer::LI, LLVM_DEBUG, LLVMLoopVectorizeFollowupAll, LoopVectorizeWithBlockFrequency, LV_NAME, llvm::makeFollowupLoopID(), llvm::max(), llvm::Attribute::NoImplicitFloat, llvm::InnerLoopVectorizer::ORE, llvm::LoopVectorizationPlanner::plan(), processLoopInVPlanNativePath(), llvm::InnerLoopVectorizer::PSE, llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::LoopVectorizationPlanner::setBestPlan(), llvm::Loop::setLoopID(), TinyTripCountVectorThreshold, llvm::InnerLoopVectorizer::TLI, llvm::InnerLoopVectorizer::TTI, llvm::APInt::ult(), useMaskedInterleavedAccesses(), llvm::verifyFunction(), and llvm::VectorizationFactor::Width.
PreservedAnalyses LoopVectorizePass::run | ( | Function & | F, |
FunctionAnalysisManager & | AM | ||
) |
Definition at line 7518 of file LoopVectorize.cpp.
References llvm::InnerLoopVectorizer::AA, llvm::InnerLoopVectorizer::AC, llvm::PreservedAnalyses::all(), llvm::AMDGPUISD::BFI, llvm::InnerLoopVectorizer::DT, EnableVPlanNativePath, F(), llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getResult(), llvm::InnerLoopVectorizer::LI, llvm::InnerLoopVectorizer::ORE, llvm::PreservedAnalyses::preserve(), runImpl(), llvm::InnerLoopVectorizer::TLI, and llvm::InnerLoopVectorizer::TTI.
bool LoopVectorizePass::runImpl | ( | Function & | F, |
ScalarEvolution & | SE_, | ||
LoopInfo & | LI_, | ||
TargetTransformInfo & | TTI_, | ||
DominatorTree & | DT_, | ||
BlockFrequencyInfo & | BFI_, | ||
TargetLibraryInfo * | TLI_, | ||
DemandedBits & | DB_, | ||
AliasAnalysis & | AA_, | ||
AssumptionCache & | AC_, | ||
std::function< const LoopAccessInfo &(Loop &)> & | GetLAA_, | ||
OptimizationRemarkEmitter & | ORE | ||
) |
Definition at line 7455 of file LoopVectorize.cpp.
References llvm::InnerLoopVectorizer::AA, llvm::InnerLoopVectorizer::AC, llvm::AMDGPUISD::BFI, collectSupportedLoops(), llvm::InnerLoopVectorizer::DT, llvm::SmallVectorBase::empty(), llvm::formLCSSARecursively(), llvm::TargetTransformInfo::getMaxInterleaveFactor(), llvm::TargetTransformInfo::getNumberOfRegisters(), llvm::InnerLoopVectorizer::LI, llvm::InnerLoopVectorizer::ORE, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::simplifyLoop(), llvm::SmallVectorBase::size(), llvm::InnerLoopVectorizer::TLI, and llvm::InnerLoopVectorizer::TTI.
Referenced by collectSupportedLoops().
AliasAnalysis* llvm::LoopVectorizePass::AA |
Definition at line 96 of file LoopVectorize.h.
AssumptionCache* llvm::LoopVectorizePass::AC |
Definition at line 97 of file LoopVectorize.h.
BlockFrequencyInfo* llvm::LoopVectorizePass::BFI |
Definition at line 93 of file LoopVectorize.h.
DemandedBits* llvm::LoopVectorizePass::DB |
Definition at line 95 of file LoopVectorize.h.
DominatorTree* llvm::LoopVectorizePass::DT |
Definition at line 92 of file LoopVectorize.h.
std::function<const LoopAccessInfo &(Loop &)>* llvm::LoopVectorizePass::GetLAA |
Definition at line 98 of file LoopVectorize.h.
If false, consider all loops for interleaving.
If true, only loops that explicitly request interleaving are considered.
Definition at line 83 of file LoopVectorize.h.
Referenced by collectSupportedLoops().
LoopInfo* llvm::LoopVectorizePass::LI |
Definition at line 90 of file LoopVectorize.h.
OptimizationRemarkEmitter* llvm::LoopVectorizePass::ORE |
Definition at line 99 of file LoopVectorize.h.
ScalarEvolution* llvm::LoopVectorizePass::SE |
Definition at line 89 of file LoopVectorize.h.
TargetLibraryInfo* llvm::LoopVectorizePass::TLI |
Definition at line 94 of file LoopVectorize.h.
TargetTransformInfo* llvm::LoopVectorizePass::TTI |
Definition at line 91 of file LoopVectorize.h.
If false, consider all loops for vectorization.
If true, only loops that explicitly request vectorization are considered.
Definition at line 87 of file LoopVectorize.h.
Referenced by collectSupportedLoops().