class EpilogueVectorizerMainLoop
Declaration
class EpilogueVectorizerMainLoop
: public InnerLoopAndEpilogueVectorizer { /* full declaration omitted */ };
Description
A specialized derived class of inner loop vectorizer that performs vectorization of *main* loops in the process of vectorizing loops and their epilogues.
Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:823
Inherits from: InnerLoopAndEpilogueVectorizer
Member Variables
Inherited from InnerLoopAndEpilogueVectorizer:
Inherited from InnerLoopVectorizer:
- protected OrigLoop
- protected PSE
- protected LI
- protected DT
- protected AA
- protected TLI
- protected TTI
- protected AC
- protected ORE
- protected VF
- protected MinProfitableTripCount
- protected UF
- protected Builder
- protected LoopVectorPreHeader
- protected LoopScalarPreHeader
- protected LoopMiddleBlock
- protected LoopExitBlock
- protected LoopScalarBody
- protected LoopBypassBlocks
- protected PredicatedInstructions
- protected TripCount = nullptr
- protected VectorTripCount = nullptr
- protected Legal
- protected Cost
- protected AddedSafetyChecks = false
- protected IVEndValues
- protected BFI
- protected PSI
- protected OptForSizeBasedOnProfile
- protected RTChecks
- protected ReductionResumeValues
Method Overview
- public EpilogueVectorizerMainLoop(llvm::Loop * OrigLoop, llvm::PredicatedScalarEvolution & PSE, llvm::LoopInfo * LI, llvm::DominatorTree * DT, const llvm::TargetLibraryInfo * TLI, const llvm::TargetTransformInfo * TTI, llvm::AssumptionCache * AC, llvm::OptimizationRemarkEmitter * ORE, llvm::EpilogueLoopVectorizationInfo & EPI, llvm::LoopVectorizationLegality * LVL, llvm::LoopVectorizationCostModel * CM, llvm::BlockFrequencyInfo * BFI, llvm::ProfileSummaryInfo * PSI, GeneratedRTChecks & Check)
- public std::pair<BasicBlock *, Value *> createEpilogueVectorizedLoopSkeleton()
- protected llvm::BasicBlock * emitIterationCountCheck(llvm::BasicBlock * Bypass, bool ForEpilogue)
- protected void printDebugTracesAtEnd()
- protected void printDebugTracesAtStart()
Inherited from InnerLoopAndEpilogueVectorizer:
Inherited from InnerLoopVectorizer:
- public areSafetyChecksAdded
- protected clearReductionWrapFlags
- protected collectPoisonGeneratingRecipes
- protected completeLoopSkeleton
- protected createBitOrPointerCast
- protected createInductionResumeValues
- protected createVectorLoopSkeleton
- public createVectorizedLoopSkeleton
- protected emitIterationCountCheck
- protected emitMemRuntimeChecks
- protected emitSCEVChecks
- protected fixCrossIterationPHIs
- protected fixFirstOrderRecurrence
- public fixNonInductionPHIs
- protected fixReduction
- public fixVectorizedLoop
- protected fixupIVUsers
- public getBroadcastInstrs
- protected getOrCreateTripCount
- protected getOrCreateVectorTripCount
- public getReductionResumeValue
- public packScalarIntoVectorValue
- protected printDebugTracesAtEnd
- protected printDebugTracesAtStart
- public scalarizeInstruction
- protected sinkScalarOperands
- protected truncateToMinimalBitwidths
- public useOrderedReductions
- public vectorizeInterleaveGroup
- public widenCallInstruction
Methods
¶EpilogueVectorizerMainLoop(
llvm::Loop* OrigLoop,
llvm::PredicatedScalarEvolution& PSE,
llvm::LoopInfo* LI,
llvm::DominatorTree* DT,
const llvm::TargetLibraryInfo* TLI,
const llvm::TargetTransformInfo* TTI,
llvm::AssumptionCache* AC,
llvm::OptimizationRemarkEmitter* ORE,
llvm::EpilogueLoopVectorizationInfo& EPI,
llvm::LoopVectorizationLegality* LVL,
llvm::LoopVectorizationCostModel* CM,
llvm::BlockFrequencyInfo* BFI,
llvm::ProfileSummaryInfo* PSI,
GeneratedRTChecks& Check)
EpilogueVectorizerMainLoop(
llvm::Loop* OrigLoop,
llvm::PredicatedScalarEvolution& PSE,
llvm::LoopInfo* LI,
llvm::DominatorTree* DT,
const llvm::TargetLibraryInfo* TLI,
const llvm::TargetTransformInfo* TTI,
llvm::AssumptionCache* AC,
llvm::OptimizationRemarkEmitter* ORE,
llvm::EpilogueLoopVectorizationInfo& EPI,
llvm::LoopVectorizationLegality* LVL,
llvm::LoopVectorizationCostModel* CM,
llvm::BlockFrequencyInfo* BFI,
llvm::ProfileSummaryInfo* PSI,
GeneratedRTChecks& Check)
Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:825
Parameters
- llvm::Loop* OrigLoop
- llvm::PredicatedScalarEvolution& PSE
- llvm::LoopInfo* LI
- llvm::DominatorTree* DT
- const llvm::TargetLibraryInfo* TLI
- const llvm::TargetTransformInfo* TTI
- llvm::AssumptionCache* AC
- llvm::OptimizationRemarkEmitter* ORE
- llvm::EpilogueLoopVectorizationInfo& EPI
- llvm::LoopVectorizationLegality* LVL
- llvm::LoopVectorizationCostModel* CM
- llvm::BlockFrequencyInfo* BFI
- llvm::ProfileSummaryInfo* PSI
- GeneratedRTChecks& Check
¶std::pair<BasicBlock*, Value*>
createEpilogueVectorizedLoopSkeleton()
std::pair<BasicBlock*, Value*>
createEpilogueVectorizedLoopSkeleton()
Description
Implements the interface for creating a vectorized skeleton using the *main loop* strategy (ie the first pass of vplan execution).
Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:837
¶llvm::BasicBlock* emitIterationCountCheck(
llvm::BasicBlock* Bypass,
bool ForEpilogue)
llvm::BasicBlock* emitIterationCountCheck(
llvm::BasicBlock* Bypass,
bool ForEpilogue)
Description
Emits an iteration count bypass check once for the main loop (when \p ForEpilogue is false) and once for the epilogue loop (when \p ForEpilogue is true).
Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:843
Parameters
- llvm::BasicBlock* Bypass
- bool ForEpilogue
¶void printDebugTracesAtEnd()
void printDebugTracesAtEnd()
Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:845
¶void printDebugTracesAtStart()
void printDebugTracesAtStart()
Description
Allow subclasses to override and print debug traces before/after vplan execution, when trace information is requested.
Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:844