LLVM 20.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]

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

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 130 of file LoopVectorize.h.

Constructor & Destructor Documentation

◆ LoopVectorizePass()

LoopVectorizePass::LoopVectorizePass ( LoopVectorizeOptions  Opts = {})

Definition at line 10075 of file LoopVectorize.cpp.

Member Function Documentation

◆ printPipeline()

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().

◆ processLoop()

bool LoopVectorizePass::processLoop ( Loop L)

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().

◆ run()

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

◆ runImpl()

LoopVectorizeResult LoopVectorizePass::runImpl ( Function F)

Member Data Documentation

◆ AC

AssumptionCache* llvm::LoopVectorizePass::AC

Definition at line 150 of file LoopVectorize.h.

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

◆ BFI

BlockFrequencyInfo* llvm::LoopVectorizePass::BFI

Definition at line 147 of file LoopVectorize.h.

Referenced by processLoop(), and run().

◆ DB

DemandedBits* llvm::LoopVectorizePass::DB

Definition at line 149 of file LoopVectorize.h.

Referenced by processLoop(), and run().

◆ DT

DominatorTree* llvm::LoopVectorizePass::DT

Definition at line 146 of file LoopVectorize.h.

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

◆ LAIs

LoopAccessInfoManager* llvm::LoopVectorizePass::LAIs

Definition at line 151 of file LoopVectorize.h.

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

◆ LI

LoopInfo* llvm::LoopVectorizePass::LI

Definition at line 144 of file LoopVectorize.h.

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

◆ ORE

OptimizationRemarkEmitter* llvm::LoopVectorizePass::ORE

Definition at line 152 of file LoopVectorize.h.

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

◆ PSI

ProfileSummaryInfo* llvm::LoopVectorizePass::PSI

Definition at line 153 of file LoopVectorize.h.

Referenced by processLoop(), and run().

◆ SE

ScalarEvolution* llvm::LoopVectorizePass::SE

Definition at line 143 of file LoopVectorize.h.

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

◆ TLI

TargetLibraryInfo* llvm::LoopVectorizePass::TLI

Definition at line 148 of file LoopVectorize.h.

Referenced by processLoop(), and run().

◆ TTI

TargetTransformInfo* llvm::LoopVectorizePass::TTI

Definition at line 145 of file LoopVectorize.h.


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