LLVM
8.0.1
|
VPBlockBase is the building block of the Hierarchical Control-Flow Graph. More...
#include "Transforms/Vectorize/VPlan.h"
Public Types | |
using | VPBlockTy = enum { VPBasicBlockSC, VPRegionBlockSC } |
An enumeration for keeping track of the concrete subclass of VPBlockBase that are actually instantiated. More... | |
using | VPBlocksTy = SmallVectorImpl< VPBlockBase * > |
Static Public Member Functions | |
static void | deleteCFG (VPBlockBase *Entry) |
Delete all blocks reachable from a given VPBlockBase, inclusive. More... | |
Protected Member Functions | |
VPBlockBase (const unsigned char SC, const std::string &N) | |
Friends | |
class | VPBlockUtils |
VPBlockBase is the building block of the Hierarchical Control-Flow Graph.
A VPBlockBase can be either a VPBasicBlock or a VPRegionBlock.
using llvm::VPBlockBase::VPBlockTy = enum { VPBasicBlockSC, VPRegionBlockSC } |
An enumeration for keeping track of the concrete subclass of VPBlockBase that are actually instantiated.
Values of this enumeration are kept in the SubclassID field of the VPBlockBase objects. They are used for concrete type identification.
|
virtualdefault |
|
static |
Delete all blocks reachable from a given VPBlockBase, inclusive.
Definition at line 105 of file VPlan.cpp.
References assert(), CFG, llvm::BasicBlock::Create(), llvm::BranchInst::Create(), llvm::dbgs(), llvm::depth_first(), llvm::BasicBlock::getContext(), getExitBasicBlock(), getHierarchicalPredecessors(), llvm::Value::getName(), getName(), llvm::BasicBlock::getParent(), getSuccessors(), llvm::BasicBlock::getTerminator(), llvm::VPTransformState::CFGState::LastBB, LLVM_DEBUG, llvm::VPTransformState::CFGState::PrevBB, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::VPTransformState::CFGState::VPBB2IRBB, and llvm::VPTransformState::CFGState::VPBBsToFix.
Referenced by llvm::VPlan::~VPlan().
|
pure virtual |
The method which generates the output IR that correspond to this VPBlockBase, thereby "executing" the VPlan.
Implemented in llvm::VPRegionBlock, and llvm::VPBasicBlock.
|
inline |
Definition at line 488 of file VPlan.h.
Referenced by llvm::VPBasicBlock::execute(), and llvm::VPlanHCFGTransforms::VPInstructionsToVPRecipes().
VPBlockBase * VPBlockBase::getEnclosingBlockWithPredecessors | ( | ) |
Definition at line 97 of file VPlan.cpp.
References assert(), getEnclosingBlockWithPredecessors(), and llvm::VPRegionBlock::getEntry().
Referenced by getEnclosingBlockWithPredecessors().
VPBlockBase * VPBlockBase::getEnclosingBlockWithSuccessors | ( | ) |
An Enclosing Block of a block B is any block containing B, including B itself.
Definition at line 89 of file VPlan.cpp.
References assert(), getEnclosingBlockWithSuccessors(), and llvm::VPRegionBlock::getExit().
Referenced by getEnclosingBlockWithSuccessors().
const VPBasicBlock * VPBlockBase::getEntryBasicBlock | ( | ) | const |
Definition at line 60 of file VPlan.cpp.
References llvm::RegionBase< Tr >::getEntry().
Referenced by llvm::VPlan::execute().
VPBasicBlock * VPBlockBase::getEntryBasicBlock | ( | ) |
Definition at line 67 of file VPlan.cpp.
References llvm::RegionBase< Tr >::getEntry().
const VPBasicBlock * VPBlockBase::getExitBasicBlock | ( | ) | const |
Definition at line 75 of file VPlan.cpp.
References llvm::RegionBase< Tr >::getExit().
Referenced by deleteCFG(), llvm::VPBasicBlock::execute(), and llvm::VPlan::execute().
VPBasicBlock * VPBlockBase::getExitBasicBlock | ( | ) |
Definition at line 82 of file VPlan.cpp.
References llvm::RegionBase< Tr >::getExit().
|
inline |
Definition at line 477 of file VPlan.h.
References getPredecessors().
Referenced by deleteCFG().
|
inline |
Definition at line 461 of file VPlan.h.
References getSuccessors().
Referenced by llvm::VPlan::execute().
|
inline |
Definition at line 397 of file VPlan.h.
References Name.
Referenced by deleteCFG(), llvm::VPBasicBlock::execute(), and llvm::VPlan::execute().
|
inline |
Definition at line 442 of file VPlan.h.
References llvm::SmallVectorBase::size().
Referenced by verifyRegion().
|
inline |
Definition at line 441 of file VPlan.h.
References llvm::SmallVectorBase::size().
Referenced by llvm::VPBlockUtils::connectBlocks(), and verifyRegion().
|
inline |
Definition at line 406 of file VPlan.h.
Referenced by llvm::VPBlockUtils::connectBlocks(), llvm::VPRecipeBase::eraseFromParent(), llvm::VPBlockUtils::insertBlockAfter(), llvm::VPBlockUtils::insertTwoBlocksAfter(), and llvm::VPlanVerifier::verifyHierarchicalCFG().
|
inline |
|
inline |
Definition at line 426 of file VPlan.h.
Referenced by llvm::GraphTraits< Inverse< VPBlockBase * > >::child_begin(), llvm::GraphTraits< Inverse< VPBlockBase * > >::child_end(), llvm::VPBasicBlock::execute(), getHierarchicalPredecessors(), llvm::VPRegionBlock::setEntry(), and llvm::VPRegionBlock::VPRegionBlock().
|
inline |
|
inline |
Definition at line 483 of file VPlan.h.
References getSinglePredecessor().
Referenced by llvm::VPBasicBlock::execute().
|
inline |
Definition at line 467 of file VPlan.h.
References getSingleSuccessor().
Referenced by llvm::VPBasicBlock::execute().
|
inline |
Definition at line 437 of file VPlan.h.
References llvm::SmallVectorTemplateCommon< T >::begin(), and llvm::SmallVectorBase::size().
Referenced by getSingleHierarchicalPredecessor().
|
inline |
Definition at line 431 of file VPlan.h.
References llvm::SmallVectorTemplateCommon< T >::begin(), and llvm::SmallVectorBase::size().
Referenced by getSingleHierarchicalSuccessor(), and llvm::VPRecipeBuilder::tryToCreateRecipe().
|
inline |
Definition at line 423 of file VPlan.h.
Referenced by llvm::GraphTraits< VPBlockBase * >::child_begin(), llvm::GraphTraits< const VPBlockBase * >::child_begin(), llvm::GraphTraits< VPBlockBase * >::child_end(), llvm::GraphTraits< const VPBlockBase * >::child_end(), deleteCFG(), llvm::VPlan::execute(), getHierarchicalSuccessors(), llvm::VPRecipeBuilder::handleReplication(), llvm::VPBlockUtils::insertBlockAfter(), llvm::VPBlockUtils::insertTwoBlocksAfter(), llvm::VPRegionBlock::setExit(), and llvm::VPRegionBlock::VPRegionBlock().
|
inline |
|
inline |
Definition at line 404 of file VPlan.h.
Referenced by llvm::VPBasicBlock::classof(), and llvm::VPRegionBlock::classof().
|
inline |
|
inline |
Definition at line 535 of file VPlan.h.
Referenced by llvm::VPInstruction::print().
|
inline |
Definition at line 531 of file VPlan.h.
References getName().
Referenced by llvm::VPInstruction::print().
|
inline |
Definition at line 492 of file VPlan.h.
Referenced by llvm::VPlanHCFGTransforms::VPInstructionsToVPRecipes().
Definition at line 399 of file VPlan.h.
References llvm::Twine::str().
Referenced by llvm::VPRecipeBuilder::tryToCreateRecipe().
|
inline |
Set a given VPBlockBase Successor
as the single successor of this VPBlockBase.
This VPBlockBase is not added as predecessor of Successor
. This VPBlockBase must have no successors.
Definition at line 497 of file VPlan.h.
References assert(), and llvm::SmallVectorBase::empty().
Referenced by llvm::VPBlockUtils::insertBlockAfter().
|
inline |
Definition at line 409 of file VPlan.h.
References P.
Referenced by llvm::VPBlockUtils::insertBlockAfter(), llvm::VPBlockUtils::insertTwoBlocksAfter(), llvm::VPRegionBlock::setEntry(), llvm::VPRegionBlock::setExit(), and llvm::VPRegionBlock::VPRegionBlock().
|
inline |
Set each VPBasicBlock in NewPreds
as predecessor of this VPBlockBase.
This VPBlockBase must have no predecessors. This VPBlockBase is not added as successor of any VPBasicBlock in NewPreds
.
Definition at line 518 of file VPlan.h.
References assert(), and llvm::SmallVectorBase::empty().
Referenced by llvm::VPBlockUtils::insertBlockAfter(), and llvm::VPBlockUtils::insertTwoBlocksAfter().
|
inline |
Set two given VPBlockBases IfTrue
and IfFalse
to be the two successors of this VPBlockBase.
Condition
is set as the successor selector. This VPBlockBase is not added as predecessor of IfTrue
or IfFalse
. This VPBlockBase must have no successors.
Definition at line 506 of file VPlan.h.
References assert(), and llvm::SmallVectorBase::empty().
Referenced by llvm::VPBlockUtils::insertTwoBlocksAfter().
|
friend |