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.

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.

void

execute (VPTransformState *State) override

The method which generates the output IR instructions that correspond to this VPBasicBlock, thereby "executing" the VPlan.

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.

VPBasicBlock *

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 &

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

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

swapSuccessors ()

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.

bool

isLegalToHoistInto ()

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 () const

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.

Definition at line 3678 of file VPlan.h.