LLVM 23.0.0git
llvm::VPlanPatternMatch Namespace Reference

Classes

struct  Argument_match
 Match a call argument at a given argument index. More...
struct  bind_apint
struct  bind_const_int
struct  bind_ty
struct  class_match
struct  Cmp_match
 Cmp_match is a variant of BinaryRecipe_match that also binds the comparison predicate. More...
struct  deferredval_ty
 Stores a reference to the VPValue *, not the VPValue * itself, thus can be used in commutative matchers. More...
struct  GetElementPtr_match
 Match a GEP recipe (VPWidenGEPRecipe, VPInstruction, or VPReplicateRecipe) and bind the source element type and operands. More...
struct  int_pred_ty
 Match an integer constant if Pred::isValue returns true for the APInt. More...
struct  IntrinsicID_match
 Intrinsic matchers. More...
struct  is_all_ones
struct  is_one
struct  is_specific_int
 Match a specified signed or unsigned integer value. More...
struct  is_zero_int
struct  Load_match
struct  m_Intrinsic_Ty
 Intrinsic matches are combinations of ID matchers, and argument matchers. More...
struct  m_Intrinsic_Ty< T0 >
struct  m_Intrinsic_Ty< T0, T1 >
struct  m_Intrinsic_Ty< T0, T1, T2 >
struct  match_combine_and
struct  match_combine_or
 Matching combinators. More...
struct  match_poison
struct  OneUse_match
struct  Recipe_match
struct  SpecificCmp_match
 SpecificCmp_match is a variant of Cmp_match that matches the comparison predicate, instead of binding it. More...
struct  specificval_ty
 Match a specified VPValue. More...
struct  Store_match

Typedefs

template<unsigned Bitwidth = 0>
using specific_intval = int_pred_ty<is_specific_int, Bitwidth>
template<unsigned Opcode, typename... OpTys>
using AllRecipe_match
template<unsigned Opcode, typename... OpTys>
using AllRecipe_commutative_match
template<unsigned Opcode, typename... OpTys>
using VPInstruction_match
template<unsigned Opcode, typename... OpTys>
using VPInstruction_commutative_match
template<typename Op0_t, typename Op1_t>
using GEPLikeRecipe_match
template<typename Op0_t, typename Op1_t, typename Op2_t>
using VPScalarIVSteps_match
template<typename Op0_t, typename Op1_t, typename Op2_t>
using VPDerivedIV_match
template<typename Op0_t, typename Op1_t>
using VectorEndPointerRecipe_match

Functions

template<typename Val, typename Pattern>
bool match (Val *V, const Pattern &P)
template<typename Val, typename Pattern>
auto match_fn (const Pattern &P)
 A match functor that can be used as a UnaryPredicate in functional algorithms like all_of.
template<typename Pattern>
bool match (VPUser *U, const Pattern &P)
template<typename Pattern>
auto match_fn (const Pattern &P)
 Match functor for VPUser.
template<typename Pattern>
bool match (VPSingleDefRecipe *R, const Pattern &P)
class_match< VPValuem_VPValue ()
 Match an arbitrary VPValue and ignore it.
specificval_ty m_Specific (const VPValue *VPV)
deferredval_ty m_Deferred (VPValue *const &V)
 Like m_Specific(), but works if the specific value to match is determined as part of the same match() expression.
specific_intval< 0 > m_SpecificInt (uint64_t V)
specific_intval< 0 > m_SpecificSInt (int64_t V)
specific_intval< 1 > m_False ()
specific_intval< 1 > m_True ()
int_pred_ty< is_all_onesm_AllOnes ()
 Match an integer or vector with all bits set.
int_pred_ty< is_zero_intm_ZeroInt ()
 Match an integer 0 or a vector with all elements equal to 0.
int_pred_ty< is_onem_One ()
 Match an integer 1 or a vector with all elements equal to 1.
bind_apint m_APInt (const APInt *&C)
match_poison m_Poison ()
 Match a VPIRValue that's poison.
bind_const_int m_ConstantInt (uint64_t &C)
 Match a plain integer constant no wider than 64-bits, capturing it if we match.
template<typename LTy, typename RTy>
match_combine_or< LTy, RTy > m_CombineOr (const LTy &L, const RTy &R)
 Combine two pattern matchers matching L || R.
template<typename LTy, typename RTy>
match_combine_and< LTy, RTy > m_CombineAnd (const LTy &L, const RTy &R)
 Combine two pattern matchers matching L && R.
bind_ty< VPValuem_VPValue (VPValue *&V)
 Match a VPValue, capturing it if we match.
bind_ty< VPIRValuem_VPIRValue (VPIRValue *&V)
 Match a VPIRValue.
bind_ty< VPInstructionm_VPInstruction (VPInstruction *&V)
 Match a VPInstruction, capturing if we match.
template<unsigned Opcode, typename... OpTys>
VPInstruction_match< Opcode, OpTys... > m_VPInstruction (const OpTys &...Ops)
template<unsigned Opcode, typename Op0_t, typename Op1_t>
VPInstruction_commutative_match< Opcode, Op0_t, Op1_tm_c_VPInstruction (const Op0_t &Op0, const Op1_t &Op1)
VPInstruction_match< VPInstruction::BuildVectorm_BuildVector ()
 BuildVector is matches only its opcode, w/o matching its operands as the number of operands is not fixed.
template<typename Op0_t>
VPInstruction_match< Instruction::Freeze, Op0_t > m_Freeze (const Op0_t &Op0)
VPInstruction_match< VPInstruction::BranchOnCondm_BranchOnCond ()
template<typename Op0_t>
VPInstruction_match< VPInstruction::BranchOnCond, Op0_t > m_BranchOnCond (const Op0_t &Op0)
VPInstruction_match< VPInstruction::BranchOnTwoCondsm_BranchOnTwoConds ()
template<typename Op0_t, typename Op1_t>
VPInstruction_match< VPInstruction::BranchOnTwoConds, Op0_t, Op1_tm_BranchOnTwoConds (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t>
VPInstruction_match< VPInstruction::Broadcast, Op0_t > m_Broadcast (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExplicitVectorLength, Op0_t > m_EVL (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastLane, Op0_t > m_ExtractLastLane (const Op0_t &Op0)
template<typename Op0_t, typename Op1_t>
VPInstruction_match< Instruction::ExtractElement, Op0_t, Op1_tm_ExtractElement (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
VPInstruction_match< VPInstruction::ExtractLane, Op0_t, Op1_tm_ExtractLane (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastPart, Op0_t > m_ExtractLastPart (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastLane, VPInstruction_match< VPInstruction::ExtractLastPart, Op0_t > > m_ExtractLastLaneOfLastPart (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractPenultimateElement, Op0_t > m_ExtractPenultimateElement (const Op0_t &Op0)
template<typename Op0_t, typename Op1_t, typename Op2_t>
VPInstruction_match< VPInstruction::ActiveLaneMask, Op0_t, Op1_t, Op2_t > m_ActiveLaneMask (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
VPInstruction_match< VPInstruction::BranchOnCountm_BranchOnCount ()
template<typename Op0_t, typename Op1_t>
VPInstruction_match< VPInstruction::BranchOnCount, Op0_t, Op1_tm_BranchOnCount (const Op0_t &Op0, const Op1_t &Op1)
VPInstruction_match< VPInstruction::AnyOfm_AnyOf ()
template<typename Op0_t>
VPInstruction_match< VPInstruction::AnyOf, Op0_t > m_AnyOf (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::FirstActiveLane, Op0_t > m_FirstActiveLane (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::LastActiveLane, Op0_t > m_LastActiveLane (const Op0_t &Op0)
template<typename Op0_t>
VPInstruction_match< VPInstruction::ComputeReductionResult, Op0_t > m_ComputeReductionResult (const Op0_t &Op0)
template<typename Op0_t, typename Op1_t>
bool matchFindIVResult (VPInstruction *VPI, Op0_t ReducedIV, Op1_t Start)
 Match FindIV result pattern: select(icmp ne ComputeReductionResult(ReducedIV), Sentinel), ComputeReductionResult(ReducedIV), Start.
template<typename Op0_t, typename Op1_t, typename Op2_t>
VPInstruction_match< VPInstruction::ComputeAnyOfResult, Op0_t, Op1_t, Op2_t > m_ComputeAnyOfResult (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
template<typename Op0_t>
VPInstruction_match< VPInstruction::Reverse, Op0_t > m_Reverse (const Op0_t &Op0)
VPInstruction_match< VPInstruction::StepVectorm_StepVector ()
template<typename Op0_t>
VPInstruction_match< VPInstruction::ExitingIVValue, Op0_t > m_ExitingIVValue (const Op0_t &Op0)
template<unsigned Opcode, typename Op0_t>
AllRecipe_match< Opcode, Op0_t > m_Unary (const Op0_t &Op0)
template<typename Op0_t>
AllRecipe_match< Instruction::Trunc, Op0_t > m_Trunc (const Op0_t &Op0)
template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::Trunc, Op0_t >, Op0_t > m_TruncOrSelf (const Op0_t &Op0)
template<typename Op0_t>
AllRecipe_match< Instruction::ZExt, Op0_t > m_ZExt (const Op0_t &Op0)
template<typename Op0_t>
AllRecipe_match< Instruction::SExt, Op0_t > m_SExt (const Op0_t &Op0)
template<typename Op0_t>
AllRecipe_match< Instruction::FPExt, Op0_t > m_FPExt (const Op0_t &Op0)
template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, AllRecipe_match< Instruction::SExt, Op0_t > > m_ZExtOrSExt (const Op0_t &Op0)
template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, Op0_t > m_ZExtOrSelf (const Op0_t &Op0)
template<typename Op0_t>
match_combine_or< match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, AllRecipe_match< Instruction::Trunc, Op0_t > >, Op0_t > m_ZExtOrTruncOrSelf (const Op0_t &Op0)
template<unsigned Opcode, typename Op0_t, typename Op1_t>
AllRecipe_match< Opcode, Op0_t, Op1_tm_Binary (const Op0_t &Op0, const Op1_t &Op1)
template<unsigned Opcode, typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Opcode, Op0_t, Op1_tm_c_Binary (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Add, Op0_t, Op1_tm_Add (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Add, Op0_t, Op1_tm_c_Add (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Sub, Op0_t, Op1_tm_Sub (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Mul, Op0_t, Op1_tm_Mul (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Mul, Op0_t, Op1_tm_c_Mul (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::FMul, Op0_t, Op1_tm_FMul (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::FAdd, Op0_t, Op1_tm_FAdd (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::FAdd, Op0_t, Op1_tm_c_FAdd (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::UDiv, Op0_t, Op1_tm_UDiv (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::And, Op0_t, Op1_tm_c_BinaryAnd (const Op0_t &Op0, const Op1_t &Op1)
 Match a binary AND operation.
template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Or, Op0_t, Op1_tm_BinaryOr (const Op0_t &Op0, const Op1_t &Op1)
 Match a binary OR operation.
template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Or, Op0_t, Op1_tm_c_BinaryOr (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp > m_ICmp (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp > m_ICmp (CmpPredicate &Pred, const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
SpecificCmp_match< Op0_t, Op1_t, Instruction::ICmp > m_SpecificICmp (CmpPredicate MatchPred, const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > m_Cmp (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > m_Cmp (CmpPredicate &Pred, const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
SpecificCmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > m_SpecificCmp (CmpPredicate MatchPred, const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
GEPLikeRecipe_match< Op0_t, Op1_tm_GetElementPtr (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t, typename Op2_t>
AllRecipe_match< Instruction::Select, Op0_t, Op1_t, Op2_t > m_Select (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
template<typename Op0_t>
match_combine_or< VPInstruction_match< VPInstruction::Not, Op0_t >, AllRecipe_commutative_match< Instruction::Xor, int_pred_ty< is_all_ones >, Op0_t > > m_Not (const Op0_t &Op0)
template<typename Op0_t, typename Op1_t, typename Op2_t>
auto m_c_Select (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
template<typename Op0_t, typename Op1_t>
match_combine_or< VPInstruction_match< VPInstruction::LogicalAnd, Op0_t, Op1_t >, AllRecipe_match< Instruction::Select, Op0_t, Op1_t, specific_intval< 1 > > > m_LogicalAnd (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
auto m_c_LogicalAnd (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
auto m_LogicalOr (const Op0_t &Op0, const Op1_t &Op1)
template<typename Op0_t, typename Op1_t>
auto m_c_LogicalOr (const Op0_t &Op0, const Op1_t &Op1)
auto m_CanonicalIV ()
template<typename Op0_t, typename Op1_t, typename Op2_t>
VPScalarIVSteps_match< Op0_t, Op1_t, Op2_t > m_ScalarIVSteps (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
template<typename Op0_t, typename Op1_t, typename Op2_t>
VPDerivedIV_match< Op0_t, Op1_t, Op2_t > m_DerivedIV (const Op0_t &Op0, const Op1_t &Op1, const Op2_t &Op2)
template<typename Addr_t, typename Mask_t>
Load_match< Addr_t, Mask_t > m_MaskedLoad (const Addr_t &Addr, const Mask_t &Mask)
 Match a (possibly reversed) masked load.
template<typename Addr_t, typename Val_t, typename Mask_t>
Store_match< Addr_t, Val_t, Mask_t > m_MaskedStore (const Addr_t &Addr, const Val_t &Val, const Mask_t &Mask)
 Match a (possibly reversed) masked store.
template<typename Op0_t, typename Op1_t>
VectorEndPointerRecipe_match< Op0_t, Op1_tm_VecEndPtr (const Op0_t &Op0, const Op1_t &Op1)
template<unsigned OpI, typename Opnd_t>
Argument_match< Opnd_t > m_Argument (const Opnd_t &Op)
 Match a call argument.
template<Intrinsic::ID IntrID>
IntrinsicID_match m_Intrinsic ()
 Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_VPValue(X), ...)
IntrinsicID_match m_Intrinsic (Intrinsic::ID IntrID)
 Match intrinsic calls with a runtime intrinsic ID.
template<Intrinsic::ID IntrID, typename T0>
m_Intrinsic_Ty< T0 >::Ty m_Intrinsic (const T0 &Op0)
template<Intrinsic::ID IntrID, typename T0, typename T1>
m_Intrinsic_Ty< T0, T1 >::Ty m_Intrinsic (const T0 &Op0, const T1 &Op1)
template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2>
m_Intrinsic_Ty< T0, T1, T2 >::Ty m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2)
template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2, typename T3>
m_Intrinsic_Ty< T0, T1, T2, T3 >::Ty m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3)
auto m_LiveIn ()
GetElementPtr_match m_GetElementPtr (Type *&SourceElementType, ArrayRef< VPValue * > &Operands)
 Match a GEP recipe with any number of operands and bind source element type and operands.
template<typename T>
OneUse_match< Tm_OneUse (const T &SubPattern)
bind_ty< VPReductionPHIRecipem_ReductionPhi (VPReductionPHIRecipe *&V)

Typedef Documentation

◆ AllRecipe_commutative_match

template<unsigned Opcode, typename... OpTys>
using llvm::VPlanPatternMatch::AllRecipe_commutative_match
Initial value:
Recipe_match<std::tuple<OpTys...>, Opcode, true,
This is a concrete Recipe that models a single VPlan-level instruction.
Definition VPlan.h:1174
VPReplicateRecipe replicates a given instruction producing multiple scalar copies of the original sca...
Definition VPlan.h:3157
VPWidenRecipe is a recipe for producing a widened instruction using the opcode and operands of the re...
Definition VPlan.h:1725

Definition at line 365 of file VPlanPatternMatch.h.

◆ AllRecipe_match

template<unsigned Opcode, typename... OpTys>
using llvm::VPlanPatternMatch::AllRecipe_match
Initial value:
Recipe_match<std::tuple<OpTys...>, Opcode, false,
VPWidenCastRecipe is a recipe to create vector cast instructions.
Definition VPlan.h:1781

Definition at line 359 of file VPlanPatternMatch.h.

◆ GEPLikeRecipe_match

template<typename Op0_t, typename Op1_t>
using llvm::VPlanPatternMatch::GEPLikeRecipe_match
Initial value:

Definition at line 792 of file VPlanPatternMatch.h.

◆ specific_intval

Definition at line 135 of file VPlanPatternMatch.h.

◆ VectorEndPointerRecipe_match

template<typename Op0_t, typename Op1_t>
using llvm::VPlanPatternMatch::VectorEndPointerRecipe_match
Initial value:
A recipe to compute a pointer to the last element of each part of a widened memory access for widened...
Definition VPlan.h:2095

Definition at line 932 of file VPlanPatternMatch.h.

◆ VPDerivedIV_match

template<typename Op0_t, typename Op1_t, typename Op2_t>
using llvm::VPlanPatternMatch::VPDerivedIV_match
Initial value:
A recipe for converting the input value IV value to the corresponding value of an IV with different s...
Definition VPlan.h:3941

Definition at line 875 of file VPlanPatternMatch.h.

◆ VPInstruction_commutative_match

template<unsigned Opcode, typename... OpTys>
using llvm::VPlanPatternMatch::VPInstruction_commutative_match
Initial value:
Recipe_match<std::tuple<OpTys...>, Opcode,

Definition at line 374 of file VPlanPatternMatch.h.

◆ VPInstruction_match

template<unsigned Opcode, typename... OpTys>
using llvm::VPlanPatternMatch::VPInstruction_match
Initial value:
Recipe_match<std::tuple<OpTys...>, Opcode,
false, VPInstruction>

Definition at line 370 of file VPlanPatternMatch.h.

◆ VPScalarIVSteps_match

template<typename Op0_t, typename Op1_t, typename Op2_t>
using llvm::VPlanPatternMatch::VPScalarIVSteps_match
Initial value:
A recipe for handling phi nodes of integer and floating-point inductions, producing their scalar valu...
Definition VPlan.h:4013

Definition at line 865 of file VPlanPatternMatch.h.

Function Documentation

◆ m_ActiveLaneMask()

template<typename Op0_t, typename Op1_t, typename Op2_t>
VPInstruction_match< VPInstruction::ActiveLaneMask, Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_ActiveLaneMask ( const Op0_t & Op0,
const Op1_t & Op1,
const Op2_t & Op2 )
inline

◆ m_Add()

template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Add, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_Add ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 617 of file VPlanPatternMatch.h.

References m_Binary().

◆ m_AllOnes()

int_pred_ty< is_all_ones > llvm::VPlanPatternMatch::m_AllOnes ( )
inline

Match an integer or vector with all bits set.

For vectors, this includes constants with undefined elements.

Definition at line 160 of file VPlanPatternMatch.h.

Referenced by m_Not().

◆ m_AnyOf() [1/2]

VPInstruction_match< VPInstruction::AnyOf > llvm::VPlanPatternMatch::m_AnyOf ( )
inline

◆ m_AnyOf() [2/2]

template<typename Op0_t>
VPInstruction_match< VPInstruction::AnyOf, Op0_t > llvm::VPlanPatternMatch::m_AnyOf ( const Op0_t & Op0)
inline

Definition at line 495 of file VPlanPatternMatch.h.

References m_VPInstruction().

◆ m_APInt()

bind_apint llvm::VPlanPatternMatch::m_APInt ( const APInt *& C)
inline

Definition at line 196 of file VPlanPatternMatch.h.

References llvm::CallingConv::C.

◆ m_Argument()

template<unsigned OpI, typename Opnd_t>
Argument_match< Opnd_t > llvm::VPlanPatternMatch::m_Argument ( const Opnd_t & Op)
inline

Match a call argument.

Definition at line 967 of file VPlanPatternMatch.h.

Referenced by m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), and m_Intrinsic().

◆ m_Binary()

template<unsigned Opcode, typename Op0_t, typename Op1_t>
AllRecipe_match< Opcode, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_Binary ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

◆ m_BinaryOr()

template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Or, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_BinaryOr ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Match a binary OR operation.

Note that while conceptually the operands can be matched commutatively, Commutative defaults to false in line with the IR-based pattern matching infrastructure. Use m_c_BinaryOr for a commutative version of the matcher.

Definition at line 683 of file VPlanPatternMatch.h.

References m_Binary().

Referenced by llvm::VPlanTransforms::dropPoisonGeneratingRecipes(), isConditionTrueViaVFAndUF(), and simplifyRecipe().

◆ m_BranchOnCond() [1/2]

◆ m_BranchOnCond() [2/2]

template<typename Op0_t>
VPInstruction_match< VPInstruction::BranchOnCond, Op0_t > llvm::VPlanPatternMatch::m_BranchOnCond ( const Op0_t & Op0)
inline

Definition at line 408 of file VPlanPatternMatch.h.

References m_VPInstruction().

◆ m_BranchOnCount() [1/2]

◆ m_BranchOnCount() [2/2]

template<typename Op0_t, typename Op1_t>
VPInstruction_match< VPInstruction::BranchOnCount, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_BranchOnCount ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 485 of file VPlanPatternMatch.h.

References m_VPInstruction().

◆ m_BranchOnTwoConds() [1/2]

◆ m_BranchOnTwoConds() [2/2]

template<typename Op0_t, typename Op1_t>
VPInstruction_match< VPInstruction::BranchOnTwoConds, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_BranchOnTwoConds ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 419 of file VPlanPatternMatch.h.

References m_VPInstruction().

◆ m_Broadcast()

template<typename Op0_t>
VPInstruction_match< VPInstruction::Broadcast, Op0_t > llvm::VPlanPatternMatch::m_Broadcast ( const Op0_t & Op0)
inline

Definition at line 425 of file VPlanPatternMatch.h.

References m_VPInstruction().

Referenced by optimizeVectorInductionWidthForTCAndVFUF(), and simplifyRecipe().

◆ m_BuildVector()

VPInstruction_match< VPInstruction::BuildVector > llvm::VPlanPatternMatch::m_BuildVector ( )
inline

BuildVector is matches only its opcode, w/o matching its operands as the number of operands is not fixed.

Definition at line 392 of file VPlanPatternMatch.h.

References m_VPInstruction().

Referenced by cloneForLane(), llvm::VPTransformState::get(), and simplifyRecipe().

◆ m_c_Add()

template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Add, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_Add ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 624 of file VPlanPatternMatch.h.

References m_c_Binary().

◆ m_c_Binary()

template<unsigned Opcode, typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Opcode, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_Binary ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 612 of file VPlanPatternMatch.h.

Referenced by m_c_Add(), m_c_BinaryAnd(), m_c_BinaryOr(), m_c_FAdd(), m_c_Mul(), and m_Not().

◆ m_c_BinaryAnd()

template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::And, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_BinaryAnd ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Match a binary AND operation.

Definition at line 673 of file VPlanPatternMatch.h.

References m_c_Binary().

Referenced by llvm::vputils::getSCEVExprForVPValue(), and simplifyRecipe().

◆ m_c_BinaryOr()

template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Or, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_BinaryOr ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 689 of file VPlanPatternMatch.h.

References m_c_Binary().

Referenced by simplifyRecipe().

◆ m_c_FAdd()

template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::FAdd, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_FAdd ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 660 of file VPlanPatternMatch.h.

References m_c_Binary().

◆ m_c_LogicalAnd()

template<typename Op0_t, typename Op1_t>
auto llvm::VPlanPatternMatch::m_c_LogicalAnd ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 844 of file VPlanPatternMatch.h.

References m_c_Select(), m_c_VPInstruction(), m_CombineOr(), and m_False().

◆ m_c_LogicalOr()

template<typename Op0_t, typename Op1_t>
auto llvm::VPlanPatternMatch::m_c_LogicalOr ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 858 of file VPlanPatternMatch.h.

References m_c_Select(), and m_True().

◆ m_c_Mul()

template<typename Op0_t, typename Op1_t>
AllRecipe_commutative_match< Instruction::Mul, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_Mul ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 642 of file VPlanPatternMatch.h.

References m_c_Binary().

◆ m_c_Select()

template<typename Op0_t, typename Op1_t, typename Op2_t>
auto llvm::VPlanPatternMatch::m_c_Select ( const Op0_t & Op0,
const Op1_t & Op1,
const Op2_t & Op2 )
inline

Definition at line 829 of file VPlanPatternMatch.h.

References m_CombineOr(), m_Not(), and m_Select().

Referenced by m_c_LogicalAnd(), and m_c_LogicalOr().

◆ m_c_VPInstruction()

template<unsigned Opcode, typename Op0_t, typename Op1_t>
VPInstruction_commutative_match< Opcode, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_c_VPInstruction ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 386 of file VPlanPatternMatch.h.

Referenced by m_c_LogicalAnd(), and m_LogicalOr().

◆ m_CanonicalIV()

auto llvm::VPlanPatternMatch::m_CanonicalIV ( )
inline

Definition at line 862 of file VPlanPatternMatch.h.

Referenced by isKnownMonotonic().

◆ m_Cmp() [1/2]

template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > llvm::VPlanPatternMatch::m_Cmp ( CmpPredicate & Pred,
const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 779 of file VPlanPatternMatch.h.

◆ m_Cmp() [2/2]

template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > llvm::VPlanPatternMatch::m_Cmp ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 772 of file VPlanPatternMatch.h.

◆ m_CombineAnd()

template<typename LTy, typename RTy>
match_combine_and< LTy, RTy > llvm::VPlanPatternMatch::m_CombineAnd ( const LTy & L,
const RTy & R )
inline

Combine two pattern matchers matching L && R.

Definition at line 260 of file VPlanPatternMatch.h.

Referenced by m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), and m_Intrinsic().

◆ m_CombineOr()

template<typename LTy, typename RTy>
match_combine_or< LTy, RTy > llvm::VPlanPatternMatch::m_CombineOr ( const LTy & L,
const RTy & R )
inline

Combine two pattern matchers matching L || R.

Definition at line 254 of file VPlanPatternMatch.h.

Referenced by m_c_LogicalAnd(), m_c_Select(), m_GetElementPtr(), m_LogicalAnd(), m_LogicalOr(), m_Not(), m_TruncOrSelf(), m_ZExtOrSelf(), m_ZExtOrSExt(), and m_ZExtOrTruncOrSelf().

◆ m_ComputeAnyOfResult()

template<typename Op0_t, typename Op1_t, typename Op2_t>
VPInstruction_match< VPInstruction::ComputeAnyOfResult, Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_ComputeAnyOfResult ( const Op0_t & Op0,
const Op1_t & Op1,
const Op2_t & Op2 )
inline

Definition at line 531 of file VPlanPatternMatch.h.

References m_VPInstruction().

◆ m_ComputeReductionResult()

template<typename Op0_t>
VPInstruction_match< VPInstruction::ComputeReductionResult, Op0_t > llvm::VPlanPatternMatch::m_ComputeReductionResult ( const Op0_t & Op0)
inline

◆ m_ConstantInt()

bind_const_int llvm::VPlanPatternMatch::m_ConstantInt ( uint64_t & C)
inline

Match a plain integer constant no wider than 64-bits, capturing it if we match.

Definition at line 227 of file VPlanPatternMatch.h.

References llvm::CallingConv::C.

◆ m_Deferred()

deferredval_ty llvm::VPlanPatternMatch::m_Deferred ( VPValue *const & V)
inline

Like m_Specific(), but works if the specific value to match is determined as part of the same match() expression.

For example: m_Mul(m_VPValue(X), m_Specific(X)) is incorrect, because m_Specific() will bind X before the pattern match starts. m_Mul(m_VPValue(X), m_Deferred(X)) is correct, and will check against whichever value m_VPValue(X) populated.

Definition at line 96 of file VPlanPatternMatch.h.

◆ m_DerivedIV()

template<typename Op0_t, typename Op1_t, typename Op2_t>
VPDerivedIV_match< Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_DerivedIV ( const Op0_t & Op0,
const Op1_t & Op1,
const Op2_t & Op2 )
inline

Definition at line 880 of file VPlanPatternMatch.h.

Referenced by isKnownMonotonic(), and simplifyRecipe().

◆ m_EVL()

template<typename Op0_t>
VPInstruction_match< VPInstruction::ExplicitVectorLength, Op0_t > llvm::VPlanPatternMatch::m_EVL ( const Op0_t & Op0)
inline

◆ m_ExitingIVValue()

template<typename Op0_t>
VPInstruction_match< VPInstruction::ExitingIVValue, Op0_t > llvm::VPlanPatternMatch::m_ExitingIVValue ( const Op0_t & Op0)
inline

Definition at line 547 of file VPlanPatternMatch.h.

References m_VPInstruction().

Referenced by optimizeLatchExitInductionUser().

◆ m_ExtractElement()

template<typename Op0_t, typename Op1_t>
VPInstruction_match< Instruction::ExtractElement, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_ExtractElement ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 443 of file VPlanPatternMatch.h.

References m_VPInstruction().

Referenced by simplifyRecipe().

◆ m_ExtractLane()

template<typename Op0_t, typename Op1_t>
VPInstruction_match< VPInstruction::ExtractLane, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_ExtractLane ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

◆ m_ExtractLastLane()

template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastLane, Op0_t > llvm::VPlanPatternMatch::m_ExtractLastLane ( const Op0_t & Op0)
inline

◆ m_ExtractLastLaneOfLastPart()

template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastLane, VPInstruction_match< VPInstruction::ExtractLastPart, Op0_t > > llvm::VPlanPatternMatch::m_ExtractLastLaneOfLastPart ( const Op0_t & Op0)
inline

◆ m_ExtractLastPart()

template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractLastPart, Op0_t > llvm::VPlanPatternMatch::m_ExtractLastPart ( const Op0_t & Op0)
inline

◆ m_ExtractPenultimateElement()

template<typename Op0_t>
VPInstruction_match< VPInstruction::ExtractPenultimateElement, Op0_t > llvm::VPlanPatternMatch::m_ExtractPenultimateElement ( const Op0_t & Op0)
inline

Definition at line 469 of file VPlanPatternMatch.h.

References m_VPInstruction().

Referenced by simplifyRecipe().

◆ m_FAdd()

template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::FAdd, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_FAdd ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 654 of file VPlanPatternMatch.h.

References m_Binary().

◆ m_False()

◆ m_FirstActiveLane()

template<typename Op0_t>
VPInstruction_match< VPInstruction::FirstActiveLane, Op0_t > llvm::VPlanPatternMatch::m_FirstActiveLane ( const Op0_t & Op0)
inline

Definition at line 501 of file VPlanPatternMatch.h.

References m_VPInstruction().

Referenced by optimizeEarlyExitInductionUser().

◆ m_FMul()

template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::FMul, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_FMul ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 648 of file VPlanPatternMatch.h.

References m_Binary().

◆ m_FPExt()

template<typename Op0_t>
AllRecipe_match< Instruction::FPExt, Op0_t > llvm::VPlanPatternMatch::m_FPExt ( const Op0_t & Op0)
inline

Definition at line 578 of file VPlanPatternMatch.h.

References m_Unary().

◆ m_Freeze()

template<typename Op0_t>
VPInstruction_match< Instruction::Freeze, Op0_t > llvm::VPlanPatternMatch::m_Freeze ( const Op0_t & Op0)
inline

Definition at line 398 of file VPlanPatternMatch.h.

References m_VPInstruction().

◆ m_GetElementPtr() [1/2]

template<typename Op0_t, typename Op1_t>
GEPLikeRecipe_match< Op0_t, Op1_t > llvm::VPlanPatternMatch::m_GetElementPtr ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

◆ m_GetElementPtr() [2/2]

GetElementPtr_match llvm::VPlanPatternMatch::m_GetElementPtr ( Type *& SourceElementType,
ArrayRef< VPValue * > & Operands )
inline

Match a GEP recipe with any number of operands and bind source element type and operands.

Definition at line 1109 of file VPlanPatternMatch.h.

◆ m_ICmp() [1/2]

template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp > llvm::VPlanPatternMatch::m_ICmp ( CmpPredicate & Pred,
const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 759 of file VPlanPatternMatch.h.

◆ m_ICmp() [2/2]

template<typename Op0_t, typename Op1_t>
Cmp_match< Op0_t, Op1_t, Instruction::ICmp > llvm::VPlanPatternMatch::m_ICmp ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 752 of file VPlanPatternMatch.h.

◆ m_Intrinsic() [1/6]

template<Intrinsic::ID IntrID>
IntrinsicID_match llvm::VPlanPatternMatch::m_Intrinsic ( )
inline

Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_VPValue(X), ...)

Definition at line 1029 of file VPlanPatternMatch.h.

Referenced by m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), and m_Intrinsic().

◆ m_Intrinsic() [2/6]

template<Intrinsic::ID IntrID, typename T0>
m_Intrinsic_Ty< T0 >::Ty llvm::VPlanPatternMatch::m_Intrinsic ( const T0 & Op0)
inline

Definition at line 1039 of file VPlanPatternMatch.h.

References m_Argument(), m_CombineAnd(), and m_Intrinsic().

◆ m_Intrinsic() [3/6]

template<Intrinsic::ID IntrID, typename T0, typename T1>
m_Intrinsic_Ty< T0, T1 >::Ty llvm::VPlanPatternMatch::m_Intrinsic ( const T0 & Op0,
const T1 & Op1 )
inline

Definition at line 1044 of file VPlanPatternMatch.h.

References m_Argument(), m_CombineAnd(), m_Intrinsic(), and T1.

◆ m_Intrinsic() [4/6]

template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2>
m_Intrinsic_Ty< T0, T1, T2 >::Ty llvm::VPlanPatternMatch::m_Intrinsic ( const T0 & Op0,
const T1 & Op1,
const T2 & Op2 )
inline

Definition at line 1051 of file VPlanPatternMatch.h.

References m_Argument(), m_CombineAnd(), m_Intrinsic(), and T1.

◆ m_Intrinsic() [5/6]

template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2, typename T3>
m_Intrinsic_Ty< T0, T1, T2, T3 >::Ty llvm::VPlanPatternMatch::m_Intrinsic ( const T0 & Op0,
const T1 & Op1,
const T2 & Op2,
const T3 & Op3 )
inline

Definition at line 1058 of file VPlanPatternMatch.h.

References m_Argument(), m_CombineAnd(), m_Intrinsic(), and T1.

◆ m_Intrinsic() [6/6]

IntrinsicID_match llvm::VPlanPatternMatch::m_Intrinsic ( Intrinsic::ID IntrID)
inline

Match intrinsic calls with a runtime intrinsic ID.

Definition at line 1034 of file VPlanPatternMatch.h.

◆ m_LastActiveLane()

template<typename Op0_t>
VPInstruction_match< VPInstruction::LastActiveLane, Op0_t > llvm::VPlanPatternMatch::m_LastActiveLane ( const Op0_t & Op0)
inline

◆ m_LiveIn()

auto llvm::VPlanPatternMatch::m_LiveIn ( )
inline

◆ m_LogicalAnd()

template<typename Op0_t, typename Op1_t>
match_combine_or< VPInstruction_match< VPInstruction::LogicalAnd, Op0_t, Op1_t >, AllRecipe_match< Instruction::Select, Op0_t, Op1_t, specific_intval< 1 > > > llvm::VPlanPatternMatch::m_LogicalAnd ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 837 of file VPlanPatternMatch.h.

References m_CombineOr(), m_False(), m_Select(), and m_VPInstruction().

◆ m_LogicalOr()

template<typename Op0_t, typename Op1_t>
auto llvm::VPlanPatternMatch::m_LogicalOr ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 851 of file VPlanPatternMatch.h.

References m_c_VPInstruction(), m_CombineOr(), m_Select(), and m_True().

◆ m_MaskedLoad()

template<typename Addr_t, typename Mask_t>
Load_match< Addr_t, Mask_t > llvm::VPlanPatternMatch::m_MaskedLoad ( const Addr_t & Addr,
const Mask_t & Mask )
inline

Match a (possibly reversed) masked load.

Definition at line 901 of file VPlanPatternMatch.h.

◆ m_MaskedStore()

template<typename Addr_t, typename Val_t, typename Mask_t>
Store_match< Addr_t, Val_t, Mask_t > llvm::VPlanPatternMatch::m_MaskedStore ( const Addr_t & Addr,
const Val_t & Val,
const Mask_t & Mask )
inline

Match a (possibly reversed) masked store.

Definition at line 927 of file VPlanPatternMatch.h.

◆ m_Mul()

template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Mul, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_Mul ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 635 of file VPlanPatternMatch.h.

References m_Binary().

◆ m_Not()

template<typename Op0_t>
match_combine_or< VPInstruction_match< VPInstruction::Not, Op0_t >, AllRecipe_commutative_match< Instruction::Xor, int_pred_ty< is_all_ones >, Op0_t > > llvm::VPlanPatternMatch::m_Not ( const Op0_t & Op0)
inline

Definition at line 823 of file VPlanPatternMatch.h.

References m_AllOnes(), m_c_Binary(), m_CombineOr(), and m_VPInstruction().

Referenced by m_c_Select().

◆ m_One()

int_pred_ty< is_one > llvm::VPlanPatternMatch::m_One ( )
inline

Match an integer 1 or a vector with all elements equal to 1.

For vectors, this includes constants with undefined elements.

Definition at line 180 of file VPlanPatternMatch.h.

◆ m_OneUse()

template<typename T>
OneUse_match< T > llvm::VPlanPatternMatch::m_OneUse ( const T & SubPattern)
inline

Definition at line 1124 of file VPlanPatternMatch.h.

References T.

◆ m_Poison()

match_poison llvm::VPlanPatternMatch::m_Poison ( )
inline

Match a VPIRValue that's poison.

Definition at line 223 of file VPlanPatternMatch.h.

◆ m_ReductionPhi()

bind_ty< VPReductionPHIRecipe > llvm::VPlanPatternMatch::m_ReductionPhi ( VPReductionPHIRecipe *& V)
inline

Definition at line 1128 of file VPlanPatternMatch.h.

◆ m_Reverse()

template<typename Op0_t>
VPInstruction_match< VPInstruction::Reverse, Op0_t > llvm::VPlanPatternMatch::m_Reverse ( const Op0_t & Op0)
inline

◆ m_ScalarIVSteps()

template<typename Op0_t, typename Op1_t, typename Op2_t>
VPScalarIVSteps_match< Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_ScalarIVSteps ( const Op0_t & Op0,
const Op1_t & Op1,
const Op2_t & Op2 )
inline

Definition at line 870 of file VPlanPatternMatch.h.

Referenced by llvm::vputils::isHeaderMask().

◆ m_Select()

template<typename Op0_t, typename Op1_t, typename Op2_t>
AllRecipe_match< Instruction::Select, Op0_t, Op1_t, Op2_t > llvm::VPlanPatternMatch::m_Select ( const Op0_t & Op0,
const Op1_t & Op1,
const Op2_t & Op2 )
inline

◆ m_SExt()

template<typename Op0_t>
AllRecipe_match< Instruction::SExt, Op0_t > llvm::VPlanPatternMatch::m_SExt ( const Op0_t & Op0)
inline

Definition at line 573 of file VPlanPatternMatch.h.

References m_Unary().

Referenced by m_ZExtOrSExt().

◆ m_Specific()

specificval_ty llvm::VPlanPatternMatch::m_Specific ( const VPValue * VPV)
inline

Definition at line 78 of file VPlanPatternMatch.h.

◆ m_SpecificCmp()

template<typename Op0_t, typename Op1_t>
SpecificCmp_match< Op0_t, Op1_t, Instruction::ICmp, Instruction::FCmp > llvm::VPlanPatternMatch::m_SpecificCmp ( CmpPredicate MatchPred,
const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 786 of file VPlanPatternMatch.h.

◆ m_SpecificICmp()

template<typename Op0_t, typename Op1_t>
SpecificCmp_match< Op0_t, Op1_t, Instruction::ICmp > llvm::VPlanPatternMatch::m_SpecificICmp ( CmpPredicate MatchPred,
const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 765 of file VPlanPatternMatch.h.

Referenced by matchFindIVResult().

◆ m_SpecificInt()

specific_intval< 0 > llvm::VPlanPatternMatch::m_SpecificInt ( uint64_t V)
inline

Definition at line 137 of file VPlanPatternMatch.h.

◆ m_SpecificSInt()

specific_intval< 0 > llvm::VPlanPatternMatch::m_SpecificSInt ( int64_t V)
inline

Definition at line 141 of file VPlanPatternMatch.h.

◆ m_StepVector()

VPInstruction_match< VPInstruction::StepVector > llvm::VPlanPatternMatch::m_StepVector ( )
inline

Definition at line 541 of file VPlanPatternMatch.h.

References m_VPInstruction().

Referenced by isKnownMonotonic(), and llvm::VPlanTransforms::optimizeEVLMasks().

◆ m_Sub()

template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::Sub, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_Sub ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 629 of file VPlanPatternMatch.h.

References m_Binary().

◆ m_True()

◆ m_Trunc()

template<typename Op0_t>
AllRecipe_match< Instruction::Trunc, Op0_t > llvm::VPlanPatternMatch::m_Trunc ( const Op0_t & Op0)
inline

Definition at line 557 of file VPlanPatternMatch.h.

References m_Unary().

Referenced by m_TruncOrSelf(), and m_ZExtOrTruncOrSelf().

◆ m_TruncOrSelf()

template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::Trunc, Op0_t >, Op0_t > llvm::VPlanPatternMatch::m_TruncOrSelf ( const Op0_t & Op0)
inline

Definition at line 563 of file VPlanPatternMatch.h.

References m_CombineOr(), and m_Trunc().

◆ m_UDiv()

template<typename Op0_t, typename Op1_t>
AllRecipe_match< Instruction::UDiv, Op0_t, Op1_t > llvm::VPlanPatternMatch::m_UDiv ( const Op0_t & Op0,
const Op1_t & Op1 )
inline

Definition at line 666 of file VPlanPatternMatch.h.

References m_Binary().

◆ m_Unary()

template<unsigned Opcode, typename Op0_t>
AllRecipe_match< Opcode, Op0_t > llvm::VPlanPatternMatch::m_Unary ( const Op0_t & Op0)
inline

Definition at line 552 of file VPlanPatternMatch.h.

Referenced by m_FPExt(), m_SExt(), m_Trunc(), and m_ZExt().

◆ m_VecEndPtr()

template<typename Op0_t, typename Op1_t>
VectorEndPointerRecipe_match< Op0_t, Op1_t > llvm::VPlanPatternMatch::m_VecEndPtr ( const Op0_t & Op0,
const Op1_t & Op1 )

Definition at line 937 of file VPlanPatternMatch.h.

Referenced by optimizeMaskToEVL().

◆ m_VPInstruction() [1/2]

template<unsigned Opcode, typename... OpTys>
VPInstruction_match< Opcode, OpTys... > llvm::VPlanPatternMatch::m_VPInstruction ( const OpTys &... Ops)
inline

◆ m_VPInstruction() [2/2]

◆ m_VPIRValue()

bind_ty< VPIRValue > llvm::VPlanPatternMatch::m_VPIRValue ( VPIRValue *& V)
inline

Match a VPIRValue.

Definition at line 268 of file VPlanPatternMatch.h.

Referenced by simplifyRecipe().

◆ m_VPValue() [1/2]

class_match< VPValue > llvm::VPlanPatternMatch::m_VPValue ( )
inline

Match an arbitrary VPValue and ignore it.

Definition at line 53 of file VPlanPatternMatch.h.

Referenced by llvm::VPlanTransforms::adjustFixedOrderRecurrences(), llvm::calculateRegisterUsageForPlan(), cloneForLane(), llvm::VPInstruction::computeCost(), llvm::VPlanTransforms::convertEVLExitCond(), llvm::VPlanTransforms::convertToConcreteRecipes(), llvm::VPlanTransforms::createInLoopReductionRecipes(), llvm::VPlanTransforms::createPartialReductions(), createWidenInductionRecipe(), llvm::VPlanTransforms::dropPoisonGeneratingRecipes(), llvm::vputils::findComputeReductionResult(), findFindIVSelect(), fixReductionScalarResumeWhenVectorizingEpilog(), fixupVFUsersForEVL(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), getOptimizableIVOf(), llvm::vputils::getRecipesForUncountableExit(), llvm::vputils::getSCEVExprForVPValue(), llvm::VPlanTransforms::handleFindLastReductions(), handleFirstArgMinOrMax(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleMultiUseReductions(), llvm::VPlanTransforms::handleUncountableEarlyExits(), llvm::VPlanTransforms::introduceMasksAndLinearize(), isConditionTrueViaVFAndUF(), llvm::vputils::isHeaderMask(), isKnownMonotonic(), RemoveMask_match< Op0_t, Op1_t >::match(), matchFindIVResult(), llvm::VPlanTransforms::narrowInterleaveGroups(), optimizeEarlyExitInductionUser(), llvm::VPlanTransforms::optimizeEVLMasks(), llvm::VPlanTransforms::optimizeFindIVReductions(), optimizeLatchExitInductionUser(), optimizeMaskToEVL(), preparePlanForMainVectorLoop(), reassociateHeaderMask(), llvm::VPlanTransforms::removeBranchOnConst(), removeCommonBlendMask(), simplifyBlends(), simplifyBranchConditionForVFAndUF(), simplifyKnownEVL(), simplifyRecipe(), llvm::VPlanTransforms::truncateToMinimalBitwidths(), tryToMatchAndCreateExtendedReduction(), tryToMatchAndCreateMulAccumulateReduction(), and tryToReplaceALMWithWideALM().

◆ m_VPValue() [2/2]

bind_ty< VPValue > llvm::VPlanPatternMatch::m_VPValue ( VPValue *& V)
inline

Match a VPValue, capturing it if we match.

Definition at line 265 of file VPlanPatternMatch.h.

◆ m_ZeroInt()

int_pred_ty< is_zero_int > llvm::VPlanPatternMatch::m_ZeroInt ( )
inline

Match an integer 0 or a vector with all elements equal to 0.

For vectors, this includes constants with undefined elements.

Definition at line 174 of file VPlanPatternMatch.h.

Referenced by preparePlanForEpilogueVectorLoop().

◆ m_ZExt()

template<typename Op0_t>
AllRecipe_match< Instruction::ZExt, Op0_t > llvm::VPlanPatternMatch::m_ZExt ( const Op0_t & Op0)
inline

Definition at line 568 of file VPlanPatternMatch.h.

References m_Unary().

Referenced by m_ZExtOrSelf(), m_ZExtOrSExt(), and m_ZExtOrTruncOrSelf().

◆ m_ZExtOrSelf()

template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, Op0_t > llvm::VPlanPatternMatch::m_ZExtOrSelf ( const Op0_t & Op0)
inline

Definition at line 591 of file VPlanPatternMatch.h.

References m_CombineOr(), and m_ZExt().

◆ m_ZExtOrSExt()

template<typename Op0_t>
match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, AllRecipe_match< Instruction::SExt, Op0_t > > llvm::VPlanPatternMatch::m_ZExtOrSExt ( const Op0_t & Op0)
inline

Definition at line 585 of file VPlanPatternMatch.h.

References m_CombineOr(), m_SExt(), and m_ZExt().

Referenced by fixReductionScalarResumeWhenVectorizingEpilog().

◆ m_ZExtOrTruncOrSelf()

template<typename Op0_t>
match_combine_or< match_combine_or< AllRecipe_match< Instruction::ZExt, Op0_t >, AllRecipe_match< Instruction::Trunc, Op0_t > >, Op0_t > llvm::VPlanPatternMatch::m_ZExtOrTruncOrSelf ( const Op0_t & Op0)
inline

Definition at line 600 of file VPlanPatternMatch.h.

References m_CombineOr(), m_Trunc(), and m_ZExt().

◆ match() [1/3]

template<typename Val, typename Pattern>
bool llvm::VPlanPatternMatch::match ( Val * V,
const Pattern & P )

Definition at line 22 of file VPlanPatternMatch.h.

References P.

Referenced by match(), matchFindIVResult(), and preparePlanForEpilogueVectorLoop().

◆ match() [2/3]

template<typename Pattern>
bool llvm::VPlanPatternMatch::match ( VPSingleDefRecipe * R,
const Pattern & P )

Definition at line 42 of file VPlanPatternMatch.h.

References P.

◆ match() [3/3]

template<typename Pattern>
bool llvm::VPlanPatternMatch::match ( VPUser * U,
const Pattern & P )

Definition at line 32 of file VPlanPatternMatch.h.

References llvm::dyn_cast(), match(), and P.

◆ match_fn() [1/2]

template<typename Val, typename Pattern>
auto llvm::VPlanPatternMatch::match_fn ( const Pattern & P)

A match functor that can be used as a UnaryPredicate in functional algorithms like all_of.

Definition at line 28 of file VPlanPatternMatch.h.

References llvm::bind_back(), and P.

◆ match_fn() [2/2]

template<typename Pattern>
auto llvm::VPlanPatternMatch::match_fn ( const Pattern & P)

Match functor for VPUser.

Definition at line 38 of file VPlanPatternMatch.h.

References llvm::bind_back(), and P.

◆ matchFindIVResult()

template<typename Op0_t, typename Op1_t>
bool llvm::VPlanPatternMatch::matchFindIVResult ( VPInstruction * VPI,
Op0_t ReducedIV,
Op1_t Start )
inline

Match FindIV result pattern: select(icmp ne ComputeReductionResult(ReducedIV), Sentinel), ComputeReductionResult(ReducedIV), Start.

Definition at line 521 of file VPlanPatternMatch.h.

References llvm::CmpInst::ICMP_NE, m_ComputeReductionResult(), m_Select(), m_SpecificICmp(), m_VPValue(), and match().

Referenced by findFindIVSelect(), and preparePlanForMainVectorLoop().