LLVM
15.0.0git
|
Classes | |
struct | AnyBinaryOp_match |
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 | CastClass_match |
struct | class_match |
struct | CmpClass_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 | 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_maxsignedvalue |
struct | is_nan |
struct | is_neg_zero_fp |
struct | is_negated_power2 |
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_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_SplatOrUndefMask |
struct | m_ZeroMask |
struct | match_combine_and |
struct | match_combine_or |
Matching combinators. More... | |
struct | match_unless |
Inverting matcher. More... | |
struct | MaxMin_match |
struct | NotForbidUndef_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 | 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 | 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 More... | |
template<typename Predicate > | |
using | cstfp_pred_ty = cstval_pred_ty< Predicate, ConstantFP > |
specialization of cstval_pred_ty for ConstantFP More... | |
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< T > | m_OneUse (const T &SubPattern) |
class_match< Value > | m_Value () |
Match an arbitrary value and ignore it. More... | |
class_match< UnaryOperator > | m_UnOp () |
Match an arbitrary unary operation and ignore it. More... | |
class_match< BinaryOperator > | m_BinOp () |
Match an arbitrary binary operation and ignore it. More... | |
class_match< CmpInst > | m_Cmp () |
Matches any compare instruction and ignore it. More... | |
auto | m_Undef () |
Match an arbitrary undef constant. More... | |
class_match< PoisonValue > | m_Poison () |
Match an arbitrary poison constant. More... | |
class_match< Constant > | m_Constant () |
Match an arbitrary Constant and ignore it. More... | |
class_match< ConstantInt > | m_ConstantInt () |
Match an arbitrary ConstantInt and ignore it. More... | |
class_match< ConstantFP > | m_ConstantFP () |
Match an arbitrary ConstantFP and ignore it. More... | |
class_match< ConstantExpr > | m_ConstantExpr () |
Match an arbitrary ConstantExpr and ignore it. More... | |
class_match< BasicBlock > | m_BasicBlock () |
Match an arbitrary basic block value and ignore it. More... | |
template<typename Ty > | |
match_unless< Ty > | m_Unless (const Ty &M) |
Match if the inner matcher does NOT match. More... | |
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. More... | |
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. More... | |
apint_match | m_APInt (const APInt *&Res) |
Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt. More... | |
apint_match | m_APIntAllowUndef (const APInt *&Res) |
Match APInt while allowing undefs in splat vector constants. More... | |
apint_match | m_APIntForbidUndef (const APInt *&Res) |
Match APInt while forbidding undefs in splat vector constants. More... | |
apfloat_match | m_APFloat (const APFloat *&Res) |
Match a ConstantFP or splatted ConstantVector, binding the specified pointer to the contained APFloat. More... | |
apfloat_match | m_APFloatAllowUndef (const APFloat *&Res) |
Match APFloat while allowing undefs in splat vector constants. More... | |
apfloat_match | m_APFloatForbidUndef (const APFloat *&Res) |
Match APFloat while forbidding undefs in splat vector constants. More... | |
cst_pred_ty< is_any_apint > | m_AnyIntegralConstant () |
Match an integer or vector with any integral constant. More... | |
cst_pred_ty< is_all_ones > | m_AllOnes () |
Match an integer or vector with all bits set. More... | |
cst_pred_ty< is_maxsignedvalue > | m_MaxSignedValue () |
Match an integer or vector with values having all bits except for the high bit set (0x7f...). More... | |
api_pred_ty< is_maxsignedvalue > | m_MaxSignedValue (const APInt *&V) |
cst_pred_ty< is_negative > | m_Negative () |
Match an integer or vector of negative values. More... | |
api_pred_ty< is_negative > | m_Negative (const APInt *&V) |
cst_pred_ty< is_nonnegative > | m_NonNegative () |
Match an integer or vector of non-negative values. More... | |
api_pred_ty< is_nonnegative > | m_NonNegative (const APInt *&V) |
cst_pred_ty< is_strictlypositive > | m_StrictlyPositive () |
Match an integer or vector of strictly positive values. More... | |
api_pred_ty< is_strictlypositive > | m_StrictlyPositive (const APInt *&V) |
cst_pred_ty< is_nonpositive > | m_NonPositive () |
Match an integer or vector of non-positive values. More... | |
api_pred_ty< is_nonpositive > | m_NonPositive (const APInt *&V) |
cst_pred_ty< is_one > | m_One () |
Match an integer 1 or a vector with all elements equal to 1. More... | |
cst_pred_ty< is_zero_int > | m_ZeroInt () |
Match an integer 0 or a vector with all elements equal to 0. More... | |
is_zero | m_Zero () |
Match any null constant or a vector with all elements equal to 0. More... | |
cst_pred_ty< is_power2 > | m_Power2 () |
Match an integer or vector power-of-2. More... | |
api_pred_ty< is_power2 > | m_Power2 (const APInt *&V) |
cst_pred_ty< is_negated_power2 > | m_NegatedPower2 () |
Match a integer or vector negated power-of-2. More... | |
api_pred_ty< is_negated_power2 > | m_NegatedPower2 (const APInt *&V) |
cst_pred_ty< is_power2_or_zero > | m_Power2OrZero () |
Match an integer or vector of 0 or power-of-2 values. More... | |
api_pred_ty< is_power2_or_zero > | m_Power2OrZero (const APInt *&V) |
cst_pred_ty< is_sign_mask > | m_SignMask () |
Match an integer or vector with only the sign bit(s) set. More... | |
cst_pred_ty< is_lowbit_mask > | m_LowBitMask () |
Match an integer or vector with only the low bit(s) set. More... | |
api_pred_ty< is_lowbit_mask > | m_LowBitMask (const APInt *&V) |
cst_pred_ty< icmp_pred_with_threshold > | m_SpecificInt_ICMP (ICmpInst::Predicate Predicate, const APInt &Threshold) |
Match an integer or vector with every element comparing 'pred' (eg/ne/...) to Threshold. More... | |
cstfp_pred_ty< is_nan > | m_NaN () |
Match an arbitrary NaN constant. More... | |
cstfp_pred_ty< is_nonnan > | m_NonNaN () |
Match a non-NaN FP constant. More... | |
cstfp_pred_ty< is_inf > | m_Inf () |
Match a positive or negative infinity FP constant. More... | |
cstfp_pred_ty< is_noninf > | m_NonInf () |
Match a non-infinity FP constant, i.e. More... | |
cstfp_pred_ty< is_finite > | m_Finite () |
Match a finite FP constant, i.e. More... | |
apf_pred_ty< is_finite > | m_Finite (const APFloat *&V) |
cstfp_pred_ty< is_finitenonzero > | m_FiniteNonZero () |
Match a finite non-zero FP constant. More... | |
apf_pred_ty< is_finitenonzero > | m_FiniteNonZero (const APFloat *&V) |
cstfp_pred_ty< is_any_zero_fp > | m_AnyZeroFP () |
Match a floating-point negative zero or positive zero. More... | |
cstfp_pred_ty< is_pos_zero_fp > | m_PosZeroFP () |
Match a floating-point positive zero. More... | |
cstfp_pred_ty< is_neg_zero_fp > | m_NegZeroFP () |
Match a floating-point negative zero. More... | |
cstfp_pred_ty< is_non_zero_fp > | m_NonZeroFP () |
Match a floating-point non-zero. More... | |
bind_ty< Value > | m_Value (Value *&V) |
Match a value, capturing it if we match. More... | |
bind_ty< const Value > | m_Value (const Value *&V) |
bind_ty< Instruction > | m_Instruction (Instruction *&I) |
Match an instruction, capturing it if we match. More... | |
bind_ty< UnaryOperator > | m_UnOp (UnaryOperator *&I) |
Match a unary operator, capturing it if we match. More... | |
bind_ty< BinaryOperator > | m_BinOp (BinaryOperator *&I) |
Match a binary operator, capturing it if we match. More... | |
bind_ty< WithOverflowInst > | m_WithOverflowInst (WithOverflowInst *&I) |
Match a with overflow intrinsic, capturing it if we match. More... | |
bind_ty< const WithOverflowInst > | m_WithOverflowInst (const WithOverflowInst *&I) |
bind_ty< Constant > | m_Constant (Constant *&C) |
Match a Constant, capturing the value if we match. More... | |
bind_ty< ConstantInt > | m_ConstantInt (ConstantInt *&CI) |
Match a ConstantInt, capturing the value if we match. More... | |
bind_ty< ConstantFP > | m_ConstantFP (ConstantFP *&C) |
Match a ConstantFP, capturing the value if we match. More... | |
bind_ty< ConstantExpr > | m_ConstantExpr (ConstantExpr *&C) |
Match a ConstantExpr, capturing the value if we match. More... | |
bind_ty< BasicBlock > | m_BasicBlock (BasicBlock *&V) |
Match a basic block value, capturing it if we match. More... | |
bind_ty< const BasicBlock > | m_BasicBlock (const BasicBlock *&V) |
match_combine_and< class_match< Constant >, match_unless< class_match< ConstantExpr > > > | m_ImmConstant () |
Match an arbitrary immediate Constant and ignore it. More... | |
match_combine_and< bind_ty< Constant >, match_unless< class_match< ConstantExpr > > > | m_ImmConstant (Constant *&C) |
Match an immediate Constant, capturing the value if we match. More... | |
specificval_ty | m_Specific (const Value *V) |
Match if we have a specific specified value. More... | |
deferredval_ty< Value > | m_Deferred (Value *const &V) |
Like m_Specific(), but works if the specific value to match is determined as part of the same match() expression. More... | |
deferredval_ty< const Value > | m_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. More... | |
specific_fpval | m_FPOne () |
Match a float 1.0 or vector with all elements equal to 1.0. More... | |
specific_intval< false > | m_SpecificInt (APInt V) |
Match a specific integer value or vector with all elements equal to the value. More... | |
specific_intval< false > | m_SpecificInt (uint64_t V) |
specific_intval< true > | m_SpecificIntAllowUndef (APInt V) |
specific_intval< true > | m_SpecificIntAllowUndef (uint64_t V) |
bind_const_intval_ty | m_ConstantInt (uint64_t &V) |
Match a ConstantInt and bind to its value. More... | |
specific_bbval | m_SpecificBB (BasicBlock *BB) |
Match a specific basic block value. More... | |
deferredval_ty< BasicBlock > | m_Deferred (BasicBlock *const &BB) |
A commutative-friendly version of m_Specific(). More... | |
deferredval_ty< const BasicBlock > | m_Deferred (const BasicBlock *const &BB) |
template<typename LHS , typename RHS > | |
AnyBinaryOp_match< LHS, RHS > | m_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'. More... | |
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'. More... | |
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::NoSignedWrap > | m_NSWAdd (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Sub, OverflowingBinaryOperator::NoSignedWrap > | m_NSWSub (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Mul, OverflowingBinaryOperator::NoSignedWrap > | m_NSWMul (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Shl, OverflowingBinaryOperator::NoSignedWrap > | m_NSWShl (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrap > | m_NUWAdd (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Sub, OverflowingBinaryOperator::NoUnsignedWrap > | m_NUWSub (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Mul, OverflowingBinaryOperator::NoUnsignedWrap > | m_NUWMul (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Shl, OverflowingBinaryOperator::NoUnsignedWrap > | m_NUWShl (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
SpecificBinaryOp_match< LHS, RHS > | m_BinOp (unsigned Opcode, const LHS &L, const RHS &R) |
Matches a specific opcode. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_shift_op > | m_Shift (const LHS &L, const RHS &R) |
Matches shift operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_right_shift_op > | m_Shr (const LHS &L, const RHS &R) |
Matches logical shift operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_logical_shift_op > | m_LogicalShift (const LHS &L, const RHS &R) |
Matches logical shift operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_bitwiselogic_op > | m_BitwiseLogic (const LHS &L, const RHS &R) |
Matches bitwise logic operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_idiv_op > | m_IDiv (const LHS &L, const RHS &R) |
Matches integer division operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_irem_op > | m_IRem (const LHS &L, const RHS &R) |
Matches integer remainder operations. More... | |
template<typename T > | |
Exact_match< T > | m_Exact (const T &SubPattern) |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, CmpInst, CmpInst::Predicate > | m_Cmp (CmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicate > | m_ICmp (ICmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, FCmpInst, FCmpInst::Predicate > | m_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. More... | |
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. More... | |
template<typename OpTy > | |
OneOps_match< OpTy, Instruction::Freeze > | m_Freeze (const OpTy &Op) |
Matches FreezeInst. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
template<typename ValueOpTy , typename PointerOpTy > | |
TwoOps_match< ValueOpTy, PointerOpTy, Instruction::Store > | m_Store (const ValueOpTy &ValueOp, const PointerOpTy &PointerOp) |
Matches StoreInst. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::BitCast > | m_BitCast (const OpTy &Op) |
Matches BitCast. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::PtrToInt > | m_PtrToInt (const OpTy &Op) |
Matches PtrToInt. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::IntToPtr > | m_IntToPtr (const OpTy &Op) |
Matches IntToPtr. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::Trunc > | m_Trunc (const OpTy &Op) |
Matches Trunc. More... | |
template<typename OpTy > | |
match_combine_or< CastClass_match< OpTy, Instruction::Trunc >, OpTy > | m_TruncOrSelf (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::SExt > | m_SExt (const OpTy &Op) |
Matches SExt. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::ZExt > | m_ZExt (const OpTy &Op) |
Matches ZExt. More... | |
template<typename OpTy > | |
match_combine_or< CastClass_match< OpTy, Instruction::ZExt >, OpTy > | m_ZExtOrSelf (const OpTy &Op) |
template<typename OpTy > | |
match_combine_or< CastClass_match< OpTy, Instruction::SExt >, OpTy > | m_SExtOrSelf (const OpTy &Op) |
template<typename OpTy > | |
match_combine_or< CastClass_match< OpTy, Instruction::ZExt >, CastClass_match< OpTy, Instruction::SExt > > | m_ZExtOrSExt (const OpTy &Op) |
template<typename OpTy > | |
match_combine_or< match_combine_or< CastClass_match< OpTy, Instruction::ZExt >, CastClass_match< OpTy, Instruction::SExt > >, OpTy > | m_ZExtOrSExtOrSelf (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::UIToFP > | m_UIToFP (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::SIToFP > | m_SIToFP (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::FPToUI > | m_FPToUI (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::FPToSI > | m_FPToSI (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::FPTrunc > | m_FPTrunc (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::FPExt > | m_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_ty > | m_SMax (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty > | m_SMin (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty > | m_UMax (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty > | m_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_ty > | m_OrdFMax (const LHS &L, const RHS &R) |
Match an 'ordered' floating point maximum function. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ofmin_pred_ty > | m_OrdFMin (const LHS &L, const RHS &R) |
Match an 'ordered' floating point minimum function. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ufmax_pred_ty > | m_UnordFMax (const LHS &L, const RHS &R) |
Match an 'unordered' floating point maximum function. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ufmin_pred_ty > | m_UnordFMin (const LHS &L, const RHS &R) |
Match an 'unordered' floating point minimum function. More... | |
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. More... | |
template<unsigned OpI, typename Opnd_t > | |
Argument_match< Opnd_t > | m_Argument (const Opnd_t &Op) |
Match an argument. More... | |
template<Intrinsic::ID IntrID> | |
IntrinsicID_match | m_Intrinsic () |
Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X)) More... | |
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. More... | |
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. More... | |
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 LHS , typename RHS > | |
AnyBinaryOp_match< LHS, RHS, true > | m_c_BinOp (const LHS &L, const RHS &R) |
Matches a BinaryOperator with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicate, true > | m_c_ICmp (ICmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
Matches an ICmp with a predicate over LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
SpecificBinaryOp_match< LHS, RHS, true > | m_c_BinOp (unsigned Opcode, const LHS &L, const RHS &R) |
Matches a specific opcode with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Add, true > | m_c_Add (const LHS &L, const RHS &R) |
Matches a Add with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Mul, true > | m_c_Mul (const LHS &L, const RHS &R) |
Matches a Mul with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::And, true > | m_c_And (const LHS &L, const RHS &R) |
Matches an And with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Or, true > | m_c_Or (const LHS &L, const RHS &R) |
Matches an Or with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Xor, true > | m_c_Xor (const LHS &L, const RHS &R) |
Matches an Xor with LHS and RHS in either order. More... | |
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'. More... | |
template<typename ValTy > | |
OverflowingBinaryOp_match< cst_pred_ty< is_zero_int >, ValTy, Instruction::Sub, OverflowingBinaryOperator::NoSignedWrap > | m_NSWNeg (const ValTy &V) |
Matches a 'Neg' as 'sub nsw 0, V'. More... | |
template<typename ValTy > | |
BinaryOp_match< ValTy, cst_pred_ty< is_all_ones >, Instruction::Xor, true > | m_Not (const ValTy &V) |
Matches a 'Not' as 'xor V, -1' or 'xor -1, V'. More... | |
template<typename ValTy > | |
NotForbidUndef_match< ValTy > | m_NotForbidUndef (const ValTy &V) |
Matches a bitwise 'not' as 'xor V, -1' or 'xor -1, V'. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty, true > | m_c_SMin (const LHS &L, const RHS &R) |
Matches an SMin with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty, true > | m_c_SMax (const LHS &L, const RHS &R) |
Matches an SMax with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty, true > | m_c_UMin (const LHS &L, const RHS &R) |
Matches a UMin with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty, true > | m_c_UMax (const LHS &L, const RHS &R) |
Matches a UMax with LHS and RHS in either order. More... | |
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<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FAdd, true > | m_c_FAdd (const LHS &L, const RHS &R) |
Matches FAdd with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FMul, true > | m_c_FMul (const LHS &L, const RHS &R) |
Matches FMul with LHS and RHS in either order. More... | |
template<typename Val_t > | |
Signum_match< Val_t > | m_Signum (const Val_t &V) |
Matches a signum pattern. More... | |
template<int Ind, typename Val_t > | |
ExtractValue_match< Ind, Val_t > | m_ExtractValue (const Val_t &V) |
Match a single index ExtractValue instruction. More... | |
template<typename Val_t > | |
ExtractValue_match<-1, Val_t > | m_ExtractValue (const Val_t &V) |
Match an ExtractValue instruction with any index. More... | |
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. More... | |
VScaleVal_match | m_VScale (const DataLayout &DL) |
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. More... | |
auto | m_LogicalAnd () |
Matches L && R where L and R are arbitrary values. More... | |
template<typename LHS , typename RHS > | |
LogicalOp_match< LHS, RHS, Instruction::And, true > | m_c_LogicalAnd (const LHS &L, const RHS &R) |
Matches L && R with LHS and RHS in either order. More... | |
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. More... | |
auto | m_LogicalOr () |
Matches L || R where L and R are arbitrary values. More... | |
template<typename LHS , typename RHS > | |
LogicalOp_match< LHS, RHS, Instruction::Or, true > | m_c_LogicalOr (const LHS &L, const RHS &R) |
Matches L || R with LHS and RHS in either order. More... | |
using llvm::PatternMatch::cst_pred_ty = typedef cstval_pred_ty<Predicate, ConstantInt> |
specialization of cstval_pred_ty for ConstantInt
Definition at line 366 of file PatternMatch.h.
using llvm::PatternMatch::cstfp_pred_ty = typedef cstval_pred_ty<Predicate, ConstantFP> |
specialization of cstval_pred_ty for ConstantFP
Definition at line 370 of file PatternMatch.h.
|
inline |
Definition at line 973 of file PatternMatch.h.
Referenced by canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), checkForNegativeOperand(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromOperator(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), decompose(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::findScalarElement(), foldCtpop(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), llvm::InstCombiner::isFreeToInvert(), isKnownNonZero(), isKnownToBeAPowerOfTwo(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchesAdd(), matchICmpOperand(), matchIncrement(), matchUAddWithOverflowConstantEdgeCases(), moveAddAfterMinMax(), optimizeBranch(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyLogicOfAddSub(), simplifyOrOfICmpsWithAdd(), simplifySubInst(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match an integer or vector with all bits set.
For vectors, this includes constants with undefined elements.
Definition at line 447 of file PatternMatch.h.
Referenced by areInverseVectorBitmasks(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCtpop(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOfUAddOv(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectICmpAndOr(), llvm::GCNTTIImpl::instCombineIntrinsic(), m_Not(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchSelectPattern(), matchUAddWithOverflowConstantEdgeCases(), simplifyAddInst(), simplifyAndInst(), simplifyAShrInst(), simplifyBinaryIntrinsic(), simplifyGEPInst(), simplifyICmpWithConstant(), simplifyIntrinsic(), simplifyOrInst(), llvm::InstCombinerImpl::visitExtractValueInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 1087 of file PatternMatch.h.
Referenced by canScalarizeAccess(), checkForNegativeOperand(), collectBitParts(), detectShiftUntilBitTestIdiom(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldOrToXor(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSetClearBits(), foldSignedTruncationCheck(), foldXorToXor(), getMaskedTypeForICmpPair(), getValueFromICmpCondition(), llvm::haveNoCommonBitsSet(), isKnownToBeAPowerOfTwo(), matchAndOrChain(), matchFunnelShift(), MatchRem(), llvm::parseWidenableBranch(), processUMulZExtIdiom(), 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().
|
inline |
Match an integer or vector with any integral constant.
For vectors, this includes constants with undefined elements.
Definition at line 438 of file PatternMatch.h.
Referenced by FoldTwoEntryPHINode(), and llvm::InstCombiner::isFreeToInvert().
|
inline |
Match a floating-point negative zero or positive zero.
For vectors, this includes constants with undefined elements.
Definition at line 658 of file PatternMatch.h.
Referenced by foldFCmpReciprocalAndZero(), foldSelectBinOpIdentity(), llvm::GCNTTIImpl::instCombineIntrinsic(), m_FNegNSZ(), matchSelectPattern(), reassociateFCmps(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFSubInst(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFCmpInst().
|
inline |
Match a ConstantFP or splatted ConstantVector, binding the specified pointer to the contained APFloat.
Definition at line 289 of file PatternMatch.h.
Referenced by cannotBeOrderedLessThanZeroImpl(), factorizeFAddFSub(), foldFCmpReciprocalAndZero(), getNegatibleInsts(), llvm::GCNTTIImpl::instCombineIntrinsic(), matchFastFloatClamp(), simplifyBinaryIntrinsic(), simplifyFCmpInst(), simplifySelectWithFCmp(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFCmpInst().
|
inline |
Match APFloat while allowing undefs in splat vector constants.
Definition at line 295 of file PatternMatch.h.
|
inline |
Match APFloat while forbidding undefs in splat vector constants.
Definition at line 300 of file PatternMatch.h.
|
inline |
Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt.
Definition at line 272 of file PatternMatch.h.
Referenced by annotateNonNullAndDereferenceable(), canEvaluateShiftedShift(), canEvaluateZExtd(), canonicalizeAbs(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), checkForNegativeOperand(), cmpExcludesZero(), collectBitParts(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::computeConstantRange(), computeKnownBits(), computeKnownBitsFromOperator(), ComputeNumSignBitsImpl(), llvm::ConstantFoldBinaryInstruction(), llvm::decomposeBitTestICmp(), llvm::InstCombinerImpl::foldAddWithConstant(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpAndShift(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), 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::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpXorConstant(), foldLogOpOfMaskedICmps(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), foldNoWrapAdd(), foldSelectICmpAnd(), llvm::InstCombinerImpl::foldSelectIntoOp(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftedShift(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), getAlternateBinop(), getDemandedBitsLHSMask(), llvm::ConstantExpr::getExactLogBase2(), getMaskedICmpType(), getNotValue(), getValueFromICmpCondition(), getValueFromOverflowCondition(), isDivZero(), isLoadCombineCandidateImpl(), isNonEqualMul(), isNonEqualPHIs(), isNonEqualShl(), isNonZeroRecurrence(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), isSignedMinMaxClamp(), isSignedMinMaxIntrinsicClamp(), isTruePredicate(), lookThroughAnd(), maintainNoSignedWrap(), matchAndOrChain(), matchClamp(), MatchDiv(), matchICmpOperand(), matchIntPart(), matchMinMax(), MatchMul(), matchOrConcat(), MatchRem(), moveAddAfterMinMax(), setLimitsForBinOp(), setLimitsForIntrinsic(), setLimitsForSelectPattern(), ShrinkDemandedConstant(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrOfICmpsWithLimitConst(), simplifyBinaryIntrinsic(), SimplifyBSwap(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyIntrinsic(), simplifyLShrInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyOrOfICmpsWithAdd(), simplifySelectBitTest(), simplifySelectWithICmpCond(), llvm::InstCombinerImpl::tryFactorization(), trySimplifyICmpWithAdds(), tryToFPToSat(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractValueInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitXor(), and llvm::reassociate::XorOpnd::XorOpnd().
|
inline |
Match APInt while allowing undefs in splat vector constants.
Definition at line 278 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), llvm::InstCombinerImpl::FoldOpIntoSelect(), matchFunnelShift(), simplifyBinaryIntrinsic(), simplifyICmpWithBinOp(), simplifyICmpWithConstant(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match APInt while forbidding undefs in splat vector constants.
Definition at line 283 of file PatternMatch.h.
Referenced by llvm::PatternMatch::NotForbidUndef_match< ValTy >::match().
|
inline |
Match an argument.
Definition at line 2031 of file PatternMatch.h.
|
inline |
Definition at line 1117 of file PatternMatch.h.
Referenced by canonicalizeAbs(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpWithTruncSignExtendedVal(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), llvm::X86TargetLowering::shouldSinkOperands(), simplifyBinaryIntrinsic(), simplifyGEPInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match an arbitrary basic block value and ignore it.
Definition at line 162 of file PatternMatch.h.
Referenced by detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), llvm::SCEVExpander::getRelatedExistingExpansion(), llvm::isProcessableCondBI(), m_Br(), optimizeLoopExitWithUnknownExitCount(), and llvm::InstCombinerImpl::visitBranchInst().
|
inline |
Match a basic block value, capturing it if we match.
Definition at line 737 of file PatternMatch.h.
|
inline |
Definition at line 738 of file PatternMatch.h.
|
inline |
Match an arbitrary binary operation and ignore it.
Definition at line 84 of file PatternMatch.h.
Referenced by cheapToScalarize(), foldAndToXor(), foldBitCastBitwiseLogic(), foldComplexAndOrPatterns(), llvm::InstCombinerImpl::foldICmpBinOp(), foldSelectBinOpIdentity(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedLogic(), llvm::InstCombinerImpl::foldVectorBinop(), instCombineSVELast(), llvm::isSplatValue(), matchFunnelShift(), reassociateFCmps(), simplifyAndInst(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), and llvm::InstCombinerImpl::visitShl().
|
inline |
Match a binary operator, capturing it if we match.
Definition at line 714 of file PatternMatch.h.
References I.
|
inline |
Definition at line 916 of file PatternMatch.h.
|
inline |
Matches a specific opcode.
Definition at line 1228 of file PatternMatch.h.
|
inline |
Matches BitCast.
Definition at line 1587 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::combineLoadToNewType(), findAffectedValues(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldIdentityExtractShuffle(), foldReductionIdiom(), foldTruncShuffle(), foldVecTruncToExtElt(), removeBitcastsFromLoadStoreOnMinMax(), simplifyICmpWithConstant(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Definition at line 2155 of file PatternMatch.h.
Referenced by collectBitParts(), foldCtpop(), foldCttzCtlz(), matchOrConcat(), and simplifyUnaryIntrinsic().
|
inline |
Matches bitwise logic operations.
Definition at line 1312 of file PatternMatch.h.
|
inline |
Definition at line 1725 of file PatternMatch.h.
References F, m_BasicBlock(), and T.
Referenced by detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithDominatingICmp(), getDomPredecessorCondition(), llvm::SCEVExpander::getRelatedExistingExpansion(), isLoopNeverExecuted(), llvm::isProcessableCondBI(), optimizeLoopExitWithUnknownExitCount(), tryToMoveFreeBeforeNullTest(), and llvm::InstCombinerImpl::visitBranchInst().
|
inline |
Definition at line 1732 of file PatternMatch.h.
|
inline |
Definition at line 2160 of file PatternMatch.h.
Referenced by collectBitParts(), foldCtpop(), matchOrConcat(), SimplifyBSwap(), simplifyUnaryIntrinsic(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Matches a Add with LHS and RHS in either order.
Definition at line 2231 of file PatternMatch.h.
Referenced by canonicalizeAbs(), canonicalizeSaturatedAdd(), detectShiftUntilZeroIdiom(), llvm::InstCombinerImpl::foldICmpBinOp(), foldToUnsignedSaturatedAdd(), foldUnsignedUnderflowCheck(), llvm::ARMTTIImpl::instCombineIntrinsic(), FlattenInfo::matchLinearIVUser(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyOrInst(), trySimplifyICmpWithAdds(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches an And with LHS and RHS in either order.
Definition at line 2245 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), foldAndToXor(), foldAnyOrAllBitsSet(), foldCtpop(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpWithLowBitMaskedVal(), foldOrToXor(), foldSelectICmpAndAnd(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldXorToXor(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::haveNoCommonBitsSet(), lookThroughAnd(), matchICmpOperand(), simplifyAndOrOfICmpsWithZero(), simplifyICmpWithBinOpOnLHS(), simplifyOrLogic(), simplifyXorInst(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), visitMaskedMerge(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches a BinaryOperator with LHS and RHS in either order.
Definition at line 2209 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), computeKnownBitsFromOperator(), foldComplexAndOrPatterns(), foldSelectBinOpIdentity(), foldSelectWithBinaryOp(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), matchDeMorgansLaws(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfAndOrOr(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Matches a specific opcode with LHS and RHS in either order.
Definition at line 2225 of file PatternMatch.h.
|
inline |
Matches FAdd with LHS and RHS in either order.
Definition at line 2351 of file PatternMatch.h.
Referenced by factorizeLerp(), simplifyFSubInst(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Matches FMul with LHS and RHS in either order.
Definition at line 2358 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), factorizeLerp(), foldMulSelectToNegate(), simplifyFDivInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Matches an ICmp with a predicate over LHS and RHS in either order.
Swaps the predicate if operands are commuted.
Definition at line 2217 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), foldAndOrOfICmpsWithConstEq(), foldICmpUsingBoolRange(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectWithBinaryOp(), foldUnsignedUnderflowCheck(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), simplifyAndOrOfICmpsWithLimitConst(), and simplifyUnsignedRangeCheck().
|
inline |
Matches L && R with LHS and RHS in either order.
Definition at line 2542 of file PatternMatch.h.
|
inline |
Matches L || R with LHS and RHS in either order.
Definition at line 2560 of file PatternMatch.h.
Referenced by simplifySelectInst().
|
inline |
Definition at line 2343 of file PatternMatch.h.
References m_c_SMax(), m_c_SMin(), m_c_UMax(), m_c_UMin(), and m_CombineOr().
Referenced by foldMinMaxSharedOp(), reassociateMinMaxWithConstantInOperand(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches a Mul with LHS and RHS in either order.
Definition at line 2238 of file PatternMatch.h.
Referenced by llvm::VPIntrinsic::canIgnoreVectorLengthParam(), checkOuterLoopInsts(), llvm::InstCombinerImpl::commonIDivTransforms(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectZeroOrMul(), matchExpandedRem(), FlattenInfo::matchLinearIVUser(), simplifyDivRem(), and llvm::InstCombinerImpl::visitMul().
|
inline |
Matches an Or with LHS and RHS in either order.
Definition at line 2252 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), foldAndToXor(), foldCtpop(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldOrToXor(), foldXorToXor(), llvm::haveNoCommonBitsSet(), matchICmpOperand(), simplifyAndInst(), simplifyICmpWithBinOpOnLHS(), simplifyLShrInst(), simplifyOrLogic(), simplifyXorInst(), splitMergedValStore(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches an SMax with LHS and RHS in either order.
Definition at line 2321 of file PatternMatch.h.
Referenced by foldICmpWithMinMax(), and m_c_MaxOrMin().
|
inline |
Matches an SMin with LHS and RHS in either order.
Definition at line 2315 of file PatternMatch.h.
Referenced by foldICmpWithMinMax(), and m_c_MaxOrMin().
|
inline |
Matches a UMax with LHS and RHS in either order.
Definition at line 2333 of file PatternMatch.h.
Referenced by foldICmpWithMinMax(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches a UMin with LHS and RHS in either order.
Definition at line 2327 of file PatternMatch.h.
Referenced by foldICmpWithMinMax(), foldToUnsignedSaturatedAdd(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches an Xor with LHS and RHS in either order.
Definition at line 2259 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), foldComplexAndOrPatterns(), foldXorToXor(), llvm::haveNoCommonBitsSet(), m_Not(), simplifyAndInst(), simplifyOrLogic(), llvm::InstCombinerImpl::visitAnd(), visitMaskedMerge(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches any compare instruction and ignore it.
Definition at line 89 of file PatternMatch.h.
Referenced by cheapToScalarize(), foldSelectBinOpIdentity(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), getHashValueImpl(), llvm::GCNTTIImpl::instCombineIntrinsic(), isEqualImpl(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isMinMaxWithLoads(), llvm::RecurrenceDescriptor::isSelectCmpPattern(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitExtractElementInst().
|
inline |
Definition at line 1382 of file PatternMatch.h.
|
inline |
Combine two pattern matchers matching L && R.
Definition at line 218 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), foldComplexAndOrPatterns(), foldFNegShuffle(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), m_ImmConstant(), m_Intrinsic(), matchExpandedRem(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), simplifyAndInst(), simplifyOrLogic(), simplifyXorInst(), visitMaskedMerge(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Combine two pattern matchers matching L || R.
Definition at line 212 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), llvm::ConstantFoldBinaryInstruction(), dropRedundantMaskingOfLeftShiftInput(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldSelectShuffle(), FoldTwoEntryPHINode(), foldVecTruncToExtElt(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), getValueFromICmpCondition(), llvm::isCheckForZeroAndMulWithOverflow(), isKnownNonZeroFromAssume(), m_c_MaxOrMin(), m_MaxOrMin(), m_SExtOrSelf(), m_TruncOrSelf(), m_ZExtOrSelf(), m_ZExtOrSExt(), m_ZExtOrSExtOrSelf(), markAliveBlocks(), matchFastFloatClamp(), matchSelectPattern(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), simplifySelectWithICmpCond(), tryToMoveFreeBeforeNullTest(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), and unswitchBestCondition().
|
inline |
Match an arbitrary Constant and ignore it.
Definition at line 144 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::findScalarElement(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithConstEq(), foldBitCastBitwiseLogic(), foldConstantInsEltIntoShuffle(), foldFDivConstantDividend(), foldFDivConstantDivisor(), foldFNegIntoConstant(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpWithLowBitMaskedVal(), foldNoWrapAdd(), llvm::InstCombinerImpl::FoldOpIntoSelect(), foldSelectBinOpIdentity(), foldSelectGEP(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftOfShiftedLogic(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVectorCmp(), getAlternateBinop(), getBinOpsForFactorization(), getNegatibleInsts(), hoistInsEltConst(), llvm::ARMTTIImpl::instCombineIntrinsic(), lookThroughCast(), m_ImmConstant(), matchFunnelShift(), matchIncrement(), narrowUDivURem(), 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().
Match a Constant, capturing the value if we match.
Definition at line 725 of file PatternMatch.h.
|
inline |
Match an arbitrary ConstantExpr and ignore it.
Definition at line 157 of file PatternMatch.h.
Referenced by m_ImmConstant(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match a ConstantExpr, capturing the value if we match.
Definition at line 734 of file PatternMatch.h.
|
inline |
Match an arbitrary ConstantFP and ignore it.
Definition at line 152 of file PatternMatch.h.
|
inline |
Match a ConstantFP, capturing the value if we match.
Definition at line 731 of file PatternMatch.h.
|
inline |
Match an arbitrary ConstantInt and ignore it.
Match a ConstantInt with a specific value.
Definition at line 147 of file PatternMatch.h.
Referenced by llvm::VPIntrinsic::canIgnoreVectorLengthParam(), canonicalizeInsertSplat(), canScalarizeAccess(), cheapToScalarize(), computeKnownBitsFromAssume(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), decompose(), foldConstantInsEltIntoShuffle(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldShuffleWithInsert(), foldVecTruncToExtElt(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), hoistInsEltConst(), isLoopNeverExecuted(), isOperandOfVmullHighP64(), isSSATMinMaxPattern(), matchesAdd(), matchesOr(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), processUMulZExtIdiom(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDiv(), simplifyGEPInst(), simplifyShuffleVectorInst(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitInsertElementInst(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match a ConstantInt, capturing the value if we match.
Definition at line 728 of file PatternMatch.h.
|
inline |
Match a ConstantInt and bind to its value.
This does not match ConstantInts wider than 64-bits.
Definition at line 866 of file PatternMatch.h.
|
inline |
A commutative-friendly version of m_Specific().
Definition at line 886 of file PatternMatch.h.
References BB.
|
inline |
Definition at line 890 of file PatternMatch.h.
References BB.
Definition at line 785 of file PatternMatch.h.
|
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 784 of file PatternMatch.h.
Referenced by computeKnownBitsFromOperator(), dropRedundantMaskingOfLeftShiftInput(), factorizeLerp(), foldAndOrOfICmpsWithConstEq(), foldAndToXor(), foldCtpop(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpWithLowBitMaskedVal(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldToUnsignedSaturatedAdd(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldXorToXor(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::haveNoCommonBitsSet(), matchExpandedRem(), simplifyAndInst(), simplifySelectWithICmpCond(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 1345 of file PatternMatch.h.
Referenced by isKnownNonZero(), isKnownToBeAPowerOfTwo(), simplifyMulInst(), simplifyShlInst(), llvm::InstCombinerImpl::visitShl(), and llvm::InstCombinerImpl::visitUDiv().
|
inline |
Matches ExtractElementInst.
Definition at line 1486 of file PatternMatch.h.
Referenced by canonicalizeBitCastExtElt(), foldInsEltIntoIdentityShuffle(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), isOperandOfVmullHighP64(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::simplifyInsertElementInst(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Match a single index ExtractValue instruction.
For example m_ExtractValue<1>(...)
Definition at line 2421 of file PatternMatch.h.
Referenced by directlyImpliesPoison().
|
inline |
Match an ExtractValue instruction with any index.
For example m_ExtractValue(...)
Definition at line 2428 of file PatternMatch.h.
|
inline |
Definition at line 2165 of file PatternMatch.h.
Referenced by foldFabsWithFcmpZero(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitFDiv().
|
inline |
Definition at line 979 of file PatternMatch.h.
Referenced by llvm::CannotBeNegativeZero(), foldFNegIntoConstant(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Definition at line 2170 of file PatternMatch.h.
|
inline |
Definition at line 1394 of file PatternMatch.h.
Referenced by reassociateFCmps(), simplifySelectWithFCmp(), and llvm::InstCombinerImpl::visitBranchInst().
|
inline |
Definition at line 1063 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), foldFDivConstantDividend(), foldFNegIntoConstant(), hoistFNegAboveFMulFDiv(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Match a finite FP constant, i.e.
not infinity or NaN. For vectors, this includes constants with undefined elements.
Definition at line 636 of file PatternMatch.h.
|
inline |
Definition at line 639 of file PatternMatch.h.
|
inline |
Match a finite non-zero FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 646 of file PatternMatch.h.
Referenced by llvm::GCNTTIImpl::canSimplifyLegacyMulToMul().
|
inline |
Definition at line 649 of file PatternMatch.h.
|
inline |
Definition at line 2181 of file PatternMatch.h.
|
inline |
Definition at line 2175 of file PatternMatch.h.
|
inline |
Definition at line 1045 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), foldFDivConstantDividend(), foldFNegIntoConstant(), hoistFNegAboveFMulFDiv(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFMul(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Match 'fneg X' as 'fsub -0.0, X'.
Definition at line 1027 of file PatternMatch.h.
References X.
Referenced by foldFCmpFNegCommonOp(), foldFDivConstantDividend(), foldFDivConstantDivisor(), foldFNegIntoConstant(), foldFNegShuffle(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombiner::getComplexity(), hoistFNegAboveFMulFDiv(), LinearizeExprTree(), NegateValue(), optimizeTrigReflections(), ShouldBreakUpSubtract(), llvm::ARMTargetLowering::shouldSinkOperands(), simplifyBinaryIntrinsic(), simplifyFAddInst(), simplifyFNegInst(), simplifyFSubInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFPTrunc(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Match 'fneg X' as 'fsub +-0.0, X'.
Definition at line 1034 of file PatternMatch.h.
References m_AnyZeroFP(), m_FSub(), and X.
Referenced by simplifyFDivInst().
|
inline |
Definition at line 1681 of file PatternMatch.h.
Referenced by canSafelyConvertTo16Bit(), llvm::InstCombinerImpl::foldICmpBitCast(), narrowInsElt(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFPTrunc(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Match a float 1.0 or vector with all elements equal to 1.0.
Definition at line 812 of file PatternMatch.h.
References m_SpecificFP().
Referenced by factorizeLerp(), llvm::GCNTTIImpl::getArithmeticInstrCost(), instCombineSVEVectorMul(), simplifyFDivInst(), and simplifyFMAFMul().
|
inline |
Definition at line 1671 of file PatternMatch.h.
Referenced by isKnownExactCastIntToFP(), and tryToFPToSat().
|
inline |
Definition at line 1666 of file PatternMatch.h.
Referenced by isKnownExactCastIntToFP().
|
inline |
Definition at line 1676 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBitCast(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Matches FreezeInst.
Definition at line 1471 of file PatternMatch.h.
|
inline |
Definition at line 1081 of file PatternMatch.h.
|
inline |
Definition at line 2188 of file PatternMatch.h.
Referenced by collectBitParts(), foldCtpop(), llvm::recognizeBSwapOrBitReverseIdiom(), and simplifySelectWithICmpCond().
|
inline |
Definition at line 2194 of file PatternMatch.h.
Referenced by collectBitParts(), foldCtpop(), llvm::recognizeBSwapOrBitReverseIdiom(), and simplifySelectWithICmpCond().
|
inline |
Definition at line 991 of file PatternMatch.h.
Referenced by factorizeLerp(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), m_FNegNSZ(), simplifyFAddInst(), simplifyFSubInst(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFNeg(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Definition at line 1388 of file PatternMatch.h.
Referenced by llvm::analyzeICmp(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), computeKnownBitsFromAssume(), countToEliminateCompares(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), eliminateConstraints(), foldAndOrOfICmpsWithConstEq(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldReductionIdiom(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), llvm::SCEVExpander::getRelatedExistingExpansion(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::isProcessableCondBI(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), optimizeLoopExitWithUnknownExitCount(), recordCondition(), simplifyAndOfICmpsWithAdd(), simplifyAndOfICmpsWithSameOperands(), simplifyAndOrOfICmpsWithCtpop(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyOrOfICmpsWithAdd(), simplifyOrOfICmpsWithSameOperands(), simplifySelectWithICmpCond(), simplifyUnsignedRangeCheck(), tryToMoveFreeBeforeNullTest(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Matches integer division operations.
Definition at line 1318 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), isKnownNonZero(), matchExpandedRem(), and simplifyMulInst().
|
inline |
Match an arbitrary immediate Constant and ignore it.
Definition at line 745 of file PatternMatch.h.
References m_CombineAnd(), m_Constant(), m_ConstantExpr(), and m_Unless().
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldOpIntoPhi(), FoldTwoEntryPHINode(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::InstCombiner::isFreeToInvert(), reassociateMinMaxWithConstantInOperand(), reassociateMinMaxWithConstants(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match an immediate Constant, capturing the value if we match.
Definition at line 752 of file PatternMatch.h.
References m_CombineAnd(), m_Constant(), m_ConstantExpr(), and m_Unless().
|
inline |
Match a positive or negative infinity FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 620 of file PatternMatch.h.
Referenced by simplifyFPOp().
|
inline |
Matches InsertElementInst.
Definition at line 1478 of file PatternMatch.h.
Referenced by canonicalizeInsertSplat(), cheapToScalarize(), foldIdentityExtractShuffle(), foldInsEltIntoSplat(), foldShuffleWithInsert(), llvm::getSplatValue(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::ARMTargetLowering::shouldSinkOperands(), simplifyShuffleVectorInst(), llvm::InstCombinerImpl::visitBitCast(), and llvm::InstCombinerImpl::visitPtrToInt().
|
inline |
Matches a single index InsertValue instruction.
Definition at line 2450 of file PatternMatch.h.
|
inline |
Match an instruction, capturing it if we match.
Definition at line 710 of file PatternMatch.h.
References I.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), detectShiftUntilZeroIdiom(), foldFNegIntoConstant(), foldFNegShuffle(), foldICmpInvariantGroup(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectGEP(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), getNegatibleInsts(), llvm::SCEVExpander::getRelatedExistingExpansion(), isMinMaxWithLoads(), lookThroughAnd(), matchExpandedRem(), matchIncrement(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitICmpInst(), and llvm::InstCombinerImpl::visitLShr().
|
inline |
Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X))
Definition at line 2091 of file PatternMatch.h.
|
inline |
Definition at line 2112 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 2117 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 2124 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 2131 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 2138 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 2147 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Matches IntToPtr.
Definition at line 1599 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::visitPtrToInt().
|
inline |
Matches integer remainder operations.
Definition at line 1325 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest().
|
inline |
Matches LoadInst.
Definition at line 1557 of file PatternMatch.h.
Referenced by cheapToScalarize(), isMinMaxWithLoads(), and removeBitcastsFromLoadStoreOnMinMax().
|
inline |
Matches L && R where L and R are arbitrary values.
Definition at line 2537 of file PatternMatch.h.
References m_LogicalAnd(), and m_Value().
|
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 2531 of file PatternMatch.h.
Referenced by llvm::ScalarEvolution::applyLoopGuards(), collectHomogenousInstGraphLoopInvariants(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getUserCost(), getValueFromConditionImpl(), isImpliedCondAndOr(), llvm::isImpliedCondition(), isKnownNonNullFromDominatingCondition(), m_LogicalAnd(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unswitchBestCondition(), unswitchNontrivialInvariants(), unswitchTrivialBranch(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Matches L || R where L and R are arbitrary values.
Definition at line 2555 of file PatternMatch.h.
References m_LogicalOr(), and m_Value().
|
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 2549 of file PatternMatch.h.
Referenced by llvm::ScalarEvolution::applyLoopGuards(), collectHomogenousInstGraphLoopInvariants(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getUserCost(), getValueFromConditionImpl(), isImpliedCondAndOr(), llvm::isImpliedCondition(), m_LogicalOr(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unswitchBestCondition(), unswitchNontrivialInvariants(), unswitchTrivialBranch(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Matches logical shift operations.
Definition at line 1305 of file PatternMatch.h.
Referenced by collectBitParts(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), matchFunnelShift(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Match an integer or vector with only the low bit(s) set.
For vectors, this includes constants with undefined elements.
Definition at line 579 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), and foldICmpWithLowBitMaskedVal().
|
inline |
Definition at line 582 of file PatternMatch.h.
|
inline |
Definition at line 1111 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), dropRedundantMaskingOfLeftShiftInput(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpWithLowBitMaskedVal(), foldSelectICmpAndAnd(), foldSelectICmpLshrAshr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldVecTruncToExtElt(), isKnownToBeAPowerOfTwo(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchAndOrChain(), MatchDiv(), matchIntPart(), simplifyAndInst(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOpOnLHS(), simplifyOrInst(), simplifyValueKnownNonZero(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches MaskedGather Intrinsic.
Definition at line 2106 of file PatternMatch.h.
|
inline |
Matches MaskedLoad Intrinsic.
Definition at line 2098 of file PatternMatch.h.
|
inline |
Definition at line 1876 of file PatternMatch.h.
References m_CombineOr(), m_SMax(), m_SMin(), m_UMax(), and m_UMin().
Referenced by llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldMinMaxSharedOp(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombiner::isFreeToInvert(), isKnownToBeAPowerOfTwo(), and reassociateMinMaxWithConstantInOperand().
|
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 457 of file PatternMatch.h.
|
inline |
Definition at line 460 of file PatternMatch.h.
|
inline |
Definition at line 1039 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), isKnownNonZero(), isNonEqualMul(), MatchMul(), processUse(), simplifyICmpWithBinOpOnLHS(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitShl().
|
inline |
Match an arbitrary NaN constant.
This includes quiet and signalling nans. For vectors, this includes constants with undefined elements.
Definition at line 604 of file PatternMatch.h.
Referenced by llvm::GCNTTIImpl::instCombineIntrinsic(), simplifyBinaryIntrinsic(), simplifyFCmpInst(), and simplifyFPOp().
|
inline |
Matches a 'Neg' as 'sub 0, V'.
Definition at line 2267 of file PatternMatch.h.
References m_Sub(), and m_ZeroInt().
Referenced by computeKnownBitsFromOperator(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldSelectShuffle(), isKnownToBeAPowerOfTwo(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchFunnelShift(), matchSelectPattern(), setLimitsForSelectPattern(), simplifyAndInst(), simplifyICmpWithBinOp(), simplifySelectWithICmpCond(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Match a integer or vector negated power-of-2.
For vectors, this includes constants with undefined elements.
Definition at line 546 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Definition at line 549 of file PatternMatch.h.
|
inline |
Match an integer or vector of negative values.
For vectors, this includes constants with undefined elements.
Definition at line 469 of file PatternMatch.h.
Referenced by simplifyBinaryIntrinsic(), simplifyShlInst(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitUDiv(), and llvm::InstCombinerImpl::visitURem().
|
inline |
Definition at line 472 of file PatternMatch.h.
|
inline |
Match a floating-point negative zero.
For vectors, this includes constants with undefined elements.
Definition at line 676 of file PatternMatch.h.
Referenced by llvm::ConstantFoldBinaryInstruction(), simplifyFAddInst(), simplifyFRemInst(), simplifyFSubInst(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Match a non-infinity FP constant, i.e.
finite or NaN. For vectors, this includes constants with undefined elements.
Definition at line 627 of file PatternMatch.h.
|
inline |
Match a non-NaN FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 611 of file PatternMatch.h.
|
inline |
Match an integer or vector of non-negative values.
For vectors, this includes constants with undefined elements.
Definition at line 479 of file PatternMatch.h.
Referenced by foldICmpWithLowBitMaskedVal(), instCombineSVESrshl(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Definition at line 482 of file PatternMatch.h.
|
inline |
Match an integer or vector of non-positive values.
For vectors, this includes constants with undefined elements.
Definition at line 501 of file PatternMatch.h.
|
inline |
Definition at line 504 of file PatternMatch.h.
|
inline |
Match a floating-point non-zero.
For vectors, this includes constants with undefined elements.
Definition at line 685 of file PatternMatch.h.
|
inline |
Matches a 'Not' as 'xor V, -1' or 'xor -1, V'.
Definition at line 2283 of file PatternMatch.h.
References m_AllOnes(), and m_c_Xor().
Referenced by canonicalizeSaturatedAdd(), canShiftBinOpWithConstantRHS(), computeKnownBitsFromAssume(), findAffectedValues(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToXor(), foldComplexAndOrPatterns(), foldCtpop(), llvm::InstCombinerImpl::foldICmpAndConstant(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldOrToXor(), foldToUnsignedSaturatedAdd(), foldXorToXor(), getNotValue(), llvm::haveNoCommonBitsSet(), llvm::invertCondition(), llvm::isCheckForZeroAndMulWithOverflow(), matchDeMorgansLaws(), matchMinMaxOfMinMax(), matchSelectWithOptionalNotCond(), simplifyAddInst(), simplifyAndInst(), simplifyAndOrOfICmpsWithLimitConst(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpOfBools(), simplifyOrLogic(), simplifySelectInst(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfAndOrOr(), sinkNotIntoXor(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), visitMaskedMerge(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches a bitwise 'not' as 'xor V, -1' or 'xor -1, V'.
For vectors, the constant value must be composed of only -1 scalar elements.
Definition at line 2308 of file PatternMatch.h.
Referenced by simplifyOrLogic(), and simplifyXorInst().
|
inline |
Definition at line 1150 of file PatternMatch.h.
References llvm::MCID::Add, LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by decompose(), foldNoWrapAdd(), isTruePredicate(), trySimplifyICmpWithAdds(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 1166 of file PatternMatch.h.
References LHS, Mul, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), and simplifyICmpWithConstant().
|
inline |
Matches a 'Neg' as 'sub nsw 0, V'.
Definition at line 2276 of file PatternMatch.h.
References m_NSWSub(), and m_ZeroInt().
Referenced by foldICmpXNegX(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 1174 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), simplifyAShrInst(), simplifyRem(), and llvm::InstCombinerImpl::visitAShr().
|
inline |
Definition at line 1158 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::computeOverflowForSignedSub(), getKnownSign(), llvm::isKnownNegation(), m_NSWNeg(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), and llvm::InstCombinerImpl::visitSRem().
|
inline |
Definition at line 1183 of file PatternMatch.h.
References llvm::MCID::Add, LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonShiftTransforms(), decompose(), foldNoWrapAdd(), isTruePredicate(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 1199 of file PatternMatch.h.
References LHS, Mul, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), simplifyICmpWithConstant(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitUDiv().
|
inline |
Definition at line 1207 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), decompose(), simplifyAndInst(), simplifyLShrInst(), and simplifyRem().
|
inline |
Definition at line 1191 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::computeOverflowForUnsignedSub(), and decompose().
|
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 511 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeLowbitMask(), checkForNegativeOperand(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsFromOperator(), llvm::ConstantFoldBinaryInstruction(), despeculateCountZeros(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), foldAnyOrAllBitsSet(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), foldICmpOfUAddOv(), foldICmpShlOne(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldMulSelectToNegate(), foldSelectICmpAndAnd(), handleOtherCmpSelSimplifications(), llvm::GCNTTIImpl::instCombineIntrinsic(), instCombineSVEVectorMul(), llvm::Constant::isElementWiseEqual(), isKnownToBeAPowerOfTwo(), isNeutralValue(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchAndOrChain(), matchSelectPattern(), replaceConditionalBranchesOnConstant(), setLimitsForIntrinsic(), simplifyBinaryIntrinsic(), simplifyDivRem(), 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(), and llvm::InstCombinerImpl::visitURem().
|
inline |
Definition at line 67 of file PatternMatch.h.
Referenced by llvm::canConvertToMinOrMaxIntrinsic(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeInsertSplat(), canonicalizeLowbitMask(), cheapToScalarize(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), factorizeLerp(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAnyOrAllBitsSet(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldComplexAndOrPatterns(), foldCtpop(), foldCttzCtlz(), foldFNegIntoConstant(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpUsingBoolRange(), foldICmpWithHighBitMask(), foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldLogicCastConstant(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNoWrapAdd(), foldReductionIdiom(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedLogic(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), hoistFNegAboveFMulFDiv(), instCombineSVELast(), llvm::RecurrenceDescriptor::isMinMaxPattern(), llvm::RecurrenceDescriptor::isSelectCmpPattern(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchDeMorgansLaws(), matchFunnelShift(), matchIntPart(), matchOrConcat(), moveAddAfterMinMax(), narrowUDivURem(), narrowVectorSelect(), optimizeTrigReflections(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyValueKnownNonZero(), sinkNotIntoXor(), 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::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().
|
inline |
Definition at line 1093 of file PatternMatch.h.
Referenced by checkForNegativeOperand(), collectBitParts(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldSelectICmpAndOr(), foldSetClearBits(), foldXorToXor(), isKnownNonZero(), isLoadCombineCandidateImpl(), isTruePredicate(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchAndOrChain(), matchesOr(), llvm::recognizeBSwapOrBitReverseIdiom(), simplifySelectBitTest(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitXor().
|
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 1891 of file PatternMatch.h.
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().
|
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 1906 of file PatternMatch.h.
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().
|
inline |
Match an arbitrary poison constant.
Definition at line 139 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), and simplifyFPOp().
|
inline |
Match a floating-point positive zero.
For vectors, this includes constants with undefined elements.
Definition at line 667 of file PatternMatch.h.
Referenced by llvm::CannotBeNegativeZero(), foldFabsWithFcmpZero(), simplifyFAddInst(), simplifyFRemInst(), simplifyFSubInst(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitFCmpInst().
|
inline |
Match an integer or vector power-of-2.
For vectors, this includes constants with undefined elements.
Definition at line 538 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonShiftTransforms(), detectShiftUntilBitTestIdiom(), llvm::InstCombinerImpl::foldICmpSRemConstant(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldSelectICmpAnd(), foldSelectICmpAndOr(), foldSignedTruncationCheck(), isKnownToBeAPowerOfTwo(), isPowerOfTwoRecurrence(), simplifyICmpWithBinOp(), takeLog2(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Definition at line 539 of file PatternMatch.h.
|
inline |
Match an integer or vector of 0 or power-of-2 values.
For vectors, this includes constants with undefined elements.
Definition at line 558 of file PatternMatch.h.
Referenced by isKnownToBeAPowerOfTwo().
|
inline |
Definition at line 561 of file PatternMatch.h.
|
inline |
Matches PtrToInt.
Definition at line 1593 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), findAffectedValues(), llvm::InstCombinerImpl::foldICmpOrConstant(), isKnownNonZeroFromAssume(), llvm::PatternMatch::VScaleVal_match::match(), simplifyAndOrOfICmpsWithZero(), simplifyGEPInst(), simplifySubInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1057 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), MatchDiv(), simplifyDivRem(), simplifyGEPInst(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Matches SelectInst.
Definition at line 1456 of file PatternMatch.h.
Referenced by annotateNonNullAndDereferenceable(), llvm::canConvertToMinOrMaxIntrinsic(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), foldBitCastSelect(), foldMulSelectToNegate(), foldSelectGEP(), llvm::InstCombinerImpl::FoldShiftByConstant(), FoldTwoEntryPHINode(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::isFreeToInvert(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isMinMaxWithLoads(), llvm::RecurrenceDescriptor::isSelectCmpPattern(), llvm::isSplatValue(), m_SelectCst(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), narrowVectorSelect(), simplifyAndInst(), simplifyOrInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), skipTrivialSelect(), tryToVectorizeHorReductionOrInstOperands(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFPTrunc(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitSub().
|
inline |
This matches a select of two constants, e.g.
: m_SelectCst<-1, 0>(m_Value(V))
Definition at line 1465 of file PatternMatch.h.
References m_Select().
|
inline |
Matches SExt.
Definition at line 1617 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonShiftTransforms(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCttzCtlz(), foldICmpUsingBoolRange(), foldLogicCastConstant(), foldNoWrapAdd(), getBoolVecFromMask(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), m_SExtOrSelf(), m_ZExtOrSExt(), matchSelectPattern(), narrowInsElt(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyShift(), simplifySRemInst(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), and llvm::InstCombinerImpl::visitURem().
|
inline |
Definition at line 1635 of file PatternMatch.h.
References m_CombineOr(), and m_SExt().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract().
|
inline |
Matches shift operations.
Definition at line 1290 of file PatternMatch.h.
Referenced by detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), foldShiftOfShiftedLogic(), and llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts().
|
inline |
Definition at line 1105 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), computeKnownBitsFromAssume(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), factorizeMathWithShlOps(), llvm::InstCombinerImpl::foldAddWithConstant(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpShlOne(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), getBinOpsForFactorization(), isKnownNonZero(), isKnownToBeAPowerOfTwo(), isLoadCombineCandidateImpl(), isNonEqualShl(), MatchMul(), matchOrConcat(), llvm::X86TargetLowering::shouldSinkOperands(), simplifyAndInst(), simplifyAShrInst(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), 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::visitTrunc(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches logical shift operations.
Definition at line 1297 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), isKnownNonZero(), optimizeBranch(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyShlInst(), llvm::InstCombinerImpl::visitShl(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Matches ShuffleVectorInst independently of mask value.
Definition at line 1545 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::foldICmpBitCast(), foldIdentityExtractShuffle(), foldShuffledIntrinsicOperands(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), llvm::getSplatValue(), narrowVectorSelect(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::ARMTargetLowering::shouldSinkOperands(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 1551 of file PatternMatch.h.
|
inline |
Match an integer or vector with only the sign bit(s) set.
For vectors, this includes constants with undefined elements.
Definition at line 570 of file PatternMatch.h.
Referenced by isKnownToBeAPowerOfTwo(), isPowerOfTwoRecurrence(), simplifyAddInst(), simplifyICmpWithBinOp(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Matches a signum pattern.
signum(x) = x > 0 -> 1 x == 0 -> 0 x < 0 -> -1
Definition at line 2398 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpOrConstant(), and llvm::InstCombinerImpl::foldICmpTruncConstant().
|
inline |
Definition at line 1661 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBitCast(), and simplifyUnaryIntrinsic().
|
inline |
Definition at line 1847 of file PatternMatch.h.
Referenced by foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::RecurrenceDescriptor::isMinMaxPattern(), m_MaxOrMin(), matchClamp(), simplifyICmpWithMinMax(), and tryToFPToSat().
|
inline |
Definition at line 1853 of file PatternMatch.h.
Referenced by foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::RecurrenceDescriptor::isMinMaxPattern(), m_MaxOrMin(), matchClamp(), simplifyICmpWithMinMax(), and tryToFPToSat().
|
inline |
Match if we have a specific specified value.
Definition at line 766 of file PatternMatch.h.
Referenced by canonicalizeAbs(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), checkOuterLoopInsts(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsFromAssume(), computeKnownBitsFromOperator(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), directlyImpliesPoison(), factorizeFAddFSub(), factorizeMathWithShlOps(), foldComplexAndOrPatterns(), foldFCmpFNegCommonOp(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithDominatingICmp(), foldICmpWithMinMax(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldMinMaxSharedOp(), foldOrToXor(), foldSelectBinOpIdentity(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSelectICmpLshrAshr(), foldSelectShuffleWith1Binop(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), foldSetClearBits(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), foldXorToXor(), getBundleFromUse(), getValueFromICmpCondition(), llvm::haveNoCommonBitsSet(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), instCombineSVEVectorFMLA(), instCombineSVEZip(), llvm::invertCondition(), isEqualImpl(), llvm::isKnownNegation(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownToBeAPowerOfTwo(), isMinMaxWithLoads(), isNonEqualMul(), isNonEqualShl(), isTruePredicate(), matchClamp(), matchExpandedRem(), matchFastFloatClamp(), matchFunnelShift(), matchICmpOperand(), FlattenInfo::matchLinearIVUser(), matchMinMaxOfMinMax(), matchSelectPattern(), matchSelectWithOptionalNotCond(), matchUAddWithOverflowConstantEdgeCases(), optimizeBranch(), processUse(), setLimitsForSelectPattern(), simplifyAddInst(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOfICmpsWithSameOperands(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrOfICmpsWithLimitConst(), simplifyAndOrOfICmpsWithZero(), simplifyAShrInst(), simplifyBinaryIntrinsic(), simplifyDiv(), simplifyDivRem(), simplifyFAddInst(), simplifyFDivInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpWithBinOpOnLHS(), llvm::simplifyInsertElementInst(), simplifyLogicOfAddSub(), simplifyLShrInst(), simplifyMulInst(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), simplifyOrOfICmpsWithSameOperands(), simplifyRem(), simplifySelectBitTest(), simplifySelectInst(), simplifySelectWithFCmp(), simplifySelectWithICmpCond(), simplifyShlInst(), simplifyUnsignedRangeCheck(), simplifyXorInst(), swapMayExposeCSEOpportunities(), trySimplifyICmpWithAdds(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Match a specific basic block value.
Definition at line 881 of file PatternMatch.h.
References BB.
Referenced by foldGuardedFunnelShift().
|
inline |
Match a specific floating point value or vector with all elements equal to the value.
Definition at line 809 of file PatternMatch.h.
Referenced by foldMulSelectToNegate(), m_FPOne(), simplifyUnaryIntrinsic(), llvm::InstCombinerImpl::visitFDiv(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Match a specific integer value or vector with all elements equal to the value.
Definition at line 848 of file PatternMatch.h.
References move.
Referenced by canonicalizeSaturatedSubtract(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldInsEltIntoIdentityShuffle(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), m_SpecificInt(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), llvm::PatternMatch::VScaleVal_match::match(), matchFunnelShift(), optimizeBranch(), llvm::X86TargetLowering::shouldSinkOperands(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyGEPInst(), simplifyIntrinsic(), simplifySelectWithICmpCond(), splitMergedValStore(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 852 of file PatternMatch.h.
References m_SpecificInt().
|
inline |
Match an integer or vector with every element comparing 'pred' (eg/ne/...) to Threshold.
For vectors, this includes constants with undefined elements.
Definition at line 592 of file PatternMatch.h.
References P.
Referenced by canNarrowShiftAmt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), foldSelectICmpLshrAshr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedLogic(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), matchFunnelShift(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 856 of file PatternMatch.h.
References move.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), m_SpecificIntAllowUndef(), matchFunnelShift(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSExt().
|
inline |
Definition at line 860 of file PatternMatch.h.
References m_SpecificIntAllowUndef().
|
inline |
Definition at line 2199 of file PatternMatch.h.
Referenced by simplifyFMAFMul(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Definition at line 1075 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::computeOverflowForSignedSub(), MatchRem(), simplifyDiv(), simplifyRem(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitSRem().
|
inline |
Matches StoreInst.
Definition at line 1564 of file PatternMatch.h.
Referenced by llvm::slpvectorizer::BoUpSLP::isLoadCombineCandidate().
|
inline |
Match an integer or vector of strictly positive values.
For vectors, this includes constants with undefined elements.
Definition at line 489 of file PatternMatch.h.
|
inline |
Definition at line 492 of file PatternMatch.h.
|
inline |
Definition at line 985 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedSubtract(), llvm::InstCombinerImpl::commonIDivTransforms(), detectShiftUntilZeroIdiom(), llvm::InstCombinerImpl::foldAddWithConstant(), foldGuardedFunnelShift(), foldUnsignedUnderflowCheck(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombiner::isFreeToInvert(), llvm::isKnownNegation(), m_Neg(), matchExpandedRem(), matchFunnelShift(), matchIncrement(), optimizeBranch(), processUse(), simplifyAddInst(), simplifyGEPInst(), simplifyLogicOfAddSub(), simplifyOrInst(), simplifySubInst(), simplifyUnsignedRangeCheck(), swapMayExposeCSEOpportunities(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches Trunc.
Definition at line 1605 of file PatternMatch.h.
Referenced by canAlwaysEvaluateInType(), collectBitParts(), llvm::decomposeBitTestICmp(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpWithTrunc(), foldSelectICmpAndOr(), foldSignedTruncationCheck(), getValueFromICmpCondition(), m_TruncOrSelf(), matchIntPart(), FlattenInfo::matchLinearIVUser(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), simplifySubInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 1611 of file PatternMatch.h.
References m_CombineOr(), and m_Trunc().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), and llvm::InstCombinerImpl::visitXor().
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 2011 of file PatternMatch.h.
References S.
Referenced by llvm::InstCombinerImpl::visitICmpInst().
|
inline |
Definition at line 1051 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), isKnownToBeAPowerOfTwo(), MatchDiv(), simplifyDiv(), simplifyDivRem(), and simplifyICmpWithBinOpOnLHS().
|
inline |
Definition at line 1656 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBitCast(), simplifyICmpWithConstant(), and simplifyUnaryIntrinsic().
|
inline |
Definition at line 1859 of file PatternMatch.h.
Referenced by foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::RecurrenceDescriptor::isMinMaxPattern(), m_MaxOrMin(), matchClamp(), and simplifyICmpWithMinMax().
|
inline |
Definition at line 1865 of file PatternMatch.h.
Referenced by foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldSelectOpOp(), foldToUnsignedSaturatedAdd(), llvm::RecurrenceDescriptor::isMinMaxPattern(), m_MaxOrMin(), matchClamp(), processUse(), simplifyICmpWithMinMax(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1704 of file PatternMatch.h.
Referenced by tryToMoveFreeBeforeNullTest().
|
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 136 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), canonicalizeInsertSplat(), collectShuffleElements(), collectSingleShuffleElements(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::ConstantFoldBinaryInstruction(), evaluateInDifferentElementOrder(), foldFNegShuffle(), llvm::InstCombinerImpl::foldICmpBitCast(), foldIdentityExtractShuffle(), foldIdentityPaddedShuffles(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldInsSequenceIntoSplat(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectZeroOrMul(), foldShuffledIntrinsicOperands(), foldTruncShuffle(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::SimplifyQuery::isUndefValue(), likeBitCastFromVector(), markAliveBlocks(), llvm::Constant::mergeUndefsWith(), narrowVectorSelect(), llvm::Constant::replaceUndefsWith(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::ARMTargetLowering::shouldSinkOperands(), shrinkInsertElt(), shrinkSplatShuffle(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Match if the inner matcher does NOT match.
Definition at line 176 of file PatternMatch.h.
References M.
Referenced by getBundleFromUse(), m_ImmConstant(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match an arbitrary unary operation and ignore it.
Definition at line 79 of file PatternMatch.h.
Referenced by cheapToScalarize(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitExtractElementInst().
|
inline |
Definition at line 936 of file PatternMatch.h.
References X.
|
inline |
Match a unary operator, capturing it if we match.
Definition at line 712 of file PatternMatch.h.
References I.
|
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 1922 of file PatternMatch.h.
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().
|
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 1937 of file PatternMatch.h.
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().
|
inline |
Definition at line 1069 of file PatternMatch.h.
Referenced by canScalarizeAccess(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::computeOverflowForUnsignedSub(), llvm::InstCombinerImpl::foldICmpWithZero(), getValueFromICmpCondition(), MatchRem(), simplifyDiv(), simplifyICmpWithBinOpOnLHS(), and simplifyRem().
|
inline |
Match an arbitrary value and ignore it.
Definition at line 76 of file PatternMatch.h.
Referenced by llvm::analyzeICmp(), annotateNonNullAndDereferenceable(), llvm::ScalarEvolution::applyLoopGuards(), areExtractExts(), areExtractShuffleVectors(), canAlwaysEvaluateInType(), llvm::canConvertToMinOrMaxIntrinsic(), llvm::InstCombiner::canFreelyInvertAllUsersOf(), llvm::CannotBeNegativeZero(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeInsertSplat(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canSafelyConvertTo16Bit(), canScalarizeAccess(), canShiftBinOpWithConstantRHS(), cheapToScalarize(), checkForNegativeOperand(), collectBitParts(), llvm::InstCombinerImpl::combineLoadToNewType(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromAssume(), computeKnownBitsFromOperator(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), countToEliminateCompares(), decompose(), llvm::decomposeBitTestICmp(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), eliminateConstraints(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), findAffectedValues(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::findScalarElement(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithConstEq(), foldAndToXor(), foldAnyOrAllBitsSet(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldClampRangeOfTwo(), foldComplexAndOrPatterns(), foldCtpop(), foldCttzCtlz(), foldFabsWithFcmpZero(), foldFCmpFNegCommonOp(), foldFDivConstantDividend(), foldFDivConstantDivisor(), foldFNegIntoConstant(), foldFNegShuffle(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOfUAddOv(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpShlOne(), llvm::InstCombinerImpl::foldICmpTruncConstant(), foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithConstant(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithDominatingICmp(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), foldICmpXNegX(), foldIdentityExtractShuffle(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldLogicCastConstant(), foldMinMaxSharedOp(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNoWrapAdd(), foldOrToXor(), foldReductionIdiom(), foldSelectBinOpIdentity(), foldSelectGEP(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedLogic(), foldShuffledIntrinsicOperands(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), foldTruncShuffle(), FoldTwoEntryPHINode(), foldUnsignedUnderflowCheck(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), foldVecTruncToExtElt(), foldXorToXor(), getBinOpsForFactorization(), getBoolVecFromMask(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getComplexity(), getDomPredecessorCondition(), getHashValueImpl(), getKnownSign(), getMaskedTypeForICmpPair(), getNotValue(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::getSplatValue(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getUserCost(), getValueFromConditionImpl(), getValueFromICmpCondition(), llvm::haveNoCommonBitsSet(), hoistFNegAboveFMulFDiv(), hoistInsEltConst(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVELast(), instCombineSVESrshl(), instCombineSVETupleGet(), instCombineSVEVectorFMLA(), instCombineSVEZip(), llvm::invertCondition(), isAllActivePredicate(), isAMXCast(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isEqualImpl(), llvm::InstCombiner::isFreeToInvert(), isImpliedCondAndOr(), llvm::isImpliedCondition(), isKnownExactCastIntToFP(), llvm::isKnownNegation(), isKnownNonNullFromDominatingCondition(), isKnownNonZero(), isKnownNonZeroFromAssume(), isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineCandidate(), isLoadCombineCandidateImpl(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isMinMaxWithLoads(), isOperandOfVmullHighP64(), llvm::isProcessableCondBI(), llvm::RecurrenceDescriptor::isSelectCmpPattern(), llvm::isSplatValue(), isTruePredicate(), LinearizeExprTree(), m_LogicalAnd(), m_LogicalOr(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), llvm::PatternMatch::NotForbidUndef_match< ValTy >::match(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), llvm::PatternMatch::VScaleVal_match::match(), matchAndOrChain(), matchDeMorgansLaws(), MatchDiv(), matchesAdd(), matchesOr(), matchExpandedRem(), matchFunnelShift(), matchICmpOperand(), matchIntPart(), FlattenInfo::matchLinearIVUser(), MatchMul(), matchOrConcat(), matchRdxBop(), MatchRem(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), moveAddAfterMinMax(), narrowInsElt(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), OptimizeAndOrXor(), optimizeLoopExitWithUnknownExitCount(), optimizeTrigReflections(), llvm::parseWidenableBranch(), processUMulZExtIdiom(), reassociateFCmps(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::recognizeBSwapOrBitReverseIdiom(), recordCondition(), removeBitcastsFromLoadStoreOnMinMax(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), ShouldBreakUpSubtract(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::ARMTargetLowering::shouldSinkOperands(), llvm::X86TargetLowering::shouldSinkOperands(), simplifyAddInst(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOfICmpsWithSameOperands(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrOfICmpsWithLimitConst(), simplifyAndOrOfICmpsWithZero(), simplifyAShrInst(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), simplifyBinaryIntrinsic(), SimplifyBSwap(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFNegInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithConstant(), simplifyICmpWithMinMax(), simplifyIntrinsic(), simplifyLogicOfAddSub(), simplifyLShrInst(), simplifyMulInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), simplifyOrOfICmpsWithSameOperands(), simplifyRem(), simplifySelectInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithICmpCond(), simplifyShift(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySRemInst(), simplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfAndOrOr(), sinkNotIntoXor(), skipTrivialSelect(), splitMergedValStore(), takeLog2(), trySimplifyICmpWithAdds(), tryToFPToSat(), tryToRecognizePopCount(), tryToSimplifyOverflowMath(), tryToVectorizeHorReductionOrInstOperands(), 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().
Definition at line 707 of file PatternMatch.h.
Match a value, capturing it if we match.
Definition at line 706 of file PatternMatch.h.
|
inline |
Definition at line 2483 of file PatternMatch.h.
References DL.
Referenced by llvm::VPIntrinsic::canIgnoreVectorLengthParam(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 720 of file PatternMatch.h.
References I.
|
inline |
Match a with overflow intrinsic, capturing it if we match.
Definition at line 716 of file PatternMatch.h.
References I.
Referenced by directlyImpliesPoison().
|
inline |
Definition at line 1099 of file PatternMatch.h.
Referenced by checkForNegativeOperand(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldOrToXor(), foldXorToXor(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), llvm::PatternMatch::NotForbidUndef_match< ValTy >::match(), simplifyAddInst(), simplifyGEPInst(), simplifyOrLogic(), sinkNotIntoXor(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().
|
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 531 of file PatternMatch.h.
Referenced by areInverseVectorBitmasks(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeSaturatedSubtract(), cmpExcludesZero(), llvm::ConstantFoldBinaryInstruction(), llvm::InstCombinerImpl::Descale(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), foldAndOrOfICmpEqZeroAndICmp(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpBitCast(), foldICmpInvariantGroup(), llvm::InstCombinerImpl::foldICmpWithZero(), foldIdentityExtractShuffle(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldReductionIdiom(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSelectZeroOrMul(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), llvm::getGEPInductionOperand(), handleOtherCmpSelSimplifications(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::isCheckForZeroAndMulWithOverflow(), isNeutralValue(), markAliveBlocks(), llvm::PatternMatch::VScaleVal_match::match(), replaceConditionalBranchesOnConstant(), simplifyAddInst(), simplifyAndInst(), simplifyAndOrOfICmpsWithZero(), simplifyBinaryIntrinsic(), simplifyDivRem(), llvm::InstCombinerImpl::simplifyDivRemOfSelectWithZeroOp(), simplifyGEPInst(), simplifyICmpInst(), simplifyICmpOfBools(), simplifyICmpWithConstant(), simplifyICmpWithZero(), simplifyIntrinsic(), simplifyMulInst(), simplifyOrInst(), simplifySelectInst(), simplifySelectWithICmpCond(), simplifyShift(), simplifySubInst(), simplifyUnsignedRangeCheck(), simplifyWithOpReplaced(), simplifyXorInst(), skipTrivialSelect(), tryToMoveFreeBeforeNullTest(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitPHINode(), llvm::InstCombinerImpl::visitSDiv(), and llvm::InstCombinerImpl::visitSRem().
|
inline |
Match an integer 0 or a vector with all elements equal to 0.
For vectors, this includes constants with undefined elements.
Definition at line 518 of file PatternMatch.h.
Referenced by foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOfUAddOv(), foldInsEltIntoSplat(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), getAlternateBinop(), llvm::getSplatValue(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::isKnownNegation(), m_Neg(), m_NSWNeg(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchSelectPattern(), matchUAddWithOverflowConstantEdgeCases(), simplifyAndOrOfICmpsWithCtpop(), simplifySelectInst(), simplifyX86addcarry(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches ZExt.
Definition at line 1623 of file PatternMatch.h.
Referenced by canSafelyConvertTo16Bit(), collectBitParts(), decompose(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpUsingBoolRange(), foldLogicCastConstant(), foldNoWrapAdd(), llvm::GCNTTIImpl::instCombineIntrinsic(), isLoadCombineCandidateImpl(), m_ZExtOrSelf(), m_ZExtOrSExt(), matchFunnelShift(), matchOrConcat(), narrowInsElt(), narrowUDivURem(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDivRem(), simplifyICmpWithBinOp(), splitMergedValStore(), takeLog2(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 1629 of file PatternMatch.h.
References m_CombineOr(), and m_ZExt().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), dropRedundantMaskingOfLeftShiftInput(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), and llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts().
|
inline |
Definition at line 1642 of file PatternMatch.h.
References m_CombineOr(), m_SExt(), and m_ZExt().
Referenced by areExtractExts(), canAlwaysEvaluateInType(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), llvm::GCNTTIImpl::instCombineIntrinsic(), and m_ZExtOrSExtOrSelf().
|
inline |
Definition at line 1651 of file PatternMatch.h.
References m_CombineOr(), and m_ZExtOrSExt().
Referenced by llvm::InstCombinerImpl::visitCallInst().
bool llvm::PatternMatch::match | ( | ArrayRef< int > | Mask, |
const Pattern & | P | ||
) |
Definition at line 53 of file PatternMatch.h.
References llvm::BitmaskEnumDetail::Mask(), match(), and P.
Referenced by llvm::PatternMatch::MaxMin_match< CmpInst_t, LHS_t, RHS_t, Pred_t, Commutable >::match().
bool llvm::PatternMatch::match | ( | Val * | V, |
const Pattern & | P | ||
) |
Definition at line 49 of file PatternMatch.h.
References P.
Referenced by llvm::AliasSetTracker::add(), llvm::analyzeICmp(), annotateNonNullAndDereferenceable(), llvm::ScalarEvolution::applyLoopGuards(), areExtractExts(), areExtractShuffleVectors(), areInverseVectorBitmasks(), llvm::SelectionDAG::areNonVolatileConsecutiveLoads(), canAlwaysEvaluateInType(), llvm::canConvertToMinOrMaxIntrinsic(), canEvaluateShiftedShift(), canEvaluateZExtd(), llvm::InstCombiner::canFreelyInvertAllUsersOf(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), canNarrowShiftAmt(), llvm::CannotBeNegativeZero(), cannotBeOrderedLessThanZeroImpl(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeInsertSplat(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), canSafelyConvertTo16Bit(), canScalarizeAccess(), canShiftBinOpWithConstantRHS(), llvm::GCNTTIImpl::canSimplifyLegacyMulToMul(), llvm::canSinkOrHoistInst(), cheapToScalarize(), checkForNegativeOperand(), checkOuterLoopInsts(), cmpExcludesZero(), collectBitParts(), collectHomogenousInstGraphLoopInvariants(), collectShuffleElements(), collectSingleShuffleElements(), llvm::InstCombinerImpl::combineLoadToNewType(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::BaseIndexOffset::computeAliasing(), llvm::computeConstantRange(), computeKnownBits(), computeKnownBitsFromAssume(), computeKnownBitsFromOperator(), ComputeNumSignBitsImpl(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::ConstantFoldBinaryInstruction(), countToEliminateCompares(), decompose(), llvm::decomposeBitTestICmp(), llvm::InstCombinerImpl::Descale(), despeculateCountZeros(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), directlyImpliesPoison(), dropRedundantMaskingOfLeftShiftInput(), eliminateConstraints(), evaluateInDifferentElementOrder(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), findAffectedValues(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::findScalarElement(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqZeroAndICmp(), foldAndOrOfICmpsWithConstEq(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldClampRangeOfTwo(), foldComplexAndOrPatterns(), foldConstantInsEltIntoShuffle(), foldCtpop(), foldCttzCtlz(), foldFabsWithFcmpZero(), foldFCmpFNegCommonOp(), foldFCmpReciprocalAndZero(), foldFDivConstantDividend(), foldFDivConstantDivisor(), foldFNegIntoConstant(), foldFNegShuffle(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpAndShift(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpDivConstant(), llvm::InstCombinerImpl::foldICmpEqIntrinsicWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpInvariantGroup(), llvm::InstCombinerImpl::foldICmpMulConstant(), foldICmpOfUAddOv(), llvm::InstCombinerImpl::foldICmpOrConstant(), llvm::InstCombinerImpl::foldICmpShlConstant(), foldICmpShlOne(), llvm::InstCombinerImpl::foldICmpShrConstant(), llvm::InstCombinerImpl::foldICmpSRemConstant(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpUDivConstant(), foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithConstant(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithDominatingICmp(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorConstant(), foldIdentityExtractShuffle(), foldIdentityPaddedShuffles(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldInsSequenceIntoSplat(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldLogicCastConstant(), foldLogOpOfMaskedICmps(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), foldMinMaxSharedOp(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNoWrapAdd(), llvm::InstCombinerImpl::foldOpIntoPhi(), llvm::InstCombinerImpl::FoldOpIntoSelect(), foldOrToXor(), foldReductionIdiom(), foldSelectBinOpIdentity(), foldSelectGEP(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldSelectIntoOp(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftedShift(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedLogic(), foldShuffledIntrinsicOperands(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), 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::ARMTTIImpl::getGatherScatterOpCost(), llvm::getGEPInductionOperand(), getHashValueImpl(), getKnownSign(), getMaskedICmpType(), getMaskedTypeForICmpPair(), getNegatibleInsts(), getNotValue(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::SCEVExpander::getRelatedExistingExpansion(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::getSplatValue(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getUserCost(), getValueFromConditionImpl(), getValueFromICmpCondition(), getValueFromOverflowCondition(), llvm::SelectionDAGBuilder::getValueImpl(), handleOtherCmpSelSimplifications(), llvm::haveNoCommonBitsSet(), hoistFNegAboveFMulFDiv(), hoistInsEltConst(), llvm::hoistRegion(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVELast(), instCombineSVESrshl(), instCombineSVETupleGet(), instCombineSVEVectorBinOp(), instCombineSVEVectorFMLA(), instCombineSVEVectorMul(), instCombineSVEZip(), llvm::invertCondition(), isAllActivePredicate(), isAMXCast(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isDivZero(), llvm::Constant::isElementWiseEqual(), isEqualImpl(), llvm::InstCombiner::isFreeToInvert(), llvm::isGuard(), llvm::isGuardAsWidenableBranch(), isImpliedCondAndOr(), llvm::isImpliedCondition(), isKnownExactCastIntToFP(), llvm::isKnownNegation(), isKnownNonNullFromDominatingCondition(), isKnownNonZero(), isKnownNonZeroFromAssume(), isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineCandidate(), isLoadCombineCandidateImpl(), isLoopNeverExecuted(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isMinMaxWithLoads(), isNeutralValue(), isNonEqualMul(), isNonEqualPHIs(), isNonEqualShl(), isNonZeroRecurrence(), isOperandOfVmullHighP64(), isPowerOfTwoRecurrence(), llvm::isProcessableCondBI(), isPTruePromoted(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), llvm::RecurrenceDescriptor::isSelectCmpPattern(), isSignedMinMaxClamp(), isSignedMinMaxIntrinsicClamp(), llvm::MemoryWriteTracking::isSpecialInstruction(), llvm::isSplatValue(), isSSATMinMaxPattern(), isTruePredicate(), llvm::SimplifyQuery::isUndefValue(), likeBitCastFromVector(), LinearizeExprTree(), lookThroughAnd(), lookThroughCast(), maintainNoSignedWrap(), markAliveBlocks(), match(), matchAndOrChain(), matchClamp(), matchDeMorgansLaws(), MatchDiv(), matchesAdd(), matchesOr(), matchExpandedRem(), matchFastFloatClamp(), matchFunnelShift(), matchICmpOperand(), matchIncrement(), matchIntPart(), FlattenInfo::matchLinearIVUser(), matchMinMax(), matchMinMaxOfMinMax(), MatchMul(), matchOrConcat(), matchRdxBop(), MatchRem(), matchSelectPattern(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), matchUAddWithOverflowConstantEdgeCases(), llvm::Constant::mergeUndefsWith(), moveAddAfterMinMax(), narrowInsElt(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), OptimizeAndOrXor(), optimizeBranch(), optimizeLoopExitWithUnknownExitCount(), optimizeTrigReflections(), llvm::parseWidenableBranch(), processUMulZExtIdiom(), processUse(), reassociateFCmps(), reassociateMinMaxWithConstantInOperand(), reassociateMinMaxWithConstants(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::recognizeBSwapOrBitReverseIdiom(), recordCondition(), llvm::AssumptionCache::registerAssumption(), removeBitcastsFromLoadStoreOnMinMax(), replaceConditionalBranchesOnConstant(), llvm::Constant::replaceUndefsWith(), setLimitsForBinOp(), setLimitsForIntrinsic(), setLimitsForSelectPattern(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), ShouldBreakUpSubtract(), llvm::RISCVTargetLowering::shouldSinkOperands(), llvm::ARMTargetLowering::shouldSinkOperands(), llvm::X86TargetLowering::shouldSinkOperands(), ShrinkDemandedConstant(), shrinkInsertElt(), shrinkSplatShuffle(), simplifyAddInst(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOfICmpsWithSameOperands(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrOfICmpsWithLimitConst(), simplifyAndOrOfICmpsWithZero(), simplifyAShrInst(), simplifyAssocCastAssoc(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), simplifyBinaryIntrinsic(), SimplifyBSwap(), 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(), simplifyIntrinsic(), simplifyLogicOfAddSub(), simplifyLShrInst(), simplifyMulInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), simplifyOrOfICmpsWithSameOperands(), simplifyRem(), simplifySelectBitTest(), simplifySelectInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithFCmp(), simplifySelectWithICmpCond(), simplifyShift(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySRemInst(), simplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyWithOpReplaced(), simplifyX86addcarry(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfAndOrOr(), sinkNotIntoXor(), skipTrivialSelect(), splitMergedValStore(), swapMayExposeCSEOpportunities(), takeLog2(), TryDistrubutionADDVecReduce(), llvm::InstCombinerImpl::tryFactorization(), trySimplifyICmpWithAdds(), tryToFPToSat(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), tryToSimplifyOverflowMath(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), tryToVectorizeHorReductionOrInstOperands(), unswitchBestCondition(), 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::visitExtractValueInst(), 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().