LLVM  8.0.1
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

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)
 
bool processLoop (Loop *L)
 

Public Attributes

bool InterleaveOnlyWhenForced = false
 If false, consider all loops for interleaving. More...
 
bool VectorizeOnlyWhenForced = false
 If false, consider all loops for vectorization. More...
 
ScalarEvolutionSE
 
LoopInfoLI
 
TargetTransformInfoTTI
 
DominatorTreeDT
 
BlockFrequencyInfoBFI
 
TargetLibraryInfoTLI
 
DemandedBitsDB
 
AliasAnalysisAA
 
AssumptionCacheAC
 
std::function< const LoopAccessInfo &(Loop &)> * GetLAA
 
OptimizationRemarkEmitterORE
 

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

Member Function Documentation

◆ processLoop()

bool LoopVectorizePass::processLoop ( Loop L)

Definition at line 7142 of file LoopVectorize.cpp.

References llvm::InnerLoopVectorizer::AA, llvm::InnerLoopVectorizer::AC, AddRuntimeUnrollDisableMetaData(), llvm::InnerLoopVectorizer::areSafetyChecksAdded(), assert(), llvm::LoopVectorizationLegality::canVectorize(), llvm::LoopVectorizationCostModel::collectValuesToIgnore(), llvm::VectorizationFactor::Cost, llvm::createLVMissedAnalysis(), llvm::dbgs(), 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::getLoopEstimatedTripCount(), llvm::Loop::getLoopID(), llvm::Value::getName(), llvm::BasicBlock::getParent(), llvm::Loop::getStartLoc(), llvm::Optional< T >::getValue(), llvm::APInt::getZExtValue(), llvm::Optional< T >::hasValue(), llvm::TargetTransformInfo::isFPVectorizationPotentiallyUnsafe(), llvm::InnerLoopVectorizer::LI, LLVM_DEBUG, LLVMLoopVectorizeFollowupAll, LoopVectorizeWithBlockFrequency, LV_NAME, llvm::makeFollowupLoopID(), llvm::max(), llvm::Attribute::NoImplicitFloat, llvm::InnerLoopVectorizer::ORE, llvm::LoopVectorizationPlanner::plan(), processLoopInVPlanNativePath(), llvm::InnerLoopVectorizer::PSE, llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::LoopVectorizationPlanner::setBestPlan(), llvm::Loop::setLoopID(), TinyTripCountVectorThreshold, llvm::InnerLoopVectorizer::TLI, llvm::InnerLoopVectorizer::TTI, llvm::APInt::ult(), 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 
)

Member Data Documentation

◆ AA

AliasAnalysis* llvm::LoopVectorizePass::AA

Definition at line 96 of file LoopVectorize.h.

◆ AC

AssumptionCache* llvm::LoopVectorizePass::AC

Definition at line 97 of file LoopVectorize.h.

◆ BFI

BlockFrequencyInfo* llvm::LoopVectorizePass::BFI

Definition at line 93 of file LoopVectorize.h.

◆ DB

DemandedBits* llvm::LoopVectorizePass::DB

Definition at line 95 of file LoopVectorize.h.

◆ DT

DominatorTree* llvm::LoopVectorizePass::DT

Definition at line 92 of file LoopVectorize.h.

◆ GetLAA

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

Definition at line 98 of file LoopVectorize.h.

◆ InterleaveOnlyWhenForced

bool llvm::LoopVectorizePass::InterleaveOnlyWhenForced = false

If false, consider all loops for interleaving.

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

Definition at line 83 of file LoopVectorize.h.

Referenced by collectSupportedLoops().

◆ LI

LoopInfo* llvm::LoopVectorizePass::LI

Definition at line 90 of file LoopVectorize.h.

◆ ORE

OptimizationRemarkEmitter* llvm::LoopVectorizePass::ORE

Definition at line 99 of file LoopVectorize.h.

◆ SE

ScalarEvolution* llvm::LoopVectorizePass::SE

Definition at line 89 of file LoopVectorize.h.

◆ TLI

TargetLibraryInfo* llvm::LoopVectorizePass::TLI

Definition at line 94 of file LoopVectorize.h.

◆ TTI

TargetTransformInfo* llvm::LoopVectorizePass::TTI

Definition at line 91 of file LoopVectorize.h.

◆ VectorizeOnlyWhenForced

bool llvm::LoopVectorizePass::VectorizeOnlyWhenForced = false

If false, consider all loops for vectorization.

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

Definition at line 87 of file LoopVectorize.h.

Referenced by collectSupportedLoops().


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