| VPInterleaveBase * |
clone () override=0 |
|
Clone the current recipe. |
| VPValue * |
getAddr () const |
|
Return the address accessed by this recipe. |
| VPValue * |
getMask () const |
|
Return the mask used by this recipe. |
| bool |
needsMaskForGaps () const |
|
Return true if the access needs a mask because of the gaps. |
| const InterleaveGroup< Instruction > * |
getInterleaveGroup () const |
| Instruction * |
getInsertPos () const |
| void |
execute (VPTransformState &State) override |
|
The method which generates the output IR instructions that correspond to this VPRecipe, thereby "executing" the VPlan. |
| InstructionCost |
computeCost (ElementCount VF, VPCostContext &Ctx) const override |
|
Return the cost of this recipe. |
| bool |
usesFirstLaneOnly (const VPValue *Op) const override=0 |
|
Returns true if the recipe only uses the first lane of operand Op. |
| virtual unsigned |
getNumStoreOperands () const =0 |
|
Returns the number of stored operands of this interleave group. |
| ArrayRef< VPValue * > |
getStoredValues () const |
|
Return the VPValues stored by this interleave group. |
| 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. |
| virtual bool |
usesFirstPartOnly (const VPValue *Op) const |
|
Returns true if the VPUser only uses the first part of operand Op. |
| 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. |
| 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. |