class VPBlendRecipe

Declaration

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

Description

A recipe for vectorizing a phi-node as a sequence of mask-based select instructions.

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

Inherits from: VPRecipeBase, VPValue

Member Variables

private llvm::PHINode* Phi

Inherited from VPValue:

protected UnderlyingVal
protected Def

Method Overview

  • public VPBlendRecipe(llvm::PHINode * Phi, ArrayRef<llvm::VPValue *> Operands)
  • public static inline bool classof(const llvm::VPDef * D)
  • public void execute(llvm::VPTransformState & State)
  • public llvm::VPValue * getIncomingValue(unsigned int Idx) const
  • public llvm::VPValue * getMask(unsigned int Idx) const
  • public unsigned int getNumIncomingValues() const
  • public bool onlyFirstLaneUsed(const llvm::VPValue * Op) const
  • public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const

Inherited from VPValue:

Inherited from VPRecipeBase:

Inherited from VPUser:

Inherited from VPDef:

Methods

VPBlendRecipe(llvm::PHINode* Phi,
              ArrayRef<llvm::VPValue*> Operands)

Description

The blend operation is a User of the incoming values and of their respective masks, ordered [I0, M0, I1, M1, ...]. Note that a single value might be incoming with a full mask for which there is no VPValue.

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

Parameters

llvm::PHINode* Phi
ArrayRef<llvm::VPValue*> Operands

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

Parameters

const llvm::VPDef* D

void execute(llvm::VPTransformState& State)

Description

Generate the phi/select nodes.

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

Parameters

llvm::VPTransformState& State

llvm::VPValue* getIncomingValue(
    unsigned int Idx) const

Description

Return incoming value number \p Idx.

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

Parameters

unsigned int Idx

llvm::VPValue* getMask(unsigned int Idx) const

Description

Return mask number \p Idx.

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

Parameters

unsigned int Idx

unsigned int getNumIncomingValues() const

Description

Return the number of incoming values, taking into account that a single incoming value has no mask.

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

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

Description

Returns true if the recipe only uses the first lane of operand \p Op.

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

Parameters

const llvm::VPValue* Op

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

Parameters

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