LLVM  10.0.0svn
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)
 
bool runImpl (Function &F, ScalarEvolution &SE_, LoopInfo &LI_, TargetTransformInfo &TTI_, DominatorTree &DT_, BlockFrequencyInfo &BFI_, TargetLibraryInfo *TLI_, DemandedBits &DB_, AliasAnalysis &AA_, AssumptionCache &AC_, std::function< const LoopAccessInfo &(Loop &)> &GetLAA_, OptimizationRemarkEmitter &ORE_, ProfileSummaryInfo *PSI_)
 
bool processLoop (Loop *L)
 

Public Attributes

bool InterleaveOnlyWhenForced
 If false, consider all loops for interleaving. More...
 
bool VectorizeOnlyWhenForced
 If false, consider all loops for vectorization. More...
 
ScalarEvolutionSE
 
LoopInfoLI
 
TargetTransformInfoTTI
 
DominatorTreeDT
 
BlockFrequencyInfoBFI
 
TargetLibraryInfoTLI
 
DemandedBitsDB
 
AliasAnalysisAA
 
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 119 of file LoopVectorize.h.

Constructor & Destructor Documentation

◆ LoopVectorizePass()

llvm::LoopVectorizePass::LoopVectorizePass ( LoopVectorizeOptions  Opts = {})
inline

Member Function Documentation

◆ processLoop()

bool LoopVectorizePass::processLoop ( Loop L)

Definition at line 7510 of file LoopVectorize.cpp.

References llvm::InnerLoopVectorizer::AA, llvm::InnerLoopVectorizer::AC, AddRuntimeUnrollDisableMetaData(), llvm::InnerLoopVectorizer::areSafetyChecksAdded(), assert(), llvm::AMDGPUISD::BFI, llvm::LoopVectorizationLegality::canVectorize(), llvm::CM_ScalarEpilogueNotAllowedLowTripLoop, llvm::LoopVectorizationCostModel::collectValuesToIgnore(), llvm::VectorizationFactor::Cost, llvm::dbgs(), llvm::VectorizationFactor::Disabled(), llvm::LoopVectorizationRequirements::doesNotMeet(), llvm::InnerLoopVectorizer::DT, llvm::OptimizationRemarkEmitter::emit(), llvm::LoopBase< BlockT, LoopT >::empty(), llvm::TargetTransformInfo::enableInterleavedAccessVectorization(), EnableInterleavedMemAccesses, EnableVPlanNativePath, llvm::LoopVectorizationPlanner::executePlan(), F(), llvm::LoopVectorizeHints::FK_Disabled, llvm::LoopVectorizeHints::FK_Enabled, getDebugLocString(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopVectorizationLegality::getLAI(), llvm::Loop::getLoopID(), llvm::Value::getName(), llvm::BasicBlock::getParent(), getScalarEpilogueLowering(), getSmallBestKnownTC(), llvm::Loop::getStartLoc(), llvm::Optional< T >::getValue(), llvm::Optional< T >::hasValue(), llvm::TargetTransformInfo::isFPVectorizationPotentiallyUnsafe(), llvm::InnerLoopVectorizer::LI, LLVM_DEBUG, LLVMLoopVectorizeFollowupAll, LV_NAME, llvm::makeFollowupLoopID(), llvm::InnerLoopVectorizer::ORE, llvm::LoopVectorizationPlanner::plan(), processLoopInVPlanNativePath(), llvm::InnerLoopVectorizer::PSE, llvm::reportVectorizationFailure(), llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::LoopVectorizationPlanner::setBestPlan(), llvm::Loop::setLoopID(), TinyTripCountVectorThreshold, llvm::InnerLoopVectorizer::TLI, llvm::InnerLoopVectorizer::TTI, useMaskedInterleavedAccesses(), llvm::verifyFunction(), and llvm::VectorizationFactor::Width.

◆ run()

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

◆ runImpl()

bool LoopVectorizePass::runImpl ( Function F,
ScalarEvolution SE_,
LoopInfo LI_,
TargetTransformInfo TTI_,
DominatorTree DT_,
BlockFrequencyInfo BFI_,
TargetLibraryInfo TLI_,
DemandedBits DB_,
AliasAnalysis AA_,
AssumptionCache AC_,
std::function< const LoopAccessInfo &(Loop &)> &  GetLAA_,
OptimizationRemarkEmitter ORE_,
ProfileSummaryInfo PSI_ 
)

Member Data Documentation

◆ AA

AliasAnalysis* llvm::LoopVectorizePass::AA

Definition at line 139 of file LoopVectorize.h.

◆ AC

AssumptionCache* llvm::LoopVectorizePass::AC

Definition at line 140 of file LoopVectorize.h.

◆ BFI

BlockFrequencyInfo* llvm::LoopVectorizePass::BFI

Definition at line 136 of file LoopVectorize.h.

◆ DB

DemandedBits* llvm::LoopVectorizePass::DB

Definition at line 138 of file LoopVectorize.h.

◆ DT

DominatorTree* llvm::LoopVectorizePass::DT

Definition at line 135 of file LoopVectorize.h.

◆ GetLAA

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

Definition at line 141 of file LoopVectorize.h.

◆ InterleaveOnlyWhenForced

bool llvm::LoopVectorizePass::InterleaveOnlyWhenForced

If false, consider all loops for interleaving.

If true, only loops that explicitly request interleaving are considered.

Definition at line 122 of file LoopVectorize.h.

Referenced by collectSupportedLoops().

◆ LI

LoopInfo* llvm::LoopVectorizePass::LI

Definition at line 133 of file LoopVectorize.h.

◆ ORE

OptimizationRemarkEmitter* llvm::LoopVectorizePass::ORE

Definition at line 142 of file LoopVectorize.h.

◆ PSI

ProfileSummaryInfo* llvm::LoopVectorizePass::PSI

Definition at line 143 of file LoopVectorize.h.

◆ SE

ScalarEvolution* llvm::LoopVectorizePass::SE

Definition at line 132 of file LoopVectorize.h.

◆ TLI

TargetLibraryInfo* llvm::LoopVectorizePass::TLI

Definition at line 137 of file LoopVectorize.h.

◆ TTI

TargetTransformInfo* llvm::LoopVectorizePass::TTI

Definition at line 134 of file LoopVectorize.h.

◆ VectorizeOnlyWhenForced

bool llvm::LoopVectorizePass::VectorizeOnlyWhenForced

If false, consider all loops for vectorization.

If true, only loops that explicitly request vectorization are considered.

Definition at line 126 of file LoopVectorize.h.

Referenced by collectSupportedLoops().


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