LLVM 20.0.0git
|
The LoopVectorize Pass. More...
#include "llvm/Transforms/Vectorize/LoopVectorize.h"
Public Member Functions | |
LoopVectorizePass (LoopVectorizeOptions Opts={}) | |
PreservedAnalyses | run (Function &F, FunctionAnalysisManager &AM) |
void | printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName) |
LoopVectorizeResult | runImpl (Function &F) |
bool | processLoop (Loop *L) |
Public Member Functions inherited from llvm::PassInfoMixin< LoopVectorizePass > | |
void | printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName) |
Public Attributes | |
ScalarEvolution * | SE |
LoopInfo * | LI |
TargetTransformInfo * | TTI |
DominatorTree * | DT |
BlockFrequencyInfo * | BFI |
TargetLibraryInfo * | TLI |
DemandedBits * | DB |
AssumptionCache * | AC |
LoopAccessInfoManager * | LAIs |
OptimizationRemarkEmitter * | ORE |
ProfileSummaryInfo * | PSI |
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. | |
The LoopVectorize Pass.
Definition at line 130 of file LoopVectorize.h.
LoopVectorizePass::LoopVectorizePass | ( | LoopVectorizeOptions | Opts = {} | ) |
Definition at line 10075 of file LoopVectorize.cpp.
void LoopVectorizePass::printPipeline | ( | raw_ostream & | OS, |
function_ref< StringRef(StringRef)> | MapClassName2PassName | ||
) |
Definition at line 10719 of file LoopVectorize.cpp.
References OS, and printPipeline().
Referenced by printPipeline().
Definition at line 10188 of file LoopVectorize.cpp.
References AC, addRuntimeUnrollDisableMetaData(), llvm::OptimizationRemarkEmitter::allowExtraAnalysis(), llvm::LoopVectorizeHints::allowVectorization(), llvm::InterleavedAccessInfo::analyzeInterleaving(), llvm::any_of(), areRuntimeChecksProfitable(), llvm::InnerLoopVectorizer::areSafetyChecksAdded(), assert(), BFI, llvm::LoopVectorizationLegality::canVectorize(), llvm::LoopVectorizationLegality::canVectorizeFPMath(), checkMixedPrecision(), llvm::CM_ScalarEpilogueNotAllowedLowTripLoop, llvm::CM_ScalarEpilogueNotNeededUsePredicate, llvm::LoopVectorizationPlanner::computeBestVF(), llvm::VectorizationFactor::Cost, DB, llvm::dbgs(), DEBUG_TYPE, DT, llvm::VPlan::duplicate(), llvm::OptimizationRemarkEmitter::emit(), llvm::LoopVectorizationPlanner::emitInvalidCostRemarks(), llvm::LoopVectorizeHints::emitRemarkWithHints(), EnableEarlyExitVectorization, llvm::TargetTransformInfo::enableInterleavedAccessVectorization(), EnableInterleavedMemAccesses, llvm::TargetTransformInfo::enableOrderedReductions(), llvm::EnableVPlanNativePath, llvm::EpilogueLoopVectorizationInfo::EpilogueUF, llvm::EpilogueLoopVectorizationInfo::EpilogueVF, llvm::LoopVectorizationPlanner::executePlan(), F, llvm::LoopVectorizeHints::FK_Disabled, llvm::LoopVectorizeHints::FK_Enabled, ForceOrderedReductions, llvm::LoopVectorizationLegality::getCountableExitingBlocks(), llvm::LoopVectorizationRequirements::getExactFPInst(), llvm::ElementCount::getFixed(), llvm::LoopVectorizeHints::getForce(), llvm::LoopVectorizeHints::getInterleave(), llvm::LoopVectorizationLegality::getLAI(), llvm::TargetTransformInfo::getMinTripCountTailFoldingThreshold(), llvm::LoopVectorizationPlanner::getPlanFor(), llvm::PredicatedScalarEvolution::getPredicate(), getScalarEpilogueLowering(), getSmallBestKnownTC(), llvm::InnerLoopVectorizer::getTripCount(), llvm::LoopVectorizeHints::getWidth(), llvm::hasBranchWeightMD(), llvm::LoopVectorizationLegality::hasHistograms(), llvm::LoopVectorizationPlanner::hasPlanWithVF(), llvm::LoopVectorizationLegality::hasUncountableEarlyExit(), llvm::TargetTransformInfo::isFPVectorizationPotentiallyUnsafe(), llvm::LoopVectorizeHints::isPotentiallyUnsafe(), llvm::ElementCount::isScalar(), llvm::ElementCount::isVector(), LAIs, LI, LLVM_DEBUG, LLVMLoopVectorizeFollowupAll, LLVMLoopVectorizeFollowupEpilogue, LV_NAME, llvm::EpilogueLoopVectorizationInfo::MainLoopUF, llvm::EpilogueLoopVectorizationInfo::MainLoopVF, llvm::makeFollowupLoopID(), llvm::VectorizationFactor::MinProfitableTripCount, ORE, llvm::LoopVectorizationPlanner::plan(), preparePlanForEpilogueVectorLoop(), processLoopInVPlanNativePath(), PSI, llvm::reportVectorization(), llvm::reportVectorizationFailure(), llvm::InterleavedAccessInfo::requiresScalarEpilogue(), SE, llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::LoopVectorizeHints::setAlreadyVectorized(), llvm::InnerLoopVectorizer::setTripCount(), TinyTripCountVectorThreshold, TLI, useMaskedInterleavedAccesses(), llvm::LoopVectorizeHints::vectorizeAnalysisPassName(), llvm::DominatorTreeBase< NodeT, IsPostDom >::verify(), llvm::verifyFunction(), and llvm::VectorizationFactor::Width.
Referenced by runImpl().
PreservedAnalyses LoopVectorizePass::run | ( | Function & | F, |
FunctionAnalysisManager & | AM | ||
) |
Definition at line 10670 of file LoopVectorize.cpp.
References AC, llvm::PreservedAnalyses::all(), BFI, DB, DT, llvm::LoopInfoBase< BlockT, LoopT >::empty(), F, llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getResult(), llvm::ProfileSummaryInfo::hasProfileSummary(), llvm::isAssignmentTrackingEnabled(), LAIs, LI, ORE, llvm::PreservedAnalyses::preserve(), llvm::PreservedAnalyses::preserveSet(), PSI, llvm::RemoveRedundantDbgInstrs(), runImpl(), SE, and TLI.
LoopVectorizeResult LoopVectorizePass::runImpl | ( | Function & | F | ) |
Definition at line 10612 of file LoopVectorize.cpp.
References AC, llvm::LoopAccessInfoManager::clear(), collectSupportedLoops(), DT, llvm::SmallVectorBase< Size_T >::empty(), llvm::formLCSSARecursively(), llvm::ElementCount::getFixed(), llvm::TargetTransformInfo::getMaxInterleaveFactor(), llvm::TargetTransformInfo::getNumberOfRegisters(), llvm::TargetTransformInfo::getRegisterClassForType(), LAIs, LI, ORE, llvm::SmallVectorImpl< T >::pop_back_val(), processLoop(), SE, llvm::simplifyLoop(), llvm::SmallVectorBase< Size_T >::size(), llvm::ScalarEvolution::verify(), and llvm::VerifySCEV.
Referenced by run().
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 147 of file LoopVectorize.h.
Referenced by processLoop(), and run().
DemandedBits* llvm::LoopVectorizePass::DB |
Definition at line 149 of file LoopVectorize.h.
Referenced by processLoop(), and run().
DominatorTree* llvm::LoopVectorizePass::DT |
Definition at line 146 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
LoopAccessInfoManager* llvm::LoopVectorizePass::LAIs |
Definition at line 151 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
LoopInfo* llvm::LoopVectorizePass::LI |
Definition at line 144 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(), and run().
ScalarEvolution* llvm::LoopVectorizePass::SE |
Definition at line 143 of file LoopVectorize.h.
Referenced by processLoop(), run(), and runImpl().
TargetLibraryInfo* llvm::LoopVectorizePass::TLI |
Definition at line 148 of file LoopVectorize.h.
Referenced by processLoop(), and run().
TargetTransformInfo* llvm::LoopVectorizePass::TTI |
Definition at line 145 of file LoopVectorize.h.