class VPBlockUtils
Declaration
class VPBlockUtils { /* full declaration omitted */ };
Description
Class that provides utilities for VPBlockBases in VPlan.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1541
Method Overview
- public VPBlockUtils()
- public static bool blockIsLoopLatch(const llvm::VPBlockBase * Block, const llvm::VPLoopInfo * VPLInfo)
- public static void connectBlocks(llvm::VPBlockBase * From, llvm::VPBlockBase * To)
- public static unsigned int countSuccessorsNoBE(llvm::VPBlockBase * PredBlock, llvm::VPLoopInfo * VPLI)
- public static void disconnectBlocks(llvm::VPBlockBase * From, llvm::VPBlockBase * To)
- public static void insertBlockAfter(llvm::VPBlockBase * NewBlock, llvm::VPBlockBase * BlockPtr)
- public static void insertTwoBlocksAfter(llvm::VPBlockBase * IfTrue, llvm::VPBlockBase * IfFalse, llvm::VPValue * Condition, llvm::VPBlockBase * BlockPtr)
- public static bool isBackEdge(const llvm::VPBlockBase * FromBlock, const llvm::VPBlockBase * ToBlock, const llvm::VPLoopInfo * VPLI)
Methods
¶VPBlockUtils()
VPBlockUtils()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1543
¶static bool blockIsLoopLatch(
const llvm::VPBlockBase* Block,
const llvm::VPLoopInfo* VPLInfo)
static bool blockIsLoopLatch(
const llvm::VPBlockBase* Block,
const llvm::VPLoopInfo* VPLInfo)
Description
Returns true if \p Block is a loop latch
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1616
Parameters
- const llvm::VPBlockBase* Block
- const llvm::VPLoopInfo* VPLInfo
¶static void connectBlocks(llvm::VPBlockBase* From,
llvm::VPBlockBase* To)
static void connectBlocks(llvm::VPBlockBase* From,
llvm::VPBlockBase* To)
Description
Connect VPBlockBases \p From and \p To bi-directionally. Append \p To to the successors of \p From and \p From to the predecessors of \p To. Both VPBlockBases must have the same parent, which can be null. Both VPBlockBases can be already connected to other VPBlockBases.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1584
Parameters
- llvm::VPBlockBase* From
- llvm::VPBlockBase* To
¶static unsigned int countSuccessorsNoBE(
llvm::VPBlockBase* PredBlock,
llvm::VPLoopInfo* VPLI)
static unsigned int countSuccessorsNoBE(
llvm::VPBlockBase* PredBlock,
llvm::VPLoopInfo* VPLI)
Description
Count and return the number of succesors of \p PredBlock excluding any backedges.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1626
Parameters
- llvm::VPBlockBase* PredBlock
- llvm::VPLoopInfo* VPLI
¶static void disconnectBlocks(
llvm::VPBlockBase* From,
llvm::VPBlockBase* To)
static void disconnectBlocks(
llvm::VPBlockBase* From,
llvm::VPBlockBase* To)
Description
Disconnect VPBlockBases \p From and \p To bi-directionally. Remove \p To from the successors of \p From and \p From from the predecessors of \p To.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1595
Parameters
- llvm::VPBlockBase* From
- llvm::VPBlockBase* To
¶static void insertBlockAfter(
llvm::VPBlockBase* NewBlock,
llvm::VPBlockBase* BlockPtr)
static void insertBlockAfter(
llvm::VPBlockBase* NewBlock,
llvm::VPBlockBase* BlockPtr)
Description
Insert disconnected VPBlockBase \p NewBlock after \p BlockPtr. Add \p NewBlock as successor of \p BlockPtr and \p BlockPtr as predecessor of \p NewBlock, and propagate \p BlockPtr parent to \p NewBlock. If \p BlockPtr has more than one successor, its conditional bit is propagated to \p NewBlock. \p NewBlock must have neither successors nor predecessors.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1550
Parameters
- llvm::VPBlockBase* NewBlock
- llvm::VPBlockBase* BlockPtr
¶static void insertTwoBlocksAfter(
llvm::VPBlockBase* IfTrue,
llvm::VPBlockBase* IfFalse,
llvm::VPValue* Condition,
llvm::VPBlockBase* BlockPtr)
static void insertTwoBlocksAfter(
llvm::VPBlockBase* IfTrue,
llvm::VPBlockBase* IfFalse,
llvm::VPValue* Condition,
llvm::VPBlockBase* BlockPtr)
Description
Insert disconnected VPBlockBases \p IfTrue and \p IfFalse after \p BlockPtr. Add \p IfTrue and \p IfFalse as succesors of \p BlockPtr and \p BlockPtr as predecessor of \p IfTrue and \p IfFalse. Propagate \p BlockPtr parent to \p IfTrue and \p IfFalse. \p Condition is set as the successor selector. \p BlockPtr must have no successors and \p IfTrue and \p IfFalse must have neither successors nor predecessors.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1567
Parameters
- llvm::VPBlockBase* IfTrue
- llvm::VPBlockBase* IfFalse
- llvm::VPValue* Condition
- llvm::VPBlockBase* BlockPtr
¶static bool isBackEdge(
const llvm::VPBlockBase* FromBlock,
const llvm::VPBlockBase* ToBlock,
const llvm::VPLoopInfo* VPLI)
static bool isBackEdge(
const llvm::VPBlockBase* FromBlock,
const llvm::VPBlockBase* ToBlock,
const llvm::VPLoopInfo* VPLI)
Description
Returns true if the edge \p FromBlock -> \p ToBlock is a back-edge.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1602
Parameters
- const llvm::VPBlockBase* FromBlock
- const llvm::VPBlockBase* ToBlock
- const llvm::VPLoopInfo* VPLI