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:

public EPI

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:

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)

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()

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)

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()

Declared at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:845

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