class VPBlockBase
Declaration
class VPBlockBase { /* full declaration omitted */ };
Description
VPBlockBase is the building block of the Hierarchical Control-Flow Graph. A VPBlockBase can be either a VPBasicBlock or a VPRegionBlock.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:343
Method Overview
- protected VPBlockBase(const unsigned char SC, const std::string & N)
- public void clearPredecessors()
- public void clearSuccessors()
- public static void deleteCFG(llvm::VPBlockBase * Entry)
- public virtual void execute(struct VPTransformState * State)
- public llvm::VPValue * getCondBit()
- public const llvm::VPValue * getCondBit() const
- public llvm::VPBlockBase * getEnclosingBlockWithPredecessors()
- public llvm::VPBlockBase * getEnclosingBlockWithSuccessors()
- public const llvm::VPBasicBlock * getEntryBasicBlock() const
- public llvm::VPBasicBlock * getEntryBasicBlock()
- public const llvm::VPBasicBlock * getExitBasicBlock() const
- public llvm::VPBasicBlock * getExitBasicBlock()
- public const llvm::VPBlockBase::VPBlocksTy & getHierarchicalPredecessors()
- public const llvm::VPBlockBase::VPBlocksTy & getHierarchicalSuccessors()
- public const std::string & getName() const
- public size_t getNumPredecessors() const
- public size_t getNumSuccessors() const
- public const llvm::VPRegionBlock * getParent() const
- public llvm::VPRegionBlock * getParent()
- public llvm::VPBlockBase::VPBlocksTy & getPredecessors()
- public const llvm::VPBlockBase::VPBlocksTy & getPredecessors() const
- public const llvm::VPValue * getPredicate() const
- public llvm::VPValue * getPredicate()
- public llvm::VPBlockBase * getSingleHierarchicalPredecessor()
- public llvm::VPBlockBase * getSingleHierarchicalSuccessor()
- public llvm::VPBlockBase * getSinglePredecessor() const
- public llvm::VPBlockBase * getSingleSuccessor() const
- public llvm::VPBlockBase::VPBlocksTy & getSuccessors()
- public const llvm::VPBlockBase::VPBlocksTy & getSuccessors() const
- public unsigned int getVPBlockID() const
- public bool isLegalToHoistInto()
- public void print(llvm::raw_ostream & OS) const
- public void printAsOperand(llvm::raw_ostream & OS, bool PrintType) const
- public void setCondBit(llvm::VPValue * CV)
- public void setName(const llvm::Twine & newName)
- public void setOneSuccessor(llvm::VPBlockBase * Successor)
- public void setParent(llvm::VPRegionBlock * P)
- public void setPredecessors(ArrayRef<llvm::VPBlockBase *> NewPreds)
- public void setPredicate(llvm::VPValue * Pred)
- public void setTwoSuccessors(llvm::VPBlockBase * IfTrue, llvm::VPBlockBase * IfFalse, llvm::VPValue * Condition)
- public virtual ~VPBlockBase()
Methods
¶VPBlockBase(const unsigned char SC,
const std::string& N)
VPBlockBase(const unsigned char SC,
const std::string& N)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:395
Parameters
- const unsigned char SC
- const std::string& N
¶void clearPredecessors()
void clearPredecessors()
Description
Remove all the predecessor of this block.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:543
¶void clearSuccessors()
void clearSuccessors()
Description
Remove all the successors of this block and set to null its condition bit
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:546
¶static void deleteCFG(llvm::VPBlockBase* Entry)
static void deleteCFG(llvm::VPBlockBase* Entry)
Description
Delete all blocks reachable from a given VPBlockBase, inclusive.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:556
Parameters
- llvm::VPBlockBase* Entry
¶virtual void execute(
struct VPTransformState* State)
virtual void execute(
struct VPTransformState* State)
Description
The method which generates the output IR that correspond to this VPBlockBase, thereby "executing" the VPlan.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:553
Parameters
- struct VPTransformState* State
¶llvm::VPValue* getCondBit()
llvm::VPValue* getCondBit()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:500
Returns
the condition bit selecting the successor.
¶const llvm::VPValue* getCondBit() const
const llvm::VPValue* getCondBit() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:502
¶llvm::VPBlockBase*
getEnclosingBlockWithPredecessors()
llvm::VPBlockBase*
getEnclosingBlockWithPredecessors()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:465
Returns
the root enclosing block if all enclosing blocks have no predecessors.
¶llvm::VPBlockBase*
getEnclosingBlockWithSuccessors()
llvm::VPBlockBase*
getEnclosingBlockWithSuccessors()
Description
An Enclosing Block of a block B is any block containing B, including B itself.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:460
Returns
the root enclosing block if all enclosing blocks have no successors.
¶const llvm::VPBasicBlock* getEntryBasicBlock()
const
const llvm::VPBasicBlock* getEntryBasicBlock()
const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:426
Returns
the VPBasicBlock that is the entry of this VPBlockBase, recursively, if the latter is a VPRegionBlock. Otherwise, if this VPBlockBase is a VPBasicBlock, it is returned.
¶llvm::VPBasicBlock* getEntryBasicBlock()
llvm::VPBasicBlock* getEntryBasicBlock()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:427
¶const llvm::VPBasicBlock* getExitBasicBlock()
const
const llvm::VPBasicBlock* getExitBasicBlock()
const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:432
Returns
the VPBasicBlock that is the exit of this VPBlockBase, recursively, if the latter is a VPRegionBlock. Otherwise, if this VPBlockBase is a VPBasicBlock, it is returned.
¶llvm::VPBasicBlock* getExitBasicBlock()
llvm::VPBasicBlock* getExitBasicBlock()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:433
¶const llvm::VPBlockBase::VPBlocksTy&
getHierarchicalPredecessors()
const llvm::VPBlockBase::VPBlocksTy&
getHierarchicalPredecessors()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:489
Returns
the predecessors either attached directly to this VPBlockBase or, if this VPBlockBase is the entry block of a VPRegionBlock and has no predecessors of its own, search recursively for the first enclosing VPRegionBlock that has predecessors and return them. If no such VPRegionBlock exists, return the (empty) predecessors of the topmost VPBlockBase reached.
¶const llvm::VPBlockBase::VPBlocksTy&
getHierarchicalSuccessors()
const llvm::VPBlockBase::VPBlocksTy&
getHierarchicalSuccessors()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:473
Returns
the successors either attached directly to this VPBlockBase or, if this VPBlockBase is the exit block of a VPRegionBlock and has no successors of its own, search recursively for the first enclosing VPRegionBlock that has successors and return them. If no such VPRegionBlock exists, return the (empty) successors of the topmost VPBlockBase reached.
¶const std::string& getName() const
const std::string& getName() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:409
¶size_t getNumPredecessors() const
size_t getNumPredecessors() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:454
¶size_t getNumSuccessors() const
size_t getNumSuccessors() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:453
¶const llvm::VPRegionBlock* getParent() const
const llvm::VPRegionBlock* getParent() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:419
¶llvm::VPRegionBlock* getParent()
llvm::VPRegionBlock* getParent()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:418
¶llvm::VPBlockBase::VPBlocksTy& getPredecessors()
llvm::VPBlockBase::VPBlocksTy& getPredecessors()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:439
¶const llvm::VPBlockBase::VPBlocksTy&
getPredecessors() const
const llvm::VPBlockBase::VPBlocksTy&
getPredecessors() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:438
¶const llvm::VPValue* getPredicate() const
const llvm::VPValue* getPredicate() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:508
¶llvm::VPValue* getPredicate()
llvm::VPValue* getPredicate()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:506
¶llvm::VPBlockBase*
getSingleHierarchicalPredecessor()
llvm::VPBlockBase*
getSingleHierarchicalPredecessor()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:495
Returns
the hierarchical predecessor of this VPBlockBase if it has a single hierarchical predecessor. Otherwise return a null pointer.
¶llvm::VPBlockBase*
getSingleHierarchicalSuccessor()
llvm::VPBlockBase*
getSingleHierarchicalSuccessor()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:479
Returns
the hierarchical successor of this VPBlockBase if it has a single hierarchical successor. Otherwise return a null pointer.
¶llvm::VPBlockBase* getSinglePredecessor() const
llvm::VPBlockBase* getSinglePredecessor() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:449
Returns
the predecessor of this VPBlockBase if it has a single predecessor. Otherwise return a null pointer.
¶llvm::VPBlockBase* getSingleSuccessor() const
llvm::VPBlockBase* getSingleSuccessor() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:443
Returns
the successor of this VPBlockBase if it has a single successor. Otherwise return a null pointer.
¶llvm::VPBlockBase::VPBlocksTy& getSuccessors()
llvm::VPBlockBase::VPBlocksTy& getSuccessors()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:436
¶const llvm::VPBlockBase::VPBlocksTy&
getSuccessors() const
const llvm::VPBlockBase::VPBlocksTy&
getSuccessors() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:435
¶unsigned int getVPBlockID() const
unsigned int getVPBlockID() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:416
Returns
an ID for the concrete type of this object. This is used to implement the classof checks. This should not be used for any other purpose, as the values may change as LLVM evolves.
¶bool isLegalToHoistInto()
bool isLegalToHoistInto()
Description
Return true if it is legal to hoist instructions into this block.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:569
¶void print(llvm::raw_ostream& OS) const
void print(llvm::raw_ostream& OS) const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:562
Parameters
¶void printAsOperand(llvm::raw_ostream& OS,
bool PrintType) const
void printAsOperand(llvm::raw_ostream& OS,
bool PrintType) const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:558
Parameters
- llvm::raw_ostream& OS
- bool PrintType
¶void setCondBit(llvm::VPValue* CV)
void setCondBit(llvm::VPValue* CV)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:504
Parameters
- llvm::VPValue* CV
¶void setName(const llvm::Twine& newName)
void setName(const llvm::Twine& newName)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:411
Parameters
- const llvm::Twine& newName
¶void setOneSuccessor(llvm::VPBlockBase* Successor)
void setOneSuccessor(llvm::VPBlockBase* Successor)
Description
Set a given VPBlockBase \p Successor as the single successor of this VPBlockBase. This VPBlockBase is not added as predecessor of \p Successor. This VPBlockBase must have no successors.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:515
Parameters
- llvm::VPBlockBase* Successor
¶void setParent(llvm::VPRegionBlock* P)
void setParent(llvm::VPRegionBlock* P)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:421
Parameters
¶void setPredecessors(
ArrayRef<llvm::VPBlockBase*> NewPreds)
void setPredecessors(
ArrayRef<llvm::VPBlockBase*> NewPreds)
Description
Set each VPBasicBlock in \p NewPreds as predecessor of this VPBlockBase. This VPBlockBase must have no predecessors. This VPBlockBase is not added as successor of any VPBasicBlock in \p NewPreds.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:536
Parameters
- ArrayRef<llvm::VPBlockBase*> NewPreds
¶void setPredicate(llvm::VPValue* Pred)
void setPredicate(llvm::VPValue* Pred)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:510
Parameters
- llvm::VPValue* Pred
¶void setTwoSuccessors(llvm::VPBlockBase* IfTrue,
llvm::VPBlockBase* IfFalse,
llvm::VPValue* Condition)
void setTwoSuccessors(llvm::VPBlockBase* IfTrue,
llvm::VPBlockBase* IfFalse,
llvm::VPValue* Condition)
Description
Set two given VPBlockBases \p IfTrue and \p IfFalse to be the two successors of this VPBlockBase. \p Condition is set as the successor selector. This VPBlockBase is not added as predecessor of \p IfTrue or \p IfFalse. This VPBlockBase must have no successors.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:524
Parameters
- llvm::VPBlockBase* IfTrue
- llvm::VPBlockBase* IfFalse
- llvm::VPValue* Condition
¶virtual ~VPBlockBase()
virtual ~VPBlockBase()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:407