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

Constructor & Destructor Documentation

◆ LoopVectorizePass()

LoopVectorizePass::LoopVectorizePass ( LoopVectorizeOptions  Opts = {})

Definition at line 9659 of file LoopVectorize.cpp.

Member Function Documentation

◆ printPipeline()

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

Definition at line 10234 of file LoopVectorize.cpp.

References OS, and printPipeline().

Referenced by printPipeline().

◆ processLoop()

bool LoopVectorizePass::processLoop ( Loop L)

Definition at line 9665 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::CM_ScalarEpilogueNotNeededUsePredicate, llvm::LoopVectorizationPlanner::computeBestVF(), llvm::VectorizationFactor::Cost, llvm::IRBuilderBase::CreateICmpNE(), llvm::InnerLoopVectorizer::createInductionResumeValue(), DB, llvm::dbgs(), DEBUG_TYPE, llvm::VectorizationFactor::Disabled(), DT, llvm::VPlan::duplicate(), llvm::OptimizationRemarkEmitter::emit(), llvm::LoopVectorizationPlanner::emitInvalidCostRemarks(), llvm::LoopVectorizeHints::emitRemarkWithHints(), 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::VPBlockBase::getEntryBasicBlock(), llvm::LoopVectorizationRequirements::getExactFPInst(), getExpandedStep(), llvm::LoopVectorizeHints::getForce(), llvm::LoopVectorizeHints::getInterleave(), llvm::LoopVectorizationLegality::getLAI(), llvm::TargetTransformInfo::getMinTripCountTailFoldingThreshold(), llvm::VPlan::getOrAddLiveIn(), getParent(), llvm::LoopVectorizationPlanner::getPlanFor(), llvm::PredicatedScalarEvolution::getPredicate(), llvm::VPlan::getPreheader(), llvm::RecurrenceDescriptor::getRecurrenceKind(), llvm::RecurrenceDescriptor::getRecurrenceStartValue(), getScalarEpilogueLowering(), llvm::PredicatedScalarEvolution::getSE(), getSmallBestKnownTC(), llvm::InnerLoopVectorizer::getTripCount(), llvm::VPlan::getTripCount(), llvm::VPlan::getVectorLoopRegion(), getVScaleForTuning(), llvm::LoopVectorizeHints::getWidth(), llvm::hasBranchWeightMD(), llvm::RecurrenceDescriptor::isAnyOfRecurrenceKind(), llvm::TargetTransformInfo::isFPVectorizationPotentiallyUnsafe(), 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::make_early_inc_range(), llvm::makeFollowupLoopID(), llvm::VectorizationFactor::MinProfitableTripCount, ORE, llvm::LoopVectorizationPlanner::plan(), processLoopInVPlanNativePath(), PSI, llvm::VPValue::replaceAllUsesWith(), llvm::reportVectorization(), llvm::reportVectorizationFailure(), llvm::VPlan::resetTripCount(), 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 181 of file LoopVectorize.h.

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

◆ BFI

BlockFrequencyInfo* llvm::LoopVectorizePass::BFI

Definition at line 178 of file LoopVectorize.h.

Referenced by processLoop(), and run().

◆ DB

DemandedBits* llvm::LoopVectorizePass::DB

Definition at line 180 of file LoopVectorize.h.

Referenced by processLoop(), and run().

◆ DT

DominatorTree* llvm::LoopVectorizePass::DT

Definition at line 177 of file LoopVectorize.h.

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

◆ LAIs

LoopAccessInfoManager* llvm::LoopVectorizePass::LAIs

Definition at line 182 of file LoopVectorize.h.

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

◆ LI

LoopInfo* llvm::LoopVectorizePass::LI

Definition at line 175 of file LoopVectorize.h.

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

◆ ORE

OptimizationRemarkEmitter* llvm::LoopVectorizePass::ORE

Definition at line 183 of file LoopVectorize.h.

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

◆ PSI

ProfileSummaryInfo* llvm::LoopVectorizePass::PSI

Definition at line 184 of file LoopVectorize.h.

Referenced by processLoop(), and run().

◆ SE

ScalarEvolution* llvm::LoopVectorizePass::SE

Definition at line 174 of file LoopVectorize.h.

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

◆ TLI

TargetLibraryInfo* llvm::LoopVectorizePass::TLI

Definition at line 179 of file LoopVectorize.h.

Referenced by processLoop(), and run().

◆ TTI

TargetTransformInfo* llvm::LoopVectorizePass::TTI

Definition at line 176 of file LoopVectorize.h.


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