LLVM: llvm::VPIRBasicBlock Class Reference (original) (raw)
Public Member Functions
~VPIRBasicBlock () override
void
execute (VPTransformState *State) override
The method which generates the output IR instructions that correspond to this VPBasicBlock, thereby "executing" the VPlan.
clone () override
Clone the current block and it's recipes, without updating the operands of the cloned recipes.
Public Member Functions inherited from llvm::VPBasicBlock
~VPBasicBlock () override
begin ()
Recipe iterator methods.
end ()
rbegin ()
rend ()
size_t
front ()
back ()
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.
void
execute (VPTransformState *State) override
The method which generates the output IR instructions that correspond to this VPBasicBlock, thereby "executing" the VPlan.
cost (ElementCount VF, VPCostContext &Ctx) override
Return the cost of this VPBasicBlock.
Return the position of the first non-phi node recipe in the block.
phis ()
Returns an iterator range over the PHI-like recipes in the block.
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.
getEnclosingLoopRegion () const
void
print (raw_ostream &O, const Twine &Indent, VPSlotTracker &SlotTracker) const override
Print this VPBsicBlock to O
, prefixing all lines with Indent
.
If the block has multiple successors, return the branch recipe terminating the block.
Returns true if the block is exiting it's parent region.
clone () override
Clone the current block and it's recipes, without updating the operands of the cloned recipes.
virtual void
print (raw_ostream &O, const Twine &Indent, VPSlotTracker &SlotTracker) const=0
Print plain-text dump of this VPBlockBase to O
, prefixing all lines with Indent
.
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 &
void
setName (const Twine &newName)
getParent ()
VPlan *
getPlan ()
void
Sets the pointer of the plan containing the block.
void
iterator_range< VPBlockBase ** >
successors ()
iterator_range< VPBlockBase ** >
predecessors ()
size_t
size_t
getEnclosingBlockWithSuccessors ()
An Enclosing Block of a block B is any block containing B, including B itself.
getEnclosingBlockWithPredecessors ()
getSingleHierarchicalSuccessor ()
getHierarchicalPredecessors ()
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
Remove all the predecessor of this block.
void
Remove all the successors of this block.
void
Swap successors of the block. The block must have exactly 2 successors.
virtual void
execute (VPTransformState *State)=0
The method which generates the output IR that correspond to this VPBlockBase, thereby "executing" the VPlan.
virtual InstructionCost
cost (ElementCount VF, VPCostContext &Ctx)=0
Return the cost of the block.
Return true if it is legal to hoist instructions into this block.
void
printAsOperand (raw_ostream &OS, bool PrintType=false) const
virtual void
print (raw_ostream &O, const Twine &Indent, VPSlotTracker &SlotTracker) const =0
Print plain-text dump of this VPBlockBase to O
, prefixing all lines with Indent
.
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 this VPBlockBase to dbgs().
virtual VPBlockBase *
clone ()=0
Clone the current block and it's recipes without updating the operands of the cloned recipes, including all blocks in the single-entry single-exit region for VPRegionBlocks.
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.