LLVM 24.0.0git
llvm::EpilogueVectorizerMainLoop Class Reference

A specialized derived class of inner loop vectorizer that performs vectorization of main loops in the process of vectorizing loops and their epilogues. More...

Inheritance diagram for llvm::EpilogueVectorizerMainLoop:
[legend]

Public Member Functions

 EpilogueVectorizerMainLoop (Loop *OrigLoop, PredicatedScalarEvolution &PSE, LoopInfo *LI, DominatorTree *DT, const TargetTransformInfo *TTI, AssumptionCache *AC, EpilogueLoopVectorizationInfo &EPI, GeneratedRTChecks &Check, VPlan &Plan)
Public Member Functions inherited from llvm::InnerLoopAndEpilogueVectorizer
 InnerLoopAndEpilogueVectorizer (Loop *OrigLoop, PredicatedScalarEvolution &PSE, LoopInfo *LI, DominatorTree *DT, const TargetTransformInfo *TTI, AssumptionCache *AC, EpilogueLoopVectorizationInfo &EPI, GeneratedRTChecks &Checks, VPlan &Plan, ElementCount VecWidth, unsigned UnrollFactor)
Public Member Functions inherited from llvm::InnerLoopVectorizer
 InnerLoopVectorizer (Loop *OrigLoop, PredicatedScalarEvolution &PSE, LoopInfo *LI, DominatorTree *DT, const TargetTransformInfo *TTI, AssumptionCache *AC, ElementCount VecWidth, unsigned UnrollFactor, 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.

Protected Member Functions

void printDebugTracesAtStart () override
 Allow subclasses to override and print debug traces before/after vplan execution, when trace information is requested.
void printDebugTracesAtEnd () override
Protected Member Functions inherited from llvm::InnerLoopVectorizer
BasicBlock * createScalarPreheader (StringRef Prefix)
 Create and return a new IR basic block for the scalar preheader whose name is prefixed with Prefix.

Additional Inherited Members

Public Attributes inherited from llvm::InnerLoopAndEpilogueVectorizer
EpilogueLoopVectorizationInfo & EPI
 Holds and updates state information required to vectorize the main loop and its epilogue in two separate passes.
Protected Attributes inherited from llvm::InnerLoopVectorizer
Loop * OrigLoop
 The original loop.
PredicatedScalarEvolution & PSE
 A wrapper around ScalarEvolution used to add runtime SCEV checks.
LoopInfo * LI
 Loop Info.
DominatorTree * DT
 Dominator Tree.
const TargetTransformInfo * TTI
 Target Transform Info.
AssumptionCache * AC
 Assumption Cache.
ElementCount VF
 The vectorization SIMD factor to use.
unsigned UF
 The vectorization unroll factor to use.
IRBuilder Builder
 The builder that we use.
GeneratedRTChecks & RTChecks
 Structure to hold information about generated runtime checks, responsible for cleaning the checks, if vectorization turns out unprofitable.
VPlan & Plan
VPBasicBlock * VectorPHVPBB
 The vector preheader block of Plan, used as target for check blocks introduced during skeleton creation.

Detailed Description

A specialized derived class of inner loop vectorizer that performs vectorization of main loops in the process of vectorizing loops and their epilogues.

Definition at line 675 of file LoopVectorize.cpp.

Constructor & Destructor Documentation

◆ EpilogueVectorizerMainLoop()

Member Function Documentation

◆ printDebugTracesAtEnd()

void EpilogueVectorizerMainLoop::printDebugTracesAtEnd ( )
overrideprotectedvirtual

◆ printDebugTracesAtStart()

void EpilogueVectorizerMainLoop::printDebugTracesAtStart ( )
overrideprotectedvirtual

Allow subclasses to override and print debug traces before/after vplan execution, when trace information is requested.

Reimplemented from llvm::InnerLoopVectorizer.

Definition at line 5981 of file LoopVectorize.cpp.

References llvm::dbgs(), llvm::InnerLoopAndEpilogueVectorizer::EPI, and LLVM_DEBUG.


The documentation for this class was generated from the following file: