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:

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)

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