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:
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:
- public addUser
- public dump
- public getDef
- public getDef
- public getLiveInIRValue
- public getLiveInIRValue
- public getNumUsers
- public getUnderlyingValue
- public getUnderlyingValue
- public getVPValueID
- public hasMoreThanOneUniqueUser
- public print
- public printAsOperand
- public removeUser
- public replaceAllUsesWith
- protected setUnderlyingValue
- public user_begin
- public user_begin
- public user_end
- public user_end
- public users
- public users
Inherited from VPRecipeBase:
- public classof
- public classof
- public eraseFromParent
- public execute
- public getParent
- public getParent
- public getUnderlyingInstr
- public getUnderlyingInstr
- public insertAfter
- public insertBefore
- public insertBefore
- public isPhi
- public mayHaveSideEffects
- public mayReadFromMemory
- public mayReadOrWriteMemory
- public mayWriteToMemory
- public moveAfter
- public moveBefore
- public removeFromParent
Inherited from VPUser:
- public addOperand
- public classof
- public getNumOperands
- public getOperand
- public getVPUserID
- public onlyFirstLaneUsed
- public op_begin
- public op_begin
- public op_end
- public op_end
- public operands
- public operands
- protected printOperands
- public removeLastOperand
- public setOperand
- public usesScalars
Inherited from VPDef:
- public definedValues
- public definedValues
- public dump
- public getNumDefinedValues
- public getVPDefID
- public getVPSingleValue
- public getVPSingleValue
- public getVPValue
- public getVPValue
- public print
Methods
¶VPReductionRecipe(
const llvm::RecurrenceDescriptor* R,
llvm::Instruction* I,
llvm::VPValue* ChainOp,
llvm::VPValue* VecOp,
llvm::VPValue* CondOp,
const llvm::TargetTransformInfo* TTI)
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)
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)
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
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
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
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
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()
~VPReductionRecipe()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1521