class VPWidenIntOrFpInductionRecipe
Declaration
class VPWidenIntOrFpInductionRecipe : public VPRecipeBase,
public VPValue { /* full declaration omitted */ };
Description
A recipe for handling phi nodes of integer and floating-point inductions, producing their vector values.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1046
Inherits from: VPRecipeBase, VPValue
Member Variables
- private llvm::PHINode* IV
- private const llvm::InductionDescriptor& IndDesc
- private bool NeedsVectorIV
Inherited from VPValue:
Method Overview
- public VPWidenIntOrFpInductionRecipe(llvm::PHINode * IV, llvm::VPValue * Start, llvm::VPValue * Step, const llvm::InductionDescriptor & IndDesc, llvm::TruncInst * Trunc, bool NeedsVectorIV)
- public VPWidenIntOrFpInductionRecipe(llvm::PHINode * IV, llvm::VPValue * Start, llvm::VPValue * Step, const llvm::InductionDescriptor & IndDesc, bool NeedsVectorIV)
- public static inline bool classof(const llvm::VPDef * D)
- public void execute(llvm::VPTransformState & State)
- public const llvm::InductionDescriptor & getInductionDescriptor() const
- public llvm::PHINode * getPHINode()
- public const llvm::Type * getScalarType() const
- public llvm::VPValue * getStartValue()
- public const llvm::VPValue * getStartValue() const
- public llvm::VPValue * getStepValue()
- public const llvm::VPValue * getStepValue() const
- public llvm::TruncInst * getTruncInst()
- public const llvm::TruncInst * getTruncInst() const
- public bool isCanonical() const
- public bool needsVectorIV() const
- public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
- public ~VPWidenIntOrFpInductionRecipe()
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
¶VPWidenIntOrFpInductionRecipe(
llvm::PHINode* IV,
llvm::VPValue* Start,
llvm::VPValue* Step,
const llvm::InductionDescriptor& IndDesc,
llvm::TruncInst* Trunc,
bool NeedsVectorIV)
VPWidenIntOrFpInductionRecipe(
llvm::PHINode* IV,
llvm::VPValue* Start,
llvm::VPValue* Step,
const llvm::InductionDescriptor& IndDesc,
llvm::TruncInst* Trunc,
bool NeedsVectorIV)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1059
Parameters
- llvm::PHINode* IV
- llvm::VPValue* Start
- llvm::VPValue* Step
- const llvm::InductionDescriptor& IndDesc
- llvm::TruncInst* Trunc
- bool NeedsVectorIV
¶VPWidenIntOrFpInductionRecipe(
llvm::PHINode* IV,
llvm::VPValue* Start,
llvm::VPValue* Step,
const llvm::InductionDescriptor& IndDesc,
bool NeedsVectorIV)
VPWidenIntOrFpInductionRecipe(
llvm::PHINode* IV,
llvm::VPValue* Start,
llvm::VPValue* Step,
const llvm::InductionDescriptor& IndDesc,
bool NeedsVectorIV)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1052
Parameters
- llvm::PHINode* IV
- llvm::VPValue* Start
- llvm::VPValue* Step
- const llvm::InductionDescriptor& IndDesc
- bool NeedsVectorIV
¶static inline bool classof(const llvm::VPDef* D)
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:1069
Parameters
- const llvm::VPDef* D
¶void execute(llvm::VPTransformState& State)
void execute(llvm::VPTransformState& State)
Description
Generate the vectorized and scalarized versions of the phi node as needed by their users.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1075
Parameters
- llvm::VPTransformState& State
¶const llvm::InductionDescriptor&
getInductionDescriptor() const
const llvm::InductionDescriptor&
getInductionDescriptor() const
Description
Returns the induction descriptor for the recipe.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1103
¶llvm::PHINode* getPHINode()
llvm::PHINode* getPHINode()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1100
¶const llvm::Type* getScalarType() const
const llvm::Type* getScalarType() const
Description
Returns the scalar type of the induction.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1110
¶llvm::VPValue* getStartValue()
llvm::VPValue* getStartValue()
Description
Returns the start value of the induction.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1084
¶const llvm::VPValue* getStartValue() const
const llvm::VPValue* getStartValue() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1085
¶llvm::VPValue* getStepValue()
llvm::VPValue* getStepValue()
Description
Returns the step value of the induction.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1088
¶const llvm::VPValue* getStepValue() const
const llvm::VPValue* getStepValue() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1089
¶llvm::TruncInst* getTruncInst()
llvm::TruncInst* getTruncInst()
Description
Returns the first defined value as TruncInst, if it is one or nullptr otherwise.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1093
¶const llvm::TruncInst* getTruncInst() const
const llvm::TruncInst* getTruncInst() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1096
¶bool isCanonical() const
bool isCanonical() const
Description
Returns true if the induction is canonical, i.e. starting at 0 and incremented by UF * VF (= the original IV is incremented by 1).
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1107
¶bool needsVectorIV() const
bool needsVectorIV() const
Description
Returns true if a vector phi needs to be created for the induction.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1116
¶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:1079
Parameters
- llvm::raw_ostream& O
- const llvm::Twine& Indent
- llvm::VPSlotTracker& SlotTracker
¶~VPWidenIntOrFpInductionRecipe()
~VPWidenIntOrFpInductionRecipe()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1066