class VPPredInstPHIRecipe

Declaration

class VPPredInstPHIRecipe : public VPRecipeBase, public VPValue { /* full declaration omitted */ };

Description

VPPredInstPHIRecipe is a recipe for generating the phi nodes needed when control converges back from a Branch-on-Mask. The phi nodes are needed in order to merge values that are set under such a branch and feed their uses. The phi nodes can be scalar or vector depending on the users of the value. This recipe works in concert with VPBranchOnMaskRecipe.

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

Inherits from: VPRecipeBase, VPValue

Member Variables

Inherited from VPValue:

protected UnderlyingVal
protected Def

Method Overview

  • public VPPredInstPHIRecipe(llvm::VPValue * PredV)
  • public static inline bool classof(const llvm::VPDef * D)
  • public void execute(llvm::VPTransformState & State)
  • public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
  • public bool usesScalars(const llvm::VPValue * Op) const
  • public ~VPPredInstPHIRecipe()

Inherited from VPValue:

Inherited from VPRecipeBase:

Inherited from VPUser:

Inherited from VPDef:

Methods

VPPredInstPHIRecipe(llvm::VPValue* PredV)

Description

Construct a VPPredInstPHIRecipe given \p PredInst whose value needs a phi nodes after merging back from a Branch-on-Mask.

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

Parameters

llvm::VPValue* PredV

static inline bool classof(const llvm::VPDef* D)

Description

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

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

Parameters

const llvm::VPDef* D

void execute(llvm::VPTransformState& State)

Description

Generates phi nodes for live-outs as needed to retain SSA form.

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

Parameters

llvm::VPTransformState& State

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:1690

Parameters

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

bool usesScalars(const llvm::VPValue* Op) const

Description

Returns true if the recipe uses scalars of operand \p Op.

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

Parameters

const llvm::VPValue* Op

~VPPredInstPHIRecipe()

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