class VPWidenMemoryInstructionRecipe

Declaration

class VPWidenMemoryInstructionRecipe : public VPRecipeBase { /* full declaration omitted */ };

Description

A Recipe for widening load/store operations. The recipe uses the following VPValues: - For load: Address, optional mask - For store: Address, stored value, optional mask TODO: We currently execute only per-part unless a specific instance is provided.

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

Inherits from: VPRecipeBase

Member Variables

private llvm::Instruction& Ingredient
private bool Consecutive
private bool Reverse

Method Overview

  • public VPWidenMemoryInstructionRecipe(llvm::LoadInst & Load, llvm::VPValue * Addr, llvm::VPValue * Mask, bool Consecutive, bool Reverse)
  • public VPWidenMemoryInstructionRecipe(llvm::StoreInst & Store, llvm::VPValue * Addr, llvm::VPValue * StoredValue, llvm::VPValue * Mask, bool Consecutive, bool Reverse)
  • public static inline bool classof(const llvm::VPDef * D)
  • public void execute(llvm::VPTransformState & State)
  • public llvm::VPValue * getAddr() const
  • public llvm::Instruction & getIngredient() const
  • public llvm::VPValue * getMask() const
  • public llvm::VPValue * getStoredValue() const
  • public bool isConsecutive() const
  • private bool isMasked() const
  • public bool isReverse() const
  • public bool isStore() const
  • public bool onlyFirstLaneUsed(const llvm::VPValue * Op) const
  • public void print(llvm::raw_ostream & O, const llvm::Twine & Indent, llvm::VPSlotTracker & SlotTracker) const
  • private void setMask(llvm::VPValue * Mask)

Inherited from VPRecipeBase:

Inherited from VPUser:

Inherited from VPDef:

Methods

VPWidenMemoryInstructionRecipe(
    llvm::LoadInst& Load,
    llvm::VPValue* Addr,
    llvm::VPValue* Mask,
    bool Consecutive,
    bool Reverse)

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

Parameters

llvm::LoadInst& Load
llvm::VPValue* Addr
llvm::VPValue* Mask
bool Consecutive
bool Reverse

VPWidenMemoryInstructionRecipe(
    llvm::StoreInst& Store,
    llvm::VPValue* Addr,
    llvm::VPValue* StoredValue,
    llvm::VPValue* Mask,
    bool Consecutive,
    bool Reverse)

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

Parameters

llvm::StoreInst& Store
llvm::VPValue* Addr
llvm::VPValue* StoredValue
llvm::VPValue* Mask
bool Consecutive
bool Reverse

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

Parameters

const llvm::VPDef* D

void execute(llvm::VPTransformState& State)

Description

Generate the wide load/store.

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

Parameters

llvm::VPTransformState& State

llvm::VPValue* getAddr() const

Description

Return the address accessed by this recipe.

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

llvm::Instruction& getIngredient() const

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

llvm::VPValue* getMask() const

Description

Return the mask used by this recipe. Note that a full mask is represented by a nullptr.

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

llvm::VPValue* getStoredValue() const

Description

Return the address accessed by this recipe.

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

bool isConsecutive() const

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

bool isMasked() const

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

bool isReverse() const

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

bool isStore() const

Description

Returns true if this recipe is a store.

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

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

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

Parameters

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

void setMask(llvm::VPValue* Mask)

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

Parameters

llvm::VPValue* Mask