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:

protected UnderlyingVal
protected Def

Method Overview

Inherited from VPValue:

Inherited from VPRecipeBase:

Inherited from VPUser:

Inherited from VPDef:

Methods

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)

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)

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)

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

Description

Returns the induction descriptor for the recipe.

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

llvm::PHINode* getPHINode()

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

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

Description

Returns the start value of the induction.

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

const llvm::VPValue* getStartValue() const

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

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

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

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

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

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

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

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

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