class InnerLoopUnroller
Declaration
class InnerLoopUnroller : public InnerLoopVectorizer { /* full declaration omitted */ };
Description
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.
Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:779
Inherits from: InnerLoopVectorizer
Member Variables
Inherited from InnerLoopVectorizer:
- protected OrigLoop
- protected PSE
- protected LI
- protected DT
- protected AA
- protected TLI
- protected TTI
- protected AC
- protected ORE
- protected LVer
- protected VF
- protected UF
- protected Builder
- protected LoopVectorPreHeader
- protected LoopScalarPreHeader
- protected LoopMiddleBlock
- protected LoopExitBlock
- protected LoopVectorBody
- protected LoopScalarBody
- protected LoopBypassBlocks
- protected Induction = nullptr
- protected OldInduction = nullptr
- protected VectorLoopValueMap
- protected PredicatedInstructions
- protected TripCount = nullptr
- protected VectorTripCount = nullptr
- protected Legal
- protected Cost
- protected AddedSafetyChecks = false
- protected IVEndValues
- protected OrigPHIsToFix
Method Overview
- public InnerLoopUnroller(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, unsigned int UnrollFactor, llvm::LoopVectorizationLegality * LVL, llvm::LoopVectorizationCostModel * CM)
Inherited from InnerLoopVectorizer:
- protected addMetadata
- protected addMetadata
- protected addNewMetadata
- public areSafetyChecksAdded
- protected buildScalarSteps
- protected clearReductionWrapFlags
- protected createBitOrPointerCast
- protected createInductionVariable
- protected createVectorIntOrFpInductionPHI
- public createVectorizedLoopSkeleton
- protected emitMemRuntimeChecks
- protected emitMinimumIterationCountCheck
- protected emitSCEVChecks
- protected emitTransformedIndex
- protected fixCrossIterationPHIs
- protected fixFirstOrderRecurrence
- protected fixLCSSAPHIs
- public fixNonInductionPHIs
- protected fixReduction
- public fixVectorizedLoop
- protected fixupIVUsers
- protected getBroadcastInstrs
- public getOrCreateScalarValue
- protected getOrCreateTripCount
- protected getOrCreateVectorTripCount
- public getOrCreateVectorValue
- protected getStepVector
- protected needsScalarInduction
- public packScalarIntoVectorValue
- protected recordVectorLoopValueForInductionCast
- protected reverseVector
- public scalarizeInstruction
- public setDebugLocFromInst
- protected shouldScalarizeInstruction
- protected sinkScalarOperands
- protected truncateToMinimalBitwidths
- public vectorizeInterleaveGroup
- public vectorizeMemoryInstruction
- public widenGEP
- public widenInstruction
- public widenIntOrFpInduction
- public widenPHIInstruction
Methods
ΒΆInnerLoopUnroller(
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,
unsigned int UnrollFactor,
llvm::LoopVectorizationLegality* LVL,
llvm::LoopVectorizationCostModel* CM)
InnerLoopUnroller(
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,
unsigned int UnrollFactor,
llvm::LoopVectorizationLegality* LVL,
llvm::LoopVectorizationCostModel* CM)
Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:781
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
- unsigned int UnrollFactor
- llvm::LoopVectorizationLegality* LVL
- llvm::LoopVectorizationCostModel* CM