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:
- 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
¶VPWidenMemoryInstructionRecipe(
llvm::LoadInst& Load,
llvm::VPValue* Addr,
llvm::VPValue* Mask,
bool Consecutive,
bool Reverse)
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)
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)
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)
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
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
llvm::Instruction& getIngredient() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1800
¶llvm::VPValue* getMask() const
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
llvm::VPValue* getStoredValue() const
Description
Return the address accessed by this recipe.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1767
¶bool isConsecutive() const
bool isConsecutive() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1773
¶bool isMasked() const
bool isMasked() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1723
¶bool isReverse() const
bool isReverse() const
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1777
¶bool isStore() const
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
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
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)
void setMask(llvm::VPValue* Mask)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1717
Parameters
- llvm::VPValue* Mask