class VPInterleaveRecipe
Declaration
class VPInterleaveRecipe : public VPRecipeBase { /* full declaration omitted */ };
Description
VPInterleaveRecipe is a recipe for transforming an interleave group of load or stores into one wide load/store and shuffles. The first operand of a VPInterleave recipe is the address, followed by the stored values, followed by an optional mask.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1424
Inherits from: VPRecipeBase
Member Variables
- private const InterleaveGroup<llvm::Instruction>* IG
- private bool HasMask = false
Method Overview
- public VPInterleaveRecipe(const InterleaveGroup<llvm::Instruction> * IG, llvm::VPValue * Addr, ArrayRef<llvm::VPValue *> StoredValues, llvm::VPValue * Mask)
- public static inline bool classof(const llvm::VPDef * D)
- public void execute(llvm::VPTransformState & State)
- public llvm::VPValue * getAddr() const
- public const InterleaveGroup<llvm::Instruction> * getInterleaveGroup()
- public llvm::VPValue * getMask() const
- public unsigned int getNumStoreOperands() const
- public ArrayRef<llvm::VPValue *> getStoredValues() 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 ~VPInterleaveRecipe()
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
¶VPInterleaveRecipe(
const InterleaveGroup<llvm::Instruction>* IG,
llvm::VPValue* Addr,
ArrayRef<llvm::VPValue*> StoredValues,
llvm::VPValue* Mask)
VPInterleaveRecipe(
const InterleaveGroup<llvm::Instruction>* IG,
llvm::VPValue* Addr,
ArrayRef<llvm::VPValue*> StoredValues,
llvm::VPValue* Mask)
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1430
Parameters
- const InterleaveGroup<llvm::Instruction>* IG
- llvm::VPValue* Addr
- ArrayRef<llvm::VPValue*> StoredValues
- llvm::VPValue* Mask
¶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:1450
Parameters
- const llvm::VPDef* D
¶void execute(llvm::VPTransformState& State)
void execute(llvm::VPTransformState& State)
Description
Generate the wide load or store, and shuffles.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1476
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:1455
¶const InterleaveGroup<llvm::Instruction>*
getInterleaveGroup()
const InterleaveGroup<llvm::Instruction>*
getInterleaveGroup()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1484
¶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:1461
¶unsigned int getNumStoreOperands() const
unsigned int getNumStoreOperands() const
Description
Returns the number of stored operands of this interleave group. Returns 0 for load interleave groups.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1488
¶ArrayRef<llvm::VPValue*> getStoredValues() const
ArrayRef<llvm::VPValue*> getStoredValues() const
Description
Return the VPValues stored by this interleave group. If it is a load interleave group, return an empty ArrayRef.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1468
¶bool onlyFirstLaneUsed(
const llvm::VPValue* Op) const
bool onlyFirstLaneUsed(
const llvm::VPValue* Op) const
Description
The recipe only uses the first lane of the address.
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1493
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:1480
Parameters
- llvm::raw_ostream& O
- const llvm::Twine& Indent
- llvm::VPSlotTracker& SlotTracker
¶~VPInterleaveRecipe()
~VPInterleaveRecipe()
Declared at: llvm/lib/Transforms/Vectorize/VPlan.h:1447