|
LLVM 24.0.0git
|
Classes | |
| struct | AllowFmf_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_const_intval_ty |
| struct | bind_immconstant_ty |
| struct | BinOpPred_match |
| struct | br_match |
| struct | brc_match |
| struct | CastInst_match |
| struct | CastOperator_match |
| struct | CmpClass_match |
| struct | CommutativeBinaryIntrinsic_match |
| struct | constantint_match |
| struct | ContainsMatchingVectorElement_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 | DisjointOr_match |
| struct | ElementWiseBitCast_match |
| struct | Exact_match |
| struct | ExtractValue_match |
| struct | FMaxMin_match |
| struct | FNeg_match |
| struct | icmp_pred_with_threshold |
| struct | ICmpLike_match |
| struct | immconstant_ty |
| struct | InsertValue_match |
| Matcher for a single index InsertValue instruction. More... | |
| struct | IntrinsicID_match |
| Intrinsic matchers. More... | |
| struct | IntrinsicIDs_match |
| Match intrinsic calls with any of the given IDs. More... | |
| struct | IntrinsicMatchImpl |
| 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_int |
| 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_signed_inf |
| struct | is_strictlypositive |
| struct | is_zero |
| struct | is_zero_int |
| struct | LoadSimple_match |
| Matches a simple (non-volatile, non-atomic) LoadInst. More... | |
| struct | LogicalOp_match |
| struct | m_Mask |
| struct | m_SpecificMask |
| struct | m_SplatMask |
| struct | m_SplatOrPoisonMask |
| struct | m_ZeroMask |
| struct | match_immconstant_ty |
| 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 | SelectLike_match |
| struct | ShiftLike_match |
| struct | Shuffle_match |
| Matches shuffle. More... | |
| struct | Signum_match |
| 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 | SpecificType_match |
| struct | specificval_ty |
| Matcher for specified Value*. More... | |
| struct | Splat_match |
| 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 | 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> | |
| auto | 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> | |
| AllowFmf_match< T, FastMathFlags::AllowReassoc > | m_AllowReassoc (const T &SubPattern) |
| template<typename T> | |
| AllowFmf_match< T, FastMathFlags::AllowReciprocal > | m_AllowReciprocal (const T &SubPattern) |
| template<typename T> | |
| AllowFmf_match< T, FastMathFlags::AllowContract > | m_AllowContract (const T &SubPattern) |
| template<typename T> | |
| AllowFmf_match< T, FastMathFlags::ApproxFunc > | m_ApproxFunc (const T &SubPattern) |
| template<typename T> | |
| AllowFmf_match< T, FastMathFlags::NoNaNs > | m_NoNaNs (const T &SubPattern) |
| template<typename T> | |
| AllowFmf_match< T, FastMathFlags::NoInfs > | m_NoInfs (const T &SubPattern) |
| template<typename T> | |
| AllowFmf_match< T, FastMathFlags::NoSignedZeros > | m_NoSignedZeros (const T &SubPattern) |
| auto | m_Value () |
| Match an arbitrary value and ignore it. | |
| auto | m_UnOp () |
| Match an arbitrary unary operation and ignore it. | |
| auto | m_BinOp () |
| Match an arbitrary binary operation and ignore it. | |
| auto | m_Cmp () |
| Matches any compare instruction and ignore it. | |
| auto | m_AnyIntrinsic () |
| Matches any intrinsic call and ignore it. | |
| auto | m_Undef () |
| Match an arbitrary undef constant. | |
| auto | m_UndefValue () |
| Match an arbitrary UndefValue constant. | |
| auto | m_Poison () |
| Match an arbitrary poison constant. | |
| auto | m_Constant () |
| Match an arbitrary Constant and ignore it. | |
| auto | m_ConstantInt () |
| Match an arbitrary ConstantInt and ignore it. | |
| auto | m_ConstantFP () |
| Match an arbitrary ConstantFP and ignore it. | |
| template<typename SPTy> | |
| ContainsMatchingVectorElement_match< SPTy > | m_ContainsMatchingVectorElement (const SPTy &SubPattern) |
| Match a vector constant where at least one of its elements matches the subpattern. | |
| auto | m_ConstantExpr () |
| Match a constant expression or a constant that contains a constant expression. | |
| template<typename T> | |
| Splat_match< T > | m_Splat (const T &SubPattern) |
| Match a vector splat. | |
| auto | m_BasicBlock () |
| Match an arbitrary basic block value and ignore it. | |
| 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 () |
| auto | m_AllOnesOrPoison () |
| 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. | |
| cst_pred_ty< is_non_zero_int > | m_NonZeroInt () |
| Match a non-zero integer or a vector with all non-zero elements. | |
| is_zero< true > | m_Zero () |
| Match any null constant or a vector with all elements equal to 0. | |
| is_zero< false > | m_ZeroForbidPoison () |
| auto | m_ZeroOrPoison () |
| 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. | |
| cst_pred_ty< icmp_pred_with_threshold, false > | m_SpecificInt_ICMP_ForbidPoison (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_signed_inf< false > > | m_PosInf () |
| Match a positive infinity FP constant. | |
| cstfp_pred_ty< is_signed_inf< true > > | m_NegInf () |
| Match a 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. | |
| match_bind< Value > | m_Value (Value *&V) |
| Match a value, capturing it if we match. | |
| match_bind< const Value > | m_Value (const Value *&V) |
| template<typename Pattern> | |
| auto | m_Value (Value *&V, const Pattern &P) |
| Match against the nested pattern, and capture the value if we match. | |
| template<typename Pattern> | |
| auto | m_Value (const Value *&V, const Pattern &P) |
| Match against the nested pattern, and capture the value if we match. | |
| match_bind< Instruction > | m_Instruction (Instruction *&I) |
| Match an instruction, capturing it if we match. | |
| match_bind< const Instruction > | m_Instruction (const Instruction *&I) |
| template<typename Pattern> | |
| auto | m_Instruction (Instruction *&I, const Pattern &P) |
| Match against the nested pattern, and capture the instruction if we match. | |
| template<typename Pattern> | |
| auto | m_Instruction (const Instruction *&I, const Pattern &P) |
| match_bind< UnaryOperator > | m_UnOp (UnaryOperator *&I) |
| Match a unary operator, capturing it if we match. | |
| match_bind< const UnaryOperator > | m_UnOp (const UnaryOperator *&I) |
| match_bind< BinaryOperator > | m_BinOp (BinaryOperator *&I) |
| Match a binary operator, capturing it if we match. | |
| match_bind< const BinaryOperator > | m_BinOp (const BinaryOperator *&I) |
| match_bind< IntrinsicInst > | m_AnyIntrinsic (IntrinsicInst *&I) |
| Match any intrinsic call, capturing it if we match. | |
| match_bind< const IntrinsicInst > | m_AnyIntrinsic (const IntrinsicInst *&I) |
| match_bind< WithOverflowInst > | m_WithOverflowInst (WithOverflowInst *&I) |
| Match a with overflow intrinsic, capturing it if we match. | |
| match_bind< const WithOverflowInst > | m_WithOverflowInst (const WithOverflowInst *&I) |
| match_bind< PHINode > | m_Phi (PHINode *&PN) |
| Match a PHI node, capturing it if we match. | |
| match_bind< UndefValue > | m_UndefValue (UndefValue *&U) |
| Match an UndefValue, capturing the value if we match. | |
| match_bind< Constant > | m_Constant (Constant *&C) |
| Match a Constant, capturing the value if we match. | |
| match_bind< ConstantInt > | m_ConstantInt (ConstantInt *&CI) |
| Match a ConstantInt, capturing the value if we match. | |
| match_bind< ConstantFP > | m_ConstantFP (ConstantFP *&C) |
| Match a ConstantFP, capturing the value if we match. | |
| match_bind< ConstantExpr > | m_ConstantExpr (ConstantExpr *&C) |
| Match a ConstantExpr, capturing the value if we match. | |
| match_bind< BasicBlock > | m_BasicBlock (BasicBlock *&V) |
| Match a basic block value, capturing it if we match. | |
| match_bind< 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. | |
| match_deferred< 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. | |
| match_deferred< 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. | |
| match_deferred< BasicBlock > | m_Deferred (BasicBlock *const &BB) |
| A commutative-friendly version of m_Specific(). | |
| match_deferred< const BasicBlock > | m_Deferred (const BasicBlock *const &BB) |
| template<typename Pattern> | |
| SpecificType_match (const Type *, const Pattern &) -> SpecificType_match< Pattern > | |
| template<typename Pattern> | |
| auto | m_SpecificType (Type *RefTy, const Pattern &P) |
| Match a value of a specific type. | |
| auto | m_SpecificType (Type *RefTy) |
| auto | m_SpecificType (Type *RefTy, Value *&V) |
| Match a value of a specific type, capturing it if we match. | |
| auto | m_SpecificType (Type *RefTy, const Value *&V) |
| 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 OpTy> | |
| LoadSimple_match< OpTy > | m_LoadSimple (const OpTy &Op) |
| 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::PtrToAddr > | m_PtrToAddr (const OpTy &Op) |
| Matches PtrToAddr. | |
| template<typename OpTy> | |
| auto | m_PtrToIntOrAddr (const OpTy &Op) |
| Matches PtrToInt or PtrToAddr. | |
| 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> | |
| auto | m_ZExtOrTruncOrSelf (const OpTy &Op) |
| template<typename LHS, typename RHS> | |
| ICmpLike_match< LHS, RHS > | m_ICmpLike (CmpPredicate &Pred, const LHS &L, const RHS &R) |
| template<typename CondTy, typename LTy, typename RTy> | |
| SelectLike_match< CondTy, LTy, RTy > | m_SelectLike (const CondTy &C, const LTy &TrueC, const RTy &FalseC) |
| Matches a value that behaves like a boolean-controlled select, i.e. | |
| 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> | |
| match_combine_or< CastInst_match< OpTy, UIToFPInst >, CastInst_match< OpTy, SIToFPInst > > | m_IToFP (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> | |
| match_combine_or< CastInst_match< OpTy, FPToUIInst >, CastInst_match< OpTy, FPToSIInst > > | m_FPToI (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, match_bind< BasicBlock >, match_bind< 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> | |
| FMaxMin_match< 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> | |
| FMaxMin_match< 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> | |
| FMaxMin_match< 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> | |
| FMaxMin_match< 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< FMaxMin_match< LHS, RHS, ofmax_pred_ty >, FMaxMin_match< 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< FMaxMin_match< LHS, RHS, ofmin_pred_ty >, FMaxMin_match< 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, typename... Ts> | |
| auto | m_Intrinsic (const Ts &...Ops) |
| Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X)) | |
| template<Intrinsic::ID... IntrIDs> | |
| IntrinsicIDs_match< IntrIDs... > | m_AnyIntrinsic () |
| Match intrinsic calls with any of the given IDs like this: m_AnyIntrinsic<Intrinsic::fptosi_sat, Intrinsic::fptoui_sat>() This is more efficient than using nested m_CombineOr with m_Intrinsic because it performs the CallInst/Function cast only once. | |
| template<typename Opnd0, typename Opnd1, typename Opnd2> | |
| auto | m_MaskedLoad (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2) |
| Matches MaskedLoad Intrinsic. | |
| template<typename Opnd0, typename Opnd1, typename Opnd2> | |
| auto | m_MaskedStore (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2) |
| Matches MaskedStore Intrinsic. | |
| template<typename Opnd0, typename Opnd1, typename Opnd2> | |
| auto | m_MaskedGather (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2) |
| Matches MaskedGather Intrinsic. | |
| template<typename Opnd0> | |
| auto | m_BitReverse (const Opnd0 &Op0) |
| template<typename Opnd0> | |
| auto | m_BSwap (const Opnd0 &Op0) |
| template<typename Opnd0> | |
| auto | m_Ctpop (const Opnd0 &Op0) |
| template<typename Opnd0> | |
| auto | m_FAbs (const Opnd0 &Op0) |
| template<typename Opnd0> | |
| auto | m_FCanonicalize (const Opnd0 &Op0) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_Ctlz (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_Cttz (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_SMax (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_SMin (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_UMax (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_UMin (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_MaxOrMin (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_FMinNum (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_FMinimum (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_FMinimumNum (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_FMaxNum (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_FMaximum (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_FMaximumNum (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_FMaxNum_or_FMaximumNum (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_FMinNum_or_FMinimumNum (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0, typename Opnd1, typename Opnd2> | |
| auto | m_FShl (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2) |
| template<typename Opnd0, typename Opnd1, typename Opnd2> | |
| auto | m_FShr (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2) |
| template<typename Opnd0> | |
| auto | m_Sqrt (const Opnd0 &Op0) |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_CopySign (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd0> | |
| auto | m_VecReverse (const Opnd0 &Op0) |
| template<typename Opnd0, typename Opnd1, typename Opnd2> | |
| auto | m_VectorInsert (const Opnd0 &Op0, const Opnd1 &Op1, const Opnd2 &Op2) |
| 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> | |
| CmpClass_match< LHS, RHS, CmpInst, true > | m_c_Cmp (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<Intrinsic::ID IntrID, typename T0, typename T1> | |
| CommutativeBinaryIntrinsic_match< IntrID, T0, T1 > | m_c_Intrinsic (const T0 &Op0, const T1 &Op1) |
| template<typename LHS, typename RHS> | |
| auto | m_c_SMin (const LHS &L, const RHS &R) |
| Matches an SMin with LHS and RHS in either order. | |
| template<typename LHS, typename RHS> | |
| auto | m_c_SMax (const LHS &L, const RHS &R) |
| Matches an SMax with LHS and RHS in either order. | |
| template<typename LHS, typename RHS> | |
| auto | m_c_UMin (const LHS &L, const RHS &R) |
| Matches a UMin with LHS and RHS in either order. | |
| template<typename LHS, typename RHS> | |
| auto | m_c_UMax (const LHS &L, const RHS &R) |
| Matches a UMax with LHS and RHS in either order. | |
| template<typename LHS, typename RHS> | |
| auto | m_c_MaxOrMin (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOp_match< LHS, RHS, Instruction::FAdd, true > | m_c_FAdd (const LHS &L, const RHS &R) |
| Matches FAdd with LHS and RHS in either order. | |
| 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. | |
| auto | m_VScale () |
| Matches a call to llvm.vscale(). | |
| template<typename Opnd0, typename Opnd1> | |
| auto | m_Interleave2 (const Opnd0 &Op0, const Opnd1 &Op1) |
| template<typename Opnd> | |
| auto | 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 389 of file PatternMatch.h.
| using llvm::PatternMatch::cstfp_pred_ty |
specialization of cstval_pred_ty for ConstantFP
Definition at line 393 of file PatternMatch.h.
|
inline |
Definition at line 1219 of file PatternMatch.h.
Referenced by canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), canonicalizeSaturatedSubtractUnsigned(), checkForNegativeOperand(), combineAdd(), combineAddMulh(), combineAddOfExts(), combinePExtWideningAddAcc(), combinePExtWideningSubAcc(), combineRecipe(), combineShlAddIAddImpl(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::VPlanTransforms::convertEVLExitCond(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), createWidenInductionRecipe(), detectPMADDUBSW(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::findHistogram(), llvm::findScalarElement(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqConstantAndICmp(), foldAndToUsubsat(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldICmpWithHighBitMask(), foldMaskedAddXorPattern(), foldMulHigh(), foldMulShl1(), foldSelectICmpMinMax(), foldSignedTruncationCheck(), llvm::VPlanTransforms::foldTailByMasking(), foldToUnsignedSaturatedAdd(), llvm::InstCombiner::getFreelyInvertedImpl(), getKnownBitsFromAndXorOr(), llvm::slpvectorizer::getScalarMaxValue(), llvm::vputils::getSCEVExprForVPValue(), hoistSubAddAssociation(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isKnownMonotonic(), isKnownNonPositive(), llvm::isKnownToBeAPowerOfTwo(), isMaskOrZero(), m_AddLike(), m_AnyAdd(), deinterleaving_tbl_match::match(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), llvm::matchCountableExitCondition(), matchIncrement(), matchPMADDWD(), matchPMADDWD_2(), matchPopCountBytes(), matchUAddWithOverflowConstantEdgeCases(), matchVPMADD52(), moveAddAfterMinMax(), llvm::VPlanTransforms::narrowInterleaveGroups(), optimizeBranch(), performAddTruncShiftCombine(), performLastTrueTestVectorCombine(), reassociateAddSubLong(), llvm::LoopVectorizationPlanner::selectBestEpiloguePlan(), ShouldBreakUpDistribution(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyBranchConditionForVFAndUF(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyOrOfICmpsWithAdd(), simplifySubInst(), llvm::InstCombinerImpl::takeLog2(), 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::visitTrunc(), llvm::InstCombinerImpl::visitURem(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match either "add" or "or disjoint".
Definition at line 1573 of file PatternMatch.h.
References LHS, m_Add(), llvm::PatternMatchHelpers::m_CombineOr(), m_DisjointOr(), and RHS.
Referenced by canonicalizeGEPOfConstGEPI8(), computeKnownBitsFromCmp(), decomposeImpl(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldICmpBinOp(), foldReduceOperandViaVDOT4A(), foldSelectSplitCTLZ(), foldSelectSplitCTTZ(), 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 509 of file PatternMatch.h.
Referenced by m_AllOnesOrPoison(), and m_Not().
|
inline |
Definition at line 513 of file PatternMatch.h.
Referenced by m_NotForbidPoison().
|
inline |
Definition at line 517 of file PatternMatch.h.
References m_AllOnes(), llvm::PatternMatchHelpers::m_CombineOr(), and m_Poison().
|
inline |
Definition at line 109 of file PatternMatch.h.
References T.
Referenced by getFusableFMulOperand(), isFMulAddCandidate(), isFusableFMulOperand(), and llvm::X86TTIImpl::isLegalAltInstr().
|
inline |
Definition at line 97 of file PatternMatch.h.
References T.
Referenced by llvm::InstCombinerImpl::foldFMulReassoc(), llvm::InstCombinerImpl::foldPowiReassoc(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Definition at line 103 of file PatternMatch.h.
References T.
|
inline |
Definition at line 1333 of file PatternMatch.h.
Referenced by canScalarizeAccess(), checkForNegativeOperand(), collectBitParts(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndOnGF2P8AFFINEQBOperand(), combineAndXorSubWithBMI(), combineBTToBitOpFlag(), combineMaskBitOp(), combineNarrowableShiftedLoad(), combineOrAndToBitfieldInsert(), combineOrOfSetCCToUSUBOCarry(), combineSetCC(), combineXorToBitfieldInsert(), computeKnownBitsFromCmp(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), countToEliminateCompares(), llvm::decomposeBitTestICmp(), EmitCmp(), llvm::findValuesAffectedByCondition(), foldAddSubBoolOfMaskedVal(), foldAddToAshr(), foldAndToUsubsat(), foldAnyOrAllBitsSet(), foldBoxMultiply(), foldCopySignIdioms(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldICmpWithLowBitMaskedVal(), foldMaskedAddXorPattern(), foldMaskedMerge(), foldMulHigh(), foldNotXor(), foldOrOfInversions(), foldOrToXor(), foldRoundUpToPow2Alignment(), foldSelectICmpAndAnd(), foldSelectICmpAndZeroShl(), foldSetClearBits(), foldSubCtlzNot(), foldXorToXor(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::SystemZTargetLowering::getJumpConditionMergingParams(), getMaskedTypeForICmpPair(), llvm::slpvectorizer::getScalarMaxValue(), getShlAddShlAdd(), haveNoCommonBitsSetSpecialCases(), llvm::slpvectorizer::CmpSamePredicateHelper::isBitTest(), isImpliedCondICmps(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), isRightShiftBitTestKnownToTerminate(), lookThroughAnd(), LowerAndToBT(), matchAndOrChain(), matchBitmaskMul(), matchLogicBlend(), matchPopCountBytes(), MatchRem(), matchZExtedSubInteger(), narrowBitOpRMW(), parseCondition(), llvm::parseWidenableBranch(), performNanGuardFpToSatCombine(), performSRLCombine(), performSUBCombine(), reverseZExtICmpCombine(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::simplifyInstruction(), simplifyOrInst(), simplifyOrLogic(), simplifySelectBitTest(), simplifySelectWithICmpCond(), llvm::stripNullTest(), llvm::InstCombinerImpl::takeLog2(), tryToImproveAlign(), tryToRecognizePopCount1(), tryToRecognizePopCount2n3(), 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::visitUIToFP(), 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 492 of file PatternMatch.h.
|
inline |
Matches any intrinsic call and ignore it.
Definition at line 148 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by addSaturatedDecorationToIntrinsic(), isSpvAggrPlaceholder(), requireAssignType(), and tracesToPointerAlloca().
|
inline |
Match intrinsic calls with any of the given IDs like this: m_AnyIntrinsic<Intrinsic::fptosi_sat, Intrinsic::fptoui_sat>() This is more efficient than using nested m_CombineOr with m_Intrinsic because it performs the CallInst/Function cast only once.
Definition at line 2841 of file PatternMatch.h.
|
inline |
Definition at line 883 of file PatternMatch.h.
References I.
|
inline |
Match any intrinsic call, capturing it if we match.
Definition at line 882 of file PatternMatch.h.
References I.
|
inline |
Match a floating-point negative zero or positive zero.
For vectors, this includes constants with undefined elements.
Definition at line 795 of file PatternMatch.h.
Referenced by foldFCmpFSubIntoFCmp(), foldFCmpReciprocalAndZero(), foldSelectBinOpIdentity(), llvm::GCNTTIImpl::instCombineIntrinsic(), m_FNegNSZ(), matchIsNotNaN(), matchSelectPattern(), performNanGuardFpToSatCombine(), 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 295 of file PatternMatch.h.
Referenced by addNoFPClassAttrsTopDown(), computeKnownFPClass(), computeKnownFPClassFromCond(), factorizeFAddFSub(), foldFabsWithFcmpZero(), foldFCmpFpTrunc(), foldFCmpFSubIntoFCmp(), llvm::InstCombinerImpl::foldFCmpIntToFPConst(), foldFCmpReciprocalAndZero(), foldFPtoI(), foldFrexpOfSelect(), getNegatibleInsts(), llvm::GCNTTIImpl::instCombineIntrinsic(), isImpliedCondFCmps(), isMinMaxCmpSelectEliminable(), matchFastFloatClamp(), simplifyAndOrOfFCmpsWithConstants(), simplifyFCmpInst(), simplifyLdexp(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFCmpInst().
Match APFloat while allowing poison in splat vector constants.
Definition at line 301 of file PatternMatch.h.
Referenced by simplifyFCmpInst().
Match APFloat while forbidding poison in splat vector constants.
Definition at line 306 of file PatternMatch.h.
Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt.
Definition at line 278 of file PatternMatch.h.
Referenced by bitTrackingDCE(), canEvaluateShiftedShift(), canonicalizeAbs(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeGEPOfConstGEPI8(), canonicalizeLogicFirst(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedSubtractUnsigned(), checkForNegativeOperand(), cmpExcludesZero(), collectBitParts(), llvm::slpvectorizer::collectNarrowedLeavesImpl(), combineRecipe(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBits(), computeKnownBitsFromCmp(), computeKnownBitsFromOperator(), computeKnownFPClassFromCond(), ComputeNumSignBitsImpl(), llvm::ConstantFoldBinaryInstruction(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::decomposeLinearExpression(), foldAddIntoDotAccumulator(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldBitwiseLogicWithIntrinsics(), foldClampRangeOfTwo(), foldExtractOfStridedPointerVector(), 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(), foldICmpEqualityWithOffset(), 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::foldICmpWithClamp(), 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(), llvm::AArch64TTIImpl::getCastInstrCost(), getDemandedBitsLHSMask(), llvm::ConstantExpr::getExactLogBase2(), llvm::SystemZTargetLowering::getJumpConditionMergingParams(), llvm::slpvectorizer::getLaneConstantCmp(), getMaskedICmpType(), getNotValue(), getRangeForIntrinsic(), getRangeForNUWMulSquare(), getRangeForSelectPattern(), llvm::slpvectorizer::getScalarMaxValue(), llvm::vputils::getSCEVExprForVPValue(), llvm::ScalarEvolution::getStrengthenedNoWrapFlagsFromBinOp(), getValueFromOverflowCondition(), haveNoCommonBitsSetSpecialCases(), llvm::RISCVTTIImpl::instCombineIntrinsic(), isAllocSiteRemovable(), isDivZero(), isImpliedCondICmps(), isImpliedToBeAPowerOfTwoFromCond(), llvm::isKnownInversion(), isKnownNonZeroFromOperator(), isNonEqualMul(), isNonEqualPHIs(), isNonEqualShl(), isNonZeroAddrPlusOffset(), isNonZeroRecurrence(), isPoisonShift(), isRightShiftBitTestKnownToTerminate(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), isSignedMinMaxClamp(), isSignedMinMaxIntrinsicClamp(), isSignificantBitCheckWellFormed(), isTruePredicate(), legalizeAndOptimizeInductions(), lookThroughAnd(), m_IncrementOf(), maintainNoSignedWrap(), deinterleaving_tbl_match::match(), matchAndCC(), matchAndOrChain(), matchBitmaskMul(), matchClamp(), MatchDiv(), llvm::slpvectorizer::matchExtractedField(), matchICmpOperand(), matchIntPart(), matchMinMax(), MatchMul(), matchOrConcat(), matchPopCountBytes(), MatchRem(), matchZExtedSubInteger(), llvm::VPlanTransforms::materializeVectorTripCount(), moveAddAfterMinMax(), optimizeVectorInductionWidthForTCAndVFUF(), setLimitsForBinOp(), ShrinkDemandedConstant(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithCtpop(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDiv(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), llvm::simplifyInstruction(), llvm::simplifyIntrinsic(), simplifyIRemMulShl(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyOrOfICmpsWithAdd(), simplifyRem(), simplifySelectBitTest(), simplifySelectWithICmpCond(), simplifySVEIntrinsicCompare(), simplifySwitchOnSelectUsingRanges(), llvm::stripNullTest(), tryFactorization(), trySimplifyICmpWithAdds(), tryToFPToSat(), tryToImproveAlign(), tryToMatchAndCreateMulAccumulateReduction(), tryToRecognizePopCount1(), tryToRecognizePopCount2n3(), tryToRecognizeTableBasedCttz(), tryToRecognizeTableBasedLog2(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGEPOfGEP(), 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::visitSwitchInst(), 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 284 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAddUnsigned(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::decomposeBitTestICmp(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqConstantAndICmp(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldNegativePower2AndShiftedMask(), llvm::X86TTIImpl::getIntrinsicInstrCost(), simplifyBinaryIntrinsic(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithConstant(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSExt(), and llvm::InstCombinerImpl::visitXor().
Match APInt while forbidding poison in splat vector constants.
Definition at line 289 of file PatternMatch.h.
|
inline |
Definition at line 115 of file PatternMatch.h.
References T.
|
inline |
Match an argument.
Definition at line 2791 of file PatternMatch.h.
Referenced by llvm::PatternMatch::IntrinsicMatchImpl::impl().
|
inline |
Definition at line 1363 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::X86TTIImpl::isProfitableToSinkOperands(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchOrConcat(), simplifyBinaryIntrinsic(), simplifyGEPInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyRecipe(), 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 1402 of file PatternMatch.h.
|
inline |
Match an arbitrary basic block value and ignore it.
Definition at line 247 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by llvm::canPeelLastIteration(), canProveExitOnFirstIteration(), collectUnswitchCandidatesWithInjections(), computeKnownBitsFromOperator(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), llvm::SCEVExpander::hasRelatedExistingExpansion(), isProcessableCondBI(), and m_Br().
|
inline |
Match a basic block value, capturing it if we match.
Definition at line 914 of file PatternMatch.h.
|
inline |
Definition at line 915 of file PatternMatch.h.
|
inline |
Match an arbitrary binary operation and ignore it.
Definition at line 142 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by cheapToScalarize(), combineAddMulh(), combineOr(), llvm::InstCombinerImpl::commonIDivTransforms(), foldAndToXor(), llvm::InstCombinerImpl::foldBinOpSelectBinOp(), foldBitCastBitwiseLogic(), foldComplexAndOrPatterns(), foldDependentIVs(), llvm::InstCombinerImpl::foldFMulReassoc(), llvm::InstCombinerImpl::foldICmpBinOp(), foldMaskedAddXorPattern(), foldMulShl1(), foldSelectBinOpIdentity(), foldSelectICmpAndBinOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), foldTwoEntryPHINode(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), getUnfusedBinOpCost(), instCombineSVELast(), isFMulAddCandidate(), isInstructionPairMul(), llvm::isSplatValue(), llvm::slpvectorizer::isUndefTolerantBinOp(), matchesSquareSum(), matchLogicBlend(), llvm::slpvectorizer::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 877 of file PatternMatch.h.
References I.
|
inline |
Definition at line 878 of file PatternMatch.h.
References I.
Definition at line 1165 of file PatternMatch.h.
|
inline |
Matches BitCast.
Definition at line 2207 of file PatternMatch.h.
Referenced by combineBitcast(), combineCastedMaskArithmetic(), combineSCALAR_TO_VECTOR(), combineVectorInsert(), computeKnownFPClass(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldIdentityExtractShuffle(), foldReductionIdiom(), foldTruncShuffle(), foldVecTruncToExtElt(), isUsedWithinShuffleVector(), m_Tbl(), deinterleaving_tbl_match::match(), matchSubIntegerPackFromVector(), performBitcastCombine(), performCTPOPCombine(), performPredicateLoadCombine(), simplifyRecipe(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Definition at line 2866 of file PatternMatch.h.
References m_Intrinsic().
Referenced by collectBitParts(), foldCtpop(), foldCttzCtlz(), matchOrConcat(), and simplifyUnaryIntrinsic().
|
inline |
Matches bitwise logic operations.
Definition at line 1704 of file PatternMatch.h.
Referenced by combineCastedMaskArithmetic(), combineMaskBitOp(), combineShiftOfLogicOp(), foldBitOrderCrossLogicOp(), and foldBitOrderCrossLogicOp().
|
inline |
Definition at line 2519 of file PatternMatch.h.
References C(), F, m_BasicBlock(), and T.
Referenced by llvm::canPeelLastIteration(), canProveExitOnFirstIteration(), collectUnswitchCandidatesWithInjections(), computeKnownBitsFromOperator(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), foldGuardedFunnelShift(), foldICmpWithDominatingICmp(), getAppleRuntimeUnrollPreferences(), getDomPredecessorCondition(), llvm::SCEVExpander::hasRelatedExistingExpansion(), isLoopNeverExecuted(), isProcessableCondBI(), and tryToMoveFreeBeforeNullTest().
|
inline |
Definition at line 2526 of file PatternMatch.h.
|
inline |
Definition at line 2870 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 3029 of file PatternMatch.h.
Referenced by canonicalizeAbs(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), combineAddSubWithShlAddSub(), combineRecipe(), llvm::VPlanTransforms::convertEVLExitCond(), llvm::VPlanTransforms::convertToVariableLengthStep(), llvm::VPlanTransforms::createPartialReductions(), detectShiftUntilZeroIdiom(), llvm::vputils::findCanonicalIVIncrement(), foldAddIntoDotAccumulator(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldBoxMultiply(), llvm::InstCombinerImpl::foldDivCeil(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldMulHigh(), foldRoundUpToPow2Alignment(), foldSubOfMinMax(), foldToUnsignedSaturatedAdd(), foldUnsignedUnderflowCheck(), llvm::vputils::getFlagsForInduction(), getKnownBitsFromAndXorOr(), getOptimizableIVOf(), hoistSubAddAssociation(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineSVEPairwiseAddLong(), llvm::ConditionalInductionDescriptor::isConditionalInductionPHI(), isConditionTrueViaVFAndUF(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), isImpliedCondICmps(), isTruePredicate(), m_IncrementOf(), matchAddCC(), matchesAdd(), matchPopCountBytes(), simplifyBranchConditionForVFAndUF(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithIntrinsicOnLHS(), simplifyOrInst(), simplifyRecipe(), tryToRecognizePopCount1(), tryToRecognizePopCount2n3(), 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 3043 of file PatternMatch.h.
Referenced by llvm::slpvectorizer::collectNarrowedLeavesImpl(), computeKnownBitsFromCmp(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), FindSingleBitChange(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAndToXor(), foldAnyOrAllBitsSet(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstant(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpPow2Test(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldOrToXor(), foldSelectZeroOrFixedOp(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldXorToXor(), getKnownBitsFromAndXorOr(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), haveNoCommonBitsSetSpecialCases(), llvm::isKnownToBeAPowerOfTwo(), isSignificantBitCheckWellFormed(), isTruePredicate(), matchAndCC(), matchBSL(), llvm::slpvectorizer::matchExtractedField(), matchICmpOperand(), simplifyOrLogic(), simplifySelectWithICmpCond(), 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 2996 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), combineAdd(), combineBasicSADPattern(), foldAdjacentReversesIntoTbls(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldComplexAndOrPatterns(), foldDependentIVs(), foldSelectBinOpIdentity(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), getInvertibleOperands(), getKnownBitsFromAndXorOr(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), matchDeMorgansLaws(), matchesSquareSum(), llvm::matchSimpleRecurrence(), performANDORDUPNOTCombine(), 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 3023 of file PatternMatch.h.
|
inline |
Matches bitwise logic operations in either order.
Definition at line 1711 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::visitSExt(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 3015 of file PatternMatch.h.
Referenced by m_Uncountable(), and llvm::matchUncountableExitCondition().
|
inline |
Definition at line 1564 of file PatternMatch.h.
Referenced by simplifyShiftSelectingPackedElement(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Matches FAdd with LHS and RHS in either order.
Definition at line 3130 of file PatternMatch.h.
Referenced by llvm::VPlanTransforms::createPartialReductions(), factorizeLerp(), getOptimizableIVOf(), isFMulAddCandidate(), simplifyFSubInst(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Matches FMul with LHS and RHS in either order.
Definition at line 3137 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), factorizeLerp(), llvm::InstCombinerImpl::foldFMulReassoc(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldPowiReassoc(), foldSelectBinOpIdentity(), 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 3004 of file PatternMatch.h.
Referenced by computeKnownBitsFromOperator(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithHighBitMask(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), llvm::isKnownInversion(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), matchAddCC(), matchAndCC(), llvm::matchCountableExitCondition(), matchSubCC(), matchXorCC(), reduceToAnyAllTrue(), simplifyUnsignedRangeCheck(), llvm::InstCombinerImpl::visitAdd(), and llvm::InstCombinerImpl::visitICmpInst().
|
inline |
Definition at line 3009 of file PatternMatch.h.
|
inline |
Definition at line 3096 of file PatternMatch.h.
References T1.
Referenced by foldSelectZeroOrFixedOp(), m_c_SMax(), m_c_SMin(), m_c_UMax(), m_c_UMin(), m_IncrementOf(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Matches L && R with LHS and RHS in either order.
Definition at line 3307 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::FoldOrOfLogicalAnds(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), simplifyLogicalRecipe(), simplifyOrLogic(), and simplifySelectInst().
Matches either L && R or L || R with LHS and RHS in either order.
Definition at line 3344 of file PatternMatch.h.
References LHS, m_LogicalOp(), and RHS.
|
inline |
Matches L || R with LHS and RHS in either order.
Definition at line 3325 of file PatternMatch.h.
Referenced by llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), simplifyOrLogic(), simplifySelectInst(), and llvm::VPlanTransforms::splitCombinedExits().
Definition at line 3122 of file PatternMatch.h.
References LHS, m_c_SMax(), m_c_SMin(), m_c_UMax(), m_c_UMin(), llvm::PatternMatchHelpers::m_CombineOr(), and RHS.
Referenced by computeKnownFPClass(), foldMinMaxSharedOp(), reassociateMinMaxWithConstantInOperand(), simplifyCmpSelOfMaxMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches a Mul with LHS and RHS in either order.
Definition at line 3036 of file PatternMatch.h.
Referenced by checkOuterLoopInsts(), combineRecipe(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsFromLerpPattern(), llvm::vputils::findCanonicalIVIncrement(), foldBoxMultiply(), llvm::InstCombinerImpl::foldICmpBinOp(), foldIDivShl(), foldMulHigh(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectZeroOrFixedOp(), matchExpandedRem(), simplifyDivRem(), simplifyRecipe(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitMul().
|
inline |
Definition at line 1445 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1487 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by computeKnownBitsFromCmp(), llvm::InstCombinerImpl::foldICmpAddConstant(), and isRemOfLoopIncrementWithLoopInvariant().
|
inline |
Matches an Or with LHS and RHS in either order.
Definition at line 3050 of file PatternMatch.h.
Referenced by computeKnownBitsFromCmp(), foldAndToXor(), foldCopySignIdioms(), foldCtpop(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpOrXX(), foldLoadsRecursive(), FoldOrOfSelectSmaxToAbs(), foldOrToXor(), foldOrUnsignedUMulOverflowICmp(), foldXorToXor(), haveNoCommonBitsSetSpecialCases(), isTruePredicate(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchBSL(), matchesOr(), matchICmpOperand(), matchOrCC(), simplifyAndCommutative(), simplifyAndInst(), simplifyICmpWithBinOpOnLHS(), simplifyLShrInst(), simplifyOrLogic(), simplifyXorInst(), splitMergedValStore(), tryToRecognizeTableBasedLog2(), 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 1981 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().
Matches an SMax with LHS and RHS in either order.
Definition at line 3107 of file PatternMatch.h.
References LHS, m_c_Intrinsic(), and RHS.
Referenced by isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
Matches an SMin with LHS and RHS in either order.
Definition at line 3102 of file PatternMatch.h.
References LHS, m_c_Intrinsic(), and RHS.
Referenced by computeKnownBitsAddSub(), isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1860 of file PatternMatch.h.
Matches a UMax with LHS and RHS in either order.
Definition at line 3117 of file PatternMatch.h.
References LHS, m_c_Intrinsic(), and RHS.
Referenced by isTruePredicate(), m_c_MaxOrMin(), and llvm::InstCombinerImpl::visitSub().
Matches a UMin with LHS and RHS in either order.
Definition at line 3112 of file PatternMatch.h.
References LHS, m_c_Intrinsic(), and RHS.
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 3057 of file PatternMatch.h.
Referenced by foldComplexAndOrPatterns(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), foldICmpXorXX(), foldXorToXor(), getKnownBitsFromAndXorOr(), haveNoCommonBitsSetSpecialCases(), instCombineXorSVECmpCC(), isConditionalOnXorOfPHIs(), isMaskOrZero(), isSignificantBitCheckWellFormed(), m_Not(), m_NotForbidPoison(), matchXorCC(), 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 1621 of file PatternMatch.h.
|
inline |
Matches any cast or self. Used to ignore casts.
Definition at line 2274 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr().
Referenced by tryToRecognizeTableBasedCttz(), and tryToRecognizeTableBasedLog2().
|
inline |
Definition at line 483 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 478 of file PatternMatch.h.
Referenced by llvm::isKnownIntegral().
|
inline |
Definition at line 471 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 466 of file PatternMatch.h.
Referenced by foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpCommutative(), foldMinimumOverTrailingOrLeadingZeroCount(), simplifyRem(), and llvm::InstCombinerImpl::visitMul().
|
inline |
Matches any compare instruction and ignore it.
Definition at line 145 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by cheapToScalarize(), combineRecipe(), llvm::VPBlendRecipe::computeCost(), llvm::VPInstruction::computeCost(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::VPlanTransforms::createInLoopReductionRecipes(), foldSelectBinOpIdentity(), foldTwoEntryPHINode(), llvm::AArch64TTIImpl::getCastInstrCost(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), getHashValueImpl(), llvm::SystemZTargetLowering::getJumpConditionMergingParams(), getRecipesForUncountableExit(), llvm::VPlanTransforms::handleMultiUseReductions(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isEqualImpl(), llvm::RecurrenceDescriptor::isFindPattern(), and llvm::InstCombinerImpl::visitExtractElementInst().
|
inline |
Definition at line 1785 of file PatternMatch.h.
|
inline |
Definition at line 1803 of file PatternMatch.h.
|
inline |
Match an arbitrary Constant and ignore it.
Definition at line 177 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::findScalarElement(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), foldBitCastBitwiseLogic(), llvm::InstCombinerImpl::foldCmpSelectOfConstants(), 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(), llvm::InstCombinerImpl::foldVectorBinop(), 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().
|
inline |
Match a Constant, capturing the value if we match.
Definition at line 902 of file PatternMatch.h.
References C().
|
inline |
Match a constant expression or a constant that contains a constant expression.
Definition at line 207 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_ContainsMatchingVectorElement(), and llvm::PatternMatchHelpers::m_Isa().
Referenced by llvm::PatternMatch::immconstant_ty::isImmConstant(), simplifyInstructionWithPHI(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match a ConstantExpr, capturing the value if we match.
Definition at line 911 of file PatternMatch.h.
References C().
|
inline |
Match an arbitrary ConstantFP and ignore it.
Definition at line 183 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by llvm::GCNTTIImpl::instCombineIntrinsic(), and matchFPExtFromF16().
|
inline |
Match a ConstantFP, capturing the value if we match.
Definition at line 908 of file PatternMatch.h.
References C().
|
inline |
Match an arbitrary ConstantInt and ignore it.
Definition at line 180 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by annotateNonNullAndDereferenceable(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), canonicalizeInsertSplat(), canScalarizeAccess(), cheapToScalarize(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromCmp(), computeKnownFPClassFromCond(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), decomposeImpl(), llvm::findScalarElement(), llvm::findValuesAffectedByCondition(), foldConstantInsEltIntoShuffle(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpWithConstant(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldShuffleWithInsert(), foldTruncInsEltPair(), foldVecExtTruncToExtElt(), foldVecTruncToExtElt(), getKnownTypeFromMaskedOp(), llvm::vputils::getSCEVExprForVPValue(), slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), hoistInsEltConst(), llvm::RISCVTTIImpl::instCombineIntrinsic(), instCombineSVEAnd(), isLoopNeverExecuted(), isMultipleOfN(), isOperandOfVmullHighP64(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), isSSATMinMaxPattern(), isThreadID(), m_SelectCst(), llvm::PatternMatch::ShiftLike_match< LHS_t, Opcode >::match(), matchesAdd(), matchesOr(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), matchZExtedSubInteger(), replaceMaskWithCompareForScalarPlan(), llvm::VPlanTransforms::replicateByVF(), shouldCanonicalizeGEPToPtrAdd(), shouldSinkVScale(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyGEPInst(), simplifyRecipe(), simplifyShiftSelectingPackedElement(), simplifyShuffleVectorInst(), simplifySwitchWhenUMin(), 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 326 of file PatternMatch.h.
|
inline |
Match a ConstantInt, capturing the value if we match.
Definition at line 905 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 1082 of file PatternMatch.h.
References uint64_t.
|
inline |
Match a vector constant where at least one of its elements matches the subpattern.
Scalable vector constants are not matched. Any bindings in the subpattern will be bound to the first match.
Definition at line 201 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivRemTransforms(), m_ConstantExpr(), llvm::maskContainsAllOneOrUndef(), and llvm::InstCombinerImpl::visitFreeze().
|
inline |
Definition at line 2976 of file PatternMatch.h.
References m_Intrinsic().
Referenced by optimizeSymmetricCall(), llvm::InstCombiner::stripSignOnlyFPOps(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitFNeg().
|
inline |
Definition at line 2886 of file PatternMatch.h.
References m_Intrinsic().
Referenced by computeKnownBitsFromOperator(), foldSelectSplitCTLZ(), foldSubCtlzNot(), llvm::InstCombinerImpl::visitAdd(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 2873 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::findValuesAffectedByCondition(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), isImpliedToBeAPowerOfTwoFromCond(), simplifyAndOrOfICmpsWithCtpop(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), llvm::InstCombinerImpl::visitAdd(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 2891 of file PatternMatch.h.
References m_Intrinsic().
Referenced by foldSelectSplitCTTZ(), setShiftFlags(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitShl().
|
inline |
A commutative-friendly version of m_Specific().
Definition at line 1102 of file PatternMatch.h.
|
inline |
Definition at line 1106 of file PatternMatch.h.
Definition at line 984 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 983 of file PatternMatch.h.
Referenced by combineAddMulh(), combineAndXorSubWithBMI(), combineBasicSADPattern(), combineConcatVectorOfShuffles(), combineOrOfSetCCToUSUBOCarry(), combineRecipe(), combineXorToBitfieldInsert(), llvm::VPlanTransforms::convertEVLExitCond(), dropRedundantMaskingOfLeftShiftInput(), factorizeLerp(), llvm::findValuesAffectedByCondition(), foldAndToUsubsat(), foldAndToXor(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldDivCeil(), llvm::InstCombinerImpl::foldFMulReassoc(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldMaskedAddXorPattern(), foldMaskedMerge(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), foldSelectICmpAndAnd(), foldToUnsignedSaturatedAdd(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldXorToXor(), getKnownBitsFromAndXorOr(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), haveNoCommonBitsSetSpecialCases(), isAbsoluteValueULEOne(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), isMaskOrZero(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchesSquareSum(), matchExpandedRem(), matchLogicBlend(), matchPopCountBytes(), narrowBitOpRMW(), PerformSELECTShiftCombine(), simplifyAndInst(), simplifyCastInst(), llvm::TargetLowering::SimplifyDemandedBits(), simplifyLogicalRecipe(), simplifySelectWithICmpCond(), llvm::stripNullTest(), tryToRecognizePopCount1(), tryToRecognizePopCount2n3(), tryToRecognizeTableBasedCttz(), tryToRecognizeTableBasedLog2(), 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 3242 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Definition at line 1559 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldAddWithConstant(), isKnownNoWrap(), m_AddLike(), m_NSWAddLike(), m_NUWAddLike(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 2235 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::visitCallInst(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Definition at line 1744 of file PatternMatch.h.
References T.
Referenced by decomposeImpl(), foldCttzCtlz(), simplifyMulInst(), simplifyShlInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitUDiv().
|
inline |
Matches ExtractElementInst.
Definition at line 2003 of file PatternMatch.h.
Referenced by canonicalizeBitCastExtElt(), canSafelyConvertTo16Bit(), convertTo16Bit(), foldInsEltIntoIdentityShuffle(), foldVecExtTruncToExtElt(), slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), isOperandOfVmullHighP64(), lowerBUILD_VECTOR(), matchPMADDWD(), matchPMADDWD_2(), matchSubIntegerPackFromVector(), llvm::RISCVTargetLowering::PerformDAGCombine(), performMINMAXCombine(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::simplifyInsertElementInst(), and llvm::InstCombinerImpl::visitInsertElementInst().
|
inline |
Match a single index ExtractValue instruction.
For example m_ExtractValue<1>(...)
Definition at line 3200 of file PatternMatch.h.
Referenced by llvm::computeConstantRange(), directlyImpliesPoison(), dominatesMergePoint(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpOfUAddOv(), foldOrUnsignedUMulOverflowICmp(), isKnownNonZeroFromOperator(), m_IncrementOf(), matchIncrement(), llvm::patchReplacementInstruction(), replaceOverflowUses(), llvm::InstCombinerImpl::SimplifyDemandedUseFPClass(), 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 3207 of file PatternMatch.h.
|
inline |
Definition at line 2877 of file PatternMatch.h.
References m_Intrinsic().
Referenced by computeKnownExponentRangeFromContext(), llvm::findValuesAffectedByCondition(), foldFabsWithFcmpZero(), foldFCmpFAbsFSubIntToFP(), foldSelectBinOpIdentity(), foldShuffleOfUnaryOps(), llvm::GCNTTIImpl::isProfitableToSinkOperands(), optimizeSymmetricCall(), simplifyAndOrOfFCmps(), llvm::InstCombinerImpl::SimplifyDemandedUseFPClass(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedFPClass(), llvm::InstCombiner::stripSignOnlyFPOps(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitFDiv().
|
inline |
Definition at line 1225 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), getFusableFMulOperand(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), m_AnyAdd(), llvm::InstCombinerImpl::visitFAdd(), and llvm::InstCombinerImpl::visitFCmpInst().
|
inline |
Definition at line 2881 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Definition at line 1797 of file PatternMatch.h.
Referenced by computeKnownExponentRangeFromContext(), computeKnownFPClassFromCond(), llvm::findValuesAffectedByCondition(), reassociateFCmps(), simplifySelectWithFCmp(), and llvm::InstCombinerImpl::visitCondBrInst().
|
inline |
Definition at line 1813 of file PatternMatch.h.
|
inline |
Definition at line 1309 of file PatternMatch.h.
Referenced by convertFSqrtDivIntoFMul(), factorizeFAddFSub(), foldFDivConstantDividend(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldFPtoI(), getFSqrtDivOptPattern(), isFoldedIntoRsqrtEstimate(), 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 773 of file PatternMatch.h.
Referenced by computeKnownExponentRangeFromContext().
|
inline |
Definition at line 776 of file PatternMatch.h.
|
inline |
Match a finite non-zero FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 783 of file PatternMatch.h.
Referenced by foldFCmpFAbsFSubIntToFP().
|
inline |
Definition at line 786 of file PatternMatch.h.
|
inline |
Definition at line 2942 of file PatternMatch.h.
References m_Intrinsic().
Referenced by getMinMaxRecurrence(), and llvm::slpvectorizer::matchRdxBop().
|
inline |
Definition at line 2947 of file PatternMatch.h.
References m_Intrinsic().
Referenced by m_FMaxNum_or_FMaximumNum().
|
inline |
Definition at line 2937 of file PatternMatch.h.
References m_Intrinsic().
Referenced by m_FMaxNum_or_FMaximumNum(), matchFastFloatClamp(), and llvm::slpvectorizer::matchRdxBop().
|
inline |
Definition at line 2952 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_FMaximumNum(), and m_FMaxNum().
Referenced by simplifyFCmpInst().
|
inline |
Definition at line 2927 of file PatternMatch.h.
References m_Intrinsic().
Referenced by getMinMaxRecurrence(), and llvm::slpvectorizer::matchRdxBop().
|
inline |
Definition at line 2932 of file PatternMatch.h.
References m_Intrinsic().
Referenced by m_FMinNum_or_FMinimumNum().
|
inline |
Definition at line 2922 of file PatternMatch.h.
References m_Intrinsic().
Referenced by m_FMinNum_or_FMinimumNum(), matchFastFloatClamp(), and llvm::slpvectorizer::matchRdxBop().
|
inline |
Definition at line 2957 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_FMinimumNum(), and m_FMinNum().
Referenced by simplifyFCmpInst().
|
inline |
Definition at line 1291 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), foldFDivConstantDividend(), foldFNegIntoConstant(), getFSqrtDivOptPattern(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isFMulAddCandidate(), isFusableFMulOperand(), isInstructionPairMul(), llvm::X86TTIImpl::isLegalAltInstr(), 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 1273 of file PatternMatch.h.
References X.
Referenced by llvm::findValuesAffectedByCondition(), foldFCmpFNegCommonOp(), foldFDivConstantDividend(), foldFNegIntoConstant(), llvm::InstCombinerImpl::foldSelectOpOp(), foldShuffleOfUnaryOps(), llvm::InstCombiner::getComplexity(), isFNeg(), isNeg(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::GCNTTIImpl::isProfitableToSinkOperands(), LinearizeExprTree(), NegateValue(), optimizeSymmetricCall(), llvm::RISCVTargetLowering::PerformDAGCombine(), ShouldBreakUpSubtract(), simplifyBinaryIntrinsic(), simplifyFAddInst(), simplifyFNegInst(), simplifyFSubInst(), llvm::InstCombiner::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 1280 of file PatternMatch.h.
References m_AnyZeroFP(), m_FSub(), RHS, and X.
Referenced by simplifyFDivInst().
|
inline |
Definition at line 2476 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 1011 of file PatternMatch.h.
References m_SpecificFP().
Referenced by factorizeLerp(), llvm::GCNTTIImpl::getArithmeticInstrCost(), getFSqrtDivOptPattern(), simplifyFDivInst(), simplifyFMAFMul(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Definition at line 2466 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_FPToSI(), and m_FPToUI().
Referenced by llvm::InstCombiner::canBeCastedExactlyIntToFP().
|
inline |
Definition at line 2459 of file PatternMatch.h.
Referenced by llvm::InstCombiner::canBeCastedExactlyIntToFP(), m_FPToI(), performNanGuardFpToSatCombine(), and tryToFPToSat().
|
inline |
Definition at line 2454 of file PatternMatch.h.
Referenced by m_FPToI(), and performNanGuardFpToSatCombine().
|
inline |
Definition at line 2471 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::visitFCmpInst(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Matches FreezeInst.
Definition at line 1988 of file PatternMatch.h.
Referenced by getRecipesForUncountableExit(), and llvm::InstCombinerImpl::visitFreeze().
|
inline |
Definition at line 1327 of file PatternMatch.h.
|
inline |
Definition at line 2962 of file PatternMatch.h.
References m_Intrinsic().
Referenced by collectBitParts(), foldCtpop(), foldSelectZeroOrFixedOp(), llvm::recognizeBSwapOrBitReverseIdiom(), simplifySelectWithICmpCond(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 2967 of file PatternMatch.h.
References m_Intrinsic().
Referenced by collectBitParts(), foldCtpop(), foldSelectZeroOrFixedOp(), llvm::recognizeBSwapOrBitReverseIdiom(), and simplifySelectWithICmpCond().
|
inline |
Definition at line 1237 of file PatternMatch.h.
Referenced by factorizeLerp(), foldFCmpFAbsFSubIntToFP(), foldFCmpFSubIntoFCmp(), llvm::InstCombinerImpl::foldFMulReassoc(), getFusableFMulOperand(), isAbsoluteValueULEOne(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), m_FNegNSZ(), simplifyFAddInst(), simplifyFSubInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFNeg(), and llvm::InstCombinerImpl::visitFSub().
|
inline |
Matches GetElementPtrInst.
Definition at line 2123 of file PatternMatch.h.
References AbstractManglingParser< Derived, Alloc >::Ops.
Referenced by foldDependentIVs(), and processUse().
|
inline |
Definition at line 1791 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::canPeelLastIteration(), collectUnswitchCandidatesWithInjections(), computeKnownFPClassFromCond(), countToEliminateCompares(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), llvm::findValuesAffectedByCondition(), foldAddToAshr(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrChain(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldReductionIdiom(), llvm::InstCombinerImpl::foldSelectICmp(), foldSelectICmpAndAnd(), foldSelectICmpAndZeroShl(), llvm::InstCombinerImpl::foldSelectOpOp(), foldSelectSplitCTLZCTTZ(), foldSelectZeroOrFixedOp(), llvm::InstCombinerImpl::foldSignBitTest(), getAppleRuntimeUnrollPreferences(), hasProcessableCondition(), llvm::SCEVExpander::hasRelatedExistingExpansion(), hoistAddSub(), hoistMinMax(), llvm::isCheckForZeroAndMulWithOverflow(), isImpliedToBeAPowerOfTwoFromCond(), llvm::isKnownInversion(), llvm::isOnlyUsedInZeroComparison(), isProcessableCondBI(), isRightShiftBitTestKnownToTerminate(), isSignificantBitCheckWellFormed(), llvm::PatternMatch::ICmpLike_match< LHS_t, RHS_t >::match(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchAndCC(), matchOrCC(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), llvm::VPlanTransforms::modelGeneratedMainLoopBlocks(), optimizeVectorInductionWidthForTCAndVFUF(), recordCondition(), reduceToAnyAllTrue(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithCtpop(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyOrOfICmpsWithAdd(), simplifySelectWithICmpCond(), simplifySwitchOnSelectUsingRanges(), simplifyUnsignedRangeCheck(), llvm::VPlanTransforms::truncateToMinimalBitwidths(), tryToMoveFreeBeforeNullTest(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 1808 of file PatternMatch.h.
|
inline |
Definition at line 2383 of file PatternMatch.h.
Referenced by checkOrAndOpImpliedByOther(), llvm::isImpliedCondition(), llvm::isImpliedCondition(), and simplifyAndOrWithICmpEq().
|
inline |
Matches integer division operations.
Definition at line 1717 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 944 of file PatternMatch.h.
Referenced by AddParamAndFnBasicAttributes(), llvm::collectPossibleValues(), llvm::InstCombinerImpl::commonIDivRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldBinOpSelectBinOp(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), foldCmpIntrinsicOfExtended(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpEqualityWithOffset(), foldICmpIntrinsicWithIntrinsic(), llvm::InstCombinerImpl::foldICmpOrConstant(), llvm::InstCombinerImpl::foldICmpSubConstant(), foldMaskedAddXorPattern(), llvm::InstCombinerImpl::foldReversedIntrinsicOperands(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldTwoEntryPHINode(), foldURemOfLoopIncrement(), llvm::InstCombinerImpl::foldVectorBinop(), getAlternateBinop(), getBinOpsForFactorization(), llvm::InstCombiner::getFreelyInvertedImpl(), isImpliedCondFCmps(), isImpliedCondICmps(), reassociateMinMaxWithConstantInOperand(), reassociateMinMaxWithConstants(), ShouldBreakUpDistribution(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpInst(), simplifyTernarylogic(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAtomicRMWInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitStoreInst(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUIToFP(), and llvm::InstCombinerImpl::visitXor().
|
inline |
Match an immediate Constant, capturing the value if we match.
Definition at line 961 of file PatternMatch.h.
References C().
|
inline |
Match a positive or negative infinity FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 739 of file PatternMatch.h.
Referenced by matchUnorderedInfCompare(), simplifyFAddInst(), simplifyFPOp(), and simplifyFSubInst().
|
inline |
Matches InsertElementInst.
Definition at line 1995 of file PatternMatch.h.
Referenced by canonicalizeInsertSplat(), cheapToScalarize(), combineVectorInsert(), foldFDivPowDivisor(), foldIdentityExtractShuffle(), foldInsEltIntoSplat(), foldShuffleWithInsert(), foldTruncInsEltPair(), llvm::getSplatValue(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), matchSubIntegerPackFromVector(), performANDORDUPNOTCombine(), shrinkInsertElt(), simplifyShuffleVectorInst(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitPtrToInt().
|
inline |
Matches a single index InsertValue instruction.
Definition at line 3229 of file PatternMatch.h.
|
inline |
Definition at line 857 of file PatternMatch.h.
References I.
|
inline |
Definition at line 867 of file PatternMatch.h.
References I, llvm::PatternMatchHelpers::m_CombineAnd(), and P.
|
inline |
Match an instruction, capturing it if we match.
Definition at line 856 of file PatternMatch.h.
References I.
Referenced by analyzeCostOfVecReduction(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromLerpPattern(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), convertTo16Bit(), detectShiftUntilZeroIdiom(), llvm::findHistogram(), foldFNegIntoConstant(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldLoadsRecursive(), foldMulHigh(), foldMulSelectToNegate(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectGEP(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), getAppleRuntimeUnrollPreferences(), llvm::AArch64TTIImpl::getCastInstrCost(), getNegatibleInsts(), llvm::SCEVExpander::hasRelatedExistingExpansion(), hoistSubAddAssociation(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), isFusableFMulOperand(), isSignificantBitCheckWellFormed(), LinearizeExprTree(), lookThroughAnd(), m_Tbl(), matchBSL(), RecurrenceInfo::matchConditionalRecurrence(), matchExpandedRem(), matchIncrement(), matchSubIntegerPackFromVector(), llvm::matchUncountableExitCondition(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Match against the nested pattern, and capture the instruction if we match.
Definition at line 863 of file PatternMatch.h.
References I, llvm::PatternMatchHelpers::m_CombineAnd(), and P.
|
inline |
Definition at line 3238 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X))
Definition at line 2831 of file PatternMatch.h.
References AbstractManglingParser< Derived, Alloc >::Ops, and llvm::PatternMatch::IntrinsicMatchImpl::impl().
Referenced by llvm::AliasSetTracker::add(), llvm::VPlanTransforms::areAllLoadsDereferenceable(), cannotHoistOrSinkRecipe(), llvm::vputils::cannotHoistOrSinkRecipe(), llvm::canSinkOrHoistInst(), cheapToScalarize(), llvm::collectEphemeralRecipesForVPlan(), combineRecipe(), llvm::computeConstantRange(), computeKnownFPClassFromCond(), computeShapeInfoForInst(), findCacheViolation(), llvm::findHistogram(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAdjacentReversesIntoTbls(), foldBitOrderCrossLogicOp(), foldCttzCtlz(), foldFCmpWithFloorAndCeil(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFPtoI(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpInvariantGroup(), foldICmpOfUAddOv(), foldICmpOfVectorReduce(), foldMinimumOverTrailingOrLeadingZeroCount(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), foldSpliceBinOp(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::slpvectorizer::getBoolReduxResultCCH(), getBundleFromUse(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), llvm::ARMTTIImpl::getGatherScatterOpCost(), getKnownTypeFromMaskedOp(), getMinMaxRecurrence(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::vputils::getSCEVExprForVPValue(), getUnsignedMonotonicValues(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleMultiUseReductions(), hasRequiredFastMathFlags(), llvm::hoistRegion(), INITIALIZE_PASS(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::RISCVTTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVEAnd(), instCombineSVEDup(), instCombineSVEDupqLane(), instCombineSVEOrr(), instCombineSVESrshl(), instCombineSVEUMin(), instCombineSVEUzp1(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), isAbsoluteValueULEOne(), isAllActivePredicate(), isAMXCast(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::vputils::isDeadRecipe(), llvm::slpvectorizer::isFMAOrFMulAdd(), llvm::isGuard(), llvm::isGuardAsWidenableBranch(), llvm::ConstantPtrAuth::isKnownCompatibleWith(), llvm::MemoryWriteTracking::isSpecialInstruction(), isThreadID(), llvm::isWidenableCondition(), m_BitReverse(), m_BSwap(), m_CopySign(), m_Ctlz(), m_Ctpop(), m_Cttz(), 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_MaskedGather(), m_MaskedLoad(), m_MaskedStore(), m_SMax(), m_SMin(), m_Sqrt(), m_Tbl(), m_UMax(), m_UMin(), m_VecReverse(), m_VectorInsert(), m_VScale(), deinterleaving_tbl_match::match(), matchIncrement(), llvm::slpvectorizer::matchRdxBop(), matchStridedStart(), llvm::VPlanTransforms::optimizeEVLMasks(), optimizeMaskToEVL(), llvm::AArch64TargetLowering::optimizeVectorCrossLaneOperation(), llvm::parseWidenableBranch(), processLoop(), processUse(), llvm::DropUnnecessaryAssumesPass::run(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyExtractValueInst(), llvm::simplifyIntrinsic(), simplifyOrInst(), simplifySelectWithICmpCond(), simplifySVEIntrinsicBinOp(), simplifyUnaryIntrinsic(), simplifyWithOpsReplaced(), tryCombineFromSVBoolBinOp(), 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::visitPtrToAddr(), llvm::InstCombinerImpl::visitPtrToInt(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Matches IntToPtr.
Definition at line 2267 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldPtrToIntOrAddrOfGEP(), and llvm::InstCombinerImpl::visitPtrToInt().
|
inline |
Matches integer remainder operations.
Definition at line 1724 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldSelectZeroOrFixedOp(), and isKnownNonNullFromDominatingCondition().
|
inline |
Definition at line 2449 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_SIToFP(), and m_UIToFP().
Referenced by foldFCmpFSubIntoFCmp(), getMinimumFPType(), and simplifyUnaryIntrinsic().
|
inline |
Matches LoadInst.
Definition at line 2093 of file PatternMatch.h.
Referenced by cheapToScalarize(), llvm::findHistogram(), foldToMaskedStore(), llvm::X86TTIImpl::getShuffleCost(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), and llvm::matchUncountableExitCondition().
|
inline |
Definition at line 2109 of file PatternMatch.h.
Referenced by processUse().
|
inline |
Matches L && R where L and R are arbitrary values.
Definition at line 3302 of file PatternMatch.h.
References m_LogicalAnd(), and m_Value().
Referenced by checkOrAndOpImpliedByOther(), collectHomogenousInstGraphLoopInvariants(), collectUnswitchCandidates(), combineRecipe(), computeKnownBitsFromCond(), computeKnownFPClassFromCond(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), findBestNonTrivialUnswitchCandidate(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::InstCombinerImpl::FoldOrOfLogicalAnds(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), hoistMinMax(), isImpliedCondAndOr(), llvm::isImpliedCondition(), isKnownNonNullFromDominatingCondition(), m_LogicalAnd(), llvm::VPlanPatternMatch::RemoveMask_match< Op0_t, Op1_t >::match(), llvm::VPlanTransforms::optimizeEVLMasks(), optimizeLoopExitWithUnknownExitCount(), optimizeMaskToEVL(), reassociateHeaderMask(), simplifyLogicalRecipe(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unswitchNontrivialInvariants(), unswitchTrivialBranch(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitCondBrInst(), 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 3296 of file PatternMatch.h.
Referenced by removeCommonBlendMask(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), tryCombineFromSVBoolBinOp(), and unswitchTrivialBranch().
|
inline |
Matches either L && R or L || R where L and R are arbitrary values.
Definition at line 3340 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 3333 of file PatternMatch.h.
References LHS, llvm::PatternMatchHelpers::m_CombineOr(), and RHS.
Referenced by m_c_LogicalOp().
|
inline |
Matches L || R where L and R are arbitrary values.
Definition at line 3320 of file PatternMatch.h.
References m_LogicalOr(), and m_Value().
Referenced by checkOrAndOpImpliedByOther(), collectHomogenousInstGraphLoopInvariants(), collectUnswitchCandidates(), 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(), llvm::matchCombinedExitCondition(), optimizeLoopExitWithUnknownExitCount(), llvm::VPlanTransforms::splitCombinedExits(), 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 3314 of file PatternMatch.h.
Referenced by llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), and unswitchTrivialBranch().
|
inline |
Matches logical shift operations.
Definition at line 1697 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 673 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 676 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 683 of file PatternMatch.h.
Referenced by isMaskOrZero().
|
inline |
Definition at line 686 of file PatternMatch.h.
|
inline |
Definition at line 1357 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), combineRecipe(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), foldBoxMultiply(), foldCttzCtlz(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), foldMulHigh(), foldSelectICmpAndAnd(), foldSelectICmpLshrAshr(), foldSelectSplitCTLZ(), foldSelectSplitCTTZ(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldTruncInsEltPair(), foldVecExtTruncToExtElt(), foldVecTruncToExtElt(), getBinOpsForFactorization(), llvm::slpvectorizer::getScalarMaxValue(), llvm::vputils::getSCEVExprForVPValue(), haveNoCommonBitsSetSpecialCases(), llvm::isKnownToBeAPowerOfTwo(), isTruePredicate(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchAndOrChain(), MatchDiv(), llvm::slpvectorizer::matchExtractedField(), matchIntPart(), matchPopCountBytes(), matchZExtedSubInteger(), simplifyAndInst(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOpOnLHS(), llvm::simplifyIntrinsic(), simplifyOrInst(), simplifyRecipe(), simplifyValueKnownNonZero(), llvm::stripNullTest(), llvm::InstCombinerImpl::takeLog2(), tryToRecognizePopCount1(), tryToRecognizePopCount2n3(), tryToRecognizeTableBasedCttz(), tryToRecognizeTableBasedLog2(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), 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 1395 of file PatternMatch.h.
Referenced by matchPartStore().
|
inline |
Matches MaskedGather Intrinsic.
Definition at line 2860 of file PatternMatch.h.
References m_Intrinsic().
|
inline |
Matches MaskedLoad Intrinsic.
Definition at line 2847 of file PatternMatch.h.
References m_Intrinsic().
Referenced by optimizeMaskToEVL().
|
inline |
Matches MaskedStore Intrinsic.
Definition at line 2853 of file PatternMatch.h.
References m_Intrinsic().
Referenced by optimizeMaskToEVL().
|
inline |
Definition at line 2916 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_SMax(), m_SMin(), m_UMax(), and m_UMin().
Referenced by llvm::InstCombinerImpl::foldICmpUsingKnownBits(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldMinMaxSharedOp(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombiner::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 525 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAddSigned(), canonicalizeSaturatedSubtractSigned(), and llvm::InstCombinerImpl::visitAnd().
|
inline |
Definition at line 528 of file PatternMatch.h.
|
inline |
Definition at line 1285 of file PatternMatch.h.
Referenced by analyzeCostOfVecReduction(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), combinePMULH(), combineShiftToPMULH(), llvm::InstCombinerImpl::commonIDivTransforms(), decomposeImpl(), llvm::decomposeLinearExpression(), detectPMADDUBSW(), foldBoxMultiply(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpWithZero(), foldMulHigh(), foldReduceOperandViaVDOT4A(), llvm::InstCombinerImpl::FoldShiftByConstant(), llvm::slpvectorizer::getScalarMaxValue(), llvm::vputils::getSCEVExprForVPValue(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isNonEqualMul(), m_AnyMul(), deinterleaving_tbl_match::match(), matchBitmaskMul(), matchDot4Pattern(), MatchMul(), matchPMADDWD_2(), matchPopCountBytes(), matchVPMADD52(), processUse(), ShouldBreakUpDistribution(), shouldCanonicalizeGEPToPtrAdd(), shouldSinkVScale(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOpOnLHS(), simplifyIRemMulShl(), tryToMatchAndCreateMulAccumulateReduction(), tryToRecognizePopCount(), tryToRecognizeTableBasedCttz(), tryToRecognizeTableBasedLog2(), 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 723 of file PatternMatch.h.
Referenced by simplifyFPOp().
|
inline |
Matches a 'Neg' as 'sub 0, V'.
Definition at line 3065 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 627 of file PatternMatch.h.
Referenced by foldNegativePower2AndShiftedMask(), foldRoundUpToPow2Alignment(), llvm::simplifyInstruction(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitSDiv(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 630 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 639 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), and isMaskOrZero().
|
inline |
Definition at line 643 of file PatternMatch.h.
|
inline |
Match an integer or vector of negative values.
For vectors, this includes constants with undefined elements.
Definition at line 537 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAddSigned(), foldICmpXorXX(), simplifyBinaryIntrinsic(), simplifyShlInst(), llvm::InstCombinerImpl::visitSRem(), and llvm::InstCombinerImpl::visitURem().
|
inline |
Definition at line 540 of file PatternMatch.h.
|
inline |
Match a negative infinity FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 755 of file PatternMatch.h.
|
inline |
Match a floating-point negative zero.
For vectors, this includes constants with undefined elements.
Definition at line 813 of file PatternMatch.h.
Referenced by llvm::ConstantFoldBinaryInstruction(), simplifyFAddInst(), simplifyFRemInst(), simplifyFSubInst(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 2317 of file PatternMatch.h.
Referenced by m_SExtLike(), and llvm::InstCombinerImpl::visitGetElementPtrInst().
|
inline |
Definition at line 125 of file PatternMatch.h.
References T.
|
inline |
Definition at line 120 of file PatternMatch.h.
References T.
|
inline |
Match a non-infinity FP constant, i.e.
finite or NaN. For vectors, this includes constants with undefined elements.
Definition at line 764 of file PatternMatch.h.
|
inline |
Match a non-NaN FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 730 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 547 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpBinOp(), foldICmpWithLowBitMaskedVal(), getBinOpsForFactorization(), instCombineSVESrshl(), isImpliedCondICmps(), llvm::InstCombinerImpl::OptimizePointerDifference(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Definition at line 550 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 569 of file PatternMatch.h.
Referenced by isImpliedCondICmps().
|
inline |
Definition at line 572 of file PatternMatch.h.
|
inline |
Match a floating-point non-zero.
For vectors, this includes constants with undefined elements.
Definition at line 822 of file PatternMatch.h.
|
inline |
Match a non-zero integer or a vector with all non-zero elements.
For vectors, this includes constants with undefined elements.
Definition at line 595 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpCommutative().
|
inline |
Match a floating-point non-zero that is not a denormal.
For vectors, this includes constants with undefined elements.
Definition at line 834 of file PatternMatch.h.
Referenced by hasNonZeroFPOperands().
|
inline |
Definition at line 131 of file PatternMatch.h.
References T.
|
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 2690 of file PatternMatch.h.
References m_AllOnes(), and m_c_Xor().
Referenced by llvm::InstCombiner::canFreelyInvertAllUsersOf(), and llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match().
|
inline |
Definition at line 2697 of file PatternMatch.h.
References m_AllOnesForbidPoison(), and m_c_Xor().
Referenced by canonicalizeSaturatedAddUnsigned().
|
inline |
Definition at line 1437 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::foldAddLikeCommutative(), foldSelectICmpMinMax(), foldURemOfLoopIncrement(), isTruePredicate(), m_NSWAddLike(), trySimplifyICmpWithAdds(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Match either "add nsw" or "or disjoint".
Definition at line 1583 of file PatternMatch.h.
References LHS, llvm::PatternMatchHelpers::m_CombineOr(), m_DisjointOr(), m_NSWAdd(), and RHS.
Referenced by canonicalizeMaskForVLPredicate(), llvm::InstCombinerImpl::commonIDivTransforms(), foldNoWrapAdd(), hoistAdd(), isTruePredicate(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1461 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), matchSelectPattern(), simplifyDiv(), simplifyICmpWithConstant(), simplifyRem(), llvm::InstCombinerImpl::visitAShr(), and llvm::InstCombinerImpl::visitLShr().
|
inline |
Matches a 'Neg' as 'sub nsw 0, V'.
Definition at line 3074 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 1469 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::foldICmpCommutative(), foldICmpEqualityWithOffset(), matchSelectPattern(), optimizeShiftInOrChain(), simplifyAShrInst(), simplifyRem(), llvm::InstCombinerImpl::visitAShr(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Definition at line 1453 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoSignedWrap, and RHS.
Referenced by canoncalizeSelectICmpMinMax(), canonicalizeSaturatedAddSigned(), llvm::computeOverflowForSignedSub(), 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 2294 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), and llvm::InstCombinerImpl::visitSExt().
|
inline |
Definition at line 1478 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddLikeCommutative(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), foldSelectICmpMinMax(), isKnownNonZeroFromOperator(), m_NUWAddLike(), and llvm::InstCombinerImpl::visitICmpInst().
|
inline |
Match either "add nuw" or "or disjoint".
Definition at line 1593 of file PatternMatch.h.
References LHS, llvm::PatternMatchHelpers::m_CombineOr(), m_DisjointOr(), m_NUWAdd(), and RHS.
Referenced by canonicalizeGEPOfConstGEPI8(), canonicalizeMaskForVLPredicate(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), foldNoWrapAdd(), hoistAdd(), isTruePredicate(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1504 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::findValuesAffectedByCondition(), getRangeForNUWMulSquare(), getUnsignedMonotonicValues(), isMultipleOfN(), simplifyDiv(), simplifyICmpWithConstant(), simplifyRem(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitUDiv().
|
inline |
Definition at line 1512 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpCommutative(), foldICmpEqualityWithOffset(), foldICmpShlLHSC(), optimizeShiftInOrChain(), simplifyAndInst(), simplifyLShrInst(), simplifyRem(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitLShr().
|
inline |
Definition at line 1496 of file PatternMatch.h.
References LHS, llvm::OverflowingBinaryOperator::NoUnsignedWrap, and RHS.
Referenced by llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromCmp(), computeKnownBitsFromLerpPattern(), llvm::computeOverflowForUnsignedSub(), llvm::InstCombinerImpl::foldAddLikeCommutative(), llvm::slpvectorizer::getScalarMaxValue(), hoistSub(), simplifyXorInst(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitLShr().
|
inline |
Matches trunc nuw.
Definition at line 2287 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::PredicateBase::getConstraint(), llvm::PatternMatch::ICmpLike_match< LHS_t, RHS_t >::match(), and llvm::InstCombinerImpl::visitZExt().
|
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 579 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeLowbitMask(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), checkForNegativeOperand(), combineRecipe(), combineSetCC(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::VPHistogramRecipe::computeCost(), computeKnownBitsFromOperator(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::VPlanTransforms::convertToConcreteRecipes(), despeculateCountZeros(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::VPVectorPointerRecipe::execute(), foldAddSubBoolOfMaskedVal(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithPow2AndWithZero(), foldAnyOrAllBitsSet(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), foldICmpOfUAddOv(), foldICmpWithHighBitMask(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldMulSelectToNegate(), foldMulShl1(), foldSelectICmpAndAnd(), foldSelectICmpMinMax(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), getRangeForIntrinsic(), handleOtherCmpSelSimplifications(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVEOrr(), instCombineSVEUMin(), instCombineSVEVectorMlaU(), llvm::VPWidenIntOrFpInductionRecipe::isCanonical(), llvm::Constant::isElementWiseEqual(), llvm::slpvectorizer::InstructionsState::isExpandedBinOp(), llvm::slpvectorizer::InstructionsState::isExpandedOperand(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), isKnownMonotonic(), llvm::isKnownToBeAPowerOfTwo(), isNeutralValue(), isRemOfLoopIncrementWithLoopInvariant(), isSignificantBitCheckWellFormed(), LowerAndToBT(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchAndOrChain(), matchEquivZeroRHS(), matchSelectPattern(), narrowBitOpRMW(), llvm::LoopVectorizePass::processLoop(), replaceConditionalBranchesOnConstant(), reverseZExtICmpCombine(), llvm::AssumptionPrinterPass::run(), simplifyBinaryIntrinsic(), simplifyExtractValueInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyMulInst(), simplifyOrInst(), simplifyRecipe(), simplifySelectInst(), simplifyValueKnownNonZero(), skipTrivialSelect(), llvm::InstCombinerImpl::takeLog2(), 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::visitTrunc(), llvm::InstCombinerImpl::visitURem(), llvm::InstCombinerImpl::visitXor(), and llvm::VPlanTransforms::widenMemoryAccessesByUF().
|
inline |
Definition at line 79 of file PatternMatch.h.
References T.
Referenced by llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match().
|
inline |
Definition at line 1339 of file PatternMatch.h.
Referenced by checkForNegativeOperand(), collectBitParts(), combineAndNotOrIntoAndNotAnd(), combineBTToBitOpFlag(), combineOr(), combineOrAndToBitfieldInsert(), combineOrOfSetCCToUSUBOCarry(), combineOrToBitfieldInsert(), combineOrWithGF2P8AFFINEQB(), 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(), llvm::slpvectorizer::getScalarMaxValue(), getUnsignedMonotonicValues(), isTruePredicate(), matchAndOrChain(), matchLogicBlend(), narrowBitOpRMW(), llvm::recognizeBSwapOrBitReverseIdiom(), llvm::TargetLowering::SimplifyDemandedBits(), 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 2609 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 2624 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 2667 of file PatternMatch.h.
References LHS, llvm::PatternMatchHelpers::m_CombineOr(), and RHS.
Referenced by getMinMaxRecurrence(), 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 2680 of file PatternMatch.h.
References LHS, llvm::PatternMatchHelpers::m_CombineOr(), and RHS.
Referenced by getMinMaxRecurrence(), and matchFastFloatClamp().
|
inline |
Match a PHI node, capturing it if we match.
Definition at line 896 of file PatternMatch.h.
Referenced by isRemOfLoopIncrementWithLoopInvariant(), and llvm::matchSimpleRecurrence().
|
inline |
Match an arbitrary poison constant.
Definition at line 174 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by canonicalizeInsertSplat(), canSkipDemandedEltsInInsertChain(), collectInsertionElements(), collectShuffleElements(), collectSingleShuffleElements(), llvm::InstCombinerImpl::commonCastTransforms(), foldIdentityExtractShuffle(), foldInsEltIntoIdentityShuffle(), foldInsSequenceIntoSplat(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldSpliceBinOp(), foldTruncShuffle(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::RISCVTTIImpl::instCombineIntrinsic(), m_AllOnesOrPoison(), m_ZeroOrPoison(), narrowVectorSelect(), llvm::VPlanTransforms::optimizeEVLMasks(), performANDORDUPNOTCombine(), shrinkFPConstantVector(), shrinkInsertElt(), shrinkSplatShuffle(), llvm::InstCombinerImpl::simplifyBinOpSplats(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::simplifyIntrinsic(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitFNeg(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Match a positive infinity FP constant.
For vectors, this includes constants with undefined elements.
Definition at line 749 of file PatternMatch.h.
|
inline |
Match a floating-point positive zero.
For vectors, this includes constants with undefined elements.
Definition at line 804 of file PatternMatch.h.
|
inline |
Match an integer or vector power-of-2.
For vectors, this includes constants with undefined elements.
Definition at line 619 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromCmp(), foldAddToAshr(), llvm::InstCombinerImpl::foldICmpSRemConstant(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpUsingKnownBits(), foldSelectICmpAndBinOp(), foldSignedTruncationCheck(), llvm::isKnownToBeAPowerOfTwo(), isPowerOfTwoRecurrence(), simplifyAndInst(), simplifyICmpWithBinOp(), llvm::InstCombinerImpl::takeLog2(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 620 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 652 of file PatternMatch.h.
Referenced by llvm::isKnownToBeAPowerOfTwo().
|
inline |
Definition at line 655 of file PatternMatch.h.
|
inline |
Matches GEP with i8 source element type.
Definition at line 2130 of file PatternMatch.h.
Referenced by canonicalizeGEPOfConstGEPI8(), foldExtractOfStridedPointerVector(), llvm::ConditionalInductionDescriptor::isConditionalInductionPHI(), simplifyCastInst(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Matches PtrToAddr.
Definition at line 2255 of file PatternMatch.h.
Referenced by llvm::vputils::getSCEVExprForVPValue(), isNonZeroAddrPlusOffset(), m_PtrToIntOrAddr(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Matches PtrToInt.
Definition at line 2242 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpOrConstant(), isKnownNonZeroFromAssume(), isNonZeroAddrPlusOffset(), m_PtrToIntOrAddr(), simplifyGEPInst(), and llvm::InstCombinerImpl::visitSub().
Matches PtrToInt or PtrToAddr.
Definition at line 2260 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_PtrToAddr(), and m_PtrToInt().
Referenced by addValueAffectedByCondition(), isImpliedCondICmps(), simplifyBinaryIntrinsic(), simplifyCastInst(), simplifyGEPInst(), simplifySubInst(), tryToImproveAlign(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 2247 of file PatternMatch.h.
References DL.
Referenced by computeKnownBitsFromCmp(), isKnownNonEqual(), llvm::InstCombinerImpl::visitIntToPtr(), and llvm::InstCombinerImpl::visitSub().
|
inline |
Definition at line 1303 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddToAshr(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::FoldShiftByConstant(), llvm::vputils::getSCEVExprForVPValue(), MatchDiv(), simplifyDivRem(), simplifyGEPInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSDiv().
|
inline |
Matches SelectInst.
Definition at line 1965 of file PatternMatch.h.
References C(), Cond, LHS, and RHS.
Referenced by annotateNonNullAndDereferenceable(), breakSelfRecursivePHI(), llvm::canConvertToMinOrMaxIntrinsic(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), combineRecipe(), llvm::InstCombinerImpl::commonIDivRemTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::VPlanTransforms::convertEVLExitCond(), llvm::VPlanTransforms::createInLoopReductionRecipes(), llvm::VPlanTransforms::createPartialReductions(), llvm::vputils::findComputeReductionResult(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), foldBitCastSelect(), llvm::InstCombinerImpl::foldCmpSelectOfConstants(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), foldMulHigh(), foldMulSelectToNegate(), FoldOrOfSelectSmaxToAbs(), foldRoundUpToPow2Alignment(), foldSelectGEP(), llvm::InstCombinerImpl::foldSelectICmp(), foldSelectSplitCTLZCTTZ(), foldSelectToUSATI(), llvm::InstCombinerImpl::FoldShiftByConstant(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::slpvectorizer::getScalarMaxValue(), slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::VPlanTransforms::handleFindLastReductions(), handleFirstArgMinOrMax(), llvm::VPlanTransforms::handleMultiUseReductions(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), llvm::RecurrenceDescriptor::isFindPattern(), llvm::slpvectorizer::isReductionCandidate(), isSignificantBitCheckWellFormed(), llvm::isSplatValue(), m_SelectCst(), llvm::PatternMatch::SelectLike_match< CondTy, LTy, RTy >::match(), matchBitmaskMul(), RecurrenceInfo::matchConditionalRecurrence(), matchSelectWithOptionalNotCond(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), narrowVectorSelect(), llvm::VPlanTransforms::optimizeFindIVReductions(), PerformSELECTShiftCombine(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), simplifyAndInst(), simplifyLogicalRecipe(), simplifyOrInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), skipTrivialSelect(), llvm::VPlanTransforms::truncateToMinimalBitwidths(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractValueInst(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFPTrunc(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitGEPOfGEP(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
This matches a select of two constants, e.g.: m_SelectCst<-1, 0>(m_Value(V))
Definition at line 1974 of file PatternMatch.h.
References C(), Cond, m_ConstantInt(), and m_Select().
|
inline |
Matches a value that behaves like a boolean-controlled select, i.e.
one of: select i1 Cond, TrueC, FalseC zext i1 Cond (equivalent to select i1 Cond, 1, 0) sext i1 Cond (equivalent to select i1 Cond, -1, 0)
The condition is matched against Cond, and the true/false constants against TrueC and FalseC respectively. For zext/sext, the synthetic constants are bound to TrueC and FalseC via their matchers.
Definition at line 2432 of file PatternMatch.h.
References C().
Referenced by combineRecipe(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldICmpBinOpWithConstantViaTruthTable(), foldSelectWithIdentityConstant(), llvm::VPlanTransforms::handleFindLastReductions(), llvm::VPlanTransforms::handleMultiUseReductions(), llvm::VPlanTransforms::optimizeFindIVReductions(), optimizeMaskToEVL(), performNanGuardFpToSatCombine(), takeInexpensiveLog2(), and tryToFoldExtendSelectLoad().
|
inline |
Matches SExt.
Definition at line 2306 of file PatternMatch.h.
Referenced by canSafelyConvertTo16Bit(), combineAnd(), combinePExtWideningSubAcc(), combineRecipe(), llvm::InstCombinerImpl::commonShiftTransforms(), decomposeImpl(), detectPMADDUBSW(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldSelectToUSATI(), getBoolVecFromMask(), llvm::AArch64TTIImpl::getCastInstrCost(), llvm::slpvectorizer::getScalarMaxValue(), llvm::vputils::getSCEVExprForVPValue(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), m_SExtLike(), m_SExtOrSelf(), m_ZExtOrSExt(), llvm::PatternMatch::SelectLike_match< CondTy, LTy, RTy >::match(), matchDot4Pattern(), matchPMADDWD_2(), matchSelectPattern(), narrowInsElt(), simplifyAndInst(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyOrInst(), 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 2336 of file PatternMatch.h.
References llvm::PatternMatchHelpers::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 2329 of file PatternMatch.h.
References llvm::PatternMatchHelpers::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 1682 of file PatternMatch.h.
Referenced by detectShiftUntilZeroIdiom(), dropRedundantMaskingOfLeftShiftInput(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldCttzCtlz(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 500 of file PatternMatch.h.
Referenced by foldNegativePower2AndShiftedMask().
|
inline |
Definition at line 1351 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), combineAdd(), combineAddSubWithShlAddSub(), combineBTToBitOpFlag(), combineNarrowableShiftedLoad(), combineOrAndToBitfieldInsert(), combineRecipe(), combineSetCC(), combineShlAddIAddImpl(), computeKnownBitsFromCmp(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), decomposeImpl(), llvm::decomposeLinearExpression(), detectShiftUntilBitTestIdiom(), dropRedundantMaskingOfLeftShiftInput(), factorizeMathWithShlOps(), llvm::vputils::findCanonicalIVIncrement(), 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(), llvm::AArch64TTIImpl::getCastInstrCost(), llvm::slpvectorizer::getScalarMaxValue(), llvm::vputils::getSCEVExprForVPValue(), llvm::ScalarEvolution::getStrengthenedNoWrapFlagsFromBinOp(), haveNoCommonBitsSetSpecialCases(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::slpvectorizer::InstructionsState::isExpandedBinOp(), llvm::slpvectorizer::InstructionsState::isExpandedOperand(), llvm::isKnownToBeAPowerOfTwo(), isNonEqualShl(), llvm::X86TTIImpl::isProfitableToSinkOperands(), LowerAndToBT(), MatchMul(), matchOrConcat(), matchZExtedSubInteger(), narrowBitOpRMW(), PerformSELECTShiftCombine(), setShiftFlags(), shouldCanonicalizeGEPToPtrAdd(), shouldSinkVScale(), simplifyAndCommutative(), simplifyAndInst(), simplifyAShrInst(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), llvm::simplifyIntrinsic(), simplifyIRemMulShl(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), simplifyOrInst(), simplifyRecipe(), simplifyShiftSelectingPackedElement(), 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 1388 of file PatternMatch.h.
Referenced by foldLoadsRecursive(), and matchSubIntegerPackFromVector().
|
inline |
Matches logical shift operations.
Definition at line 1689 of file PatternMatch.h.
Referenced by computeKnownBitsFromCmp(), decomposeImpl(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::slpvectorizer::matchExtractedField(), 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 2081 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), combineConcatVectorOfShuffles(), llvm::InstCombinerImpl::commonCastTransforms(), foldFDivPowDivisor(), llvm::InstCombinerImpl::foldICmpBitCast(), foldIdentityExtractShuffle(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), llvm::getSplatValue(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), matchSubIntegerPackFromVector(), narrowVectorSelect(), performANDORDUPNOTCombine(), shrinkSplatShuffle(), llvm::InstCombinerImpl::simplifyBinOpSplats(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyReductionOperand(), and llvm::InstCombinerImpl::visitFNeg().
|
inline |
Definition at line 2087 of file PatternMatch.h.
References mask().
|
inline |
Match an integer or vector with only the sign bit(s) set.
For vectors, this includes constants with undefined elements.
Definition at line 664 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAddSigned(), canonicalizeSaturatedSubtractSigned(), 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 3177 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::foldICmpOrConstant(), and llvm::InstCombinerImpl::foldICmpTruncConstant().
|
inline |
Definition at line 2442 of file PatternMatch.h.
Referenced by foldFCmpFAbsFSubIntToFP(), foldFPtoI(), llvm::InstCombinerImpl::foldICmpBitCast(), and m_IToFP().
|
inline |
Definition at line 2896 of file PatternMatch.h.
References m_Intrinsic().
Referenced by detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldICmpWithClamp(), FoldOrOfSelectSmaxToAbs(), getMinMaxRecurrence(), m_MaxOrMin(), matchClamp(), simplifyICmpWithMinMax(), tryToFPToSat(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 2901 of file PatternMatch.h.
References m_Intrinsic().
Referenced by detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldICmpWithZero(), getMinMaxRecurrence(), m_MaxOrMin(), matchClamp(), simplifyICmpWithMinMax(), tryToFPToSat(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Match if we have a specific specified value.
Definition at line 975 of file PatternMatch.h.
Referenced by llvm::VPlanTransforms::adjustFirstOrderRecurrenceMiddleUsers(), breakSelfRecursivePHI(), canoncalizeSelectICmpMinMax(), canonicalizeAbs(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), canonicalizeSaturatedSubtractSigned(), canonicalizeSaturatedSubtractUnsigned(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), checkOuterLoopInsts(), collectComplementaryPredicatedMemOps(), combineBTToBitOpFlag(), combineLogicBlendIntoConditionalNegate(), combineNegOfSelectCCSubs(), combineRecipe(), combineSelect(), combineShiftLeft(), combineShiftRightLogical(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsAddSub(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromICmpCond(), computeKnownBitsFromLerpPattern(), computeKnownBitsFromOperator(), computeKnownExponentRangeFromContext(), computeKnownFPClassFromCond(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), llvm::VPlanTransforms::convertEVLExitCond(), convertFSqrtDivIntoFMul(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::VPlanTransforms::convertToVariableLengthStep(), llvm::VPlanTransforms::createPartialReductions(), createWidenInductionRecipe(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), directlyImpliesPoison(), factorizeFAddFSub(), factorizeMathWithShlOps(), llvm::vputils::findCanonicalIVIncrement(), findFindIVSelect(), llvm::findHistogram(), foldAbsDiff(), foldAddIntoDotAccumulator(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddToAshr(), foldAdjacentReversesIntoTbls(), foldAndOrOfICmpEqConstantAndICmp(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpSelectBinOp(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBoxMultiply(), foldComplexAndOrPatterns(), foldCttzCtlz(), foldDependentIVs(), foldFCmpFNegCommonOp(), foldFCmpFSubIntoFCmp(), foldFCmpWithFloorAndCeil(), llvm::InstCombinerImpl::foldFMulReassoc(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), foldICmpAndXX(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpEqualityWithOffset(), foldICmpOrXX(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldICmpWithClamp(), foldICmpWithDominatingICmp(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithLowBitMaskedVal(), foldICmpXorXX(), foldIDivShl(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldIsPowerOf2(), foldMaskedShiftToUSHL(), foldMinMaxSharedOp(), foldMulHigh(), llvm::InstCombinerImpl::foldOpIntoPhi(), llvm::InstCombinerImpl::FoldOrOfLogicalAnds(), FoldOrOfSelectSmaxToAbs(), foldOrToXor(), llvm::InstCombinerImpl::foldPowiReassoc(), foldRoundUpToPow2Alignment(), foldSelectBinOpIdentity(), llvm::InstCombinerImpl::foldSelectICmp(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), foldSelectICmpMinMax(), foldSelectShuffleWith1Binop(), foldSelectSplitCTLZ(), foldSelectSplitCTTZ(), foldSelectToUSATI(), foldSelectZeroOrFixedOp(), foldSetClearBits(), foldSignedTruncationCheck(), foldSpliceBinOp(), foldSubOfMinMax(), llvm::VPlanTransforms::foldTailByMasking(), foldToMaskedStore(), foldTruncInsEltPair(), foldUnsignedUnderflowCheck(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::foldVectorBinop(), foldXorToXor(), getBundleFromUse(), llvm::AArch64TTIImpl::getCastInstrCost(), llvm::PredicateBase::getConstraint(), llvm::vputils::getFlagsForInduction(), getFSqrtDivOptPattern(), getInvertibleOperands(), getOptimizableIVOf(), getRangeForNUWMulSquare(), getRangeForSelectPattern(), llvm::VPlanTransforms::handleFindLastReductions(), handleFirstArgMinOrMax(), llvm::VPlanTransforms::handleMultiUseReductions(), handleUncountableExitsWithSideEffects(), haveNoCommonBitsSetSpecialCases(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineSVEAnd(), instCombineSVEOrr(), instCombineSVEPairwiseAddLong(), instCombineSVEUMin(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), instCombineXorSVECmpCC(), instCombineZExtSVECmpNE(), llvm::invertCondition(), llvm::ConditionalInductionDescriptor::isConditionalInductionPHI(), isConditionalOnXorOfPHIs(), isConditionTrueViaVFAndUF(), isDivZero(), isEqualImpl(), llvm::RecurrenceDescriptor::isFindPattern(), isFoldedIntoRsqrtEstimate(), isImpliedCondICmps(), isImpliedToBeAPowerOfTwoFromCond(), llvm::ConstantPtrAuth::isKnownCompatibleWith(), llvm::isKnownInversion(), llvm::isKnownNegation(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), llvm::isKnownToBeAPowerOfTwo(), isNonEqualMul(), isNonEqualShl(), isNonEqualURem(), isRemOfLoopIncrementWithLoopInvariant(), isRightShiftBitTestKnownToTerminate(), isSignificantBitCheckWellFormed(), isTruePredicate(), llvm::vputils::isUsedByLoadStoreAddress(), isUsedWithinShuffleVector(), lookThroughCast(), matchAddCC(), matchAndCC(), matchBSL(), matchClamp(), matchExpandedRem(), matchFastFloatClamp(), matchICmpOperand(), matchOpWithOpEqZero(), matchOrCC(), matchOrConcat(), matchSelectPattern(), matchSubCC(), matchUAddWithOverflowConstantEdgeCases(), matchXorCC(), llvm::VPlanTransforms::modelGeneratedMainLoopBlocks(), llvm::VPlanTransforms::narrowInterleaveGroups(), optimizeBranch(), llvm::VPlanTransforms::optimizeEVLMasks(), llvm::VPlanTransforms::optimizeFindIVReductions(), optimizeMaskToEVL(), optimizeVectorInductionWidthForTCAndVFUF(), passingValueIsAlwaysUndefined(), performMINMAXCombine(), performNanGuardFpToSatCombine(), performReverseEVLCombine(), performVP_STORECombine(), processUse(), reassociateHeaderMask(), removeCommonBlendMask(), llvm::VPlanTransforms::replicateByVF(), llvm::LoopVectorizationPlanner::selectBestEpiloguePlan(), setLimitsForBinOp(), setShiftFlags(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfFCmps(), simplifyAndOrOfICmpsWithCtpop(), simplifyAShrInst(), simplifyBinaryIntrinsic(), simplifyBranchConditionForVFAndUF(), simplifyCmpSelOfMaxMin(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), simplifyFAddInst(), simplifyFDivInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithIntrinsicOnLHS(), llvm::simplifyInsertElementInst(), llvm::simplifyIntrinsic(), simplifyIRemMulShl(), simplifyLogicOfAddSub(), simplifyLShrInst(), simplifyMulInst(), simplifyOperationIntoSelectOperand(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), llvm::InstCombinerImpl::simplifyRangeCheck(), simplifyRem(), simplifySelectBitTest(), simplifySelectInst(), simplifySelectWithICmpCond(), simplifyShlInst(), simplifySubInst(), simplifySwitchOnSelectUsingRanges(), simplifyUnsignedRangeCheck(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), swapICmpOperandsToExposeCSEOpportunities(), trySimplifyICmpWithAdds(), tryToMoveFreeBeforeNullTest(), 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::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Match a specific basic block value.
Definition at line 1097 of file PatternMatch.h.
Referenced by foldGuardedFunnelShift().
|
inline |
Definition at line 1848 of file PatternMatch.h.
Referenced by combineRecipe(), llvm::VPlanTransforms::convertEVLExitCond(), and foldOrUnsignedUMulOverflowICmp().
|
inline |
Definition at line 1866 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 1008 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 1854 of file PatternMatch.h.
Referenced by llvm::VPlanTransforms::convertEVLExitCond(), llvm::InstCombinerImpl::foldDivCeil(), foldGuardedFunnelShift(), foldMulHigh(), llvm::InstCombinerImpl::foldOpIntoPhi(), FoldOrOfSelectSmaxToAbs(), foldRoundUpToPow2Alignment(), llvm::VPlanTransforms::foldTailByMasking(), llvm::X86TargetLowering::getJumpConditionMergingParams(), isConditionTrueViaVFAndUF(), matchAndCC(), matchOpWithOpEqZero(), matchOrCC(), matchSignedNewValueCC(), llvm::VPlanTransforms::optimizeEVLMasks(), processUse(), simplifyLogicalRecipe(), simplifyOperationIntoSelectOperand(), llvm::stripNullTest(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Match a specific integer value or vector with all elements equal to the value.
Definition at line 1064 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedSubtractUnsigned(), combineAdd(), combineBitcast(), combineBTToBitOpFlag(), combineOr(), combineSelect(), combineShiftLeft(), combineShiftRightArithmetic(), combineShiftRightLogical(), combineShiftToPMULH(), combineVectorInsert(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromOperator(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatUPattern(), EmitCmp(), expandMulToAddOrSubOfShl(), llvm::vputils::findCanonicalIVIncrement(), FindSingleBitChange(), llvm::InstCombinerImpl::foldAddLikeCommutative(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToUsubsat(), foldBoxMultiply(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpEquality(), foldInsEltIntoIdentityShuffle(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), foldMaskedShiftToUSHL(), foldMulHigh(), foldRoundUpToPow2Alignment(), foldSelectSplitCTLZ(), foldSelectSplitCTTZ(), foldSelectToUSATI(), llvm::InstCombinerImpl::foldSquareSumInt(), getShlAddShlAdd(), handleUncountableExitsWithSideEffects(), instCombineSVEDup(), llvm::X86TTIImpl::isProfitableToSinkOperands(), isSignificantBitCheckWellFormed(), isSupportedMemset(), deinterleaving_tbl_match::match(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchOrConcat(), matchPopCountBytes(), optimizeBranch(), performLastTrueTestVectorCombine(), performMINMAXCombine(), performPredicateLoadCombine(), PerformSELECTShiftCombine(), performSRLCombine(), processUse(), simplifyAndInst(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyGEPInst(), llvm::simplifyIntrinsic(), simplifyOrInst(), simplifySelectWithICmpCond(), simplifyShlInst(), simplifyWithOpsReplaced(), splitMergedValStore(), trySQABSCombine(), tryToRecognizePopCount(), tryToRecognizePopCount1(), tryToRecognizePopCount2n3(), tryToRecognizeTableBasedLog2(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), and widenBuildVector().
|
inline |
Definition at line 1068 of file PatternMatch.h.
References uint64_t.
|
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 700 of file PatternMatch.h.
References P.
Referenced by canNarrowShiftAmt(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), foldSelectICmpLshrAshr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::visitAnd(), and llvm::InstCombinerImpl::visitTrunc().
|
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 710 of file PatternMatch.h.
References P.
Referenced by foldSelectICmpAndAnd().
|
inline |
Definition at line 1072 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpEqConstantAndICmp(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::FoldShiftByConstant(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Definition at line 1076 of file PatternMatch.h.
References uint64_t.
|
inline |
Definition at line 1131 of file PatternMatch.h.
References m_SpecificType(), and m_Value().
|
inline |
Match a value of a specific type.
Definition at line 1128 of file PatternMatch.h.
References P, and SpecificType_match().
Referenced by m_SpecificType(), m_SpecificType(), and m_SpecificType().
Definition at line 1139 of file PatternMatch.h.
References m_SpecificType(), and m_Value().
Match a value of a specific type, capturing it if we match.
Definition at line 1136 of file PatternMatch.h.
References m_SpecificType(), and m_Value().
|
inline |
Match a vector splat.
May be a constant splat or a shufflevector of the first element.
Definition at line 242 of file PatternMatch.h.
References T.
Referenced by llvm::InstCombinerImpl::foldVectorBinop().
|
inline |
Definition at line 2971 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::InstCombinerImpl::foldFMulReassoc(), foldSqrtWithFcmpZero(), getFSqrtDivOptPattern(), and simplifyFMAFMul().
|
inline |
Definition at line 1321 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::computeOverflowForSignedSub(), llvm::vputils::getSCEVExprForVPValue(), isDivZero(), MatchRem(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitLShr(), and llvm::InstCombinerImpl::visitSRem().
|
inline |
Matches StoreInst.
Definition at line 2116 of file PatternMatch.h.
Referenced by computeShapeInfoForInst(), and llvm::findHistogram().
|
inline |
Match an integer or vector of strictly positive values.
For vectors, this includes constants with undefined elements.
Definition at line 557 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAddSigned(), matchSelectPattern(), and llvm::InstCombinerImpl::visitCallInst().
|
inline |
Definition at line 560 of file PatternMatch.h.
|
inline |
Definition at line 1231 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedSubtractUnsigned(), combineAdd(), combineBasicSADPattern(), combineNegOfSelectCCSubs(), combinePExtWideningSubAcc(), combineRecipe(), llvm::InstCombinerImpl::commonIDivTransforms(), computeKnownBitsFromOperator(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::VPlanTransforms::createInLoopReductionRecipes(), decomposeImpl(), detectShiftUntilZeroIdiom(), llvm::findHistogram(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), foldAbsDiff(), llvm::InstCombinerImpl::foldAddLikeCommutative(), llvm::InstCombinerImpl::foldAddWithConstant(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrXorSubChain(), foldSubCtlzNot(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::vputils::getFlagsForInduction(), llvm::InstCombiner::getFreelyInvertedImpl(), getKnownBitsFromAndXorOr(), getOptimizableIVOf(), llvm::vputils::getSCEVExprForVPValue(), haveNoCommonBitsSetSpecialCases(), hoistSubAddAssociation(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isImpliedCondICmps(), llvm::isKnownNegation(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), m_Neg(), matchExpandedRem(), matchIncrement(), matchPopCountBytes(), matchSubCC(), optimizeBranch(), processUse(), reassociateAddSubLong(), ShouldBreakUpDistribution(), simplifyAddInst(), simplifyCastInst(), llvm::TargetLowering::SimplifyDemandedBits(), simplifyGEPInst(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithIntrinsicOnLHS(), simplifyLogicOfAddSub(), simplifyOrInst(), simplifySubInst(), simplifyUnsignedRangeCheck(), swapICmpOperandsToExposeCSEOpportunities(), tryToMatchAndCreateMulAccumulateReduction(), tryToRecognizeTableBasedLog2(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Matches Trunc.
Definition at line 2280 of file PatternMatch.h.
Referenced by addValueAffectedByCondition(), collectBitParts(), combineMaskBitOp(), combineRecipe(), combineStore(), computeKnownBitsFromCond(), computeKnownBitsFromICmpCond(), llvm::decomposeBitTest(), llvm::decomposeBitTestICmp(), dropRedundantMaskingOfLeftShiftInput(), llvm::findValuesAffectedByCondition(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldSelectICmpAndAnd(), foldSelectSplitCTLZ(), foldSelectSplitCTTZ(), foldSelectToUSATI(), foldSignedTruncationCheck(), foldTruncInsEltPair(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::AArch64TargetLowering::getJumpConditionMergingParams(), llvm::slpvectorizer::getScalarMaxValue(), llvm::vputils::getSCEVExprForVPValue(), isKnownNonNullFromDominatingCondition(), isKnownNonZeroFromAssume(), isSignificantBitCheckWellFormed(), m_TruncOrSelf(), m_ZExtOrTruncOrSelf(), llvm::slpvectorizer::matchExtractedField(), matchIntPart(), matchPartStore(), performAddTruncShiftCombine(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), reverseZExtICmpCombine(), simplifyRecipe(), simplifySubInst(), llvm::InstCombinerImpl::takeLog2(), tryToImproveAlign(), tryToRecognizePopCount2n3(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitUIToFP(), llvm::InstCombinerImpl::visitZExt(), and widenBuildVector().
|
inline |
Definition at line 2300 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), and m_Trunc().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::VPlanTransforms::handleMultiUseReductions(), LowerAndToBT(), optimizeMaskToEVL(), PerformSELECTShiftCombine(), 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 2771 of file PatternMatch.h.
Referenced by llvm::InstCombinerImpl::visitICmpInst().
|
inline |
Definition at line 1297 of file PatternMatch.h.
Referenced by combineRecipe(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::foldDivCeil(), llvm::InstCombinerImpl::foldICmpCommutative(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), llvm::vputils::getSCEVExprForVPValue(), isTruePredicate(), MatchDiv(), processUse(), simplifyDivRem(), simplifyICmpWithBinOpOnLHS(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitUDiv().
|
inline |
Definition at line 2437 of file PatternMatch.h.
Referenced by foldFCmpFAbsFSubIntToFP(), foldFPtoI(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), m_IToFP(), uitofp_tbl_match::match(), simplifyICmpWithConstant(), and llvm::InstCombinerImpl::visitFMul().
|
inline |
Definition at line 2906 of file PatternMatch.h.
References m_Intrinsic().
Referenced by combineBasicSADPattern(), llvm::findHistogram(), llvm::InstCombinerImpl::foldAddWithConstant(), foldClampRangeOfTwo(), llvm::InstCombinerImpl::foldICmpWithClamp(), getMinMaxRecurrence(), m_MaxOrMin(), matchClamp(), simplifyICmpWithMinMax(), and llvm::InstCombinerImpl::visitICmpInst().
|
inline |
Definition at line 2911 of file PatternMatch.h.
References m_Intrinsic().
Referenced by combineBasicSADPattern(), combineShiftRightArithmetic(), detectSSatUPattern(), detectUSatPattern(), detectUSatUPattern(), llvm::findHistogram(), foldClampRangeOfTwo(), foldSubOfMinMax(), foldToUnsignedSaturatedAdd(), getMinMaxRecurrence(), m_MaxOrMin(), matchClamp(), processUse(), simplifyICmpWithMinMax(), simplifySwitchWhenUMin(), trySQABSCombine(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 2498 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 168 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), combineOr(), combineTargetShuffle(), llvm::ConstantFoldBinaryInstruction(), evaluateInDifferentElementOrder(), llvm::InstCombinerImpl::foldICmpBitCast(), foldIdentityPaddedShuffles(), foldInsEltIntoSplat(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectZeroOrFixedOp(), foldTruncInsEltPair(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::X86TTIImpl::instCombineIntrinsic(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::SimplifyQuery::isUndefValue(), likeBitCastFromVector(), markAliveBlocks(), llvm::Constant::mergeUndefsWith(), llvm::RISCVTargetLowering::PerformDAGCombine(), performPredicateLoadCombine(), llvm::Constant::replaceUndefsWith(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyReductionOperand(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitFreeze(), llvm::InstCombinerImpl::visitInsertElementInst(), and llvm::InstCombinerImpl::visitShuffleVectorInst().
|
inline |
Match an arbitrary UndefValue constant.
Definition at line 171 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by llvm::InstCombinerImpl::commonIDivRemTransforms(), and llvm::maskContainsAllOneOrUndef().
|
inline |
Match an UndefValue, capturing the value if we match.
Definition at line 899 of file PatternMatch.h.
|
inline |
Match an arbitrary unary operation and ignore it.
Definition at line 139 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by cheapToScalarize(), llvm::InstCombinerImpl::visitCallInst(), and llvm::InstCombinerImpl::visitExtractElementInst().
|
inline |
Definition at line 1185 of file PatternMatch.h.
References X.
|
inline |
Definition at line 873 of file PatternMatch.h.
References I.
|
inline |
Match a unary operator, capturing it if we match.
Definition at line 872 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 2639 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 2654 of file PatternMatch.h.
|
inline |
Definition at line 1315 of file PatternMatch.h.
Referenced by canScalarizeAccess(), combineRecipe(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::computeOverflowForUnsignedSub(), llvm::InstCombinerImpl::foldDivCeil(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::vputils::getSCEVExprForVPValue(), isNonEqualURem(), isRemOfLoopIncrementWithLoopInvariant(), MatchRem(), simplifyICmpWithBinOpOnLHS(), and simplifySelectWithICmpCond().
|
inline |
Match an arbitrary value and ignore it.
Definition at line 136 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_Isa().
Referenced by addValueAffectedByCondition(), analyzeCostOfVecReduction(), annotateNonNullAndDereferenceable(), areExtractExts(), areExtractExts(), areExtractShuffleVectors(), breakSelfRecursivePHI(), llvm::InstCombiner::canBeCastedExactlyIntToFP(), llvm::canConvertToMinOrMaxIntrinsic(), llvm::InstCombiner::canFreelyInvertAllUsersOf(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeGEPOfConstGEPI8(), canonicalizeInsertSplat(), canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeMaskForVLPredicate(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), llvm::canPeelLastIteration(), canProveExitOnFirstIteration(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), canSafelyConvertTo16Bit(), canScalarizeAccess(), canShiftBinOpWithConstantRHS(), cheapToScalarize(), checkForNegativeOperand(), checkOrAndOpImpliedByOther(), collectBitParts(), llvm::slpvectorizer::collectNarrowedLeavesImpl(), collectUnswitchCandidatesWithInjections(), combineAdd(), combineAddMulh(), combineAddOfExts(), combineAddPackedByteDot(), combineAddSubWithShlAddSub(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndOnGF2P8AFFINEQBOperand(), combineAndXorSubWithBMI(), combineBasicSADPattern(), combineBitcast(), combineBTToBitOpFlag(), combineCastedMaskArithmetic(), combineConcatVectorOfShuffles(), combineConcatVectorOps(), combineLogicBlendIntoConditionalNegate(), combineMaskBitOp(), combineNarrowableShiftedLoad(), combineNegOfSelectCCSubs(), combineNestedGF2P8AFFINEQB(), combineOr(), combineOrAndToBitfieldInsert(), combineOrOfSetCCToUSUBOCarry(), combineOrToBitfieldInsert(), combineOrWithGF2P8AFFINEQB(), combinePExtWideningAddAcc(), combinePExtWideningSubAcc(), combinePMULH(), combineSCALAR_TO_VECTOR(), combineSetCC(), combineShiftOfLogicOp(), combineShiftRightArithmetic(), combineShiftRightLogical(), combineShiftToPMULH(), combineShlAddIAddImpl(), combineStore(), combineTargetShuffle(), combineVectorInsert(), combineVTRUNCSAT(), combineXorOnGF2P8AFFINEQBOperand(), combineXorToBitfieldInsert(), combineXorWithGF2P8AFFINEQB(), combineXorWithTwoGF2P8AFFINEQB(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivRemTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), commuteSelect(), llvm::computeConstantRange(), computeKnownBitsAddSub(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), computeKnownBitsFromLerpPattern(), computeKnownBitsFromOperator(), computeKnownFPClass(), computeKnownFPClassFromCond(), ComputeNumSignBitsImpl(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), computeShapeInfoForInst(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), convertTo16Bit(), countToEliminateCompares(), llvm::decomposeBitTest(), llvm::decomposeBitTestICmp(), decomposeImpl(), llvm::decomposeLinearExpression(), detectPMADDUBSW(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), detectUSatUPattern(), dropRedundantMaskingOfLeftShiftInput(), EmitCmp(), expandMulToAddOrSubOfShl(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), llvm::findHistogram(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::findScalarElement(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), foldAddIntoDotAccumulator(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddSubBoolOfMaskedVal(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToUsubsat(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBitOrderCrossLogicOp(), foldBoxMultiply(), foldClampRangeOfTwo(), foldCmpIntrinsicOfExtended(), llvm::InstCombinerImpl::foldCmpSelectOfConstants(), foldComplexAndOrPatterns(), foldCopySignIdioms(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldDivCeil(), foldExtractOfStridedPointerVector(), foldFabsWithFcmpZero(), foldFCmpFAbsFSubIntToFP(), foldFCmpFNegCommonOp(), foldFCmpFSubIntoFCmp(), foldFDivConstantDividend(), foldFDivPowDivisor(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldFPtoI(), 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(), foldICmpEqualityWithOffset(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpInvariantGroup(), foldICmpOfUAddOv(), foldICmpOfVectorReduce(), 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(), foldIsPowerOf2OrZero(), foldLoadsRecursive(), foldLogicCastConstant(), foldLogOpOfMaskedICmps_NotAllZeros_BMask_Mixed(), foldMaskedAddXorPattern(), foldMaskedMerge(), foldMinimumOverTrailingOrLeadingZeroCount(), foldMinMaxSharedOp(), foldMulHigh(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNotXor(), foldNoWrapAdd(), foldOrOfInversions(), llvm::InstCombinerImpl::FoldOrOfLogicalAnds(), FoldOrOfSelectSmaxToAbs(), foldOrToXor(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), llvm::InstCombinerImpl::foldPtrToIntOrAddrOfGEP(), foldReduceOperandViaVDOT4A(), foldReductionIdiom(), llvm::InstCombinerImpl::foldReversedIntrinsicOperands(), foldRoundUpToPow2Alignment(), foldSelectBinOpIdentity(), foldSelectGEP(), foldSelectICmpAndAnd(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectSplitCTLZ(), foldSelectSplitCTLZCTTZ(), foldSelectSplitCTTZ(), foldSelectToUSATI(), foldSelectWithIdentityConstant(), foldSelectZeroOrFixedOp(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldShuffleOfUnaryOps(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldSpliceBinOp(), 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::getCastInstrCost(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getComplexity(), getDomPredecessorCondition(), llvm::InstCombiner::getFreelyInvertedImpl(), getFSqrtDivOptPattern(), getFusableFMulOperand(), getHashValueImpl(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), getInvertibleOperands(), llvm::AArch64TargetLowering::getJumpConditionMergingParams(), llvm::SystemZTargetLowering::getJumpConditionMergingParams(), llvm::X86TargetLowering::getJumpConditionMergingParams(), getKnownBitsFromAndXorOr(), getKnownSign(), getKnownSignOrZero(), getMaskedTypeForICmpPair(), getMinimumFPType(), getMinMaxRecurrence(), getNotValue(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::slpvectorizer::getScalarMaxValue(), slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), getShlAddShlAdd(), llvm::X86TTIImpl::getShuffleCost(), llvm::getSplatValue(), llvm::ScalarEvolution::getStrengthenedNoWrapFlagsFromBinOp(), slpvectorizer::BoUpSLP::getTreeCost(), getUnsignedMonotonicValues(), hasProcessableCondition(), hasRequiredFastMathFlags(), haveNoCommonBitsSetSpecialCases(), hoistAdd(), hoistAddSub(), hoistInsEltConst(), hoistMinMax(), hoistSub(), hoistSubAddAssociation(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVEAnd(), instCombineSVEDupqLane(), instCombineSVELast(), instCombineSVEOrr(), instCombineSVEPairwiseAddLong(), instCombineSVESrshl(), instCombineSVEUMin(), instCombineSVEUzp1(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEZip(), llvm::invertCondition(), isAbsoluteValueULEOne(), isAllActivePredicate(), isAMXCast(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::slpvectorizer::CmpSamePredicateHelper::isBitTest(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::ConditionalInductionDescriptor::isConditionalInductionPHI(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isDivZero(), isEqualImpl(), llvm::slpvectorizer::InstructionsState::isExpandedBinOp(), llvm::slpvectorizer::InstructionsState::isExpandedOperand(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), llvm::RecurrenceDescriptor::isFindPattern(), isFMulAddCandidate(), isFNeg(), isFoldedIntoRsqrtEstimate(), isFrexpExp(), isFusableFMulOperand(), isImpliedCondAndOr(), isImpliedCondICmps(), llvm::isImpliedCondition(), llvm::isImpliedCondition(), isInstructionPairMul(), llvm::ConstantPtrAuth::isKnownCompatibleWith(), llvm::isKnownInversion(), llvm::isKnownNegation(), isKnownNonEqual(), isKnownNonNullFromDominatingCondition(), isKnownNonPositive(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), isKnownNoWrap(), llvm::isKnownToBeAPowerOfTwo(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), llvm::X86TTIImpl::isLegalAltInstr(), isMaskOrZero(), isMultipleOfN(), isNeg(), isNonEqualURem(), isNonZeroAddrPlusOffset(), llvm::isOnlyUsedInZeroComparison(), isOperandOfVmullHighP64(), isProcessableCondBI(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::GCNTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), llvm::slpvectorizer::isReductionCandidate(), isRemOfLoopIncrementWithLoopInvariant(), isRightShiftBitTestKnownToTerminate(), isSignificantBitCheckWellFormed(), llvm::isSplatValue(), isTruePredicate(), isTruncateOf(), LinearizeExprTree(), LowerAndToBT(), lowerBUILD_VECTOR(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), m_c_Select(), m_LogicalAnd(), m_LogicalOp(), m_LogicalOr(), m_SpecificType(), m_SpecificType(), m_SpecificType(), m_Tbl(), llvm::PatternMatch::ICmpLike_match< LHS_t, RHS_t >::match(), llvm::PatternMatch::SelectLike_match< CondTy, LTy, RTy >::match(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchAddCC(), matchAndCC(), matchAndOrChain(), matchBitmaskMul(), matchBSL(), llvm::matchCombinedExitCondition(), llvm::matchCountableExitCondition(), matchDeMorgansLaws(), MatchDiv(), matchDot4Pattern(), matchesAdd(), matchesOr(), matchesSquareSum(), matchExpandedRem(), llvm::slpvectorizer::matchExtractedField(), matchFPExtFromF16(), matchICmpOperand(), matchIntPart(), matchLogicBlend(), MatchMul(), matchOrCC(), matchOrConcat(), matchPartStore(), matchPMADDWD(), matchPMADDWD_2(), matchPopCountBytes(), llvm::slpvectorizer::matchRdxBop(), MatchRem(), matchSelectPattern(), matchSelectWithOptionalNotCond(), matchSignedNewValueCC(), llvm::matchSimpleRecurrence(), matchSubCC(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), llvm::matchUncountableExitCondition(), matchVPMADD52(), matchXorCC(), matchZExtedSubInteger(), moveAddAfterMinMax(), narrowBitOpRMW(), narrowInsElt(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), OptimizeAndOrXor(), optimizeLoopExitWithUnknownExitCount(), optimizeShiftInOrChain(), optimizeSymmetricCall(), parseCondition(), llvm::parseWidenableBranch(), passingValueIsAlwaysUndefined(), performAddTruncShiftCombine(), performANDORDUPNOTCombine(), performAnyAllCombine(), performBitcastCombine(), performBitmaskCombine(), performCTPOPCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), performMaskedLoadToVPLoadCombine(), performMINMAXCombine(), performNanGuardFpToSatCombine(), performPredicateLoadCombine(), performReverseEVLCombine(), PerformSELECTShiftCombine(), performSRLCombine(), performSUBCombine(), performVEXT_VLCombine(), performVP_STORECombine(), processLoop(), processUse(), reassociateAddSubLong(), reassociateFCmps(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::recognizeBSwapOrBitReverseIdiom(), recordCondition(), reduceToAnyAllTrue(), replaceOverflowUses(), reverseZExtICmpCombine(), setShiftFlags(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), ShouldBreakUpDistribution(), ShouldBreakUpSubtract(), shouldCanonicalizeGEPToPtrAdd(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), shrinkInsertElt(), shrinkSplatShuffle(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrWithICmpEq(), simplifyAShrInst(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::simplifyBinOpSplats(), simplifyCastInst(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedUseFPClass(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), simplifyDiv(), simplifyDivRem(), simplifyExtractValueInst(), simplifyFAddInst(), simplifyFCmpInst(), simplifyFDivInst(), simplifyFMAFMul(), simplifyFNegInst(), simplifyFSubInst(), simplifyGEPInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyICmpWithConstant(), simplifyICmpWithMinMax(), llvm::simplifyInstruction(), llvm::simplifyIntrinsic(), simplifyIRemMulShl(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), simplifyMulInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedFPClass(), simplifyOperationIntoSelectOperand(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), simplifyReductionOperand(), simplifyRem(), simplifySelectInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithFCmp(), simplifySelectWithICmpCond(), simplifyShift(), simplifyShiftSelectingPackedElement(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySRemInst(), simplifySubInst(), simplifySVEIntrinsicBinOp(), simplifySwitchWhenUMin(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), skipTrivialSelect(), splitMergedValStore(), llvm::stripNullTest(), llvm::InstCombiner::stripSignOnlyFPOps(), takeInexpensiveLog2(), llvm::InstCombinerImpl::takeLog2(), tryCombineFromSVBoolBinOp(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), trySimplifyICmpWithAdds(), trySQABSCombine(), tryToFoldExtendSelectLoad(), tryToFPToSat(), tryToImproveAlign(), tryToRecognizePopCount(), tryToRecognizePopCount1(), tryToRecognizePopCount2n3(), tryToRecognizeTableBasedCttz(), tryToRecognizeTableBasedLog2(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitAtomicRMWInst(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitCondBrInst(), 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::visitGEPOfGEP(), 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::visitPtrToAddr(), 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::visitUIToFP(), llvm::InstCombinerImpl::visitURem(), llvm::InstCombinerImpl::visitXor(), llvm::InstCombinerImpl::visitZExt(), and widenBuildVector().
|
inline |
Definition at line 842 of file PatternMatch.h.
|
inline |
Match against the nested pattern, and capture the value if we match.
Definition at line 851 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineAnd(), and P.
|
inline |
Match a value, capturing it if we match.
Definition at line 841 of file PatternMatch.h.
|
inline |
Match against the nested pattern, and capture the value if we match.
Definition at line 845 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineAnd(), and P.
|
inline |
Definition at line 2980 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::InstCombinerImpl::foldReversedIntrinsicOperands(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), simplifyReductionOperand(), simplifyUnaryIntrinsic(), and llvm::InstCombinerImpl::visitFNeg().
|
inline |
Definition at line 2985 of file PatternMatch.h.
References m_Intrinsic().
Referenced by llvm::InstCombinerImpl::foldVectorBinop().
|
inline |
Matches a call to llvm.vscale().
Definition at line 3235 of file PatternMatch.h.
References m_Intrinsic().
Referenced by areBothVScale(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), llvm::vputils::findCanonicalIVIncrement(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::isKnownToBeAPowerOfTwo(), performLastTrueTestVectorCombine(), shouldSinkVScale(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 891 of file PatternMatch.h.
References I.
|
inline |
Match a with overflow intrinsic, capturing it if we match.
Definition at line 887 of file PatternMatch.h.
References I.
Referenced by directlyImpliesPoison(), dominatesMergePoint(), isKnownNonZeroFromOperator(), llvm::patchReplacementInstruction(), and llvm::InstCombinerImpl::visitOr().
|
inline |
Definition at line 1345 of file PatternMatch.h.
Referenced by checkForNegativeOperand(), combineAndXorSubWithBMI(), combineBTToBitOpFlag(), combineXorOnGF2P8AFFINEQBOperand(), combineXorToBitfieldInsert(), combineXorWithGF2P8AFFINEQB(), combineXorWithTwoGF2P8AFFINEQB(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromLerpPattern(), computeKnownBitsFromOperator(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToUsubsat(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpOrXorSubChain(), foldMaskedAddXorPattern(), foldNotXor(), foldOrToXor(), foldSubCtlzNot(), foldXorToXor(), llvm::InstCombiner::getFreelyInvertedImpl(), llvm::slpvectorizer::getScalarMaxValue(), llvm::ARMTTIImpl::instCombineIntrinsic(), narrowBitOpRMW(), optimizeBranch(), simplifyAddInst(), simplifyAndInst(), simplifyOrInst(), simplifyOrLogic(), simplifySubInst(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), 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 609 of file PatternMatch.h.
Referenced by areInverseVectorBitmasks(), canoncalizeSelectICmpMinMax(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeForInvariantConditionInjection(), canonicalizeICmpBool(), canonicalizeSaturatedSubtractUnsigned(), cmpExcludesZero(), combineAdd(), combineConcatVectorOps(), combineOr(), combineTargetShuffle(), combineVTRUNCSAT(), llvm::InstCombinerImpl::commonIDivRemTransforms(), computeKnownBitsFromCmp(), llvm::ConstantFoldBinaryInstruction(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), detectSSatUPattern(), llvm::findValuesAffectedByCondition(), FlattenLoopPair(), foldAddIntoDotAccumulator(), foldAddSubBoolOfMaskedVal(), foldAndOrOfICmpsWithPow2AndWithZero(), foldCttzCtlz(), llvm::InstCombinerImpl::foldDivCeil(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpEquality(), foldICmpInvariantGroup(), foldICmpOrChain(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithZero(), foldIdentityExtractShuffle(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldMulHigh(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldReductionIdiom(), foldRoundUpToPow2Alignment(), foldSelectICmpAndAnd(), foldSelectICmpAndZeroShl(), foldSelectZeroOrFixedOp(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldSignBitTest(), foldUnsignedUnderflowCheck(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::AArch64TargetLowering::getJumpConditionMergingParams(), handleOtherCmpSelSimplifications(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineSVEPairwiseAddLong(), instCombineZExtSVECmpNE(), llvm::isCheckForZeroAndMulWithOverflow(), isFirstIndexZero(), isMaskOrZero(), isNeutralValue(), llvm::isOnlyUsedInZeroComparison(), isRightShiftBitTestKnownToTerminate(), isTruncateOf(), lowerBUILD_VECTOR(), llvm::SDPatternMatch::m_Neg(), m_ZeroOrPoison(), markAliveBlocks(), matchEquivZeroRHS(), matchOpWithOpEqZero(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::OptimizePointerDifference(), optimizeUniformIntrinsic(), perfomPextFirstTrueVectorCombine(), performANDORDUPNOTCombine(), performAnyAllCombine(), performBitmaskCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), performNanGuardFpToSatCombine(), PerformSELECTShiftCombine(), reduceToAnyAllTrue(), replaceConditionalBranchesOnConstant(), simplifyAddInst(), simplifyAndInst(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyDivRem(), llvm::InstCombinerImpl::simplifyDivRemOfSelectWithZeroOp(), simplifyGEPInst(), simplifyICmpInst(), simplifyICmpOfBools(), llvm::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(), llvm::InstCombinerImpl::visitPHINode(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitZExt().
|
inline |
Definition at line 610 of file PatternMatch.h.
Referenced by collectShuffleElements().
|
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 586 of file PatternMatch.h.
Referenced by m_Neg(), m_NSWNeg(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), and simplifyLdexp().
|
inline |
Definition at line 612 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_Poison(), and m_Zero().
Referenced by llvm::simplifyIntrinsic().
|
inline |
Matches ZExt.
Definition at line 2312 of file PatternMatch.h.
Referenced by canSafelyConvertTo16Bit(), collectBitParts(), combineAdd(), combineBasicSADPattern(), combinePExtWideningSubAcc(), ComputeNumSignBitsImpl(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), decomposeImpl(), detectPMADDUBSW(), llvm::InstCombinerImpl::foldAddWithConstant(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldDivCeil(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), foldLoadsRecursive(), foldLogicCastConstant(), foldNoWrapAdd(), foldSubCtlzNot(), llvm::slpvectorizer::getScalarMaxValue(), llvm::vputils::getSCEVExprForVPValue(), slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), instCombineZExtSVECmpNE(), m_ZExtOrSelf(), m_ZExtOrSExt(), m_ZExtOrTruncOrSelf(), llvm::PatternMatch::SelectLike_match< CondTy, LTy, RTy >::match(), matchDot4Pattern(), llvm::slpvectorizer::matchExtractedField(), matchOrConcat(), matchZExtedSubInteger(), narrowInsElt(), narrowUDivURem(), reduceToAnyAllTrue(), shouldSinkVScale(), simplifyAndInst(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyICmpWithBinOp(), simplifyOperationIntoSelectOperand(), simplifyOrInst(), 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(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitTrunc().
|
inline |
Definition at line 2323 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), and m_ZExt().
Referenced by llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), llvm::VPlanTransforms::convertEVLExitCond(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombinerImpl::foldDivCeil(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), matchSubIntegerPackFromVector(), performCTPOPCombine(), performLastTrueTestVectorCombine(), processUse(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::InstCombinerImpl::visitAdd(), and llvm::InstCombinerImpl::visitAnd().
|
inline |
Definition at line 2343 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_SExt(), and m_ZExt().
Referenced by analyzeCostOfVecReduction(), areExtractExts(), areExtractExts(), combineAddOfExts(), combineRecipe(), foldCmpIntrinsicOfExtended(), llvm::InstCombinerImpl::foldICmpBitCast(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), llvm::InstCombinerImpl::FoldShiftByConstant(), slpvectorizer::BoUpSLP::getTreeCost(), haveNoCommonBitsSetSpecialCases(), 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 2351 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), and m_ZExtOrSExt().
Referenced by llvm::findHistogram(), and llvm::InstCombinerImpl::visitCallInst().
Definition at line 2355 of file PatternMatch.h.
References llvm::PatternMatchHelpers::m_CombineOr(), m_Trunc(), and m_ZExt().
Referenced by llvm::vputils::findCanonicalIVIncrement(), isConditionalOnXorOfPHIs(), and isSignificantBitCheckWellFormed().
| bool llvm::PatternMatch::match | ( | ArrayRef< int > | Mask, |
| const Pattern & | P ) |
Definition at line 65 of file PatternMatch.h.
References P.
| bool llvm::PatternMatch::match | ( | Val * | V, |
| const Pattern & | P ) |
Definition at line 54 of file PatternMatch.h.
References P.
Referenced by llvm::AliasSetTracker::add(), addNoFPClassAttrsTopDown(), AddParamAndFnBasicAttributes(), addSaturatedDecorationToIntrinsic(), addScaledStencilTerm(), addValueAffectedByCondition(), llvm::VPlanTransforms::adjustFirstOrderRecurrenceMiddleUsers(), analyzeCostOfVecReduction(), annotateNonNullAndDereferenceable(), llvm::VPlanTransforms::areAllLoadsDereferenceable(), areBothVScale(), areExtractExts(), areExtractExts(), areExtractShuffleVectors(), areInverseVectorBitmasks(), bitTrackingDCE(), breakSelfRecursivePHI(), llvm::calculateRegisterUsageForPlan(), llvm::InstCombiner::canBeCastedExactlyIntToFP(), llvm::canConvertToMinOrMaxIntrinsic(), canEvaluateShiftedShift(), llvm::InstCombiner::canFreelyInvertAllUsersOf(), llvm::VPIntrinsic::canIgnoreVectorLengthParam(), canNarrowShiftAmt(), canoncalizeSelectICmpMinMax(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeForInvariantConditionInjection(), canonicalizeGEPOfConstGEPI8(), canonicalizeICmpBool(), canonicalizeInsertSplat(), canonicalizeLogicFirst(), canonicalizeLowbitMask(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), canonicalizeSaturatedSubtractSigned(), canonicalizeSaturatedSubtractUnsigned(), canProveExitOnFirstIteration(), llvm::SCEVExpander::canReuseFlagsFromOriginalIVInc(), canSafelyConvertTo16Bit(), canScalarizeAccess(), canShiftBinOpWithConstantRHS(), llvm::canSinkOrHoistInst(), canSkipDemandedEltsInInsertChain(), cheapToScalarize(), checkForNegativeOperand(), checkOuterLoopInsts(), cloneForLane(), cmpExcludesZero(), collectBitParts(), collectComplementaryPredicatedMemOps(), llvm::collectCompressedPtrs(), collectDivisibilityInformation(), llvm::collectEphemeralRecipesForVPlan(), collectHomogenousInstGraphLoopInvariants(), collectInsertionElements(), llvm::slpvectorizer::collectNarrowedLeavesImpl(), llvm::collectPossibleValues(), collectShuffleElements(), collectSingleShuffleElements(), collectUnswitchCandidates(), collectUnswitchCandidatesWithInjections(), combineAddSubWithShlAddSub(), combineRecipe(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivRemTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonIRemTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::ScalarEvolution::computeConstantDifference(), llvm::computeConstantRange(), llvm::VPBlendRecipe::computeCost(), llvm::VPHistogramRecipe::computeCost(), llvm::VPInstruction::computeCost(), llvm::VPWidenMemIntrinsicRecipe::computeCost(), computeKnownBits(), computeKnownBitsAddSub(), computeKnownBitsFromCmp(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), computeKnownBitsFromICmpCond(), computeKnownBitsFromLerpPattern(), computeKnownBitsFromOperator(), computeKnownExponentRangeFromContext(), computeKnownFPClass(), computeKnownFPClassFromCond(), ComputeNumSignBitsImpl(), llvm::computeOverflowForSignedSub(), llvm::computeOverflowForUnsignedSub(), computeShapeInfoForInst(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::ConstantFoldBinaryInstruction(), llvm::ScalarEvolution::containsUndefs(), llvm::VPlanTransforms::convertEVLExitCond(), convertFSqrtDivIntoFMul(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), convertRecipesInRegionBlocksToSingleScalar(), convertTo16Bit(), llvm::VPlanTransforms::convertToConcreteRecipes(), llvm::VPlanTransforms::convertToStridedAccesses(), llvm::VPlanTransforms::createInLoopReductionRecipes(), createLoopRegion(), llvm::VPlanTransforms::createPartialReductions(), createWidenInductionRecipe(), llvm::decomposeBitTest(), llvm::decomposeBitTestICmp(), llvm::decomposeLinearExpression(), despeculateCountZeros(), detectShiftUntilBitTestIdiom(), detectShiftUntilZeroIdiom(), directlyImpliesPoison(), dominatesMergePoint(), llvm::VPlanTransforms::dropPoisonGeneratingRecipes(), dropRedundantMaskingOfLeftShiftInput(), evaluateInDifferentElementOrder(), llvm::VPVectorPointerRecipe::execute(), llvm::VPSCEVExpander::expand(), llvm::VPlanTransforms::expandBranchOnTwoConds(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), findBestNonTrivialUnswitchCandidate(), findCacheViolation(), llvm::vputils::findCanonicalIVIncrement(), llvm::findHistogram(), llvm::vputils::findIncomingAliasMask(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::SCEVExpander::findReusableLCSSAPhi(), llvm::findScalarElement(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), fixupVFUsersForEVL(), FlattenLoopPair(), foldAbsDiff(), foldAddIntoDotAccumulator(), llvm::InstCombinerImpl::foldAddLikeCommutative(), foldAddToAshr(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAdjacentReversesIntoTbls(), foldAndOrOfICmpEqConstantAndICmp(), foldAndOrOfICmpsWithPow2AndWithZero(), foldAndToXor(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), llvm::InstCombinerImpl::foldBinOpSelectBinOp(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), llvm::InstCombinerImpl::foldBinopWithPhiOperands(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBitwiseLogicWithIntrinsics(), foldBoxMultiply(), foldClampRangeOfTwo(), foldCmpIntrinsicOfExtended(), llvm::InstCombinerImpl::foldCmpSelectOfConstants(), foldComplexAndOrPatterns(), foldConstantInsEltIntoShuffle(), foldCopySignIdioms(), foldCtpop(), foldCttzCtlz(), foldDependentIVs(), llvm::InstCombinerImpl::foldDivCeil(), foldExtractOfStridedPointerVector(), foldFabsWithFcmpZero(), foldFCmpFAbsFSubIntToFP(), foldFCmpFNegCommonOp(), foldFCmpFpTrunc(), foldFCmpFSubIntoFCmp(), llvm::InstCombinerImpl::foldFCmpIntToFPConst(), foldFCmpReciprocalAndZero(), foldFCmpWithFloorAndCeil(), foldFDivConstantDividend(), foldFDivPowDivisor(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldFPtoI(), 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(), foldICmpOfVectorReduce(), 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::foldICmpWithClamp(), 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(), foldMaskedAddXorPattern(), foldMinimumOverTrailingOrLeadingZeroCount(), foldMinMaxSharedOp(), foldMulHigh(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNegativePower2AndShiftedMask(), foldNotXor(), foldNoWrapAdd(), llvm::InstCombinerImpl::foldOpIntoPhi(), foldOrOfInversions(), llvm::InstCombinerImpl::FoldOrOfLogicalAnds(), FoldOrOfSelectSmaxToAbs(), foldOrToXor(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), llvm::InstCombinerImpl::foldPtrToIntOrAddrOfGEP(), foldReductionIdiom(), llvm::InstCombinerImpl::foldReversedIntrinsicOperands(), foldRoundUpToPow2Alignment(), foldSelectBinOpIdentity(), foldSelectGEP(), llvm::InstCombinerImpl::foldSelectICmp(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpAndZeroShl(), foldSelectICmpLshrAshr(), foldSelectICmpMinMax(), llvm::InstCombinerImpl::foldSelectIntoOp(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldSelectSplitCTLZ(), foldSelectSplitCTLZCTTZ(), foldSelectSplitCTTZ(), foldSelectZeroOrFixedOp(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftedShift(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldShuffleOfUnaryOps(), foldShuffleWithInsert(), llvm::InstCombinerImpl::foldSignBitTest(), foldSignedTruncationCheck(), foldSpliceBinOp(), foldSqrtWithFcmpZero(), foldSubOfMinMax(), llvm::VPlanTransforms::foldTailByMasking(), foldToUnsignedSaturatedAdd(), foldTruncInsEltPair(), foldTruncShuffle(), foldTwoEntryPHINode(), foldUnsignedUnderflowCheck(), foldURemOfLoopIncrement(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVecExtTruncToExtElt(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), foldVecTruncToExtElt(), foldXorToXor(), llvm::ScalarEvolution::getAddExpr(), getAlternateBinop(), getAppleRuntimeUnrollPreferences(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), llvm::GCNTTIImpl::getArithmeticInstrCost(), getBinOpsForFactorization(), llvm::slpvectorizer::getBoolReduxResultCCH(), getBoolVecFromMask(), getBundleFromUse(), llvm::AArch64TTIImpl::getCastInstrCost(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::InstCombiner::getComplexity(), llvm::PredicateBase::getConstraint(), llvm::VPRecipeWithIRFlags::getCostForRecipeWithOpcode(), getDemandedBitsLHSMask(), getDomPredecessorCondition(), llvm::ConstantExpr::getExactLogBase2(), llvm::vputils::getFlagsForInduction(), llvm::InstCombiner::getFreelyInvertedImpl(), getFSqrtDivOptPattern(), getFusableFMulOperand(), llvm::ARMTTIImpl::getGatherScatterOpCost(), getHashValueImpl(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), getInvertibleOperands(), llvm::AArch64TargetLowering::getJumpConditionMergingParams(), llvm::SystemZTargetLowering::getJumpConditionMergingParams(), llvm::X86TargetLowering::getJumpConditionMergingParams(), getKnownBitsFromAndXorOr(), getKnownSign(), getKnownSignOrZero(), getKnownTypeFromMaskedOp(), llvm::slpvectorizer::getLaneConstantCmp(), getMaskedICmpType(), getMaskedTypeForICmpPair(), getMinimumFPType(), getMinMaxRecurrence(), llvm::ScalarEvolution::getMulExpr(), getNegatibleInsts(), getNextSCEVDivisibleByDivisor(), getNotValue(), getOptimizableIVOf(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), getPreviousSCEVDivisibleByDivisor(), getRangeForIntrinsic(), getRangeForNUWMulSquare(), getRangeForSelectPattern(), getRecipesForUncountableExit(), llvm::slpvectorizer::getScalarMaxValue(), slpvectorizer::BoUpSLP::LookAheadHeuristics::getShallowScore(), llvm::X86TTIImpl::getShuffleCost(), llvm::ScalarEvolution::getSignExtendExprImpl(), llvm::getSplatValue(), getStepDirection(), llvm::ScalarEvolution::getStrengthenedNoWrapFlagsFromBinOp(), llvm::getStrideFromAddRec(), getStrideFromPointer(), slpvectorizer::BoUpSLP::getTreeCost(), llvm::ScalarEvolution::getUDivExpr(), getUnfusedBinOpCost(), getUnsignedMonotonicValues(), getValueFromOverflowCondition(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::ScalarEvolution::getZeroExtendExprImpl(), llvm::VPlanTransforms::handleFindLastReductions(), handleFirstArgMinOrMax(), llvm::VPlanTransforms::handleMaxMinNumReductions(), llvm::VPlanTransforms::handleMultiUseReductions(), handleOtherCmpSelSimplifications(), llvm::VPlanTransforms::handleUncountableEarlyExits(), handleUncountableExitsWithSideEffects(), hasConditionalTerminator(), hasNonZeroFPOperands(), hasProcessableCondition(), llvm::SCEVExpander::hasRelatedExistingExpansion(), hasRequiredFastMathFlags(), haveNoCommonBitsSetSpecialCases(), hoistAdd(), hoistAddSub(), hoistInsEltConst(), hoistMinMax(), llvm::hoistRegion(), hoistSub(), hoistSubAddAssociation(), INITIALIZE_PASS(), llvm::ARMTTIImpl::instCombineIntrinsic(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::RISCVTTIImpl::instCombineIntrinsic(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), instCombineSVEAnd(), instCombineSVEDup(), instCombineSVEDupqLane(), instCombineSVELast(), instCombineSVEOrr(), instCombineSVEPairwiseAddLong(), instCombineSVESrshl(), instCombineSVEUMin(), instCombineSVEUzp1(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEVectorMlaU(), instCombineSVEZip(), instCombineXorSVECmpCC(), instCombineZExtSVECmpNE(), llvm::invertCondition(), isAbsoluteValueULEOne(), isAllActivePredicate(), isAllocSiteRemovable(), llvm::SCEV::isAllOnesValue(), isAMXCast(), llvm::RecurrenceDescriptor::isAnyOfPattern(), isBigEndianBitShift(), llvm::slpvectorizer::CmpSamePredicateHelper::isBitTest(), llvm::VPWidenIntOrFpInductionRecipe::isCanonical(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::ConditionalInductionDescriptor::isConditionalInductionPHI(), isConditionalOnXorOfPHIs(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isConditionTrueViaVFAndUF(), llvm::vputils::isDeadRecipe(), isDivisibilityGuard(), isDivZero(), llvm::Constant::isElementWiseEqual(), isEqualImpl(), llvm::slpvectorizer::InstructionsState::isExpandedBinOp(), llvm::slpvectorizer::InstructionsState::isExpandedOperand(), llvm::AArch64TTIImpl::isExtPartOfAvgExpr(), llvm::RecurrenceDescriptor::isFindPattern(), isFirstIndexZero(), llvm::slpvectorizer::isFMAOrFMulAdd(), isFMulAddCandidate(), isFNeg(), isFoldedIntoRsqrtEstimate(), isFusableFMulOperand(), llvm::isGuard(), llvm::isGuardAsWidenableBranch(), llvm::PatternMatch::immconstant_ty::isImmConstant(), isImpliedCondAndOr(), isImpliedCondFCmps(), isImpliedCondICmps(), llvm::isImpliedCondition(), llvm::isImpliedCondition(), isImpliedToBeAPowerOfTwoFromCond(), llvm::InductionDescriptor::isInductionPHI(), isInstructionPairMul(), llvm::ConstantPtrAuth::isKnownCompatibleWith(), llvm::isKnownIntegral(), llvm::isKnownInversion(), isKnownMonotonic(), llvm::isKnownNegation(), isKnownNonEqual(), isKnownNonNullFromDominatingCondition(), isKnownNonPositive(), isKnownNonZeroFromAssume(), isKnownNonZeroFromOperator(), isKnownPredicateExtendIdiom(), IsKnownPredicateViaAddRecStart(), llvm::isKnownToBeAPowerOfTwo(), llvm::X86TTIImpl::isLegalAltInstr(), isLoopNeverExecuted(), isMaskOrZero(), isMinMaxCmpSelectEliminable(), isMultipleOfN(), isNeg(), isNeutralValue(), isNonEqualMul(), isNonEqualPHIs(), isNonEqualShl(), isNonEqualURem(), isNonZeroAddrPlusOffset(), isNonZeroRecurrence(), llvm::SCEV::isOne(), isOperandOfVmullHighP64(), isPoisonShift(), isPowerOfTwoRecurrence(), isProcessableCondBI(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::GCNTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), llvm::slpvectorizer::isReductionCandidate(), isRemOfLoopIncrementWithLoopInvariant(), isRightShiftBitTestKnownToTerminate(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), isSignedMinMaxClamp(), isSignedMinMaxIntrinsicClamp(), isSimpleCastedPHI(), llvm::MemoryWriteTracking::isSpecialInstruction(), llvm::isSplatValue(), isSpvAggrPlaceholder(), isSSATMinMaxPattern(), isSupportedMemset(), isThreadID(), isTruePredicate(), llvm::slpvectorizer::isUndefTolerantBinOp(), llvm::SimplifyQuery::isUndefValue(), llvm::vputils::isUsedByLoadStoreAddress(), isUsedWithinShuffleVector(), llvm::isWidenableCondition(), llvm::SCEV::isZero(), legalizeAndOptimizeInductions(), likeBitCastFromVector(), LinearizeExprTree(), lookThroughAnd(), lookThroughCast(), lookThroughCastConst(), loopMayHaveSideEffects(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), maintainNoSignedWrap(), markAliveBlocks(), llvm::maskContainsAllOneOrUndef(), deinterleaving_tbl_match::match(), llvm::PatternMatch::ICmpLike_match< LHS_t, RHS_t >::match(), llvm::PatternMatch::SelectLike_match< CondTy, LTy, RTy >::match(), llvm::PatternMatch::XorLike_match< LHS, RHS >::match(), uitofp_tbl_match::match(), matchAddCC(), matchAndCC(), matchAndOrChain(), MatchBinarySub(), matchBitmaskMul(), matchBSL(), matchClamp(), llvm::matchCombinedExitCondition(), llvm::matchCountableExitCondition(), matchDeMorgansLaws(), MatchDiv(), matchDot4Pattern(), matchEquivZeroRHS(), matchesAdd(), matchesOr(), matchesSquareSum(), matchExpandedRem(), llvm::slpvectorizer::matchExtractedField(), matchFastFloatClamp(), matchFPExtFromF16(), matchICmpOperand(), matchIncrement(), matchIntPart(), matchIsNotNaN(), matchMinMax(), MatchMul(), MatchNotExpr(), matchOpWithOpEqZero(), matchOrCC(), matchOrConcat(), matchPartStore(), matchPopCountBytes(), llvm::slpvectorizer::matchRdxBop(), MatchRem(), matchSelectPattern(), matchSelectWithOptionalNotCond(), matchSignedNewValueCC(), llvm::matchSimpleRecurrence(), matchStridedStart(), matchSubCC(), matchSubIntegerPackFromVector(), llvm::InstCombinerImpl::matchThreeWayIntCompare(), matchUAddWithOverflowConstantEdgeCases(), llvm::matchUncountableExitCondition(), matchUnorderedInfCompare(), matchXorCC(), matchZExtedSubInteger(), llvm::VPlanTransforms::materializeVectorTripCount(), mayLoopAccessLocation(), llvm::Constant::mergeUndefsWith(), llvm::VPlanTransforms::modelGeneratedMainLoopBlocks(), moveAddAfterMinMax(), llvm::VPlanTransforms::narrowInductionTruncates(), narrowInsElt(), llvm::VPlanTransforms::narrowInterleaveGroups(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), OptimizeAndOrXor(), optimizeBranch(), optimizeEarlyExitInductionUser(), llvm::VPlanTransforms::optimizeEVLMasks(), llvm::VPlanTransforms::optimizeFindIVReductions(), llvm::VPlanTransforms::optimizeInductionLiveOutUsers(), optimizeLatchExitInductionUser(), optimizeLatchExitIVUserViaSCEV(), optimizeMaskToEVL(), llvm::InstCombinerImpl::OptimizePointerDifference(), optimizeShiftInOrChain(), optimizeSymmetricCall(), optimizeUniformIntrinsic(), llvm::AArch64TargetLowering::optimizeVectorCrossLaneOperation(), optimizeVectorInductionWidthForTCAndVFUF(), parseCondition(), llvm::parseWidenableBranch(), passingValueIsAlwaysUndefined(), llvm::patchReplacementInstruction(), preparePlanForMainVectorLoop(), processAnd(), processLaneForReplicateRegion(), llvm::LoopVectorizePass::processLoop(), processLoop(), processUse(), llvm::proveOuterLoopMemorySafety(), llvm::vputils::pullOutPermutations(), reassociateFCmps(), reassociateForUses(), reassociateHeaderMask(), reassociateMinMaxWithConstantInOperand(), reassociateMinMaxWithConstants(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::recognizeBSwapOrBitReverseIdiom(), recordCondition(), reduceToAnyAllTrue(), llvm::VPlanTransforms::removeBranchOnConst(), removeCommonBlendMask(), replaceConditionalBranchesOnConstant(), replaceMaskWithCompareForScalarPlan(), llvm::VPlanTransforms::replaceSymbolicStrides(), llvm::Constant::replaceUndefsWith(), llvm::VPlanTransforms::replaceWideCanonicalIVWithWideIV(), llvm::VPlanTransforms::replicateByVF(), requireAssignType(), llvm::AssumptionPrinterPass::run(), llvm::DropUnnecessaryAssumesPass::run(), llvm::LoopVectorizationPlanner::selectBestEpiloguePlan(), setLimitsForBinOp(), setShiftFlags(), llvm::InstCombiner::shouldAvoidAbsorbingNotIntoSelect(), ShouldBreakUpDistribution(), ShouldBreakUpSubtract(), shouldCanonicalizeGEPToPtrAdd(), shouldSinkVScale(), llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect(), ShrinkDemandedConstant(), shrinkFPConstantVector(), shrinkInsertElt(), shrinkSplatShuffle(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfFCmps(), simplifyAndOrOfFCmpsWithConstants(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithCtpop(), simplifyAndOrWithICmpEq(), simplifyAShrInst(), simplifyAssocCastAssoc(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), simplifyBinaryIntrinsic(), llvm::InstCombinerImpl::simplifyBinOpSplats(), simplifyBlends(), simplifyBranchConditionForVFAndUF(), simplifyCastInst(), simplifyCmpSelOfMaxMin(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedUseFPClass(), 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(), llvm::simplifyInsertElementInst(), llvm::simplifyInstruction(), simplifyInstructionWithPHI(), llvm::simplifyIntrinsic(), simplifyIRemMulShl(), llvm::VPlanTransforms::simplifyKnownEVL(), simplifyLdexp(), llvm::VPlanTransforms::simplifyLiveInsWithSCEV(), simplifyLogicalRecipe(), simplifyLogicOfAddSub(), llvm::simplifyLoopAfterUnroll(), simplifyLShrInst(), simplifyMulInst(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedBits(), llvm::InstCombinerImpl::SimplifyMultipleUseDemandedFPClass(), simplifyOperationIntoSelectOperand(), simplifyOrInst(), simplifyOrLogic(), simplifyOrOfICmpsWithAdd(), llvm::InstCombinerImpl::simplifyRangeCheck(), simplifyRecipe(), simplifyReductionOperand(), simplifyRem(), llvm::VPlanTransforms::simplifyReverses(), simplifySelectBitTest(), simplifySelectInst(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithFCmp(), simplifySelectWithICmpCond(), simplifyShift(), simplifyShiftSelectingPackedElement(), simplifyShlInst(), simplifyShuffleVectorInst(), simplifySRemInst(), simplifySubInst(), simplifySVEIntrinsic(), simplifySVEIntrinsicBinOp(), simplifySVEIntrinsicCompare(), simplifySwitchOnSelectUsingRanges(), simplifySwitchWhenUMin(), simplifyTernarylogic(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyWithOpsReplaced(), simplifyX86addcarry(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), skipTrivialSelect(), llvm::VPlanTransforms::splitCombinedExits(), splitMergedValStore(), llvm::stripNullTest(), llvm::InstCombiner::stripSignOnlyFPOps(), swapICmpOperandsToExposeCSEOpportunities(), llvm::InstCombinerImpl::takeLog2(), tracesToPointerAlloca(), llvm::VPlanTransforms::truncateToMinimalBitwidths(), tryCombineFromSVBoolBinOp(), tryFactorization(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), trySimplifyICmpWithAdds(), tryToComputeEndValueForInduction(), llvm::vputils::tryToFoldLiveIns(), tryToFPToSat(), tryToImproveAlign(), tryToMatchAndCreateExtendedReduction(), tryToMatchAndCreateMulAccumulateReduction(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), tryToRecognizePopCount1(), tryToRecognizePopCount2n3(), tryToRecognizeTableBasedCttz(), tryToRecognizeTableBasedLog2(), llvm::JumpThreadingPass::tryToUnfoldSelectInCurrBB(), unswitchNontrivialInvariants(), unswitchTrivialBranch(), llvm::AssumptionCacheTracker::verifyAnalysis(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitAtomicRMWInst(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitCondBrInst(), 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::visitGEPOfGEP(), 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::visitPtrToAddr(), llvm::InstCombinerImpl::visitPtrToInt(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitShuffleVectorInst(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitStoreInst(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitSwitchInst(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitUIToFP(), llvm::InstCombinerImpl::visitURem(), llvm::InstCombinerImpl::visitXor(), llvm::InstCombinerImpl::visitZExt(), llvm::VPlanTransforms::widenMemoryAccessesByUF(), and llvm::reassociate::XorOpnd::XorOpnd().
| auto 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 61 of file PatternMatch.h.
References llvm::bind_back(), and P.
Referenced by llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), llvm::vputils::getGEPFlagsForPtr(), getRecipesForUncountableExit(), llvm::isOnlyUsedInZeroComparison(), llvm::VPlanTransforms::optimizeFindIVReductions(), simplifyGEPInst(), and llvm::InstCombinerImpl::visitSub().