LLVM
13.0.0git
|
The LoopVectorize Pass. More...
#include "llvm/Transforms/Vectorize/LoopVectorize.h"
Public Member Functions | |
LoopVectorizePass (LoopVectorizeOptions Opts={}) | |
PreservedAnalyses | run (Function &F, FunctionAnalysisManager &AM) |
LoopVectorizeResult | runImpl (Function &F, ScalarEvolution &SE_, LoopInfo &LI_, TargetTransformInfo &TTI_, DominatorTree &DT_, BlockFrequencyInfo &BFI_, TargetLibraryInfo *TLI_, DemandedBits &DB_, AAResults &AA_, AssumptionCache &AC_, std::function< const LoopAccessInfo &(Loop &)> &GetLAA_, OptimizationRemarkEmitter &ORE_, ProfileSummaryInfo *PSI_) |
bool | processLoop (Loop *L) |
Public Attributes | |
ScalarEvolution * | SE |
LoopInfo * | LI |
TargetTransformInfo * | TTI |
DominatorTree * | DT |
BlockFrequencyInfo * | BFI |
TargetLibraryInfo * | TLI |
DemandedBits * | DB |
AAResults * | AA |
AssumptionCache * | AC |
std::function< const LoopAccessInfo &(Loop &)> * | GetLAA |
OptimizationRemarkEmitter * | ORE |
ProfileSummaryInfo * | PSI |
Additional Inherited Members | |
![]() | |
static StringRef | name () |
Gets the name of the pass we are mixed into. More... | |
The LoopVectorize Pass.
Definition at line 129 of file LoopVectorize.h.
LoopVectorizePass::LoopVectorizePass | ( | LoopVectorizeOptions | Opts = {} | ) |
Definition at line 9610 of file LoopVectorize.cpp.
bool LoopVectorizePass::processLoop | ( | Loop * | L | ) |
Definition at line 9616 of file LoopVectorize.cpp.
References AA, AC, AddRuntimeUnrollDisableMetaData(), llvm::OptimizationRemarkEmitter::allowExtraAnalysis(), llvm::LoopVectorizeHints::allowVectorization(), llvm::InterleavedAccessInfo::analyzeInterleaving(), llvm::InnerLoopVectorizer::areSafetyChecksAdded(), assert(), BFI, llvm::LoopVectorizationLegality::canVectorize(), llvm::LoopVectorizationRequirements::canVectorizeFPMath(), checkMixedPrecision(), llvm::CM_ScalarEpilogueNotAllowedLowTripLoop, llvm::LoopVectorizationCostModel::collectValuesToIgnore(), llvm::VectorizationFactor::Cost, GeneratedRTChecks::Create(), DB, llvm::dbgs(), DEBUG_TYPE, llvm::VectorizationFactor::Disabled(), DT, llvm::OptimizationRemarkEmitter::emit(), llvm::LoopVectorizeHints::emitRemarkWithHints(), llvm::TargetTransformInfo::enableInterleavedAccessVectorization(), EnableInterleavedMemAccesses, EnableVPlanNativePath, llvm::EpilogueLoopVectorizationInfo::EpilogueUF, llvm::EpilogueLoopVectorizationInfo::EpilogueVF, llvm::LoopVectorizationPlanner::executePlan(), F, llvm::LoopVectorizeHints::FK_Disabled, llvm::LoopVectorizeHints::FK_Enabled, llvm::formLCSSARecursively(), getDebugLocString(), llvm::LoopVectorizationRequirements::getExactFPInst(), llvm::LoopVectorizeHints::getForce(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopVectorizeHints::getInterleave(), llvm::LinearPolySize< LeafTy >::getKnownMinValue(), GetLAA, llvm::LoopVectorizationLegality::getLAI(), llvm::Loop::getLoopID(), llvm::Value::getName(), llvm::cl::Option::getNumOccurrences(), llvm::BasicBlock::getParent(), getScalarEpilogueLowering(), llvm::PredicatedScalarEvolution::getSE(), getSmallBestKnownTC(), llvm::Loop::getStartLoc(), llvm::PredicatedScalarEvolution::getUnionPredicate(), llvm::Optional< T >::getValue(), llvm::LoopVectorizeHints::getWidth(), llvm::Optional< T >::hasValue(), llvm::TargetTransformInfo::isFPVectorizationPotentiallyUnsafe(), llvm::LoopBase< BlockT, LoopT >::isInnermost(), llvm::LoopVectorizeHints::isPotentiallyUnsafe(), llvm::ElementCount::isScalar(), llvm::ElementCount::isVector(), LI, LLVM_DEBUG, LLVMLoopVectorizeFollowupAll, LLVMLoopVectorizeFollowupEpilogue, LV_NAME, llvm::EpilogueLoopVectorizationInfo::MainLoopUF, llvm::EpilogueLoopVectorizationInfo::MainLoopVF, llvm::makeFollowupLoopID(), ORE, llvm::LoopVectorizationPlanner::plan(), processLoopInVPlanNativePath(), PSI, llvm::reportVectorizationFailure(), SE, llvm::LoopVectorizationCostModel::selectEpilogueVectorizationFactor(), llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::LoopVectorizeHints::setAlreadyVectorized(), llvm::LoopVectorizationPlanner::setBestPlan(), llvm::Loop::setLoopID(), llvm::simplifyLoop(), TinyTripCountVectorThreshold, TLI, useMaskedInterleavedAccesses(), llvm::LoopVectorizeHints::vectorizeAnalysisPassName(), llvm::verifyFunction(), and llvm::VectorizationFactor::Width.
Referenced by runImpl().
PreservedAnalyses LoopVectorizePass::run | ( | Function & | F, |
FunctionAnalysisManager & | AM | ||
) |
Definition at line 10034 of file LoopVectorize.cpp.
References AA, AC, llvm::PreservedAnalyses::all(), BFI, DB, DT, llvm::EnableMSSALoopDependency, EnableVPlanNativePath, F, function, GetLAA, llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getResult(), LI, ORE, llvm::PreservedAnalyses::preserve(), llvm::PreservedAnalyses::preserveSet(), PSI, runImpl(), SE, TLI, and TTI.
LoopVectorizeResult LoopVectorizePass::runImpl | ( | Function & | F, |
ScalarEvolution & | SE_, | ||
LoopInfo & | LI_, | ||
TargetTransformInfo & | TTI_, | ||
DominatorTree & | DT_, | ||
BlockFrequencyInfo & | BFI_, | ||
TargetLibraryInfo * | TLI_, | ||
DemandedBits & | DB_, | ||
AAResults & | AA_, | ||
AssumptionCache & | AC_, | ||
std::function< const LoopAccessInfo &(Loop &)> & | GetLAA_, | ||
OptimizationRemarkEmitter & | ORE_, | ||
ProfileSummaryInfo * | PSI_ | ||
) |
Definition at line 9968 of file LoopVectorize.cpp.
References AA, AC, BFI, collectSupportedLoops(), DB, DT, llvm::formLCSSARecursively(), GetLAA, llvm::TargetTransformInfo::getMaxInterleaveFactor(), llvm::TargetTransformInfo::getNumberOfRegisters(), llvm::TargetTransformInfo::getRegisterClassForType(), LI, ORE, llvm::SmallVectorImpl< T >::pop_back_val(), processLoop(), PSI, SE, llvm::simplifyLoop(), and TLI.
Referenced by run().
AAResults* llvm::LoopVectorizePass::AA |
Definition at line 149 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
AssumptionCache* llvm::LoopVectorizePass::AC |
Definition at line 150 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
BlockFrequencyInfo* llvm::LoopVectorizePass::BFI |
Definition at line 146 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
DemandedBits* llvm::LoopVectorizePass::DB |
Definition at line 148 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
DominatorTree* llvm::LoopVectorizePass::DT |
Definition at line 145 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
std::function<const LoopAccessInfo &(Loop &)>* llvm::LoopVectorizePass::GetLAA |
Definition at line 151 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
LoopInfo* llvm::LoopVectorizePass::LI |
Definition at line 143 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
OptimizationRemarkEmitter* llvm::LoopVectorizePass::ORE |
Definition at line 152 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
ProfileSummaryInfo* llvm::LoopVectorizePass::PSI |
Definition at line 153 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
ScalarEvolution* llvm::LoopVectorizePass::SE |
Definition at line 142 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
TargetLibraryInfo* llvm::LoopVectorizePass::TLI |
Definition at line 147 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
TargetTransformInfo* llvm::LoopVectorizePass::TTI |
Definition at line 144 of file LoopVectorize.h.
Referenced by run().