class VPWidenPointerInductionRecipe
Declaration
class VPWidenPointerInductionRecipe : public VPHeaderPHIRecipe { /* full declaration omitted */ };
Description
A pure virtual base class for all recipes modeling header phis, including phis for first order recurrences, pointer inductions and reductions. The start value is the first operand of the recipe and the incoming value from the backedge is the second operand.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1182
Inherits from: VPHeaderPHIRecipe
Member Variables
- private const llvm::InductionDescriptor& IndDesc
- private llvm::ScalarEvolution& SE
- SCEV used to expand step. FIXME: move expansion of step to the pre-header, once it is modeled explicitly.
- private bool IsScalarAfterVectorization
Inherited from VPValue:
Method Overview
- public VPWidenPointerInductionRecipe(llvm::PHINode * Phi, llvm::VPValue * Start, const llvm::InductionDescriptor & IndDesc, llvm::ScalarEvolution & SE, bool IsScalarAfterVectorization)
- public static inline bool classof(const llvm::VPRecipeBase * B)
- public static inline bool classof(const llvm::VPHeaderPHIRecipe * R)
- public static inline bool classof(const llvm::VPValue * V)
- public void execute(llvm::VPTransformState & State)
- public bool onlyScalarsGenerated(llvm::ElementCount VF)
- public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
- public ~VPWidenPointerInductionRecipe()
Inherited from VPHeaderPHIRecipe:
- public classof
- public classof
- public execute
- public getBackedgeRecipe
- public getBackedgeValue
- public getStartValue
- public getStartValue
- public print
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
¶VPWidenPointerInductionRecipe(
llvm::PHINode* Phi,
llvm::VPValue* Start,
const llvm::InductionDescriptor& IndDesc,
llvm::ScalarEvolution& SE,
bool IsScalarAfterVectorization)
VPWidenPointerInductionRecipe(
llvm::PHINode* Phi,
llvm::VPValue* Start,
const llvm::InductionDescriptor& IndDesc,
llvm::ScalarEvolution& SE,
bool IsScalarAfterVectorization)
Description
Create a new VPWidenPointerInductionRecipe for \p Phi with start value \p Start.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1195
Parameters
- llvm::PHINode* Phi
- llvm::VPValue* Start
- const llvm::InductionDescriptor& IndDesc
- llvm::ScalarEvolution& SE
- bool IsScalarAfterVectorization
¶static inline bool classof(
const llvm::VPRecipeBase* B)
static inline bool classof(
const llvm::VPRecipeBase* B)
Description
Method to support type inquiry through isa, cast, and dyn_cast.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1209
Parameters
- const llvm::VPRecipeBase* B
¶static inline bool classof(
const llvm::VPHeaderPHIRecipe* R)
static inline bool classof(
const llvm::VPHeaderPHIRecipe* R)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1212
Parameters
- const llvm::VPHeaderPHIRecipe* R
¶static inline bool classof(const llvm::VPValue* V)
static inline bool classof(const llvm::VPValue* V)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1215
Parameters
- const llvm::VPValue* V
¶void execute(llvm::VPTransformState& State)
void execute(llvm::VPTransformState& State)
Description
Generate vector values for the pointer induction.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1220
Parameters
- llvm::VPTransformState& State
¶bool onlyScalarsGenerated(llvm::ElementCount VF)
bool onlyScalarsGenerated(llvm::ElementCount VF)
Description
Returns true if only scalar values will be generated.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1223
Parameters
¶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:1227
Parameters
- llvm::raw_ostream& O
- const llvm::Twine& Indent
- llvm::VPSlotTracker& SlotTracker
¶~VPWidenPointerInductionRecipe()
~VPWidenPointerInductionRecipe()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1206