LLVM  8.0.1
Classes | Public Member Functions | Public Attributes | List of all members
llvm::VPTransformState Struct Reference

VPTransformState holds information passed down when "executing" a VPlan, needed for generating the output IR. More...

#include "Transforms/Vectorize/VPlan.h"

Collaboration diagram for llvm::VPTransformState:
Collaboration graph
[legend]

Classes

struct  CFGState
 Hold state information used when constructing the CFG of the output IR, traversing the VPBasicBlocks and generating corresponding IR BasicBlocks. More...
 
struct  DataState
 

Public Member Functions

 VPTransformState (unsigned VF, unsigned UF, LoopInfo *LI, DominatorTree *DT, IRBuilder<> &Builder, VectorizerValueMap &ValueMap, InnerLoopVectorizer *ILV, VPCallback &Callback)
 
Valueget (VPValue *Def, unsigned Part)
 Get the generated Value for a given VPValue and a given Part. More...
 
void set (VPValue *Def, Value *V, unsigned Part)
 Set the generated Value for a given VPValue and a given Part. More...
 

Public Attributes

unsigned VF
 The chosen Vectorization and Unroll Factors of the loop being vectorized. More...
 
unsigned UF
 
Optional< VPIterationInstance
 Hold the indices to generate specific scalar instructions. More...
 
struct llvm::VPTransformState::DataState Data
 
struct llvm::VPTransformState::CFGState CFG
 
LoopInfoLI
 Hold a pointer to LoopInfo to register new basic blocks in the loop. More...
 
DominatorTreeDT
 Hold a pointer to Dominator Tree to register new basic blocks in the loop. More...
 
IRBuilderBuilder
 Hold a reference to the IRBuilder used to generate output IR code. More...
 
VectorizerValueMapValueMap
 Hold a reference to the Value state information used when generating the Values of the output IR. More...
 
VPValue2ValueTy VPValue2Value
 Hold a reference to a mapping between VPValues in VPlan and original Values they correspond to. More...
 
ValueTripCount = nullptr
 Hold the trip count of the scalar loop. More...
 
InnerLoopVectorizerILV
 Hold a pointer to InnerLoopVectorizer to reuse its IR generation methods. More...
 
VPCallbackCallback
 

Detailed Description

VPTransformState holds information passed down when "executing" a VPlan, needed for generating the output IR.

Definition at line 234 of file VPlan.h.

Constructor & Destructor Documentation

◆ VPTransformState()

llvm::VPTransformState::VPTransformState ( unsigned  VF,
unsigned  UF,
LoopInfo LI,
DominatorTree DT,
IRBuilder<> &  Builder,
VectorizerValueMap ValueMap,
InnerLoopVectorizer ILV,
VPCallback Callback 
)
inline

Definition at line 235 of file VPlan.h.

Member Function Documentation

◆ get()

Value* llvm::VPTransformState::get ( VPValue Def,
unsigned  Part 
)
inline

Get the generated Value for a given VPValue and a given Part.

Note that as some Defs are still created by ILV and managed in its ValueMap, this method will delegate the call to ILV in such cases in order to provide callers a consistent API.

See also
set.

Definition at line 264 of file VPlan.h.

References llvm::Data.

Referenced by llvm::VPRecipeBase::eraseFromParent(), llvm::VPBlendRecipe::execute(), llvm::VPInterleaveRecipe::execute(), llvm::VPBranchOnMaskRecipe::execute(), and llvm::VPWidenMemoryInstructionRecipe::execute().

◆ set()

void llvm::VPTransformState::set ( VPValue Def,
Value V,
unsigned  Part 
)
inline

Set the generated Value for a given VPValue and a given Part.

Definition at line 273 of file VPlan.h.

References llvm::Data, and llvm::tgtok::Def.

Referenced by llvm::VPRecipeBase::eraseFromParent().

Member Data Documentation

◆ Builder

IRBuilder& llvm::VPTransformState::Builder

◆ Callback

VPCallback& llvm::VPTransformState::Callback

Definition at line 329 of file VPlan.h.

Referenced by llvm::VPBasicBlock::execute().

◆ CFG

struct llvm::VPTransformState::CFGState llvm::VPTransformState::CFG

◆ Data

struct llvm::VPTransformState::DataState llvm::VPTransformState::Data

◆ DT

DominatorTree* llvm::VPTransformState::DT

Hold a pointer to Dominator Tree to register new basic blocks in the loop.

Definition at line 310 of file VPlan.h.

Referenced by llvm::VPlan::execute().

◆ ILV

InnerLoopVectorizer* llvm::VPTransformState::ILV

◆ Instance

Optional<VPIteration> llvm::VPTransformState::Instance

Hold the indices to generate specific scalar instructions.

Null indicates that all instances are to be generated, using either scalar or vector instructions.

Definition at line 248 of file VPlan.h.

Referenced by llvm::VPInstruction::execute(), llvm::VPWidenIntOrFpInductionRecipe::execute(), llvm::VPInterleaveRecipe::execute(), llvm::VPReplicateRecipe::execute(), llvm::VPBranchOnMaskRecipe::execute(), llvm::VPPredInstPHIRecipe::execute(), llvm::VPBasicBlock::execute(), and llvm::VPRegionBlock::execute().

◆ LI

LoopInfo* llvm::VPTransformState::LI

Hold a pointer to LoopInfo to register new basic blocks in the loop.

Definition at line 307 of file VPlan.h.

Referenced by llvm::VPBasicBlock::execute(), and llvm::VPlan::execute().

◆ TripCount

Value* llvm::VPTransformState::TripCount = nullptr

Hold the trip count of the scalar loop.

Definition at line 324 of file VPlan.h.

Referenced by llvm::VPlan::execute().

◆ UF

unsigned llvm::VPTransformState::UF

◆ ValueMap

VectorizerValueMap& llvm::VPTransformState::ValueMap

Hold a reference to the Value state information used when generating the Values of the output IR.

Definition at line 317 of file VPlan.h.

Referenced by llvm::VPBlendRecipe::execute(), llvm::VPReplicateRecipe::execute(), and llvm::VPPredInstPHIRecipe::execute().

◆ VF

unsigned llvm::VPTransformState::VF

The chosen Vectorization and Unroll Factors of the loop being vectorized.

Definition at line 242 of file VPlan.h.

Referenced by llvm::VPWidenPHIRecipe::execute(), llvm::VPReplicateRecipe::execute(), and llvm::VPRegionBlock::execute().

◆ VPValue2Value

VPValue2ValueTy llvm::VPTransformState::VPValue2Value

Hold a reference to a mapping between VPValues in VPlan and original Values they correspond to.

Definition at line 321 of file VPlan.h.

Referenced by llvm::VPlan::execute().


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