class VPRegionBlock
Declaration
class VPRegionBlock : public VPBlockBase { /* full declaration omitted */ };
Description
VPRegionBlock represents a collection of VPBasicBlocks and VPRegionBlocks which form a Single-Entry-Single-Exit subgraph of the output IR CFG. A VPRegionBlock may indicate that its contents are to be replicated several times. This is designed to support predicated scalarization, in which a scalar if-then code structure needs to be generated VF * UF times. Having this replication indicator helps to keep a single model for multiple candidate VF's. The actual replication takes place only once the desired VF and UF have been determined.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1146
Inherits from: VPBlockBase
Method Overview
- public VPRegionBlock(llvm::VPBlockBase * Entry, llvm::VPBlockBase * Exit, const std::string & Name = "", bool IsReplicator = false)
- public VPRegionBlock(const std::string & Name = "", bool IsReplicator = false)
- public static inline bool classof(const llvm::VPBlockBase * V)
- public void execute(struct VPTransformState * State)
- public llvm::VPBlockBase & front() const
- public const llvm::VPBlockBase * getEntry() const
- public llvm::VPBlockBase * getEntry()
- public const llvm::VPBlockBase * getExit() const
- public llvm::VPBlockBase * getExit()
- public bool isReplicator() const
- public void setEntry(llvm::VPBlockBase * EntryBlock)
- public void setExit(llvm::VPBlockBase * ExitBlock)
- public ~VPRegionBlock()
Inherited from VPBlockBase:
- public clearPredecessors
- public clearSuccessors
- public deleteCFG
- public execute
- public getCondBit
- public getCondBit
- public getEnclosingBlockWithPredecessors
- public getEnclosingBlockWithSuccessors
- public getEntryBasicBlock
- public getEntryBasicBlock
- public getExitBasicBlock
- public getExitBasicBlock
- public getHierarchicalPredecessors
- public getHierarchicalSuccessors
- public getName
- public getNumPredecessors
- public getNumSuccessors
- public getParent
- public getParent
- public getPredecessors
- public getPredecessors
- public getPredicate
- public getPredicate
- public getSingleHierarchicalPredecessor
- public getSingleHierarchicalSuccessor
- public getSinglePredecessor
- public getSingleSuccessor
- public getSuccessors
- public getSuccessors
- public getVPBlockID
- public isLegalToHoistInto
- public print
- public printAsOperand
- public setCondBit
- public setName
- public setOneSuccessor
- public setParent
- public setPredecessors
- public setPredicate
- public setTwoSuccessors
Methods
¶VPRegionBlock(llvm::VPBlockBase* Entry,
llvm::VPBlockBase* Exit,
const std::string& Name = "",
bool IsReplicator = false)
VPRegionBlock(llvm::VPBlockBase* Entry,
llvm::VPBlockBase* Exit,
const std::string& Name = "",
bool IsReplicator = false)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1159
Parameters
- llvm::VPBlockBase* Entry
- llvm::VPBlockBase* Exit
- const std::string& Name = ""
- bool IsReplicator = false
¶VPRegionBlock(const std::string& Name = "",
bool IsReplicator = false)
VPRegionBlock(const std::string& Name = "",
bool IsReplicator = false)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1168
Parameters
- const std::string& Name = ""
- bool IsReplicator = false
¶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:1178
Parameters
- const llvm::VPBlockBase* V
¶void execute(struct VPTransformState* State)
void execute(struct VPTransformState* State)
Description
The method which generates the output IR instructions that correspond to this VPRegionBlock, thereby "executing" the VPlan.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1218
Parameters
- struct VPTransformState* State
¶llvm::VPBlockBase& front() const
llvm::VPBlockBase& front() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1198
¶const llvm::VPBlockBase* getEntry() const
const llvm::VPBlockBase* getEntry() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1182
¶llvm::VPBlockBase* getEntry()
llvm::VPBlockBase* getEntry()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1183
¶const llvm::VPBlockBase* getExit() const
const llvm::VPBlockBase* getExit() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1200
¶llvm::VPBlockBase* getExit()
llvm::VPBlockBase* getExit()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1201
¶bool isReplicator() const
bool isReplicator() const
Description
An indicator whether this region is to generate multiple replicated instances of output IR corresponding to its VPBlockBases.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1214
¶void setEntry(llvm::VPBlockBase* EntryBlock)
void setEntry(llvm::VPBlockBase* EntryBlock)
Description
Set \p EntryBlock as the entry VPBlockBase of this VPRegionBlock. \p EntryBlock must have no predecessors.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1187
Parameters
- llvm::VPBlockBase* EntryBlock
¶void setExit(llvm::VPBlockBase* ExitBlock)
void setExit(llvm::VPBlockBase* ExitBlock)
Description
Set \p ExitBlock as the exit VPBlockBase of this VPRegionBlock. \p ExitBlock must have no successors.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1205
Parameters
- llvm::VPBlockBase* ExitBlock
¶~VPRegionBlock()
~VPRegionBlock()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1172