class VPWidenPHIRecipe

Declaration

class VPWidenPHIRecipe : public VPHeaderPHIRecipe { /* full declaration omitted */ };

Description

A recipe for handling header phis that are widened in the vector loop. In the VPlan native path, all incoming VPValues & VPBasicBlock pairs are managed in the recipe directly.

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

Inherits from: VPHeaderPHIRecipe

Member Variables

private SmallVector<llvm::VPBasicBlock*, 2> IncomingBlocks
List of incoming blocks. Only used in the VPlan native path.

Inherited from VPValue:

protected UnderlyingVal
protected Def

Method Overview

  • public VPWidenPHIRecipe(llvm::PHINode * Phi, llvm::VPValue * Start = nullptr)
  • public void addIncoming(llvm::VPValue * IncomingV, llvm::VPBasicBlock * IncomingBlock)
  • public static inline bool classof(const llvm::VPRecipeBase * B)
  • public static inline bool classof(const llvm::VPHeaderPHIRecipe * R)
  • public static inline bool classof(const llvm::VPValue * V)
  • public void execute(llvm::VPTransformState & State)
  • public llvm::VPBasicBlock * getIncomingBlock(unsigned int I)
  • public llvm::VPValue * getIncomingValue(unsigned int I)
  • public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
  • public ~VPWidenPHIRecipe()

Inherited from VPHeaderPHIRecipe:

Inherited from VPValue:

Inherited from VPRecipeBase:

Inherited from VPUser:

Inherited from VPDef:

Methods

VPWidenPHIRecipe(llvm::PHINode* Phi,
                 llvm::VPValue* Start = nullptr)

Description

Create a new VPWidenPHIRecipe for \p Phi with start value \p Start.

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

Parameters

llvm::PHINode* Phi
llvm::VPValue* Start = nullptr

void addIncoming(
    llvm::VPValue* IncomingV,
    llvm::VPBasicBlock* IncomingBlock)

Description

Adds a pair (\p IncomingV, \p IncomingBlock) to the phi.

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

Parameters

llvm::VPValue* IncomingV
llvm::VPBasicBlock* IncomingBlock

static inline bool classof(
    const llvm::VPRecipeBase* B)

Description

Method to support type inquiry through isa, cast, and dyn_cast.

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

Parameters

const llvm::VPRecipeBase* B

static inline bool classof(
    const llvm::VPHeaderPHIRecipe* R)

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

Parameters

const llvm::VPHeaderPHIRecipe* R

static inline bool classof(const llvm::VPValue* V)

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

Parameters

const llvm::VPValue* V

void execute(llvm::VPTransformState& State)

Description

Generate the phi/select nodes.

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

Parameters

llvm::VPTransformState& State

llvm::VPBasicBlock* getIncomingBlock(
    unsigned int I)

Description

Returns the \p I th incoming VPBasicBlock.

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

Parameters

unsigned int I

llvm::VPValue* getIncomingValue(unsigned int I)

Description

Returns the \p I th incoming VPValue.

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

Parameters

unsigned int I

void print(llvm::raw_ostream& O,
           const llvm::Twine& Indent,
           llvm::VPSlotTracker& SlotTracker) const

Description

Print the recipe.

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

Parameters

llvm::raw_ostream& O
const llvm::Twine& Indent
llvm::VPSlotTracker& SlotTracker

~VPWidenPHIRecipe()

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