LLVM  8.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

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 DisableUnrolling = false
 
bool AlwaysVectorize = true
 If true, 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 7127 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(), emitMissedWarning(), 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::Value::getName(), llvm::BasicBlock::getParent(), llvm::Loop::getStartLoc(), llvm::APInt::getZExtValue(), llvm::TargetTransformInfo::isFPVectorizationPotentiallyUnsafe(), llvm::InnerLoopVectorizer::LI, LLVM_DEBUG, LoopVectorizeWithBlockFrequency, LV_NAME, llvm::max(), llvm::InnerLoopVectorizer::ORE, llvm::LoopVectorizationPlanner::plan(), processLoopInVPlanNativePath(), llvm::InnerLoopVectorizer::PSE, llvm::LoopVectorizationCostModel::selectInterleaveCount(), llvm::LoopVectorizationPlanner::setBestPlan(), 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 95 of file LoopVectorize.h.

◆ AC

AssumptionCache* llvm::LoopVectorizePass::AC

Definition at line 96 of file LoopVectorize.h.

◆ AlwaysVectorize

bool llvm::LoopVectorizePass::AlwaysVectorize = true

If true, consider all loops for vectorization.

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

Definition at line 86 of file LoopVectorize.h.

Referenced by collectSupportedLoops().

◆ BFI

BlockFrequencyInfo* llvm::LoopVectorizePass::BFI

Definition at line 92 of file LoopVectorize.h.

◆ DB

DemandedBits* llvm::LoopVectorizePass::DB

Definition at line 94 of file LoopVectorize.h.

◆ DisableUnrolling

bool llvm::LoopVectorizePass::DisableUnrolling = false

Definition at line 81 of file LoopVectorize.h.

Referenced by collectSupportedLoops().

◆ DT

DominatorTree* llvm::LoopVectorizePass::DT

Definition at line 91 of file LoopVectorize.h.

◆ GetLAA

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

Definition at line 97 of file LoopVectorize.h.

◆ LI

LoopInfo* llvm::LoopVectorizePass::LI

Definition at line 89 of file LoopVectorize.h.

◆ ORE

OptimizationRemarkEmitter* llvm::LoopVectorizePass::ORE

Definition at line 98 of file LoopVectorize.h.

◆ SE

ScalarEvolution* llvm::LoopVectorizePass::SE

Definition at line 88 of file LoopVectorize.h.

◆ TLI

TargetLibraryInfo* llvm::LoopVectorizePass::TLI

Definition at line 93 of file LoopVectorize.h.

◆ TTI

TargetTransformInfo* llvm::LoopVectorizePass::TTI

Definition at line 90 of file LoopVectorize.h.


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