class VPScalarIVStepsRecipe

Declaration

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

Description

A recipe for handling phi nodes of integer and floating-point inductions, producing their scalar values.

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

Inherits from: VPRecipeBase, VPValue

Member Variables

private llvm::Type* Ty
Scalar type to use for the generated values.
private llvm::Type* TruncToTy
If not nullptr, truncate the generated values to TruncToTy.
private const llvm::InductionDescriptor& IndDesc

Inherited from VPValue:

protected UnderlyingVal
protected Def

Method Overview

  • public VPScalarIVStepsRecipe(llvm::Type * Ty, const llvm::InductionDescriptor & IndDesc, llvm::VPValue * CanonicalIV, llvm::VPValue * Start, llvm::VPValue * Step, llvm::Type * TruncToTy)
  • public static inline bool classof(const llvm::VPDef * D)
  • public static inline bool classof(const llvm::VPUser * U)
  • public static inline bool classof(const llvm::VPRecipeBase * R)
  • public void execute(llvm::VPTransformState & State)
  • public llvm::VPCanonicalIVPHIRecipe * getCanonicalIV() const
  • public llvm::VPValue * getStartValue() const
  • public llvm::VPValue * getStepValue() const
  • public bool isCanonical() const
  • public bool onlyFirstLaneUsed(const llvm::VPValue * Op) const
  • public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
  • public ~VPScalarIVStepsRecipe()

Inherited from VPValue:

Inherited from VPRecipeBase:

Inherited from VPUser:

Inherited from VPDef:

Methods

VPScalarIVStepsRecipe(
    llvm::Type* Ty,
    const llvm::InductionDescriptor& IndDesc,
    llvm::VPValue* CanonicalIV,
    llvm::VPValue* Start,
    llvm::VPValue* Step,
    llvm::Type* TruncToTy)

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

Parameters

llvm::Type* Ty
const llvm::InductionDescriptor& IndDesc
llvm::VPValue* CanonicalIV
llvm::VPValue* Start
llvm::VPValue* Step
llvm::Type* TruncToTy

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

Parameters

const llvm::VPDef* D

static inline bool classof(const llvm::VPUser* U)

Description

Extra classof implementations to allow directly casting from VPUser -> VPScalarIVStepsRecipe.

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

Parameters

const llvm::VPUser* U

static inline bool classof(
    const llvm::VPRecipeBase* R)

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

Parameters

const llvm::VPRecipeBase* R

void execute(llvm::VPTransformState& State)

Description

Generate the scalarized versions of the phi node as needed by their users.

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

Parameters

llvm::VPTransformState& State

llvm::VPCanonicalIVPHIRecipe* getCanonicalIV()
    const

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

llvm::VPValue* getStartValue() const

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

llvm::VPValue* getStepValue() const

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

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

bool onlyFirstLaneUsed(
    const llvm::VPValue* Op) const

Description

Returns true if the recipe only uses the first lane of operand \p Op.

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

Parameters

const llvm::VPValue* Op

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

Parameters

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

~VPScalarIVStepsRecipe()

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