| 
    LLVM 22.0.0git
    
   | 
 
A recipe for generating conditional branches on the bits of a mask. More...
#include "Transforms/Vectorize/VPlan.h"
Public Member Functions | |
| VPBranchOnMaskRecipe (VPValue *BlockInMask, DebugLoc DL) | |
| VPBranchOnMaskRecipe * | clone () override | 
| Clone the current recipe.   | |
| void | execute (VPTransformState &State) override | 
| Generate the extraction of the appropriate bit from the block mask and the conditional branch.   | |
| InstructionCost | computeCost (ElementCount VF, VPCostContext &Ctx) const override | 
| Return the cost of this VPBranchOnMaskRecipe.   | |
| void | print (raw_ostream &O, const Twine &Indent, VPSlotTracker &SlotTracker) const override | 
| Print the recipe.   | |
| bool | usesScalars (const VPValue *Op) const override | 
Returns true if the recipe uses scalars of operand Op.   | |
| 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.   | |
| 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 | 
| 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 | onlyFirstLaneUsed (const VPValue *Op) const | 
Returns true if the VPUser only uses the first lane of operand Op.   | |
| virtual bool | onlyFirstPartUsed (const VPValue *Op) const | 
Returns true if the VPUser only uses the first part of operand Op.   | |
A recipe for generating conditional branches on the bits of a mask.
Definition at line 2955 of file VPlan.h.
References llvm::VPRecipeBase::VPRecipeBase().
Referenced by clone().
      
  | 
  inlineoverridevirtual | 
Clone the current recipe.
Implements llvm::VPRecipeBase.
Definition at line 2958 of file VPlan.h.
References getDebugLoc(), llvm::VPUser::getOperand(), and VPBranchOnMaskRecipe().
      
  | 
  overridevirtual | 
Return the cost of this VPBranchOnMaskRecipe.
Reimplemented from llvm::VPRecipeBase.
Definition at line 3460 of file VPlanRecipes.cpp.
      
  | 
  overridevirtual | 
Generate the extraction of the appropriate bit from the block mask and the conditional branch.
Implements llvm::VPRecipeBase.
Definition at line 3443 of file VPlanRecipes.cpp.
References assert(), llvm::VPUser::getOperand(), and llvm::isa().
      
  | 
  inlineoverridevirtual | 
Print the recipe.
Implements llvm::VPDef.
Definition at line 2974 of file VPlan.h.
References llvm::VPUser::printOperands().
Returns true if the recipe uses scalars of operand Op. 
Reimplemented from llvm::VPUser.
Definition at line 2982 of file VPlan.h.
References assert(), llvm::is_contained(), and llvm::VPUser::operands().