LLVM: llvm::VPIRBasicBlock Class Reference (original) (raw)
A special type of VPBasicBlock that wraps an existing IR basic block. More...
#include "[Transforms/Vectorize/VPlan.h](VPlan%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| ~VPIRBasicBlock () override=default | |
| void | execute (VPTransformState *State) override |
| The method which generates the output IR instructions that correspond to this VPBasicBlock, thereby "executing" the VPlan. | |
| VPIRBasicBlock * | clone () override |
| Clone the current block and it's recipes, without updating the operands of the cloned recipes. | |
| BasicBlock * | getIRBasicBlock () const |
| Public Member Functions inherited from llvm::VPBasicBlock | |
| ~VPBasicBlock () override | |
| iterator | begin () |
| Recipe iterator methods. | |
| const_iterator | begin () const |
| iterator | end () |
| const_iterator | end () const |
| reverse_iterator | rbegin () |
| const_reverse_iterator | rbegin () const |
| reverse_iterator | rend () |
| const_reverse_iterator | rend () const |
| size_t | size () const |
| bool | empty () const |
| const VPRecipeBase & | front () const |
| VPRecipeBase & | front () |
| const VPRecipeBase & | back () const |
| VPRecipeBase & | back () |
| RecipeListTy & | getRecipeList () |
| Returns a reference to the list of recipes. | |
| void | insert (VPRecipeBase *Recipe, iterator InsertPt) |
| void | appendRecipe (VPRecipeBase *Recipe) |
| Augment the existing recipes of a VPBasicBlock with an additional Recipe as the last recipe. | |
| InstructionCost | cost (ElementCount VF, VPCostContext &Ctx) override |
| Return the cost of this VPBasicBlock. | |
| iterator | getFirstNonPhi () |
| Return the position of the first non-phi node recipe in the block. | |
| iterator_range< iterator > | phis () |
| Returns an iterator range over the PHI-like recipes in the block. | |
| VPBasicBlock * | splitAt (iterator SplitAt) |
| Split current block at SplitAt by inserting a new block between the current block and its successors and moving all recipes starting at SplitAt to the new block. | |
| VPRegionBlock * | getEnclosingLoopRegion () |
| const VPRegionBlock * | getEnclosingLoopRegion () const |
| void | print (raw_ostream &O, const Twine &Indent, VPSlotTracker &SlotTracker) const override |
| Print this VPBsicBlock to O, prefixing all lines with Indent. | |
| VPRecipeBase * | getTerminator () |
| If the block has multiple successors, return the branch recipe terminating the block. | |
| const VPRecipeBase * | getTerminator () const |
| bool | isExiting () const |
| Returns true if the block is exiting it's parent region. | |
| const VPBasicBlock * | getCFGPredecessor (unsigned Idx) const |
| Returns the predecessor block at index Idx with the predecessors as per the corresponding plain CFG. | |
| void | print (raw_ostream &O) const |
| Print plain-text dump of this VPlan to O. | |
| Public Member Functions inherited from llvm::VPBlockBase | |
| virtual | ~VPBlockBase ()=default |
| const std::string & | getName () const |
| void | setName (const Twine &newName) |
| unsigned | getVPBlockID () const |
| VPRegionBlock * | getParent () |
| const VPRegionBlock * | getParent () const |
| VPlan * | getPlan () |
| const VPlan * | getPlan () const |
| void | setPlan (VPlan *ParentPlan) |
| Sets the pointer of the plan containing the block. | |
| void | setParent (VPRegionBlock *P) |
| const VPBasicBlock * | getEntryBasicBlock () const |
| VPBasicBlock * | getEntryBasicBlock () |
| const VPBasicBlock * | getExitingBasicBlock () const |
| VPBasicBlock * | getExitingBasicBlock () |
| const VPBlocksTy & | getSuccessors () const |
| VPBlocksTy & | getSuccessors () |
| iterator_range< VPBlockBase ** > | successors () |
| iterator_range< VPBlockBase ** > | predecessors () |
| const VPBlocksTy & | getPredecessors () const |
| VPBlocksTy & | getPredecessors () |
| VPBlockBase * | getSingleSuccessor () const |
| VPBlockBase * | getSinglePredecessor () const |
| size_t | getNumSuccessors () const |
| size_t | getNumPredecessors () const |
| bool | hasPredecessors () const |
| Returns true if this block has any predecessors. | |
| VPBlockBase * | getEnclosingBlockWithSuccessors () |
| An Enclosing Block of a block B is any block containing B, including B itself. | |
| VPBlockBase * | getEnclosingBlockWithPredecessors () |
| const VPBlocksTy & | getHierarchicalSuccessors () |
| VPBlockBase * | getSingleHierarchicalSuccessor () |
| const VPBlocksTy & | getHierarchicalPredecessors () |
| VPBlockBase * | getSingleHierarchicalPredecessor () |
| void | setOneSuccessor (VPBlockBase *Successor) |
| Set a given VPBlockBase Successor as the single successor of this VPBlockBase. | |
| void | setTwoSuccessors (VPBlockBase *IfTrue, VPBlockBase *IfFalse) |
| Set two given VPBlockBases IfTrue and IfFalse to be the two successors of this VPBlockBase. | |
| void | setPredecessors (ArrayRef< VPBlockBase * > NewPreds) |
| Set each VPBasicBlock in NewPreds as predecessor of this VPBlockBase. | |
| void | setSuccessors (ArrayRef< VPBlockBase * > NewSuccs) |
| Set each VPBasicBlock in NewSuccss as successor of this VPBlockBase. | |
| void | clearPredecessors () |
| Remove all the predecessor of this block. | |
| void | clearSuccessors () |
| Remove all the successors of this block. | |
| void | swapPredecessors () |
| Swap predecessors of the block. | |
| void | swapSuccessors () |
| Swap successors of the block. The block must have exactly 2 successors. | |
| unsigned | getIndexForPredecessor (const VPBlockBase *Pred) const |
| Returns the index for Pred in the blocks predecessors list. | |
| unsigned | getIndexForSuccessor (const VPBlockBase *Succ) const |
| Returns the index for Succ in the blocks successor list. | |
| void | printAsOperand (raw_ostream &OS, bool PrintType=false) const |
| void | print (raw_ostream &O) const |
| Print plain-text dump of this VPlan to O. | |
| void | printSuccessors (raw_ostream &O, const Twine &Indent) const |
| Print the successors of this block to O, prefixing all lines with Indent. | |
| LLVM_DUMP_METHOD void | dump () const |
| Dump this VPBlockBase to dbgs(). |
| Static Public Member Functions | |
|---|---|
| static bool | classof (const VPBlockBase *V) |
| Static Public Member Functions inherited from llvm::VPBasicBlock | |
| static RecipeListTy VPBasicBlock::* | getSublistAccess (VPRecipeBase *) |
| Returns a pointer to a member of the recipe list. | |
| static bool | classof (const VPBlockBase *V) |
| Method to support type inquiry through isa, cast, and dyn_cast. |
| Additional Inherited Members | |
|---|---|
| Public Types inherited from llvm::VPBasicBlock | |
| using | RecipeListTy = iplist<VPRecipeBase> |
| using | iterator = RecipeListTy::iterator |
| Instruction iterators... | |
| using | const_iterator = RecipeListTy::const_iterator |
| using | reverse_iterator = RecipeListTy::reverse_iterator |
| using | const_reverse_iterator = RecipeListTy::const_reverse_iterator |
| Public Types inherited from llvm::VPBlockBase | |
| using | VPBlockTy = enum { VPRegionBlockSC, VPBasicBlockSC, VPIRBasicBlockSC } |
| An enumeration for keeping track of the concrete subclass of VPBlockBase that are actually instantiated. | |
| using | VPBlocksTy = SmallVectorImpl<VPBlockBase *> |
| Protected Member Functions inherited from llvm::VPBasicBlock | |
| VPBasicBlock (const unsigned char BlockSC, const Twine &Name="") | |
| void | executeRecipes (VPTransformState *State, BasicBlock *BB) |
| Execute the recipes in the IR basic block BB. | |
| void | connectToPredecessors (VPTransformState &State) |
| Connect the VPBBs predecessors' in the VPlan CFG to the IR basic block generated for this VPBB. | |
| Protected Member Functions inherited from llvm::VPBlockBase | |
| VPBlockBase (const unsigned char SC, const std::string &N) | |
| Protected Attributes inherited from llvm::VPBasicBlock | |
| RecipeListTy | Recipes |
| The VPRecipes held in the order of output instructions to generate. |
A special type of VPBasicBlock that wraps an existing IR basic block.
Recipes of the block get added before the first non-phi instruction in the wrapped block. Note: At the moment, VPIRBasicBlock can only be used to wrap VPlan's preheader block.
Definition at line 4119 of file VPlan.h.
| llvm::VPIRBasicBlock::~VPIRBasicBlock ( ) | overridedefault |
|---|
◆ classof()
◆ clone()
◆ execute()
The method which generates the output IR instructions that correspond to this VPBasicBlock, thereby "executing" the VPlan.
Reimplemented from llvm::VPBasicBlock.
Definition at line 446 of file VPlan.cpp.
References assert(), llvm::VPBasicBlock::connectToPredecessors(), llvm::VPBasicBlock::executeRecipes(), llvm::VPBlockBase::getHierarchicalSuccessors(), llvm::VPBlockBase::getNumSuccessors(), llvm::VPBlockBase::getSingleSuccessor(), llvm::isa(), llvm::VPBasicBlock::size(), llvm::succ_begin(), and llvm::succ_end().
◆ getIRBasicBlock()
| BasicBlock * llvm::VPIRBasicBlock::getIRBasicBlock ( ) const | inline |
|---|
◆ VPlan
The documentation for this class was generated from the following files: