LLVM: llvm::VPWidenMemoryRecipe Class Reference (original) (raw)
Public Member Functions
clone () override
Clone the current recipe.
Return whether the loaded-from / stored-to addresses are consecutive.
Return whether the consecutive loaded/stored addresses are in reverse order.
VPValue *
Return the address accessed by this recipe.
Returns true if the recipe is masked.
VPValue *
Return the mask used by this recipe.
Returns the alignment of the memory access.
void
execute (VPTransformState &State) override
Generate the wide load/store.
computeCost (ElementCount VF, VPCostContext &Ctx) const override
Return the cost of this VPWidenMemoryRecipe.
Public Member Functions inherited from llvm::VPRecipeBase
VPRecipeBase (const unsigned char SC, ArrayRef< VPValue * > Operands, DebugLoc DL=DebugLoc::getUnknown())
~VPRecipeBase () override=default
getParent ()
getRegion ()
cost (ElementCount VF, VPCostContext &Ctx)
Return the cost of this recipe, taking into account if the cost computation should be skipped and the ForceTargetInstructionCost flag.
void
insertBefore (VPRecipeBase *InsertPos)
Insert an unlinked recipe into a basic block immediately before the specified recipe.
void
insertBefore (VPBasicBlock &BB, iplist< VPRecipeBase >::iterator IP)
Insert an unlinked recipe into BB immediately before the insertion point IP;.
void
insertAfter (VPRecipeBase *InsertPos)
Insert an unlinked Recipe into a basic block immediately after the specified Recipe.
void
moveAfter (VPRecipeBase *MovePos)
Unlink this recipe from its current VPBasicBlock and insert it into the VPBasicBlock that MovePos lives in, right after MovePos.
void
moveBefore (VPBasicBlock &BB, iplist< VPRecipeBase >::iterator I)
Unlink this recipe and insert into BB before I.
void
This method unlinks 'this' from the containing basic block, but does not delete it.
iplist< VPRecipeBase >::iterator
This method unlinks 'this' from the containing basic block and deletes it.
Returns true if the recipe may have side-effects.
Returns true for PHI-like recipes.
Returns true if the recipe may read from memory.
Returns true if the recipe may write to memory.
Returns true if the recipe may read from or write to memory.
getDebugLoc () const
Returns the debug location of the recipe.
Return true if the recipe is a scalar cast.
void
setDebugLoc (DebugLoc NewDL)
Set the recipe's debug location to NewDL.
void
print (raw_ostream &O, const Twine &Indent, VPSlotTracker &SlotTracker) const override final
Print the recipe, delegating to printRecipe().
Public Member Functions inherited from llvm::ilist_node_with_parent< VPRecipeBase, VPBasicBlock >
getPrevNode ()
getNextNode ()
Get the next node, or nullptr for the list tail.
Public Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< VPRecipeBase, Options... >::type >
getIterator ()
std::enable_if_t< T::is_sentinel_tracking_explicit, bool >
isSentinel () const
Check whether this is the sentinel node.
Public Member Functions inherited from llvm::ilist_detail::node_parent_access< ilist_node_impl< ilist_detail::compute_node_options< VPRecipeBase, Options... >::type >, ilist_detail::compute_node_options< VPRecipeBase, Options... >::type::parent_ty >
const ilist_detail::compute_node_options< VPRecipeBase, Options... >::type::parent_ty *
void
setParent (ilist_detail::compute_node_options< VPRecipeBase, Options... >::type::parent_ty *Parent)
Public Member Functions inherited from llvm::VPDef
VPDef (const unsigned char SC)
virtual
~VPDef ()
VPValue *
Returns the only VPValue defined by the VPDef.
VPValue *
Returns the VPValue with index I defined by the VPDef.
Returns an ArrayRef of the values defined by the VPDef.
Returns an ArrayRef of the values defined by the VPDef.
Returns the number of values defined by the VPDef.
getVPDefID () const
LLVM_ABI_FOR_TEST void
Dump the VPDef to stderr (for debugging).
Public Member Functions inherited from llvm::VPUser
VPUser ()=delete
VPUser (const VPUser &)=delete
VPUser &
operator= (const VPUser &)=delete
virtual
~VPUser ()
void
addOperand (VPValue *Operand)
VPValue *
void
setOperand (unsigned I, VPValue *New)
void
swapOperands ()
Swap operands of the VPUser. It must have exactly 2 operands.
void
replaceUsesOfWith (VPValue *From, VPValue *To)
Replaces all uses of From in the VPUser with To.
op_begin ()
op_end ()
operands ()
virtual bool
usesScalars (const VPValue *Op) const
Returns true if the VPUser uses scalars of operand [Op](namespacellvm.html#ab471937b9a227e70c7fe8bd9604014d6).
virtual bool
usesFirstLaneOnly (const VPValue *Op) const
Returns true if the VPUser only uses the first lane of operand [Op](namespacellvm.html#ab471937b9a227e70c7fe8bd9604014d6).
virtual bool
usesFirstPartOnly (const VPValue *Op) const
Returns true if the VPUser only uses the first part of operand [Op](namespacellvm.html#ab471937b9a227e70c7fe8bd9604014d6).
Public Member Functions inherited from llvm::VPIRMetadata
VPIRMetadata ()=default
Adds metatadata that can be preserved from the original instruction I.
VPIRMetadata (const VPIRMetadata &Other)=default
Copy constructor for cloning.
operator= (const VPIRMetadata &Other)=default
void
applyMetadata (Instruction &I) const
Add all metadata to I.
void
setMetadata (unsigned Kind, MDNode *Node)
Set metadata with kind Kind to [Node](classNode.html).
void
intersect (const VPIRMetadata &MD)
Intersect this VPIRMetadata object with MD, keeping only metadata nodes that are common to both.
MDNode *
getMetadata (unsigned Kind) const
Get metadata of kind Kind. Returns nullptr if not found.
void
print (raw_ostream &O, VPSlotTracker &SlotTracker) const
Print metadata with node IDs.
A common base class for widening memory operations.
An optional mask can be provided as the last operand.