class VPReductionRecipe

Declaration

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

Description

A recipe to represent inloop reduction operations, performing a reduction on a vector operand into a scalar value, and adding the result to a chain. The Operands are {ChainOp, VecOp, [Condition]}.

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

Inherits from: VPRecipeBase, VPValue

Member Variables

private const llvm::RecurrenceDescriptor* RdxDesc
The recurrence decriptor for the reduction in question.
private const llvm::TargetTransformInfo* TTI
Pointer to the TTI, needed to create the target reduction

Inherited from VPValue:

protected UnderlyingVal
protected Def

Method Overview

  • public VPReductionRecipe(const llvm::RecurrenceDescriptor * R, llvm::Instruction * I, llvm::VPValue * ChainOp, llvm::VPValue * VecOp, llvm::VPValue * CondOp, const llvm::TargetTransformInfo * TTI)
  • public static inline bool classof(const llvm::VPValue * V)
  • public void execute(llvm::VPTransformState & State)
  • public llvm::VPValue * getChainOp() const
  • public llvm::VPValue * getCondOp() const
  • public llvm::VPValue * getVecOp() const
  • public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
  • public ~VPReductionRecipe()

Inherited from VPValue:

Inherited from VPRecipeBase:

Inherited from VPUser:

Inherited from VPDef:

Methods

VPReductionRecipe(
    const llvm::RecurrenceDescriptor* R,
    llvm::Instruction* I,
    llvm::VPValue* ChainOp,
    llvm::VPValue* VecOp,
    llvm::VPValue* CondOp,
    const llvm::TargetTransformInfo* TTI)

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

Parameters

const llvm::RecurrenceDescriptor* R
llvm::Instruction* I
llvm::VPValue* ChainOp
llvm::VPValue* VecOp
llvm::VPValue* CondOp
const llvm::TargetTransformInfo* TTI

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

Description

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

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

Parameters

const llvm::VPValue* V

void execute(llvm::VPTransformState& State)

Description

Generate the reduction in the loop

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

Parameters

llvm::VPTransformState& State

llvm::VPValue* getChainOp() const

Description

The VPValue of the scalar Chain being accumulated.

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

llvm::VPValue* getCondOp() const

Description

The VPValue of the condition for the block.

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

llvm::VPValue* getVecOp() const

Description

The VPValue of the vector value to be reduced.

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

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

Parameters

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

~VPReductionRecipe()

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