|
VPVectorEndPointerRecipe (VPValue *Ptr, VPValue *VF, Type *IndexedTy, int64_t Stride, GEPNoWrapFlags GEPFlags, DebugLoc DL) |
| VPValue * |
getVFValue () |
| const VPValue * |
getVFValue () const |
| void |
execute (VPTransformState &State) override |
|
The method which generates the output IR instructions that correspond to this VPRecipe, thereby "executing" the VPlan. |
| bool |
usesFirstLaneOnly (const VPValue *Op) const override |
|
Returns true if the VPUser only uses the first lane of operand Op. |
| InstructionCost |
computeCost (ElementCount VF, VPCostContext &Ctx) const override |
|
Return the cost of this VPVectorPointerRecipe. |
| bool |
usesFirstPartOnly (const VPValue *Op) const override |
|
Returns true if the recipe only uses the first part of operand Op. |
| VPVectorEndPointerRecipe * |
clone () override |
|
Clone the current recipe. |
| Public Member Functions inherited from llvm::VPRecipeWithIRFlags |
|
|
VPRecipeWithIRFlags (const unsigned char SC, ArrayRef< VPValue * > Operands, const VPIRFlags &Flags, DebugLoc DL=DebugLoc::getUnknown()) |
| InstructionCost |
getCostForRecipeWithOpcode (unsigned Opcode, ElementCount VF, VPCostContext &Ctx) const |
|
Compute the cost for this recipe for VF, using Opcode and Ctx. |
| Public Member Functions inherited from llvm::VPSingleDefRecipe |
|
|
VPSingleDefRecipe (const unsigned char SC, ArrayRef< VPValue * > Operands, DebugLoc DL=DebugLoc::getUnknown()) |
|
VPSingleDefRecipe (const unsigned char SC, ArrayRef< VPValue * > Operands, Value *UV, DebugLoc DL=DebugLoc::getUnknown()) |
| Instruction * |
getUnderlyingInstr () |
|
Returns the underlying instruction. |
| const Instruction * |
getUnderlyingInstr () const |
| LLVM_ABI_FOR_TEST LLVM_DUMP_METHOD void |
dump () const |
|
Print this VPSingleDefRecipe to dbgs() (for debugging). |
| 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. |
| Public Member Functions inherited from llvm::VPValue |
|
| Value * |
getUnderlyingValue () const |
|
Return the underlying Value attached to this VPValue. |
|
VPValue (const VPValue &)=delete |
| VPValue & |
operator= (const VPValue &)=delete |
| virtual |
~VPValue () |
| unsigned |
getVPValueID () const |
| void |
printAsOperand (raw_ostream &OS, VPSlotTracker &Tracker) const |
| void |
print (raw_ostream &OS, VPSlotTracker &Tracker) const |
| void |
dump () const |
|
Dump the value to stderr (for debugging). |
| unsigned |
getNumUsers () const |
| void |
addUser (VPUser &User) |
| void |
removeUser (VPUser &User) |
|
Remove a single User from the list of users. |
| user_iterator |
user_begin () |
| const_user_iterator |
user_begin () const |
| user_iterator |
user_end () |
| const_user_iterator |
user_end () const |
| user_range |
users () |
| const_user_range |
users () const |
| bool |
hasMoreThanOneUniqueUser () const |
|
Returns true if the value has more than one unique user. |
| bool |
hasOneUse () const |
| VPUser * |
getSingleUser () |
|
Return the single user of this value, or nullptr if there is not exactly one user. |
| const VPUser * |
getSingleUser () const |
| void |
replaceAllUsesWith (VPValue *New) |
| void |
replaceUsesWithIf (VPValue *New, llvm::function_ref< bool(VPUser &U, unsigned Idx)> ShouldReplace) |
|
Go through the uses list for this VPValue and make each use point to New if the callback ShouldReplace returns true for the given use specified by a pair of (VPUser, the use index). |
| VPRecipeBase * |
getDefiningRecipe () |
|
Returns the recipe defining this VPValue or nullptr if it is not defined by a recipe, i.e. |
| const VPRecipeBase * |
getDefiningRecipe () const |
| bool |
hasDefiningRecipe () const |
|
Returns true if this VPValue is defined by a recipe. |
| bool |
isLiveIn () const |
|
Returns true if this VPValue is a live-in, i.e. defined outside the VPlan. |
| Value * |
getLiveInIRValue () const |
|
Returns the underlying IR value, if this VPValue is defined outside the scope of VPlan. |
| bool |
isDefinedOutsideLoopRegions () const |
|
Returns true if the VPValue is defined outside any loop. |
| void |
setUnderlyingValue (Value *Val) |
| Public Member Functions inherited from llvm::VPIRFlags |
|
|
VPIRFlags () |
|
VPIRFlags (Instruction &I) |
|
VPIRFlags (CmpInst::Predicate Pred) |
|
VPIRFlags (CmpInst::Predicate Pred, FastMathFlags FMFs) |
|
VPIRFlags (WrapFlagsTy WrapFlags) |
|
VPIRFlags (TruncFlagsTy TruncFlags) |
|
VPIRFlags (FastMathFlags FMFs) |
|
VPIRFlags (DisjointFlagsTy DisjointFlags) |
|
VPIRFlags (NonNegFlagsTy NonNegFlags) |
|
VPIRFlags (GEPNoWrapFlags GEPFlags) |
| void |
transferFlags (VPIRFlags &Other) |
| void |
intersectFlags (const VPIRFlags &Other) |
|
Only keep flags also present in Other. |
| void |
dropPoisonGeneratingFlags () |
|
Drop all poison-generating flags. |
| void |
applyFlags (Instruction &I) const |
|
Apply the IR flags to I. |
| CmpInst::Predicate |
getPredicate () const |
| void |
setPredicate (CmpInst::Predicate Pred) |
| GEPNoWrapFlags |
getGEPNoWrapFlags () const |
| bool |
hasPredicate () const |
|
Returns true if the recipe has a comparison predicate. |
| bool |
hasFastMathFlags () const |
|
Returns true if the recipe has fast-math flags. |
| LLVM_ABI_FOR_TEST FastMathFlags |
getFastMathFlags () const |
| bool |
hasNonNegFlag () const |
|
Returns true if the recipe has non-negative flag. |
| bool |
isNonNeg () const |
| bool |
hasNoUnsignedWrap () const |
| bool |
hasNoSignedWrap () const |
| bool |
isDisjoint () const |
| bool |
flagsValidForOpcode (unsigned Opcode) const |
|
Returns true if the set flags are valid for Opcode. |
| void |
printFlags (raw_ostream &O) const |