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()

Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1543

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)

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)

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)

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)

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)

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)

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