LLVM  14.0.0git
Public Member Functions | Public Attributes | List of all members
llvm::VPTransformState::CFGState Struct Reference

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

#include "Transforms/Vectorize/VPlan.h"

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

Public Member Functions

 CFGState ()=default
 

Public Attributes

VPBasicBlockPrevVPBB = nullptr
 The previous VPBasicBlock visited. Initially set to null. More...
 
BasicBlockPrevBB = nullptr
 The previous IR BasicBlock created or used. More...
 
BasicBlockLastBB = nullptr
 The last IR BasicBlock in the output IR. More...
 
BasicBlockVectorPreHeader = nullptr
 The IR BasicBlock that is the preheader of the vector loop in the output IR. More...
 
SmallDenseMap< VPBasicBlock *, BasicBlock * > VPBB2IRBB
 A mapping of each VPBasicBlock to the corresponding BasicBlock. More...
 
SmallVector< VPBasicBlock *, 8 > VPBBsToFix
 Vector of VPBasicBlocks whose terminator instruction needs to be fixed up at the end of vector code generation. More...
 

Detailed Description

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

Definition at line 297 of file VPlan.h.

Constructor & Destructor Documentation

◆ CFGState()

llvm::VPTransformState::CFGState::CFGState ( )
default

Member Data Documentation

◆ LastBB

BasicBlock* llvm::VPTransformState::CFGState::LastBB = nullptr

The last IR BasicBlock in the output IR.

Set to the new latch BasicBlock, used for placing the newly created BasicBlocks.

Definition at line 307 of file VPlan.h.

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

◆ PrevBB

BasicBlock* llvm::VPTransformState::CFGState::PrevBB = nullptr

◆ PrevVPBB

VPBasicBlock* llvm::VPTransformState::CFGState::PrevVPBB = nullptr

The previous VPBasicBlock visited. Initially set to null.

Definition at line 299 of file VPlan.h.

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

◆ VectorPreHeader

BasicBlock* llvm::VPTransformState::CFGState::VectorPreHeader = nullptr

The IR BasicBlock that is the preheader of the vector loop in the output IR.

FIXME: The vector preheader should also be modeled in VPlan, so any code that needs to be added to the preheader gets directly generated by VPlan. There should be no need to manage a pointer to the IR BasicBlock.

Definition at line 314 of file VPlan.h.

Referenced by llvm::VPFirstOrderRecurrencePHIRecipe::execute(), llvm::VPReductionPHIRecipe::execute(), and llvm::VPlan::execute().

◆ VPBB2IRBB

SmallDenseMap<VPBasicBlock *, BasicBlock *> llvm::VPTransformState::CFGState::VPBB2IRBB

A mapping of each VPBasicBlock to the corresponding BasicBlock.

In case of replication, maps the BasicBlock of the last replica created.

Definition at line 318 of file VPlan.h.

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

◆ VPBBsToFix

SmallVector<VPBasicBlock *, 8> llvm::VPTransformState::CFGState::VPBBsToFix

Vector of VPBasicBlocks whose terminator instruction needs to be fixed up at the end of vector code generation.

Definition at line 322 of file VPlan.h.

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


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