LLVM: llvm::VPWidenMemoryRecipe Class Reference (original) (raw)

Public Member Functions

VPWidenMemoryRecipe *

clone () override

Clone the current recipe.

bool

isConsecutive () const

Return whether the loaded-from / stored-to addresses are consecutive.

bool

isReverse () const

Return whether the consecutive loaded/stored addresses are in reverse order.

VPValue *

getAddr () const

Return the address accessed by this recipe.

bool

isMasked () const

Returns true if the recipe is masked.

VPValue *

getMask () const

Return the mask used by this recipe.

Align

getAlign () const

Returns the alignment of the memory access.

void

execute (VPTransformState &State) override

Generate the wide load/store.

InstructionCost

computeCost (ElementCount VF, VPCostContext &Ctx) const override

Return the cost of this VPWidenMemoryRecipe.

Instruction &

getIngredient () const

Public Member Functions inherited from llvm::VPRecipeBase

VPRecipeBase (const unsigned char SC, ArrayRef< VPValue * > Operands, DebugLoc DL=DebugLoc::getUnknown())

~VPRecipeBase () override=default

VPBasicBlock *

getParent ()

const VPBasicBlock *

getParent () const

VPRegionBlock *

getRegion ()

const VPRegionBlock *

getRegion () const

InstructionCost

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

removeFromParent ()

This method unlinks 'this' from the containing basic block, but does not delete it.

iplist< VPRecipeBase >::iterator

eraseFromParent ()

This method unlinks 'this' from the containing basic block and deletes it.

bool

mayHaveSideEffects () const

Returns true if the recipe may have side-effects.

bool

isPhi () const

Returns true for PHI-like recipes.

bool

mayReadFromMemory () const

Returns true if the recipe may read from memory.

bool

mayWriteToMemory () const

Returns true if the recipe may write to memory.

bool

mayReadOrWriteMemory () const

Returns true if the recipe may read from or write to memory.

DebugLoc

getDebugLoc () const

Returns the debug location of the recipe.

bool

isScalarCast () const

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 >

VPRecipeBase *

getPrevNode ()

VPRecipeBase *

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 >

self_iterator

getIterator ()

reverse_self_iterator

getReverseIterator ()

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 *

getParent () const

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 *

getVPSingleValue ()

Returns the only VPValue defined by the VPDef.

const VPValue *

getVPSingleValue () const

VPValue *

getVPValue (unsigned I)

Returns the VPValue with index I defined by the VPDef.

const VPValue *

getVPValue (unsigned I) const

ArrayRef< VPValue * >

definedValues ()

Returns an ArrayRef of the values defined by the VPDef.

ArrayRef< VPValue * >

definedValues () const

Returns an ArrayRef of the values defined by the VPDef.

unsigned

getNumDefinedValues () const

Returns the number of values defined by the VPDef.

unsigned

getVPDefID () const

LLVM_ABI_FOR_TEST void

dump () const

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)

unsigned

getNumOperands () const

VPValue *

getOperand (unsigned N) const

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.

operand_iterator

op_begin ()

const_operand_iterator

op_begin () const

operand_iterator

op_end ()

const_operand_iterator

op_end () const

operand_range

operands ()

const_operand_range

operands () const

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

VPIRMetadata (Instruction &I)

Adds metatadata that can be preserved from the original instruction I.

VPIRMetadata (const VPIRMetadata &Other)=default

Copy constructor for cloning.

VPIRMetadata &

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.

Definition at line 3245 of file VPlan.h.