|
VPExpressionRecipe (VPWidenCastRecipe *Ext, VPReductionRecipe *Red) |
|
VPExpressionRecipe (VPWidenRecipe *Mul, VPReductionRecipe *Red) |
|
VPExpressionRecipe (VPWidenCastRecipe *Ext0, VPWidenCastRecipe *Ext1, VPWidenRecipe *Mul, VPReductionRecipe *Red) |
|
VPExpressionRecipe (VPWidenCastRecipe *Ext0, VPWidenCastRecipe *Ext1, VPWidenRecipe *Mul, VPWidenRecipe *Sub, VPReductionRecipe *Red) |
|
~VPExpressionRecipe () override |
| VPExpressionRecipe * |
clone () override |
|
Clone the current recipe. |
| VPValue * |
getOperandOfResultType () const |
|
Return the VPValue to use to infer the result type of the recipe. |
| void |
decompose () |
|
Insert the recipes of the expression back into the VPlan, directly before the current recipe. |
| unsigned |
getVFScaleFactor () const |
| void |
execute (VPTransformState &State) override |
|
Method for generating code, must not be called as this recipe is abstract. |
| InstructionCost |
computeCost (ElementCount VF, VPCostContext &Ctx) const override |
|
Compute the cost of this recipe either using a recipe's specialized implementation or using the legacy cost model and the underlying instructions. |
| bool |
mayReadOrWriteMemory () const |
|
Returns true if this expression contains recipes that may read from or write to memory. |
| bool |
mayHaveSideEffects () const |
|
Returns true if this expression contains recipes that may have side effects. |
| bool |
isSingleScalar () const |
|
Returns true if the result of this VPExpressionRecipe is a single-scalar. |
| 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. |
| virtual bool |
usesFirstLaneOnly (const VPValue *Op) const |
|
Returns true if the VPUser only uses the first lane 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::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) |