LLVM 19.0.0git
Classes | Typedefs | Functions
llvm::PatternMatch Namespace Reference

Classes

struct  AllowReassoc_match
 
struct  AnyBinaryOp_match
 
struct  AnyOps_match
 Matches instructions with Opcode and any number of operands. More...
 
struct  AnyUnaryOp_match
 
struct  apf_pred_ty
 This helper class is used to match scalar and vector constants that satisfy a specified predicate, and bind them to an APFloat. More...
 
struct  apfloat_match
 
struct  api_pred_ty
 This helper class is used to match scalar and vector constants that satisfy a specified predicate, and bind them to an APInt. More...
 
struct  apint_match
 
struct  Argument_match
 
struct  BinaryOp_match
 
struct  bind_const_intval_ty
 
struct  bind_ty
 
struct  BinOpPred_match
 
struct  br_match
 
struct  brc_match
 
struct  CastInst_match
 
struct  CastOperator_match
 
struct  class_match
 
struct  CmpClass_match
 
struct  constantexpr_match
 
struct  constantint_match
 
struct  cstval_pred_ty
 This helper class is used to match constant scalars, vector splats, and fixed width vectors that satisfy a specified predicate. More...
 
struct  deferredval_ty
 Stores a reference to the Value *, not the Value * itself, thus can be used in commutative matchers. More...
 
struct  DisjointOr_match
 
struct  ElementWiseBitCast_match
 
struct  Exact_match
 
struct  ExtractValue_match
 
struct  FNeg_match
 
struct  icmp_pred_with_threshold
 
struct  InsertValue_match
 Matcher for a single index InsertValue instruction. More...
 
struct  IntrinsicID_match
 Intrinsic matchers. More...
 
struct  is_all_ones
 
struct  is_any_apint
 
struct  is_any_zero_fp
 
struct  is_bitwiselogic_op
 
struct  is_finite
 
struct  is_finitenonzero
 
struct  is_idiv_op
 
struct  is_inf
 
struct  is_irem_op
 
struct  is_logical_shift_op
 
struct  is_lowbit_mask
 
struct  is_lowbit_mask_or_zero
 
struct  is_maxsignedvalue
 
struct  is_nan
 
struct  is_neg_zero_fp
 
struct  is_negated_power2
 
struct  is_negated_power2_or_zero
 
struct  is_negative
 
struct  is_non_zero_fp
 
struct  is_noninf
 
struct  is_nonnan
 
struct  is_nonnegative
 
struct  is_nonpositive
 
struct  is_one
 
struct  is_pos_zero_fp
 
struct  is_power2
 
struct  is_power2_or_zero
 
struct  is_right_shift_op
 
struct  is_shift_op
 
struct  is_shifted_mask
 
struct  is_sign_mask
 
struct  is_strictlypositive
 
struct  is_zero
 
struct  is_zero_int
 
struct  LogicalOp_match
 
struct  m_Intrinsic_Ty
 Intrinsic matches are combinations of ID matchers, and argument matchers. More...
 
struct  m_Intrinsic_Ty< T0 >
 
struct  m_Intrinsic_Ty< T0, T1 >
 
struct  m_Intrinsic_Ty< T0, T1, T2 >
 
struct  m_Intrinsic_Ty< T0, T1, T2, T3 >
 
struct  m_Intrinsic_Ty< T0, T1, T2, T3, T4 >
 
struct  m_Intrinsic_Ty< T0, T1, T2, T3, T4, T5 >
 
struct  m_Mask
 
struct  m_SpecificMask
 
struct  m_SplatOrPoisonMask
 
struct  m_ZeroMask
 
struct  match_combine_and
 
struct  match_combine_or
 Matching combinators. More...
 
struct  match_unless
 Inverting matcher. More...
 
struct  MaxMin_match
 
struct  NNegZExt_match
 
struct  ofmax_pred_ty
 Helper class for identifying ordered max predicates. More...
 
struct  ofmin_pred_ty
 Helper class for identifying ordered min predicates. More...
 
struct  OneOps_match
 Matches instructions with Opcode and three operands. More...
 
struct  OneUse_match
 
struct  OverflowingBinaryOp_match
 
struct  PtrAdd_match
 
struct  PtrToIntSameSize_match
 
struct  Shuffle_match
 Matches shuffle. More...
 
struct  Signum_match
 
struct  smax_pred_ty
 Helper class for identifying signed max predicates. More...
 
struct  smin_pred_ty
 Helper class for identifying signed min predicates. More...
 
struct  specific_bbval
 Match a specified basic block value. More...
 
struct  specific_fpval
 Match a specified floating point value or vector of all elements of that value. More...
 
struct  specific_intval
 Match a specified integer value or vector of all elements of that value. More...
 
struct  specific_intval64
 
struct  SpecificBinaryOp_match
 
struct  specificval_ty
 Match a specified Value*. More...
 
struct  ThreeOps_match
 Matches instructions with Opcode and three operands. More...
 
struct  TwoOps_match
 Matches instructions with Opcode and three operands. More...
 
struct  UAddWithOverflow_match
 
struct  ufmax_pred_ty
 Helper class for identifying unordered max predicates. More...
 
struct  ufmin_pred_ty
 Helper class for identifying unordered min predicates. More...
 
struct  umax_pred_ty
 Helper class for identifying unsigned max predicates. More...
 
struct  umin_pred_ty
 Helper class for identifying unsigned min predicates. More...
 
struct  undef_match
 
struct  VScaleVal_match
 Matches patterns for vscale. More...
 

Typedefs

template<typename Predicate >
using cst_pred_ty = cstval_pred_ty< Predicate, ConstantInt >
 specialization of cstval_pred_ty for ConstantInt
 
template<typename Predicate >
using cstfp_pred_ty = cstval_pred_ty< Predicate, ConstantFP >
 specialization of cstval_pred_ty for ConstantFP
 

Functions

template<typename Val , typename Pattern >
bool match (Val *V, const Pattern &P)
 
template<typename Pattern >
bool match (ArrayRef< int > Mask, const Pattern &P)
 
template<typename T >
OneUse_match< Tm_OneUse (const T &SubPattern)
 
template<typename T >
AllowReassoc_match< Tm_AllowReassoc (const T &SubPattern)
 
class_match< Valuem_Value ()
 Match an arbitrary value and ignore it.
 
class_match< UnaryOperatorm_UnOp ()
 Match an arbitrary unary operation and ignore it.
 
class_match< BinaryOperatorm_BinOp ()
 Match an arbitrary binary operation and ignore it.
 
class_match< CmpInstm_Cmp ()
 Matches any compare instruction and ignore it.
 
auto m_Undef ()
 Match an arbitrary undef constant.
 
class_match< PoisonValuem_Poison ()
 Match an arbitrary poison constant.
 
class_match< Constantm_Constant ()
 Match an arbitrary Constant and ignore it.
 
class_match< ConstantIntm_ConstantInt ()
 Match an arbitrary ConstantInt and ignore it.
 
class_match< ConstantFPm_ConstantFP ()
 Match an arbitrary ConstantFP and ignore it.
 
constantexpr_match m_ConstantExpr ()
 Match a constant expression or a constant that contains a constant expression.
 
class_match< BasicBlockm_BasicBlock ()
 Match an arbitrary basic block value and ignore it.
 
template<typename Ty >
match_unless< Ty > m_Unless (const Ty &M)
 Match if the inner matcher does NOT match.
 
template<typename LTy , typename RTy >
match_combine_or< LTy, RTy > m_CombineOr (const LTy &L, const RTy &R)
 Combine two pattern matchers matching L || R.
 
template<typename LTy , typename RTy >
match_combine_and< LTy, RTy > m_CombineAnd (const LTy &L, const RTy &R)
 Combine two pattern matchers matching L && R.
 
apint_match m_APInt (const APInt *&Res)
 Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt.
 
apint_match m_APIntAllowPoison (const APInt *&Res)
 Match APInt while allowing poison in splat vector constants.
 
apint_match m_APIntForbidPoison (const APInt *&Res)
 Match APInt while forbidding poison in splat vector constants.
 
apfloat_match m_APFloat (const APFloat *&Res)
 Match a ConstantFP or splatted ConstantVector, binding the specified pointer to the contained APFloat.
 
apfloat_match m_APFloatAllowPoison (const APFloat *&Res)
 Match APFloat while allowing poison in splat vector constants.
 
apfloat_match m_APFloatForbidPoison (const APFloat *&Res)
 Match APFloat while forbidding poison in splat vector constants.
 
template<int64_t Val>
constantint_match< Val > m_ConstantInt ()
 Match a ConstantInt with a specific value.
 
cst_pred_ty< is_any_apintm_AnyIntegralConstant ()
 Match an integer or vector with any integral constant.
 
cst_pred_ty< is_shifted_maskm_ShiftedMask ()
 
cst_pred_ty< is_all_onesm_AllOnes ()
 Match an integer or vector with all bits set.
 
cst_pred_ty< is_maxsignedvaluem_MaxSignedValue ()
 Match an integer or vector with values having all bits except for the high bit set (0x7f...).
 
api_pred_ty< is_maxsignedvaluem_MaxSignedValue (const APInt *&V)
 
cst_pred_ty< is_negativem_Negative ()
 Match an integer or vector of negative values.
 
api_pred_ty< is_negativem_Negative (const APInt *&V)
 
cst_pred_ty< is_nonnegativem_NonNegative ()
 Match an integer or vector of non-negative values.
 
api_pred_ty< is_nonnegativem_NonNegative (const APInt *&V)
 
cst_pred_ty< is_strictlypositivem_StrictlyPositive ()
 Match an integer or vector of strictly positive values.
 
api_pred_ty< is_strictlypositivem_StrictlyPositive (const APInt *&V)
 
cst_pred_ty< is_nonpositivem_NonPositive ()
 Match an integer or vector of non-positive values.
 
api_pred_ty< is_nonpositivem_NonPositive (const APInt *&V)
 
cst_pred_ty< is_onem_One ()
 Match an integer 1 or a vector with all elements equal to 1.
 
cst_pred_ty< is_zero_intm_ZeroInt ()
 Match an integer 0 or a vector with all elements equal to 0.
 
is_zero m_Zero ()
 Match any null constant or a vector with all elements equal to 0.
 
cst_pred_ty< is_power2m_Power2 ()
 Match an integer or vector power-of-2.
 
api_pred_ty< is_power2m_Power2 (const APInt *&V)
 
cst_pred_ty< is_negated_power2m_NegatedPower2 ()
 Match a integer or vector negated power-of-2.
 
api_pred_ty< is_negated_power2m_NegatedPower2 (const APInt *&V)
 
cst_pred_ty< is_negated_power2_or_zerom_NegatedPower2OrZero ()
 Match a integer or vector negated power-of-2.
 
api_pred_ty< is_negated_power2_or_zerom_NegatedPower2OrZero (const APInt *&V)
 
cst_pred_ty< is_power2_or_zerom_Power2OrZero ()
 Match an integer or vector of 0 or power-of-2 values.
 
api_pred_ty< is_power2_or_zerom_Power2OrZero (const APInt *&V)
 
cst_pred_ty< is_sign_maskm_SignMask ()
 Match an integer or vector with only the sign bit(s) set.
 
cst_pred_ty< is_lowbit_maskm_LowBitMask ()
 Match an integer or vector with only the low bit(s) set.
 
api_pred_ty< is_lowbit_maskm_LowBitMask (const APInt *&V)
 
cst_pred_ty< is_lowbit_mask_or_zerom_LowBitMaskOrZero ()
 Match an integer or vector with only the low bit(s) set.
 
api_pred_ty< is_lowbit_mask_or_zerom_LowBitMaskOrZero (const APInt *&V)
 
cst_pred_ty< icmp_pred_with_thresholdm_SpecificInt_ICMP (ICmpInst::Predicate Predicate, const APInt &Threshold)
 Match an integer or vector with every element comparing 'pred' (eg/ne/...) to Threshold.
 
cstfp_pred_ty< is_nanm_NaN ()
 Match an arbitrary NaN constant.
 
cstfp_pred_ty< is_nonnanm_NonNaN ()
 Match a non-NaN FP constant.
 
cstfp_pred_ty< is_infm_Inf ()
 Match a positive or negative infinity FP constant.
 
cstfp_pred_ty< is_noninfm_NonInf ()
 Match a non-infinity FP constant, i.e.
 
cstfp_pred_ty< is_finitem_Finite ()
 Match a finite FP constant, i.e.
 
apf_pred_ty< is_finitem_Finite (const APFloat *&V)
 
cstfp_pred_ty< is_finitenonzerom_FiniteNonZero ()
 Match a finite non-zero FP constant.
 
apf_pred_ty< is_finitenonzerom_FiniteNonZero (const APFloat *&V)
 
cstfp_pred_ty< is_any_zero_fpm_AnyZeroFP ()
 Match a floating-point negative zero or positive zero.
 
cstfp_pred_ty< is_pos_zero_fpm_PosZeroFP ()
 Match a floating-point positive zero.
 
cstfp_pred_ty< is_neg_zero_fpm_NegZeroFP ()
 Match a floating-point negative zero.
 
cstfp_pred_ty< is_non_zero_fpm_NonZeroFP ()
 Match a floating-point non-zero.
 
bind_ty< Valuem_Value (Value *&V)
 Match a value, capturing it if we match.
 
bind_ty< const Valuem_Value (const Value *&V)
 
bind_ty< Instructionm_Instruction (Instruction *&I)
 Match an instruction, capturing it if we match.
 
bind_ty< UnaryOperatorm_UnOp (UnaryOperator *&I)
 Match a unary operator, capturing it if we match.
 
bind_ty< BinaryOperatorm_BinOp (BinaryOperator *&I)
 Match a binary operator, capturing it if we match.
 
bind_ty< WithOverflowInstm_WithOverflowInst (WithOverflowInst *&I)
 Match a with overflow intrinsic, capturing it if we match.
 
bind_ty< const WithOverflowInstm_WithOverflowInst (const WithOverflowInst *&I)
 
bind_ty< Constantm_Constant (Constant *&C)
 Match a Constant, capturing the value if we match.
 
bind_ty< ConstantIntm_ConstantInt (ConstantInt *&CI)
 Match a ConstantInt, capturing the value if we match.
 
bind_ty< ConstantFPm_ConstantFP (ConstantFP *&C)
 Match a ConstantFP, capturing the value if we match.
 
bind_ty< ConstantExprm_ConstantExpr (ConstantExpr *&C)
 Match a ConstantExpr, capturing the value if we match.
 
bind_ty< BasicBlockm_BasicBlock (BasicBlock *&V)
 Match a basic block value, capturing it if we match.
 
bind_ty< const BasicBlockm_BasicBlock (const BasicBlock *&V)
 
match_combine_and< class_match< Constant >, match_unless< constantexpr_match > > m_ImmConstant ()
 Match an arbitrary immediate Constant and ignore it.
 
match_combine_and< bind_ty< Constant >, match_unless< constantexpr_match > > m_ImmConstant (Constant *&C)
 Match an immediate Constant, capturing the value if we match.
 
specificval_ty m_Specific (const Value *V)
 Match if we have a specific specified value.
 
deferredval_ty< Valuem_Deferred (Value *const &V)
 Like m_Specific(), but works if the specific value to match is determined as part of the same match() expression.
 
deferredval_ty< const Valuem_Deferred (const Value *const &V)
 
specific_fpval m_SpecificFP (double V)
 Match a specific floating point value or vector with all elements equal to the value.
 
specific_fpval m_FPOne ()
 Match a float 1.0 or vector with all elements equal to 1.0.
 
specific_intval< false > m_SpecificInt (const APInt &V)
 Match a specific integer value or vector with all elements equal to the value.
 
specific_intval64< false > m_SpecificInt (uint64_t V)
 
specific_intval< truem_SpecificIntAllowPoison (const APInt &V)
 
specific_intval64< truem_SpecificIntAllowPoison (uint64_t V)
 
bind_const_intval_ty m_ConstantInt (uint64_t &V)
 Match a ConstantInt and bind to its value.
 
specific_bbval m_SpecificBB (BasicBlock *BB)
 Match a specific basic block value.
 
deferredval_ty< BasicBlockm_Deferred (BasicBlock *const &BB)
 A commutative-friendly version of m_Specific().
 
deferredval_ty< const BasicBlockm_Deferred (const BasicBlock *const &BB)
 
template<typename LHS , typename RHS >
AnyBinaryOp_match< LHS, RHSm_BinOp (const LHS &L, const RHS &R)
 
template<typename OP_t >
AnyUnaryOp_match< OP_t > m_UnOp (const OP_t &X)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Add > m_Add (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FAdd > m_FAdd (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Sub > m_Sub (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FSub > m_FSub (const LHS &L, const RHS &R)
 
template<typename OpTy >
FNeg_match< OpTy > m_FNeg (const OpTy &X)
 Match 'fneg X' as 'fsub -0.0, X'.
 
template<typename RHS >
BinaryOp_match< cstfp_pred_ty< is_any_zero_fp >, RHS, Instruction::FSub > m_FNegNSZ (const RHS &X)
 Match 'fneg X' as 'fsub +-0.0, X'.
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Mul > m_Mul (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FMul > m_FMul (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::UDiv > m_UDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::SDiv > m_SDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FDiv > m_FDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::URem > m_URem (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::SRem > m_SRem (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FRem > m_FRem (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::And > m_And (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Or > m_Or (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Xor > m_Xor (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Shl > m_Shl (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::LShr > m_LShr (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::AShr > m_AShr (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoSignedWrapm_NSWAdd (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Sub, OverflowingBinaryOperator::NoSignedWrapm_NSWSub (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Mul, OverflowingBinaryOperator::NoSignedWrapm_NSWMul (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Shl, OverflowingBinaryOperator::NoSignedWrapm_NSWShl (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrapm_NUWAdd (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrap, truem_c_NUWAdd (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Sub, OverflowingBinaryOperator::NoUnsignedWrapm_NUWSub (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Mul, OverflowingBinaryOperator::NoUnsignedWrapm_NUWMul (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Shl, OverflowingBinaryOperator::NoUnsignedWrapm_NUWShl (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
SpecificBinaryOp_match< LHS, RHSm_BinOp (unsigned Opcode, const LHS &L, const RHS &R)
 Matches a specific opcode.
 
template<typename LHS , typename RHS >
DisjointOr_match< LHS, RHSm_DisjointOr (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
DisjointOr_match< LHS, RHS, truem_c_DisjointOr (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
match_combine_or< BinaryOp_match< LHS, RHS, Instruction::Add >, DisjointOr_match< LHS, RHS > > m_AddLike (const LHS &L, const RHS &R)
 Match either "add" or "or disjoint".
 
template<typename LHS , typename RHS >
match_combine_or< OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoSignedWrap >, DisjointOr_match< LHS, RHS > > m_NSWAddLike (const LHS &L, const RHS &R)
 Match either "add nsw" or "or disjoint".
 
template<typename LHS , typename RHS >
match_combine_or< OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrap >, DisjointOr_match< LHS, RHS > > m_NUWAddLike (const LHS &L, const RHS &R)
 Match either "add nuw" or "or disjoint".
 
template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_shift_opm_Shift (const LHS &L, const RHS &R)
 Matches shift operations.
 
template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_right_shift_opm_Shr (const LHS &L, const RHS &R)
 Matches logical shift operations.
 
template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_logical_shift_opm_LogicalShift (const LHS &L, const RHS &R)
 Matches logical shift operations.
 
template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_bitwiselogic_opm_BitwiseLogic (const LHS &L, const RHS &R)
 Matches bitwise logic operations.
 
template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_bitwiselogic_op, truem_c_BitwiseLogic (const LHS &L, const RHS &R)
 Matches bitwise logic operations in either order.
 
template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_idiv_opm_IDiv (const LHS &L, const RHS &R)
 Matches integer division operations.
 
template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_irem_opm_IRem (const LHS &L, const RHS &R)
 Matches integer remainder operations.
 
template<typename T >
Exact_match< Tm_Exact (const T &SubPattern)
 
template<typename LHS , typename RHS >
CmpClass_match< LHS, RHS, CmpInst, CmpInst::Predicatem_Cmp (CmpInst::Predicate &Pred, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicatem_ICmp (ICmpInst::Predicate &Pred, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
CmpClass_match< LHS, RHS, FCmpInst, FCmpInst::Predicatem_FCmp (FCmpInst::Predicate &Pred, const LHS &L, const RHS &R)
 
template<typename Cond , typename LHS , typename RHS >
ThreeOps_match< Cond, LHS, RHS, Instruction::Select > m_Select (const Cond &C, const LHS &L, const RHS &R)
 Matches SelectInst.
 
template<int64_t L, int64_t R, typename Cond >
ThreeOps_match< Cond, constantint_match< L >, constantint_match< R >, Instruction::Select > m_SelectCst (const Cond &C)
 This matches a select of two constants, e.g.: m_SelectCst<-1, 0>(m_Value(V))
 
template<typename OpTy >
OneOps_match< OpTy, Instruction::Freeze > m_Freeze (const OpTy &Op)
 Matches FreezeInst.
 
template<typename Val_t , typename Elt_t , typename Idx_t >
ThreeOps_match< Val_t, Elt_t, Idx_t, Instruction::InsertElement > m_InsertElt (const Val_t &Val, const Elt_t &Elt, const Idx_t &Idx)
 Matches InsertElementInst.
 
template<typename Val_t , typename Idx_t >
TwoOps_match< Val_t, Idx_t, Instruction::ExtractElement > m_ExtractElt (const Val_t &Val, const Idx_t &Idx)
 Matches ExtractElementInst.
 
template<typename V1_t , typename V2_t >
TwoOps_match< V1_t, V2_t, Instruction::ShuffleVector > m_Shuffle (const V1_t &v1, const V2_t &v2)
 Matches ShuffleVectorInst independently of mask value.
 
template<typename V1_t , typename V2_t , typename Mask_t >
Shuffle_match< V1_t, V2_t, Mask_t > m_Shuffle (const V1_t &v1, const V2_t &v2, const Mask_t &mask)
 
template<typename OpTy >
OneOps_match< OpTy, Instruction::Load > m_Load (const OpTy &Op)
 Matches LoadInst.
 
template<typename ValueOpTy , typename PointerOpTy >
TwoOps_match< ValueOpTy, PointerOpTy, Instruction::Store > m_Store (const ValueOpTy &ValueOp, const PointerOpTy &PointerOp)
 Matches StoreInst.
 
template<typename... OperandTypes>
auto m_GEP (const OperandTypes &...Ops)
 Matches GetElementPtrInst.
 
template<typename PointerOpTy , typename OffsetOpTy >
PtrAdd_match< PointerOpTy, OffsetOpTy > m_PtrAdd (const PointerOpTy &PointerOp, const OffsetOpTy &OffsetOp)
 Matches GEP with i8 source element type.
 
template<typename OpTy >
CastOperator_match< OpTy, Instruction::BitCast > m_BitCast (const OpTy &Op)
 Matches BitCast.
 
template<typename OpTy >
ElementWiseBitCast_match< OpTy > m_ElementWiseBitCast (const OpTy &Op)
 
template<typename OpTy >
CastOperator_match< OpTy, Instruction::PtrToInt > m_PtrToInt (const OpTy &Op)
 Matches PtrToInt.
 
template<typename OpTy >
PtrToIntSameSize_match< OpTy > m_PtrToIntSameSize (const DataLayout &DL, const OpTy &Op)
 
template<typename OpTy >
CastOperator_match< OpTy, Instruction::IntToPtr > m_IntToPtr (const OpTy &Op)
 Matches IntToPtr.
 
template<typename OpTy >
CastOperator_match< OpTy, Instruction::Trunc > m_Trunc (const OpTy &Op)
 Matches Trunc.
 
template<typename OpTy >
match_combine_or< CastOperator_match< OpTy, Instruction::Trunc >, OpTy > m_TruncOrSelf (const OpTy &Op)
 
template<typename OpTy >
CastInst_match< OpTy, SExtInstm_SExt (const OpTy &Op)
 Matches SExt.
 
template<typename OpTy >
CastInst_match< OpTy, ZExtInstm_ZExt (const OpTy &Op)
 Matches ZExt.
 
template<typename OpTy >
NNegZExt_match< OpTy > m_NNegZExt (const OpTy &Op)
 
template<typename OpTy >
match_combine_or< CastInst_match< OpTy, ZExtInst >, OpTy > m_ZExtOrSelf (const OpTy &Op)
 
template<typename OpTy >
match_combine_or< CastInst_match< OpTy, SExtInst >, OpTy > m_SExtOrSelf (const OpTy &Op)
 
template<typename OpTy >
match_combine_or< CastInst_match< OpTy, SExtInst >, NNegZExt_match< OpTy > > m_SExtLike (const OpTy &Op)
 Match either "sext" or "zext nneg".
 
template<typename OpTy >
match_combine_or< CastInst_match< OpTy, ZExtInst >, CastInst_match< OpTy, SExtInst > > m_ZExtOrSExt (const OpTy &Op)
 
template<typename OpTy >
match_combine_or< match_combine_or< CastInst_match< OpTy, ZExtInst >, CastInst_match< OpTy, SExtInst > >, OpTy > m_ZExtOrSExtOrSelf (const OpTy &Op)
 
template<typename OpTy >
CastInst_match< OpTy, UIToFPInstm_UIToFP (const OpTy &Op)
 
template<typename OpTy >
CastInst_match< OpTy, SIToFPInstm_SIToFP (const OpTy &Op)
 
template<typename OpTy >
CastInst_match< OpTy, FPToUIInstm_FPToUI (const OpTy &Op)
 
template<typename OpTy >
CastInst_match< OpTy, FPToSIInstm_FPToSI (const OpTy &Op)
 
template<typename OpTy >
CastInst_match< OpTy, FPTruncInstm_FPTrunc (const OpTy &Op)
 
template<typename OpTy >
CastInst_match< OpTy, FPExtInstm_FPExt (const OpTy &Op)
 
br_match m_UnconditionalBr (BasicBlock *&Succ)
 
template<typename Cond_t >
brc_match< Cond_t, bind_ty< BasicBlock >, bind_ty< BasicBlock > > m_Br (const Cond_t &C, BasicBlock *&T, BasicBlock *&F)
 
template<typename Cond_t , typename TrueBlock_t , typename FalseBlock_t >
brc_match< Cond_t, TrueBlock_t, FalseBlock_t > m_Br (const Cond_t &C, const TrueBlock_t &T, const FalseBlock_t &F)
 
template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, smax_pred_tym_SMax (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_tym_SMin (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_tym_UMax (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_tym_UMin (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
match_combine_or< match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty >, MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty > >, match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty >, MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty > > > m_MaxOrMin (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
MaxMin_match< FCmpInst, LHS, RHS, ofmax_pred_tym_OrdFMax (const LHS &L, const RHS &R)
 Match an 'ordered' floating point maximum function.
 
template<typename LHS , typename RHS >
MaxMin_match< FCmpInst, LHS, RHS, ofmin_pred_tym_OrdFMin (const LHS &L, const RHS &R)
 Match an 'ordered' floating point minimum function.
 
template<typename LHS , typename RHS >
MaxMin_match< FCmpInst, LHS, RHS, ufmax_pred_tym_UnordFMax (const LHS &L, const RHS &R)
 Match an 'unordered' floating point maximum function.
 
template<typename LHS , typename RHS >
MaxMin_match< FCmpInst, LHS, RHS, ufmin_pred_tym_UnordFMin (const LHS &L, const RHS &R)
 Match an 'unordered' floating point minimum function.
 
template<typename LHS_t , typename RHS_t , typename Sum_t >
UAddWithOverflow_match< LHS_t, RHS_t, Sum_t > m_UAddWithOverflow (const LHS_t &L, const RHS_t &R, const Sum_t &S)
 Match an icmp instruction checking for unsigned overflow on addition.
 
template<unsigned OpI, typename Opnd_t >
Argument_match< Opnd_t > m_Argument (const Opnd_t &Op)
 Match an argument.
 
template<Intrinsic::ID IntrID>
IntrinsicID_match m_Intrinsic ()
 Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X))
 
template<typename Opnd0 , typename Opnd1 , typename Opnd2 , typename Opnd3 >
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2, Opnd3 >::Ty m_MaskedLoad (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2, const Opnd3 &Op3)
 Matches MaskedLoad Intrinsic.
 
template<typename Opnd0 , typename Opnd1 , typename Opnd2 , typename Opnd3 >
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2, Opnd3 >::Ty m_MaskedGather (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2, const Opnd3 &Op3)
 Matches MaskedGather Intrinsic.
 
template<Intrinsic::ID IntrID, typename T0 >
m_Intrinsic_Ty< T0 >::Ty m_Intrinsic (const T0 &Op0)
 
template<Intrinsic::ID IntrID, typename T0 , typename T1 >
m_Intrinsic_Ty< T0, T1 >::Ty m_Intrinsic (const T0 &Op0, const T1 &Op1)
 
template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 >
m_Intrinsic_Ty< T0, T1, T2 >::Ty m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2)
 
template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 , typename T3 >
m_Intrinsic_Ty< T0, T1, T2, T3 >::Ty m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3)
 
template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 , typename T3 , typename T4 >
m_Intrinsic_Ty< T0, T1, T2, T3, T4 >::Ty m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3, const T4 &Op4)
 
template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
m_Intrinsic_Ty< T0, T1, T2, T3, T4, T5 >::Ty m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3, const T4 &Op4, const T5 &Op5)
 
template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty m_BitReverse (const Opnd0 &Op0)
 
template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty m_BSwap (const Opnd0 &Op0)
 
template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty m_FAbs (const Opnd0 &Op0)
 
template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty m_FCanonicalize (const Opnd0 &Op0)
 
template<typename Opnd0 , typename Opnd1 >
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty m_FMin (const Opnd0 &Op0, const Opnd1 &Op1)
 
template<typename Opnd0 , typename Opnd1 >
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty m_FMax (const Opnd0 &Op0, const Opnd1 &Op1)
 
template<typename Opnd0 , typename Opnd1 , typename Opnd2 >
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2 >::Ty m_FShl (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2)
 
template<typename Opnd0 , typename Opnd1 , typename Opnd2 >
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2 >::Ty m_FShr (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2)
 
template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty m_Sqrt (const Opnd0 &Op0)
 
template<typename Opnd0 , typename Opnd1 >
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty m_CopySign (const Opnd0 &Op0, const Opnd1 &Op1)
 
template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty m_VecReverse (const Opnd0 &Op0)
 
template<typename LHS , typename RHS >
AnyBinaryOp_match< LHS, RHS, truem_c_BinOp (const LHS &L, const RHS &R)
 Matches a BinaryOperator with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicate, truem_c_ICmp (ICmpInst::Predicate &Pred, const LHS &L, const RHS &R)
 Matches an ICmp with a predicate over LHS and RHS in either order.
 
template<typename LHS , typename RHS >
SpecificBinaryOp_match< LHS, RHS, truem_c_BinOp (unsigned Opcode, const LHS &L, const RHS &R)
 Matches a specific opcode with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Add, truem_c_Add (const LHS &L, const RHS &R)
 Matches a Add with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Mul, truem_c_Mul (const LHS &L, const RHS &R)
 Matches a Mul with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::And, truem_c_And (const LHS &L, const RHS &R)
 Matches an And with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Or, truem_c_Or (const LHS &L, const RHS &R)
 Matches an Or with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Xor, truem_c_Xor (const LHS &L, const RHS &R)
 Matches an Xor with LHS and RHS in either order.
 
template<typename ValTy >
BinaryOp_match< cst_pred_ty< is_zero_int >, ValTy, Instruction::Sub > m_Neg (const ValTy &V)
 Matches a 'Neg' as 'sub 0, V'.
 
template<typename ValTy >
OverflowingBinaryOp_match< cst_pred_ty< is_zero_int >, ValTy, Instruction::Sub, OverflowingBinaryOperator::NoSignedWrapm_NSWNeg (const ValTy &V)
 Matches a 'Neg' as 'sub nsw 0, V'.
 
template<typename ValTy >
BinaryOp_match< cst_pred_ty< is_all_ones >, ValTy, Instruction::Xor, truem_Not (const ValTy &V)
 Matches a 'Not' as 'xor V, -1' or 'xor -1, V'.
 
template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty, truem_c_SMin (const LHS &L, const RHS &R)
 Matches an SMin with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty, truem_c_SMax (const LHS &L, const RHS &R)
 Matches an SMax with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty, truem_c_UMin (const LHS &L, const RHS &R)
 Matches a UMin with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty, truem_c_UMax (const LHS &L, const RHS &R)
 Matches a UMax with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
match_combine_or< match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty, true >, MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty, true > >, match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty, true >, MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty, true > > > m_c_MaxOrMin (const LHS &L, const RHS &R)
 
template<Intrinsic::ID IntrID, typename T0 , typename T1 >
match_combine_or< typename m_Intrinsic_Ty< T0, T1 >::Ty, typename m_Intrinsic_Ty< T1, T0 >::Ty > m_c_Intrinsic (const T0 &Op0, const T1 &Op1)
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FAdd, truem_c_FAdd (const LHS &L, const RHS &R)
 Matches FAdd with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FMul, truem_c_FMul (const LHS &L, const RHS &R)
 Matches FMul with LHS and RHS in either order.
 
template<typename Val_t >
Signum_match< Val_t > m_Signum (const Val_t &V)
 Matches a signum pattern.
 
template<int Ind, typename Val_t >
ExtractValue_match< Ind, Val_t > m_ExtractValue (const Val_t &V)
 Match a single index ExtractValue instruction.
 
template<typename Val_t >
ExtractValue_match<-1, Val_t > m_ExtractValue (const Val_t &V)
 Match an ExtractValue instruction with any index.
 
template<int Ind, typename Val_t , typename Elt_t >
InsertValue_match< Ind, Val_t, Elt_t > m_InsertValue (const Val_t &Val, const Elt_t &Elt)
 Matches a single index InsertValue instruction.
 
VScaleVal_match m_VScale ()
 
template<typename LHS , typename RHS >
LogicalOp_match< LHS, RHS, Instruction::And > m_LogicalAnd (const LHS &L, const RHS &R)
 Matches L && R either in the form of L & R or L ? R : false.
 
auto m_LogicalAnd ()
 Matches L && R where L and R are arbitrary values.
 
template<typename LHS , typename RHS >
LogicalOp_match< LHS, RHS, Instruction::And, truem_c_LogicalAnd (const LHS &L, const RHS &R)
 Matches L && R with LHS and RHS in either order.
 
template<typename LHS , typename RHS >
LogicalOp_match< LHS, RHS, Instruction::Or > m_LogicalOr (const LHS &L, const RHS &R)
 Matches L || R either in the form of L | R or L ? true : R.
 
auto m_LogicalOr ()
 Matches L || R where L and R are arbitrary values.
 
template<typename LHS , typename RHS >
LogicalOp_match< LHS, RHS, Instruction::Or, truem_c_LogicalOr (const LHS &L, const RHS &R)
 Matches L || R with LHS and RHS in either order.
 
template<typename LHS , typename RHS , bool Commutable = false>
auto m_LogicalOp (const LHS &L, const RHS &R)
 Matches either L && R or L || R, either one being in the either binary or logical form.
 
auto m_LogicalOp ()
 Matches either L && R or L || R where L and R are arbitrary values.
 
template<typename LHS , typename RHS >
auto m_c_LogicalOp (const LHS &L, const RHS &R)
 Matches either L && R or L || R with LHS and RHS in either order.
 

Typedef Documentation

◆ cst_pred_ty

template<typename Predicate >
using llvm::PatternMatch::cst_pred_ty = typedef cstval_pred_ty<Predicate, ConstantInt>

specialization of cstval_pred_ty for ConstantInt

Definition at line 388 of file PatternMatch.h.

◆ cstfp_pred_ty

template<typename Predicate >
using llvm::PatternMatch::cstfp_pred_ty = typedef cstval_pred_ty<Predicate, ConstantFP>

specialization of cstval_pred_ty for ConstantFP

Definition at line 392 of file PatternMatch.h.

Function Documentation

◆ m_Add()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Add > llvm::PatternMatch::m_Add ( const LHS L,
const RHS R 
)
inline

Definition at line 1038 of file PatternMatch.h.

Referenced by canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), checkForNegativeOperand(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), decompose(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::findScalarElement(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqConstantAndICmp(), foldAndToUsubsat(), foldCtpop(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldICmpWithHighBitMask(), foldMulShl1(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isMaskOrZero(), m_AddLike(), m_AnyAdd(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchesAdd(), matchIncrement(), matchUAddWithOverflowConstantEdgeCases(), moveAddAfterMinMax(), optimizeBranch(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyOrOfICmpsWithAdd(), simplifySubInst(), trySimplifyICmpWithAdds(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitURem(), and llvm::InstCombinerImpl::visitXor().

◆ m_AddLike()

template<typename LHS , typename RHS >
match_combine_or< BinaryOp_match< LHS, RHS, Instruction::Add >, DisjointOr_match< LHS, RHS > > llvm::PatternMatch::m_AddLike ( const LHS L,
const RHS R 
)
inline

◆ m_AllOnes()

cst_pred_ty< is_all_ones > llvm::PatternMatch::m_AllOnes ( )
inline

Match an integer or vector with all bits set.

For vectors, this includes constants with undefined elements.

Definition at line 477 of file PatternMatch.h.

Referenced by areInverseVectorBitmasks(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), dropRedundantMaskingOfLeftShiftInput(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldCtpop(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), foldICmpOfUAddOv(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), getKnownBitsFromAndXorOr(), llvm::GCNTTIImpl::instCombineIntrinsic(), isMaskOrZero(), m_Not(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchSelectPattern(), matchUAddWithOverflowConstantEdgeCases(), shouldExpandCmpArithRMWInIR(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAShrInst(), llvm::simplifyBinaryIntrinsic(), simplifyGEPInst(), simplifyIntrinsic(), simplifyOrInst(), simplifySelectWithICmpCond(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().

◆ m_AllowReassoc()

template<typename T >
AllowReassoc_match< T > llvm::PatternMatch::m_AllowReassoc ( const T SubPattern)
inline

◆ m_And()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::And > llvm::PatternMatch::m_And ( const LHS L,
const RHS R 
)
inline

Definition at line 1152 of file PatternMatch.h.

Referenced by canScalarizeAccess(), checkForNegativeOperand(), collectBitParts(), computeKnownBitsFromCmp(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), countToEliminateCompares(), detectShiftUntilBitTestIdiom(), llvm::findValuesAffectedByCondition(), foldAddToAshr(), foldAndToUsubsat(), foldAnyOrAllBitsSet(), foldBoxMultiply(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpWithLowBitMaskedVal(), foldNotXor(), foldOrToXor(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSetClearBits(), foldSignedTruncationCheck(), foldXorToXor(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getFreelyInvertedImpl(), getMaskedTypeForICmpPair(), haveNoCommonBitsSetSpecialCases(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), lookThroughAnd(), matchAndOrChain(), MatchRem(), parseCondition(), llvm::parseWidenableBranch(), llvm::X86TargetLowering::shouldSinkOperands(), simplifyOrInst(), simplifyOrLogic(), simplifySelectBitTest(), simplifySelectWithICmpCond(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().

◆ m_AnyIntegralConstant()

cst_pred_ty< is_any_apint > llvm::PatternMatch::m_AnyIntegralConstant ( )
inline

Match an integer or vector with any integral constant.

For vectors, this includes constants with undefined elements.

Definition at line 460 of file PatternMatch.h.

Referenced by FoldTwoEntryPHINode().

◆ m_AnyZeroFP()

cstfp_pred_ty< is_any_zero_fp > llvm::PatternMatch::m_AnyZeroFP ( )
inline

◆ m_APFloat()

apfloat_match llvm::PatternMatch::m_APFloat ( const APFloat *&  Res)
inline

◆ m_APFloatAllowPoison()

apfloat_match llvm::PatternMatch::m_APFloatAllowPoison ( const APFloat *&  Res)
inline

Match APFloat while allowing poison in splat vector constants.

Definition at line 317 of file PatternMatch.h.

Referenced by llvm::fcmpImpliesClass(), llvm::fcmpToClassTest(), simplifyFCmpInst(), and llvm::InstCombinerImpl::visitFMul().

◆ m_APFloatForbidPoison()

apfloat_match llvm::PatternMatch::m_APFloatForbidPoison ( const APFloat *&  Res)
inline

Match APFloat while forbidding poison in splat vector constants.

Definition at line 322 of file PatternMatch.h.

◆ m_APInt()

apint_match llvm::PatternMatch::m_APInt ( const APInt *&  Res)
inline

Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt.

Definition at line 294 of file PatternMatch.h.

Referenced by annotateNonNullAndDereferenceable(), bitTrackingDCE(), canEvaluateShifted(), canEvaluateShiftedShift(), canEvaluateZExtd(), canonicalizeAbs(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLogicFirst(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), checkForNegativeOperand(), cmpExcludesZero(), collectBitParts(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::computeConstantRange(), computeKnownBits(), computeKnownBitsFromCmp(), computeKnownBitsFromOperator(), computeKnownFPClassFromCond(), ComputeNumSignBitsImpl(), llvm::ConstantFoldBinaryInstruction(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), FindSingleBitChange(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldBitwiseLogicWithIntrinsics(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpAndShift(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpDivConstant(), llvm::InstCombinerImpl::foldICmpEqIntrinsicWithConstant(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), llvm::InstCombinerImpl::foldICmpMulConstant(), llvm::InstCombinerImpl::foldICmpOrConstant(), llvm::InstCombinerImpl::foldICmpShlConstant(), llvm::InstCombinerImpl::foldICmpShrConstant(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpUDivConstant(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpUSubSatOrUAddSatWithConstant(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpXorConstant(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), foldLoadsRecursive(), foldLogOpOfMaskedICmps(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), foldNegativePower2AndShiftedMask(), foldNoWrapAdd(), foldSelectICmpAnd(), foldSelectICmpAndZeroShl(), llvm::InstCombinerImpl::foldSelectIntoOp(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftedShift(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), getAlternateBinop(), getDemandedBitsLHSMask(), llvm::ConstantExpr::getExactLogBase2(), getMaskedICmpType(), getNotValue(), getRangeForIntrinsic(), getRangeForSelectPattern(), getValueFromOverflowCondition(), isAllocSiteRemovable(), isDivZero(), isImpliedCondICmps(), isLoadCombineCandidateImpl(), isNonEqualMul(), isNonEqualPHIs(), isNonEqualShl(), isNonZeroRecurrence(), isPoisonShift(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), isSignedMinMaxClamp(), isSignedMinMaxIntrinsicClamp(), isTruePredicate(), lookThroughAnd(), maintainNoSignedWrap(), matchAndOrChain(), matchClamp(), MatchDiv(), matchICmpOperand(), matchIntPart(), matchMinMax(), MatchMul(), matchOrConcat(), MatchRem(), moveAddAfterMinMax(), setLimitsForBinOp(), ShrinkDemandedConstant(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithCtpop(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDiv(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyIntrinsic(), simplifyIRemMulShl(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyOrOfICmpsWithAdd(), simplifySelectBitTest(), simplifySelectWithICmpCond(), simplifySwitchOnSelectUsingRanges(), tryFactorization(), trySimplifyICmpWithAdds(), tryToFPToSat(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitXor(), and llvm::reassociate::XorOpnd::XorOpnd().

◆ m_APIntAllowPoison()

apint_match llvm::PatternMatch::m_APIntAllowPoison ( const APInt *&  Res)
inline

◆ m_APIntForbidPoison()

apint_match llvm::PatternMatch::m_APIntForbidPoison ( const APInt *&  Res)
inline

Match APInt while forbidding poison in splat vector constants.

Definition at line 305 of file PatternMatch.h.

◆ m_Argument()

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

Match an argument.

Definition at line 2321 of file PatternMatch.h.

◆ m_AShr()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::AShr > llvm::PatternMatch::m_AShr ( const LHS L,
const RHS R 
)
inline

◆ m_BasicBlock() [1/3]

class_match< BasicBlock > llvm::PatternMatch::m_BasicBlock ( )
inline

◆ m_BasicBlock() [2/3]

bind_ty< BasicBlock > llvm::PatternMatch::m_BasicBlock ( BasicBlock *&  V)
inline

Match a basic block value, capturing it if we match.

Definition at line 792 of file PatternMatch.h.

◆ m_BasicBlock() [3/3]

bind_ty< const BasicBlock > llvm::PatternMatch::m_BasicBlock ( const BasicBlock *&  V)
inline

Definition at line 793 of file PatternMatch.h.

◆ m_BinOp() [1/4]

class_match< BinaryOperator > llvm::PatternMatch::m_BinOp ( )
inline

◆ m_BinOp() [2/4]

bind_ty< BinaryOperator > llvm::PatternMatch::m_BinOp ( BinaryOperator *&  I)
inline

Match a binary operator, capturing it if we match.

Definition at line 769 of file PatternMatch.h.

References I.

◆ m_BinOp() [3/4]

template<typename LHS , typename RHS >
AnyBinaryOp_match< LHS, RHS > llvm::PatternMatch::m_BinOp ( const LHS L,
const RHS R 
)
inline

Definition at line 986 of file PatternMatch.h.

◆ m_BinOp() [4/4]

template<typename LHS , typename RHS >
SpecificBinaryOp_match< LHS, RHS > llvm::PatternMatch::m_BinOp ( unsigned  Opcode,
const LHS L,
const RHS R 
)
inline

Matches a specific opcode.

Definition at line 1305 of file PatternMatch.h.

◆ m_BitCast()

template<typename OpTy >
CastOperator_match< OpTy, Instruction::BitCast > llvm::PatternMatch::m_BitCast ( const OpTy &  Op)
inline

◆ m_BitReverse()

template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty llvm::PatternMatch::m_BitReverse ( const Opnd0 &  Op0)
inline

◆ m_BitwiseLogic()

template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_bitwiselogic_op > llvm::PatternMatch::m_BitwiseLogic ( const LHS L,
const RHS R 
)
inline

Matches bitwise logic operations.

Definition at line 1448 of file PatternMatch.h.

Referenced by llvm::findValuesAffectedByCondition(), and foldBitOrderCrossLogicOp().

◆ m_Br() [1/2]

template<typename Cond_t >
brc_match< Cond_t, bind_ty< BasicBlock >, bind_ty< BasicBlock > > llvm::PatternMatch::m_Br ( const Cond_t &  C,
BasicBlock *&  T,
BasicBlock *&  F 
)
inline

◆ m_Br() [2/2]

template<typename Cond_t , typename TrueBlock_t , typename FalseBlock_t >
brc_match< Cond_t, TrueBlock_t, FalseBlock_t > llvm::PatternMatch::m_Br ( const Cond_t &  C,
const TrueBlock_t &  T,
const FalseBlock_t &  F 
)
inline

Definition at line 2022 of file PatternMatch.h.

References llvm::CallingConv::C, and F.

◆ m_BSwap()

template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty llvm::PatternMatch::m_BSwap ( const Opnd0 &  Op0)
inline

◆ m_c_Add()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Add, true > llvm::PatternMatch::m_c_Add ( const LHS L,
const RHS R 
)
inline

◆ m_c_And()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::And, true > llvm::PatternMatch::m_c_And ( const LHS L,
const RHS R 
)
inline

◆ m_c_BinOp() [1/2]

template<typename LHS , typename RHS >
AnyBinaryOp_match< LHS, RHS, true > llvm::PatternMatch::m_c_BinOp ( const LHS L,
const RHS R 
)
inline

◆ m_c_BinOp() [2/2]

template<typename LHS , typename RHS >
SpecificBinaryOp_match< LHS, RHS, true > llvm::PatternMatch::m_c_BinOp ( unsigned  Opcode,
const LHS L,
const RHS R 
)
inline

Matches a specific opcode with LHS and RHS in either order.

Definition at line 2526 of file PatternMatch.h.

◆ m_c_BitwiseLogic()

template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_bitwiselogic_op, true > llvm::PatternMatch::m_c_BitwiseLogic ( const LHS L,
const RHS R 
)
inline

Matches bitwise logic operations in either order.

Definition at line 1455 of file PatternMatch.h.

◆ m_c_DisjointOr()

template<typename LHS , typename RHS >
DisjointOr_match< LHS, RHS, true > llvm::PatternMatch::m_c_DisjointOr ( const LHS L,
const RHS R 
)
inline

Definition at line 1336 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::visitOr().

◆ m_c_FAdd()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FAdd, true > llvm::PatternMatch::m_c_FAdd ( const LHS L,
const RHS R 
)
inline

Matches FAdd with LHS and RHS in either order.

Definition at line 2637 of file PatternMatch.h.

Referenced by factorizeLerp(), simplifyFSubInst(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFSub().

◆ m_c_FMul()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FMul, true > llvm::PatternMatch::m_c_FMul ( const LHS L,
const RHS R 
)
inline

◆ m_c_ICmp()

template<typename LHS , typename RHS >
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicate, true > llvm::PatternMatch::m_c_ICmp ( ICmpInst::Predicate Pred,
const LHS L,
const RHS R 
)
inline

◆ m_c_Intrinsic()

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

Definition at line 2629 of file PatternMatch.h.

References m_CombineOr().

◆ m_c_LogicalAnd()

template<typename LHS , typename RHS >
LogicalOp_match< LHS, RHS, Instruction::And, true > llvm::PatternMatch::m_c_LogicalAnd ( const LHS L,
const RHS R 
)
inline

Matches L && R with LHS and RHS in either order.

Definition at line 2832 of file PatternMatch.h.

Referenced by simplifyOrLogic(), and simplifySelectInst().

◆ m_c_LogicalOp()

template<typename LHS , typename RHS >
auto llvm::PatternMatch::m_c_LogicalOp ( const LHS L,
const RHS R 
)
inline

Matches either L && R or L || R with LHS and RHS in either order.

Definition at line 2869 of file PatternMatch.h.

References LHS, m_LogicalOp(), and RHS.

◆ m_c_LogicalOr()

template<typename LHS , typename RHS >
LogicalOp_match< LHS, RHS, Instruction::Or, true > llvm::PatternMatch::m_c_LogicalOr ( const LHS L,
const RHS R 
)
inline

Matches L || R with LHS and RHS in either order.

Definition at line 2850 of file PatternMatch.h.

Referenced by simplifyOrLogic(), and simplifySelectInst().

◆ m_c_MaxOrMin()

template<typename LHS , typename RHS >
match_combine_or< match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty, true >, MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty, true > >, match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty, true >, MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty, true > > > llvm::PatternMatch::m_c_MaxOrMin ( const LHS L,
const RHS R 
)
inline

◆ m_c_Mul()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Mul, true > llvm::PatternMatch::m_c_Mul ( const LHS L,
const RHS R 
)
inline

◆ m_c_NUWAdd()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrap, true > llvm::PatternMatch::m_c_NUWAdd ( const LHS L,
const RHS R 
)
inline

Definition at line 1259 of file PatternMatch.h.

References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.

◆ m_c_Or()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Or, true > llvm::PatternMatch::m_c_Or ( const LHS L,
const RHS R 
)
inline

◆ m_c_SMax()

template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty, true > llvm::PatternMatch::m_c_SMax ( const LHS L,
const RHS R 
)
inline

Matches an SMax with LHS and RHS in either order.

Definition at line 2599 of file PatternMatch.h.

Referenced by isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().

◆ m_c_SMin()

template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty, true > llvm::PatternMatch::m_c_SMin ( const LHS L,
const RHS R 
)
inline

Matches an SMin with LHS and RHS in either order.

Definition at line 2593 of file PatternMatch.h.

Referenced by isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().

◆ m_c_UMax()

template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty, true > llvm::PatternMatch::m_c_UMax ( const LHS L,
const RHS R 
)
inline

Matches a UMax with LHS and RHS in either order.

Definition at line 2611 of file PatternMatch.h.

Referenced by isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().

◆ m_c_UMin()

template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty, true > llvm::PatternMatch::m_c_UMin ( const LHS L,
const RHS R 
)
inline

Matches a UMin with LHS and RHS in either order.

Definition at line 2605 of file PatternMatch.h.

Referenced by foldToUnsignedSaturatedAdd(), isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().

◆ m_c_Xor()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Xor, true > llvm::PatternMatch::m_c_Xor ( const LHS L,
const RHS R 
)
inline

◆ m_Cmp() [1/2]

class_match< CmpInst > llvm::PatternMatch::m_Cmp ( )
inline

◆ m_Cmp() [2/2]

template<typename LHS , typename RHS >
CmpClass_match< LHS, RHS, CmpInst, CmpInst::Predicate > llvm::PatternMatch::m_Cmp ( CmpInst::Predicate Pred,
const LHS L,
const RHS R 
)
inline

Definition at line 1525 of file PatternMatch.h.

◆ m_CombineAnd()

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

◆ m_CombineOr()

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

◆ m_Constant() [1/2]

class_match< Constant > llvm::PatternMatch::m_Constant ( )
inline

Match an arbitrary Constant and ignore it.

Definition at line 160 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), constantFoldOperationIntoSelectOperand(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::findScalarElement(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithConstEq(), foldBitCastBitwiseLogic(), foldConstantInsEltIntoShuffle(), foldFDivConstantDividend(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), foldNoWrapAdd(), foldSelectBinOpIdentity(), foldSelectGEP(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVectorCmp(), getAlternateBinop(), getBinOpsForFactorization(), getNegatibleInsts(), hoistInsEltConst(), llvm::ARMTTIImpl::instCombineIntrinsic(), lookThroughCast(), m_ImmConstant(), matchIncrement(), narrowUDivURem(), NegateValue(), recordCondition(), simplifyAssocCastAssoc(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), simplifyLogicOfAddSub(), simplifySelectInst(), simplifyShuffleVectorInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitFSub(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().

◆ m_Constant() [2/2]

bind_ty< Constant > llvm::PatternMatch::m_Constant ( Constant *&  C)
inline

Match a Constant, capturing the value if we match.

Definition at line 780 of file PatternMatch.h.

References llvm::CallingConv::C.

◆ m_ConstantExpr() [1/2]

constantexpr_match llvm::PatternMatch::m_ConstantExpr ( )
inline

Match a constant expression or a constant that contains a constant expression.

Definition at line 181 of file PatternMatch.h.

Referenced by m_ImmConstant(), simplifyInstructionWithPHI(), and llvm::InstCombinerImpl::visitXor().

◆ m_ConstantExpr() [2/2]

bind_ty< ConstantExpr > llvm::PatternMatch::m_ConstantExpr ( ConstantExpr *&  C)
inline

Match a ConstantExpr, capturing the value if we match.

Definition at line 789 of file PatternMatch.h.

References llvm::CallingConv::C.

◆ m_ConstantFP() [1/2]

class_match< ConstantFP > llvm::PatternMatch::m_ConstantFP ( )
inline

Match an arbitrary ConstantFP and ignore it.

Definition at line 168 of file PatternMatch.h.

Referenced by matchFPExtFromF16().

◆ m_ConstantFP() [2/2]

bind_ty< ConstantFP > llvm::PatternMatch::m_ConstantFP ( ConstantFP *&  C)
inline

Match a ConstantFP, capturing the value if we match.

Definition at line 786 of file PatternMatch.h.

References llvm::CallingConv::C.

◆ m_ConstantInt() [1/4]

class_match< ConstantInt > llvm::PatternMatch::m_ConstantInt ( )
inline

◆ m_ConstantInt() [2/4]

template<int64_t Val>
constantint_match< Val > llvm::PatternMatch::m_ConstantInt ( )
inline

Match a ConstantInt with a specific value.

Definition at line 342 of file PatternMatch.h.

◆ m_ConstantInt() [3/4]

bind_ty< ConstantInt > llvm::PatternMatch::m_ConstantInt ( ConstantInt *&  CI)
inline

Match a ConstantInt, capturing the value if we match.

Definition at line 783 of file PatternMatch.h.

◆ m_ConstantInt() [4/4]

bind_const_intval_ty llvm::PatternMatch::m_ConstantInt ( uint64_t V)
inline

Match a ConstantInt and bind to its value.

This does not match ConstantInts wider than 64-bits.

Definition at line 936 of file PatternMatch.h.

◆ m_CopySign()

template<typename Opnd0 , typename Opnd1 >
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty llvm::PatternMatch::m_CopySign ( const Opnd0 &  Op0,
const Opnd1 &  Op1 
)
inline

◆ m_Deferred() [1/4]

deferredval_ty< BasicBlock > llvm::PatternMatch::m_Deferred ( BasicBlock *const BB)
inline

A commutative-friendly version of m_Specific().

Definition at line 956 of file PatternMatch.h.

◆ m_Deferred() [2/4]

deferredval_ty< const BasicBlock > llvm::PatternMatch::m_Deferred ( const BasicBlock *const BB)
inline

Definition at line 960 of file PatternMatch.h.

◆ m_Deferred() [3/4]

deferredval_ty< const Value > llvm::PatternMatch::m_Deferred ( const Value *const V)
inline

Definition at line 840 of file PatternMatch.h.

◆ m_Deferred() [4/4]

deferredval_ty< Value > llvm::PatternMatch::m_Deferred ( Value *const V)
inline

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

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

Definition at line 839 of file PatternMatch.h.

Referenced by dropRedundantMaskingOfLeftShiftInput(), factorizeLerp(), foldAndOrOfICmpsWithConstEq(), foldAndToUsubsat(), foldAndToXor(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldFMulReassoc(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), llvm::InstCombinerImpl::foldPowiReassoc(), foldToUnsignedSaturatedAdd(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldXorToXor(), getKnownBitsFromAndXorOr(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), haveNoCommonBitsSetSpecialCases(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), isMaskOrZero(), matchesSquareSum(), matchExpandedRem(), simplifyAndCommutative(), simplifyAndInst(), simplifySelectWithICmpCond(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().

◆ m_DisjointOr()

template<typename LHS , typename RHS >
DisjointOr_match< LHS, RHS > llvm::PatternMatch::m_DisjointOr ( const LHS L,
const RHS R 
)
inline

◆ m_ElementWiseBitCast()

template<typename OpTy >
ElementWiseBitCast_match< OpTy > llvm::PatternMatch::m_ElementWiseBitCast ( const OpTy &  Op)
inline

◆ m_Exact()

template<typename T >
Exact_match< T > llvm::PatternMatch::m_Exact ( const T SubPattern)
inline

◆ m_ExtractElt()

template<typename Val_t , typename Idx_t >
TwoOps_match< Val_t, Idx_t, Instruction::ExtractElement > llvm::PatternMatch::m_ExtractElt ( const Val_t &  Val,
const Idx_t &  Idx 
)
inline

◆ m_ExtractValue() [1/2]

template<int Ind, typename Val_t >
ExtractValue_match< Ind, Val_t > llvm::PatternMatch::m_ExtractValue ( const Val_t &  V)
inline

Match a single index ExtractValue instruction.

For example m_ExtractValue<1>(...)

Definition at line 2707 of file PatternMatch.h.

Referenced by directlyImpliesPoison().

◆ m_ExtractValue() [2/2]

template<typename Val_t >
ExtractValue_match<-1, Val_t > llvm::PatternMatch::m_ExtractValue ( const Val_t &  V)
inline

Match an ExtractValue instruction with any index.

For example m_ExtractValue(...)

Definition at line 2714 of file PatternMatch.h.

◆ m_FAbs()

template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty llvm::PatternMatch::m_FAbs ( const Opnd0 &  Op0)
inline

◆ m_FAdd()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FAdd > llvm::PatternMatch::m_FAdd ( const LHS L,
const RHS R 
)
inline

◆ m_FCanonicalize()

template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty llvm::PatternMatch::m_FCanonicalize ( const Opnd0 &  Op0)
inline

Definition at line 2460 of file PatternMatch.h.

◆ m_FCmp()

template<typename LHS , typename RHS >
CmpClass_match< LHS, RHS, FCmpInst, FCmpInst::Predicate > llvm::PatternMatch::m_FCmp ( FCmpInst::Predicate Pred,
const LHS L,
const RHS R 
)
inline

◆ m_FDiv()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FDiv > llvm::PatternMatch::m_FDiv ( const LHS L,
const RHS R 
)
inline

◆ m_Finite() [1/2]

cstfp_pred_ty< is_finite > llvm::PatternMatch::m_Finite ( )
inline

Match a finite FP constant, i.e.

not infinity or NaN. For vectors, this includes constants with undefined elements.

Definition at line 691 of file PatternMatch.h.

◆ m_Finite() [2/2]

apf_pred_ty< is_finite > llvm::PatternMatch::m_Finite ( const APFloat *&  V)
inline

Definition at line 694 of file PatternMatch.h.

◆ m_FiniteNonZero() [1/2]

cstfp_pred_ty< is_finitenonzero > llvm::PatternMatch::m_FiniteNonZero ( )
inline

Match a finite non-zero FP constant.

For vectors, this includes constants with undefined elements.

Definition at line 701 of file PatternMatch.h.

Referenced by llvm::GCNTTIImpl::canSimplifyLegacyMulToMul().

◆ m_FiniteNonZero() [2/2]

apf_pred_ty< is_finitenonzero > llvm::PatternMatch::m_FiniteNonZero ( const APFloat *&  V)
inline

Definition at line 704 of file PatternMatch.h.

◆ m_FMax()

template<typename Opnd0 , typename Opnd1 >
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty llvm::PatternMatch::m_FMax ( const Opnd0 &  Op0,
const Opnd1 &  Op1 
)
inline

Definition at line 2471 of file PatternMatch.h.

◆ m_FMin()

template<typename Opnd0 , typename Opnd1 >
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty llvm::PatternMatch::m_FMin ( const Opnd0 &  Op0,
const Opnd1 &  Op1 
)
inline

Definition at line 2465 of file PatternMatch.h.

◆ m_FMul()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FMul > llvm::PatternMatch::m_FMul ( const LHS L,
const RHS R 
)
inline

◆ m_FNeg()

template<typename OpTy >
FNeg_match< OpTy > llvm::PatternMatch::m_FNeg ( const OpTy &  X)
inline

◆ m_FNegNSZ()

template<typename RHS >
BinaryOp_match< cstfp_pred_ty< is_any_zero_fp >, RHS, Instruction::FSub > llvm::PatternMatch::m_FNegNSZ ( const RHS X)
inline

Match 'fneg X' as 'fsub +-0.0, X'.

Definition at line 1099 of file PatternMatch.h.

References m_AnyZeroFP(), m_FSub(), and X.

Referenced by simplifyFDivInst().

◆ m_FPExt()

template<typename OpTy >
CastInst_match< OpTy, FPExtInst > llvm::PatternMatch::m_FPExt ( const OpTy &  Op)
inline

◆ m_FPOne()

specific_fpval llvm::PatternMatch::m_FPOne ( )
inline

Match a float 1.0 or vector with all elements equal to 1.0.

Definition at line 867 of file PatternMatch.h.

References m_SpecificFP().

Referenced by factorizeLerp(), llvm::GCNTTIImpl::getArithmeticInstrCost(), instCombineSVEVectorMul(), simplifyFDivInst(), and simplifyFMAFMul().

◆ m_FPToSI()

template<typename OpTy >
CastInst_match< OpTy, FPToSIInst > llvm::PatternMatch::m_FPToSI ( const OpTy &  Op)
inline

Definition at line 1961 of file PatternMatch.h.

Referenced by isKnownExactCastIntToFP(), and tryToFPToSat().

◆ m_FPToUI()

template<typename OpTy >
CastInst_match< OpTy, FPToUIInst > llvm::PatternMatch::m_FPToUI ( const OpTy &  Op)
inline

Definition at line 1956 of file PatternMatch.h.

Referenced by isKnownExactCastIntToFP().

◆ m_FPTrunc()

template<typename OpTy >
CastInst_match< OpTy, FPTruncInst > llvm::PatternMatch::m_FPTrunc ( const OpTy &  Op)
inline

◆ m_Freeze()

template<typename OpTy >
OneOps_match< OpTy, Instruction::Freeze > llvm::PatternMatch::m_Freeze ( const OpTy &  Op)
inline

Matches FreezeInst.

Definition at line 1644 of file PatternMatch.h.

◆ m_FRem()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FRem > llvm::PatternMatch::m_FRem ( const LHS L,
const RHS R 
)
inline

Definition at line 1146 of file PatternMatch.h.

◆ m_FShl()

template<typename Opnd0 , typename Opnd1 , typename Opnd2 >
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2 >::Ty llvm::PatternMatch::m_FShl ( const Opnd0 &  Op0,
const Opnd1 &  Op1,
const Opnd2 &  Op2 
)
inline

◆ m_FShr()

template<typename Opnd0 , typename Opnd1 , typename Opnd2 >
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2 >::Ty llvm::PatternMatch::m_FShr ( const Opnd0 &  Op0,
const Opnd1 &  Op1,
const Opnd2 &  Op2 
)
inline

◆ m_FSub()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::FSub > llvm::PatternMatch::m_FSub ( const LHS L,
const RHS R 
)
inline

◆ m_GEP()

template<typename... OperandTypes>
auto llvm::PatternMatch::m_GEP ( const OperandTypes &...  Ops)
inline

Matches GetElementPtrInst.

Definition at line 1759 of file PatternMatch.h.

Referenced by foldDependentIVs().

◆ m_ICmp()

template<typename LHS , typename RHS >
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicate > llvm::PatternMatch::m_ICmp ( ICmpInst::Predicate Pred,
const LHS L,
const RHS R 
)
inline

Definition at line 1531 of file PatternMatch.h.

Referenced by llvm::analyzeICmp(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), checkOrAndOpImpliedByOther(), collectUnswitchCandidatesWithInjections(), computeKnownFPClassFromCond(), constantFoldOperationIntoSelectOperand(), countToEliminateCompares(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), llvm::findValuesAffectedByCondition(), foldAddToAshr(), foldAndOrOfICmpsWithConstEq(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldReductionIdiom(), foldSelectICmpAndZeroShl(), llvm::InstCombinerImpl::foldSelectOpOp(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), llvm::X86TargetLowering::getJumpConditionMergingParams(), llvm::SCEVExpander::hasRelatedExistingExpansion(), hoistAddSub(), hoistMinMax(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::isProcessableCondBI(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), processUse(), recordCondition(), shouldExpandCmpArithRMWInIR(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrWithICmpEq(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyOrOfICmpsWithAdd(), simplifySelectWithICmpCond(), simplifySwitchOnSelectUsingRanges(), simplifyUnsignedRangeCheck(), tryToMoveFreeBeforeNullTest(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitOr().

◆ m_IDiv()

template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_idiv_op > llvm::PatternMatch::m_IDiv ( const LHS L,
const RHS R 
)
inline

◆ m_ImmConstant() [1/2]

match_combine_and< class_match< Constant >, match_unless< constantexpr_match > > llvm::PatternMatch::m_ImmConstant ( )
inline

Match an arbitrary immediate Constant and ignore it.

Definition at line 800 of file PatternMatch.h.

References m_CombineAnd(), m_Constant(), m_ConstantExpr(), and m_Unless().

Referenced by canAlwaysEvaluateInType(), canEvaluateShifted(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpIntrinsicWithIntrinsic(), llvm::InstCombinerImpl::foldICmpOrConstant(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftOfShiftedBinOp(), FoldTwoEntryPHINode(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::InstCombiner::getFreelyInvertedImpl(), isImpliedCondICmps(), reassociateMinMaxWithConstantInOperand(), reassociateMinMaxWithConstants(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpInst(), simplifyTernarylogic(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().

◆ m_ImmConstant() [2/2]

match_combine_and< bind_ty< Constant >, match_unless< constantexpr_match > > llvm::PatternMatch::m_ImmConstant ( Constant *&  C)
inline

Match an immediate Constant, capturing the value if we match.

Definition at line 807 of file PatternMatch.h.

References llvm::CallingConv::C, m_CombineAnd(), m_Constant(), m_ConstantExpr(), and m_Unless().

◆ m_Inf()

cstfp_pred_ty< is_inf > llvm::PatternMatch::m_Inf ( )
inline

Match a positive or negative infinity FP constant.

For vectors, this includes constants with undefined elements.

Definition at line 675 of file PatternMatch.h.

Referenced by matchUnorderedInfCompare(), simplifyFAddInst(), simplifyFPOp(), and simplifyFSubInst().

◆ m_InsertElt()

template<typename Val_t , typename Elt_t , typename Idx_t >
ThreeOps_match< Val_t, Elt_t, Idx_t, Instruction::InsertElement > llvm::PatternMatch::m_InsertElt ( const Val_t &  Val,
const Elt_t &  Elt,
const Idx_t &  Idx 
)
inline

◆ m_InsertValue()

template<int Ind, typename Val_t , typename Elt_t >
InsertValue_match< Ind, Val_t, Elt_t > llvm::PatternMatch::m_InsertValue ( const Val_t &  Val,
const Elt_t &  Elt 
)
inline

Matches a single index InsertValue instruction.

Definition at line 2736 of file PatternMatch.h.

◆ m_Instruction()

bind_ty< Instruction > llvm::PatternMatch::m_Instruction ( Instruction *&  I)
inline

◆ m_Intrinsic() [1/7]

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

Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X))

Definition at line 2381 of file PatternMatch.h.

◆ m_Intrinsic() [2/7]

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

Definition at line 2402 of file PatternMatch.h.

References m_CombineAnd().

◆ m_Intrinsic() [3/7]

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

Definition at line 2407 of file PatternMatch.h.

References m_CombineAnd().

◆ m_Intrinsic() [4/7]

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

Definition at line 2414 of file PatternMatch.h.

References m_CombineAnd().

◆ m_Intrinsic() [5/7]

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

Definition at line 2421 of file PatternMatch.h.

References m_CombineAnd().

◆ m_Intrinsic() [6/7]

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

Definition at line 2428 of file PatternMatch.h.

References m_CombineAnd().

◆ m_Intrinsic() [7/7]

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

Definition at line 2437 of file PatternMatch.h.

References m_CombineAnd().

◆ m_IntToPtr()

template<typename OpTy >
CastOperator_match< OpTy, Instruction::IntToPtr > llvm::PatternMatch::m_IntToPtr ( const OpTy &  Op)
inline

Matches IntToPtr.

Definition at line 1878 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::visitPtrToInt().

◆ m_IRem()

template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_irem_op > llvm::PatternMatch::m_IRem ( const LHS L,
const RHS R 
)
inline

Matches integer remainder operations.

Definition at line 1468 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), and isKnownNonNullFromDominatingCondition().

◆ m_Load()

template<typename OpTy >
OneOps_match< OpTy, Instruction::Load > llvm::PatternMatch::m_Load ( const OpTy &  Op)
inline

Matches LoadInst.

Definition at line 1745 of file PatternMatch.h.

Referenced by cheapToScalarize().

◆ m_LogicalAnd() [1/2]

auto llvm::PatternMatch::m_LogicalAnd ( )
inline

◆ m_LogicalAnd() [2/2]

template<typename LHS , typename RHS >
LogicalOp_match< LHS, RHS, Instruction::And > llvm::PatternMatch::m_LogicalAnd ( const LHS L,
const RHS R 
)
inline

Matches L && R either in the form of L & R or L ? R : false.

Note that the latter form is poison-blocking.

Definition at line 2821 of file PatternMatch.h.

◆ m_LogicalOp() [1/2]

auto llvm::PatternMatch::m_LogicalOp ( )
inline

◆ m_LogicalOp() [2/2]

template<typename LHS , typename RHS , bool Commutable = false>
auto llvm::PatternMatch::m_LogicalOp ( const LHS L,
const RHS R 
)
inline

Matches either L && R or L || R, either one being in the either binary or logical form.

Note that the latter form is poison-blocking.

Definition at line 2858 of file PatternMatch.h.

References m_CombineOr().

◆ m_LogicalOr() [1/2]

auto llvm::PatternMatch::m_LogicalOr ( )
inline

◆ m_LogicalOr() [2/2]

template<typename LHS , typename RHS >
LogicalOp_match< LHS, RHS, Instruction::Or > llvm::PatternMatch::m_LogicalOr ( const LHS L,
const RHS R 
)
inline

Matches L || R either in the form of L | R or L ? true : R.

Note that the latter form is poison-blocking.

Definition at line 2839 of file PatternMatch.h.

◆ m_LogicalShift()

template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_logical_shift_op > llvm::PatternMatch::m_LogicalShift ( const LHS L,
const RHS R 
)
inline

◆ m_LowBitMask() [1/2]

cst_pred_ty< is_lowbit_mask > llvm::PatternMatch::m_LowBitMask ( )
inline

Match an integer or vector with only the low bit(s) set.

For vectors, this includes constants with undefined elements.

Definition at line 622 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), and llvm::InstCombinerImpl::foldICmpEquality().

◆ m_LowBitMask() [2/2]

api_pred_ty< is_lowbit_mask > llvm::PatternMatch::m_LowBitMask ( const APInt *&  V)
inline

Definition at line 625 of file PatternMatch.h.

◆ m_LowBitMaskOrZero() [1/2]

cst_pred_ty< is_lowbit_mask_or_zero > llvm::PatternMatch::m_LowBitMaskOrZero ( )
inline

Match an integer or vector with only the low bit(s) set.

For vectors, this includes constants with undefined elements.

Definition at line 632 of file PatternMatch.h.

Referenced by isMaskOrZero().

◆ m_LowBitMaskOrZero() [2/2]

api_pred_ty< is_lowbit_mask_or_zero > llvm::PatternMatch::m_LowBitMaskOrZero ( const APInt *&  V)
inline

Definition at line 635 of file PatternMatch.h.

◆ m_LShr()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::LShr > llvm::PatternMatch::m_LShr ( const LHS L,
const RHS R 
)
inline

◆ m_MaskedGather()

template<typename Opnd0 , typename Opnd1 , typename Opnd2 , typename Opnd3 >
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2, Opnd3 >::Ty llvm::PatternMatch::m_MaskedGather ( const Opnd0 &  Op0,
const Opnd1 &  Op1,
const Opnd2 &  Op2,
const Opnd3 &  Op3 
)
inline

Matches MaskedGather Intrinsic.

Definition at line 2396 of file PatternMatch.h.

◆ m_MaskedLoad()

template<typename Opnd0 , typename Opnd1 , typename Opnd2 , typename Opnd3 >
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2, Opnd3 >::Ty llvm::PatternMatch::m_MaskedLoad ( const Opnd0 &  Op0,
const Opnd1 &  Op1,
const Opnd2 &  Op2,
const Opnd3 &  Op3 
)
inline

Matches MaskedLoad Intrinsic.

Definition at line 2388 of file PatternMatch.h.

◆ m_MaxOrMin()

template<typename LHS , typename RHS >
match_combine_or< match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty >, MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty > >, match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty >, MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty > > > llvm::PatternMatch::m_MaxOrMin ( const LHS L,
const RHS R 
)
inline

◆ m_MaxSignedValue() [1/2]

cst_pred_ty< is_maxsignedvalue > llvm::PatternMatch::m_MaxSignedValue ( )
inline

Match an integer or vector with values having all bits except for the high bit set (0x7f...).

For vectors, this includes constants with undefined elements.

Definition at line 487 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::visitAnd().

◆ m_MaxSignedValue() [2/2]

api_pred_ty< is_maxsignedvalue > llvm::PatternMatch::m_MaxSignedValue ( const APInt *&  V)
inline

Definition at line 490 of file PatternMatch.h.

◆ m_Mul()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Mul > llvm::PatternMatch::m_Mul ( const LHS L,
const RHS R 
)
inline

◆ m_NaN()

cstfp_pred_ty< is_nan > llvm::PatternMatch::m_NaN ( )
inline

Match an arbitrary NaN constant.

This includes quiet and signalling nans. For vectors, this includes constants with undefined elements.

Definition at line 659 of file PatternMatch.h.

Referenced by llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::simplifyBinaryIntrinsic(), and simplifyFPOp().

◆ m_Neg()

template<typename ValTy >
BinaryOp_match< cst_pred_ty< is_zero_int >, ValTy, Instruction::Sub > llvm::PatternMatch::m_Neg ( const ValTy &  V)
inline

◆ m_NegatedPower2() [1/2]

cst_pred_ty< is_negated_power2 > llvm::PatternMatch::m_NegatedPower2 ( )
inline

Match a integer or vector negated power-of-2.

For vectors, this includes constants with undefined elements.

Definition at line 576 of file PatternMatch.h.

Referenced by foldNegativePower2AndShiftedMask(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSDiv().

◆ m_NegatedPower2() [2/2]

api_pred_ty< is_negated_power2 > llvm::PatternMatch::m_NegatedPower2 ( const APInt *&  V)
inline

Definition at line 579 of file PatternMatch.h.

◆ m_NegatedPower2OrZero() [1/2]

cst_pred_ty< is_negated_power2_or_zero > llvm::PatternMatch::m_NegatedPower2OrZero ( )
inline

Match a integer or vector negated power-of-2.

For vectors, this includes constants with undefined elements.

Definition at line 588 of file PatternMatch.h.

Referenced by isMaskOrZero().

◆ m_NegatedPower2OrZero() [2/2]

api_pred_ty< is_negated_power2_or_zero > llvm::PatternMatch::m_NegatedPower2OrZero ( const APInt *&  V)
inline

Definition at line 592 of file PatternMatch.h.

◆ m_Negative() [1/2]

cst_pred_ty< is_negative > llvm::PatternMatch::m_Negative ( )
inline

Match an integer or vector of negative values.

For vectors, this includes constants with undefined elements.

Definition at line 499 of file PatternMatch.h.

Referenced by llvm::simplifyBinaryIntrinsic(), simplifyShlInst(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitUDiv(), and llvm::InstCombinerImpl::visitURem().

◆ m_Negative() [2/2]

api_pred_ty< is_negative > llvm::PatternMatch::m_Negative ( const APInt *&  V)
inline

Definition at line 502 of file PatternMatch.h.

◆ m_NegZeroFP()

cstfp_pred_ty< is_neg_zero_fp > llvm::PatternMatch::m_NegZeroFP ( )
inline

Match a floating-point negative zero.

For vectors, this includes constants with undefined elements.

Definition at line 731 of file PatternMatch.h.

Referenced by llvm::ConstantFoldBinaryInstruction(), simplifyFAddInst(), simplifyFRemInst(), simplifyFSubInst(), and llvm::InstCombinerImpl::visitCallInst().

◆ m_NNegZExt()

template<typename OpTy >
NNegZExt_match< OpTy > llvm::PatternMatch::m_NNegZExt ( const OpTy &  Op)
inline

Definition at line 1907 of file PatternMatch.h.

Referenced by decompose(), and m_SExtLike().

◆ m_NonInf()

cstfp_pred_ty< is_noninf > llvm::PatternMatch::m_NonInf ( )
inline

Match a non-infinity FP constant, i.e.

finite or NaN. For vectors, this includes constants with undefined elements.

Definition at line 682 of file PatternMatch.h.

◆ m_NonNaN()

cstfp_pred_ty< is_nonnan > llvm::PatternMatch::m_NonNaN ( )
inline

Match a non-NaN FP constant.

For vectors, this includes constants with undefined elements.

Definition at line 666 of file PatternMatch.h.

◆ m_NonNegative() [1/2]

cst_pred_ty< is_nonnegative > llvm::PatternMatch::m_NonNegative ( )
inline

Match an integer or vector of non-negative values.

For vectors, this includes constants with undefined elements.

Definition at line 509 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), foldICmpWithLowBitMaskedVal(), getBinOpsForFactorization(), instCombineSVESrshl(), and llvm::InstCombinerImpl::visitSDiv().

◆ m_NonNegative() [2/2]

api_pred_ty< is_nonnegative > llvm::PatternMatch::m_NonNegative ( const APInt *&  V)
inline

Definition at line 512 of file PatternMatch.h.

◆ m_NonPositive() [1/2]

cst_pred_ty< is_nonpositive > llvm::PatternMatch::m_NonPositive ( )
inline

Match an integer or vector of non-positive values.

For vectors, this includes constants with undefined elements.

Definition at line 531 of file PatternMatch.h.

◆ m_NonPositive() [2/2]

api_pred_ty< is_nonpositive > llvm::PatternMatch::m_NonPositive ( const APInt *&  V)
inline

Definition at line 534 of file PatternMatch.h.

◆ m_NonZeroFP()

cstfp_pred_ty< is_non_zero_fp > llvm::PatternMatch::m_NonZeroFP ( )
inline

Match a floating-point non-zero.

For vectors, this includes constants with undefined elements.

Definition at line 740 of file PatternMatch.h.

◆ m_Not()

template<typename ValTy >
BinaryOp_match< cst_pred_ty< is_all_ones >, ValTy, Instruction::Xor, true > llvm::PatternMatch::m_Not ( const ValTy &  V)
inline

Matches a 'Not' as 'xor V, -1' or 'xor -1, V'.

NOTE: we first match the 'Not' (by matching '-1'), and only then match the inner matcher!

Definition at line 2586 of file PatternMatch.h.

References m_AllOnes(), and m_c_Xor().

Referenced by canonicalizeSaturatedAdd(), canShiftBinOpWithConstantRHS(), llvm::computeKnownBitsFromContext(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToXor(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), foldComplexAndOrPatterns(), foldCtpop(), llvm::InstCombinerImpl::foldICmpAndConstant(), foldICmpWithHighBitMask(), foldMulShl1(), foldNotXor(), foldOrToXor(), foldToUnsignedSaturatedAdd(), FoldTwoEntryPHINode(), foldXorToXor(), llvm::InstCombiner::getFreelyInvertedImpl(), getNotValue(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), haveNoCommonBitsSetSpecialCases(), llvm::invertCondition(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::isImpliedCondition(), isMaskOrZero(), matchDeMorgansLaws(), matchMinMaxOfMinMax(), matchSelectWithOptionalNotCond(), OptimizeAndOrXor(), llvm::VPlanTransforms::optimizeForVFAndUF(), llvm::AArch64TargetLowering::shouldSinkOperands(), simplifyAddInst(), simplifyAndCommutative(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpOfBools(), simplifyOrLogic(), simplifySelectInst(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().

◆ m_NSWAdd()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoSignedWrap > llvm::PatternMatch::m_NSWAdd ( const LHS L,
const RHS R 
)
inline

◆ m_NSWAddLike()

template<typename LHS , typename RHS >
match_combine_or< OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoSignedWrap >, DisjointOr_match< LHS, RHS > > llvm::PatternMatch::m_NSWAddLike ( const LHS L,
const RHS R 
)
inline

Match either "add nsw" or "or disjoint".

Definition at line 1355 of file PatternMatch.h.

References m_CombineOr(), m_DisjointOr(), and m_NSWAdd().

Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), foldNoWrapAdd(), isTruePredicate(), and llvm::InstCombinerImpl::visitCallInst().

◆ m_NSWMul()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Mul, OverflowingBinaryOperator::NoSignedWrap > llvm::PatternMatch::m_NSWMul ( const LHS L,
const RHS R 
)
inline

◆ m_NSWNeg()

template<typename ValTy >
OverflowingBinaryOp_match< cst_pred_ty< is_zero_int >, ValTy, Instruction::Sub, OverflowingBinaryOperator::NoSignedWrap > llvm::PatternMatch::m_NSWNeg ( const ValTy &  V)
inline

◆ m_NSWShl()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Shl, OverflowingBinaryOperator::NoSignedWrap > llvm::PatternMatch::m_NSWShl ( const LHS L,
const RHS R 
)
inline

◆ m_NSWSub()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Sub, OverflowingBinaryOperator::NoSignedWrap > llvm::PatternMatch::m_NSWSub ( const LHS L,
const RHS R 
)
inline

◆ m_NUWAdd()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrap > llvm::PatternMatch::m_NUWAdd ( const LHS L,
const RHS R 
)
inline

◆ m_NUWAddLike()

template<typename LHS , typename RHS >
match_combine_or< OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrap >, DisjointOr_match< LHS, RHS > > llvm::PatternMatch::m_NUWAddLike ( const LHS L,
const RHS R 
)
inline

◆ m_NUWMul()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Mul, OverflowingBinaryOperator::NoUnsignedWrap > llvm::PatternMatch::m_NUWMul ( const LHS L,
const RHS R 
)
inline

◆ m_NUWShl()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Shl, OverflowingBinaryOperator::NoUnsignedWrap > llvm::PatternMatch::m_NUWShl ( const LHS L,
const RHS R 
)
inline

◆ m_NUWSub()

template<typename LHS , typename RHS >
OverflowingBinaryOp_match< LHS, RHS, Instruction::Sub, OverflowingBinaryOperator::NoUnsignedWrap > llvm::PatternMatch::m_NUWSub ( const LHS L,
const RHS R 
)
inline

◆ m_One()

cst_pred_ty< is_one > llvm::PatternMatch::m_One ( )
inline

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

For vectors, this includes constants with undefined elements.

Definition at line 541 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeLowbitMask(), checkForNegativeOperand(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsFromOperator(), despeculateCountZeros(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAnyOrAllBitsSet(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), foldICmpOfUAddOv(), foldICmpShlOne(), llvm::InstCombinerImpl::foldICmpTruncConstant(), foldICmpWithHighBitMask(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldMulSelectToNegate(), foldMulShl1(), foldSelectICmpAndAnd(), getRangeForIntrinsic(), handleOtherCmpSelSimplifications(), llvm::GCNTTIImpl::instCombineIntrinsic(), instCombineSVEVectorMul(), llvm::Constant::isElementWiseEqual(), isKnownToBeAPowerOfTwo(), isNeutralValue(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchAndOrChain(), matchSelectPattern(), replaceConditionalBranchesOnConstant(), llvm::simplifyBinaryIntrinsic(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyMulInst(), simplifyOrInst(), simplifySelectInst(), simplifyValueKnownNonZero(), skipTrivialSelect(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitURem(), and llvm::InstCombinerImpl::visitXor().

◆ m_OneUse()

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

Definition at line 67 of file PatternMatch.h.

Referenced by llvm::canConvertToMinOrMaxIntrinsic(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeInsertSplat(), canonicalizeLogicFirst(), canonicalizeLowbitMask(), cheapToScalarize(), combineAddSubWithShlAddSub(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), factorizeLerp(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBoxMultiply(), foldComplexAndOrPatterns(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrXorSubChain(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldLoadsRecursive(), foldLogicCastConstant(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNotXor(), foldNoWrapAdd(), llvm::InstCombinerImpl::foldPowiReassoc(), foldReductionIdiom(), foldSelectICmpAndAnd(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldSubOfMinMax(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), getNegatibleInsts(), hoistMinMax(), instCombineSVELast(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::RecurrenceDescriptor::isMinMaxPattern(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchDeMorgansLaws(), matchesSquareSum(), matchFPExtFromF16(), matchIntPart(), matchOrConcat(), moveAddAfterMinMax(), narrowUDivURem(), narrowVectorSelect(), optimizeSymmetricCall(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), shouldExpandCmpArithRMWInIR(), llvm::AArch64TargetLowering::shouldSinkOperands(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyValueKnownNonZero(), splitMergedValStore(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), tryToFPToSat(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitInsertElementInst(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitPtrToInt(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().

◆ m_Or()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Or > llvm::PatternMatch::m_Or ( const LHS L,
const RHS R 
)
inline

◆ m_OrdFMax()

template<typename LHS , typename RHS >
MaxMin_match< FCmpInst, LHS, RHS, ofmax_pred_ty > llvm::PatternMatch::m_OrdFMax ( const LHS L,
const RHS R 
)
inline

Match an 'ordered' floating point maximum function.

Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'maximum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ogt/ge, L, R), L, R) semantics matched by this predicate.

                    max(L, R)  iff L and R are not NaN

m_OrdFMax(L, R) = R iff L or R are NaN

Definition at line 2181 of file PatternMatch.h.

Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().

◆ m_OrdFMin()

template<typename LHS , typename RHS >
MaxMin_match< FCmpInst, LHS, RHS, ofmin_pred_ty > llvm::PatternMatch::m_OrdFMin ( const LHS L,
const RHS R 
)
inline

Match an 'ordered' floating point minimum function.

Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'minimum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(olt/le, L, R), L, R) semantics matched by this predicate.

                    min(L, R)  iff L and R are not NaN

m_OrdFMin(L, R) = R iff L or R are NaN

Definition at line 2196 of file PatternMatch.h.

Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().

◆ m_Poison()

class_match< PoisonValue > llvm::PatternMatch::m_Poison ( )
inline

◆ m_PosZeroFP()

cstfp_pred_ty< is_pos_zero_fp > llvm::PatternMatch::m_PosZeroFP ( )
inline

Match a floating-point positive zero.

For vectors, this includes constants with undefined elements.

Definition at line 722 of file PatternMatch.h.

Referenced by simplifyFAddInst(), simplifyFRemInst(), simplifyFSubInst(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitFCmpInst().

◆ m_Power2() [1/2]

cst_pred_ty< is_power2 > llvm::PatternMatch::m_Power2 ( )
inline

◆ m_Power2() [2/2]

api_pred_ty< is_power2 > llvm::PatternMatch::m_Power2 ( const APInt *&  V)
inline

Definition at line 569 of file PatternMatch.h.

◆ m_Power2OrZero() [1/2]

cst_pred_ty< is_power2_or_zero > llvm::PatternMatch::m_Power2OrZero ( )
inline

Match an integer or vector of 0 or power-of-2 values.

For vectors, this includes constants with undefined elements.

Definition at line 601 of file PatternMatch.h.

Referenced by isKnownToBeAPowerOfTwo().

◆ m_Power2OrZero() [2/2]

api_pred_ty< is_power2_or_zero > llvm::PatternMatch::m_Power2OrZero ( const APInt *&  V)
inline

Definition at line 604 of file PatternMatch.h.

◆ m_PtrAdd()

template<typename PointerOpTy , typename OffsetOpTy >
PtrAdd_match< PointerOpTy, OffsetOpTy > llvm::PatternMatch::m_PtrAdd ( const PointerOpTy &  PointerOp,
const OffsetOpTy &  OffsetOp 
)
inline

Matches GEP with i8 source element type.

Definition at line 1766 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::SimplifyDemandedUseBits().

◆ m_PtrToInt()

template<typename OpTy >
CastOperator_match< OpTy, Instruction::PtrToInt > llvm::PatternMatch::m_PtrToInt ( const OpTy &  Op)
inline

◆ m_PtrToIntSameSize()

template<typename OpTy >
PtrToIntSameSize_match< OpTy > llvm::PatternMatch::m_PtrToIntSameSize ( const DataLayout DL,
const OpTy &  Op 
)
inline

Definition at line 1870 of file PatternMatch.h.

References DL.

Referenced by computeKnownBitsFromCmp(), and isKnownNonEqual().

◆ m_SDiv()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::SDiv > llvm::PatternMatch::m_SDiv ( const LHS L,
const RHS R 
)
inline

◆ m_Select()

template<typename Cond , typename LHS , typename RHS >
ThreeOps_match< Cond, LHS, RHS, Instruction::Select > llvm::PatternMatch::m_Select ( const Cond C,
const LHS L,
const RHS R 
)
inline

◆ m_SelectCst()

template<int64_t L, int64_t R, typename Cond >
ThreeOps_match< Cond, constantint_match< L >, constantint_match< R >, Instruction::Select > llvm::PatternMatch::m_SelectCst ( const Cond C)
inline

This matches a select of two constants, e.g.: m_SelectCst<-1, 0>(m_Value(V))

Definition at line 1638 of file PatternMatch.h.

References llvm::CallingConv::C, and m_Select().

◆ m_SExt()

template<typename OpTy >
CastInst_match< OpTy, SExtInst > llvm::PatternMatch::m_SExt ( const OpTy &  Op)
inline

◆ m_SExtLike()

template<typename OpTy >
match_combine_or< CastInst_match< OpTy, SExtInst >, NNegZExt_match< OpTy > > llvm::PatternMatch::m_SExtLike ( const OpTy &  Op)
inline

Match either "sext" or "zext nneg".

Definition at line 1926 of file PatternMatch.h.

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

Referenced by foldLogicCastConstant(), llvm::InstCombiner::getFreelyInvertedImpl(), and llvm::InstCombinerImpl::visitGetElementPtrInst().

◆ m_SExtOrSelf()

template<typename OpTy >
match_combine_or< CastInst_match< OpTy, SExtInst >, OpTy > llvm::PatternMatch::m_SExtOrSelf ( const OpTy &  Op)
inline

◆ m_Shift()

template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_shift_op > llvm::PatternMatch::m_Shift ( const LHS L,
const RHS R 
)
inline

◆ m_ShiftedMask()

cst_pred_ty< is_shifted_mask > llvm::PatternMatch::m_ShiftedMask ( )
inline

Definition at line 468 of file PatternMatch.h.

Referenced by foldNegativePower2AndShiftedMask().

◆ m_Shl()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Shl > llvm::PatternMatch::m_Shl ( const LHS L,
const RHS R 
)
inline

Definition at line 1170 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), combineAddSubWithShlAddSub(), computeKnownBitsFromCmp(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), factorizeMathWithShlOps(), llvm::InstCombinerImpl::foldAddWithConstant(), foldBoxMultiply(), foldCttzCtlz(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpShlOne(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpWithHighBitMask(), foldICmpWithTruncSignExtendedVal(), foldIDivShl(), foldLoadsRecursive(), foldMulShl1(), foldSelectICmpAndZeroShl(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), getBinOpsForFactorization(), isKnownToBeAPowerOfTwo(), isLoadCombineCandidateImpl(), isNonEqualShl(), MatchMul(), matchOrConcat(), setShiftFlags(), llvm::X86TargetLowering::shouldSinkOperands(), shouldSinkVScale(), simplifyAndCommutative(), simplifyAndInst(), simplifyAShrInst(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyIRemMulShl(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyValueKnownNonZero(), splitMergedValStore(), takeLog2(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().

◆ m_Shr()

template<typename LHS , typename RHS >
BinOpPred_match< LHS, RHS, is_right_shift_op > llvm::PatternMatch::m_Shr ( const LHS L,
const RHS R 
)
inline

◆ m_Shuffle() [1/2]

template<typename V1_t , typename V2_t >
TwoOps_match< V1_t, V2_t, Instruction::ShuffleVector > llvm::PatternMatch::m_Shuffle ( const V1_t &  v1,
const V2_t &  v2 
)
inline

◆ m_Shuffle() [2/2]

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

Definition at line 1739 of file PatternMatch.h.

◆ m_SignMask()

cst_pred_ty< is_sign_mask > llvm::PatternMatch::m_SignMask ( )
inline

Match an integer or vector with only the sign bit(s) set.

For vectors, this includes constants with undefined elements.

Definition at line 613 of file PatternMatch.h.

Referenced by isKnownToBeAPowerOfTwo(), isPowerOfTwoRecurrence(), simplifyAddInst(), simplifyICmpWithBinOp(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), and llvm::InstCombinerImpl::visitXor().

◆ m_Signum()

template<typename Val_t >
Signum_match< Val_t > llvm::PatternMatch::m_Signum ( const Val_t &  V)
inline

Matches a signum pattern.

signum(x) = x > 0 -> 1 x == 0 -> 0 x < 0 -> -1

Definition at line 2684 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::foldICmpOrConstant(), and llvm::InstCombinerImpl::foldICmpTruncConstant().

◆ m_SIToFP()

template<typename OpTy >
CastInst_match< OpTy, SIToFPInst > llvm::PatternMatch::m_SIToFP ( const OpTy &  Op)
inline

◆ m_SMax()

template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty > llvm::PatternMatch::m_SMax ( const LHS L,
const RHS R 
)
inline

◆ m_SMin()

template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty > llvm::PatternMatch::m_SMin ( const LHS L,
const RHS R 
)
inline

◆ m_Specific()

specificval_ty llvm::PatternMatch::m_Specific ( const Value V)
inline

Match if we have a specific specified value.

Definition at line 821 of file PatternMatch.h.

Referenced by canonicalizeAbs(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), checkOuterLoopInsts(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsFromCmp(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromICmpCond(), computeKnownBitsFromOperator(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), constantFoldOperationIntoSelectOperand(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), directlyImpliesPoison(), factorizeFAddFSub(), factorizeMathWithShlOps(), foldAbsDiff(), foldAddToAshr(), foldAndOrOfICmpEqConstantAndICmp(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBoxMultiply(), foldComplexAndOrPatterns(), foldCttzCtlz(), foldDependentIVs(), foldFCmpFNegCommonOp(), llvm::InstCombinerImpl::foldFMulReassoc(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrXX(), foldICmpPow2Test(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithLowBitMaskedVal(), foldICmpXorXX(), foldIDivShl(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldMinMaxSharedOp(), foldOrToXor(), llvm::InstCombinerImpl::foldPowiReassoc(), foldSelectBinOpIdentity(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), foldSelectShuffleWith1Binop(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), foldSetClearBits(), foldSignedTruncationCheck(), foldSubOfMinMax(), foldTruncInsEltPair(), foldUnsignedUnderflowCheck(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), foldXorToXor(), getBundleFromUse(), getInvertibleOperands(), getRangeForSelectPattern(), haveNoCommonBitsSetSpecialCases(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::ARMTTIImpl::instCombineIntrinsic(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), llvm::invertCondition(), isDivZero(), isEqualImpl(), isImpliedCondICmps(), llvm::isKnownNegation(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), isKnownToBeAPowerOfTwo(), isNonEqualMul(), isNonEqualShl(), isTruePredicate(), isUsedWithinShuffleVector(), matchClamp(), matchExpandedRem(), matchFastFloatClamp(), matchICmpOperand(), matchMinMaxOfMinMax(), matchSelectPattern(), matchSelectWithOptionalNotCond(), matchUAddWithOverflowConstantEdgeCases(), optimizeBranch(), processUse(), setLimitsForBinOp(), setShiftFlags(), shouldExpandCmpArithRMWInIR(), llvm::AArch64TargetLowering::shouldSinkOperands(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithCtpop(), simplifyAShrInst(), llvm::simplifyBinaryIntrinsic(), simplifyCmpSelOfMaxMin(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), simplifyFAddInst(), simplifyFDivInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpWithBinOpOnLHS(), llvm::simplifyInsertElementInst(), simplifyIRemMulShl(), simplifyLogicOfAddSub(), simplifyLShrInst(), simplifyMulInst(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), simplifyRem(), simplifySelectBitTest(), simplifySelectInst(), simplifySelectWithFCmp(), simplifySelectWithICmpCond(), simplifyShlInst(), simplifySwitchOnSelectUsingRanges(), simplifyUnsignedRangeCheck(), simplifyXorInst(), swapICmpOperandsToExposeCSEOpportunities(), trySimplifyICmpWithAdds(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().

◆ m_SpecificBB()

specific_bbval llvm::PatternMatch::m_SpecificBB ( BasicBlock BB)
inline

Match a specific basic block value.

Definition at line 951 of file PatternMatch.h.

Referenced by foldGuardedFunnelShift().

◆ m_SpecificFP()

specific_fpval llvm::PatternMatch::m_SpecificFP ( double  V)
inline

◆ m_SpecificInt() [1/2]

specific_intval< false > llvm::PatternMatch::m_SpecificInt ( const APInt V)
inline

◆ m_SpecificInt() [2/2]

specific_intval64< false > llvm::PatternMatch::m_SpecificInt ( uint64_t  V)
inline

Definition at line 922 of file PatternMatch.h.

◆ m_SpecificInt_ICMP()

cst_pred_ty< icmp_pred_with_threshold > llvm::PatternMatch::m_SpecificInt_ICMP ( ICmpInst::Predicate  Predicate,
const APInt Threshold 
)
inline

◆ m_SpecificIntAllowPoison() [1/2]

specific_intval< true > llvm::PatternMatch::m_SpecificIntAllowPoison ( const APInt V)
inline

◆ m_SpecificIntAllowPoison() [2/2]

specific_intval64< true > llvm::PatternMatch::m_SpecificIntAllowPoison ( uint64_t  V)
inline

Definition at line 930 of file PatternMatch.h.

◆ m_Sqrt()

template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty llvm::PatternMatch::m_Sqrt ( const Opnd0 &  Op0)
inline

Definition at line 2489 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::foldFMulReassoc(), and simplifyFMAFMul().

◆ m_SRem()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::SRem > llvm::PatternMatch::m_SRem ( const LHS L,
const RHS R 
)
inline

◆ m_Store()

template<typename ValueOpTy , typename PointerOpTy >
TwoOps_match< ValueOpTy, PointerOpTy, Instruction::Store > llvm::PatternMatch::m_Store ( const ValueOpTy &  ValueOp,
const PointerOpTy &  PointerOp 
)
inline

Matches StoreInst.

Definition at line 1752 of file PatternMatch.h.

Referenced by llvm::slpvectorizer::BoUpSLP::isLoadCombineCandidate().

◆ m_StrictlyPositive() [1/2]

cst_pred_ty< is_strictlypositive > llvm::PatternMatch::m_StrictlyPositive ( )
inline

Match an integer or vector of strictly positive values.

For vectors, this includes constants with undefined elements.

Definition at line 519 of file PatternMatch.h.

◆ m_StrictlyPositive() [2/2]

api_pred_ty< is_strictlypositive > llvm::PatternMatch::m_StrictlyPositive ( const APInt *&  V)
inline

Definition at line 522 of file PatternMatch.h.

◆ m_Sub()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Sub > llvm::PatternMatch::m_Sub ( const LHS L,
const RHS R 
)
inline

◆ m_Trunc()

template<typename OpTy >
CastOperator_match< OpTy, Instruction::Trunc > llvm::PatternMatch::m_Trunc ( const OpTy &  Op)
inline

◆ m_TruncOrSelf()

template<typename OpTy >
match_combine_or< CastOperator_match< OpTy, Instruction::Trunc >, OpTy > llvm::PatternMatch::m_TruncOrSelf ( const OpTy &  Op)
inline

◆ m_UAddWithOverflow()

template<typename LHS_t , typename RHS_t , typename Sum_t >
UAddWithOverflow_match< LHS_t, RHS_t, Sum_t > llvm::PatternMatch::m_UAddWithOverflow ( const LHS_t L,
const RHS_t R,
const Sum_t &  S 
)

Match an icmp instruction checking for unsigned overflow on addition.

S is matched to the addition whose result is being checked for overflow, and L and R are matched to the LHS and RHS of S.

Definition at line 2301 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::visitICmpInst().

◆ m_UDiv()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::UDiv > llvm::PatternMatch::m_UDiv ( const LHS L,
const RHS R 
)
inline

◆ m_UIToFP()

template<typename OpTy >
CastInst_match< OpTy, UIToFPInst > llvm::PatternMatch::m_UIToFP ( const OpTy &  Op)
inline

◆ m_UMax()

template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty > llvm::PatternMatch::m_UMax ( const LHS L,
const RHS R 
)
inline

◆ m_UMin()

template<typename LHS , typename RHS >
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty > llvm::PatternMatch::m_UMin ( const LHS L,
const RHS R 
)
inline

◆ m_UnconditionalBr()

br_match llvm::PatternMatch::m_UnconditionalBr ( BasicBlock *&  Succ)
inline

Definition at line 1994 of file PatternMatch.h.

Referenced by tryToMoveFreeBeforeNullTest().

◆ m_Undef()

auto llvm::PatternMatch::m_Undef ( )
inline

Match an arbitrary undef constant.

This matches poison as well. If this is an aggregate and contains a non-aggregate element that is neither undef nor poison, the aggregate is not matched.

Definition at line 152 of file PatternMatch.h.

Referenced by areExtractShuffleVectors(), canonicalizeInsertSplat(), collectSingleShuffleElements(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::ConstantFoldBinaryInstruction(), evaluateInDifferentElementOrder(), llvm::InstCombinerImpl::foldICmpBitCast(), foldIdentityExtractShuffle(), foldIdentityPaddedShuffles(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectZeroOrMul(), foldShuffledIntrinsicOperands(), foldShuffleOfUnaryOps(), foldTruncInsEltPair(), foldTruncShuffle(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::SimplifyQuery::isUndefValue(), likeBitCastFromVector(), markAliveBlocks(), llvm::Constant::mergeUndefsWith(), narrowVectorSelect(), llvm::Constant::replaceUndefsWith(), llvm::ARMTargetLowering::shouldSinkOperands(), llvm::RISCVTargetLowering::shouldSinkOperands(), shrinkInsertElt(), shrinkSplatShuffle(), llvm::InstCombinerImpl::simplifyBinOpSplats(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitShuffleVectorInst().

◆ m_Unless()

template<typename Ty >
match_unless< Ty > llvm::PatternMatch::m_Unless ( const Ty &  M)
inline

Match if the inner matcher does NOT match.

Definition at line 198 of file PatternMatch.h.

Referenced by llvm::InstCombinerImpl::foldICmpEquality(), getBundleFromUse(), m_ImmConstant(), and llvm::InstCombinerImpl::visitXor().

◆ m_UnOp() [1/3]

class_match< UnaryOperator > llvm::PatternMatch::m_UnOp ( )
inline

Match an arbitrary unary operation and ignore it.

Definition at line 95 of file PatternMatch.h.

Referenced by cheapToScalarize(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitExtractElementInst().

◆ m_UnOp() [2/3]

template<typename OP_t >
AnyUnaryOp_match< OP_t > llvm::PatternMatch::m_UnOp ( const OP_t &  X)
inline

Definition at line 1006 of file PatternMatch.h.

References X.

◆ m_UnOp() [3/3]

bind_ty< UnaryOperator > llvm::PatternMatch::m_UnOp ( UnaryOperator *&  I)
inline

Match a unary operator, capturing it if we match.

Definition at line 767 of file PatternMatch.h.

References I.

◆ m_UnordFMax()

template<typename LHS , typename RHS >
MaxMin_match< FCmpInst, LHS, RHS, ufmax_pred_ty > llvm::PatternMatch::m_UnordFMax ( const LHS L,
const RHS R 
)
inline

Match an 'unordered' floating point maximum function.

Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'maximum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ugt/ge, L, R), L, R) semantics matched by this predicate.

                    max(L, R)  iff L and R are not NaN

m_UnordFMax(L, R) = L iff L or R are NaN

Definition at line 2212 of file PatternMatch.h.

Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().

◆ m_UnordFMin()

template<typename LHS , typename RHS >
MaxMin_match< FCmpInst, LHS, RHS, ufmin_pred_ty > llvm::PatternMatch::m_UnordFMin ( const LHS L,
const RHS R 
)
inline

Match an 'unordered' floating point minimum function.

Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'minimum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ult/le, L, R), L, R) semantics matched by this predicate.

                     min(L, R)  iff L and R are not NaN

m_UnordFMin(L, R) = L iff L or R are NaN

Definition at line 2227 of file PatternMatch.h.

Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().

◆ m_URem()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::URem > llvm::PatternMatch::m_URem ( const LHS L,
const RHS R 
)
inline

◆ m_Value() [1/3]

class_match< Value > llvm::PatternMatch::m_Value ( )
inline

Match an arbitrary value and ignore it.

Definition at line 92 of file PatternMatch.h.

Referenced by addValueAffectedByCondition(), llvm::analyzeICmp(), annotateNonNullAndDereferenceable(), llvm::ScalarEvolution::applyLoopGuards(), areExtractExts(), areExtractShuffleVectors(), canAlwaysEvaluateInType(), llvm::canConvertToMinOrMaxIntrinsic(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeInsertSplat(), canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), canSafelyConvertTo16Bit(), canScalarizeAccess(), canShiftBinOpWithConstantRHS(), cheapToScalarize(), checkForNegativeOperand(), checkOrAndOpImpliedByOther(), collectBitParts(), collectUnswitchCandidatesWithInjections(), combineAddSubWithShlAddSub(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), computeKnownFPClass(), computeKnownFPClassFromCond(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), countToEliminateCompares(), decompose(), llvm::decomposeBitTestICmp(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), llvm::fcmpImpliesClass(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::findScalarElement(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithConstEq(), foldAndToUsubsat(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBoxMultiply(), foldClampRangeOfTwo(), foldComplexAndOrPatterns(), foldCtpop(), foldCttzCtlz(), foldFabsWithFcmpZero(), foldFCmpFNegCommonOp(), foldFDivConstantDividend(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpOfUAddOv(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpOrXorSubChain(), foldICmpOrXX(), foldICmpPow2Test(), foldICmpShlOne(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), foldICmpXorXX(), foldIdentityExtractShuffle(), foldIDivShl(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldLoadsRecursive(), foldLogicCastConstant(), foldMinMaxSharedOp(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNotXor(), foldNoWrapAdd(), foldOrToXor(), llvm::InstCombinerImpl::foldPowiReassoc(), foldReductionIdiom(), foldSelectBinOpIdentity(), foldSelectGEP(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), foldShuffledIntrinsicOperands(), foldShuffleOfUnaryOps(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldSubOfMinMax(), foldToUnsignedSaturatedAdd(), foldTruncInsEltPair(), foldTruncShuffle(), FoldTwoEntryPHINode(), foldUnsignedUnderflowCheck(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), foldVecTruncToExtElt(), foldXorToXor(), getBinOpsForFactorization(), getBoolVecFromMask(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), getDomPredecessorCondition(), llvm::InstCombiner::getFreelyInvertedImpl(), getHashValueImpl(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), getInvertibleOperands(), llvm::X86TargetLowering::getJumpConditionMergingParams(), getKnownBitsFromAndXorOr(), getKnownSign(), getKnownSignOrZero(), getMaskedTypeForICmpPair(), getNotValue(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::getSplatValue(), haveNoCommonBitsSetSpecialCases(), hoistAdd(), hoistAddSub(), hoistInsEltConst(), hoistMinMax(), hoistSub(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVEDupqLane(), instCombineSVELast(), instCombineSVESrshl(), instCombineSVEUzp1(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), llvm::invertCondition(), isAllActivePredicate(), llvm::GCNTTIImpl::isAlwaysUniform(), isAMXCast(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isDivZero(), isEqualImpl(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), isImpliedCondAndOr(), llvm::isImpliedCondition(), isInstructionPairMul(), isKnownExactCastIntToFP(), llvm::isKnownNegation(), isKnownNonEqual(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), isKnownToBeAPowerOfTwo(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineCandidate(), isLoadCombineCandidateImpl(), isMaskOrZero(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isNeg(), isOperandOfVmullHighP64(), llvm::isProcessableCondBI(), llvm::RecurrenceDescriptor::isRecurrenceInstr(), isReductionCandidate(), llvm::isSplatValue(), isTruePredicate(), LinearizeExprTree(), m_LogicalAnd(), m_LogicalOp(), m_LogicalOr(), llvm::PatternMatch::VScaleVal_match::match(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchAndOrChain(), matchDeMorgansLaws(), MatchDiv(), matchesAdd(), matchesOr(), matchesSquareSum(), matchExpandedRem(), matchFPExtFromF16(), matchICmpOperand(), matchIntPart(), MatchMul(), matchOrConcat(), matchRdxBop(), MatchRem(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), moveAddAfterMinMax(), narrowInsElt(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), OptimizeAndOrXor(), optimizeLoopExitWithUnknownExitCount(), optimizeSymmetricCall(), parseCondition(), llvm::parseWidenableBranch(), reassociateFCmps(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::recognizeBSwapOrBitReverseIdiom(), recordCondition(), replaceSubOverflowUses(), setShiftFlags(), ShouldBreakUpSubtract(), shouldExpandCmpArithRMWInIR(), llvm::AArch64TargetLowering::shouldSinkOperands(), llvm::AMDGPUTargetLowering::shouldSinkOperands(), llvm::ARMTargetLowering::shouldSinkOperands(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::X86TargetLowering::shouldSinkOperands(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrWithICmpEq(), simplifyAShrInst(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::simplifyBinOpSplats(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFNegInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithConstant(), simplifyICmpWithMinMax(), simplifyIntrinsic(), simplifyIRemMulShl(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), simplifyMulInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), simplifyRem(), simplifySelectInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithICmpCond(), simplifyShift(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySRemInst(), simplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), skipTrivialSelect(), splitMergedValStore(), stripSignOnlyFPOps(), takeLog2(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), trySimplifyICmpWithAdds(), tryToFPToSat(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFPTrunc(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitInsertElementInst(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitPtrToInt(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitShuffleVectorInst(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitURem(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().

◆ m_Value() [2/3]

bind_ty< const Value > llvm::PatternMatch::m_Value ( const Value *&  V)
inline

Definition at line 762 of file PatternMatch.h.

◆ m_Value() [3/3]

bind_ty< Value > llvm::PatternMatch::m_Value ( Value *&  V)
inline

Match a value, capturing it if we match.

Definition at line 761 of file PatternMatch.h.

◆ m_VecReverse()

template<typename Opnd0 >
m_Intrinsic_Ty< Opnd0 >::Ty llvm::PatternMatch::m_VecReverse ( const Opnd0 &  Op0)
inline

◆ m_VScale()

VScaleVal_match llvm::PatternMatch::m_VScale ( )
inline

◆ m_WithOverflowInst() [1/2]

bind_ty< const WithOverflowInst > llvm::PatternMatch::m_WithOverflowInst ( const WithOverflowInst *&  I)
inline

Definition at line 775 of file PatternMatch.h.

References I.

◆ m_WithOverflowInst() [2/2]

bind_ty< WithOverflowInst > llvm::PatternMatch::m_WithOverflowInst ( WithOverflowInst *&  I)
inline

Match a with overflow intrinsic, capturing it if we match.

Definition at line 771 of file PatternMatch.h.

References I.

Referenced by directlyImpliesPoison(), isKnownNonZeroFromOperator(), llvm::patchReplacementInstruction(), and llvm::InstCombinerImpl::visitOr().

◆ m_Xor()

template<typename LHS , typename RHS >
BinaryOp_match< LHS, RHS, Instruction::Xor > llvm::PatternMatch::m_Xor ( const LHS L,
const RHS R 
)
inline

◆ m_Zero()

is_zero llvm::PatternMatch::m_Zero ( )
inline

Match any null constant or a vector with all elements equal to 0.

For vectors, this includes constants with undefined elements.

Definition at line 561 of file PatternMatch.h.

Referenced by areInverseVectorBitmasks(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeForInvariantConditionInjection(), canonicalizeICmpBool(), canonicalizeSaturatedSubtract(), cmpExcludesZero(), computeKnownBitsFromCmp(), llvm::ConstantFoldBinaryInstruction(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), llvm::findValuesAffectedByCondition(), FlattenLoopPair(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpInvariantGroup(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithZero(), foldIdentityExtractShuffle(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldReductionIdiom(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSelectZeroOrMul(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), getGEPInductionOperand(), handleOtherCmpSelSimplifications(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::isCheckForZeroAndMulWithOverflow(), isMaskOrZero(), isNeutralValue(), markAliveBlocks(), llvm::PatternMatch::VScaleVal_match::match(), replaceConditionalBranchesOnConstant(), simplifyAddInst(), simplifyAndInst(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDivRem(), llvm::InstCombinerImpl::simplifyDivRemOfSelectWithZeroOp(), simplifyGEPInst(), simplifyICmpInst(), simplifyICmpOfBools(), simplifyICmpWithZero(), simplifyIntrinsic(), simplifyMulInst(), simplifyOrInst(), simplifySelectInst(), simplifySelectWithICmpCond(), simplifyShift(), simplifySubInst(), simplifyUnsignedRangeCheck(), simplifyWithOpReplaced(), simplifyXorInst(), skipTrivialSelect(), tryToMoveFreeBeforeNullTest(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), and llvm::InstCombinerImpl::visitPHINode().

◆ m_ZeroInt()

cst_pred_ty< is_zero_int > llvm::PatternMatch::m_ZeroInt ( )
inline

◆ m_ZExt()

template<typename OpTy >
CastInst_match< OpTy, ZExtInst > llvm::PatternMatch::m_ZExt ( const OpTy &  Op)
inline

◆ m_ZExtOrSelf()

template<typename OpTy >
match_combine_or< CastInst_match< OpTy, ZExtInst >, OpTy > llvm::PatternMatch::m_ZExtOrSelf ( const OpTy &  Op)
inline

◆ m_ZExtOrSExt()

template<typename OpTy >
match_combine_or< CastInst_match< OpTy, ZExtInst >, CastInst_match< OpTy, SExtInst > > llvm::PatternMatch::m_ZExtOrSExt ( const OpTy &  Op)
inline

◆ m_ZExtOrSExtOrSelf()

template<typename OpTy >
match_combine_or< match_combine_or< CastInst_match< OpTy, ZExtInst >, CastInst_match< OpTy, SExtInst > >, OpTy > llvm::PatternMatch::m_ZExtOrSExtOrSelf ( const OpTy &  Op)
inline

Definition at line 1941 of file PatternMatch.h.

References m_CombineOr(), and m_ZExtOrSExt().

Referenced by llvm::InstCombinerImpl::visitCallInst().

◆ match() [1/2]

template<typename Pattern >
bool llvm::PatternMatch::match ( ArrayRef< int >  Mask,
const Pattern P 
)

Definition at line 53 of file PatternMatch.h.

References match(), and P.

◆ match() [2/2]

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

Definition at line 49 of file PatternMatch.h.

References match(), and P.

Referenced by llvm::AliasSetTracker::add(), addValueAffectedByCondition(), llvm::analyzeICmp(), annotateNonNullAndDereferenceable(), llvm::ScalarEvolution::applyLoopGuards(), areBothVScale(), areExtractExts(), areExtractShuffleVectors(), areInverseVectorBitmasks(), bitTrackingDCE(), canAlwaysEvaluateInType(), llvm::canConvertToMinOrMaxIntrinsic(), canEvaluateShifted(), canEvaluateShiftedShift(), canEvaluateZExtd(), llvm::InstCombiner::canFreelyInvertAllUsersOf(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), canNarrowShiftAmt(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeForInvariantConditionInjection(), canonicalizeICmpBool(), canonicalizeInsertSplat(), canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), canSafelyConvertTo16Bit(), canScalarizeAccess(), canShiftBinOpWithConstantRHS(), llvm::GCNTTIImpl::canSimplifyLegacyMulToMul(), llvm::canSinkOrHoistInst(), cheapToScalarize(), checkForNegativeOperand(), checkOrAndOpImpliedByOther(), checkOuterLoopInsts(), cmpExcludesZero(), collectBitParts(), collectHomogenousInstGraphLoopInvariants(), collectShuffleElements(), collectSingleShuffleElements(), collectUnswitchCandidates(), collectUnswitchCandidatesWithInjections(), combineAddSubWithShlAddSub(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::BaseIndexOffset::computeAliasing(), llvm::computeConstantRange(), computeKnownBits(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromICmpCond(), computeKnownBitsFromOperator(), computeKnownFPClass(), computeKnownFPClassFromCond(), ComputeNumSignBitsImpl(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::ConstantFoldBinaryInstruction(), constantFoldOperationIntoSelectOperand(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), countToEliminateCompares(), decompose(), llvm::decomposeBitTestICmp(), despeculateCountZeros(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), directlyImpliesPoison(), dropRedundantMaskingOfLeftShiftInput(), evaluateInDifferentElementOrder(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), llvm::fcmpImpliesClass(), llvm::fcmpToClassTest(), findBestNonTrivialUnswitchCandidate(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::findScalarElement(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), FlattenLoopPair(), foldAbsDiff(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqConstantAndICmp(), foldAndOrOfICmpsWithConstEq(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBitwiseLogicWithIntrinsics(), foldBoxMultiply(), foldClampRangeOfTwo(), foldComplexAndOrPatterns(), foldConstantInsEltIntoShuffle(), foldCtpop(), foldCttzCtlz(), foldDependentIVs(), foldFabsWithFcmpZero(), foldFCmpFNegCommonOp(), llvm::InstCombinerImpl::foldFCmpIntToFPConst(), foldFCmpReciprocalAndZero(), foldFDivConstantDividend(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpAndShift(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpDivConstant(), llvm::InstCombinerImpl::foldICmpEqIntrinsicWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpIntrinsicWithIntrinsic(), foldICmpInvariantGroup(), llvm::InstCombinerImpl::foldICmpMulConstant(), foldICmpOfUAddOv(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpOrXorSubChain(), foldICmpOrXX(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpShlConstant(), foldICmpShlOne(), llvm::InstCombinerImpl::foldICmpShrConstant(), llvm::InstCombinerImpl::foldICmpSRemConstant(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUDivConstant(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpUSubSatOrUAddSatWithConstant(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorConstant(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), foldICmpXorXX(), foldIdentityExtractShuffle(), foldIdentityPaddedShuffles(), foldIDivShl(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldInsSequenceIntoSplat(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldLoadsRecursive(), foldLogicCastConstant(), foldLogOpOfMaskedICmps(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), foldMinMaxSharedOp(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNegativePower2AndShiftedMask(), foldNotXor(), foldNoWrapAdd(), foldOrToXor(), llvm::InstCombinerImpl::foldPowiReassoc(), foldReductionIdiom(), foldSelectBinOpIdentity(), foldSelectGEP(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldSelectIntoOp(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftedShift(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), foldShuffledIntrinsicOperands(), foldShuffleOfUnaryOps(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldSubOfMinMax(), foldToUnsignedSaturatedAdd(), foldTruncInsEltPair(), foldTruncShuffle(), FoldTwoEntryPHINode(), foldUnsignedUnderflowCheck(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), foldVecTruncToExtElt(), foldXorToXor(), getAlternateBinop(), llvm::GCNTTIImpl::getArithmeticInstrCost(), getBinOpsForFactorization(), getBoolVecFromMask(), getBundleFromUse(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getComplexity(), getDemandedBitsLHSMask(), getDomPredecessorCondition(), llvm::ConstantExpr::getExactLogBase2(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::ARMTTIImpl::getGatherScatterOpCost(), getGEPInductionOperand(), getHashValueImpl(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), getInvertibleOperands(), llvm::X86TargetLowering::getJumpConditionMergingParams(), getKnownBitsFromAndXorOr(), getKnownSign(), getKnownSignOrZero(), getMaskedICmpType(), getMaskedTypeForICmpPair(), getNegatibleInsts(), getNotValue(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), getRangeForIntrinsic(), getRangeForSelectPattern(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::getSplatValue(), getValueFromOverflowCondition(), llvm::SelectionDAGBuilder::getValueImpl(), handleOtherCmpSelSimplifications(), hasConditionalTerminator(), llvm::SCEVExpander::hasRelatedExistingExpansion(), haveNoCommonBitsSetSpecialCases(), hoistAdd(), hoistAddSub(), hoistInsEltConst(), hoistMinMax(), llvm::hoistRegion(), hoistSub(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVEAllActive(), instCombineSVEAllOrNoActive(), instCombineSVEDupqLane(), instCombineSVELast(), instCombineSVESrshl(), instCombineSVEUzp1(), instCombineSVEVectorBinOp(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEVectorMul(), instCombineSVEZip(), llvm::invertCondition(), isAllActivePredicate(), isAllocSiteRemovable(), llvm::GCNTTIImpl::isAlwaysUniform(), isAMXCast(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isDeadRecipe(), isDivZero(), llvm::Constant::isElementWiseEqual(), isEqualImpl(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), llvm::isGuard(), llvm::isGuardAsWidenableBranch(), isImpliedCondAndOr(), isImpliedCondICmps(), llvm::isImpliedCondition(), isInstructionPairMul(), isKnownExactCastIntToFP(), llvm::isKnownNegation(), isKnownNonEqual(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineCandidate(), isLoadCombineCandidateImpl(), isLoopNeverExecuted(), isMaskOrZero(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isNeg(), isNeutralValue(), isNonEqualMul(), isNonEqualPHIs(), isNonEqualShl(), isNonZeroRecurrence(), isOneOrNegOne(), isOperandOfVmullHighP64(), isPoisonShift(), isPowerOfTwoRecurrence(), llvm::isProcessableCondBI(), isPTruePromoted(), llvm::RecurrenceDescriptor::isRecurrenceInstr(), isReductionCandidate(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), isSignedMinMaxClamp(), isSignedMinMaxIntrinsicClamp(), llvm::MemoryWriteTracking::isSpecialInstruction(), llvm::isSplatValue(), isSSATMinMaxPattern(), isSupportedMemset(), isTruePredicate(), llvm::SimplifyQuery::isUndefValue(), isUsedWithinShuffleVector(), llvm::isWidenableCondition(), likeBitCastFromVector(), LinearizeExprTree(), lookThroughAnd(), lookThroughCast(), maintainNoSignedWrap(), markAliveBlocks(), match(), matchAndOrChain(), matchClamp(), matchDeMorgansLaws(), MatchDiv(), matchesAdd(), matchesOr(), matchesSquareSum(), matchExpandedRem(), matchFastFloatClamp(), matchFPExtFromF16(), matchICmpOperand(), matchIncrement(), matchIntPart(), matchIsNotNaN(), matchMinMax(), matchMinMaxOfMinMax(), MatchMul(), matchOrConcat(), matchRdxBop(), MatchRem(), matchSelectPattern(), matchSelectWithOptionalNotCond(), matchStridedStart(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), matchUAddWithOverflowConstantEdgeCases(), matchUnorderedInfCompare(), llvm::Constant::mergeUndefsWith(), moveAddAfterMinMax(), narrowInsElt(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), OptimizeAndOrXor(), optimizeBranch(), llvm::VPlanTransforms::optimizeForVFAndUF(), optimizeLoopExitWithUnknownExitCount(), optimizeSymmetricCall(), parseCondition(), llvm::parseWidenableBranch(), llvm::patchReplacementInstruction(), processUse(), reassociateFCmps(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), reassociateMinMaxWithConstants(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::recognizeBSwapOrBitReverseIdiom(), recordCondition(), llvm::AssumptionCache::registerAssumption(), replaceConditionalBranchesOnConstant(), replaceSubOverflowUses(), llvm::Constant::replaceUndefsWith(), setLimitsForBinOp(), setShiftFlags(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), ShouldBreakUpSubtract(), shouldExpandCmpArithRMWInIR(), llvm::AArch64TargetLowering::shouldSinkOperands(), llvm::AMDGPUTargetLowering::shouldSinkOperands(), llvm::ARMTargetLowering::shouldSinkOperands(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::X86TargetLowering::shouldSinkOperands(), shouldSinkVScale(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), ShrinkDemandedConstant(), shrinkInsertElt(), shrinkSplatShuffle(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrWithICmpEq(), simplifyAShrInst(), simplifyAssocCastAssoc(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::simplifyBinOpSplats(), simplifyCmpSelOfMaxMin(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), llvm::InstCombinerImpl::simplifyDivRemOfSelectWithZeroOp(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFNegInst(), simplifyFPOp(), simplifyFRemInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithConstant(), simplifyICmpWithMinMax(), simplifyICmpWithZero(), llvm::simplifyInsertElementInst(), simplifyInstructionWithPHI(), simplifyIntrinsic(), simplifyIRemMulShl(), simplifyLdexp(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), simplifyMulInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), simplifyRecipe(), simplifyRem(), simplifySelectBitTest(), simplifySelectInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithFCmp(), simplifySelectWithICmpCond(), simplifyShift(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySRemInst(), simplifySubInst(), simplifySwitchOnSelectUsingRanges(), simplifyTernarylogic(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyWithOpReplaced(), simplifyX86addcarry(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), skipTrivialSelect(), splitMergedValStore(), stripSignOnlyFPOps(), swapICmpOperandsToExposeCSEOpportunities(), takeLog2(), tryFactorization(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), trySimplifyICmpWithAdds(), tryToFPToSat(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unswitchNontrivialInvariants(), unswitchTrivialBranch(), llvm::AssumptionCacheTracker::verifyAnalysis(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFPTrunc(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitInsertElementInst(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitPHINode(), llvm::InstCombinerImpl::visitPtrToInt(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitShuffleVectorInst(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitURem(), llvm::InstCombinerImpl::visitXor(), llvm::InstCombinerImpl::visitZExt(), and llvm::reassociate::XorOpnd::XorOpnd().