LLVM: llvm::InnerLoopVectorizer Class Reference (original ) (raw )InnerLoopVectorizer vectorizes loops which contain only one basic block to a specified vectorization factor (VF). More...
Public Member Functions
InnerLoopVectorizer (Loop *OrigLoop , PredicatedScalarEvolution &PSE , LoopInfo *LI , DominatorTree *DT , const TargetTransformInfo *TTI , AssumptionCache *AC , ElementCount VecWidth, unsigned UnrollFactor, LoopVectorizationCostModel *CM, GeneratedRTChecks &RTChecks , VPlan &Plan )
virtual
~InnerLoopVectorizer ()=default
virtual BasicBlock *
createVectorizedLoopSkeleton ()
Creates a basic block for the scalar preheader.
void
fixVectorizedLoop (VPTransformState &State)
Fix the vectorized code, taking care of header phi's, and more.
void
fixNonInductionPHIs (VPTransformState &State)
Fix the non-induction PHIs in Plan.
Value *
getTripCount () const
Returns the original loop trip count.
void
setTripCount (Value *TC)
Used to set the trip count after ILV's construction and after the preheader block has been executed.
InnerLoopVectorizer vectorizes loops which contain only one basic block to a specified vectorization factor (VF).
This class performs the widening of scalars into vectors, or multiple scalars. This class also implements the following features:
It inserts an epilogue loop for handling loops that don't have iteration counts that are known to be a multiple of the vectorization factor.
It handles the code generation for reduction variables.
Scalarization (implementation using scalars) of un-vectorizable instructions. InnerLoopVectorizer does not perform any vectorization-legality checks, and relies on the caller to check for the different legality aspects. The InnerLoopVectorizer relies on the LoopVectorizationLegality class to provide information about the induction and reduction variables that were found to a given vectorization factor.
Definition at line 499 of file LoopVectorize.cpp .
llvm::InnerLoopVectorizer::InnerLoopVectorizer ( Loop * OrigLoop , PredicatedScalarEvolution & PSE , LoopInfo * LI , DominatorTree * DT , const TargetTransformInfo * TTI , AssumptionCache * AC , ElementCount VecWidth , unsigned UnrollFactor , LoopVectorizationCostModel * CM , GeneratedRTChecks & RTChecks , VPlan & Plan )
inline
Definition at line 501 of file LoopVectorize.cpp .
References AC , Builder , llvm::cast() , Cost , DT , LI , OrigLoop , Plan , PSE , RTChecks , TTI , UF , VectorPHVPBB , and VF .
Referenced by llvm::InnerLoopAndEpilogueVectorizer::InnerLoopAndEpilogueVectorizer() .
◆ ~InnerLoopVectorizer()
virtual llvm::InnerLoopVectorizer::~InnerLoopVectorizer ( )
virtualdefault
◆ createVectorizedLoopSkeleton()
BasicBlock * InnerLoopVectorizer::createVectorizedLoopSkeleton ( )
virtual
◆ fixNonInductionPHIs()◆ fixVectorizedLoop()◆ getTripCount()
Value * llvm::InnerLoopVectorizer::getTripCount ( ) const
inline
◆ printDebugTracesAtEnd()
virtual void llvm::InnerLoopVectorizer::printDebugTracesAtEnd ( )
inlineprotectedvirtual
◆ printDebugTracesAtStart()
virtual void llvm::InnerLoopVectorizer::printDebugTracesAtStart ( )
inlineprotectedvirtual
◆ setTripCount()
void llvm::InnerLoopVectorizer::setTripCount ( Value * TC )
inline
◆ LoopVectorizationPlanner◆ AC◆ Builder◆ Cost◆ DT◆ LI◆ OrigLoop
Loop * llvm::InnerLoopVectorizer::OrigLoop
protected
◆ Plan
VPlan & llvm::InnerLoopVectorizer::Plan
protected
◆ PSE◆ RTChecks
GeneratedRTChecks& llvm::InnerLoopVectorizer::RTChecks
protected
◆ TripCount
Value * llvm::InnerLoopVectorizer::TripCount = nullptr
protected
◆ TTI◆ UF◆ VectorPHVPBB◆ VF
The documentation for this class was generated from the following file: