LLVM 20.0.0git
Classes | Functions
llvm::SDPatternMatch Namespace Reference

Classes

struct  AllOnes_match
 
struct  And
 
struct  And< Pred, Preds... >
 
class  BasicMatchContext
 MatchContext can repurpose existing patterns to behave differently under a certain context. More...
 
struct  BinaryOpc_match
 
struct  CondCode_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  EffectiveOperands< false >
 
struct  MaxMin_match
 
struct  Not
 
struct  NUses_match
 
struct  Opcode_match
 
struct  Operands_match
 
struct  Operands_match< OpIdx, OpndPred, OpndPreds... >
 
struct  Or
 
struct  Or< Pred, Preds... >
 
struct  smax_pred_ty
 
struct  smin_pred_ty
 
struct  SpecificInt_match
 
struct  SwitchContext
 Switch to a different MatchContext for subsequent patterns. More...
 
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
 

Functions

template<typename Pattern , typename MatchContext >
bool sd_context_match (SDValue N, const MatchContext &Ctx, Pattern &&P)
 
template<typename Pattern , typename MatchContext >
bool sd_context_match (SDNode *N, const MatchContext &Ctx, Pattern &&P)
 
template<typename Pattern >
bool sd_match (SDNode *N, const SelectionDAG *DAG, Pattern &&P)
 
template<typename Pattern >
bool sd_match (SDValue N, const SelectionDAG *DAG, Pattern &&P)
 
template<typename Pattern >
bool sd_match (SDNode *N, Pattern &&P)
 
template<typename Pattern >
bool sd_match (SDValue N, Pattern &&P)
 
Value_match m_Value ()
 Match any valid SDValue.
 
Value_match m_Specific (SDValue N)
 
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.
 
Opcode_match m_Opc (unsigned Opcode)
 
template<typename Pattern >
NUses_match< 1, Patternm_OneUse (const Pattern &P)
 
template<unsigned N, typename Pattern >
NUses_match< N, Patternm_NUses (const Pattern &P)
 
NUses_match< 1, Value_matchm_OneUse ()
 
template<unsigned N>
NUses_match< N, Value_matchm_NUses ()
 
Value_bind m_Value (SDValue &N)
 
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 Pattern &P)
 Match legal SDNodes based on the information provided by TargetLowering.
 
template<typename MatchContext , typename Pattern >
SwitchContext< MatchContext, Patternm_Context (const MatchContext &Ctx, Pattern &&P)
 
ValueType_bind m_VT (EVT &VT)
 Retreive the ValueType of the current SDValue.
 
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_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 Pattern &P)
 Match legal ValueTypes based on the information provided by TargetLowering.
 
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<typename... OpndPreds>
auto m_Node (unsigned Opcode, const OpndPreds &...preds)
 
template<typename T0_P , typename T1_P , typename T2_P >
TernaryOpc_match< T0_P, T1_P, T2_P > m_SetCC (const T0_P &LHS, const T1_P &RHS, const T2_P &CC)
 
template<typename T0_P , typename T1_P , typename T2_P >
TernaryOpc_match< T0_P, T1_P, T2_P, true, false > m_c_SetCC (const T0_P &LHS, const T1_P &RHS, const T2_P &CC)
 
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 >
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 >
BinaryOpc_match< LHS, RHSm_BinOp (unsigned Opc, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_c_BinOp (unsigned Opc, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false, truem_ChainedBinOp (unsigned Opc, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true, truem_c_ChainedBinOp (unsigned Opc, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_Add (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_Sub (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_Mul (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_And (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_Or (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_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 >
BinaryOpc_match< LHS, RHS, truem_Xor (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_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, truem_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, truem_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, truem_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, RHSm_UDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_SDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_URem (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_SRem (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_Shl (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_Sra (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_Srl (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_Rotl (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_Rotr (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_FAdd (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_FSub (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_FMul (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_FDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_FRem (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHSm_ExtractElt (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, truem_ChainedUnaryOp (unsigned Opc, 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_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 >
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)
 
ConstantInt_match m_ConstInt ()
 Match any interger constants or splat of an integer constant.
 
ConstantInt_match m_ConstInt (APInt &V)
 Match any interger constants or splat of an integer constant; return the specific constant or constant splat value.
 
SpecificInt_match m_SpecificInt (APInt V)
 Match a specific integer constant or constant splat value.
 
SpecificInt_match m_SpecificInt (uint64_t V)
 
SpecificInt_match m_Zero ()
 
SpecificInt_match m_One ()
 
AllOnes_match m_AllOnes ()
 
auto m_True ()
 Match true boolean value based on the information provided by TargetLowering.
 
auto m_False ()
 Match false boolean value based on the information provided by TargetLowering.
 
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 ValTy >
BinaryOpc_match< SpecificInt_match, ValTy > m_Neg (const ValTy &V)
 Match a negate as a sub(0, v)
 
template<typename ValTy >
BinaryOpc_match< ValTy, AllOnes_match, truem_Not (const ValTy &V)
 Match a Not as a xor(v, -1) or xor(-1, v)
 

Function Documentation

◆ 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 649 of file SDPatternMatch.h.

References llvm::ISD::ADD.

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 680 of file SDPatternMatch.h.

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

◆ 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 891 of file SDPatternMatch.h.

References m_AnyExt().

◆ m_AllOf()

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

Definition at line 378 of file SDPatternMatch.h.

Referenced by m_Node().

◆ m_AllOnes()

AllOnes_match llvm::SDPatternMatch::m_AllOnes ( )
inline

Definition at line 988 of file SDPatternMatch.h.

Referenced by m_Not().

◆ 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 664 of file SDPatternMatch.h.

References llvm::ISD::AND.

◆ m_AnyExt()

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

Definition at line 864 of file SDPatternMatch.h.

References llvm::ISD::ANY_EXTEND.

Referenced by m_AExtOrSelf(), and visitORCommutative().

◆ m_AnyOf()

template<typename... Preds>
Or< Preds... > llvm::SDPatternMatch::m_AnyOf ( const Preds &...  preds)

◆ m_BinOp()

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

Definition at line 626 of file SDPatternMatch.h.

◆ m_BitReverse()

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

Definition at line 847 of file SDPatternMatch.h.

References llvm::ISD::BITREVERSE.

◆ m_BSwap()

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

Definition at line 842 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 
)
inline

Definition at line 631 of file SDPatternMatch.h.

◆ 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 643 of file SDPatternMatch.h.

◆ m_c_SetCC()

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

Definition at line 493 of file SDPatternMatch.h.

References CC, LHS, RHS, and llvm::ISD::SETCC.

Referenced by isTruncateOf().

◆ 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 638 of file SDPatternMatch.h.

◆ m_ChainedUnaryOp()

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

Definition at line 836 of file SDPatternMatch.h.

◆ m_CondCode() [1/2]

CondCode_match llvm::SDPatternMatch::m_CondCode ( )
inline

Match any conditional code SDNode.

Definition at line 1053 of file SDPatternMatch.h.

Referenced by foldVSelectToSignBitSplatMask().

◆ 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 1055 of file SDPatternMatch.h.

References CC.

◆ m_ConstInt() [1/2]

ConstantInt_match llvm::SDPatternMatch::m_ConstInt ( )
inline

Match any interger constants or splat of an integer constant.

Definition at line 949 of file SDPatternMatch.h.

Referenced by foldSubCtlzNot(), m_False(), m_True(), and llvm::SDPatternMatch::SpecificInt_match::match().

◆ m_ConstInt() [2/2]

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

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

Definition at line 952 of file SDPatternMatch.h.

◆ m_Context()

template<typename MatchContext , typename Pattern >
SwitchContext< MatchContext, Pattern > llvm::SDPatternMatch::m_Context ( const MatchContext &  Ctx,
Pattern &&  P 
)
inline

Definition at line 224 of file SDPatternMatch.h.

References P.

◆ m_Ctlz()

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

Definition at line 918 of file SDPatternMatch.h.

References llvm::ISD::CTLZ.

Referenced by foldSubCtlzNot().

◆ m_Ctpop()

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

Definition at line 914 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 922 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 124 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 674 of file SDPatternMatch.h.

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

Referenced by m_AddLike().

◆ 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 801 of file SDPatternMatch.h.

References llvm::ISD::EXTRACT_VECTOR_ELT, and Idx.

◆ 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 776 of file SDPatternMatch.h.

References llvm::ISD::FADD.

◆ m_False()

auto llvm::SDPatternMatch::m_False ( )
inline

◆ 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 791 of file SDPatternMatch.h.

References llvm::ISD::FDIV.

◆ m_FixedVectorVT() [1/2]

auto llvm::SDPatternMatch::m_FixedVectorVT ( )
inline

Definition at line 303 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 300 of file SDPatternMatch.h.

References P.

◆ m_FloatingPointVT() [1/2]

auto llvm::SDPatternMatch::m_FloatingPointVT ( )
inline

Definition at line 286 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 283 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 786 of file SDPatternMatch.h.

References llvm::ISD::FMUL.

◆ m_FPToSI()

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

Definition at line 910 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 906 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 796 of file SDPatternMatch.h.

References llvm::ISD::FREM.

◆ 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 781 of file SDPatternMatch.h.

References llvm::ISD::FSUB.

◆ m_Glue()

auto llvm::SDPatternMatch::m_Glue ( )
inline

Definition at line 271 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 512 of file SDPatternMatch.h.

References Idx, and llvm::ISD::INSERT_VECTOR_ELT.

◆ m_IntegerVT() [1/2]

auto llvm::SDPatternMatch::m_IntegerVT ( )
inline

Definition at line 278 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 275 of file SDPatternMatch.h.

References P.

◆ m_LegalOp()

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

Match legal SDNodes based on the information provided by TargetLowering.

Definition at line 204 of file SDPatternMatch.h.

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

◆ m_LegalType()

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

Match legal ValueTypes based on the information provided by TargetLowering.

Definition at line 318 of file SDPatternMatch.h.

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

◆ 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 659 of file SDPatternMatch.h.

References llvm::ISD::MUL.

◆ m_Neg()

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

Match a negate as a sub(0, v)

Definition at line 1065 of file SDPatternMatch.h.

References m_Sub(), and m_Zero().

◆ m_NNegZExt()

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

Definition at line 856 of file SDPatternMatch.h.

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

Referenced by m_SExtLike().

◆ m_Node()

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

Definition at line 420 of file SDPatternMatch.h.

References m_AllOf(), and m_Opc().

◆ m_NoneOf()

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

Definition at line 386 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 1071 of file SDPatternMatch.h.

References m_AllOnes(), and m_Xor().

◆ m_NUses() [1/2]

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

Definition at line 167 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 160 of file SDPatternMatch.h.

References P.

◆ m_One()

SpecificInt_match llvm::SDPatternMatch::m_One ( )
inline

Definition at line 977 of file SDPatternMatch.h.

References m_SpecificInt().

◆ m_OneUse() [1/2]

NUses_match< 1, Value_match > llvm::SDPatternMatch::m_OneUse ( )
inline

Definition at line 164 of file SDPatternMatch.h.

References m_Value().

Referenced by foldAndToUsubsat(), foldVSelectToSignBitSplatMask(), and visitORCommutative().

◆ m_OneUse() [2/2]

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

Definition at line 156 of file SDPatternMatch.h.

References P.

◆ m_Opc()

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

◆ m_Or()

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

Definition at line 669 of file SDPatternMatch.h.

References llvm::ISD::OR.

◆ m_OtherVT()

auto llvm::SDPatternMatch::m_OtherVT ( )
inline

Definition at line 272 of file SDPatternMatch.h.

References m_SpecificVT().

◆ m_Rotl()

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

Definition at line 766 of file SDPatternMatch.h.

References llvm::ISD::ROTL.

◆ m_Rotr()

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

Definition at line 771 of file SDPatternMatch.h.

References llvm::ISD::ROTR.

◆ m_ScalableVectorVT() [1/2]

auto llvm::SDPatternMatch::m_ScalableVectorVT ( )
inline

Definition at line 312 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 309 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 738 of file SDPatternMatch.h.

References 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 500 of file SDPatternMatch.h.

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

◆ m_SetCC()

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

Definition at line 487 of file SDPatternMatch.h.

References CC, LHS, RHS, and llvm::ISD::SETCC.

Referenced by foldAddSubBoolOfMaskedVal(), and foldVSelectToSignBitSplatMask().

◆ m_SExt()

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

Definition at line 860 of file SDPatternMatch.h.

References llvm::ISD::SIGN_EXTEND.

Referenced by m_SExtLike(), and m_SExtOrSelf().

◆ m_SExtLike()

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

Definition at line 884 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 880 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

Definition at line 752 of file SDPatternMatch.h.

References llvm::ISD::SHL.

◆ 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 701 of file SDPatternMatch.h.

References 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 706 of file SDPatternMatch.h.

References m_AnyOf(), and llvm::ISD::SMAX.

◆ 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 690 of file SDPatternMatch.h.

References 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 695 of file SDPatternMatch.h.

References m_AnyOf(), and llvm::ISD::SMIN.

◆ m_Specific()

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

Definition at line 104 of file SDPatternMatch.h.

References assert(), and N.

◆ 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 1059 of file SDPatternMatch.h.

References CC.

Referenced by foldAddSubBoolOfMaskedVal(), and isTruncateOf().

◆ 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 969 of file SDPatternMatch.h.

Referenced by m_One(), and m_Zero().

◆ m_SpecificInt() [2/2]

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

Definition at line 972 of file SDPatternMatch.h.

◆ m_SpecificVT() [1/2]

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

Definition at line 267 of file SDPatternMatch.h.

References m_Value().

◆ m_SpecificVT() [2/2]

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

Match a specific ValueType.

Definition at line 264 of file SDPatternMatch.h.

References P.

Referenced by m_Glue(), and m_OtherVT().

◆ 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 757 of file SDPatternMatch.h.

References 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 747 of file SDPatternMatch.h.

References 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

Definition at line 761 of file SDPatternMatch.h.

References llvm::ISD::SRL.

◆ 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 654 of file SDPatternMatch.h.

References llvm::ISD::SUB.

Referenced by m_Neg().

◆ m_True()

auto llvm::SDPatternMatch::m_True ( )
inline

◆ m_Trunc()

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

Definition at line 868 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 898 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 734 of file SDPatternMatch.h.

References 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 723 of file SDPatternMatch.h.

References 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 728 of file SDPatternMatch.h.

References m_AnyOf(), and llvm::ISD::UMAX.

◆ 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 712 of file SDPatternMatch.h.

References 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 717 of file SDPatternMatch.h.

References m_AnyOf(), and llvm::ISD::UMIN.

◆ m_UnaryOp()

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

Definition at line 832 of file SDPatternMatch.h.

◆ 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 374 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 743 of file SDPatternMatch.h.

References llvm::ISD::UREM.

◆ m_Value() [1/2]

Value_match llvm::SDPatternMatch::m_Value ( )
inline

◆ m_Value() [2/2]

Value_bind llvm::SDPatternMatch::m_Value ( SDValue N)
inline

Definition at line 182 of file SDPatternMatch.h.

References N.

◆ m_VectorVT() [1/2]

auto llvm::SDPatternMatch::m_VectorVT ( )
inline

Definition at line 295 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 292 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 902 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 506 of file SDPatternMatch.h.

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

◆ m_VT()

ValueType_bind llvm::SDPatternMatch::m_VT ( EVT VT)
inline

Retreive the ValueType of the current SDValue.

Definition at line 242 of file SDPatternMatch.h.

◆ 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 685 of file SDPatternMatch.h.

References llvm::ISD::XOR.

Referenced by m_Not().

◆ m_Zero()

SpecificInt_match llvm::SDPatternMatch::m_Zero ( )
inline

Definition at line 976 of file SDPatternMatch.h.

References m_SpecificInt().

Referenced by m_Neg().

◆ m_ZExt()

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

Definition at line 851 of file SDPatternMatch.h.

References llvm::ISD::ZERO_EXTEND.

Referenced by m_ZExtOrSelf().

◆ 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 874 of file SDPatternMatch.h.

References m_AnyOf(), and m_ZExt().

◆ Not()

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

◆ sd_context_match() [1/2]

template<typename Pattern , typename MatchContext >
bool llvm::SDPatternMatch::sd_context_match ( SDNode N,
const MatchContext &  Ctx,
Pattern &&  P 
)

Definition at line 61 of file SDPatternMatch.h.

References N, P, and sd_context_match().

◆ sd_context_match() [2/2]

template<typename Pattern , typename MatchContext >
bool llvm::SDPatternMatch::sd_context_match ( SDValue  N,
const MatchContext &  Ctx,
Pattern &&  P 
)

◆ sd_match() [1/4]

template<typename Pattern >
bool llvm::SDPatternMatch::sd_match ( SDNode N,
const SelectionDAG DAG,
Pattern &&  P 
)

◆ sd_match() [2/4]

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

Definition at line 77 of file SDPatternMatch.h.

References N, P, and sd_match().

◆ sd_match() [3/4]

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

Definition at line 72 of file SDPatternMatch.h.

References N, P, and sd_context_match().

◆ sd_match() [4/4]

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

Definition at line 82 of file SDPatternMatch.h.

References N, P, and sd_match().

◆ TLI_pred_match()

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

◆ ValueType_match()

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