LLVM 17.0.0git
Public Member Functions | Public Attributes | List of all members
llvm::LoopVectorizePass Struct Reference

The LoopVectorize Pass. More...

#include "llvm/Transforms/Vectorize/LoopVectorize.h"

Inheritance diagram for llvm::LoopVectorizePass:
Inheritance graph
[legend]
Collaboration diagram for llvm::LoopVectorizePass:
Collaboration graph
[legend]

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, ScalarEvolution &SE_, LoopInfo &LI_, TargetTransformInfo &TTI_, DominatorTree &DT_, BlockFrequencyInfo &BFI_, TargetLibraryInfo *TLI_, DemandedBits &DB_, AssumptionCache &AC_, LoopAccessInfoManager &LAIs_, OptimizationRemarkEmitter &ORE_, ProfileSummaryInfo *PSI_)
 
bool processLoop (Loop *L)
 
- Public Member Functions inherited from llvm::PassInfoMixin< LoopVectorizePass >
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
 

Public Attributes

ScalarEvolutionSE
 
LoopInfoLI
 
TargetTransformInfoTTI
 
DominatorTreeDT
 
BlockFrequencyInfoBFI
 
TargetLibraryInfoTLI
 
DemandedBitsDB
 
AssumptionCacheAC
 
LoopAccessInfoManagerLAIs
 
OptimizationRemarkEmitterORE
 
ProfileSummaryInfoPSI
 

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.
 

Detailed Description

The LoopVectorize Pass.

Definition at line 160 of file LoopVectorize.h.

Constructor & Destructor Documentation

◆ LoopVectorizePass()

LoopVectorizePass::LoopVectorizePass ( LoopVectorizeOptions  Opts = {})

Definition at line 10160 of file LoopVectorize.cpp.

Member Function Documentation

◆ printPipeline()

void LoopVectorizePass::printPipeline ( raw_ostream OS,
function_ref< StringRef(StringRef)>  MapClassName2PassName 
)

Definition at line 10706 of file LoopVectorize.cpp.

References printPipeline().

Referenced by printPipeline().

◆ processLoop()

bool LoopVectorizePass::processLoop ( Loop L)

Definition at line 10166 of file LoopVectorize.cpp.

References AC, AddRuntimeUnrollDisableMetaData(), llvm::OptimizationRemarkEmitter::allowExtraAnalysis(), llvm::LoopVectorizeHints::allowVectorization(), llvm::InterleavedAccessInfo::analyzeInterleaving(), areRuntimeChecksProfitable(), llvm::InnerLoopVectorizer::areSafetyChecksAdded(), assert(), BFI, llvm::LoopVectorizationLegality::canVectorize(), llvm::LoopVectorizationLegality::canVectorizeFPMath(), checkMixedPrecision(), llvm::CM_ScalarEpilogueNotAllowedLowTripLoop, llvm::LoopVectorizationCostModel::collectElementTypesForWidening(), llvm::LoopVectorizationCostModel::collectValuesToIgnore(), llvm::VectorizationFactor::Cost, llvm::InnerLoopVectorizer::createInductionResumeValue(), DB, llvm::dbgs(), DEBUG_TYPE, llvm::VectorizationFactor::Disabled(), DT, llvm::OptimizationRemarkEmitter::emit(), llvm::LoopVectorizeHints::emitRemarkWithHints(), llvm::TargetTransformInfo::enableInterleavedAccessVectorization(), EnableInterleavedMemAccesses, llvm::TargetTransformInfo::enableOrderedReductions(), EnableVPlanNativePath, llvm::EpilogueLoopVectorizationInfo::EpilogueUF, llvm::EpilogueLoopVectorizationInfo::EpilogueVF, llvm::LoopVectorizationPlanner::executePlan(), F, llvm::LoopVectorizeHints::FK_Disabled, llvm::LoopVectorizeHints::FK_Enabled, ForceOrderedReductions, llvm::LoopVectorizationPlanner::getBestPlanFor(), getDebugLocString(), llvm::VPBlockBase::getEntryBasicBlock(), llvm::LoopVectorizationRequirements::getExactFPInst(), llvm::LoopVectorizeHints::getForce(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopVectorizeHints::getInterleave(), llvm::LoopVectorizationLegality::getLAI(), llvm::Loop::getLoopID(), llvm::TargetTransformInfo::getMinTripCountTailFoldingThreshold(), llvm::Value::getName(), llvm::cl::Option::getNumOccurrences(), llvm::VPlan::getOrAddExternalDef(), llvm::BasicBlock::getParent(), llvm::PredicatedScalarEvolution::getPredicate(), llvm::InnerLoopVectorizer::getReductionResumeValue(), getScalarEpilogueLowering(), llvm::PredicatedScalarEvolution::getSE(), getSmallBestKnownTC(), llvm::Loop::getStartLoc(), llvm::VPlan::getVectorLoopRegion(), llvm::LoopVectorizationCostModel::getVScaleForTuning(), llvm::LoopVectorizeHints::getWidth(), llvm::TargetTransformInfo::isFPVectorizationPotentiallyUnsafe(), llvm::LoopBase< BlockT, LoopT >::isInnermost(), llvm::LoopVectorizeHints::isPotentiallyUnsafe(), llvm::ElementCount::isScalar(), llvm::ElementCount::isVector(), LAIs, LI, LLVM_DEBUG, LLVMLoopVectorizeFollowupAll, LLVMLoopVectorizeFollowupEpilogue, LV_NAME, llvm::EpilogueLoopVectorizationInfo::MainLoopIterationCountCheck, llvm::EpilogueLoopVectorizationInfo::MainLoopUF, llvm::EpilogueLoopVectorizationInfo::MainLoopVF, llvm::makeFollowupLoopID(), llvm::VectorizationFactor::MinProfitableTripCount, ORE, llvm::LoopVectorizationPlanner::plan(), processLoopInVPlanNativePath(), PSI, llvm::reportVectorizationFailure(), SE, llvm::LoopVectorizationCostModel::selectEpilogueVectorizationFactor(), llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::LoopVectorizeHints::setAlreadyVectorized(), llvm::Loop::setLoopID(), TinyTripCountVectorThreshold, TLI, useMaskedInterleavedAccesses(), llvm::LoopVectorizeHints::vectorizeAnalysisPassName(), llvm::verifyFunction(), and llvm::VectorizationFactor::Width.

Referenced by runImpl().

◆ run()

PreservedAnalyses LoopVectorizePass::run ( Function F,
FunctionAnalysisManager AM 
)

◆ runImpl()

LoopVectorizeResult LoopVectorizePass::runImpl ( Function F,
ScalarEvolution SE_,
LoopInfo LI_,
TargetTransformInfo TTI_,
DominatorTree DT_,
BlockFrequencyInfo BFI_,
TargetLibraryInfo TLI_,
DemandedBits DB_,
AssumptionCache AC_,
LoopAccessInfoManager LAIs_,
OptimizationRemarkEmitter ORE_,
ProfileSummaryInfo PSI_ 
)

Member Data Documentation

◆ AC

AssumptionCache* llvm::LoopVectorizePass::AC

Definition at line 180 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ BFI

BlockFrequencyInfo* llvm::LoopVectorizePass::BFI

Definition at line 177 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ DB

DemandedBits* llvm::LoopVectorizePass::DB

Definition at line 179 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ DT

DominatorTree* llvm::LoopVectorizePass::DT

Definition at line 176 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ LAIs

LoopAccessInfoManager* llvm::LoopVectorizePass::LAIs

Definition at line 181 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ LI

LoopInfo* llvm::LoopVectorizePass::LI

Definition at line 174 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ ORE

OptimizationRemarkEmitter* llvm::LoopVectorizePass::ORE

Definition at line 182 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ PSI

ProfileSummaryInfo* llvm::LoopVectorizePass::PSI

Definition at line 183 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ SE

ScalarEvolution* llvm::LoopVectorizePass::SE

Definition at line 173 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ TLI

TargetLibraryInfo* llvm::LoopVectorizePass::TLI

Definition at line 178 of file LoopVectorize.h.

Referenced by processLoop(), run(), and runImpl().

◆ TTI

TargetTransformInfo* llvm::LoopVectorizePass::TTI

Definition at line 175 of file LoopVectorize.h.


The documentation for this struct was generated from the following files: