LLVM 24.0.0git
llvm::SDPatternMatch Namespace Reference

Classes

struct  AllOnes_match
struct  And
struct  And< Pred, Preds... >
struct  AnyZeroFP_match
struct  BinaryOpc_match
struct  Bool_match
struct  CondCode_match
struct  Constant64_match
struct  ConstantInt_match
struct  DeferredValue_match
struct  EffectiveOperands
 Provide number of operands that are not chain or glue, as well as the first index of such operand. More...
struct  FixedOpcode_match
struct  FunnelShiftLike_match
struct  m_Mask
struct  m_SpecificMask
struct  MaxMin_match
struct  Not
struct  NUses_match
struct  Ones_match
struct  Opcode_match
struct  Operands_match
struct  Operands_match< OpIdx, OpndPred, OpndPreds... >
struct  Or
struct  Or< Pred, Preds... >
struct  ReassociatableOpc_match
struct  Result_match
struct  SDShuffle_match
 Matching while capturing mask. More...
struct  smax_pred_ty
struct  smin_pred_ty
struct  SpecificFP_match
struct  SpecificInt_match
struct  SpecificNeg_match
struct  TernaryOpc_match
struct  TLI_pred_match
struct  umax_pred_ty
struct  umin_pred_ty
struct  UnaryOpc_match
struct  Value_bind
struct  Value_match
struct  ValueType_bind
struct  ValueType_match
struct  Zero_match

Functions

template<typename Pattern>
bool sd_match (SDValue N, Pattern &&P)
template<typename Pattern>
bool sd_match (SDNode *N, Pattern &&P)
Value_match m_Value ()
 Match any valid SDValue.
Value_match m_Specific (SDValue N)
template<unsigned ResNo, typename Pattern>
Result_match< ResNo, Pattern > m_Result (const Pattern &P)
 Match only if the SDValue is a certain result at ResNo.
DeferredValue_match m_Deferred (SDValue &V)
 Similar to m_Specific, but the specific value to match is determined by another sub-pattern in the same sd_match() expression.
template<typename Pred>
 Not (const Pred &P) -> Not< Pred >
template<typename Pred>
Not< Pred > m_Unless (const Pred &P)
 Match if the inner pattern does NOT match.
template<typename... Preds>
And< Preds... > m_AllOf (const Preds &...preds)
template<typename... Preds>
Or< Preds... > m_AnyOf (const Preds &...preds)
template<typename... Preds>
auto m_NoneOf (const Preds &...preds)
template<unsigned Opcode>
auto m_SpecificOpc ()
Opcode_match m_SpecificOpc (unsigned Opcode)
auto m_Undef ()
Opcode_match m_Poison ()
template<typename Pattern>
NUses_match< 1, Pattern > m_OneUse (const Pattern &P)
template<unsigned N, typename Pattern>
NUses_match< N, Pattern > m_NUses (const Pattern &P)
NUses_match< 1, Value_match > m_OneUse ()
template<unsigned N>
NUses_match< N, Value_match > m_NUses ()
auto m_Value (SDValue &N)
template<typename PredPattern>
auto m_Value (SDValue &N, const PredPattern &P)
 Conditionally bind an SDValue based on the predicate.
template<typename PredFuncT, typename Pattern>
 TLI_pred_match (const PredFuncT &Pred, const Pattern &P) -> TLI_pred_match< Pattern, PredFuncT >
template<typename Pattern>
auto m_LegalOp (const SelectionDAG &DAG, const Pattern &P)
 Match legal SDNodes based on the information provided by TargetLowering.
template<typename Pattern>
 ValueType_bind (const Pattern &P) -> ValueType_bind< Pattern >
auto m_VT (EVT &VT)
 Retreive the ValueType of the current SDValue.
template<typename Pattern>
auto m_VT (EVT &VT, const Pattern &P)
template<typename PredFuncT, typename Pattern>
 ValueType_match (const PredFuncT &Pred, const Pattern &P) -> ValueType_match< Pattern, PredFuncT >
template<typename Pattern>
auto m_SpecificVT (EVT RefVT, const Pattern &P)
 Match a specific ValueType.
auto m_SpecificVT (EVT RefVT)
auto m_Glue ()
auto m_OtherVT ()
template<typename Pattern>
auto m_SpecificScalarVT (EVT RefVT, const Pattern &P)
 Match a scalar ValueType.
auto m_SpecificScalarVT (EVT RefVT)
template<typename Pattern>
auto m_SpecificVectorElementVT (EVT RefVT, const Pattern &P)
 Match a vector ValueType.
auto m_SpecificVectorElementVT (EVT RefVT)
template<typename Pattern>
auto m_IntegerVT (const Pattern &P)
 Match any integer ValueTypes.
auto m_IntegerVT ()
template<typename Pattern>
auto m_FloatingPointVT (const Pattern &P)
 Match any floating point ValueTypes.
auto m_FloatingPointVT ()
template<typename Pattern>
auto m_VectorVT (const Pattern &P)
 Match any vector ValueTypes.
auto m_VectorVT ()
template<typename Pattern>
auto m_FixedVectorVT (const Pattern &P)
 Match fixed-length vector ValueTypes.
auto m_FixedVectorVT ()
template<typename Pattern>
auto m_ScalableVectorVT (const Pattern &P)
 Match scalable vector ValueTypes.
auto m_ScalableVectorVT ()
template<typename Pattern>
auto m_LegalType (const SelectionDAG &DAG, const Pattern &P)
 Match legal ValueTypes based on the information provided by TargetLowering.
template<unsigned Opcode, typename... OpndPreds>
auto m_Node (const OpndPreds &...Preds)
template<typename... OpndPreds>
auto m_Node (unsigned Opcode, const OpndPreds &...preds)
CondCode_match m_CondCode ()
 Match any conditional code SDNode.
CondCode_match m_CondCode (ISD::CondCode &CC)
 Match any conditional code SDNode and return its ISD::CondCode value.
CondCode_match m_SpecificCondCode (ISD::CondCode CC)
 Match a conditional code SDNode with a specific ISD::CondCode.
template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match > m_SetCC (const T0_P &LHS, const T1_P &RHS)
 Match a SETCC with any condition code.
template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match > m_SetCC (ISD::CondCode &CC, const T0_P &LHS, const T1_P &RHS)
 Match a SETCC with any condition code and bind the condition code to CC.
template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match > m_SpecificSetCC (ISD::CondCode CC, const T0_P &LHS, const T1_P &RHS)
 Match a SETCC with a specific condition code.
template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match, true, false > m_c_SetCC (const T0_P &LHS, const T1_P &RHS)
 Match a SETCC with any condition code, allowing the operands to be commuted.
template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match, true, false > m_c_SetCC (ISD::CondCode &CC, const T0_P &LHS, const T1_P &RHS)
 Match a SETCC with any condition code, allowing the operands to be commuted, and bind the condition code to CC.
template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match, true, false > m_c_SpecificSetCC (ISD::CondCode CC, const T0_P &LHS, const T1_P &RHS)
 Match a SETCC with a specific condition code, allowing the operands to be commuted.
template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > m_Select (const T0_P &Cond, const T1_P &T, const T2_P &F)
template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > m_VSelect (const T0_P &Cond, const T1_P &T, const T2_P &F)
template<typename T0_P, typename T1_P, typename T2_P>
auto m_SelectLike (const T0_P &Cond, const T1_P &T, const T2_P &F)
template<typename T0_P, typename T1_P, typename T2_P>
Result_match< 0, TernaryOpc_match< T0_P, T1_P, T2_P > > m_Load (const T0_P &Ch, const T1_P &Ptr, const T2_P &Offset)
template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > m_InsertElt (const T0_P &Vec, const T1_P &Val, const T2_P &Idx)
template<typename LHS, typename RHS, typename IDX>
TernaryOpc_match< LHS, RHS, IDX > m_InsertSubvector (const LHS &Base, const RHS &Sub, const IDX &Idx)
template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > m_SpliceRight (const T0_P &V1, const T1_P &V2, const T2_P &Offset)
template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > m_TernaryOp (unsigned Opc, const T0_P &Op0, const T1_P &Op1, const T2_P &Op2)
template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P, true > m_c_TernaryOp (unsigned Opc, const T0_P &Op0, const T1_P &Op1, const T2_P &Op2)
template<typename LTy, typename RTy, typename TTy, typename FTy>
auto m_SelectCC (const LTy &L, const RTy &R, const TTy &T, const FTy &F)
 Match a SELECT_CC with any condition code.
template<typename LTy, typename RTy, typename TTy, typename FTy>
auto m_SelectCC (ISD::CondCode &CC, const LTy &L, const RTy &R, const TTy &T, const FTy &F)
 Match a SELECT_CC with any condition code and bind the condition code to CC.
template<typename LTy, typename RTy, typename TTy, typename FTy>
auto m_SpecificSelectCC (ISD::CondCode CC, const LTy &L, const RTy &R, const TTy &T, const FTy &F)
 Match a SELECT_CC with a specific condition code.
template<typename LTy, typename RTy, typename TTy, typename FTy>
auto m_SelectCCLike (const LTy &L, const RTy &R, const TTy &T, const FTy &F)
 Match a SELECT of a SETCC or a SELECT_CC with any condition code.
template<typename LTy, typename RTy, typename TTy, typename FTy>
auto m_SelectCCLike (ISD::CondCode &CC, const LTy &L, const RTy &R, const TTy &T, const FTy &F)
 Match a SELECT of a SETCC or a SELECT_CC with any condition code and bind the condition code to CC.
template<typename LTy, typename RTy, typename TTy, typename FTy>
auto m_SpecificSelectCCLike (ISD::CondCode CC, const LTy &L, const RTy &R, const TTy &T, const FTy &F)
 Match a SELECT of a SETCC or a SELECT_CC with a specific condition code.
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_BinOp (unsigned Opc, const LHS &L, const RHS &R, SDNodeFlags Flgs=SDNodeFlags())
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_c_BinOp (unsigned Opc, const LHS &L, const RHS &R, SDNodeFlags Flgs=SDNodeFlags())
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, false, true > m_ChainedBinOp (unsigned Opc, const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true, true > m_c_ChainedBinOp (unsigned Opc, const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_Add (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_NUWAdd (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_NSWAdd (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_Sub (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_Mul (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_And (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_Or (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_DisjointOr (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_AddLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_NSWAddLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_NUWAddLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_Xor (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_BitwiseLogic (const LHS &L, const RHS &R)
template<unsigned Opc, typename Pred, typename LHS, typename RHS>
auto m_MaxMinLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_SMin (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_SMinLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_SMax (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_SMaxLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_UMin (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_UMinLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_UMax (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_UMaxLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_UDiv (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_SDiv (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_URem (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_SRem (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_Shl (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_Sra (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_Srl (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_ExactSr (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_Rotl (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_Rotr (const LHS &L, const RHS &R)
template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > m_FShL (const T0_P &Op0, const T1_P &Op1, const T2_P &Op2)
template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > m_FShR (const T0_P &Op0, const T1_P &Op1, const T2_P &Op2)
template<typename T0_P, typename T1_P, typename T2_P>
FunnelShiftLike_match< T0_P, T1_P, T2_P, true > m_FShLLike (const T0_P &Op0, const T1_P &Op1, const T2_P &Op2)
template<typename T0_P, typename T1_P, typename T2_P>
FunnelShiftLike_match< T0_P, T1_P, T2_P, false > m_FShRLike (const T0_P &Op0, const T1_P &Op1, const T2_P &Op2)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_Clmul (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_FAdd (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_FSub (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_FMul (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_FDiv (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_FRem (const LHS &L, const RHS &R)
template<typename V1_t, typename V2_t>
BinaryOpc_match< V1_t, V2_t > m_Shuffle (const V1_t &v1, const V2_t &v2)
template<typename V1_t, typename V2_t, typename Mask_t>
SDShuffle_match< V1_t, V2_t, Mask_t > m_Shuffle (const V1_t &v1, const V2_t &v2, const Mask_t &mask)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_ExtractElt (const LHS &Vec, const RHS &Idx)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > m_ExtractSubvector (const LHS &Vec, const RHS &Idx)
template<typename Opnd>
UnaryOpc_match< Opnd > m_UnaryOp (unsigned Opc, const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd, true > m_ChainedUnaryOp (unsigned Opc, const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_BitCast (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_BSwap (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_BitReverse (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_ZExt (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_NNegZExt (const Opnd &Op)
template<typename Opnd>
auto m_SExt (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_AnyExt (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_Trunc (const Opnd &Op)
template<typename Opnd>
auto m_Abs (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_FAbs (const Opnd &Op)
template<typename Opnd>
auto m_ZExtOrSelf (const Opnd &Op)
 Match a zext or identity Allows to peek through optional extensions.
template<typename Opnd>
auto m_SExtOrSelf (const Opnd &Op)
 Match a sext or identity Allows to peek through optional extensions.
template<typename Opnd>
auto m_SExtLike (const Opnd &Op)
template<typename Opnd>
auto m_ZExtOrSExt (const Opnd &Op)
 Match a zext or sext.
template<typename Opnd>
Or< UnaryOpc_match< Opnd >, Opnd > m_AExtOrSelf (const Opnd &Op)
 Match a aext or identity Allows to peek through optional extensions.
template<typename Opnd>
Or< UnaryOpc_match< Opnd >, Opnd > m_TruncOrSelf (const Opnd &Op)
 Match a trunc or identity Allows to peek through optional truncations.
template<typename Opnd>
UnaryOpc_match< Opnd > m_VScale (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_FPToUI (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_FPToSI (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_Ctpop (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_Ctlz (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_Cttz (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_FNeg (const Opnd &Op)
template<typename Opnd>
UnaryOpc_match< Opnd > m_VectorReverse (const Opnd &Op)
ConstantInt_match m_ConstInt ()
 Match any integer constants or splat of an integer constant.
ConstantInt_match m_ConstInt (APInt &V)
 Match any integer constants or splat of an integer constant; return the specific constant or constant splat value.
Constant64_match< uint64_t > m_ConstInt (uint64_t &V)
 Match any integer constants or splat of an integer constant that can fit in 64 bits; return the specific constant or constant splat value, zero-extended to 64 bits.
Constant64_match< int64_t > m_ConstInt (int64_t &V)
 Match any integer constants or splat of an integer constant that can fit in 64 bits; return the specific constant or constant splat value, sign-extended to 64 bits.
SpecificInt_match m_SpecificInt (APInt V)
 Match a specific integer constant or constant splat value.
SpecificInt_match m_SpecificInt (uint64_t V)
SpecificFP_match m_SpecificFP (APFloat V)
 Match a specific float constant.
SpecificFP_match m_SpecificFP (double V)
AnyZeroFP_match m_AnyZeroFP ()
 Match a floating-point +0.0 or -0.0 constant or splat.
Ones_match m_One (bool AllowUndefs=false)
Zero_match m_Zero (bool AllowUndefs=false)
AllOnes_match m_AllOnes (bool AllowUndefs=false)
auto m_True (const SelectionDAG &DAG)
 Match true boolean value based on the information provided by TargetLowering.
auto m_False (const SelectionDAG &DAG)
 Match false boolean value based on the information provided by TargetLowering.
template<typename ValTy>
BinaryOpc_match< Zero_match, ValTy, false > m_Neg (const ValTy &V)
 Match a negate as a sub(0, v)
template<typename ValTy>
BinaryOpc_match< ValTy, AllOnes_match, true > m_Not (const ValTy &V)
 Match a Not as a xor(v, -1) or xor(-1, v)
template<unsigned IntrinsicId, typename... OpndPreds>
auto m_IntrinsicWOChain (const OpndPreds &...Opnds)
SpecificNeg_match m_SpecificNeg (SDValue V)
 Match a negation of a specific value V, either as sub(0, V) or as constant(s) that are the negation of V's constant(s).
template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > m_ReassociatableAdd (const PatternTs &...Patterns)
template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > m_ReassociatableOr (const PatternTs &...Patterns)
template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > m_ReassociatableAnd (const PatternTs &...Patterns)
template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > m_ReassociatableMul (const PatternTs &...Patterns)
template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > m_ReassociatableNSWAdd (const PatternTs &...Patterns)
template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > m_ReassociatableNUWAdd (const PatternTs &...Patterns)

Function Documentation

◆ m_Abs()

template<typename Opnd>
auto llvm::SDPatternMatch::m_Abs ( const Opnd & Op)
inline

Definition at line 1160 of file SDPatternMatch.h.

References llvm::ISD::ABS, llvm::ISD::ABS_MIN_POISON, and m_AnyOf().

Referenced by combineBasicSADPattern().

◆ m_Add()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Add ( const LHS & L,
const RHS & R )
inline

Definition at line 816 of file SDPatternMatch.h.

References llvm::ISD::ADD, LHS, and RHS.

Referenced by m_AddLike().

◆ m_AddLike()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_AddLike ( const LHS & L,
const RHS & R )
inline

Definition at line 859 of file SDPatternMatch.h.

References LHS, m_Add(), m_AnyOf(), m_DisjointOr(), and RHS.

◆ m_AExtOrSelf()

template<typename Opnd>
Or< UnaryOpc_match< Opnd >, Opnd > llvm::SDPatternMatch::m_AExtOrSelf ( const Opnd & Op)
inline

Match a aext or identity Allows to peek through optional extensions.

Definition at line 1193 of file SDPatternMatch.h.

References m_AnyExt().

◆ m_AllOf()

template<typename... Preds>
And< Preds... > llvm::SDPatternMatch::m_AllOf ( const Preds &... preds)

Definition at line 147 of file SDPatternMatch.h.

Referenced by m_Node(), m_Node(), and m_Value().

◆ m_AllOnes()

AllOnes_match llvm::SDPatternMatch::m_AllOnes ( bool AllowUndefs = false)
inline

Definition at line 1405 of file SDPatternMatch.h.

◆ m_And()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_And ( const LHS & L,
const RHS & R )
inline

Definition at line 843 of file SDPatternMatch.h.

References llvm::ISD::AND, LHS, and RHS.

Referenced by m_BitwiseLogic().

◆ m_AnyExt()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_AnyExt ( const Opnd & Op)
inline

Definition at line 1152 of file SDPatternMatch.h.

References llvm::ISD::ANY_EXTEND.

Referenced by combineSCALAR_TO_VECTOR(), m_AExtOrSelf(), and visitORCommutative().

◆ m_AnyOf()

◆ m_AnyZeroFP()

AnyZeroFP_match llvm::SDPatternMatch::m_AnyZeroFP ( )
inline

Match a floating-point +0.0 or -0.0 constant or splat.

Definition at line 1373 of file SDPatternMatch.h.

◆ m_BinOp()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_BinOp ( unsigned Opc,
const LHS & L,
const RHS & R,
SDNodeFlags Flgs = SDNodeFlags() )
inline

Definition at line 791 of file SDPatternMatch.h.

References LHS, Opc, and RHS.

◆ m_BitCast()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_BitCast ( const Opnd & Op)
inline

Definition at line 1125 of file SDPatternMatch.h.

References llvm::ISD::BITCAST.

◆ m_BitReverse()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_BitReverse ( const Opnd & Op)
inline

Definition at line 1135 of file SDPatternMatch.h.

References llvm::ISD::BITREVERSE.

◆ m_BitwiseLogic()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_BitwiseLogic ( const LHS & L,
const RHS & R )
inline

Definition at line 879 of file SDPatternMatch.h.

References LHS, m_And(), m_AnyOf(), m_Or(), m_Xor(), and RHS.

◆ m_BSwap()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_BSwap ( const Opnd & Op)
inline

Definition at line 1130 of file SDPatternMatch.h.

References llvm::ISD::BSWAP.

◆ m_c_BinOp()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_c_BinOp ( unsigned Opc,
const LHS & L,
const RHS & R,
SDNodeFlags Flgs = SDNodeFlags() )
inline

Definition at line 798 of file SDPatternMatch.h.

References LHS, Opc, and RHS.

◆ m_c_ChainedBinOp()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true, true > llvm::SDPatternMatch::m_c_ChainedBinOp ( unsigned Opc,
const LHS & L,
const RHS & R )
inline

Definition at line 810 of file SDPatternMatch.h.

References LHS, Opc, and RHS.

◆ m_c_SetCC() [1/2]

template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match, true, false > llvm::SDPatternMatch::m_c_SetCC ( const T0_P & LHS,
const T1_P & RHS )
inline

Match a SETCC with any condition code, allowing the operands to be commuted.

Definition at line 524 of file SDPatternMatch.h.

References LHS, m_CondCode(), RHS, and llvm::ISD::SETCC.

Referenced by performAnyAllCombine(), and performBitcastCombine().

◆ m_c_SetCC() [2/2]

template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match, true, false > llvm::SDPatternMatch::m_c_SetCC ( ISD::CondCode & CC,
const T0_P & LHS,
const T1_P & RHS )
inline

Match a SETCC with any condition code, allowing the operands to be commuted, and bind the condition code to CC.

Definition at line 533 of file SDPatternMatch.h.

References LHS, m_CondCode(), RHS, and llvm::ISD::SETCC.

◆ m_c_SpecificSetCC()

template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match, true, false > llvm::SDPatternMatch::m_c_SpecificSetCC ( ISD::CondCode CC,
const T0_P & LHS,
const T1_P & RHS )
inline

Match a SETCC with a specific condition code, allowing the operands to be commuted.

Definition at line 542 of file SDPatternMatch.h.

References LHS, m_SpecificCondCode(), RHS, and llvm::ISD::SETCC.

Referenced by combineOrOfSetCCToUSUBOCarry(), isTruncateOf(), performAnyAllCombine(), and performBitmaskCombine().

◆ m_c_TernaryOp()

template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P, true > llvm::SDPatternMatch::m_c_TernaryOp ( unsigned Opc,
const T0_P & Op0,
const T1_P & Op1,
const T2_P & Op2 )
inline

Definition at line 599 of file SDPatternMatch.h.

References Opc.

◆ m_ChainedBinOp()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, false, true > llvm::SDPatternMatch::m_ChainedBinOp ( unsigned Opc,
const LHS & L,
const RHS & R )
inline

Definition at line 805 of file SDPatternMatch.h.

References LHS, Opc, and RHS.

◆ m_ChainedUnaryOp()

template<typename Opnd>
UnaryOpc_match< Opnd, true > llvm::SDPatternMatch::m_ChainedUnaryOp ( unsigned Opc,
const Opnd & Op )
inline

Definition at line 1120 of file SDPatternMatch.h.

References Opc.

◆ m_Clmul()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Clmul ( const LHS & L,
const RHS & R )
inline

Definition at line 1041 of file SDPatternMatch.h.

References llvm::ISD::CLMUL, LHS, and RHS.

Referenced by performSRLCombine().

◆ m_CondCode() [1/2]

CondCode_match llvm::SDPatternMatch::m_CondCode ( )
inline

Match any conditional code SDNode.

Definition at line 486 of file SDPatternMatch.h.

Referenced by m_c_SetCC(), m_c_SetCC(), m_SelectCC(), m_SelectCC(), m_SetCC(), and m_SetCC().

◆ m_CondCode() [2/2]

CondCode_match llvm::SDPatternMatch::m_CondCode ( ISD::CondCode & CC)
inline

Match any conditional code SDNode and return its ISD::CondCode value.

Definition at line 488 of file SDPatternMatch.h.

◆ m_ConstInt() [1/4]

◆ m_ConstInt() [2/4]

ConstantInt_match llvm::SDPatternMatch::m_ConstInt ( APInt & V)
inline

Match any integer constants or splat of an integer constant; return the specific constant or constant splat value.

Definition at line 1294 of file SDPatternMatch.h.

◆ m_ConstInt() [3/4]

Constant64_match< int64_t > llvm::SDPatternMatch::m_ConstInt ( int64_t & V)
inline

Match any integer constants or splat of an integer constant that can fit in 64 bits; return the specific constant or constant splat value, sign-extended to 64 bits.

Definition at line 1304 of file SDPatternMatch.h.

◆ m_ConstInt() [4/4]

Constant64_match< uint64_t > llvm::SDPatternMatch::m_ConstInt ( uint64_t & V)
inline

Match any integer constants or splat of an integer constant that can fit in 64 bits; return the specific constant or constant splat value, zero-extended to 64 bits.

Definition at line 1298 of file SDPatternMatch.h.

References uint64_t.

◆ m_Ctlz()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_Ctlz ( const Opnd & Op)
inline

Definition at line 1220 of file SDPatternMatch.h.

References llvm::ISD::CTLZ.

◆ m_Ctpop()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_Ctpop ( const Opnd & Op)
inline

Definition at line 1216 of file SDPatternMatch.h.

References llvm::ISD::CTPOP.

◆ m_Cttz()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_Cttz ( const Opnd & Op)
inline

Definition at line 1224 of file SDPatternMatch.h.

References llvm::ISD::CTTZ.

◆ m_Deferred()

DeferredValue_match llvm::SDPatternMatch::m_Deferred ( SDValue & V)
inline

Similar to m_Specific, but the specific value to match is determined by another sub-pattern in the same sd_match() expression.

For instance, We cannot match (add V, V) with m_Add(m_Value(X), m_Specific(X)) since X is not initialized at the time it got copied into m_Specific. Instead, we should use m_Add(m_Value(X), m_Deferred(X)).

Definition at line 91 of file SDPatternMatch.h.

◆ m_DisjointOr()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_DisjointOr ( const LHS & L,
const RHS & R )
inline

Definition at line 853 of file SDPatternMatch.h.

References llvm::SDNodeFlags::Disjoint, LHS, llvm::ISD::OR, and RHS.

Referenced by m_AddLike(), m_NSWAddLike(), and m_NUWAddLike().

◆ m_ExactSr()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_ExactSr ( const LHS & L,
const RHS & R )
inline

◆ m_ExtractElt()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_ExtractElt ( const LHS & Vec,
const RHS & Idx )
inline

Definition at line 1082 of file SDPatternMatch.h.

References llvm::ISD::EXTRACT_VECTOR_ELT, LHS, and RHS.

◆ m_ExtractSubvector()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_ExtractSubvector ( const LHS & Vec,
const RHS & Idx )
inline

Definition at line 1087 of file SDPatternMatch.h.

References llvm::ISD::EXTRACT_SUBVECTOR, LHS, and RHS.

◆ m_FAbs()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_FAbs ( const Opnd & Op)
inline

Definition at line 1165 of file SDPatternMatch.h.

References llvm::ISD::FABS.

◆ m_FAdd()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_FAdd ( const LHS & L,
const RHS & R )
inline

Definition at line 1046 of file SDPatternMatch.h.

References llvm::ISD::FADD, LHS, and RHS.

◆ m_False()

auto llvm::SDPatternMatch::m_False ( const SelectionDAG & DAG)
inline

Match false boolean value based on the information provided by TargetLowering.

Definition at line 1426 of file SDPatternMatch.h.

◆ m_FDiv()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_FDiv ( const LHS & L,
const RHS & R )
inline

Definition at line 1061 of file SDPatternMatch.h.

References llvm::ISD::FDIV, LHS, and RHS.

◆ m_FixedVectorVT() [1/2]

auto llvm::SDPatternMatch::m_FixedVectorVT ( )
inline

Definition at line 353 of file SDPatternMatch.h.

References m_Value().

◆ m_FixedVectorVT() [2/2]

template<typename Pattern>
auto llvm::SDPatternMatch::m_FixedVectorVT ( const Pattern & P)
inline

Match fixed-length vector ValueTypes.

Definition at line 350 of file SDPatternMatch.h.

References P.

◆ m_FloatingPointVT() [1/2]

auto llvm::SDPatternMatch::m_FloatingPointVT ( )
inline

Definition at line 336 of file SDPatternMatch.h.

References m_Value().

◆ m_FloatingPointVT() [2/2]

template<typename Pattern>
auto llvm::SDPatternMatch::m_FloatingPointVT ( const Pattern & P)
inline

Match any floating point ValueTypes.

Definition at line 333 of file SDPatternMatch.h.

References P.

◆ m_FMul()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_FMul ( const LHS & L,
const RHS & R )
inline

Definition at line 1056 of file SDPatternMatch.h.

References llvm::ISD::FMUL, LHS, and RHS.

◆ m_FNeg()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_FNeg ( const Opnd & Op)
inline

Definition at line 1228 of file SDPatternMatch.h.

References llvm::ISD::FNEG.

◆ m_FPToSI()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_FPToSI ( const Opnd & Op)
inline

Definition at line 1212 of file SDPatternMatch.h.

References llvm::ISD::FP_TO_SINT.

◆ m_FPToUI()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_FPToUI ( const Opnd & Op)
inline

Definition at line 1208 of file SDPatternMatch.h.

References llvm::ISD::FP_TO_UINT.

◆ m_FRem()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_FRem ( const LHS & L,
const RHS & R )
inline

Definition at line 1066 of file SDPatternMatch.h.

References llvm::ISD::FREM, LHS, and RHS.

◆ m_FShL()

template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > llvm::SDPatternMatch::m_FShL ( const T0_P & Op0,
const T1_P & Op1,
const T2_P & Op2 )
inline

◆ m_FShLLike()

template<typename T0_P, typename T1_P, typename T2_P>
FunnelShiftLike_match< T0_P, T1_P, T2_P, true > llvm::SDPatternMatch::m_FShLLike ( const T0_P & Op0,
const T1_P & Op1,
const T2_P & Op2 )
inline

Definition at line 1030 of file SDPatternMatch.h.

◆ m_FShR()

template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > llvm::SDPatternMatch::m_FShR ( const T0_P & Op0,
const T1_P & Op1,
const T2_P & Op2 )
inline

◆ m_FShRLike()

template<typename T0_P, typename T1_P, typename T2_P>
FunnelShiftLike_match< T0_P, T1_P, T2_P, false > llvm::SDPatternMatch::m_FShRLike ( const T0_P & Op0,
const T1_P & Op1,
const T2_P & Op2 )
inline

Definition at line 1036 of file SDPatternMatch.h.

◆ m_FSub()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_FSub ( const LHS & L,
const RHS & R )
inline

Definition at line 1051 of file SDPatternMatch.h.

References llvm::ISD::FSUB, LHS, and RHS.

◆ m_Glue()

auto llvm::SDPatternMatch::m_Glue ( )
inline

Definition at line 293 of file SDPatternMatch.h.

References m_SpecificVT().

◆ m_InsertElt()

template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > llvm::SDPatternMatch::m_InsertElt ( const T0_P & Vec,
const T1_P & Val,
const T2_P & Idx )
inline

Definition at line 573 of file SDPatternMatch.h.

References llvm::ISD::INSERT_VECTOR_ELT.

◆ m_InsertSubvector()

template<typename LHS, typename RHS, typename IDX>
TernaryOpc_match< LHS, RHS, IDX > llvm::SDPatternMatch::m_InsertSubvector ( const LHS & Base,
const RHS & Sub,
const IDX & Idx )
inline

◆ m_IntegerVT() [1/2]

auto llvm::SDPatternMatch::m_IntegerVT ( )
inline

Definition at line 328 of file SDPatternMatch.h.

References m_Value().

◆ m_IntegerVT() [2/2]

template<typename Pattern>
auto llvm::SDPatternMatch::m_IntegerVT ( const Pattern & P)
inline

Match any integer ValueTypes.

Definition at line 325 of file SDPatternMatch.h.

References P.

◆ m_IntrinsicWOChain()

template<unsigned IntrinsicId, typename... OpndPreds>
auto llvm::SDPatternMatch::m_IntrinsicWOChain ( const OpndPreds &... Opnds)
inline

◆ m_LegalOp()

template<typename Pattern>
auto llvm::SDPatternMatch::m_LegalOp ( const SelectionDAG & DAG,
const Pattern & P )
inline

Match legal SDNodes based on the information provided by TargetLowering.

Definition at line 237 of file SDPatternMatch.h.

References llvm::SelectionDAG::getTargetLoweringInfo(), llvm::TargetLoweringBase::isOperationLegal(), N, and P.

◆ m_LegalType()

template<typename Pattern>
auto llvm::SDPatternMatch::m_LegalType ( const SelectionDAG & DAG,
const Pattern & P )
inline

Match legal ValueTypes based on the information provided by TargetLowering.

Definition at line 369 of file SDPatternMatch.h.

References llvm::SelectionDAG::getTargetLoweringInfo(), llvm::TargetLoweringBase::isTypeLegal(), N, and P.

◆ m_Load()

template<typename T0_P, typename T1_P, typename T2_P>
Result_match< 0, TernaryOpc_match< T0_P, T1_P, T2_P > > llvm::SDPatternMatch::m_Load ( const T0_P & Ch,
const T1_P & Ptr,
const T2_P & Offset )
inline

Definition at line 566 of file SDPatternMatch.h.

References llvm::ISD::LOAD, m_Result(), and llvm::Offset.

◆ m_MaxMinLike()

template<unsigned Opc, typename Pred, typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_MaxMinLike ( const LHS & L,
const RHS & R )
inline

Definition at line 884 of file SDPatternMatch.h.

References LHS, m_AnyOf(), Opc, and RHS.

Referenced by m_SMaxLike(), m_SMinLike(), m_UMaxLike(), and m_UMinLike().

◆ m_Mul()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Mul ( const LHS & L,
const RHS & R )
inline

Definition at line 838 of file SDPatternMatch.h.

References LHS, llvm::ISD::MUL, and RHS.

◆ m_Neg()

template<typename ValTy>
BinaryOpc_match< Zero_match, ValTy, false > llvm::SDPatternMatch::m_Neg ( const ValTy & V)
inline

Match a negate as a sub(0, v)

Definition at line 1430 of file SDPatternMatch.h.

References m_Sub(), and llvm::PatternMatch::m_Zero().

Referenced by llvm::SDPatternMatch::SpecificNeg_match::match().

◆ m_NNegZExt()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_NNegZExt ( const Opnd & Op)
inline

Definition at line 1144 of file SDPatternMatch.h.

References llvm::SDNodeFlags::NonNeg, and llvm::ISD::ZERO_EXTEND.

Referenced by m_SExtLike().

◆ m_Node() [1/2]

template<unsigned Opcode, typename... OpndPreds>
auto llvm::SDPatternMatch::m_Node ( const OpndPreds &... Preds)

◆ m_Node() [2/2]

template<typename... OpndPreds>
auto llvm::SDPatternMatch::m_Node ( unsigned Opcode,
const OpndPreds &... preds )

Definition at line 410 of file SDPatternMatch.h.

References m_AllOf(), and m_SpecificOpc().

◆ m_NoneOf()

template<typename... Preds>
auto llvm::SDPatternMatch::m_NoneOf ( const Preds &... preds)

Definition at line 155 of file SDPatternMatch.h.

References m_AnyOf(), and m_Unless().

◆ m_Not()

template<typename ValTy>
BinaryOpc_match< ValTy, AllOnes_match, true > llvm::SDPatternMatch::m_Not ( const ValTy & V)
inline

Match a Not as a xor(v, -1) or xor(-1, v)

Definition at line 1436 of file SDPatternMatch.h.

References llvm::MIPatternMatch::m_AllOnes(), and m_Xor().

◆ m_NSWAdd()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_NSWAdd ( const LHS & L,
const RHS & R )
inline

Definition at line 827 of file SDPatternMatch.h.

References llvm::ISD::ADD, LHS, llvm::SDNodeFlags::NoSignedWrap, and RHS.

Referenced by m_NSWAddLike().

◆ m_NSWAddLike()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_NSWAddLike ( const LHS & L,
const RHS & R )
inline

Definition at line 864 of file SDPatternMatch.h.

References LHS, m_AnyOf(), m_DisjointOr(), m_NSWAdd(), and RHS.

◆ m_NUses() [1/2]

template<unsigned N>
NUses_match< N, Value_match > llvm::SDPatternMatch::m_NUses ( )
inline

Definition at line 198 of file SDPatternMatch.h.

References m_Value().

◆ m_NUses() [2/2]

template<unsigned N, typename Pattern>
NUses_match< N, Pattern > llvm::SDPatternMatch::m_NUses ( const Pattern & P)
inline

Definition at line 191 of file SDPatternMatch.h.

References P.

Referenced by combineConcatVectorOfShuffles().

◆ m_NUWAdd()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_NUWAdd ( const LHS & L,
const RHS & R )
inline

Definition at line 821 of file SDPatternMatch.h.

References llvm::ISD::ADD, LHS, llvm::SDNodeFlags::NoUnsignedWrap, and RHS.

Referenced by m_NUWAddLike().

◆ m_NUWAddLike()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_NUWAddLike ( const LHS & L,
const RHS & R )
inline

Definition at line 869 of file SDPatternMatch.h.

References LHS, m_AnyOf(), m_DisjointOr(), m_NUWAdd(), and RHS.

◆ m_One()

Ones_match llvm::SDPatternMatch::m_One ( bool AllowUndefs = false)
inline

Definition at line 1399 of file SDPatternMatch.h.

◆ m_OneUse() [1/2]

◆ m_OneUse() [2/2]

template<typename Pattern>
NUses_match< 1, Pattern > llvm::SDPatternMatch::m_OneUse ( const Pattern & P)
inline

Definition at line 187 of file SDPatternMatch.h.

References P.

◆ m_Or()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Or ( const LHS & L,
const RHS & R )
inline

◆ m_OtherVT()

auto llvm::SDPatternMatch::m_OtherVT ( )
inline

Definition at line 294 of file SDPatternMatch.h.

References m_SpecificVT().

◆ m_Poison()

Opcode_match llvm::SDPatternMatch::m_Poison ( )
inline

Definition at line 171 of file SDPatternMatch.h.

References llvm::ISD::POISON.

◆ m_ReassociatableAdd()

template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > llvm::SDPatternMatch::m_ReassociatableAdd ( const PatternTs &... Patterns)
inline

Definition at line 1536 of file SDPatternMatch.h.

References llvm::ISD::ADD.

◆ m_ReassociatableAnd()

template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > llvm::SDPatternMatch::m_ReassociatableAnd ( const PatternTs &... Patterns)
inline

Definition at line 1548 of file SDPatternMatch.h.

References llvm::ISD::AND.

◆ m_ReassociatableMul()

template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > llvm::SDPatternMatch::m_ReassociatableMul ( const PatternTs &... Patterns)
inline

Definition at line 1554 of file SDPatternMatch.h.

References llvm::ISD::MUL.

◆ m_ReassociatableNSWAdd()

template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > llvm::SDPatternMatch::m_ReassociatableNSWAdd ( const PatternTs &... Patterns)
inline

Definition at line 1560 of file SDPatternMatch.h.

References llvm::ISD::ADD, and llvm::SDNodeFlags::NoSignedWrap.

◆ m_ReassociatableNUWAdd()

template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > llvm::SDPatternMatch::m_ReassociatableNUWAdd ( const PatternTs &... Patterns)
inline

Definition at line 1567 of file SDPatternMatch.h.

References llvm::ISD::ADD, and llvm::SDNodeFlags::NoUnsignedWrap.

◆ m_ReassociatableOr()

template<typename... PatternTs>
ReassociatableOpc_match< PatternTs... > llvm::SDPatternMatch::m_ReassociatableOr ( const PatternTs &... Patterns)
inline

Definition at line 1542 of file SDPatternMatch.h.

References llvm::ISD::OR.

◆ m_Result()

template<unsigned ResNo, typename Pattern>
Result_match< ResNo, Pattern > llvm::SDPatternMatch::m_Result ( const Pattern & P)
inline

Match only if the SDValue is a certain result at ResNo.

Definition at line 74 of file SDPatternMatch.h.

References P.

Referenced by m_Load().

◆ m_Rotl()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_Rotl ( const LHS & L,
const RHS & R )
inline

◆ m_Rotr()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_Rotr ( const LHS & L,
const RHS & R )
inline

◆ m_ScalableVectorVT() [1/2]

auto llvm::SDPatternMatch::m_ScalableVectorVT ( )
inline

Definition at line 362 of file SDPatternMatch.h.

References m_Value().

◆ m_ScalableVectorVT() [2/2]

template<typename Pattern>
auto llvm::SDPatternMatch::m_ScalableVectorVT ( const Pattern & P)
inline

Match scalable vector ValueTypes.

Definition at line 359 of file SDPatternMatch.h.

References P.

◆ m_SDiv()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_SDiv ( const LHS & L,
const RHS & R )
inline

Definition at line 934 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::SDIV.

◆ m_Select()

template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > llvm::SDPatternMatch::m_Select ( const T0_P & Cond,
const T1_P & T,
const T2_P & F )
inline

Definition at line 549 of file SDPatternMatch.h.

References Cond, F, llvm::ISD::SELECT, and T.

Referenced by m_SelectCCLike(), m_SelectCCLike(), m_SelectLike(), and m_SpecificSelectCCLike().

◆ m_SelectCC() [1/2]

template<typename LTy, typename RTy, typename TTy, typename FTy>
auto llvm::SDPatternMatch::m_SelectCC ( const LTy & L,
const RTy & R,
const TTy & T,
const FTy & F )
inline

Match a SELECT_CC with any condition code.

Definition at line 605 of file SDPatternMatch.h.

References F, m_CondCode(), m_Node(), llvm::ISD::SELECT_CC, and T.

Referenced by m_SelectCCLike(), and m_SelectCCLike().

◆ m_SelectCC() [2/2]

template<typename LTy, typename RTy, typename TTy, typename FTy>
auto llvm::SDPatternMatch::m_SelectCC ( ISD::CondCode & CC,
const LTy & L,
const RTy & R,
const TTy & T,
const FTy & F )
inline

Match a SELECT_CC with any condition code and bind the condition code to CC.

Definition at line 612 of file SDPatternMatch.h.

References F, m_CondCode(), m_Node(), llvm::ISD::SELECT_CC, and T.

◆ m_SelectCCLike() [1/2]

template<typename LTy, typename RTy, typename TTy, typename FTy>
auto llvm::SDPatternMatch::m_SelectCCLike ( const LTy & L,
const RTy & R,
const TTy & T,
const FTy & F )
inline

Match a SELECT of a SETCC or a SELECT_CC with any condition code.

Definition at line 626 of file SDPatternMatch.h.

References F, m_AnyOf(), m_Select(), m_SelectCC(), m_SetCC(), and T.

◆ m_SelectCCLike() [2/2]

template<typename LTy, typename RTy, typename TTy, typename FTy>
auto llvm::SDPatternMatch::m_SelectCCLike ( ISD::CondCode & CC,
const LTy & L,
const RTy & R,
const TTy & T,
const FTy & F )
inline

Match a SELECT of a SETCC or a SELECT_CC with any condition code and bind the condition code to CC.

Definition at line 634 of file SDPatternMatch.h.

References F, m_AnyOf(), m_Select(), m_SelectCC(), m_SetCC(), and T.

◆ m_SelectLike()

template<typename T0_P, typename T1_P, typename T2_P>
auto llvm::SDPatternMatch::m_SelectLike ( const T0_P & Cond,
const T1_P & T,
const T2_P & F )
inline

Definition at line 560 of file SDPatternMatch.h.

References Cond, F, m_AnyOf(), m_Select(), m_VSelect(), and T.

◆ m_SetCC() [1/2]

template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match > llvm::SDPatternMatch::m_SetCC ( const T0_P & LHS,
const T1_P & RHS )
inline

◆ m_SetCC() [2/2]

template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match > llvm::SDPatternMatch::m_SetCC ( ISD::CondCode & CC,
const T0_P & LHS,
const T1_P & RHS )
inline

Match a SETCC with any condition code and bind the condition code to CC.

Definition at line 507 of file SDPatternMatch.h.

References LHS, m_CondCode(), RHS, and llvm::ISD::SETCC.

◆ m_SExt()

template<typename Opnd>
auto llvm::SDPatternMatch::m_SExt ( const Opnd & Op)
inline

Definition at line 1148 of file SDPatternMatch.h.

References llvm::ISD::SIGN_EXTEND.

Referenced by m_SExtLike(), m_SExtOrSelf(), and m_ZExtOrSExt().

◆ m_SExtLike()

template<typename Opnd>
auto llvm::SDPatternMatch::m_SExtLike ( const Opnd & Op)
inline

Definition at line 1181 of file SDPatternMatch.h.

References m_AnyOf(), m_NNegZExt(), and m_SExt().

◆ m_SExtOrSelf()

template<typename Opnd>
auto llvm::SDPatternMatch::m_SExtOrSelf ( const Opnd & Op)
inline

Match a sext or identity Allows to peek through optional extensions.

Definition at line 1177 of file SDPatternMatch.h.

References m_AnyOf(), and m_SExt().

◆ m_Shl()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_Shl ( const LHS & L,
const RHS & R )
inline

◆ m_Shuffle() [1/2]

template<typename V1_t, typename V2_t>
BinaryOpc_match< V1_t, V2_t > llvm::SDPatternMatch::m_Shuffle ( const V1_t & v1,
const V2_t & v2 )
inline

Definition at line 1071 of file SDPatternMatch.h.

References llvm::ISD::VECTOR_SHUFFLE.

◆ m_Shuffle() [2/2]

template<typename V1_t, typename V2_t, typename Mask_t>
SDShuffle_match< V1_t, V2_t, Mask_t > llvm::SDPatternMatch::m_Shuffle ( const V1_t & v1,
const V2_t & v2,
const Mask_t & mask )
inline

Definition at line 1077 of file SDPatternMatch.h.

References mask().

◆ m_SMax()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_SMax ( const LHS & L,
const RHS & R )
inline

Definition at line 900 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::SMAX.

◆ m_SMaxLike()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_SMaxLike ( const LHS & L,
const RHS & R )
inline

Definition at line 905 of file SDPatternMatch.h.

References LHS, m_MaxMinLike(), and RHS.

Referenced by combineConcatVectorOps(), and combineVTRUNCSAT().

◆ m_SMin()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_SMin ( const LHS & L,
const RHS & R )
inline

Definition at line 890 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::SMIN.

◆ m_SMinLike()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_SMinLike ( const LHS & L,
const RHS & R )
inline

Definition at line 895 of file SDPatternMatch.h.

References LHS, m_MaxMinLike(), and RHS.

◆ m_Specific()

Value_match llvm::SDPatternMatch::m_Specific ( SDValue N)
inline

Definition at line 59 of file SDPatternMatch.h.

References assert(), and N.

Referenced by llvm::SDPatternMatch::SpecificNeg_match::match().

◆ m_SpecificCondCode()

CondCode_match llvm::SDPatternMatch::m_SpecificCondCode ( ISD::CondCode CC)
inline

Match a conditional code SDNode with a specific ISD::CondCode.

Definition at line 492 of file SDPatternMatch.h.

Referenced by m_c_SpecificSetCC(), m_SpecificSelectCC(), and m_SpecificSetCC().

◆ m_SpecificFP() [1/2]

SpecificFP_match llvm::SDPatternMatch::m_SpecificFP ( APFloat V)
inline

Match a specific float constant.

Definition at line 1358 of file SDPatternMatch.h.

◆ m_SpecificFP() [2/2]

SpecificFP_match llvm::SDPatternMatch::m_SpecificFP ( double V)
inline

Definition at line 1360 of file SDPatternMatch.h.

◆ m_SpecificInt() [1/2]

SpecificInt_match llvm::SDPatternMatch::m_SpecificInt ( APInt V)
inline

Match a specific integer constant or constant splat value.

Definition at line 1336 of file SDPatternMatch.h.

Referenced by m_IntrinsicWOChain().

◆ m_SpecificInt() [2/2]

SpecificInt_match llvm::SDPatternMatch::m_SpecificInt ( uint64_t V)
inline

Definition at line 1339 of file SDPatternMatch.h.

References uint64_t.

◆ m_SpecificNeg()

SpecificNeg_match llvm::SDPatternMatch::m_SpecificNeg ( SDValue V)
inline

Match a negation of a specific value V, either as sub(0, V) or as constant(s) that are the negation of V's constant(s).

Definition at line 1463 of file SDPatternMatch.h.

◆ m_SpecificOpc() [1/2]

◆ m_SpecificOpc() [2/2]

Opcode_match llvm::SDPatternMatch::m_SpecificOpc ( unsigned Opcode)
inline

Definition at line 163 of file SDPatternMatch.h.

◆ m_SpecificScalarVT() [1/2]

auto llvm::SDPatternMatch::m_SpecificScalarVT ( EVT RefVT)
inline

Definition at line 302 of file SDPatternMatch.h.

References m_Value().

◆ m_SpecificScalarVT() [2/2]

template<typename Pattern>
auto llvm::SDPatternMatch::m_SpecificScalarVT ( EVT RefVT,
const Pattern & P )
inline

Match a scalar ValueType.

Definition at line 298 of file SDPatternMatch.h.

References P.

◆ m_SpecificSelectCC()

template<typename LTy, typename RTy, typename TTy, typename FTy>
auto llvm::SDPatternMatch::m_SpecificSelectCC ( ISD::CondCode CC,
const LTy & L,
const RTy & R,
const TTy & T,
const FTy & F )
inline

Match a SELECT_CC with a specific condition code.

Definition at line 619 of file SDPatternMatch.h.

References F, m_Node(), m_SpecificCondCode(), llvm::ISD::SELECT_CC, and T.

Referenced by m_SpecificSelectCCLike().

◆ m_SpecificSelectCCLike()

template<typename LTy, typename RTy, typename TTy, typename FTy>
auto llvm::SDPatternMatch::m_SpecificSelectCCLike ( ISD::CondCode CC,
const LTy & L,
const RTy & R,
const TTy & T,
const FTy & F )
inline

Match a SELECT of a SETCC or a SELECT_CC with a specific condition code.

Definition at line 641 of file SDPatternMatch.h.

References F, m_AnyOf(), m_Select(), m_SpecificSelectCC(), m_SpecificSetCC(), and T.

◆ m_SpecificSetCC()

template<typename T0_P, typename T1_P>
TernaryOpc_match< T0_P, T1_P, CondCode_match > llvm::SDPatternMatch::m_SpecificSetCC ( ISD::CondCode CC,
const T0_P & LHS,
const T1_P & RHS )
inline

◆ m_SpecificVectorElementVT() [1/2]

auto llvm::SDPatternMatch::m_SpecificVectorElementVT ( EVT RefVT)
inline

Definition at line 316 of file SDPatternMatch.h.

References m_Value().

◆ m_SpecificVectorElementVT() [2/2]

template<typename Pattern>
auto llvm::SDPatternMatch::m_SpecificVectorElementVT ( EVT RefVT,
const Pattern & P )
inline

Match a vector ValueType.

Definition at line 309 of file SDPatternMatch.h.

References P.

Referenced by combineBasicSADPattern(), and reassociateAddSubLong().

◆ m_SpecificVT() [1/2]

auto llvm::SDPatternMatch::m_SpecificVT ( EVT RefVT)
inline

Definition at line 289 of file SDPatternMatch.h.

References m_Value().

◆ m_SpecificVT() [2/2]

◆ m_SpliceRight()

template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > llvm::SDPatternMatch::m_SpliceRight ( const T0_P & V1,
const T1_P & V2,
const T2_P & Offset )
inline

Definition at line 586 of file SDPatternMatch.h.

References llvm::Offset, llvm::V1, and llvm::ISD::VECTOR_SPLICE_RIGHT.

◆ m_Sra()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_Sra ( const LHS & L,
const RHS & R )
inline

Definition at line 953 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::SRA.

Referenced by foldAndToUsubsat().

◆ m_SRem()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_SRem ( const LHS & L,
const RHS & R )
inline

Definition at line 943 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::SREM.

◆ m_Srl()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_Srl ( const LHS & L,
const RHS & R )
inline

◆ m_Sub()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_Sub ( const LHS & L,
const RHS & R )
inline

Definition at line 833 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::SUB.

Referenced by m_Neg().

◆ m_TernaryOp()

template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > llvm::SDPatternMatch::m_TernaryOp ( unsigned Opc,
const T0_P & Op0,
const T1_P & Op1,
const T2_P & Op2 )
inline

◆ m_True()

auto llvm::SDPatternMatch::m_True ( const SelectionDAG & DAG)
inline

Match true boolean value based on the information provided by TargetLowering.

Definition at line 1422 of file SDPatternMatch.h.

◆ m_Trunc()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_Trunc ( const Opnd & Op)
inline

Definition at line 1156 of file SDPatternMatch.h.

References llvm::ISD::TRUNCATE.

Referenced by m_TruncOrSelf().

◆ m_TruncOrSelf()

template<typename Opnd>
Or< UnaryOpc_match< Opnd >, Opnd > llvm::SDPatternMatch::m_TruncOrSelf ( const Opnd & Op)
inline

Match a trunc or identity Allows to peek through optional truncations.

Definition at line 1200 of file SDPatternMatch.h.

References m_Trunc().

◆ m_UDiv()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_UDiv ( const LHS & L,
const RHS & R )
inline

Definition at line 930 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::UDIV.

◆ m_UMax()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_UMax ( const LHS & L,
const RHS & R )
inline

Definition at line 920 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::UMAX.

◆ m_UMaxLike()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_UMaxLike ( const LHS & L,
const RHS & R )
inline

Definition at line 925 of file SDPatternMatch.h.

References LHS, m_MaxMinLike(), and RHS.

◆ m_UMin()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_UMin ( const LHS & L,
const RHS & R )
inline

Definition at line 910 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::UMIN.

◆ m_UMinLike()

template<typename LHS, typename RHS>
auto llvm::SDPatternMatch::m_UMinLike ( const LHS & L,
const RHS & R )
inline

Definition at line 915 of file SDPatternMatch.h.

References LHS, m_MaxMinLike(), and RHS.

◆ m_UnaryOp()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_UnaryOp ( unsigned Opc,
const Opnd & Op )
inline

Definition at line 1116 of file SDPatternMatch.h.

References Opc.

Referenced by combineAddOfExts(), combineVTRUNCSAT(), and foldBitOrderCrossLogicOp().

◆ m_Undef()

auto llvm::SDPatternMatch::m_Undef ( )
inline

Definition at line 167 of file SDPatternMatch.h.

References m_AnyOf(), llvm::ISD::POISON, and llvm::ISD::UNDEF.

◆ m_Unless()

template<typename Pred>
Not< Pred > llvm::SDPatternMatch::m_Unless ( const Pred & P)
inline

Match if the inner pattern does NOT match.

Definition at line 143 of file SDPatternMatch.h.

References P.

Referenced by m_NoneOf().

◆ m_URem()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS > llvm::SDPatternMatch::m_URem ( const LHS & L,
const RHS & R )
inline

Definition at line 939 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::UREM.

◆ m_Value() [1/3]

◆ m_Value() [2/3]

auto llvm::SDPatternMatch::m_Value ( SDValue & N)
inline

Definition at line 213 of file SDPatternMatch.h.

References N.

◆ m_Value() [3/3]

template<typename PredPattern>
auto llvm::SDPatternMatch::m_Value ( SDValue & N,
const PredPattern & P )
inline

Conditionally bind an SDValue based on the predicate.

Definition at line 216 of file SDPatternMatch.h.

References m_AllOf(), N, and P.

◆ m_VectorReverse()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_VectorReverse ( const Opnd & Op)
inline

Definition at line 1233 of file SDPatternMatch.h.

References llvm::ISD::VECTOR_REVERSE.

◆ m_VectorVT() [1/2]

auto llvm::SDPatternMatch::m_VectorVT ( )
inline

Definition at line 345 of file SDPatternMatch.h.

References m_Value().

◆ m_VectorVT() [2/2]

template<typename Pattern>
auto llvm::SDPatternMatch::m_VectorVT ( const Pattern & P)
inline

Match any vector ValueTypes.

Definition at line 342 of file SDPatternMatch.h.

References P.

◆ m_VScale()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_VScale ( const Opnd & Op)
inline

Definition at line 1204 of file SDPatternMatch.h.

References llvm::ISD::VSCALE.

◆ m_VSelect()

template<typename T0_P, typename T1_P, typename T2_P>
TernaryOpc_match< T0_P, T1_P, T2_P > llvm::SDPatternMatch::m_VSelect ( const T0_P & Cond,
const T1_P & T,
const T2_P & F )
inline

Definition at line 555 of file SDPatternMatch.h.

References Cond, F, T, and llvm::ISD::VSELECT.

Referenced by commuteSelect(), foldToMaskedStore(), and m_SelectLike().

◆ m_VT() [1/2]

auto llvm::SDPatternMatch::m_VT ( EVT & VT)
inline

Retreive the ValueType of the current SDValue.

Definition at line 263 of file SDPatternMatch.h.

References m_Value(), and ValueType_bind().

Referenced by combineStore(), and performCTPOPCombine().

◆ m_VT() [2/2]

template<typename Pattern>
auto llvm::SDPatternMatch::m_VT ( EVT & VT,
const Pattern & P )
inline

Definition at line 265 of file SDPatternMatch.h.

References P, and ValueType_bind().

◆ m_Xor()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Xor ( const LHS & L,
const RHS & R )
inline

Definition at line 874 of file SDPatternMatch.h.

References LHS, RHS, and llvm::ISD::XOR.

Referenced by m_BitwiseLogic(), and m_Not().

◆ m_Zero()

Zero_match llvm::SDPatternMatch::m_Zero ( bool AllowUndefs = false)
inline

Definition at line 1402 of file SDPatternMatch.h.

◆ m_ZExt()

template<typename Opnd>
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_ZExt ( const Opnd & Op)
inline

Definition at line 1139 of file SDPatternMatch.h.

References llvm::ISD::ZERO_EXTEND.

Referenced by m_ZExtOrSelf(), and m_ZExtOrSExt().

◆ m_ZExtOrSelf()

template<typename Opnd>
auto llvm::SDPatternMatch::m_ZExtOrSelf ( const Opnd & Op)
inline

Match a zext or identity Allows to peek through optional extensions.

Definition at line 1171 of file SDPatternMatch.h.

References m_AnyOf(), and m_ZExt().

◆ m_ZExtOrSExt()

template<typename Opnd>
auto llvm::SDPatternMatch::m_ZExtOrSExt ( const Opnd & Op)
inline

Match a zext or sext.

Definition at line 1186 of file SDPatternMatch.h.

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

◆ Not()

template<typename Pred>
llvm::SDPatternMatch::Not ( const Pred & P) -> Not< Pred >

References P.

◆ sd_match() [1/2]

template<typename Pattern>
bool llvm::SDPatternMatch::sd_match ( SDNode * N,
Pattern && P )
nodiscard

Definition at line 37 of file SDPatternMatch.h.

References N, P, and sd_match().

◆ sd_match() [2/2]

template<typename Pattern>
bool llvm::SDPatternMatch::sd_match ( SDValue N,
Pattern && P )
nodiscard

Definition at line 32 of file SDPatternMatch.h.

References N, and P.

Referenced by canonicalizeMaskForVLPredicate(), combineAdd(), combineAddMulh(), combineAddOfExts(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndOnGF2P8AFFINEQBOperand(), combineAndXorSubWithBMI(), combineBasicSADPattern(), combineBTToBitOpFlag(), combineCastedMaskArithmetic(), combineConcatVectorOfShuffles(), combineConcatVectorOps(), combineLogicBlendIntoConditionalNegate(), combineMaskBitOp(), combineNarrowableShiftedLoad(), combineNestedGF2P8AFFINEQB(), combineOr(), combineOrAndToBitfieldInsert(), combineOrOfSetCCToUSUBOCarry(), combineOrToBitfieldInsert(), combineOrWithGF2P8AFFINEQB(), combinePExtWideningAddAcc(), combinePExtWideningSubAcc(), combinePMULH(), combineSCALAR_TO_VECTOR(), combineSelect(), combineSetCC(), combineShiftLeft(), combineShiftRightArithmetic(), combineShiftRightLogical(), combineShiftToPMULH(), combineShlAddIAddImpl(), combineStore(), combineTargetShuffle(), combineVectorInsert(), combineVTRUNCSAT(), combineXorOnGF2P8AFFINEQBOperand(), combineXorToBitfieldInsert(), combineXorWithGF2P8AFFINEQB(), combineXorWithTwoGF2P8AFFINEQB(), commuteSelect(), detectPMADDUBSW(), detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), detectUSatUPattern(), expandMulToAddOrSubOfShl(), foldAddSubBoolOfMaskedVal(), foldAndToUsubsat(), foldBitOrderCrossLogicOp(), foldMaskedMerge(), foldMaskedShiftToUSHL(), foldReduceOperandViaVDOT4A(), foldSelectToUSATI(), foldSelectWithIdentityConstant(), foldSubCtlzNot(), foldToMaskedStore(), foldVSelectToSignBitSplatMask(), getShlAddShlAdd(), isFrexpExp(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), isTruncateOf(), llvm::SDPatternMatch::BinaryOpc_match< LHS_P, RHS_P, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::FunnelShiftLike_match< T0_P, T1_P, T2_P, Left >::match(), llvm::SDPatternMatch::SpecificInt_match::match(), llvm::SDPatternMatch::SpecificNeg_match::match(), llvm::SDPatternMatch::TernaryOpc_match< T0_P, T1_P, T2_P, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::UnaryOpc_match< Opnd_P, ExcludeChain >::match(), matchLogicBlend(), matchPMADDWD(), matchPMADDWD_2(), llvm::SDPatternMatch::FunnelShiftLike_match< T0_P, T1_P, T2_P, Left >::matchShiftOr(), matchVPMADD52(), narrowBitOpRMW(), perfomPextFirstTrueVectorCombine(), performAddTruncShiftCombine(), performANDORDUPNOTCombine(), performAnyAllCombine(), performBitcastCombine(), performBitmaskCombine(), performCTPOPCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), performLastTrueTestVectorCombine(), performMaskedLoadToVPLoadCombine(), performMINMAXCombine(), performNanGuardFpToSatCombine(), performPredicateLoadCombine(), performReverseEVLCombine(), performSRLCombine(), performSUBCombine(), performVEXT_VLCombine(), performVP_STORECombine(), llvm::SDPatternMatch::ReassociatableOpc_match< PatternTs >::reassociatableMatchHelper(), reassociateAddSubLong(), reverseZExtICmpCombine(), sd_match(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), llvm::TargetLowering::SimplifyDemandedBits(), takeInexpensiveLog2(), tryToFoldExtendSelectLoad(), and visitORCommutative().

◆ TLI_pred_match()

template<typename PredFuncT, typename Pattern>
llvm::SDPatternMatch::TLI_pred_match ( const PredFuncT & Pred,
const Pattern & P ) -> TLI_pred_match< Pattern, PredFuncT >

References P.

◆ ValueType_bind()

template<typename Pattern>
llvm::SDPatternMatch::ValueType_bind ( const Pattern & P) -> ValueType_bind< Pattern >

References P.

Referenced by m_VT(), and m_VT().

◆ ValueType_match()

template<typename PredFuncT, typename Pattern>
llvm::SDPatternMatch::ValueType_match ( const PredFuncT & Pred,
const Pattern & P ) -> ValueType_match< Pattern, PredFuncT >

References P.