LLVM  13.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)
 
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

ScalarEvolutionSE
 
LoopInfoLI
 
TargetTransformInfoTTI
 
DominatorTreeDT
 
BlockFrequencyInfoBFI
 
TargetLibraryInfoTLI
 
DemandedBitsDB
 
AAResultsAA
 
AssumptionCacheAC
 
std::function< const LoopAccessInfo &(Loop &)> * GetLAA
 
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. More...
 

Detailed Description

The LoopVectorize Pass.

Definition at line 129 of file LoopVectorize.h.

Constructor & Destructor Documentation

◆ LoopVectorizePass()

LoopVectorizePass::LoopVectorizePass ( LoopVectorizeOptions  Opts = {})

Definition at line 9797 of file LoopVectorize.cpp.

Member Function Documentation

◆ processLoop()

bool LoopVectorizePass::processLoop ( Loop L)

Definition at line 9803 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::InstructionCost::getValue(), 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().

◆ 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_,
AAResults AA_,
AssumptionCache AC_,
std::function< const LoopAccessInfo &(Loop &)> &  GetLAA_,
OptimizationRemarkEmitter ORE_,
ProfileSummaryInfo PSI_ 
)

Member Data Documentation

◆ AA

AAResults* llvm::LoopVectorizePass::AA

Definition at line 149 of file LoopVectorize.h.

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

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

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

◆ DB

DemandedBits* llvm::LoopVectorizePass::DB

Definition at line 148 of file LoopVectorize.h.

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

◆ DT

DominatorTree* llvm::LoopVectorizePass::DT

Definition at line 145 of file LoopVectorize.h.

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

◆ GetLAA

std::function<const LoopAccessInfo &(Loop &)>* llvm::LoopVectorizePass::GetLAA

Definition at line 151 of file LoopVectorize.h.

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

◆ LI

LoopInfo* llvm::LoopVectorizePass::LI

Definition at line 143 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(), run(), and runImpl().

◆ SE

ScalarEvolution* llvm::LoopVectorizePass::SE

Definition at line 142 of file LoopVectorize.h.

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

◆ TLI

TargetLibraryInfo* llvm::LoopVectorizePass::TLI

Definition at line 147 of file LoopVectorize.h.

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

◆ TTI

TargetTransformInfo* llvm::LoopVectorizePass::TTI

Definition at line 144 of file LoopVectorize.h.

Referenced by run().


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