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:

protected UnderlyingVal
protected Def

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:

Inherited from VPValue:

Inherited from VPRecipeBase:

Inherited from VPUser:

Inherited from VPDef:

Methods

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)

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)

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

Parameters

const llvm::VPHeaderPHIRecipe* R

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)

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)

Description

Returns true if only scalar values will be generated.

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

Parameters

llvm::ElementCount VF

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()

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