class VPBasicBlock
Declaration
class VPBasicBlock : public VPBlockBase { /* full declaration omitted */ };
Description
VPBasicBlock serves as the leaf of the Hierarchical Control-Flow Graph. It holds a sequence of zero or more VPRecipe's each representing a sequence of output IR instructions. All PHI-like recipes must come before any non-PHI recipes.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2019
Inherits from: VPBlockBase
Member Variables
- private llvm::VPBasicBlock::RecipeListTy Recipes
- The VPRecipes held in the order of output instructions to generate.
Method Overview
- public VPBasicBlock(const llvm::Twine & Name = "", llvm::VPRecipeBase * Recipe = nullptr)
- public void appendRecipe(llvm::VPRecipeBase * Recipe)
- public inline llvm::VPRecipeBase & back()
- public inline const llvm::VPRecipeBase & back() const
- public inline llvm::VPBasicBlock::iterator begin()
- public inline llvm::VPBasicBlock::const_iterator begin() const
- public static inline bool classof(const llvm::VPBlockBase * V)
- private llvm::BasicBlock * createEmptyBasicBlock(VPTransformState::CFGState & CFG)
- public void dropAllReferences(llvm::VPValue * NewValue)
- public inline bool empty() const
- public inline llvm::VPBasicBlock::const_iterator end() const
- public inline llvm::VPBasicBlock::iterator end()
- public void execute(struct VPTransformState * State)
- public inline const llvm::VPRecipeBase & front() const
- public inline llvm::VPRecipeBase & front()
- public llvm::VPRegionBlock * getEnclosingLoopRegion()
- public llvm::VPBasicBlock::iterator getFirstNonPhi()
- public llvm::VPBasicBlock::RecipeListTy & getRecipeList()
- public static llvm::VPBasicBlock::RecipeListTy llvm::VPBasicBlock::* getSublistAccess(llvm::VPRecipeBase *)
- public llvm::VPRecipeBase * getTerminator()
- public const llvm::VPRecipeBase * getTerminator() const
- public void insert(llvm::VPRecipeBase * Recipe, llvm::VPBasicBlock::iterator InsertPt)
- public bool isExiting() const
- public iterator_range<llvm::VPBasicBlock::iterator> phis()
- public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
- public inline llvm::VPBasicBlock::const_reverse_iterator rbegin() const
- public inline llvm::VPBasicBlock::reverse_iterator rbegin()
- public inline llvm::VPBasicBlock::const_reverse_iterator rend() const
- public inline llvm::VPBasicBlock::reverse_iterator rend()
- public inline size_t size() const
- public llvm::VPBasicBlock * splitAt(llvm::VPBasicBlock::iterator SplitAt)
- public ~VPBasicBlock()
Inherited from VPBlockBase:
- public clearPredecessors
- public clearSuccessors
- public deleteCFG
- public dropAllReferences
- public dump
- public execute
- public getEnclosingBlockWithPredecessors
- public getEnclosingBlockWithSuccessors
- public getEntryBasicBlock
- public getEntryBasicBlock
- public getExitingBasicBlock
- public getExitingBasicBlock
- public getHierarchicalPredecessors
- public getHierarchicalSuccessors
- public getName
- public getNumPredecessors
- public getNumSuccessors
- public getParent
- public getParent
- public getPlan
- public getPlan
- public getPredecessors
- public getPredecessors
- public getSingleHierarchicalPredecessor
- public getSingleHierarchicalSuccessor
- public getSinglePredecessor
- public getSingleSuccessor
- public getSuccessors
- public getSuccessors
- public getVPBlockID
- public isLegalToHoistInto
- public print
- public print
- public printAsOperand
- public printSuccessors
- public setName
- public setOneSuccessor
- public setParent
- public setPlan
- public setPredecessors
- public setTwoSuccessors
- public successors
Methods
¶VPBasicBlock(const llvm::Twine& Name = "",
llvm::VPRecipeBase* Recipe = nullptr)
VPBasicBlock(const llvm::Twine& Name = "",
llvm::VPRecipeBase* Recipe = nullptr)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2028
Parameters
- const llvm::Twine& Name = ""
- llvm::VPRecipeBase* Recipe = nullptr
¶void appendRecipe(llvm::VPRecipeBase* Recipe)
void appendRecipe(llvm::VPRecipeBase* Recipe)
Description
Augment the existing recipes of a VPBasicBlock with an additional\p Recipe as the last recipe.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2087
Parameters
- llvm::VPRecipeBase* Recipe
¶inline llvm::VPRecipeBase& back()
inline llvm::VPRecipeBase& back()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2063
¶inline const llvm::VPRecipeBase& back() const
inline const llvm::VPRecipeBase& back() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2062
¶inline llvm::VPBasicBlock::iterator begin()
inline llvm::VPBasicBlock::iterator begin()
Description
Recipe iterator methods
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2048
¶inline llvm::VPBasicBlock::const_iterator begin()
const
inline llvm::VPBasicBlock::const_iterator begin()
const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2049
¶static inline bool classof(
const llvm::VPBlockBase* V)
static inline bool classof(
const llvm::VPBlockBase* V)
Description
Method to support type inquiry through isa, cast, and dyn_cast.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2074
Parameters
- const llvm::VPBlockBase* V
¶llvm::BasicBlock* createEmptyBasicBlock(
VPTransformState::CFGState& CFG)
llvm::BasicBlock* createEmptyBasicBlock(
VPTransformState::CFGState& CFG)
Description
Create an IR BasicBlock to hold the output instructions generated by this VPBasicBlock, and return it. Update the CFGState accordingly.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2132
Parameters
¶void dropAllReferences(llvm::VPValue* NewValue)
void dropAllReferences(llvm::VPValue* NewValue)
Description
Replace all operands of VPUsers in the block with \p NewValue and also replaces all uses of VPValues defined in the block with NewValue.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2101
Parameters
- llvm::VPValue* NewValue
¶inline bool empty() const
inline bool empty() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2059
¶inline llvm::VPBasicBlock::const_iterator end()
const
inline llvm::VPBasicBlock::const_iterator end()
const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2051
¶inline llvm::VPBasicBlock::iterator end()
inline llvm::VPBasicBlock::iterator end()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2050
¶void execute(struct VPTransformState* State)
void execute(struct VPTransformState* State)
Description
The method which generates the output IR instructions that correspond to this VPBasicBlock, thereby "executing" the VPlan.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2091
Parameters
- struct VPTransformState* State
¶inline const llvm::VPRecipeBase& front() const
inline const llvm::VPRecipeBase& front() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2060
¶inline llvm::VPRecipeBase& front()
inline llvm::VPRecipeBase& front()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2061
¶llvm::VPRegionBlock* getEnclosingLoopRegion()
llvm::VPRegionBlock* getEnclosingLoopRegion()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2108
¶llvm::VPBasicBlock::iterator getFirstNonPhi()
llvm::VPBasicBlock::iterator getFirstNonPhi()
Description
Return the position of the first non-phi node recipe in the block.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2094
¶llvm::VPBasicBlock::RecipeListTy& getRecipeList()
llvm::VPBasicBlock::RecipeListTy& getRecipeList()
Description
Returns a reference to the list of recipes.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2066
¶static llvm::VPBasicBlock::RecipeListTy
llvm::VPBasicBlock::*
getSublistAccess(llvm::VPRecipeBase*)
static llvm::VPBasicBlock::RecipeListTy
llvm::VPBasicBlock::*
getSublistAccess(llvm::VPRecipeBase*)
Description
Returns a pointer to a member of the recipe list.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2069
Parameters
¶llvm::VPRecipeBase* getTerminator()
llvm::VPRecipeBase* getTerminator()
Description
If the block has multiple successors, return the branch recipe terminating the block. If there are no or only a single successor, return nullptr;
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2123
¶const llvm::VPRecipeBase* getTerminator() const
const llvm::VPRecipeBase* getTerminator() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2124
¶void insert(llvm::VPRecipeBase* Recipe,
llvm::VPBasicBlock::iterator InsertPt)
void insert(llvm::VPRecipeBase* Recipe,
llvm::VPBasicBlock::iterator InsertPt)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2078
Parameters
- llvm::VPRecipeBase* Recipe
- llvm::VPBasicBlock::iterator InsertPt
¶bool isExiting() const
bool isExiting() const
Description
Returns true if the block is exiting it's parent region.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2127
¶iterator_range<llvm::VPBasicBlock::iterator>
phis()
iterator_range<llvm::VPBasicBlock::iterator>
phis()
Description
Returns an iterator range over the PHI-like recipes in the block.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2097
¶void print(llvm::raw_ostream& O,
const llvm::Twine& Indent,
llvm::VPSlotTracker& SlotTracker) const
void print(llvm::raw_ostream& O,
const llvm::Twine& Indent,
llvm::VPSlotTracker& SlotTracker) const
Description
Print this VPBsicBlock to \p O, prefixing all lines with \p Indent. \p SlotTracker is used to print unnamed VPValue's using consequtive numbers. Note that the numbering is applied to the whole VPlan, so printing individual blocks is consistent with the whole VPlan printing.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2116
Parameters
- llvm::raw_ostream& O
- const llvm::Twine& Indent
- llvm::VPSlotTracker& SlotTracker
¶inline llvm::VPBasicBlock::const_reverse_iterator
rbegin() const
inline llvm::VPBasicBlock::const_reverse_iterator
rbegin() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2054
¶inline llvm::VPBasicBlock::reverse_iterator
rbegin()
inline llvm::VPBasicBlock::reverse_iterator
rbegin()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2053
¶inline llvm::VPBasicBlock::const_reverse_iterator
rend() const
inline llvm::VPBasicBlock::const_reverse_iterator
rend() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2056
¶inline llvm::VPBasicBlock::reverse_iterator rend()
inline llvm::VPBasicBlock::reverse_iterator rend()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2055
¶inline size_t size() const
inline size_t size() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2058
¶llvm::VPBasicBlock* splitAt(
llvm::VPBasicBlock::iterator SplitAt)
llvm::VPBasicBlock* splitAt(
llvm::VPBasicBlock::iterator SplitAt)
Description
Split current block at \p SplitAt by inserting a new block between the current block and its successors and moving all recipes starting at SplitAt to the new block. Returns the new block.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2106
Parameters
- llvm::VPBasicBlock::iterator SplitAt
¶~VPBasicBlock()
~VPBasicBlock()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:2034