LLVM  9.0.0svn
Public Member Functions | Static Public Member Functions | List of all members
llvm::VPBlockUtils Class Reference

Class that provides utilities for VPBlockBases in VPlan. More...

#include "Transforms/Vectorize/VPlan.h"

Public Member Functions

 VPBlockUtils ()=delete
 

Static Public Member Functions

static void insertBlockAfter (VPBlockBase *NewBlock, VPBlockBase *BlockPtr)
 Insert disconnected VPBlockBase NewBlock after BlockPtr. More...
 
static void insertTwoBlocksAfter (VPBlockBase *IfTrue, VPBlockBase *IfFalse, VPValue *Condition, VPBlockBase *BlockPtr)
 Insert disconnected VPBlockBases IfTrue and IfFalse after BlockPtr. More...
 
static void connectBlocks (VPBlockBase *From, VPBlockBase *To)
 Connect VPBlockBases From and To bi-directionally. More...
 
static void disconnectBlocks (VPBlockBase *From, VPBlockBase *To)
 Disconnect VPBlockBases From and To bi-directionally. More...
 
static bool isBackEdge (const VPBlockBase *FromBlock, const VPBlockBase *ToBlock, const VPLoopInfo *VPLI)
 Returns true if the edge FromBlock -> ToBlock is a back-edge. More...
 
static bool blockIsLoopLatch (const VPBlockBase *Block, const VPLoopInfo *VPLInfo)
 Returns true if Block is a loop latch. More...
 
static unsigned countSuccessorsNoBE (VPBlockBase *PredBlock, VPLoopInfo *VPLI)
 Count and return the number of succesors of PredBlock excluding any backedges. More...
 

Detailed Description

Class that provides utilities for VPBlockBases in VPlan.

Definition at line 1452 of file VPlan.h.

Constructor & Destructor Documentation

◆ VPBlockUtils()

llvm::VPBlockUtils::VPBlockUtils ( )
delete

Member Function Documentation

◆ blockIsLoopLatch()

static bool llvm::VPBlockUtils::blockIsLoopLatch ( const VPBlockBase Block,
const VPLoopInfo VPLInfo 
)
inlinestatic

Returns true if Block is a loop latch.

Definition at line 1527 of file VPlan.h.

References llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor().

◆ connectBlocks()

static void llvm::VPBlockUtils::connectBlocks ( VPBlockBase From,
VPBlockBase To 
)
inlinestatic

Connect VPBlockBases From and To bi-directionally.

Append To to the successors of From and From to the predecessors of To. Both VPBlockBases must have the same parent, which can be null. Both VPBlockBases can be already connected to other VPBlockBases.

Definition at line 1495 of file VPlan.h.

References assert(), llvm::VPBlockBase::getNumSuccessors(), and llvm::VPBlockBase::getParent().

Referenced by llvm::VPRecipeBuilder::createReplicateRegion().

◆ countSuccessorsNoBE()

static unsigned llvm::VPBlockUtils::countSuccessorsNoBE ( VPBlockBase PredBlock,
VPLoopInfo VPLI 
)
inlinestatic

Count and return the number of succesors of PredBlock excluding any backedges.

Definition at line 1537 of file VPlan.h.

References llvm::VPBlockBase::getSuccessors(), and isBackEdge().

◆ disconnectBlocks()

static void llvm::VPBlockUtils::disconnectBlocks ( VPBlockBase From,
VPBlockBase To 
)
inlinestatic

Disconnect VPBlockBases From and To bi-directionally.

Remove To from the successors of From and From from the predecessors of To.

Definition at line 1506 of file VPlan.h.

References assert().

Referenced by llvm::VPRecipeBuilder::tryToCreateRecipe().

◆ insertBlockAfter()

static void llvm::VPBlockUtils::insertBlockAfter ( VPBlockBase NewBlock,
VPBlockBase BlockPtr 
)
inlinestatic

Insert disconnected VPBlockBase NewBlock after BlockPtr.

Add NewBlock as successor of BlockPtr and BlockPtr as predecessor of NewBlock, and propagate BlockPtr parent to NewBlock. If BlockPtr has more than one successor, its conditional bit is propagated to NewBlock. NewBlock must have neither successors nor predecessors.

Definition at line 1461 of file VPlan.h.

References assert(), llvm::SmallVectorBase::empty(), llvm::VPBlockBase::getParent(), llvm::VPBlockBase::getSuccessors(), llvm::VPBlockBase::setOneSuccessor(), llvm::VPBlockBase::setParent(), and llvm::VPBlockBase::setPredecessors().

Referenced by llvm::VPRecipeBuilder::handleReplication(), and llvm::VPRecipeBuilder::tryToCreateRecipe().

◆ insertTwoBlocksAfter()

static void llvm::VPBlockUtils::insertTwoBlocksAfter ( VPBlockBase IfTrue,
VPBlockBase IfFalse,
VPValue Condition,
VPBlockBase BlockPtr 
)
inlinestatic

Insert disconnected VPBlockBases IfTrue and IfFalse after BlockPtr.

Add IfTrue and IfFalse as succesors of BlockPtr and BlockPtr as predecessor of IfTrue and IfFalse. Propagate BlockPtr parent to IfTrue and IfFalse. Condition is set as the successor selector. BlockPtr must have no successors and IfTrue and IfFalse must have neither successors nor predecessors.

Definition at line 1478 of file VPlan.h.

References assert(), llvm::SmallVectorBase::empty(), llvm::VPBlockBase::getParent(), llvm::VPBlockBase::getSuccessors(), llvm::VPBlockBase::setParent(), llvm::VPBlockBase::setPredecessors(), and llvm::VPBlockBase::setTwoSuccessors().

Referenced by llvm::VPRecipeBuilder::createReplicateRegion().

◆ isBackEdge()

static bool llvm::VPBlockUtils::isBackEdge ( const VPBlockBase FromBlock,
const VPBlockBase ToBlock,
const VPLoopInfo VPLI 
)
inlinestatic

The documentation for this class was generated from the following file: