LLVM 22.0.0git
|
Classes | |
struct | AllowReassoc_match |
struct | AnyBinaryOp_match |
struct | AnyOps_match |
Matches instructions with Opcode and any number of operands. More... | |
struct | AnyUnaryOp_match |
struct | ap_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 | 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 | Argument_match |
struct | BinaryOp_match |
struct | bind_and_match_ty |
Check whether the value has the given Class and matches the nested pattern. More... | |
struct | bind_const_intval_ty |
struct | bind_immconstant_ty |
struct | bind_ty |
struct | BinOpPred_match |
struct | br_match |
struct | brc_match |
struct | CastInst_match |
struct | CastOperator_match |
struct | class_match |
struct | CmpClass_match |
struct | constantexpr_match |
struct | constantint_match |
struct | cstval_pred_ty |
This helper class is used to match constant scalars, vector splats, and fixed width vectors that satisfy a specified predicate. More... | |
struct | custom_checkfn |
struct | deferredval_ty |
Stores a reference to the Value *, not the Value * itself, thus can be used in commutative matchers. More... | |
struct | DisjointOr_match |
struct | ElementWiseBitCast_match |
struct | Exact_match |
struct | ExtractValue_match |
struct | FNeg_match |
struct | icmp_pred_with_threshold |
struct | immconstant_ty |
struct | InsertValue_match |
Matcher for a single index InsertValue instruction. More... | |
struct | IntrinsicID_match |
Intrinsic matchers. More... | |
struct | is_all_ones |
struct | is_any_apint |
struct | is_any_zero_fp |
struct | is_bitwiselogic_op |
struct | is_finite |
struct | is_finitenonzero |
struct | is_idiv_op |
struct | is_inf |
struct | is_irem_op |
struct | is_logical_shift_op |
struct | is_lowbit_mask |
struct | is_lowbit_mask_or_zero |
struct | is_maxsignedvalue |
struct | is_nan |
struct | is_neg_zero_fp |
struct | is_negated_power2 |
struct | is_negated_power2_or_zero |
struct | is_negative |
struct | is_non_zero_fp |
struct | is_non_zero_not_denormal_fp |
struct | is_noninf |
struct | is_nonnan |
struct | is_nonnegative |
struct | is_nonpositive |
struct | is_one |
struct | is_pos_zero_fp |
struct | is_power2 |
struct | is_power2_or_zero |
struct | is_right_shift_op |
struct | is_shift_op |
struct | is_shifted_mask |
struct | is_sign_mask |
struct | is_strictlypositive |
struct | is_zero |
struct | is_zero_int |
struct | LogicalOp_match |
struct | m_Intrinsic_Ty |
Intrinsic matches are combinations of ID matchers, and argument matchers. More... | |
struct | m_Intrinsic_Ty< T0 > |
struct | m_Intrinsic_Ty< T0, T1 > |
struct | m_Intrinsic_Ty< T0, T1, T2 > |
struct | m_Intrinsic_Ty< T0, T1, T2, T3 > |
struct | m_Intrinsic_Ty< T0, T1, T2, T3, T4 > |
struct | m_Intrinsic_Ty< T0, T1, T2, T3, T4, T5 > |
struct | m_Mask |
struct | m_SpecificMask |
struct | m_SplatOrPoisonMask |
struct | m_ZeroMask |
struct | match_combine_and |
struct | match_combine_or |
Matching combinators. More... | |
struct | match_immconstant_ty |
struct | match_unless |
Inverting matcher. More... | |
struct | MatchFunctor |
struct | MaxMin_match |
struct | NNegZExt_match |
struct | NoWrapTrunc_match |
struct | ofmax_pred_ty |
Helper class for identifying ordered max predicates. More... | |
struct | ofmin_pred_ty |
Helper class for identifying ordered min predicates. More... | |
struct | OneOps_match |
Matches instructions with Opcode and three operands. More... | |
struct | OneUse_match |
struct | OverflowingBinaryOp_match |
struct | PtrAdd_match |
struct | PtrToIntSameSize_match |
struct | ShiftLike_match |
struct | Shuffle_match |
Matches shuffle. More... | |
struct | Signum_match |
struct | smax_pred_ty |
Helper class for identifying signed max predicates. More... | |
struct | smin_pred_ty |
Helper class for identifying signed min predicates. More... | |
struct | specific_bbval |
Match a specified basic block value. More... | |
struct | specific_fpval |
Match a specified floating point value or vector of all elements of that value. More... | |
struct | specific_intval |
Match a specified integer value or vector of all elements of that value. More... | |
struct | specific_intval64 |
struct | SpecificBinaryOp_match |
struct | SpecificCmpClass_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 | XorLike_match |
Typedefs | |
template<typename Predicate, bool AllowPoison = true> | |
using | cst_pred_ty = cstval_pred_ty<Predicate, ConstantInt, AllowPoison> |
specialization of cstval_pred_ty for ConstantInt | |
template<typename Predicate> | |
using | cstfp_pred_ty |
specialization of cstval_pred_ty for ConstantFP |
Functions | |
template<typename Val, typename Pattern> | |
bool | match (Val *V, const Pattern &P) |
template<typename Val = const Value, typename Pattern> | |
MatchFunctor< Val, Pattern > | match_fn (const Pattern &P) |
A match functor that can be used as a UnaryPredicate in functional algorithms like all_of. | |
template<typename Pattern> | |
bool | match (ArrayRef< int > Mask, const Pattern &P) |
template<typename T> | |
OneUse_match< T > | m_OneUse (const T &SubPattern) |
template<typename T> | |
AllowReassoc_match< T > | m_AllowReassoc (const T &SubPattern) |
class_match< Value > | m_Value () |
Match an arbitrary value and ignore it. | |
class_match< UnaryOperator > | m_UnOp () |
Match an arbitrary unary operation and ignore it. | |
class_match< BinaryOperator > | m_BinOp () |
Match an arbitrary binary operation and ignore it. | |
class_match< CmpInst > | m_Cmp () |
Matches any compare instruction and ignore it. | |
auto | m_Undef () |
Match an arbitrary undef constant. | |
class_match< UndefValue > | m_UndefValue () |
Match an arbitrary UndefValue constant. | |
class_match< PoisonValue > | m_Poison () |
Match an arbitrary poison constant. | |
class_match< Constant > | m_Constant () |
Match an arbitrary Constant and ignore it. | |
class_match< ConstantInt > | m_ConstantInt () |
Match an arbitrary ConstantInt and ignore it. | |
class_match< ConstantFP > | m_ConstantFP () |
Match an arbitrary ConstantFP and ignore it. | |
constantexpr_match | m_ConstantExpr () |
Match a constant expression or a constant that contains a constant expression. | |
class_match< BasicBlock > | m_BasicBlock () |
Match an arbitrary basic block value and ignore it. | |
template<typename Ty> | |
match_unless< Ty > | m_Unless (const Ty &M) |
Match if the inner matcher does NOT match. | |
template<typename LTy, typename RTy> | |
match_combine_or< LTy, RTy > | m_CombineOr (const LTy &L, const RTy &R) |
Combine two pattern matchers matching L || R. | |
template<typename LTy, typename RTy> | |
match_combine_and< LTy, RTy > | m_CombineAnd (const LTy &L, const RTy &R) |
Combine two pattern matchers matching L && R. | |
ap_match< APInt > | m_APInt (const APInt *&Res) |
Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt. | |
ap_match< APInt > | m_APIntAllowPoison (const APInt *&Res) |
Match APInt while allowing poison in splat vector constants. | |
ap_match< APInt > | m_APIntForbidPoison (const APInt *&Res) |
Match APInt while forbidding poison in splat vector constants. | |
ap_match< APFloat > | m_APFloat (const APFloat *&Res) |
Match a ConstantFP or splatted ConstantVector, binding the specified pointer to the contained APFloat. | |
ap_match< APFloat > | m_APFloatAllowPoison (const APFloat *&Res) |
Match APFloat while allowing poison in splat vector constants. | |
ap_match< APFloat > | m_APFloatForbidPoison (const APFloat *&Res) |
Match APFloat while forbidding poison in splat vector constants. | |
template<int64_t Val> | |
constantint_match< Val > | m_ConstantInt () |
Match a ConstantInt with a specific value. | |
cst_pred_ty< custom_checkfn< APInt > > | m_CheckedInt (function_ref< bool(const APInt &)> CheckFn) |
Match an integer or vector where CheckFn(ele) for each element is true. | |
cst_pred_ty< custom_checkfn< APInt > > | m_CheckedInt (const Constant *&V, function_ref< bool(const APInt &)> CheckFn) |
cstfp_pred_ty< custom_checkfn< APFloat > > | m_CheckedFp (function_ref< bool(const APFloat &)> CheckFn) |
Match a float or vector where CheckFn(ele) for each element is true. | |
cstfp_pred_ty< custom_checkfn< APFloat > > | m_CheckedFp (const Constant *&V, function_ref< bool(const APFloat &)> CheckFn) |
cst_pred_ty< is_any_apint > | m_AnyIntegralConstant () |
Match an integer or vector with any integral constant. | |
cst_pred_ty< is_shifted_mask > | m_ShiftedMask () |
cst_pred_ty< is_all_ones > | m_AllOnes () |
Match an integer or vector with all bits set. | |
cst_pred_ty< is_all_ones, false > | m_AllOnesForbidPoison () |
cst_pred_ty< is_maxsignedvalue > | m_MaxSignedValue () |
Match an integer or vector with values having all bits except for the high bit set (0x7f...). | |
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. | |
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. | |
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. | |
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. | |
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. | |
cst_pred_ty< is_zero_int > | m_ZeroInt () |
Match an integer 0 or a vector with all elements equal to 0. | |
is_zero | m_Zero () |
Match any null constant or a vector with all elements equal to 0. | |
cst_pred_ty< is_power2 > | m_Power2 () |
Match an integer or vector power-of-2. | |
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. | |
api_pred_ty< is_negated_power2 > | m_NegatedPower2 (const APInt *&V) |
cst_pred_ty< is_negated_power2_or_zero > | m_NegatedPower2OrZero () |
Match a integer or vector negated power-of-2. | |
api_pred_ty< is_negated_power2_or_zero > | m_NegatedPower2OrZero (const APInt *&V) |
cst_pred_ty< is_power2_or_zero > | m_Power2OrZero () |
Match an integer or vector of 0 or power-of-2 values. | |
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. | |
cst_pred_ty< is_lowbit_mask > | m_LowBitMask () |
Match an integer or vector with only the low bit(s) set. | |
api_pred_ty< is_lowbit_mask > | m_LowBitMask (const APInt *&V) |
cst_pred_ty< is_lowbit_mask_or_zero > | m_LowBitMaskOrZero () |
Match an integer or vector with only the low bit(s) set. | |
api_pred_ty< is_lowbit_mask_or_zero > | m_LowBitMaskOrZero (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. | |
cstfp_pred_ty< is_nan > | m_NaN () |
Match an arbitrary NaN constant. | |
cstfp_pred_ty< is_nonnan > | m_NonNaN () |
Match a non-NaN FP constant. | |
cstfp_pred_ty< is_inf > | m_Inf () |
Match a positive or negative infinity FP constant. | |
cstfp_pred_ty< is_noninf > | m_NonInf () |
Match a non-infinity FP constant, i.e. | |
cstfp_pred_ty< is_finite > | m_Finite () |
Match a finite FP constant, i.e. | |
apf_pred_ty< is_finite > | m_Finite (const APFloat *&V) |
cstfp_pred_ty< is_finitenonzero > | m_FiniteNonZero () |
Match a finite non-zero FP constant. | |
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. | |
cstfp_pred_ty< is_pos_zero_fp > | m_PosZeroFP () |
Match a floating-point positive zero. | |
cstfp_pred_ty< is_neg_zero_fp > | m_NegZeroFP () |
Match a floating-point negative zero. | |
cstfp_pred_ty< is_non_zero_fp > | m_NonZeroFP () |
Match a floating-point non-zero. | |
cstfp_pred_ty< is_non_zero_not_denormal_fp > | m_NonZeroNotDenormalFP () |
Match a floating-point non-zero that is not a denormal. | |
bind_ty< Value > | m_Value (Value *&V) |
Match a value, capturing it if we match. | |
bind_ty< const Value > | m_Value (const Value *&V) |
template<typename MatchTy> | |
bind_and_match_ty< Value, MatchTy > | m_Value (Value *&V, const MatchTy &Match) |
Match against the nested pattern, and capture the value if we match. | |
template<typename MatchTy> | |
bind_and_match_ty< const Value, MatchTy > | m_Value (const Value *&V, const MatchTy &Match) |
Match against the nested pattern, and capture the value if we match. | |
bind_ty< Instruction > | m_Instruction (Instruction *&I) |
Match an instruction, capturing it if we match. | |
template<typename MatchTy> | |
bind_and_match_ty< Instruction, MatchTy > | m_Instruction (Instruction *&I, const MatchTy &Match) |
Match against the nested pattern, and capture the instruction if we match. | |
bind_ty< UnaryOperator > | m_UnOp (UnaryOperator *&I) |
Match a unary operator, capturing it if we match. | |
bind_ty< BinaryOperator > | m_BinOp (BinaryOperator *&I) |
Match a binary operator, capturing it if we match. | |
bind_ty< WithOverflowInst > | m_WithOverflowInst (WithOverflowInst *&I) |
Match a with overflow intrinsic, capturing it if we match. | |
bind_ty< const WithOverflowInst > | m_WithOverflowInst (const WithOverflowInst *&I) |
bind_ty< UndefValue > | m_UndefValue (UndefValue *&U) |
Match an UndefValue, capturing the value if we match. | |
bind_ty< Constant > | m_Constant (Constant *&C) |
Match a Constant, capturing the value if we match. | |
bind_ty< ConstantInt > | m_ConstantInt (ConstantInt *&CI) |
Match a ConstantInt, capturing the value if we match. | |
bind_ty< ConstantFP > | m_ConstantFP (ConstantFP *&C) |
Match a ConstantFP, capturing the value if we match. | |
bind_ty< ConstantExpr > | m_ConstantExpr (ConstantExpr *&C) |
Match a ConstantExpr, capturing the value if we match. | |
bind_ty< BasicBlock > | m_BasicBlock (BasicBlock *&V) |
Match a basic block value, capturing it if we match. | |
bind_ty< const BasicBlock > | m_BasicBlock (const BasicBlock *&V) |
match_immconstant_ty | m_ImmConstant () |
Match an arbitrary immediate Constant and ignore it. | |
bind_immconstant_ty | m_ImmConstant (Constant *&C) |
Match an immediate Constant, capturing the value if we match. | |
specificval_ty | m_Specific (const Value *V) |
Match if we have a specific specified value. | |
deferredval_ty< 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. | |
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. | |
specific_fpval | m_FPOne () |
Match a float 1.0 or vector with all elements equal to 1.0. | |
specific_intval< false > | m_SpecificInt (const APInt &V) |
Match a specific integer value or vector with all elements equal to the value. | |
specific_intval64< false > | m_SpecificInt (uint64_t V) |
specific_intval< true > | m_SpecificIntAllowPoison (const APInt &V) |
specific_intval64< true > | m_SpecificIntAllowPoison (uint64_t V) |
bind_const_intval_ty | m_ConstantInt (uint64_t &V) |
Match a ConstantInt and bind to its value. | |
specific_bbval | m_SpecificBB (BasicBlock *BB) |
Match a specific basic block value. | |
deferredval_ty< BasicBlock > | m_Deferred (BasicBlock *const &BB) |
A commutative-friendly version of m_Specific(). | |
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'. | |
template<typename RHS> | |
BinaryOp_match< cstfp_pred_ty< is_any_zero_fp >, RHS, Instruction::FSub > | m_FNegNSZ (const RHS &X) |
Match 'fneg X' as 'fsub +-0.0, X'. | |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::Mul > | m_Mul (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::FMul > | m_FMul (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::UDiv > | m_UDiv (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::SDiv > | m_SDiv (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::FDiv > | m_FDiv (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::URem > | m_URem (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::SRem > | m_SRem (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::FRem > | m_FRem (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::And > | m_And (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::Or > | m_Or (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::Xor > | m_Xor (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::Shl > | m_Shl (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::LShr > | m_LShr (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::AShr > | m_AShr (const LHS &L, const RHS &R) |
template<typename LHS> | |
ShiftLike_match< LHS, Instruction::Shl > | m_ShlOrSelf (const LHS &L, uint64_t &R) |
Matches shl L, ConstShAmt or L itself (R will be set to zero in this case). | |
template<typename LHS> | |
ShiftLike_match< LHS, Instruction::LShr > | m_LShrOrSelf (const LHS &L, uint64_t &R) |
Matches lshr L, ConstShAmt or L itself (R will be set to zero in this case). | |
template<typename LHS> | |
ShiftLike_match< LHS, Instruction::AShr > | m_AShrOrSelf (const LHS &L, uint64_t &R) |
Matches ashr L, ConstShAmt or L itself (R will be set to zero in this case). | |
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::Add, OverflowingBinaryOperator::NoSignedWrap, true > | m_c_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::Add, OverflowingBinaryOperator::NoUnsignedWrap, true > | m_c_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. | |
template<typename LHS, typename RHS> | |
DisjointOr_match< LHS, RHS > | m_DisjointOr (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
DisjointOr_match< LHS, RHS, true > | m_c_DisjointOr (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
match_combine_or< BinaryOp_match< LHS, RHS, Instruction::Add >, DisjointOr_match< LHS, RHS > > | m_AddLike (const LHS &L, const RHS &R) |
Match either "add" or "or disjoint". | |
template<typename LHS, typename RHS> | |
match_combine_or< OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoSignedWrap >, DisjointOr_match< LHS, RHS > > | m_NSWAddLike (const LHS &L, const RHS &R) |
Match either "add nsw" or "or disjoint". | |
template<typename LHS, typename RHS> | |
match_combine_or< OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrap >, DisjointOr_match< LHS, RHS > > | m_NUWAddLike (const LHS &L, const RHS &R) |
Match either "add nuw" or "or disjoint". | |
template<typename LHS, typename RHS> | |
auto | m_c_XorLike (const LHS &L, const RHS &R) |
Match either (xor L, R), (xor R, L) or (sub nuw R, L) iff R.isMask() Only commutative matcher as the sub will need to swap the L and R. | |
template<typename LHS, typename RHS> | |
BinOpPred_match< LHS, RHS, is_shift_op > | m_Shift (const LHS &L, const RHS &R) |
Matches shift operations. | |
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. | |
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. | |
template<typename LHS, typename RHS> | |
BinOpPred_match< LHS, RHS, is_bitwiselogic_op > | m_BitwiseLogic (const LHS &L, const RHS &R) |
Matches bitwise logic operations. | |
template<typename LHS, typename RHS> | |
BinOpPred_match< LHS, RHS, is_bitwiselogic_op, true > | m_c_BitwiseLogic (const LHS &L, const RHS &R) |
Matches bitwise logic operations in either order. | |
template<typename LHS, typename RHS> | |
BinOpPred_match< LHS, RHS, is_idiv_op > | m_IDiv (const LHS &L, const RHS &R) |
Matches integer division operations. | |
template<typename LHS, typename RHS> | |
BinOpPred_match< LHS, RHS, is_irem_op > | m_IRem (const LHS &L, const RHS &R) |
Matches integer remainder operations. | |
template<typename T> | |
Exact_match< T > | m_Exact (const T &SubPattern) |
template<typename LHS, typename RHS> | |
CmpClass_match< LHS, RHS, CmpInst > | m_Cmp (CmpPredicate &Pred, const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
CmpClass_match< LHS, RHS, ICmpInst > | m_ICmp (CmpPredicate &Pred, const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
CmpClass_match< LHS, RHS, FCmpInst > | m_FCmp (CmpPredicate &Pred, const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
CmpClass_match< LHS, RHS, CmpInst > | m_Cmp (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
CmpClass_match< LHS, RHS, ICmpInst > | m_ICmp (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
CmpClass_match< LHS, RHS, FCmpInst > | m_FCmp (const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
SpecificCmpClass_match< LHS, RHS, CmpInst > | m_SpecificCmp (CmpPredicate MatchPred, const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
SpecificCmpClass_match< LHS, RHS, ICmpInst > | m_SpecificICmp (CmpPredicate MatchPred, const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
SpecificCmpClass_match< LHS, RHS, ICmpInst, true > | m_c_SpecificICmp (CmpPredicate MatchPred, const LHS &L, const RHS &R) |
template<typename LHS, typename RHS> | |
SpecificCmpClass_match< LHS, RHS, FCmpInst > | m_SpecificFCmp (CmpPredicate MatchPred, const LHS &L, const RHS &R) |
template<typename Cond, typename LHS, typename RHS> | |
ThreeOps_match< Cond, LHS, RHS, Instruction::Select > | m_Select (const Cond &C, const LHS &L, const RHS &R) |
Matches SelectInst. | |
template<int64_t L, int64_t R, typename Cond> | |
ThreeOps_match< Cond, constantint_match< L >, constantint_match< R >, Instruction::Select > | m_SelectCst (const Cond &C) |
This matches a select of two constants, e.g.: m_SelectCst<-1, 0>(m_Value(V)) | |
template<typename LHS, typename RHS> | |
ThreeOps_match< decltype(m_Value()), LHS, RHS, Instruction::Select, true > | m_c_Select (const LHS &L, const RHS &R) |
Match Select(C, LHS, RHS) or Select(C, RHS, LHS) | |
template<typename OpTy> | |
OneOps_match< OpTy, Instruction::Freeze > | m_Freeze (const OpTy &Op) |
Matches FreezeInst. | |
template<typename Val_t, typename Elt_t, typename Idx_t> | |
ThreeOps_match< Val_t, Elt_t, Idx_t, Instruction::InsertElement > | m_InsertElt (const Val_t &Val, const Elt_t &Elt, const Idx_t &Idx) |
Matches InsertElementInst. | |
template<typename Val_t, typename Idx_t> | |
TwoOps_match< Val_t, Idx_t, Instruction::ExtractElement > | m_ExtractElt (const Val_t &Val, const Idx_t &Idx) |
Matches ExtractElementInst. | |
template<typename V1_t, typename V2_t> | |
TwoOps_match< V1_t, V2_t, Instruction::ShuffleVector > | m_Shuffle (const V1_t &v1, const V2_t &v2) |
Matches ShuffleVectorInst independently of mask value. | |
template<typename V1_t, typename V2_t, typename Mask_t> | |
Shuffle_match< V1_t, V2_t, Mask_t > | m_Shuffle (const V1_t &v1, const V2_t &v2, const Mask_t &mask) |
template<typename OpTy> | |
OneOps_match< OpTy, Instruction::Load > | m_Load (const OpTy &Op) |
Matches LoadInst. | |
template<typename ValueOpTy, typename PointerOpTy> | |
TwoOps_match< ValueOpTy, PointerOpTy, Instruction::Store > | m_Store (const ValueOpTy &ValueOp, const PointerOpTy &PointerOp) |
Matches StoreInst. | |
template<typename... OperandTypes> | |
auto | m_GEP (const OperandTypes &...Ops) |
Matches GetElementPtrInst. | |
template<typename PointerOpTy, typename OffsetOpTy> | |
PtrAdd_match< PointerOpTy, OffsetOpTy > | m_PtrAdd (const PointerOpTy &PointerOp, const OffsetOpTy &OffsetOp) |
Matches GEP with i8 source element type. | |
template<typename OpTy> | |
CastOperator_match< OpTy, Instruction::BitCast > | m_BitCast (const OpTy &Op) |
Matches BitCast. | |
template<typename OpTy> | |
ElementWiseBitCast_match< OpTy > | m_ElementWiseBitCast (const OpTy &Op) |
template<typename OpTy> | |
CastOperator_match< OpTy, Instruction::PtrToInt > | m_PtrToInt (const OpTy &Op) |
Matches PtrToInt. | |
template<typename OpTy> | |
PtrToIntSameSize_match< OpTy > | m_PtrToIntSameSize (const DataLayout &DL, const OpTy &Op) |
template<typename OpTy> | |
CastOperator_match< OpTy, Instruction::IntToPtr > | m_IntToPtr (const OpTy &Op) |
Matches IntToPtr. | |
template<typename OpTy> | |
match_combine_or< CastInst_match< OpTy, CastInst >, OpTy > | m_CastOrSelf (const OpTy &Op) |
Matches any cast or self. Used to ignore casts. | |
template<typename OpTy> | |
CastInst_match< OpTy, TruncInst > | m_Trunc (const OpTy &Op) |
Matches Trunc. | |
template<typename OpTy> | |
NoWrapTrunc_match< OpTy, TruncInst::NoUnsignedWrap > | m_NUWTrunc (const OpTy &Op) |
Matches trunc nuw. | |
template<typename OpTy> | |
NoWrapTrunc_match< OpTy, TruncInst::NoSignedWrap > | m_NSWTrunc (const OpTy &Op) |
Matches trunc nsw. | |
template<typename OpTy> | |
match_combine_or< CastInst_match< OpTy, TruncInst >, OpTy > | m_TruncOrSelf (const OpTy &Op) |
template<typename OpTy> | |
CastInst_match< OpTy, SExtInst > | m_SExt (const OpTy &Op) |
Matches SExt. | |
template<typename OpTy> | |
CastInst_match< OpTy, ZExtInst > | m_ZExt (const OpTy &Op) |
Matches ZExt. | |
template<typename OpTy> | |
NNegZExt_match< OpTy > | m_NNegZExt (const OpTy &Op) |
template<typename OpTy> | |
match_combine_or< CastInst_match< OpTy, ZExtInst >, OpTy > | m_ZExtOrSelf (const OpTy &Op) |
template<typename OpTy> | |
match_combine_or< CastInst_match< OpTy, SExtInst >, OpTy > | m_SExtOrSelf (const OpTy &Op) |
template<typename OpTy> | |
match_combine_or< CastInst_match< OpTy, SExtInst >, NNegZExt_match< OpTy > > | m_SExtLike (const OpTy &Op) |
Match either "sext" or "zext nneg". | |
template<typename OpTy> | |
match_combine_or< CastInst_match< OpTy, ZExtInst >, CastInst_match< OpTy, SExtInst > > | m_ZExtOrSExt (const OpTy &Op) |
template<typename OpTy> | |
match_combine_or< match_combine_or< CastInst_match< OpTy, ZExtInst >, CastInst_match< OpTy, SExtInst > >, OpTy > | m_ZExtOrSExtOrSelf (const OpTy &Op) |
template<typename OpTy> | |
match_combine_or< match_combine_or< CastInst_match< OpTy, ZExtInst >, CastInst_match< OpTy, TruncInst > >, OpTy > | m_ZExtOrTruncOrSelf (const OpTy &Op) |
template<typename OpTy> | |
CastInst_match< OpTy, UIToFPInst > | m_UIToFP (const OpTy &Op) |
template<typename OpTy> | |
CastInst_match< OpTy, SIToFPInst > | m_SIToFP (const OpTy &Op) |
template<typename OpTy> | |
CastInst_match< OpTy, FPToUIInst > | m_FPToUI (const OpTy &Op) |
template<typename OpTy> | |
CastInst_match< OpTy, FPToSIInst > | m_FPToSI (const OpTy &Op) |
template<typename OpTy> | |
CastInst_match< OpTy, FPTruncInst > | m_FPTrunc (const OpTy &Op) |
template<typename OpTy> | |
CastInst_match< OpTy, FPExtInst > | 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. | |
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. | |
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. | |
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. | |
template<typename LHS, typename RHS> | |
match_combine_or< MaxMin_match< FCmpInst, LHS, RHS, ofmax_pred_ty >, MaxMin_match< FCmpInst, LHS, RHS, ufmax_pred_ty > > | m_OrdOrUnordFMax (const LHS &L, const RHS &R) |
Match an 'ordered' or 'unordered' floating point maximum function. | |
template<typename LHS, typename RHS> | |
match_combine_or< MaxMin_match< FCmpInst, LHS, RHS, ofmin_pred_ty >, MaxMin_match< FCmpInst, LHS, RHS, ufmin_pred_ty > > | m_OrdOrUnordFMin (const LHS &L, const RHS &R) |
Match an 'ordered' or 'unordered' floating point minimum function. | |
template<typename ValTy> | |
BinaryOp_match< cst_pred_ty< is_all_ones >, ValTy, Instruction::Xor, true > | m_Not (const ValTy &V) |
Matches a 'Not' as 'xor V, -1' or 'xor -1, V'. | |
template<typename ValTy> | |
BinaryOp_match< cst_pred_ty< is_all_ones, false >, ValTy, Instruction::Xor, true > | m_NotForbidPoison (const ValTy &V) |
template<typename LHS_t, typename RHS_t, typename Sum_t> | |
UAddWithOverflow_match< LHS_t, RHS_t, Sum_t > | m_UAddWithOverflow (const LHS_t &L, const RHS_t &R, const Sum_t &S) |
Match an icmp instruction checking for unsigned overflow on addition. | |
template<unsigned OpI, typename Opnd_t> | |
Argument_match< Opnd_t > | m_Argument (const Opnd_t &Op) |
Match an argument. | |
template<Intrinsic::ID IntrID> | |
IntrinsicID_match | m_Intrinsic () |
Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X)) | |
template<typename Opnd0, typename Opnd1, typename Opnd2, typename Opnd3> | |
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2, Opnd3 >::Ty | m_MaskedLoad (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2, const Opnd3 &Op3) |
Matches MaskedLoad Intrinsic. | |
template<typename Opnd0, typename Opnd1, typename Opnd2, typename Opnd3> | |
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2, Opnd3 >::Ty | m_MaskedGather (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2, const Opnd3 &Op3) |
Matches MaskedGather Intrinsic. | |
template<Intrinsic::ID IntrID, typename T0> | |
m_Intrinsic_Ty< T0 >::Ty | m_Intrinsic (const T0 &Op0) |
template<Intrinsic::ID IntrID, typename T0, typename T1> | |
m_Intrinsic_Ty< T0, T1 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1) |
template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2> | |
m_Intrinsic_Ty< T0, T1, T2 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2) |
template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2, typename T3> | |
m_Intrinsic_Ty< T0, T1, T2, T3 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3) |
template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2, typename T3, typename T4> | |
m_Intrinsic_Ty< T0, T1, T2, T3, T4 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3, const T4 &Op4) |
template<Intrinsic::ID IntrID, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5> | |
m_Intrinsic_Ty< T0, T1, T2, T3, T4, T5 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3, const T4 &Op4, const T5 &Op5) |
template<typename Opnd0> | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_BitReverse (const Opnd0 &Op0) |
template<typename Opnd0> | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_BSwap (const Opnd0 &Op0) |
template<typename Opnd0> | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_FAbs (const Opnd0 &Op0) |
template<typename Opnd0> | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_FCanonicalize (const Opnd0 &Op0) |
template<typename Opnd0, typename Opnd1> | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_FMinNum (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd0, typename Opnd1> | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_FMinimum (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd0, typename Opnd1> | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_FMinimumNum (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd0, typename Opnd1> | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_FMaxNum (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd0, typename Opnd1> | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_FMaximum (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd0, typename Opnd1> | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_FMaximumNum (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd0, typename Opnd1, typename Opnd2> | |
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2 >::Ty | m_FShl (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2) |
template<typename Opnd0, typename Opnd1, typename Opnd2> | |
m_Intrinsic_Ty< Opnd0, Opnd1, Opnd2 >::Ty | m_FShr (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2) |
template<typename Opnd0> | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_Sqrt (const Opnd0 &Op0) |
template<typename Opnd0, typename Opnd1> | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_CopySign (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd0> | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_VecReverse (const Opnd0 &Op0) |
template<typename LHS, typename RHS> | |
AnyBinaryOp_match< LHS, RHS, true > | m_c_BinOp (const LHS &L, const RHS &R) |
Matches a BinaryOperator with LHS and RHS in either order. | |
template<typename LHS, typename RHS> | |
CmpClass_match< LHS, RHS, ICmpInst, true > | m_c_ICmp (CmpPredicate &Pred, const LHS &L, const RHS &R) |
Matches an ICmp with a predicate over LHS and RHS in either order. | |
template<typename LHS, typename RHS> | |
CmpClass_match< LHS, RHS, ICmpInst, true > | m_c_ICmp (const LHS &L, const RHS &R) |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
template<typename ValTy> | |
BinaryOp_match< cst_pred_ty< is_zero_int >, ValTy, Instruction::Sub > | m_Neg (const ValTy &V) |
Matches a 'Neg' as 'sub 0, V'. | |
template<typename ValTy> | |
OverflowingBinaryOp_match< cst_pred_ty< is_zero_int >, ValTy, Instruction::Sub, OverflowingBinaryOperator::NoSignedWrap > | m_NSWNeg (const ValTy &V) |
Matches a 'Neg' as 'sub nsw 0, V'. | |
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. | |
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. | |
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. | |
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. | |
template<typename LHS, typename RHS> | |
match_combine_or< match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty, true >, MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty, true > >, match_combine_or< MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty, true >, MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty, true > > > | m_c_MaxOrMin (const LHS &L, const RHS &R) |
template<Intrinsic::ID IntrID, typename T0, typename T1> | |
match_combine_or< typename m_Intrinsic_Ty< T0, T1 >::Ty, typename m_Intrinsic_Ty< T1, T0 >::Ty > | m_c_Intrinsic (const T0 &Op0, const T1 &Op1) |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::FAdd, true > | m_c_FAdd (const LHS &L, const RHS &R) |
Matches FAdd with LHS and RHS in either order. | |
template<typename LHS, typename RHS> | |
BinaryOp_match< LHS, RHS, Instruction::FMul, true > | m_c_FMul (const LHS &L, const RHS &R) |
Matches FMul with LHS and RHS in either order. | |
template<typename Val_t> | |
Signum_match< Val_t > | m_Signum (const Val_t &V) |
Matches a signum pattern. | |
template<int Ind, typename Val_t> | |
ExtractValue_match< Ind, Val_t > | m_ExtractValue (const Val_t &V) |
Match a single index ExtractValue instruction. | |
template<typename Val_t> | |
ExtractValue_match<-1, Val_t > | m_ExtractValue (const Val_t &V) |
Match an ExtractValue instruction with any index. | |
template<int Ind, typename Val_t, typename Elt_t> | |
InsertValue_match< Ind, Val_t, Elt_t > | m_InsertValue (const Val_t &Val, const Elt_t &Elt) |
Matches a single index InsertValue instruction. | |
IntrinsicID_match | m_VScale () |
Matches a call to llvm.vscale(). | |
template<typename Opnd0, typename Opnd1> | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_Interleave2 (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd> | |
m_Intrinsic_Ty< Opnd >::Ty | m_Deinterleave2 (const Opnd &Op) |
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 ? | |
auto | m_LogicalAnd () |
Matches L && R where L and R are arbitrary values. | |
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. | |
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 ? | |
auto | m_LogicalOr () |
Matches L || R where L and R are arbitrary values. | |
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. | |
template<typename LHS, typename RHS, bool Commutable = false> | |
auto | m_LogicalOp (const LHS &L, const RHS &R) |
Matches either L && R or L || R, either one being in the either binary or logical form. | |
auto | m_LogicalOp () |
Matches either L && R or L || R where L and R are arbitrary values. | |
template<typename LHS, typename RHS> | |
auto | m_c_LogicalOp (const LHS &L, const RHS &R) |
Matches either L && R or L || R with LHS and RHS in either order. |
using llvm::PatternMatch::cst_pred_ty = cstval_pred_ty<Predicate, ConstantInt, AllowPoison> |
specialization of cstval_pred_ty for ConstantInt
Definition at line 396 of file PatternMatch.h.
using llvm::PatternMatch::cstfp_pred_ty |
specialization of cstval_pred_ty for ConstantFP
Definition at line 400 of file PatternMatch.h.
|
inline |
Definition at line 1174 of file PatternMatch.h.
Referenced by canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), checkForNegativeOperand(), combineAdd(), combineShlAddIAddImpl(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), decompose(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::findHistogram(), llvm::findScalarElement(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqConstantAndICmp(), foldAndToUsubsat(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldICmpWithHighBitMask(), foldMulShl1(), foldSelectICmpMinMax(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), llvm::InstCombiner::getFreelyInvertedImpl(), getKnownBitsFromAndXorOr(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), llvm::isKnownToBeAPowerOfTwo(), isMaskOrZero(), m_AddLike(), m_AnyAdd(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchIncrement(), matchPMADDWD(), matchPMADDWD_2(), matchUAddWithOverflowConstantEdgeCases(), matchVPMADD52(), moveAddAfterMinMax(), optimizeBranch(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyOrOfICmpsWithAdd(), simplifySubInst(), trySimplifyICmpWithAdds(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitURem(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match either "add" or "or disjoint".
Definition at line 1528 of file PatternMatch.h.
References LHS, m_Add(), m_CombineOr(), m_DisjointOr(), and RHS.
Referenced by canonicalizeGEPOfConstGEPI8(), computeKnownBitsFromCmp(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldICmpBinOp(), foldReduceOperandViaVQDOT(), matchICmpOperand(), llvm::simplifyInstruction(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Match an integer or vector with all bits set.
For vectors, this includes constants with undefined elements.
Definition at line 516 of file PatternMatch.h.
Referenced by areInverseVectorBitmasks(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), dropRedundantMaskingOfLeftShiftInput(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), foldICmpOfUAddOv(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectICmpMinMax(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), getKnownBitsFromAndXorOr(), getMaskedTypeForICmpPair(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::isKnownToBeAPowerOfTwo(), isMaskOrZero(), m_Not(), llvm::SDPatternMatch::m_Not(), matchSelectPattern(), matchUAddWithOverflowConstantEdgeCases(), shouldExpandCmpArithRMWInIR(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAShrInst(), llvm::simplifyBinaryIntrinsic(), simplifyGEPInst(), simplifyIntrinsic(), simplifyOrInst(), simplifyRecipe(), simplifySelectWithICmpCond(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 520 of file PatternMatch.h.
Referenced by m_NotForbidPoison().
|
inline |
Definition at line 96 of file PatternMatch.h.
References T.
Referenced by llvm::InstCombinerImpl::foldFMulReassoc(), and llvm::InstCombinerImpl::foldPowiReassoc().
|
inline |
Definition at line 1288 of file PatternMatch.h.
Referenced by canScalarizeAccess(), checkForNegativeOperand(), collectBitParts(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndXorSubWithBMI(), combineOrAndToBitfieldInsert(), combineXorToBitfieldInsert(), computeKnownBitsFromCmp(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), countToEliminateCompares(), llvm::decomposeBitTestICmp(), llvm::findValuesAffectedByCondition(), foldAddSubBoolOfMaskedVal(), foldAddToAshr(), foldAndToUsubsat(), foldAnyOrAllBitsSet(), foldBoxMultiply(), foldCopySignIdioms(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpWithLowBitMaskedVal(), foldMaskedMerge(), foldNotXor(), foldOrOfInversions(), foldOrToXor(), foldSelectICmpAndAnd(), foldSelectICmpAndZeroShl(), foldSetClearBits(), foldSubCtlzNot(), foldXorToXor(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getFreelyInvertedImpl(), getMaskedTypeForICmpPair(), haveNoCommonBitsSetSpecialCases(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), lookThroughAnd(), matchAndOrChain(), matchBitmaskMul(), matchLogicBlend(), MatchRem(), matchZExtedSubInteger(), parseCondition(), llvm::parseWidenableBranch(), reverseZExtICmpCombine(), llvm::simplifyInstruction(), simplifyOrInst(), simplifyOrLogic(), simplifySelectBitTest(), simplifySelectWithICmpCond(), llvm::stripNullTest(), llvm::InstCombinerImpl::takeLog2(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), 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 499 of file PatternMatch.h.
Referenced by foldTwoEntryPHINode().
|
inline |
Match a floating-point negative zero or positive zero.
For vectors, this includes constants with undefined elements.
Definition at line 758 of file PatternMatch.h.
Referenced by foldFCmpFSubIntoFCmp(), foldFCmpReciprocalAndZero(), foldSelectBinOpIdentity(), llvm::GCNTTIImpl::instCombineIntrinsic(), m_FNegNSZ(), matchIsNotNaN(), matchSelectPattern(), reassociateFCmps(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFSubInst(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFCmpInst().
Match a ConstantFP or splatted ConstantVector, binding the specified pointer to the contained APFloat.
Definition at line 308 of file PatternMatch.h.
Referenced by computeKnownFPClassFromCond(), factorizeFAddFSub(), foldFabsWithFcmpZero(), foldFCmpFpTrunc(), llvm::InstCombinerImpl::foldFCmpIntToFPConst(), foldFCmpReciprocalAndZero(), foldFrexpOfSelect(), getNegatibleInsts(), llvm::GCNTTIImpl::instCombineIntrinsic(), isOneOrNegOne(), matchFastFloatClamp(), simplifyAndOrOfFCmpsWithConstants(), llvm::simplifyBinaryIntrinsic(), simplifyFCmpInst(), simplifyLdexp(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFCmpInst().
Match APFloat while allowing poison in splat vector constants.
Definition at line 314 of file PatternMatch.h.
Referenced by simplifyFCmpInst(), and llvm::InstCombinerImpl::visitFMul().
Match APFloat while forbidding poison in splat vector constants.
Definition at line 319 of file PatternMatch.h.
Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt.
Definition at line 291 of file PatternMatch.h.
Referenced by bitTrackingDCE(), canEvaluateShifted(), canEvaluateShiftedShift(), canonicalizeAbs(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeGEPOfConstGEPI8(), canonicalizeLogicFirst(), canonicalizeSaturatedSubtract(), checkForNegativeOperand(), cmpExcludesZero(), collectBitParts(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBits(), computeKnownBitsFromCmp(), computeKnownBitsFromOperator(), computeKnownFPClassFromCond(), ComputeNumSignBitsImpl(), llvm::ConstantFoldBinaryInstruction(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldBitwiseLogicWithIntrinsics(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpAndShift(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpDivConstant(), llvm::InstCombinerImpl::foldICmpEqIntrinsicWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), llvm::InstCombinerImpl::foldICmpMulConstant(), llvm::InstCombinerImpl::foldICmpOrConstant(), llvm::InstCombinerImpl::foldICmpShlConstant(), foldICmpShlLHSC(), llvm::InstCombinerImpl::foldICmpShrConstant(), llvm::InstCombinerImpl::foldICmpSRemConstant(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldICmpUDivConstant(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpUSubSatOrUAddSatWithConstant(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpXorConstant(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldLogOpOfMaskedICmps(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), foldNegativePower2AndShiftedMask(), foldNoWrapAdd(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldSelectICmp(), foldSelectICmpAnd(), foldSelectICmpAndZeroShl(), llvm::InstCombinerImpl::foldSelectIntoOp(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftedShift(), foldToUnsignedSaturatedAdd(), foldVecExtTruncToExtElt(), getDemandedBitsLHSMask(), llvm::ConstantExpr::getExactLogBase2(), getMaskedICmpType(), getNotValue(), getRangeForIntrinsic(), getRangeForSelectPattern(), getValueFromOverflowCondition(), haveNoCommonBitsSetSpecialCases(), isAllocSiteRemovable(), isDivZero(), isImpliedCondICmps(), isImpliedToBeAPowerOfTwoFromCond(), llvm::isKnownInversion(), isLoadCombineCandidateImpl(), isNonEqualMul(), isNonEqualPHIs(), isNonEqualShl(), isNonZeroRecurrence(), isPoisonShift(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), isSignedMinMaxClamp(), isSignedMinMaxIntrinsicClamp(), isSignificantBitCheckWellFormed(), isTruePredicate(), lookThroughAnd(), maintainNoSignedWrap(), matchAndOrChain(), matchBitmaskMul(), matchClamp(), MatchDiv(), matchICmpOperand(), matchIntPart(), matchMinMax(), MatchMul(), matchOrConcat(), MatchRem(), matchZExtedSubInteger(), moveAddAfterMinMax(), setLimitsForBinOp(), ShrinkDemandedConstant(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithCtpop(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDiv(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), llvm::simplifyInstruction(), simplifyIntrinsic(), simplifyIRemMulShl(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyOrOfICmpsWithAdd(), simplifyRem(), simplifySelectBitTest(), simplifySelectWithICmpCond(), simplifySwitchOnSelectUsingRanges(), llvm::stripNullTest(), tryFactorization(), trySimplifyICmpWithAdds(), tryToFPToSat(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitXor(), and llvm::reassociate::XorOpnd::XorOpnd().
Match APInt while allowing poison in splat vector constants.
Definition at line 297 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::decomposeBitTestICmp(), foldAndOrOfICmpEqConstantAndICmp(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldNegativePower2AndShiftedMask(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::simplifyBinaryIntrinsic(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithConstant(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitXor().
Match APInt while forbidding poison in splat vector constants.
Definition at line 302 of file PatternMatch.h.
|
inline |
Match an argument.
Definition at line 2704 of file PatternMatch.h.
Referenced by m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), and m_Intrinsic().
|
inline |
Definition at line 1318 of file PatternMatch.h.
Referenced by canonicalizeAbs(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::GCNTTIImpl::isAlwaysUniform(), llvm::X86TTIImpl::isProfitableToSinkOperands(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchOrConcat(), llvm::simplifyBinaryIntrinsic(), simplifyGEPInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches ashr L, ConstShAmt or L itself (R will be set to zero in this case).
Definition at line 1357 of file PatternMatch.h.
References LHS.
|
inline |
Match an arbitrary basic block value and ignore it.
Definition at line 202 of file PatternMatch.h.
Referenced by llvm::canPeelLastIteration(), canProveExitOnFirstIteration(), collectUnswitchCandidatesWithInjections(), computeKnownBitsFromOperator(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), llvm::SCEVExpander::hasRelatedExistingExpansion(), llvm::isProcessableCondBI(), and m_Br().
|
inline |
Match a basic block value, capturing it if we match.
Definition at line 892 of file PatternMatch.h.
|
inline |
Definition at line 893 of file PatternMatch.h.
|
inline |
Match an arbitrary binary operation and ignore it.
Definition at line 113 of file PatternMatch.h.
Referenced by cheapToScalarize(), combineAdd(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::findHistogram(), foldAndToXor(), foldBitCastBitwiseLogic(), foldComplexAndOrPatterns(), foldDependentIVs(), llvm::InstCombinerImpl::foldFMulReassoc(), llvm::InstCombinerImpl::foldICmpBinOp(), foldMulShl1(), foldSelectBinOpIdentity(), foldSelectICmpAndBinOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), foldTwoEntryPHINode(), llvm::InstCombinerImpl::foldVectorBinop(), instCombineSVELast(), isInstructionPairMul(), llvm::isSplatValue(), matchesSquareSum(), matchLogicBlend(), matchRdxBop(), NegateValue(), passingValueIsAlwaysUndefined(), reassociateFCmps(), reassociateForUses(), simplifyAndInst(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::InstCombinerImpl::simplifyBinOpSplats(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitShl(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Match a binary operator, capturing it if we match.
Definition at line 866 of file PatternMatch.h.
References I.
Definition at line 1120 of file PatternMatch.h.
|
inline |
Matches BitCast.
Definition at line 2142 of file PatternMatch.h.
Referenced by combineCastedMaskArithmetic(), combineSCALAR_TO_VECTOR(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldIdentityExtractShuffle(), foldReductionIdiom(), foldTruncShuffle(), foldVecTruncToExtElt(), isUsedWithinShuffleVector(), matchSubIntegerPackFromVector(), performBitcastCombine(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Definition at line 2828 of file PatternMatch.h.
References m_Intrinsic().
Referenced by collectBitParts(), foldCtpop(), foldCttzCtlz(), matchOrConcat(), and simplifyUnaryIntrinsic().
|
inline |
Matches bitwise logic operations.
Definition at line 1659 of file PatternMatch.h.
Referenced by combineCastedMaskArithmetic(), foldBitOrderCrossLogicOp(), and foldBitOrderCrossLogicOp().
|
inline |
Definition at line 2356 of file PatternMatch.h.
References llvm::CallingConv::C, F, m_BasicBlock(), and T.
Referenced by llvm::canPeelLastIteration(), canProveExitOnFirstIteration(), collectUnswitchCandidatesWithInjections(), computeKnownBitsFromOperator(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), foldGuardedFunnelShift(), foldICmpWithDominatingICmp(), getAppleRuntimeUnrollPreferences(), getDomPredecessorCondition(), llvm::SCEVExpander::hasRelatedExistingExpansion(), isLoopNeverExecuted(), llvm::isProcessableCondBI(), and tryToMoveFreeBeforeNullTest().
|
inline |
Definition at line 2363 of file PatternMatch.h.
References llvm::CallingConv::C, F, and T.
|
inline |
Definition at line 2833 of file PatternMatch.h.
References m_Intrinsic().
Referenced by collectBitParts(), foldCtpop(), matchOrConcat(), llvm::recognizeBSwapOrBitReverseIdiom(), simplifyUnaryIntrinsic(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Matches a Add with LHS and RHS in either order.
Definition at line 2944 of file PatternMatch.h.
Referenced by canonicalizeAbs(), llvm::VPlanTransforms::canonicalizeEVLLoops(), canonicalizeSaturatedAdd(), combineAddSubWithShlAddSub(), detectShiftUntilZeroIdiom(), foldBoxMultiply(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldSubOfMinMax(), foldToUnsignedSaturatedAdd(), foldUnsignedUnderflowCheck(), getKnownBitsFromAndXorOr(), getOptimizableIVOf(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), isImpliedCondICmps(), isTruePredicate(), matchesAdd(), shouldExpandCmpArithRMWInIR(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithIntrinsicOnLHS(), simplifyOrInst(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitIntToPtr(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches an And with LHS and RHS in either order.
Definition at line 2958 of file PatternMatch.h.
Referenced by computeKnownBitsFromCmp(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), FindSingleBitChange(), foldAndToXor(), foldAnyOrAllBitsSet(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstant(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpPow2Test(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldOrToXor(), foldSelectICmpAndAnd(), foldSelectZeroOrFixedOp(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldXorToXor(), getKnownBitsFromAndXorOr(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), haveNoCommonBitsSetSpecialCases(), llvm::GCNTTIImpl::isAlwaysUniform(), llvm::isKnownToBeAPowerOfTwo(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), isSignificantBitCheckWellFormed(), isTruePredicate(), matchICmpOperand(), shouldExpandCmpArithRMWInIR(), simplifyOrLogic(), simplifyXorInst(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitLShr(), 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 2917 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), combineAdd(), combineBasicSADPattern(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldComplexAndOrPatterns(), foldDependentIVs(), foldSelectBinOpIdentity(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), getInvertibleOperands(), getKnownBitsFromAndXorOr(), matchDeMorgansLaws(), matchesSquareSum(), reassociateForUses(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::stripNullTest(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Matches a specific opcode with LHS and RHS in either order.
Definition at line 2938 of file PatternMatch.h.
|
inline |
Matches bitwise logic operations in either order.
Definition at line 1666 of file PatternMatch.h.
|
inline |
Definition at line 1519 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::visitOr().
|
inline |
Matches FAdd with LHS and RHS in either order.
Definition at line 3040 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 3047 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), factorizeLerp(), llvm::InstCombinerImpl::foldFMulReassoc(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldPowiReassoc(), 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 2925 of file PatternMatch.h.
Referenced by computeKnownBitsFromOperator(), foldAndOrOfICmpsWithConstEq(), foldAndOrOfICmpsWithPow2AndWithZero(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithHighBitMask(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldUnsignedUnderflowCheck(), llvm::isKnownInversion(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), shouldExpandCmpArithRMWInIR(), simplifyUnsignedRangeCheck(), llvm::InstCombinerImpl::visitAdd(), and llvm::InstCombinerImpl::visitICmpInst().
|
inline |
Definition at line 2930 of file PatternMatch.h.
|
inline |
Definition at line 3032 of file PatternMatch.h.
References m_CombineOr(), m_Intrinsic(), and T1.
Referenced by foldSelectZeroOrFixedOp(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Matches L && R with LHS and RHS in either order.
Definition at line 3219 of file PatternMatch.h.
Referenced by simplifyOrLogic(), and simplifySelectInst().
Matches either L && R or L || R with LHS and RHS in either order.
Definition at line 3256 of file PatternMatch.h.
References LHS, m_LogicalOp(), and RHS.
|
inline |
Matches L || R with LHS and RHS in either order.
Definition at line 3237 of file PatternMatch.h.
Referenced by simplifyOrLogic(), and simplifySelectInst().
|
inline |
Definition at line 3024 of file PatternMatch.h.
References LHS, m_c_SMax(), m_c_SMin(), m_c_UMax(), m_c_UMin(), m_CombineOr(), and RHS.
Referenced by foldMinMaxSharedOp(), reassociateMinMaxWithConstantInOperand(), simplifyCmpSelOfMaxMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches a Mul with LHS and RHS in either order.
Definition at line 2951 of file PatternMatch.h.
Referenced by checkOuterLoopInsts(), llvm::InstCombinerImpl::commonIDivTransforms(), foldBoxMultiply(), llvm::InstCombinerImpl::foldICmpBinOp(), foldIDivShl(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectZeroOrFixedOp(), matchExpandedRem(), simplifyDivRem(), simplifyRecipe(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitMul().
|
inline |
Definition at line 1400 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1442 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by computeKnownBitsFromCmp(), and isRemOfLoopIncrementWithLoopInvariant().
|
inline |
Matches an Or with LHS and RHS in either order.
Definition at line 2965 of file PatternMatch.h.
Referenced by computeKnownBitsFromCmp(), foldAndToXor(), foldCopySignIdioms(), foldCtpop(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpOrXX(), foldLoadsRecursive(), foldOrToXor(), foldOrUnsignedUMulOverflowICmp(), foldXorToXor(), haveNoCommonBitsSetSpecialCases(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), isTruePredicate(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchesOr(), matchICmpOperand(), shouldExpandCmpArithRMWInIR(), simplifyAndCommutative(), simplifyAndInst(), simplifyICmpWithBinOpOnLHS(), simplifyLShrInst(), simplifyOrLogic(), simplifyXorInst(), splitMergedValStore(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match Select(C, LHS, RHS) or Select(C, RHS, LHS)
Definition at line 1936 of file PatternMatch.h.
References LHS, m_Value(), and RHS.
Referenced by foldTwoEntryPHINode(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFreeze(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches an SMax with LHS and RHS in either order.
Definition at line 3002 of file PatternMatch.h.
Referenced by isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches an SMin with LHS and RHS in either order.
Definition at line 2996 of file PatternMatch.h.
Referenced by isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1815 of file PatternMatch.h.
|
inline |
Matches a UMax with LHS and RHS in either order.
Definition at line 3014 of file PatternMatch.h.
Referenced by isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches a UMin with LHS and RHS in either order.
Definition at line 3008 of file PatternMatch.h.
Referenced by foldToUnsignedSaturatedAdd(), isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches an Xor with LHS and RHS in either order.
Definition at line 2972 of file PatternMatch.h.
Referenced by foldComplexAndOrPatterns(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), foldICmpXorXX(), foldXorToXor(), getKnownBitsFromAndXorOr(), haveNoCommonBitsSetSpecialCases(), isConditionalOnXorOfPHIs(), isMaskOrZero(), isSignificantBitCheckWellFormed(), m_Not(), m_NotForbidPoison(), shouldExpandCmpArithRMWInIR(), simplifyAndInst(), simplifyOrLogic(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), visitMaskedMerge(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().
Match either (xor L, R), (xor R, L) or (sub nuw R, L) iff R.isMask() Only commutative matcher as the sub will need to swap the L and R.
Definition at line 1576 of file PatternMatch.h.
|
inline |
Matches any cast or self. Used to ignore casts.
Definition at line 2197 of file PatternMatch.h.
References m_CombineOr().
Referenced by tryToRecognizeTableBasedCttz().
|
inline |
Definition at line 490 of file PatternMatch.h.
|
inline |
Match a float or vector where CheckFn(ele) for each element is true.
For vectors, poison elements are assumed to match.
Definition at line 485 of file PatternMatch.h.
|
inline |
Definition at line 478 of file PatternMatch.h.
|
inline |
Match an integer or vector where CheckFn(ele) for each element is true.
For vectors, poison elements are assumed to match.
Definition at line 473 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpCommutative(), foldMinimumOverTrailingOrLeadingZeroCount(), simplifyRem(), and llvm::InstCombinerImpl::visitMul().
|
inline |
Matches any compare instruction and ignore it.
Definition at line 118 of file PatternMatch.h.
Referenced by cheapToScalarize(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), foldSelectBinOpIdentity(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), getHashValueImpl(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::RecurrenceDescriptor::isAnyOfPattern(), isEqualImpl(), llvm::RecurrenceDescriptor::isFindIVPattern(), llvm::RecurrenceDescriptor::isMinMaxPattern(), RecurrenceInfo::matchConditionalRecurrence(), planContainsAdditionalSimplifications(), simplifyRecipe(), and llvm::InstCombinerImpl::visitExtractElementInst().
|
inline |
Definition at line 1740 of file PatternMatch.h.
|
inline |
Definition at line 1758 of file PatternMatch.h.
|
inline |
Combine two pattern matchers matching L && R.
Definition at line 258 of file PatternMatch.h.
Referenced by detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), matchExpandedRem(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), simplifyAndInst(), simplifyOrLogic(), simplifyXorInst(), and llvm::InstCombinerImpl::visitICmpInst().
|
inline |
Combine two pattern matchers matching L || R.
Definition at line 252 of file PatternMatch.h.
Referenced by addValueAffectedByCondition(), collectUnswitchCandidates(), computeKnownBitsFromCmp(), llvm::ConstantFoldBinaryInstruction(), dropRedundantMaskingOfLeftShiftInput(), foldBoxMultiply(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpWithHighBitMask(), llvm::InstCombinerImpl::foldSelectShuffle(), foldShuffleOfUnaryOps(), foldTwoEntryPHINode(), foldVecTruncToExtElt(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::RecurrenceDescriptor::isFindIVPattern(), isKnownNonZeroFromAssume(), isMultipleOfN(), isSignificantBitCheckWellFormed(), m_AddLike(), m_AnyAdd(), m_AnyMul(), m_c_Intrinsic(), m_c_MaxOrMin(), m_CastOrSelf(), m_LogicalOp(), m_MaxOrMin(), m_NSWAddLike(), m_NUWAddLike(), m_OrdOrUnordFMax(), m_OrdOrUnordFMin(), m_SExtLike(), m_SExtOrSelf(), m_TruncOrSelf(), m_ZExtOrSelf(), m_ZExtOrSExt(), m_ZExtOrSExtOrSelf(), m_ZExtOrTruncOrSelf(), markAliveBlocks(), matchesSquareSum(), matchSelectPattern(), matchZExtedSubInteger(), optimizeShiftInOrChain(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), shouldCanonicalizeGEPToPtrAdd(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), simplifyAndOrOfFCmps(), simplifyRecipe(), simplifySelectWithICmpCond(), tryToMoveFreeBeforeNullTest(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Match an arbitrary Constant and ignore it.
Definition at line 178 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::findScalarElement(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithConstEq(), foldBitCastBitwiseLogic(), foldConstantInsEltIntoShuffle(), foldFDivConstantDividend(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), llvm::InstCombinerImpl::foldICmpBinOpWithConstantViaTruthTable(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), foldNoWrapAdd(), foldSelectBinOpIdentity(), foldSelectGEP(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVectorCmp(), getNegatibleInsts(), hoistInsEltConst(), llvm::ARMTTIImpl::instCombineIntrinsic(), lookThroughCastConst(), matchIncrement(), matchSubIntegerPackFromVector(), narrowUDivURem(), NegateValue(), recordCondition(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), 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::visitShuffleVectorInst(), 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 880 of file PatternMatch.h.
References llvm::CallingConv::C.
|
inline |
Match a constant expression or a constant that contains a constant expression.
Definition at line 199 of file PatternMatch.h.
Referenced by simplifyInstructionWithPHI(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match a ConstantExpr, capturing the value if we match.
Definition at line 889 of file PatternMatch.h.
References llvm::CallingConv::C.
|
inline |
Match an arbitrary ConstantFP and ignore it.
Definition at line 186 of file PatternMatch.h.
Referenced by llvm::GCNTTIImpl::instCombineIntrinsic(), and matchFPExtFromF16().
|
inline |
Match a ConstantFP, capturing the value if we match.
Definition at line 886 of file PatternMatch.h.
References llvm::CallingConv::C.
|
inline |
Match an arbitrary ConstantInt and ignore it.
Definition at line 181 of file PatternMatch.h.
Referenced by annotateNonNullAndDereferenceable(), canEvaluateZExtd(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), canonicalizeInsertSplat(), canScalarizeAccess(), cheapToScalarize(), computeKnownBitsFromCmp(), computeKnownFPClass(), computeKnownFPClassFromCond(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), decompose(), llvm::findValuesAffectedByCondition(), foldConstantInsEltIntoShuffle(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldShuffleWithInsert(), foldTruncInsEltPair(), foldVecExtTruncToExtElt(), foldVecTruncToExtElt(), getKnownTypeFromMaskedOp(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), hoistInsEltConst(), instCombinePTrue(), llvm::GCNTTIImpl::isAlwaysUniform(), isLoopNeverExecuted(), isMultipleOfN(), isOperandOfVmullHighP64(), isSSATMinMaxPattern(), m_SelectCst(), llvm::PatternMatch::ShiftLike_match< LHS_t, Opcode >::match(), matchesAdd(), matchesOr(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), matchZExtedSubInteger(), shouldCanonicalizeGEPToPtrAdd(), shouldSinkVScale(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyGEPInst(), simplifyShuffleVectorInst(), tryToReplaceALMWithWideALM(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitInsertElementInst(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSwitchInst(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match a ConstantInt with a specific value.
Definition at line 339 of file PatternMatch.h.
|
inline |
Match a ConstantInt, capturing the value if we match.
Definition at line 883 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 1070 of file PatternMatch.h.
|
inline |
Definition at line 2901 of file PatternMatch.h.
References m_Intrinsic().
Referenced by optimizeSymmetricCall(), stripSignOnlyFPOps(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitFNeg().
|
inline |
A commutative-friendly version of m_Specific().
Definition at line 1090 of file PatternMatch.h.
|
inline |
Definition at line 1094 of file PatternMatch.h.
Definition at line 973 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 972 of file PatternMatch.h.
Referenced by combineAndXorSubWithBMI(), combineBasicSADPattern(), combineXorToBitfieldInsert(), dropRedundantMaskingOfLeftShiftInput(), factorizeLerp(), foldAndToUsubsat(), foldAndToXor(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldFMulReassoc(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldMaskedMerge(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), foldToUnsignedSaturatedAdd(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldXorToXor(), getKnownBitsFromAndXorOr(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), haveNoCommonBitsSetSpecialCases(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), isMaskOrZero(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchesSquareSum(), matchExpandedRem(), matchLogicBlend(), simplifyAndInst(), simplifyCastInst(), simplifyRecipe(), simplifySelectWithICmpCond(), llvm::stripNullTest(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 3154 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Definition at line 1514 of file PatternMatch.h.
Referenced by decompose(), llvm::InstCombinerImpl::foldAddWithConstant(), m_AddLike(), m_NSWAddLike(), m_NUWAddLike(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 2170 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonCastTransforms(), computeKnownBitsFromOperator(), computeKnownFPClass(), computeKnownFPClassFromCond(), llvm::findValuesAffectedByCondition(), foldCopySignIdioms(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), simplifyICmpWithConstant(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 1699 of file PatternMatch.h.
References T.
Referenced by foldCttzCtlz(), simplifyMulInst(), simplifyShlInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitShl(), and llvm::InstCombinerImpl::visitUDiv().
|
inline |
Matches ExtractElementInst.
Definition at line 1958 of file PatternMatch.h.
Referenced by canonicalizeBitCastExtElt(), foldInsEltIntoIdentityShuffle(), foldVecExtTruncToExtElt(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), isAddSubOrSubAdd(), isOperandOfVmullHighP64(), lowerBUILD_VECTOR(), matchPMADDWD(), matchPMADDWD_2(), matchSubIntegerPackFromVector(), llvm::RISCVTargetLowering::PerformDAGCombine(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::simplifyInsertElementInst(), and llvm::InstCombinerImpl::visitInsertElementInst().
|
inline |
Match a single index ExtractValue instruction.
For example m_ExtractValue<1>(...)
Definition at line 3110 of file PatternMatch.h.
Referenced by directlyImpliesPoison(), dominatesMergePoint(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpOfUAddOv(), foldOrUnsignedUMulOverflowICmp(), isKnownNonZeroFromOperator(), matchIncrement(), llvm::patchReplacementInstruction(), replaceSubOverflowUses(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractValueInst(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Match an ExtractValue instruction with any index.
For example m_ExtractValue(...)
Definition at line 3117 of file PatternMatch.h.
|
inline |
Definition at line 2838 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::findValuesAffectedByCondition(), foldFabsWithFcmpZero(), foldShuffleOfUnaryOps(), llvm::GCNTTIImpl::isProfitableToSinkOperands(), optimizeSymmetricCall(), simplifyAndOrOfFCmps(), stripSignOnlyFPOps(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitFDiv().
|
inline |
Definition at line 1180 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), m_AnyAdd(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFCmpInst().
|
inline |
Definition at line 2843 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Definition at line 1752 of file PatternMatch.h.
Referenced by computeKnownFPClass(), computeKnownFPClassFromCond(), llvm::findValuesAffectedByCondition(), reassociateFCmps(), simplifySelectWithFCmp(), and llvm::InstCombinerImpl::visitBranchInst().
|
inline |
Definition at line 1768 of file PatternMatch.h.
|
inline |
Definition at line 1264 of file PatternMatch.h.
Referenced by convertFSqrtDivIntoFMul(), factorizeFAddFSub(), foldFDivConstantDividend(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), getFSqrtDivOptPattern(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFDiv(), 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 736 of file PatternMatch.h.
|
inline |
Definition at line 739 of file PatternMatch.h.
|
inline |
Match a finite non-zero FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 746 of file PatternMatch.h.
Referenced by llvm::GCNTTIImpl::canSimplifyLegacyMulToMul().
|
inline |
Definition at line 749 of file PatternMatch.h.
|
inline |
Definition at line 2872 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchRdxBop().
|
inline |
Definition at line 2879 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern().
|
inline |
Definition at line 2866 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchRdxBop().
|
inline |
Definition at line 2854 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchRdxBop().
|
inline |
Definition at line 2861 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern().
|
inline |
Definition at line 2848 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchRdxBop().
|
inline |
Definition at line 1246 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), foldFDivConstantDividend(), foldFNegIntoConstant(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), getFSqrtDivOptPattern(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isInstructionPairMul(), m_AnyMul(), llvm::RISCVTargetLowering::PerformDAGCombine(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFMul(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Match 'fneg X' as 'fsub -0.0, X'.
Definition at line 1228 of file PatternMatch.h.
References X.
Referenced by llvm::findValuesAffectedByCondition(), foldFCmpFNegCommonOp(), foldFDivConstantDividend(), foldFNegIntoConstant(), llvm::InstCombinerImpl::foldSelectOpOp(), foldShuffleOfUnaryOps(), llvm::InstCombiner::getComplexity(), isNeg(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::GCNTTIImpl::isProfitableToSinkOperands(), LinearizeExprTree(), NegateValue(), optimizeSymmetricCall(), llvm::RISCVTargetLowering::PerformDAGCombine(), ShouldBreakUpSubtract(), llvm::simplifyBinaryIntrinsic(), simplifyFAddInst(), simplifyFNegInst(), simplifyFSubInst(), stripSignOnlyFPOps(), 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 1235 of file PatternMatch.h.
References m_AnyZeroFP(), m_FSub(), RHS, and X.
Referenced by simplifyFDivInst().
|
inline |
Definition at line 2312 of file PatternMatch.h.
Referenced by canSafelyConvertTo16Bit(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::GCNTTIImpl::instCombineIntrinsic(), matchFPExtFromF16(), 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 1000 of file PatternMatch.h.
References m_SpecificFP().
Referenced by factorizeLerp(), llvm::GCNTTIImpl::getArithmeticInstrCost(), getFSqrtDivOptPattern(), simplifyFDivInst(), and simplifyFMAFMul().
|
inline |
Definition at line 2302 of file PatternMatch.h.
Referenced by isKnownExactCastIntToFP(), and tryToFPToSat().
|
inline |
Definition at line 2297 of file PatternMatch.h.
Referenced by isKnownExactCastIntToFP().
|
inline |
Definition at line 2307 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBitCast(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Matches FreezeInst.
Definition at line 1943 of file PatternMatch.h.
Referenced by getStartValueFromReductionResult().
|
inline |
Definition at line 1282 of file PatternMatch.h.
|
inline |
Definition at line 2885 of file PatternMatch.h.
References m_Intrinsic().
Referenced by collectBitParts(), foldCtpop(), foldSelectZeroOrFixedOp(), llvm::recognizeBSwapOrBitReverseIdiom(), and simplifySelectWithICmpCond().
|
inline |
Definition at line 2891 of file PatternMatch.h.
References m_Intrinsic().
Referenced by collectBitParts(), foldCtpop(), foldSelectZeroOrFixedOp(), llvm::recognizeBSwapOrBitReverseIdiom(), and simplifySelectWithICmpCond().
|
inline |
Definition at line 1192 of file PatternMatch.h.
Referenced by factorizeLerp(), llvm::InstCombinerImpl::foldFMulReassoc(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), m_FNegNSZ(), simplifyFAddInst(), simplifyFSubInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFNeg(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Matches GetElementPtrInst.
Definition at line 2058 of file PatternMatch.h.
References AbstractManglingParser< Derived, Alloc >::Ops.
Referenced by foldDependentIVs().
|
inline |
Definition at line 1746 of file PatternMatch.h.
Referenced by llvm::analyzeICmp(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::canPeelLastIteration(), checkOrAndOpImpliedByOther(), collectUnswitchCandidatesWithInjections(), computeKnownFPClassFromCond(), countToEliminateCompares(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), llvm::findValuesAffectedByCondition(), foldAddToAshr(), foldAndOrOfICmpsWithConstEq(), foldAndOrOfICmpsWithPow2AndWithZero(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrChain(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldIsPowerOf2OrZero(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldReductionIdiom(), foldSelectICmpAndZeroShl(), llvm::InstCombinerImpl::foldSelectOpOp(), foldSelectZeroOrFixedOp(), llvm::InstCombinerImpl::foldSignBitTest(), foldUnsignedUnderflowCheck(), getAppleRuntimeUnrollPreferences(), llvm::vputils::getRecipesForUncountableExit(), llvm::SCEVExpander::hasRelatedExistingExpansion(), hoistAddSub(), hoistMinMax(), llvm::isCheckForZeroAndMulWithOverflow(), isImpliedToBeAPowerOfTwoFromCond(), llvm::isKnownInversion(), llvm::isOnlyUsedInZeroComparison(), llvm::isProcessableCondBI(), isSignificantBitCheckWellFormed(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), optimizeVectorInductionWidthForTCAndVFUF(), recordCondition(), shouldExpandCmpArithRMWInIR(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrWithICmpEq(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyOrOfICmpsWithAdd(), simplifySelectWithICmpCond(), simplifySwitchOnSelectUsingRanges(), simplifyUnsignedRangeCheck(), llvm::VPlanTransforms::truncateToMinimalBitwidths(), tryToMoveFreeBeforeNullTest(), llvm::InstCombinerImpl::visitAdd(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Definition at line 1763 of file PatternMatch.h.
|
inline |
Matches integer division operations.
Definition at line 1672 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectZeroOrFixedOp(), isKnownNonNullFromDominatingCondition(), matchExpandedRem(), simplifyMulInst(), and llvm::InstCombinerImpl::visitGetElementPtrInst().
|
inline |
Match an arbitrary immediate Constant and ignore it.
Definition at line 923 of file PatternMatch.h.
Referenced by AddParamAndFnBasicAttributes(), canAlwaysEvaluateInType(), canEvaluateShifted(), llvm::InstCombinerImpl::commonIDivRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpEqualityWithOffset(), foldICmpIntrinsicWithIntrinsic(), llvm::InstCombinerImpl::foldICmpOrConstant(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldReversedIntrinsicOperands(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldTwoEntryPHINode(), foldURemOfLoopIncrement(), llvm::InstCombinerImpl::foldVectorBinop(), getAlternateBinop(), getBinOpsForFactorization(), llvm::InstCombiner::getFreelyInvertedImpl(), isImpliedCondICmps(), reassociateMinMaxWithConstantInOperand(), reassociateMinMaxWithConstants(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpInst(), simplifyTernarylogic(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match an immediate Constant, capturing the value if we match.
Definition at line 940 of file PatternMatch.h.
References llvm::CallingConv::C.
|
inline |
Match a positive or negative infinity FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 720 of file PatternMatch.h.
Referenced by matchUnorderedInfCompare(), simplifyFAddInst(), simplifyFPOp(), and simplifyFSubInst().
|
inline |
Matches InsertElementInst.
Definition at line 1950 of file PatternMatch.h.
Referenced by canonicalizeInsertSplat(), cheapToScalarize(), foldIdentityExtractShuffle(), foldInsEltIntoSplat(), foldShuffleWithInsert(), foldTruncInsEltPair(), llvm::getSplatValue(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), matchSubIntegerPackFromVector(), simplifyShuffleVectorInst(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitPtrToInt().
|
inline |
Matches a single index InsertValue instruction.
Definition at line 3139 of file PatternMatch.h.
|
inline |
Match an instruction, capturing it if we match.
Definition at line 854 of file PatternMatch.h.
References I.
Referenced by analyzeCostOfVecReduction(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), detectShiftUntilZeroIdiom(), llvm::findHistogram(), foldFNegIntoConstant(), llvm::InstCombinerImpl::foldICmpAddConstant(), foldICmpInvariantGroup(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldLoadsRecursive(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectGEP(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), getAppleRuntimeUnrollPreferences(), getNegatibleInsts(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), llvm::SCEVExpander::hasRelatedExistingExpansion(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), isSignificantBitCheckWellFormed(), LinearizeExprTree(), lookThroughAnd(), RecurrenceInfo::matchConditionalRecurrence(), matchExpandedRem(), matchIncrement(), matchSubIntegerPackFromVector(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Match against the nested pattern, and capture the instruction if we match.
Definition at line 859 of file PatternMatch.h.
References I.
|
inline |
Definition at line 3149 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X))
Definition at line 2764 of file PatternMatch.h.
Referenced by llvm::AliasSetTracker::add(), llvm::canSinkOrHoistInst(), cheapToScalarize(), llvm::collectEphemeralRecipesForVPlan(), computeKnownFPClass(), computeKnownFPClassFromCond(), llvm::findValuesAffectedByCondition(), foldBitOrderCrossLogicOp(), foldCttzCtlz(), foldFCmpWithFloorAndCeil(), llvm::InstCombinerImpl::foldFMulReassoc(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpOfUAddOv(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldMinimumOverTrailingOrLeadingZeroCount(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), llvm::InstCombinerImpl::foldVectorBinop(), getBundleFromUse(), llvm::ARMTTIImpl::getGatherScatterOpCost(), getKnownTypeFromMaskedOp(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), getUnsignedMonotonicValues(), llvm::hoistRegion(), llvm::ARMTTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVEDupqLane(), instCombineSVESrshl(), instCombineSVEUzp1(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), isAllActivePredicate(), llvm::GCNTTIImpl::isAlwaysUniform(), isAMXCast(), llvm::isCheckForZeroAndMulWithOverflow(), isDeadRecipe(), llvm::isGuard(), llvm::isGuardAsWidenableBranch(), isImpliedToBeAPowerOfTwoFromCond(), llvm::ConstantPtrAuth::isKnownCompatibleWith(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), isPTruePromoted(), llvm::RecurrenceDescriptor::isRecurrenceInstr(), llvm::MemoryWriteTracking::isSpecialInstruction(), llvm::isWidenableCondition(), m_BitReverse(), m_BSwap(), m_c_Intrinsic(), m_CopySign(), m_Deinterleave2(), m_FAbs(), m_FCanonicalize(), m_FMaximum(), m_FMaximumNum(), m_FMaxNum(), m_FMinimum(), m_FMinimumNum(), m_FMinNum(), m_FShl(), m_FShr(), m_Interleave2(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_Intrinsic(), m_MaskedGather(), m_MaskedLoad(), m_Sqrt(), m_VecReverse(), m_VScale(), matchIncrement(), matchRdxBop(), matchStridedStart(), llvm::parseWidenableBranch(), processUse(), llvm::AssumptionCache::registerAssumption(), llvm::DropUnnecessaryAssumesPass::run(), setShiftFlags(), simplifyAndOrOfICmpsWithCtpop(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyExtractValueInst(), simplifyFCmpInst(), simplifyIntrinsic(), simplifyOrInst(), simplifyRecipe(), simplifySelectWithICmpCond(), simplifyUnaryIntrinsic(), simplifyWithOpsReplaced(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), llvm::AssumptionCacheTracker::verifyAnalysis(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitExtractValueInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitPtrToInt(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 2785 of file PatternMatch.h.
References m_Argument(), m_CombineAnd(), and m_Intrinsic().
|
inline |
Definition at line 2790 of file PatternMatch.h.
References m_Argument(), m_CombineAnd(), m_Intrinsic(), and T1.
|
inline |
Definition at line 2797 of file PatternMatch.h.
References m_Argument(), m_CombineAnd(), m_Intrinsic(), and T1.
|
inline |
Definition at line 2804 of file PatternMatch.h.
References m_Argument(), m_CombineAnd(), m_Intrinsic(), and T1.
|
inline |
Definition at line 2811 of file PatternMatch.h.
References m_Argument(), m_CombineAnd(), m_Intrinsic(), and T1.
|
inline |
Definition at line 2820 of file PatternMatch.h.
References m_Argument(), m_CombineAnd(), m_Intrinsic(), and T1.
|
inline |
Matches IntToPtr.
Definition at line 2190 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldPtrToIntOfGEP(), and llvm::InstCombinerImpl::visitPtrToInt().
|
inline |
Matches integer remainder operations.
Definition at line 1679 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldSelectZeroOrFixedOp(), isKnownNonNullFromDominatingCondition(), and llvm::InstCombinerImpl::SimplifyAddWithRemainder().
|
inline |
Matches LoadInst.
Definition at line 2044 of file PatternMatch.h.
Referenced by cheapToScalarize(), llvm::findHistogram(), foldToMaskedStore(), llvm::X86TTIImpl::getShuffleCost(), and llvm::AArch64TTIImpl::isProfitableToSinkOperands().
|
inline |
Matches L && R where L and R are arbitrary values.
Definition at line 3214 of file PatternMatch.h.
References m_LogicalAnd(), and m_Value().
Referenced by checkOrAndOpImpliedByOther(), collectHomogenousInstGraphLoopInvariants(), collectUnswitchCandidates(), llvm::VPWidenSelectRecipe::computeCost(), computeKnownBitsFromCond(), computeKnownFPClassFromCond(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), findBestNonTrivialUnswitchCandidate(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), hoistMinMax(), isImpliedCondAndOr(), llvm::isImpliedCondition(), isKnownNonNullFromDominatingCondition(), m_LogicalAnd(), optimizeLoopExitWithUnknownExitCount(), optimizeMaskToEVL(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), simplifyRecipe(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unswitchNontrivialInvariants(), unswitchTrivialBranch(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitXor().
|
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 3208 of file PatternMatch.h.
Referenced by removeCommonBlendMask(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), and unswitchTrivialBranch().
|
inline |
Matches either L && R or L || R where L and R are arbitrary values.
Definition at line 3252 of file PatternMatch.h.
References m_LogicalOp(), and m_Value().
Referenced by computeKnownBitsFromCond(), llvm::findValuesAffectedByCondition(), m_LogicalOp(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), and llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp().
Matches either L && R or L || R, either one being in the either binary or logical form.
Note that the latter form is poison-blocking.
Definition at line 3245 of file PatternMatch.h.
References LHS, m_CombineOr(), and RHS.
Referenced by m_c_LogicalOp().
|
inline |
Matches L || R where L and R are arbitrary values.
Definition at line 3232 of file PatternMatch.h.
References m_LogicalOr(), and m_Value().
Referenced by checkOrAndOpImpliedByOther(), collectHomogenousInstGraphLoopInvariants(), collectUnswitchCandidates(), llvm::VPWidenSelectRecipe::computeCost(), computeKnownBitsFromCond(), computeKnownFPClassFromCond(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), findBestNonTrivialUnswitchCandidate(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), hoistMinMax(), isImpliedCondAndOr(), llvm::isImpliedCondition(), m_LogicalOr(), optimizeLoopExitWithUnknownExitCount(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unswitchNontrivialInvariants(), unswitchTrivialBranch(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitXor().
|
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 3226 of file PatternMatch.h.
Referenced by llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), and unswitchTrivialBranch().
|
inline |
Matches logical shift operations.
Definition at line 1652 of file PatternMatch.h.
Referenced by collectBitParts(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), 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 665 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), llvm::PatternMatch::XorLike_match< LHS, RHS >::match(), processAnd(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::simplifyInstruction(), simplifySubInst(), simplifyXorInst(), llvm::stripNullTest(), llvm::InstCombinerImpl::visitAdd(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 668 of file PatternMatch.h.
|
inline |
Match an integer or vector with only the low bit(s) set.
For vectors, this includes constants with undefined elements.
Definition at line 675 of file PatternMatch.h.
Referenced by isMaskOrZero().
|
inline |
Definition at line 678 of file PatternMatch.h.
|
inline |
Definition at line 1312 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), dropRedundantMaskingOfLeftShiftInput(), foldBoxMultiply(), foldCttzCtlz(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), foldSelectICmpAndAnd(), foldSelectICmpLshrAshr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldTruncInsEltPair(), foldVecExtTruncToExtElt(), foldVecTruncToExtElt(), getBinOpsForFactorization(), haveNoCommonBitsSetSpecialCases(), llvm::GCNTTIImpl::isAlwaysUniform(), llvm::isKnownToBeAPowerOfTwo(), isTruePredicate(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchAndOrChain(), MatchDiv(), matchIntPart(), matchZExtedSubInteger(), simplifyAndInst(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOpOnLHS(), simplifyOrInst(), simplifyValueKnownNonZero(), llvm::stripNullTest(), llvm::InstCombinerImpl::takeLog2(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches lshr L, ConstShAmt or L itself (R will be set to zero in this case).
Definition at line 1350 of file PatternMatch.h.
References LHS.
Referenced by matchPartStore().
|
inline |
Matches MaskedGather Intrinsic.
Definition at line 2779 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Matches MaskedLoad Intrinsic.
Definition at line 2771 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Definition at line 2507 of file PatternMatch.h.
References LHS, m_CombineOr(), m_SMax(), m_SMin(), m_UMax(), m_UMin(), and RHS.
Referenced by llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldMinMaxSharedOp(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombiner::getFreelyInvertedImpl(), 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 530 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::visitAnd().
|
inline |
Definition at line 533 of file PatternMatch.h.
|
inline |
Definition at line 1240 of file PatternMatch.h.
Referenced by analyzeCostOfVecReduction(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), combinePMULH(), combineShiftToPMULH(), llvm::InstCombinerImpl::commonIDivTransforms(), foldBoxMultiply(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpWithZero(), foldReduceOperandViaVQDOT(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isNonEqualMul(), m_AnyMul(), matchBitmaskMul(), MatchMul(), matchPMADDWD_2(), matchVPMADD52(), processUse(), shouldCanonicalizeGEPToPtrAdd(), shouldSinkVScale(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOpOnLHS(), simplifyIRemMulShl(), tryToMatchAndCreateMulAccumulateReduction(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitShl(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Match an arbitrary NaN constant.
This includes quiet and signalling nans. For vectors, this includes constants with undefined elements.
Definition at line 704 of file PatternMatch.h.
Referenced by llvm::simplifyBinaryIntrinsic(), and simplifyFPOp().
|
inline |
Matches a 'Neg' as 'sub 0, V'.
Definition at line 2980 of file PatternMatch.h.
References m_Sub(), and m_ZeroInt().
Referenced by llvm::PatternMatch::Signum_match< Opnd_t >::match().
|
inline |
Match a integer or vector negated power-of-2.
For vectors, this includes constants with undefined elements.
Definition at line 619 of file PatternMatch.h.
Referenced by foldNegativePower2AndShiftedMask(), llvm::simplifyInstruction(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSDiv(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 622 of file PatternMatch.h.
|
inline |
Match a integer or vector negated power-of-2.
For vectors, this includes constants with undefined elements.
Definition at line 631 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), and isMaskOrZero().
|
inline |
Definition at line 635 of file PatternMatch.h.
|
inline |
Match an integer or vector of negative values.
For vectors, this includes constants with undefined elements.
Definition at line 542 of file PatternMatch.h.
Referenced by foldICmpXorXX(), llvm::simplifyBinaryIntrinsic(), simplifyShlInst(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitUDiv(), and llvm::InstCombinerImpl::visitURem().
|
inline |
Definition at line 545 of file PatternMatch.h.
|
inline |
Match a floating-point negative zero.
For vectors, this includes constants with undefined elements.
Definition at line 776 of file PatternMatch.h.
Referenced by llvm::ConstantFoldBinaryInstruction(), simplifyFAddInst(), simplifyFRemInst(), simplifyFSubInst(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 2240 of file PatternMatch.h.
Referenced by decompose(), m_SExtLike(), and llvm::InstCombinerImpl::visitGetElementPtrInst().
|
inline |
Match a non-infinity FP constant, i.e.
finite or NaN. For vectors, this includes constants with undefined elements.
Definition at line 727 of file PatternMatch.h.
|
inline |
Match a non-NaN FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 711 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 552 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), foldICmpWithLowBitMaskedVal(), getBinOpsForFactorization(), instCombineSVESrshl(), isImpliedCondICmps(), llvm::InstCombinerImpl::OptimizePointerDifference(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Definition at line 555 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 574 of file PatternMatch.h.
Referenced by isImpliedCondICmps().
|
inline |
Definition at line 577 of file PatternMatch.h.
|
inline |
Match a floating-point non-zero.
For vectors, this includes constants with undefined elements.
Definition at line 785 of file PatternMatch.h.
|
inline |
Match a floating-point non-zero that is not a denormal.
For vectors, this includes constants with undefined elements.
Definition at line 797 of file PatternMatch.h.
Referenced by hasNonZeroFPOperands().
|
inline |
Matches a 'Not' as 'xor V, -1' or 'xor -1, V'.
NOTE: we first match the 'Not' (by matching '-1'), and only then match the inner matcher!
Definition at line 2603 of file PatternMatch.h.
References m_AllOnes(), and m_c_Xor().
Referenced by llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match().
|
inline |
Definition at line 2610 of file PatternMatch.h.
References m_AllOnesForbidPoison(), and m_c_Xor().
Referenced by canonicalizeSaturatedAdd().
|
inline |
Definition at line 1392 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by decompose(), foldSelectICmpMinMax(), foldURemOfLoopIncrement(), hoistAdd(), isTruePredicate(), m_NSWAddLike(), trySimplifyICmpWithAdds(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Match either "add nsw" or "or disjoint".
Definition at line 1538 of file PatternMatch.h.
References LHS, m_CombineOr(), m_DisjointOr(), m_NSWAdd(), and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), foldNoWrapAdd(), isTruePredicate(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1416 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), decompose(), simplifyDiv(), simplifyICmpWithConstant(), simplifyRem(), llvm::InstCombinerImpl::visitAShr(), and llvm::InstCombinerImpl::visitLShr().
|
inline |
Matches a 'Neg' as 'sub nsw 0, V'.
Definition at line 2989 of file PatternMatch.h.
References m_NSWSub(), and m_ZeroInt().
Referenced by foldICmpXNegX(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitSDiv(), and llvm::InstCombinerImpl::visitSRem().
|
inline |
Definition at line 1424 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), decompose(), optimizeShiftInOrChain(), simplifyAShrInst(), simplifyRem(), llvm::InstCombinerImpl::visitAShr(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Definition at line 1408 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::computeOverflowForSignedSub(), decompose(), foldAbsDiff(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldSubOfMinMax(), getKnownSign(), getKnownSignOrZero(), hoistSub(), isImpliedCondICmps(), llvm::isKnownNegation(), m_NSWNeg(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Matches trunc nsw.
Definition at line 2217 of file PatternMatch.h.
Referenced by decompose(), and llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt().
|
inline |
Definition at line 1433 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by decompose(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), foldSelectICmpMinMax(), hoistAdd(), isRemOfLoopIncrementWithLoopInvariant(), and m_NUWAddLike().
|
inline |
Match either "add nuw" or "or disjoint".
Definition at line 1548 of file PatternMatch.h.
References LHS, m_CombineOr(), m_DisjointOr(), m_NUWAdd(), and RHS.
Referenced by canonicalizeGEPOfConstGEPI8(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), foldNoWrapAdd(), isTruePredicate(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1459 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), decompose(), getUnsignedMonotonicValues(), isMultipleOfN(), simplifyDiv(), simplifyICmpWithConstant(), simplifyRem(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitUDiv().
|
inline |
Definition at line 1467 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), decompose(), foldCttzCtlz(), foldICmpShlLHSC(), optimizeShiftInOrChain(), simplifyAndInst(), simplifyLShrInst(), simplifyRem(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitLShr().
|
inline |
Definition at line 1451 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by computeKnownBitsFromCmp(), llvm::computeOverflowForUnsignedSub(), decompose(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddLikeCommutative(), hoistSub(), simplifyXorInst(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitLShr().
|
inline |
Matches trunc nuw.
Definition at line 2210 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::PredicateBase::getConstraint(), llvm::isImpliedCondition(), and llvm::isImpliedCondition().
|
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 584 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), checkForNegativeOperand(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsFromOperator(), despeculateCountZeros(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), emitTransformedIndex(), foldAddSubBoolOfMaskedVal(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithPow2AndWithZero(), foldAnyOrAllBitsSet(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), foldICmpOfUAddOv(), llvm::InstCombinerImpl::foldICmpTruncConstant(), foldICmpWithHighBitMask(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldMulSelectToNegate(), foldMulShl1(), foldSelectICmpAndAnd(), foldSelectICmpMinMax(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), getRangeForIntrinsic(), handleOtherCmpSelSimplifications(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::Constant::isElementWiseEqual(), llvm::vputils::isHeaderMask(), llvm::isKnownToBeAPowerOfTwo(), isNeutralValue(), isRemOfLoopIncrementWithLoopInvariant(), isSignificantBitCheckWellFormed(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchAndOrChain(), matchSelectPattern(), llvm::LoopVectorizePass::processLoop(), replaceConditionalBranchesOnConstant(), reverseZExtICmpCombine(), llvm::simplifyBinaryIntrinsic(), simplifyExtractValueInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyMulInst(), simplifyOrInst(), simplifyRecipe(), simplifySelectInst(), simplifyValueKnownNonZero(), simplifyX86pmulh(), skipTrivialSelect(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitURem(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 80 of file PatternMatch.h.
References T.
Referenced by llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match().
|
inline |
Definition at line 1294 of file PatternMatch.h.
Referenced by checkForNegativeOperand(), collectBitParts(), combineAndNotOrIntoAndNotAnd(), combineOrAndToBitfieldInsert(), combineOrToBitfieldInsert(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), countToEliminateCompares(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpOrXorSubChain(), foldICmpWithLowBitMaskedVal(), foldMaskedMerge(), foldNotXor(), foldSetClearBits(), foldXorToXor(), llvm::InstCombiner::getFreelyInvertedImpl(), getUnsignedMonotonicValues(), isLoadCombineCandidateImpl(), isTruePredicate(), matchAndOrChain(), matchLogicBlend(), llvm::recognizeBSwapOrBitReverseIdiom(), simplifySelectBitTest(), simplifySelectWithICmpCond(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), 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 2522 of file PatternMatch.h.
|
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 2537 of file PatternMatch.h.
|
inline |
Match an 'ordered' or '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.
Definition at line 2580 of file PatternMatch.h.
References LHS, m_CombineOr(), and RHS.
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().
|
inline |
Match an 'ordered' or '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.
Definition at line 2593 of file PatternMatch.h.
References LHS, m_CombineOr(), and RHS.
Referenced by llvm::RecurrenceDescriptor::isMinMaxPattern(), and matchFastFloatClamp().
|
inline |
Match an arbitrary poison constant.
Definition at line 173 of file PatternMatch.h.
Referenced by canonicalizeInsertSplat(), collectShuffleElements(), collectSingleShuffleElements(), foldIdentityExtractShuffle(), foldInsEltIntoIdentityShuffle(), foldInsSequenceIntoSplat(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldTruncShuffle(), llvm::InstCombinerImpl::foldVectorBinop(), narrowVectorSelect(), llvm::InstCombinerImpl::simplifyBinOpSplats(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::InstCombinerImpl::visitFNeg(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Match a floating-point positive zero.
For vectors, this includes constants with undefined elements.
Definition at line 767 of file PatternMatch.h.
Referenced by foldSqrtWithFcmpZero(), simplifyAndOrOfFCmps(), 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 611 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromCmp(), foldAddToAshr(), llvm::InstCombinerImpl::foldICmpSRemConstant(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldSelectICmpAndBinOp(), foldSignedTruncationCheck(), llvm::isKnownToBeAPowerOfTwo(), isPowerOfTwoRecurrence(), simplifyAndInst(), simplifyICmpWithBinOp(), llvm::InstCombinerImpl::takeLog2(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitSDiv(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 612 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 644 of file PatternMatch.h.
Referenced by llvm::isKnownToBeAPowerOfTwo().
|
inline |
Definition at line 647 of file PatternMatch.h.
|
inline |
Matches GEP with i8 source element type.
Definition at line 2065 of file PatternMatch.h.
Referenced by canonicalizeGEPOfConstGEPI8(), simplifyCastInst(), and llvm::InstCombinerImpl::SimplifyDemandedUseBits().
|
inline |
Matches PtrToInt.
Definition at line 2177 of file PatternMatch.h.
Referenced by addValueAffectedByCondition(), llvm::InstCombinerImpl::foldICmpOrConstant(), isImpliedCondICmps(), isKnownNonZeroFromAssume(), llvm::simplifyBinaryIntrinsic(), simplifyCastInst(), simplifyGEPInst(), simplifySubInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 2182 of file PatternMatch.h.
References DL.
Referenced by computeKnownBitsFromCmp(), isKnownNonEqual(), llvm::InstCombinerImpl::visitIntToPtr(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1258 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddToAshr(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::FoldShiftByConstant(), MatchDiv(), simplifyDivRem(), simplifyGEPInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Matches SelectInst.
Definition at line 1920 of file PatternMatch.h.
References llvm::CallingConv::C, Cond, LHS, and RHS.
Referenced by annotateNonNullAndDereferenceable(), breakSelfRecursivePHI(), llvm::canConvertToMinOrMaxIntrinsic(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::VPlanTransforms::canonicalizeEVLLoops(), llvm::InstCombinerImpl::commonIDivRemTransforms(), llvm::VPPartialReductionRecipe::computeCost(), fixReductionScalarResumeWhenVectorizingEpilog(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), foldBitCastSelect(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBinOpWithConstantViaTruthTable(), foldMulSelectToNegate(), foldSelectGEP(), llvm::InstCombinerImpl::FoldShiftByConstant(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::RecurrenceDescriptor::isFindIVPattern(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isReductionCandidate(), isSignificantBitCheckWellFormed(), llvm::isSplatValue(), m_SelectCst(), matchBitmaskMul(), RecurrenceInfo::matchConditionalRecurrence(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), narrowVectorSelect(), optimizeMaskToEVL(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), simplifyAndInst(), simplifyOrInst(), simplifyRecipe(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), skipTrivialSelect(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractValueInst(), 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 1929 of file PatternMatch.h.
References llvm::CallingConv::C, Cond, m_ConstantInt(), and m_Select().
|
inline |
Matches SExt.
Definition at line 2229 of file PatternMatch.h.
Referenced by combineAnd(), llvm::InstCombinerImpl::commonShiftTransforms(), decompose(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), getBoolVecFromMask(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), m_SExtLike(), m_SExtOrSelf(), m_ZExtOrSExt(), matchPMADDWD_2(), matchSelectPattern(), narrowInsElt(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyRecipe(), simplifyShift(), simplifySRemInst(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), and llvm::InstCombinerImpl::visitURem().
|
inline |
Match either "sext" or "zext nneg".
Definition at line 2259 of file PatternMatch.h.
References m_CombineOr(), m_NNegZExt(), and m_SExt().
Referenced by foldLogicCastConstant(), foldNoWrapAdd(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 2252 of file PatternMatch.h.
References m_CombineOr(), and m_SExt().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), matchOrConcat(), llvm::InstCombinerImpl::simplifyRangeCheck(), and llvm::InstCombinerImpl::visitAnd().
|
inline |
Matches shift operations.
Definition at line 1637 of file PatternMatch.h.
Referenced by detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldCttzCtlz(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 507 of file PatternMatch.h.
Referenced by foldNegativePower2AndShiftedMask().
|
inline |
Definition at line 1306 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), combineAdd(), combineAddSubWithShlAddSub(), combineShlAddIAddImpl(), computeKnownBitsFromCmp(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), factorizeMathWithShlOps(), llvm::InstCombinerImpl::foldAddLikeCommutative(), llvm::InstCombinerImpl::foldAddWithConstant(), foldBoxMultiply(), foldCttzCtlz(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpWithHighBitMask(), foldICmpWithTruncSignExtendedVal(), foldIDivShl(), foldMulShl1(), foldSelectICmpAndZeroShl(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), getBinOpsForFactorization(), haveNoCommonBitsSetSpecialCases(), llvm::isKnownToBeAPowerOfTwo(), isLoadCombineCandidateImpl(), isNonEqualShl(), llvm::X86TTIImpl::isProfitableToSinkOperands(), MatchMul(), matchOrConcat(), matchZExtedSubInteger(), setShiftFlags(), shouldCanonicalizeGEPToPtrAdd(), shouldSinkVScale(), simplifyAndCommutative(), simplifyAndInst(), simplifyAShrInst(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyIRemMulShl(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyValueKnownNonZero(), splitMergedValStore(), llvm::InstCombinerImpl::takeLog2(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches shl L, ConstShAmt or L itself (R will be set to zero in this case).
Definition at line 1343 of file PatternMatch.h.
References LHS.
Referenced by foldLoadsRecursive(), and matchSubIntegerPackFromVector().
|
inline |
Matches logical shift operations.
Definition at line 1644 of file PatternMatch.h.
Referenced by computeKnownBitsFromCmp(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), optimizeBranch(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyShlInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitShl(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Matches ShuffleVectorInst independently of mask value.
Definition at line 2032 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::foldICmpBitCast(), foldIdentityExtractShuffle(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), llvm::getSplatValue(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), matchSubIntegerPackFromVector(), narrowVectorSelect(), llvm::InstCombinerImpl::simplifyBinOpSplats(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyReductionOperand(), and llvm::InstCombinerImpl::visitFNeg().
|
inline |
Definition at line 2038 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 656 of file PatternMatch.h.
Referenced by foldCopySignIdioms(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::isKnownToBeAPowerOfTwo(), isPowerOfTwoRecurrence(), simplifyAddInst(), simplifyICmpWithBinOp(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches a signum pattern.
signum(x) = x > 0 -> 1 x == 0 -> 0 x < 0 -> -1
Definition at line 3087 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpOrConstant(), and llvm::InstCombinerImpl::foldICmpTruncConstant().
|
inline |
Definition at line 2292 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBitCast(), and simplifyUnaryIntrinsic().
|
inline |
Definition at line 2478 of file PatternMatch.h.
Referenced by detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::RecurrenceDescriptor::isMinMaxPattern(), m_MaxOrMin(), matchClamp(), simplifyICmpWithMinMax(), tryToFPToSat(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 2484 of file PatternMatch.h.
Referenced by detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), 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 954 of file PatternMatch.h.
Referenced by addExitUsersForFirstOrderRecurrences(), breakSelfRecursivePHI(), canonicalizeAbs(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::VPlanTransforms::canonicalizeEVLLoops(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), checkOuterLoopInsts(), combineLogicBlendIntoConditionalNegate(), combineSelect(), combineShiftLeft(), combineShiftRightLogical(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromICmpCond(), computeKnownBitsFromOperator(), computeKnownFPClassFromCond(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), convertFSqrtDivIntoFMul(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), directlyImpliesPoison(), factorizeFAddFSub(), factorizeMathWithShlOps(), llvm::findHistogram(), fixReductionScalarResumeWhenVectorizingEpilog(), foldAbsDiff(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddToAshr(), foldAndOrOfICmpEqConstantAndICmp(), foldAndOrOfICmpsWithConstEq(), foldAndOrOfICmpsWithPow2AndWithZero(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBoxMultiply(), foldComplexAndOrPatterns(), foldCttzCtlz(), foldDependentIVs(), foldFCmpFNegCommonOp(), foldFCmpWithFloorAndCeil(), llvm::InstCombinerImpl::foldFMulReassoc(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrXX(), foldICmpPow2Test(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithLowBitMaskedVal(), foldICmpXorXX(), foldIDivShl(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldMinMaxSharedOp(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldOrToXor(), llvm::InstCombinerImpl::foldPowiReassoc(), foldSelectBinOpIdentity(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), foldSelectICmpMinMax(), foldSelectShuffleWith1Binop(), foldSelectZeroOrFixedOp(), foldSetClearBits(), foldSignedTruncationCheck(), foldSubOfMinMax(), foldToMaskedStore(), foldTruncInsEltPair(), foldUnsignedUnderflowCheck(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), foldXorToXor(), getBundleFromUse(), llvm::PredicateBase::getConstraint(), getFSqrtDivOptPattern(), getInvertibleOperands(), getOptimizableIVOf(), getRangeForSelectPattern(), haveNoCommonBitsSetSpecialCases(), llvm::ARMTTIImpl::instCombineIntrinsic(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), llvm::invertCondition(), isConditionalOnXorOfPHIs(), isConditionTrueViaVFAndUF(), isDivZero(), isEqualImpl(), llvm::RecurrenceDescriptor::isFindIVPattern(), llvm::vputils::isHeaderMask(), isImpliedCondICmps(), isImpliedToBeAPowerOfTwoFromCond(), llvm::ConstantPtrAuth::isKnownCompatibleWith(), llvm::isKnownInversion(), llvm::isKnownNegation(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), llvm::isKnownToBeAPowerOfTwo(), isNonEqualMul(), isNonEqualShl(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), isRemOfLoopIncrementWithLoopInvariant(), isSignificantBitCheckWellFormed(), isTruePredicate(), isUsedWithinShuffleVector(), lookThroughCast(), matchClamp(), matchExpandedRem(), matchFastFloatClamp(), matchICmpOperand(), matchMinMaxOfMinMax(), matchOpWithOpEqZero(), matchOrConcat(), matchSelectPattern(), matchSelectWithOptionalNotCond(), matchUAddWithOverflowConstantEdgeCases(), optimizeBranch(), optimizeMaskToEVL(), optimizeVectorInductionWidthForTCAndVFUF(), passingValueIsAlwaysUndefined(), processUse(), removeCommonBlendMask(), setLimitsForBinOp(), setShiftFlags(), shouldExpandCmpArithRMWInIR(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfFCmps(), simplifyAndOrOfICmpsWithCtpop(), simplifyAShrInst(), llvm::simplifyBinaryIntrinsic(), simplifyCmpSelOfMaxMin(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), simplifyFAddInst(), simplifyFDivInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithIntrinsicOnLHS(), llvm::simplifyInsertElementInst(), simplifyIntrinsic(), simplifyIRemMulShl(), simplifyLogicOfAddSub(), simplifyLShrInst(), simplifyMulInst(), simplifyOperationIntoSelectOperand(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), llvm::InstCombinerImpl::simplifyRangeCheck(), simplifyRecipe(), simplifyRem(), simplifySelectBitTest(), simplifySelectInst(), simplifySelectWithICmpCond(), simplifyShlInst(), simplifySubInst(), simplifySwitchOnSelectUsingRanges(), simplifyUnsignedRangeCheck(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), swapICmpOperandsToExposeCSEOpportunities(), trySimplifyICmpWithAdds(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), 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 1085 of file PatternMatch.h.
Referenced by foldGuardedFunnelShift().
|
inline |
Definition at line 1803 of file PatternMatch.h.
Referenced by foldOrUnsignedUMulOverflowICmp().
|
inline |
Definition at line 1821 of file PatternMatch.h.
Referenced by reassociateFCmps().
|
inline |
Match a specific floating point value or vector with all elements equal to the value.
Definition at line 997 of file PatternMatch.h.
Referenced by convertFSqrtDivIntoFMul(), llvm::InstCombinerImpl::foldFMulReassoc(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldSquareSumFP(), getFSqrtDivOptPattern(), m_FPOne(), simplifyUnaryIntrinsic(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFDiv(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Definition at line 1809 of file PatternMatch.h.
Referenced by fixReductionScalarResumeWhenVectorizingEpilog(), foldGuardedFunnelShift(), foldIsPowerOf2(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldSignedTruncationCheck(), llvm::X86TargetLowering::getJumpConditionMergingParams(), isConditionTrueViaVFAndUF(), matchOpWithOpEqZero(), processUse(), shouldExpandCmpArithRMWInIR(), simplifyOperationIntoSelectOperand(), llvm::stripNullTest(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Match a specific integer value or vector with all elements equal to the value.
Definition at line 1052 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedSubtract(), combineAdd(), combineSelect(), combineShiftLeft(), combineShiftRightArithmetic(), combineShiftRightLogical(), combineShiftToPMULH(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatUPattern(), FindSingleBitChange(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToUsubsat(), foldBoxMultiply(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpEquality(), foldInsEltIntoIdentityShuffle(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), llvm::InstCombinerImpl::foldSquareSumInt(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), isAddSubOrSubAdd(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), llvm::X86TTIImpl::isProfitableToSinkOperands(), isSignificantBitCheckWellFormed(), isSupportedMemset(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchOrConcat(), optimizeBranch(), preparePlanForEpilogueVectorLoop(), simplifyAndInst(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyGEPInst(), simplifyIntrinsic(), simplifyOrInst(), simplifySelectWithICmpCond(), simplifyShlInst(), splitMergedValStore(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 1056 of file PatternMatch.h.
|
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 692 of file PatternMatch.h.
References P.
Referenced by canNarrowShiftAmt(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), foldSelectICmpAndAnd(), foldSelectICmpLshrAshr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 1060 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqConstantAndICmp(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::FoldShiftByConstant(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSExt().
|
inline |
Definition at line 1064 of file PatternMatch.h.
|
inline |
Definition at line 2896 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::InstCombinerImpl::foldFMulReassoc(), foldSqrtWithFcmpZero(), getFSqrtDivOptPattern(), and simplifyFMAFMul().
|
inline |
Definition at line 1276 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::computeOverflowForSignedSub(), isDivZero(), MatchRem(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitSRem().
|
inline |
Matches StoreInst.
Definition at line 2051 of file PatternMatch.h.
Referenced by llvm::findHistogram(), and 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 562 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 565 of file PatternMatch.h.
|
inline |
Definition at line 1186 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedSubtract(), combineAdd(), combineBasicSADPattern(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::VPPartialReductionRecipe::computeCost(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), detectShiftUntilZeroIdiom(), llvm::findHistogram(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), foldAbsDiff(), llvm::InstCombinerImpl::foldAddLikeCommutative(), llvm::InstCombinerImpl::foldAddWithConstant(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrXorSubChain(), foldSubCtlzNot(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombiner::getFreelyInvertedImpl(), getKnownBitsFromAndXorOr(), getOptimizableIVOf(), haveNoCommonBitsSetSpecialCases(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isImpliedCondICmps(), llvm::isKnownNegation(), m_Neg(), matchExpandedRem(), matchIncrement(), optimizeBranch(), processUse(), shouldExpandCmpArithRMWInIR(), simplifyAddInst(), simplifyCastInst(), simplifyGEPInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithIntrinsicOnLHS(), simplifyLogicOfAddSub(), simplifyOrInst(), simplifySubInst(), simplifyUnsignedRangeCheck(), swapICmpOperandsToExposeCSEOpportunities(), tryToRecognizePopCount(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Matches Trunc.
Definition at line 2203 of file PatternMatch.h.
Referenced by addValueAffectedByCondition(), canAlwaysEvaluateInType(), collectBitParts(), computeKnownBitsFromCond(), computeKnownBitsFromICmpCond(), llvm::decomposeBitTest(), llvm::decomposeBitTestICmp(), dropRedundantMaskingOfLeftShiftInput(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldSignedTruncationCheck(), foldTruncInsEltPair(), llvm::InstCombiner::getFreelyInvertedImpl(), m_TruncOrSelf(), m_ZExtOrTruncOrSelf(), matchIntPart(), matchPartStore(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), reverseZExtICmpCombine(), simplifyRecipe(), simplifySubInst(), llvm::InstCombinerImpl::takeLog2(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 2223 of file PatternMatch.h.
References m_CombineOr(), and m_Trunc().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::visitAdd(), 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 2684 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::visitICmpInst().
|
inline |
Definition at line 1252 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), isTruePredicate(), MatchDiv(), simplifyDivRem(), simplifyICmpWithBinOpOnLHS(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitMul().
|
inline |
Definition at line 2287 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBitCast(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), simplifyICmpWithConstant(), simplifyUnaryIntrinsic(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Definition at line 2490 of file PatternMatch.h.
Referenced by combineBasicSADPattern(), llvm::InstCombinerImpl::foldAddWithConstant(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::RecurrenceDescriptor::isMinMaxPattern(), m_MaxOrMin(), matchClamp(), and simplifyICmpWithMinMax().
|
inline |
Definition at line 2496 of file PatternMatch.h.
Referenced by combineBasicSADPattern(), combineShiftRightArithmetic(), detectSSatUPattern(), detectUSatPattern(), detectUSatUPattern(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldSelectOpOp(), foldSubOfMinMax(), foldToUnsignedSaturatedAdd(), llvm::RecurrenceDescriptor::isMinMaxPattern(), m_MaxOrMin(), matchClamp(), processUse(), and simplifyICmpWithMinMax().
|
inline |
Definition at line 2335 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 165 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), combineTargetShuffle(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::ConstantFoldBinaryInstruction(), evaluateInDifferentElementOrder(), llvm::InstCombinerImpl::foldICmpBitCast(), foldIdentityPaddedShuffles(), foldInsEltIntoSplat(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectZeroOrFixedOp(), foldTruncInsEltPair(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::SimplifyQuery::isUndefValue(), likeBitCastFromVector(), markAliveBlocks(), llvm::Constant::mergeUndefsWith(), llvm::Constant::replaceUndefsWith(), shrinkInsertElt(), shrinkSplatShuffle(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyReductionOperand(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Match an arbitrary UndefValue constant.
Definition at line 168 of file PatternMatch.h.
|
inline |
Match an UndefValue, capturing the value if we match.
Definition at line 877 of file PatternMatch.h.
|
inline |
Match if the inner matcher does NOT match.
Definition at line 216 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpEquality(), getBundleFromUse(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match an arbitrary unary operation and ignore it.
Definition at line 108 of file PatternMatch.h.
Referenced by cheapToScalarize(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitExtractElementInst().
|
inline |
Definition at line 1140 of file PatternMatch.h.
References X.
|
inline |
Match a unary operator, capturing it if we match.
Definition at line 864 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 2553 of file PatternMatch.h.
|
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 2568 of file PatternMatch.h.
|
inline |
Definition at line 1270 of file PatternMatch.h.
Referenced by canScalarizeAccess(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::computeOverflowForUnsignedSub(), llvm::InstCombinerImpl::foldICmpWithZero(), isRemOfLoopIncrementWithLoopInvariant(), MatchRem(), and simplifyICmpWithBinOpOnLHS().
|
inline |
Match an arbitrary value and ignore it.
Definition at line 105 of file PatternMatch.h.
Referenced by addValueAffectedByCondition(), affectedValuesAreEphemeral(), analyzeCostOfVecReduction(), llvm::analyzeICmp(), annotateNonNullAndDereferenceable(), areExtractExts(), areExtractExts(), areExtractShuffleVectors(), breakSelfRecursivePHI(), canAlwaysEvaluateInType(), llvm::canConvertToMinOrMaxIntrinsic(), llvm::InstCombiner::canFreelyInvertAllUsersOf(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeGEPOfConstGEPI8(), canonicalizeInsertSplat(), canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), llvm::canPeelLastIteration(), canProveExitOnFirstIteration(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), canSafelyConvertTo16Bit(), canScalarizeAccess(), canShiftBinOpWithConstantRHS(), cheapToScalarize(), checkForNegativeOperand(), checkOrAndOpImpliedByOther(), collectBitParts(), collectUnswitchCandidatesWithInjections(), combineAdd(), combineAddSubWithShlAddSub(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndXorSubWithBMI(), combineBasicSADPattern(), combineCastedMaskArithmetic(), combineLogicBlendIntoConditionalNegate(), combineOrAndToBitfieldInsert(), combineOrToBitfieldInsert(), combinePMULH(), combineSCALAR_TO_VECTOR(), combineShiftRightArithmetic(), combineShiftToPMULH(), combineShlAddIAddImpl(), combineTargetShuffle(), combineXorToBitfieldInsert(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivRemTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), commuteSelect(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), computeKnownBitsFromOperator(), computeKnownFPClass(), computeKnownFPClassFromCond(), ComputeNumSignBitsImpl(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), countToEliminateCompares(), decompose(), llvm::decomposeBitTest(), llvm::decomposeBitTestICmp(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), detectUSatUPattern(), dropRedundantMaskingOfLeftShiftInput(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), llvm::findHistogram(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::findScalarElement(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), fixReductionScalarResumeWhenVectorizingEpilog(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddSubBoolOfMaskedVal(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithConstEq(), foldAndOrOfICmpsWithPow2AndWithZero(), foldAndToUsubsat(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBitOrderCrossLogicOp(), foldBoxMultiply(), foldClampRangeOfTwo(), foldComplexAndOrPatterns(), foldCopySignIdioms(), foldCtpop(), foldCttzCtlz(), foldFabsWithFcmpZero(), foldFCmpFNegCommonOp(), foldFDivConstantDividend(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBinOpWithConstantViaTruthTable(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpOfUAddOv(), foldICmpOrChain(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpOrXorSubChain(), foldICmpOrXX(), foldICmpPow2Test(), foldICmpShlLHSC(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), foldICmpXorXX(), foldIdentityExtractShuffle(), foldIDivShl(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldLoadsRecursive(), foldLogicCastConstant(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), foldMaskedMerge(), foldMinimumOverTrailingOrLeadingZeroCount(), foldMinMaxSharedOp(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNotXor(), foldNoWrapAdd(), foldOrOfInversions(), foldOrToXor(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), llvm::InstCombinerImpl::foldPtrToIntOfGEP(), foldReduceOperandViaVQDOT(), foldReductionIdiom(), llvm::InstCombinerImpl::foldReversedIntrinsicOperands(), foldSelectBinOpIdentity(), foldSelectGEP(), foldSelectICmpAndAnd(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectZeroOrFixedOp(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldShuffleOfUnaryOps(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldSqrtWithFcmpZero(), foldSubCtlzNot(), foldSubOfMinMax(), foldToMaskedStore(), foldToUnsignedSaturatedAdd(), foldTruncInsEltPair(), foldTruncShuffle(), foldTwoEntryPHINode(), foldUnsignedUnderflowCheck(), foldURemOfLoopIncrement(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVecExtTruncToExtElt(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), foldVecTruncToExtElt(), foldVSelectToSignBitSplatMask(), foldXorToXor(), getAppleRuntimeUnrollPreferences(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), getBinOpsForFactorization(), getBoolVecFromMask(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getComplexity(), getDomPredecessorCondition(), llvm::InstCombiner::getFreelyInvertedImpl(), getFSqrtDivOptPattern(), getHashValueImpl(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), getInvertibleOperands(), llvm::X86TargetLowering::getJumpConditionMergingParams(), getKnownBitsFromAndXorOr(), getKnownSign(), getKnownSignOrZero(), getMaskedTypeForICmpPair(), getNotValue(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::X86TTIImpl::getShuffleCost(), llvm::getSplatValue(), getUnsignedMonotonicValues(), haveNoCommonBitsSetSpecialCases(), hoistAdd(), hoistAddSub(), hoistInsEltConst(), hoistMinMax(), hoistSub(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVEDupqLane(), instCombineSVELast(), instCombineSVESrshl(), instCombineSVEUzp1(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), llvm::invertCondition(), isAllActivePredicate(), llvm::GCNTTIImpl::isAlwaysUniform(), isAMXCast(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isDivZero(), isEqualImpl(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), llvm::RecurrenceDescriptor::isFindIVPattern(), isImpliedCondAndOr(), isImpliedCondICmps(), llvm::isImpliedCondition(), llvm::isImpliedCondition(), isInstructionPairMul(), llvm::ConstantPtrAuth::isKnownCompatibleWith(), isKnownExactCastIntToFP(), llvm::isKnownInversion(), llvm::isKnownNegation(), isKnownNonEqual(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), llvm::isKnownToBeAPowerOfTwo(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineCandidate(), isLoadCombineCandidateImpl(), isMaskOrZero(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isMultipleOfN(), isNeg(), llvm::isOnlyUsedInZeroComparison(), isOperandOfVmullHighP64(), llvm::isProcessableCondBI(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::GCNTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), llvm::RecurrenceDescriptor::isRecurrenceInstr(), isReductionCandidate(), isRemOfLoopIncrementWithLoopInvariant(), isSignificantBitCheckWellFormed(), llvm::isSplatValue(), isTruePredicate(), isTruncateOf(), LinearizeExprTree(), lowerBUILD_VECTOR(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), m_c_Select(), m_LogicalAnd(), m_LogicalOp(), m_LogicalOr(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchAndOrChain(), matchBitmaskMul(), matchDeMorgansLaws(), MatchDiv(), matchesAdd(), matchesOr(), matchesSquareSum(), matchExpandedRem(), matchFPExtFromF16(), matchICmpOperand(), matchIntPart(), matchLogicBlend(), MatchMul(), matchOrConcat(), matchPartStore(), matchPMADDWD(), matchPMADDWD_2(), matchRdxBop(), MatchRem(), matchSelectWithOptionalNotCond(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), matchVPMADD52(), matchZExtedSubInteger(), moveAddAfterMinMax(), narrowInsElt(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), OptimizeAndOrXor(), optimizeLoopExitWithUnknownExitCount(), optimizeShiftInOrChain(), optimizeSymmetricCall(), parseCondition(), llvm::parseWidenableBranch(), passingValueIsAlwaysUndefined(), performAnyAllCombine(), performBitcastCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), reassociateFCmps(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::recognizeBSwapOrBitReverseIdiom(), recordCondition(), replaceSubOverflowUses(), reverseZExtICmpCombine(), setShiftFlags(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), ShouldBreakUpSubtract(), shouldCanonicalizeGEPToPtrAdd(), shouldExpandCmpArithRMWInIR(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), simplifyAddInst(), llvm::InstCombinerImpl::SimplifyAddWithRemainder(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrWithICmpEq(), simplifyAShrInst(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::simplifyBinOpSplats(), simplifyCastInst(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), simplifyExtractValueInst(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFNegInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithConstant(), simplifyICmpWithMinMax(), llvm::simplifyInstruction(), simplifyIntrinsic(), simplifyIRemMulShl(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), simplifyMulInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOperationIntoSelectOperand(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), simplifyReductionOperand(), simplifyRem(), simplifySelectInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithFCmp(), simplifySelectWithICmpCond(), simplifyShift(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySRemInst(), simplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), skipTrivialSelect(), splitMergedValStore(), llvm::stripNullTest(), stripSignOnlyFPOps(), llvm::InstCombinerImpl::takeLog2(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), trySimplifyICmpWithAdds(), tryToFPToSat(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::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::visitIntToPtr(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), 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 837 of file PatternMatch.h.
|
inline |
Match against the nested pattern, and capture the value if we match.
Definition at line 848 of file PatternMatch.h.
Match a value, capturing it if we match.
Definition at line 836 of file PatternMatch.h.
|
inline |
Match against the nested pattern, and capture the value if we match.
Definition at line 841 of file PatternMatch.h.
|
inline |
Definition at line 2907 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::InstCombinerImpl::foldReversedIntrinsicOperands(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), simplifyReductionOperand(), simplifyUnaryIntrinsic(), and llvm::InstCombinerImpl::visitFNeg().
|
inline |
Matches a call to llvm.vscale().
Definition at line 3145 of file PatternMatch.h.
References m_Intrinsic().
Referenced by areBothVScale(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::isKnownToBeAPowerOfTwo(), shouldSinkVScale(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 872 of file PatternMatch.h.
References I.
|
inline |
Match a with overflow intrinsic, capturing it if we match.
Definition at line 868 of file PatternMatch.h.
References I.
Referenced by directlyImpliesPoison(), dominatesMergePoint(), isKnownNonZeroFromOperator(), llvm::patchReplacementInstruction(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Definition at line 1300 of file PatternMatch.h.
Referenced by checkForNegativeOperand(), combineAndXorSubWithBMI(), combineXorToBitfieldInsert(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToUsubsat(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrXorSubChain(), foldNotXor(), foldOrToXor(), foldSubCtlzNot(), foldXorToXor(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::ARMTTIImpl::instCombineIntrinsic(), optimizeBranch(), simplifyAddInst(), simplifyAndInst(), simplifyGEPInst(), simplifyOrInst(), simplifyOrLogic(), simplifySubInst(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), 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 604 of file PatternMatch.h.
Referenced by areInverseVectorBitmasks(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeForInvariantConditionInjection(), canonicalizeICmpBool(), canonicalizeSaturatedSubtract(), cmpExcludesZero(), combineAdd(), combineTargetShuffle(), computeKnownBitsFromCmp(), llvm::ConstantFoldBinaryInstruction(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), detectSSatUPattern(), llvm::findValuesAffectedByCondition(), FlattenLoopPair(), foldAddSubBoolOfMaskedVal(), foldAndOrOfICmpsWithPow2AndWithZero(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpInvariantGroup(), foldICmpOrChain(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithZero(), foldIdentityExtractShuffle(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldReductionIdiom(), foldSelectICmpAndAnd(), foldSelectICmpAndZeroShl(), foldSelectZeroOrFixedOp(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), foldUnsignedUnderflowCheck(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), handleOtherCmpSelSimplifications(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::isCheckForZeroAndMulWithOverflow(), isMaskOrZero(), isNeutralValue(), llvm::isOnlyUsedInZeroComparison(), isTruncateOf(), lowerBUILD_VECTOR(), llvm::SDPatternMatch::m_Neg(), markAliveBlocks(), matchOpWithOpEqZero(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::OptimizePointerDifference(), performAnyAllCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), replaceConditionalBranchesOnConstant(), simplifyAddInst(), simplifyAndInst(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDivRem(), llvm::InstCombinerImpl::simplifyDivRemOfSelectWithZeroOp(), simplifyGEPInst(), simplifyICmpInst(), simplifyICmpOfBools(), simplifyICmpWithZero(), simplifyIntrinsic(), simplifyMulInst(), simplifyOrInst(), simplifySelectInst(), simplifySelectWithICmpCond(), simplifyShift(), simplifySubInst(), simplifyUnsignedRangeCheck(), simplifyWithOpsReplaced(), simplifyXorInst(), skipTrivialSelect(), llvm::stripNullTest(), tryToMoveFreeBeforeNullTest(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), and llvm::InstCombinerImpl::visitPHINode().
|
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 591 of file PatternMatch.h.
Referenced by m_Neg(), m_NSWNeg(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), and simplifyLdexp().
|
inline |
Matches ZExt.
Definition at line 2235 of file PatternMatch.h.
Referenced by canSafelyConvertTo16Bit(), collectBitParts(), combineAdd(), combineBasicSADPattern(), ComputeNumSignBitsImpl(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), decompose(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldLoadsRecursive(), foldLogicCastConstant(), foldNoWrapAdd(), foldSubCtlzNot(), llvm::GCNTTIImpl::instCombineIntrinsic(), isLoadCombineCandidateImpl(), m_ZExtOrSelf(), m_ZExtOrSExt(), m_ZExtOrTruncOrSelf(), matchOrConcat(), matchZExtedSubInteger(), narrowInsElt(), narrowUDivURem(), shouldSinkVScale(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOp(), splitMergedValStore(), llvm::stripNullTest(), llvm::InstCombinerImpl::takeLog2(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), visitORCommutative(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 2246 of file PatternMatch.h.
References m_CombineOr(), and m_ZExt().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::VPlanTransforms::canonicalizeEVLLoops(), dropRedundantMaskingOfLeftShiftInput(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 2266 of file PatternMatch.h.
References m_CombineOr(), m_SExt(), and m_ZExt().
Referenced by analyzeCostOfVecReduction(), areExtractExts(), areExtractExts(), canAlwaysEvaluateInType(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), haveNoCommonBitsSetSpecialCases(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), lookThroughCast(), m_ZExtOrSExtOrSelf(), matchOpWithOpEqZero(), simplifyRecipe(), tryToMatchAndCreateExtendedReduction(), tryToMatchAndCreateMulAccumulateReduction(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSwitchInst().
|
inline |
Definition at line 2274 of file PatternMatch.h.
References m_CombineOr(), and m_ZExtOrSExt().
Referenced by llvm::findHistogram(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 2282 of file PatternMatch.h.
References m_CombineOr(), m_Trunc(), and m_ZExt().
Referenced by isConditionalOnXorOfPHIs(), and isSignificantBitCheckWellFormed().
bool llvm::PatternMatch::match | ( | ArrayRef< int > | Mask, |
const Pattern & | P ) |
Definition at line 66 of file PatternMatch.h.
References P.
bool llvm::PatternMatch::match | ( | Val * | V, |
const Pattern & | P ) |
Definition at line 49 of file PatternMatch.h.
References P.
Referenced by llvm::AliasSetTracker::add(), addCanonicalIVRecipes(), AddParamAndFnBasicAttributes(), addValueAffectedByCondition(), analyzeCostOfVecReduction(), llvm::analyzeICmp(), annotateNonNullAndDereferenceable(), areBothVScale(), areExtractExts(), areExtractExts(), areExtractShuffleVectors(), areInverseVectorBitmasks(), bitTrackingDCE(), breakSelfRecursivePHI(), canAlwaysEvaluateInType(), llvm::canConvertToMinOrMaxIntrinsic(), canEvaluateShifted(), canEvaluateShiftedShift(), canEvaluateZExtd(), llvm::InstCombiner::canFreelyInvertAllUsersOf(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), canNarrowShiftAmt(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::VPlanTransforms::canonicalizeEVLLoops(), canonicalizeForInvariantConditionInjection(), canonicalizeGEPOfConstGEPI8(), canonicalizeICmpBool(), canonicalizeInsertSplat(), canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), canProveExitOnFirstIteration(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), canSafelyConvertTo16Bit(), canScalarizeAccess(), canShiftBinOpWithConstantRHS(), llvm::GCNTTIImpl::canSimplifyLegacyMulToMul(), llvm::canSinkOrHoistInst(), cheapToScalarize(), checkForNegativeOperand(), checkOrAndOpImpliedByOther(), checkOuterLoopInsts(), cloneForLane(), cmpExcludesZero(), collectBitParts(), llvm::collectEphemeralRecipesForVPlan(), collectHomogenousInstGraphLoopInvariants(), collectShuffleElements(), collectSingleShuffleElements(), collectUnswitchCandidates(), collectUnswitchCandidatesWithInjections(), combineAddSubWithShlAddSub(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivRemTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::BaseIndexOffset::computeAliasing(), llvm::VPPartialReductionRecipe::computeCost(), llvm::VPWidenSelectRecipe::computeCost(), computeKnownBits(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromICmpCond(), computeKnownBitsFromOperator(), computeKnownFPClass(), computeKnownFPClassFromCond(), ComputeNumSignBitsImpl(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::ConstantFoldBinaryInstruction(), convertFSqrtDivIntoFMul(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::VPlanTransforms::convertToConcreteRecipes(), decompose(), llvm::decomposeBitTest(), llvm::decomposeBitTestICmp(), despeculateCountZeros(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), directlyImpliesPoison(), dominatesMergePoint(), llvm::VPlanTransforms::dropPoisonGeneratingRecipes(), dropRedundantMaskingOfLeftShiftInput(), evaluateInDifferentElementOrder(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), findBestNonTrivialUnswitchCandidate(), llvm::findHistogram(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::findScalarElement(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), FlattenLoopPair(), foldAbsDiff(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqConstantAndICmp(), foldAndOrOfICmpsWithConstEq(), foldAndOrOfICmpsWithPow2AndWithZero(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBitwiseLogicWithIntrinsics(), foldBoxMultiply(), foldClampRangeOfTwo(), foldComplexAndOrPatterns(), foldConstantInsEltIntoShuffle(), foldCopySignIdioms(), foldCtpop(), foldCttzCtlz(), foldDependentIVs(), foldFabsWithFcmpZero(), foldFCmpFNegCommonOp(), foldFCmpFpTrunc(), foldFCmpFSubIntoFCmp(), llvm::InstCombinerImpl::foldFCmpIntToFPConst(), foldFCmpReciprocalAndZero(), foldFCmpWithFloorAndCeil(), foldFDivConstantDividend(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldFrexpOfSelect(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpAndShift(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBinOpWithConstantViaTruthTable(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpDivConstant(), llvm::InstCombinerImpl::foldICmpEqIntrinsicWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpEqualityWithOffset(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpIntrinsicWithIntrinsic(), foldICmpInvariantGroup(), llvm::InstCombinerImpl::foldICmpMulConstant(), foldICmpOfUAddOv(), foldICmpOrChain(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpOrXorSubChain(), foldICmpOrXX(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpShlConstant(), foldICmpShlLHSC(), llvm::InstCombinerImpl::foldICmpShrConstant(), llvm::InstCombinerImpl::foldICmpSRemConstant(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUDivConstant(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpUSubSatOrUAddSatWithConstant(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorConstant(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), foldICmpXorXX(), foldIdentityExtractShuffle(), foldIdentityPaddedShuffles(), foldIDivShl(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldInsSequenceIntoSplat(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldLoadsRecursive(), foldLogicCastConstant(), foldLogOpOfMaskedICmps(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), foldMinimumOverTrailingOrLeadingZeroCount(), foldMinMaxSharedOp(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNegativePower2AndShiftedMask(), foldNotXor(), foldNoWrapAdd(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldOrOfInversions(), foldOrToXor(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), llvm::InstCombinerImpl::foldPtrToIntOfGEP(), foldReductionIdiom(), llvm::InstCombinerImpl::foldReversedIntrinsicOperands(), foldSelectBinOpIdentity(), foldSelectGEP(), llvm::InstCombinerImpl::foldSelectICmp(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), foldSelectICmpMinMax(), llvm::InstCombinerImpl::foldSelectIntoOp(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldSelectZeroOrFixedOp(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftedShift(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldShuffleOfUnaryOps(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldSqrtWithFcmpZero(), foldSubOfMinMax(), foldToUnsignedSaturatedAdd(), foldTruncInsEltPair(), foldTruncShuffle(), foldTwoEntryPHINode(), foldUnsignedUnderflowCheck(), foldURemOfLoopIncrement(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVecExtTruncToExtElt(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), foldVecTruncToExtElt(), foldXorToXor(), llvm::VPTransformState::get(), llvm::ScalarEvolution::getAddExpr(), getAlternateBinop(), getAppleRuntimeUnrollPreferences(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), llvm::GCNTTIImpl::getArithmeticInstrCost(), getBinOpsForFactorization(), getBoolVecFromMask(), getBundleFromUse(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getComplexity(), llvm::PredicateBase::getConstraint(), getDemandedBitsLHSMask(), getDomPredecessorCondition(), llvm::ConstantExpr::getExactLogBase2(), llvm::InstCombiner::getFreelyInvertedImpl(), getFSqrtDivOptPattern(), llvm::ARMTTIImpl::getGatherScatterOpCost(), getHashValueImpl(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), getInvertibleOperands(), llvm::X86TargetLowering::getJumpConditionMergingParams(), getKnownBitsFromAndXorOr(), getKnownSign(), getKnownSignOrZero(), getKnownTypeFromMaskedOp(), getMaskedICmpType(), getMaskedTypeForICmpPair(), llvm::ScalarEvolution::getMulExpr(), getNegatibleInsts(), getNotValue(), getOptimizableIVOf(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), getRangeForIntrinsic(), getRangeForSelectPattern(), llvm::vputils::getRecipesForUncountableExit(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), llvm::slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::X86TTIImpl::getShuffleCost(), llvm::getSplatValue(), getStrideFromAddRec(), getStrideFromPointer(), llvm::ScalarEvolution::getUDivExpr(), getUnsignedMonotonicValues(), getValueFromOverflowCondition(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::VPlanTransforms::handleMaxMinNumReductions(), handleOtherCmpSelSimplifications(), llvm::VPlanTransforms::handleUncountableEarlyExit(), hasConditionalTerminator(), hasNonZeroFPOperands(), llvm::SCEVExpander::hasRelatedExistingExpansion(), haveNoCommonBitsSetSpecialCases(), hoistAdd(), hoistAddSub(), hoistInsEltConst(), hoistMinMax(), llvm::hoistRegion(), hoistSub(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombinePTrue(), instCombineST1ScatterIndex(), instCombineSVEDupqLane(), instCombineSVELast(), instCombineSVESrshl(), instCombineSVEUzp1(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), llvm::invertCondition(), isAllActivePredicate(), isAllocSiteRemovable(), llvm::SCEV::isAllOnesValue(), llvm::GCNTTIImpl::isAlwaysUniform(), isAMXCast(), llvm::RecurrenceDescriptor::isAnyOfPattern(), isBigEndianBitShift(), llvm::isCheckForZeroAndMulWithOverflow(), isConditionalOnXorOfPHIs(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isConditionTrueViaVFAndUF(), isDeadRecipe(), isDivZero(), llvm::Constant::isElementWiseEqual(), isEqualImpl(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), llvm::RecurrenceDescriptor::isFindIVPattern(), llvm::isGuard(), llvm::isGuardAsWidenableBranch(), llvm::vputils::isHeaderMask(), isImpliedCondAndOr(), isImpliedCondICmps(), llvm::isImpliedCondition(), llvm::isImpliedCondition(), isImpliedToBeAPowerOfTwoFromCond(), isInstructionPairMul(), llvm::ConstantPtrAuth::isKnownCompatibleWith(), isKnownExactCastIntToFP(), llvm::isKnownInversion(), llvm::isKnownNegation(), isKnownNonEqual(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), isKnownPredicateExtendIdiom(), IsKnownPredicateViaAddRecStart(), llvm::isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineCandidate(), isLoadCombineCandidateImpl(), isLoopNeverExecuted(), isMaskOrZero(), llvm::RecurrenceDescriptor::isMinMaxPattern(), isMultipleOfN(), isNeg(), isNeutralValue(), isNonEqualMul(), isNonEqualPHIs(), isNonEqualShl(), isNonZeroRecurrence(), llvm::SCEV::isOne(), isOneOrNegOne(), isOperandOfVmullHighP64(), isPoisonShift(), isPowerOfTwoRecurrence(), llvm::isProcessableCondBI(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::GCNTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), isPTruePromoted(), llvm::RecurrenceDescriptor::isRecurrenceInstr(), isReductionCandidate(), isRemOfLoopIncrementWithLoopInvariant(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), isSignedMinMaxClamp(), isSignedMinMaxIntrinsicClamp(), llvm::MemoryWriteTracking::isSpecialInstruction(), llvm::isSplatValue(), isSSATMinMaxPattern(), isSupportedMemset(), isTruePredicate(), llvm::SimplifyQuery::isUndefValue(), llvm::vputils::isUniformAcrossVFsAndUFs(), isUsedWithinShuffleVector(), llvm::isWidenableCondition(), llvm::SCEV::isZero(), likeBitCastFromVector(), LinearizeExprTree(), lookThroughAnd(), lookThroughCast(), lookThroughCastConst(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), maintainNoSignedWrap(), markAliveBlocks(), llvm::PatternMatch::XorLike_match< LHS, RHS >::match(), matchAndOrChain(), matchBitmaskMul(), matchClamp(), matchDeMorgansLaws(), MatchDiv(), matchesAdd(), matchesOr(), matchesSquareSum(), matchExpandedRem(), matchFastFloatClamp(), matchFPExtFromF16(), matchICmpOperand(), matchIncrement(), matchIntPart(), matchIsNotNaN(), matchMinMax(), matchMinMaxOfMinMax(), MatchMul(), matchOpWithOpEqZero(), matchOrConcat(), matchPartStore(), matchRdxBop(), MatchRem(), matchSelectPattern(), matchSelectWithOptionalNotCond(), matchStridedStart(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), matchUAddWithOverflowConstantEdgeCases(), matchUnorderedInfCompare(), matchZExtedSubInteger(), mayLoopAccessLocation(), llvm::Constant::mergeUndefsWith(), moveAddAfterMinMax(), narrowInsElt(), llvm::VPlanTransforms::narrowInterleaveGroups(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), OptimizeAndOrXor(), optimizeBranch(), optimizeEarlyExitInductionUser(), optimizeLatchExitInductionUser(), optimizeMaskToEVL(), llvm::InstCombinerImpl::OptimizePointerDifference(), optimizeShiftInOrChain(), optimizeSymmetricCall(), optimizeVectorInductionWidthForTCAndVFUF(), parseCondition(), llvm::parseWidenableBranch(), passingValueIsAlwaysUndefined(), llvm::patchReplacementInstruction(), preparePlanForEpilogueVectorLoop(), processAnd(), llvm::LoopVectorizePass::processLoop(), processUse(), reassociateFCmps(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), reassociateMinMaxWithConstants(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::recognizeBSwapOrBitReverseIdiom(), recordCondition(), llvm::AssumptionCache::registerAssumption(), llvm::VPlanTransforms::removeBranchOnConst(), removeCommonBlendMask(), replaceConditionalBranchesOnConstant(), replaceSubOverflowUses(), llvm::VPlanTransforms::replaceSymbolicStrides(), llvm::Constant::replaceUndefsWith(), llvm::DropUnnecessaryAssumesPass::run(), setLimitsForBinOp(), setShiftFlags(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), ShouldBreakUpSubtract(), shouldCanonicalizeGEPToPtrAdd(), shouldExpandCmpArithRMWInIR(), shouldSinkVScale(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), ShrinkDemandedConstant(), shrinkInsertElt(), shrinkSplatShuffle(), simplifyAddInst(), llvm::InstCombinerImpl::SimplifyAddWithRemainder(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfFCmps(), simplifyAndOrOfFCmpsWithConstants(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrWithICmpEq(), simplifyAShrInst(), simplifyAssocCastAssoc(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::simplifyBinOpSplats(), simplifyBlends(), simplifyBranchConditionForVFAndUF(), simplifyCastInst(), simplifyCmpSelOfMaxMin(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), llvm::InstCombinerImpl::simplifyDivRemOfSelectWithZeroOp(), simplifyExtractValueInst(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFNegInst(), simplifyFPOp(), simplifyFRemInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpInst(), simplifyICmpOfBools(), llvm::ScalarEvolution::SimplifyICmpOperands(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithConstant(), simplifyICmpWithIntrinsicOnLHS(), simplifyICmpWithMinMax(), simplifyICmpWithZero(), llvm::simplifyInsertElementInst(), llvm::simplifyInstruction(), simplifyInstructionWithPHI(), simplifyIntrinsic(), simplifyIRemMulShl(), simplifyLdexp(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), simplifyMulInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOperationIntoSelectOperand(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), llvm::InstCombinerImpl::simplifyRangeCheck(), simplifyRecipe(), simplifyReductionOperand(), simplifyRem(), simplifySelectBitTest(), simplifySelectInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithFCmp(), simplifySelectWithICmpCond(), simplifyShift(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySRemInst(), simplifySubInst(), simplifySVEIntrinsic(), simplifySwitchOnSelectUsingRanges(), simplifyTernarylogic(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyWithOpsReplaced(), simplifyX86addcarry(), simplifyX86pmulh(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), skipTrivialSelect(), splitMergedValStore(), llvm::stripNullTest(), stripSignOnlyFPOps(), swapICmpOperandsToExposeCSEOpportunities(), llvm::InstCombinerImpl::takeLog2(), transformRecipestoEVLRecipes(), llvm::VPlanTransforms::truncateToMinimalBitwidths(), tryFactorization(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), trySimplifyICmpWithAdds(), tryToFPToSat(), tryToMatchAndCreateExtendedReduction(), tryToMatchAndCreateMulAccumulateReduction(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), tryToReplaceALMWithWideALM(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unswitchNontrivialInvariants(), unswitchTrivialBranch(), llvm::AssumptionCacheTracker::verifyAnalysis(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::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::visitIntToPtr(), 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().
MatchFunctor< Val, Pattern > llvm::PatternMatch::match_fn | ( | const Pattern & | P | ) |
A match functor that can be used as a UnaryPredicate in functional algorithms like all_of.
Definition at line 62 of file PatternMatch.h.
References P.
Referenced by affectedValuesAreEphemeral(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), llvm::isOnlyUsedInZeroComparison(), planContainsAdditionalSimplifications(), simplifyGEPInst(), simplifyRecipe(), and llvm::InstCombinerImpl::visitSub().