LLVM
10.0.0svn
|
Classes | |
struct | AnyBinaryOp_match |
struct | apfloat_match |
struct | api_pred_ty |
This helper class is used to match scalar and vector constants that satisfy a specified predicate, and bind them to an APInt. More... | |
struct | apint_match |
struct | Argument_match |
struct | BinaryOp_match |
struct | bind_const_intval_ty |
struct | bind_ty |
struct | BinOpPred_match |
struct | br_match |
struct | brc_match |
struct | CastClass_match |
struct | class_match |
struct | CmpClass_match |
struct | constantint_match |
struct | cst_pred_ty |
This helper class is used to match scalar and vector integer constants that satisfy a specified predicate. More... | |
struct | cstfp_pred_ty |
This helper class is used to match scalar and vector floating-point constants that satisfy a specified predicate. More... | |
struct | deferredval_ty |
Stores a reference to the Value *, not the Value * itself, thus can be used in commutative matchers. More... | |
struct | Exact_match |
struct | FNeg_match |
struct | icmp_pred_with_threshold |
struct | IntrinsicID_match |
Intrinsic matchers. More... | |
struct | is_all_ones |
struct | is_any_apint |
struct | is_any_zero_fp |
struct | is_bitwiselogic_op |
struct | is_idiv_op |
struct | is_irem_op |
struct | is_logical_shift_op |
struct | is_lowbit_mask |
struct | is_maxsignedvalue |
struct | is_nan |
struct | is_neg_zero_fp |
struct | is_negated_power2 |
struct | is_negative |
struct | is_nonnegative |
struct | is_one |
struct | is_pos_zero_fp |
struct | is_power2 |
struct | is_power2_or_zero |
struct | is_right_shift_op |
struct | is_shift_op |
struct | is_sign_mask |
struct | is_zero |
struct | is_zero_int |
struct | m_Intrinsic_Ty |
Intrinsic matches are combinations of ID matchers, and argument matchers. More... | |
struct | m_Intrinsic_Ty< T0 > |
struct | m_Intrinsic_Ty< T0, T1 > |
struct | m_Intrinsic_Ty< T0, T1, T2 > |
struct | m_Intrinsic_Ty< T0, T1, T2, T3 > |
struct | match_combine_and |
struct | match_combine_or |
Matching combinators. More... | |
struct | match_unless |
Inverting matcher. More... | |
struct | MaxMin_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 | Signum_match |
struct | smax_pred_ty |
Helper class for identifying signed max predicates. More... | |
struct | smin_pred_ty |
Helper class for identifying signed min predicates. More... | |
struct | specific_bbval |
Match a specified basic block value. More... | |
struct | specific_fpval |
Match a specified floating point value or vector of all elements of that value. More... | |
struct | specific_intval |
Match a specified integer value or vector of all elements of that value. More... | |
struct | specificval_ty |
Match a specified Value*. More... | |
struct | ThreeOps_match |
Matches instructions with Opcode and three operands. More... | |
struct | TwoOps_match |
Matches instructions with Opcode and three operands. More... | |
struct | UAddWithOverflow_match |
struct | ufmax_pred_ty |
Helper class for identifying unordered max predicates. More... | |
struct | ufmin_pred_ty |
Helper class for identifying unordered min predicates. More... | |
struct | umax_pred_ty |
Helper class for identifying unsigned max predicates. More... | |
struct | umin_pred_ty |
Helper class for identifying unsigned min predicates. More... | |
Functions | |
template<typename Val , typename Pattern > | |
bool | match (Val *V, const Pattern &P) |
template<typename T > | |
OneUse_match< T > | m_OneUse (const T &SubPattern) |
class_match< Value > | m_Value () |
Match an arbitrary value and ignore it. More... | |
class_match< BinaryOperator > | m_BinOp () |
Match an arbitrary binary operation and ignore it. More... | |
class_match< CmpInst > | m_Cmp () |
Matches any compare instruction and ignore it. More... | |
class_match< ConstantInt > | m_ConstantInt () |
Match an arbitrary ConstantInt and ignore it. More... | |
class_match< UndefValue > | m_Undef () |
Match an arbitrary undef constant. More... | |
class_match< Constant > | m_Constant () |
Match an arbitrary Constant and ignore it. More... | |
class_match< BasicBlock > | m_BasicBlock () |
Match an arbitrary basic block value and ignore it. More... | |
template<typename Ty > | |
match_unless< Ty > | m_Unless (const Ty &M) |
Match if the inner matcher does NOT match. More... | |
template<typename LTy , typename RTy > | |
match_combine_or< LTy, RTy > | m_CombineOr (const LTy &L, const RTy &R) |
Combine two pattern matchers matching L || R. More... | |
template<typename LTy , typename RTy > | |
match_combine_and< LTy, RTy > | m_CombineAnd (const LTy &L, const RTy &R) |
Combine two pattern matchers matching L && R. More... | |
apint_match | m_APInt (const APInt *&Res) |
Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt. More... | |
apfloat_match | m_APFloat (const APFloat *&Res) |
Match a ConstantFP or splatted ConstantVector, binding the specified pointer to the contained APFloat. More... | |
cst_pred_ty< is_any_apint > | m_AnyIntegralConstant () |
Match an integer or vector with any integral constant. More... | |
cst_pred_ty< is_all_ones > | m_AllOnes () |
Match an integer or vector with all bits set. More... | |
cst_pred_ty< is_maxsignedvalue > | m_MaxSignedValue () |
Match an integer or vector with values having all bits except for the high bit set (0x7f...). More... | |
api_pred_ty< is_maxsignedvalue > | m_MaxSignedValue (const APInt *&V) |
cst_pred_ty< is_negative > | m_Negative () |
Match an integer or vector of negative values. More... | |
api_pred_ty< is_negative > | m_Negative (const APInt *&V) |
cst_pred_ty< is_nonnegative > | m_NonNegative () |
Match an integer or vector of nonnegative values. More... | |
api_pred_ty< is_nonnegative > | m_NonNegative (const APInt *&V) |
cst_pred_ty< is_one > | m_One () |
Match an integer 1 or a vector with all elements equal to 1. More... | |
cst_pred_ty< is_zero_int > | m_ZeroInt () |
Match an integer 0 or a vector with all elements equal to 0. More... | |
is_zero | m_Zero () |
Match any null constant or a vector with all elements equal to 0. More... | |
cst_pred_ty< is_power2 > | m_Power2 () |
Match an integer or vector power-of-2. More... | |
api_pred_ty< is_power2 > | m_Power2 (const APInt *&V) |
cst_pred_ty< is_negated_power2 > | m_NegatedPower2 () |
Match a integer or vector negated power-of-2. More... | |
api_pred_ty< is_negated_power2 > | m_NegatedPower2 (const APInt *&V) |
cst_pred_ty< is_power2_or_zero > | m_Power2OrZero () |
Match an integer or vector of 0 or power-of-2 values. More... | |
api_pred_ty< is_power2_or_zero > | m_Power2OrZero (const APInt *&V) |
cst_pred_ty< is_sign_mask > | m_SignMask () |
Match an integer or vector with only the sign bit(s) set. More... | |
cst_pred_ty< is_lowbit_mask > | m_LowBitMask () |
Match an integer or vector with only the low bit(s) set. More... | |
cst_pred_ty< icmp_pred_with_threshold > | m_SpecificInt_ICMP (ICmpInst::Predicate Predicate, const APInt &Threshold) |
Match an integer or vector with every element comparing 'pred' (eg/ne/...) to Threshold. More... | |
cstfp_pred_ty< is_nan > | m_NaN () |
Match an arbitrary NaN constant. More... | |
cstfp_pred_ty< is_any_zero_fp > | m_AnyZeroFP () |
Match a floating-point negative zero or positive zero. More... | |
cstfp_pred_ty< is_pos_zero_fp > | m_PosZeroFP () |
Match a floating-point positive zero. More... | |
cstfp_pred_ty< is_neg_zero_fp > | m_NegZeroFP () |
Match a floating-point negative zero. More... | |
bind_ty< Value > | m_Value (Value *&V) |
Match a value, capturing it if we match. More... | |
bind_ty< const Value > | m_Value (const Value *&V) |
bind_ty< Instruction > | m_Instruction (Instruction *&I) |
Match an instruction, capturing it if we match. More... | |
bind_ty< BinaryOperator > | m_BinOp (BinaryOperator *&I) |
Match a binary operator, capturing it if we match. More... | |
bind_ty< ConstantInt > | m_ConstantInt (ConstantInt *&CI) |
Match a ConstantInt, capturing the value if we match. More... | |
bind_ty< Constant > | m_Constant (Constant *&C) |
Match a Constant, capturing the value if we match. More... | |
bind_ty< ConstantFP > | m_ConstantFP (ConstantFP *&C) |
Match a ConstantFP, capturing the value if we match. More... | |
bind_ty< BasicBlock > | m_BasicBlock (BasicBlock *&V) |
Match a basic block value, capturing it if we match. More... | |
bind_ty< const BasicBlock > | m_BasicBlock (const BasicBlock *&V) |
specificval_ty | m_Specific (const Value *V) |
Match if we have a specific specified value. More... | |
deferredval_ty< Value > | m_Deferred (Value *const &V) |
A commutative-friendly version of m_Specific(). More... | |
deferredval_ty< const Value > | m_Deferred (const Value *const &V) |
specific_fpval | m_SpecificFP (double V) |
Match a specific floating point value or vector with all elements equal to the value. More... | |
specific_fpval | m_FPOne () |
Match a float 1.0 or vector with all elements equal to 1.0. More... | |
specific_intval | m_SpecificInt (APInt V) |
Match a specific integer value or vector with all elements equal to the value. More... | |
specific_intval | m_SpecificInt (uint64_t V) |
bind_const_intval_ty | m_ConstantInt (uint64_t &V) |
Match a ConstantInt and bind to its value. More... | |
specific_bbval | m_SpecificBB (BasicBlock *BB) |
Match a specific basic block value. More... | |
deferredval_ty< BasicBlock > | m_Deferred (BasicBlock *const &BB) |
A commutative-friendly version of m_Specific(). More... | |
deferredval_ty< const BasicBlock > | m_Deferred (const BasicBlock *const &BB) |
template<typename LHS , typename RHS > | |
AnyBinaryOp_match< LHS, RHS > | m_BinOp (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Add > | m_Add (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FAdd > | m_FAdd (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Sub > | m_Sub (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FSub > | m_FSub (const LHS &L, const RHS &R) |
template<typename OpTy > | |
FNeg_match< OpTy > | m_FNeg (const OpTy &X) |
Match 'fneg X' as 'fsub -0.0, X'. More... | |
template<typename RHS > | |
BinaryOp_match< cstfp_pred_ty< is_any_zero_fp >, RHS, Instruction::FSub > | m_FNegNSZ (const RHS &X) |
Match 'fneg X' as 'fsub +-0.0, X'. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Mul > | m_Mul (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FMul > | m_FMul (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::UDiv > | m_UDiv (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::SDiv > | m_SDiv (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FDiv > | m_FDiv (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::URem > | m_URem (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::SRem > | m_SRem (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FRem > | m_FRem (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::And > | m_And (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Or > | m_Or (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Xor > | m_Xor (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Shl > | m_Shl (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::LShr > | m_LShr (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::AShr > | m_AShr (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoSignedWrap > | m_NSWAdd (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Sub, OverflowingBinaryOperator::NoSignedWrap > | m_NSWSub (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Mul, OverflowingBinaryOperator::NoSignedWrap > | m_NSWMul (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Shl, OverflowingBinaryOperator::NoSignedWrap > | m_NSWShl (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Add, OverflowingBinaryOperator::NoUnsignedWrap > | m_NUWAdd (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Sub, OverflowingBinaryOperator::NoUnsignedWrap > | m_NUWSub (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Mul, OverflowingBinaryOperator::NoUnsignedWrap > | m_NUWMul (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
OverflowingBinaryOp_match< LHS, RHS, Instruction::Shl, OverflowingBinaryOperator::NoUnsignedWrap > | m_NUWShl (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_shift_op > | m_Shift (const LHS &L, const RHS &R) |
Matches shift operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_right_shift_op > | m_Shr (const LHS &L, const RHS &R) |
Matches logical shift operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_logical_shift_op > | m_LogicalShift (const LHS &L, const RHS &R) |
Matches logical shift operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_bitwiselogic_op > | m_BitwiseLogic (const LHS &L, const RHS &R) |
Matches bitwise logic operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_idiv_op > | m_IDiv (const LHS &L, const RHS &R) |
Matches integer division operations. More... | |
template<typename LHS , typename RHS > | |
BinOpPred_match< LHS, RHS, is_irem_op > | m_IRem (const LHS &L, const RHS &R) |
Matches integer remainder operations. More... | |
template<typename T > | |
Exact_match< T > | m_Exact (const T &SubPattern) |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, CmpInst, CmpInst::Predicate > | m_Cmp (CmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicate > | m_ICmp (ICmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, FCmpInst, FCmpInst::Predicate > | m_FCmp (FCmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
template<typename Cond , typename LHS , typename RHS > | |
ThreeOps_match< Cond, LHS, RHS, Instruction::Select > | m_Select (const Cond &C, const LHS &L, const RHS &R) |
Matches SelectInst. More... | |
template<int64_t L, int64_t R, typename Cond > | |
ThreeOps_match< Cond, constantint_match< L >, constantint_match< R >, Instruction::Select > | m_SelectCst (const Cond &C) |
This matches a select of two constants, e.g. More... | |
template<typename Val_t , typename Elt_t , typename Idx_t > | |
ThreeOps_match< Val_t, Elt_t, Idx_t, Instruction::InsertElement > | m_InsertElement (const Val_t &Val, const Elt_t &Elt, const Idx_t &Idx) |
Matches InsertElementInst. More... | |
template<typename Val_t , typename Idx_t > | |
TwoOps_match< Val_t, Idx_t, Instruction::ExtractElement > | m_ExtractElement (const Val_t &Val, const Idx_t &Idx) |
Matches ExtractElementInst. More... | |
template<typename V1_t , typename V2_t , typename Mask_t > | |
ThreeOps_match< V1_t, V2_t, Mask_t, Instruction::ShuffleVector > | m_ShuffleVector (const V1_t &v1, const V2_t &v2, const Mask_t &m) |
Matches ShuffleVectorInst. More... | |
template<typename OpTy > | |
OneOps_match< OpTy, Instruction::Load > | m_Load (const OpTy &Op) |
Matches LoadInst. More... | |
template<typename ValueOpTy , typename PointerOpTy > | |
TwoOps_match< ValueOpTy, PointerOpTy, Instruction::Store > | m_Store (const ValueOpTy &ValueOp, const PointerOpTy &PointerOp) |
Matches StoreInst. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::BitCast > | m_BitCast (const OpTy &Op) |
Matches BitCast. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::PtrToInt > | m_PtrToInt (const OpTy &Op) |
Matches PtrToInt. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::Trunc > | m_Trunc (const OpTy &Op) |
Matches Trunc. More... | |
template<typename OpTy > | |
match_combine_or< CastClass_match< OpTy, Instruction::Trunc >, OpTy > | m_TruncOrSelf (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::SExt > | m_SExt (const OpTy &Op) |
Matches SExt. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::ZExt > | m_ZExt (const OpTy &Op) |
Matches ZExt. More... | |
template<typename OpTy > | |
match_combine_or< CastClass_match< OpTy, Instruction::ZExt >, OpTy > | m_ZExtOrSelf (const OpTy &Op) |
template<typename OpTy > | |
match_combine_or< CastClass_match< OpTy, Instruction::SExt >, OpTy > | m_SExtOrSelf (const OpTy &Op) |
template<typename OpTy > | |
match_combine_or< CastClass_match< OpTy, Instruction::ZExt >, CastClass_match< OpTy, Instruction::SExt > > | m_ZExtOrSExt (const OpTy &Op) |
template<typename OpTy > | |
match_combine_or< match_combine_or< CastClass_match< OpTy, Instruction::ZExt >, CastClass_match< OpTy, Instruction::SExt > >, OpTy > | m_ZExtOrSExtOrSelf (const OpTy &Op) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::UIToFP > | m_UIToFP (const OpTy &Op) |
Matches UIToFP. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::SIToFP > | m_SIToFP (const OpTy &Op) |
Matches SIToFP. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::FPTrunc > | m_FPTrunc (const OpTy &Op) |
Matches FPTrunc. More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::FPExt > | m_FPExt (const OpTy &Op) |
Matches FPExt. More... | |
br_match | m_UnconditionalBr (BasicBlock *&Succ) |
template<typename Cond_t > | |
brc_match< Cond_t, bind_ty< BasicBlock >, bind_ty< BasicBlock > > | m_Br (const Cond_t &C, BasicBlock *&T, BasicBlock *&F) |
template<typename Cond_t , typename TrueBlock_t , typename FalseBlock_t > | |
brc_match< Cond_t, TrueBlock_t, FalseBlock_t > | m_Br (const Cond_t &C, const TrueBlock_t &T, const FalseBlock_t &F) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty > | m_SMax (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty > | m_SMin (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty > | m_UMax (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty > | m_UMin (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ofmax_pred_ty > | m_OrdFMax (const LHS &L, const RHS &R) |
Match an 'ordered' floating point maximum function. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ofmin_pred_ty > | m_OrdFMin (const LHS &L, const RHS &R) |
Match an 'ordered' floating point minimum function. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ufmax_pred_ty > | m_UnordFMax (const LHS &L, const RHS &R) |
Match an 'unordered' floating point maximum function. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ufmin_pred_ty > | m_UnordFMin (const LHS &L, const RHS &R) |
Match an 'unordered' floating point minimum function. More... | |
template<typename LHS_t , typename RHS_t , typename Sum_t > | |
UAddWithOverflow_match< LHS_t, RHS_t, Sum_t > | m_UAddWithOverflow (const LHS_t &L, const RHS_t &R, const Sum_t &S) |
Match an icmp instruction checking for unsigned overflow on addition. More... | |
template<unsigned OpI, typename Opnd_t > | |
Argument_match< Opnd_t > | m_Argument (const Opnd_t &Op) |
Match an argument. More... | |
template<Intrinsic::ID IntrID> | |
IntrinsicID_match | m_Intrinsic () |
Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X)) More... | |
template<Intrinsic::ID IntrID, typename T0 > | |
m_Intrinsic_Ty< T0 >::Ty | m_Intrinsic (const T0 &Op0) |
template<Intrinsic::ID IntrID, typename T0 , typename T1 > | |
m_Intrinsic_Ty< T0, T1 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1) |
template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 > | |
m_Intrinsic_Ty< T0, T1, T2 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2) |
template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 , typename T3 > | |
m_Intrinsic_Ty< T0, T1, T2, T3 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3) |
template<typename Opnd0 > | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_BitReverse (const Opnd0 &Op0) |
template<typename Opnd0 > | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_BSwap (const Opnd0 &Op0) |
template<typename Opnd0 > | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_FAbs (const Opnd0 &Op0) |
template<typename Opnd0 > | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_FCanonicalize (const Opnd0 &Op0) |
template<typename Opnd0 , typename Opnd1 > | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_FMin (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename Opnd0 , typename Opnd1 > | |
m_Intrinsic_Ty< Opnd0, Opnd1 >::Ty | m_FMax (const Opnd0 &Op0, const Opnd1 &Op1) |
template<typename LHS , typename RHS > | |
AnyBinaryOp_match< LHS, RHS, true > | m_c_BinOp (const LHS &L, const RHS &R) |
Matches a BinaryOperator with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicate, true > | m_c_ICmp (ICmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
Matches an ICmp with a predicate over LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Add, true > | m_c_Add (const LHS &L, const RHS &R) |
Matches a Add with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Mul, true > | m_c_Mul (const LHS &L, const RHS &R) |
Matches a Mul with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::And, true > | m_c_And (const LHS &L, const RHS &R) |
Matches an And with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Or, true > | m_c_Or (const LHS &L, const RHS &R) |
Matches an Or with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Xor, true > | m_c_Xor (const LHS &L, const RHS &R) |
Matches an Xor with LHS and RHS in either order. More... | |
template<typename ValTy > | |
BinaryOp_match< cst_pred_ty< is_zero_int >, ValTy, Instruction::Sub > | m_Neg (const ValTy &V) |
Matches a 'Neg' as 'sub 0, V'. More... | |
template<typename ValTy > | |
BinaryOp_match< ValTy, cst_pred_ty< is_all_ones >, Instruction::Xor, true > | m_Not (const ValTy &V) |
Matches a 'Not' as 'xor V, -1' or 'xor -1, V'. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty, true > | m_c_SMin (const LHS &L, const RHS &R) |
Matches an SMin with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty, true > | m_c_SMax (const LHS &L, const RHS &R) |
Matches an SMax with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty, true > | m_c_UMin (const LHS &L, const RHS &R) |
Matches a UMin with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty, true > | m_c_UMax (const LHS &L, const RHS &R) |
Matches a UMax with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FAdd, true > | m_c_FAdd (const LHS &L, const RHS &R) |
Matches FAdd with LHS and RHS in either order. More... | |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FMul, true > | m_c_FMul (const LHS &L, const RHS &R) |
Matches FMul with LHS and RHS in either order. More... | |
template<typename Val_t > | |
Signum_match< Val_t > | m_Signum (const Val_t &V) |
Matches a signum pattern. More... | |
|
inline |
Definition at line 759 of file PatternMatch.h.
Referenced by canNarrowShiftAmt(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), checkForNegativeOperand(), llvm::InstCombiner::commonShiftTransforms(), computeKnownBitsFromOperator(), llvm::JumpThreadingPass::ComputeValueKnownInPredecessorsImpl(), llvm::createSeparateConstOffsetFromGEPPass(), dropRedundantMaskingOfLeftShiftInput(), llvm::findScalarElement(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), getValueFromICmpCondition(), isGEPFoldable(), isKnownNonZero(), isKnownToBeAPowerOfTwo(), IsMasked(), isSupportedGuardInstruction(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchesAdd(), matchUAddWithOverflowConstantEdgeCases(), processUGT_ADDCST_ADD(), SimplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyOrOfICmpsWithAdd(), SimplifySubInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitXor().
|
inline |
Match an integer or vector with all bits set.
For vectors, this includes constants with undefined elements.
Definition at line 336 of file PatternMatch.h.
Referenced by areInverseVectorBitmasks(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), dropRedundantMaskingOfLeftShiftInput(), foldICmpBitCast(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldNoWrapAdd(), foldSelectICmpAndOr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldXorToXor(), IsMasked(), m_Not(), matchSelectPattern(), matchUAddWithOverflowConstantEdgeCases(), SimplifyAddInst(), SimplifyAndInst(), SimplifyAShrInst(), simplifyBinaryIntrinsic(), SimplifyGEPInst(), simplifyICmpWithConstant(), SimplifyOrInst(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::visitZExt().
|
inline |
Definition at line 874 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), checkForNegativeOperand(), foldAndOrOfEqualityCmpsWithConstants(), foldAnyOrAllBitsSet(), foldICmpWithMinMax(), foldOrToXor(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), llvm::InstCombiner::FoldShiftByConstant(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), foldVecTruncToExtElt(), foldXorToXor(), getMaskedTypeForICmpPair(), isImpliedCondAndOr(), isKnownToBeAPowerOfTwo(), isOnlyReachableViaThisEdge(), isSupportedGuardInstruction(), matchAndOrChain(), MatchRem(), matchRotate(), normalizePredicate(), llvm::parseWidenableBranch(), processUGT_ADDCST_ADD(), processUMulZExtIdiom(), replaceAllUsesOfWithIn(), llvm::InstCombiner::replacedSelectWithOperand(), scaleWeights(), SimplifyOrInst(), simplifySelectBitTest(), simplifySelectWithICmpCond(), tryToRecognizePopCount(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::visitZExt().
|
inline |
Match an integer or vector with any integral constant.
For vectors, this includes constants with undefined elements.
Definition at line 327 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), FoldTwoEntryPHINode(), and llvm::isFreeToInvert().
|
inline |
Match a floating-point negative zero or positive zero.
For vectors, this includes constants with undefined elements.
Definition at line 515 of file PatternMatch.h.
Referenced by createPowWithIntegerExponent(), foldFCmpReciprocalAndZero(), foldSelectBinOpIdentity(), m_FNegNSZ(), matchSelectPattern(), reassociateFCmps(), SimplifyFAddInst(), SimplifyFCmpInst(), SimplifyFDivInst(), SimplifyFMAFMul(), SimplifyFSubInst(), and llvm::InstCombiner::visitFCmpInst().
|
inline |
Match a ConstantFP or splatted ConstantVector, binding the specified pointer to the contained APFloat.
Definition at line 198 of file PatternMatch.h.
Referenced by createPowWithIntegerExponent(), factorizeFAddFSub(), foldFCmpReciprocalAndZero(), getIntToFPVal(), getNegatibleInsts(), getSqrtCall(), matchFastFloatClamp(), simplifyBinaryIntrinsic(), SimplifyFCmpInst(), llvm::InstCombiner::visitCallInst(), and llvm::InstCombiner::visitFCmpInst().
|
inline |
Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt.
Definition at line 194 of file PatternMatch.h.
Referenced by annotateNonNullAndDereferenceable(), canEvaluateShiftedShift(), canEvaluateTruncated(), canEvaluateZExtd(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), checkForNegativeOperand(), llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::commonIRemTransforms(), llvm::computeConstantRange(), computeKnownBits(), computeKnownBitsFromOperator(), ComputeNumSignBitsImpl(), llvm::ConstantFoldBinaryInstruction(), createAndInstr(), llvm::decomposeBitTestICmp(), foldAndOrOfEqualityCmpsWithConstants(), foldICmpBitCast(), foldICmpShlOne(), foldICmpWithTruncSignExtendedVal(), foldNoWrapAdd(), foldSelectICmpAnd(), llvm::InstCombiner::FoldShiftByConstant(), foldShiftedShift(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), getAlternateBinop(), getBinOpsForFactorization(), getDemandedBitsLHSMask(), getLogBase2(), GetLoopInvariantInsertPosition(), getRangeForAffineARHelper(), getValueFromOverflowCondition(), isAlwaysLive(), isDivZero(), llvm::isSafeToSpeculativelyExecute(), isSelect01(), isSignedMinMaxClamp(), isTruePredicate(), lookThroughAnd(), maintainNoSignedWrap(), matchClamp(), MatchDiv(), matchMinMax(), MatchMul(), MatchRem(), matchUAddWithOverflowConstantEdgeCases(), processUGT_ADDCST_ADD(), llvm::InstCombiner::replacedSelectWithOperand(), setLimitsForBinOp(), setLimitsForIntrinsic(), setLimitsForSelectPattern(), ShrinkDemandedConstant(), SimplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOrOfICmpsWithConstants(), SimplifyBSwap(), simplifyICmpWithBinOp(), simplifyICmpWithConstant(), simplifyIntrinsic(), SimplifyLShrInst(), SimplifyOrInst(), simplifyOrOfICmpsWithAdd(), simplifySelectBitTest(), simplifySelectWithICmpCond(), truncateIVUse(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitLShr(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitUDiv(), llvm::InstCombiner::visitXor(), and llvm::reassociate::XorOpnd::XorOpnd().
|
inline |
Match an argument.
Definition at line 1683 of file PatternMatch.h.
|
inline |
Definition at line 904 of file PatternMatch.h.
Referenced by dropRedundantMaskingOfLeftShiftInput(), EvaluateConstantChrecAtConstant(), foldICmpWithMinMax(), foldICmpWithTruncSignExtendedVal(), foldNoWrapAdd(), foldSelectICmpLshrAshr(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), GetLoopInvariantInsertPosition(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), SimplifyGEPInst(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitXor().
|
inline |
Match an arbitrary basic block value and ignore it.
Definition at line 92 of file PatternMatch.h.
Referenced by llvm::SCEVExpander::getRelatedExistingExpansion(), m_Br(), and llvm::InstCombiner::visitBranchInst().
|
inline |
Match a basic block value, capturing it if we match.
Definition at line 572 of file PatternMatch.h.
|
inline |
Definition at line 573 of file PatternMatch.h.
|
inline |
Match an arbitrary binary operation and ignore it.
Definition at line 73 of file PatternMatch.h.
Referenced by cheapToScalarize(), createRdxShuffleMask(), foldAndToXor(), foldBitCastBitwiseLogic(), foldSelectBinOpIdentity(), foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldVecTruncToExtElt(), getReductionData(), llvm::isSplatValue(), matchRotate(), matchUAddWithOverflowConstantEdgeCases(), reassociateFCmps(), scaleWeights(), ShrinkDemandedConstant(), simplifyAssocCastAssoc(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitExtractElementInst(), and llvm::InstCombiner::visitXor().
|
inline |
Match a binary operator, capturing it if we match.
Definition at line 560 of file PatternMatch.h.
References I.
|
inline |
Definition at line 724 of file PatternMatch.h.
References llvm::MCID::Commutable.
|
inline |
Matches BitCast.
Definition at line 1288 of file PatternMatch.h.
Referenced by combineLoadToNewType(), findAffectedValues(), foldBitCastBitwiseLogic(), foldBitcastExtElt(), foldVecTruncToExtElt(), removeBitcastsFromLoadStoreOnMinMax(), simplifyICmpWithConstant(), and llvm::InstCombiner::visitInsertElementInst().
|
inline |
Definition at line 1762 of file PatternMatch.h.
Referenced by foldCtpop(), foldCttzCtlz(), foldICmpWithMinMax(), and simplifyUnaryIntrinsic().
|
inline |
Matches bitwise logic operations.
Definition at line 1079 of file PatternMatch.h.
|
inline |
Definition at line 1414 of file PatternMatch.h.
References C, and m_BasicBlock().
Referenced by createFFSIntrinsic(), foldGuardedRotateToFunnelShift(), llvm::SCEVExpander::getRelatedExistingExpansion(), llvm::parseWidenableBranch(), processUGT_ADDCST_ADD(), scaleWeights(), tryToMoveFreeBeforeNullTest(), and llvm::InstCombiner::visitBranchInst().
|
inline |
Definition at line 1421 of file PatternMatch.h.
|
inline |
Definition at line 1767 of file PatternMatch.h.
Referenced by foldCtpop(), foldICmpWithMinMax(), SimplifyBSwap(), simplifyUnaryIntrinsic(), and llvm::InstCombiner::visitCallInst().
|
inline |
Matches a Add with LHS and RHS in either order.
Definition at line 1814 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldToUnsignedSaturatedAdd(), foldUnsignedUnderflowCheck(), SimplifyOrInst(), tryToRecognizePopCount(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitXor().
|
inline |
Matches an And with LHS and RHS in either order.
Definition at line 1828 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), llvm::collectCmpOps(), computeKnownBitsFromAssume(), dropRedundantMaskingOfLeftShiftInput(), foldAndToXor(), foldAnyOrAllBitsSet(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldOrToXor(), foldSelectICmpAndAnd(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldXorToXor(), llvm::haveNoCommonBitsSet(), lookThroughAnd(), simplifyAndOrOfICmpsWithZero(), simplifyICmpWithBinOp(), SimplifyOrInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), visitMaskedMerge(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitXor().
|
inline |
Matches a BinaryOperator with LHS and RHS in either order.
Definition at line 1799 of file PatternMatch.h.
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), computeKnownBitsFromOperator(), foldSelectBinOpIdentity(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), shouldMergeGEPs(), llvm::InstCombiner::visitAdd(), and llvm::InstCombiner::visitAnd().
|
inline |
Matches FAdd with LHS and RHS in either order.
Definition at line 1889 of file PatternMatch.h.
Referenced by factorizeLerp(), SimplifyFSubInst(), llvm::InstCombiner::visitFAdd(), and llvm::InstCombiner::visitFSub().
|
inline |
Matches FMul with LHS and RHS in either order.
Definition at line 1896 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), factorizeLerp(), SimplifyFDivInst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), and llvm::InstCombiner::visitFSub().
|
inline |
Matches an ICmp with a predicate over LHS and RHS in either order.
Does not swap the predicate.
Definition at line 1807 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithTruncSignExtendedVal(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldUnsignedUnderflowCheck(), isKnownNonNullFromDominatingCondition(), and simplifyUnsignedRangeCheck().
|
inline |
Matches a Mul with LHS and RHS in either order.
Definition at line 1821 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), matchExpandedRem(), simplifyDiv(), llvm::InstCombiner::visitMul(), and llvm::InstCombiner::visitSub().
|
inline |
Matches an Or with LHS and RHS in either order.
Definition at line 1835 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), foldAndToXor(), foldGuardedRotateToFunnelShift(), foldOrToXor(), foldXorToXor(), SimplifyAndInst(), simplifyICmpWithBinOp(), SimplifyLShrInst(), splitMergedValStore(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), and llvm::InstCombiner::visitXor().
|
inline |
Matches an SMax with LHS and RHS in either order.
Definition at line 1870 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), and foldICmpWithMinMax().
|
inline |
Matches an SMin with LHS and RHS in either order.
Definition at line 1864 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), and foldICmpWithMinMax().
|
inline |
Matches a UMax with LHS and RHS in either order.
Definition at line 1882 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), and foldICmpWithMinMax().
|
inline |
Matches a UMin with LHS and RHS in either order.
Definition at line 1876 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), foldICmpWithMinMax(), and foldToUnsignedSaturatedAdd().
|
inline |
Matches an Xor with LHS and RHS in either order.
Definition at line 1842 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), foldXorToXor(), m_Not(), SimplifyOrInst(), llvm::InstCombiner::visitAnd(), visitMaskedMerge(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitXor().
|
inline |
Matches any compare instruction and ignore it.
Definition at line 78 of file PatternMatch.h.
Referenced by cheapToScalarize(), llvm::collectCmpOps(), createFFSIntrinsic(), foldSelectBinOpIdentity(), isEqualImpl(), isMinMaxWithLoads(), scaleWeights(), llvm::InstCombiner::visitBranchInst(), llvm::InstCombiner::visitExtractElementInst(), and llvm::InstCombiner::visitXor().
|
inline |
Definition at line 1146 of file PatternMatch.h.
|
inline |
Combine two pattern matchers matching L && R.
Definition at line 148 of file PatternMatch.h.
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), createFFSIntrinsic(), foldICmpWithLowBitMaskedVal(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), m_Intrinsic(), matchExpandedRem(), processUGT_ADDCST_ADD(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), SimplifyAndInst(), and visitMaskedMerge().
|
inline |
Combine two pattern matchers matching L || R.
Definition at line 142 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), dropRedundantMaskingOfLeftShiftInput(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), FoldTwoEntryPHINode(), foldVecTruncToExtElt(), m_SExtOrSelf(), m_TruncOrSelf(), m_ZExtOrSelf(), m_ZExtOrSExt(), m_ZExtOrSExtOrSelf(), markAliveBlocks(), matchFastFloatClamp(), matchSelectPattern(), omitCheckForZeroBeforeMulWithOverflowInternal(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), scaleWeights(), SimplifyMulInst(), simplifySelectWithICmpCond(), and tryToMoveFreeBeforeNullTest().
|
inline |
Match an arbitrary Constant and ignore it.
Definition at line 89 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), areInverseVectorBitmasks(), canNarrowShiftAmt(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), llvm::InstCombiner::commonShiftTransforms(), llvm::findScalarElement(), foldBitCastBitwiseLogic(), foldConstantInsEltIntoShuffle(), foldFDivConstantDividend(), foldFDivConstantDivisor(), foldFNegIntoConstant(), foldICmpBitCast(), foldICmpWithLowBitMaskedVal(), foldIdentityExtractShuffle(), foldNoWrapAdd(), foldSelectBinOpIdentity(), foldSelectShuffle(), foldSelectShuffleWith1Binop(), foldUDivShl(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVectorCmp(), foldVecTruncToExtElt(), getAlternateBinop(), getBinOpsForFactorization(), getNegatibleInsts(), hoistInsEltConst(), llvm::slpvectorizer::BoUpSLP::isLoadCombineReductionCandidate(), IsMasked(), llvm::isSplatValue(), lookThroughCast(), narrowUDivURem(), processUGT_ADDCST_ADD(), shouldMergeGEPs(), simplifyAssocCastAssoc(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitFCmpInst(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitFSub(), visitMaskedMerge(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::visitZExt().
Match a Constant, capturing the value if we match.
Definition at line 566 of file PatternMatch.h.
References C.
|
inline |
Match a ConstantFP, capturing the value if we match.
Definition at line 569 of file PatternMatch.h.
References C.
|
inline |
Match an arbitrary ConstantInt and ignore it.
Match a ConstantInt with a specific value.
Definition at line 81 of file PatternMatch.h.
Referenced by canEvaluateShifted(), canonicalizeInsertSplat(), cheapToScalarize(), computeKnownBitsFromAssume(), llvm::JumpThreadingPass::ComputeValueKnownInPredecessorsImpl(), EvaluateConstantChrecAtConstant(), foldBitcastExtElt(), foldConstantInsEltIntoShuffle(), foldICmpShlOne(), foldICmpWithMinMax(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), llvm::InstCombiner::FoldShiftByConstant(), foldShuffleWithInsert(), foldUnsignedUnderflowCheck(), foldVecTruncToExtElt(), getValueFromICmpCondition(), hasOnlyOneNonZeroIndex(), hoistInsEltConst(), isSupportedGuardInstruction(), llvm::PatternMatch::constantint_match< Val >::match(), matchAndOrChain(), matchesAdd(), matchesOr(), processUGT_ADDCST_ADD(), processUMulZExtIdiom(), simplifyDiv(), SimplifyGEPInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitInsertElementInst(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSExt(), and llvm::InstCombiner::visitTrunc().
|
inline |
Match a ConstantInt, capturing the value if we match.
Definition at line 563 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 674 of file PatternMatch.h.
|
inline |
A commutative-friendly version of m_Specific().
Definition at line 600 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), computeKnownBitsFromOperator(), dropRedundantMaskingOfLeftShiftInput(), factorizeLerp(), foldAndToXor(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldICmpWithTruncSignExtendedVal(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldToUnsignedSaturatedAdd(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldXorToXor(), matchExpandedRem(), simplifySelectWithICmpCond(), tryToRecognizePopCount(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitFDiv(), visitMaskedMerge(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitTrunc(), and llvm::InstCombiner::visitXor().
Definition at line 601 of file PatternMatch.h.
|
inline |
A commutative-friendly version of m_Specific().
Definition at line 694 of file PatternMatch.h.
|
inline |
Definition at line 698 of file PatternMatch.h.
|
inline |
Definition at line 1112 of file PatternMatch.h.
References llvm::PatternMatch::OneUse_match< SubPattern_t >::SubPattern.
Referenced by isKnownNonZero(), isKnownToBeAPowerOfTwo(), SimplifyMulInst(), SimplifyShlInst(), llvm::InstCombiner::visitShl(), and llvm::InstCombiner::visitUDiv().
|
inline |
Matches ExtractElementInst.
Definition at line 1244 of file PatternMatch.h.
Referenced by foldInsEltIntoIdentityShuffle(), llvm::SimplifyInsertElementInst(), and llvm::InstCombiner::visitInsertElementInst().
|
inline |
Definition at line 1772 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitCallInst().
|
inline |
Definition at line 765 of file PatternMatch.h.
Referenced by llvm::CannotBeNegativeZero(), getNegatibleInsts(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), and llvm::InstCombiner::visitFMul().
|
inline |
Definition at line 1777 of file PatternMatch.h.
|
inline |
Definition at line 1158 of file PatternMatch.h.
Referenced by reassociateFCmps().
|
inline |
Definition at line 850 of file PatternMatch.h.
Referenced by factorizeFAddFSub(), foldFDivConstantDividend(), foldFNegIntoConstant(), hoistFNegAboveFMulFDiv(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), and llvm::InstCombiner::visitFSub().
|
inline |
Definition at line 1788 of file PatternMatch.h.
|
inline |
Definition at line 1782 of file PatternMatch.h.
|
inline |
Definition at line 832 of file PatternMatch.h.
Referenced by createPowWithIntegerExponent(), factorizeFAddFSub(), foldFDivConstantDividend(), foldFNegIntoConstant(), hoistFNegAboveFMulFDiv(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), llvm::InstCombiner::visitFMul(), and llvm::InstCombiner::visitFSub().
|
inline |
Match 'fneg X' as 'fsub -0.0, X'.
Definition at line 814 of file PatternMatch.h.
References X.
Referenced by createAndInstr(), foldFDivConstantDividend(), foldFDivConstantDivisor(), foldFNegIntoConstant(), llvm::getComplexity(), getNegatibleInsts(), hoistFNegAboveFMulFDiv(), isReassociableOp(), LinearizeExprTree(), NegateValue(), optimizeTrigReflections(), llvm::FastISel::selectOperator(), ShouldBreakUpSubtract(), SimplifyFAddInst(), simplifyFNegInst(), SimplifyFSubInst(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFCmpInst(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitFPTrunc(), and llvm::InstCombiner::visitFSub().
|
inline |
Match 'fneg X' as 'fsub +-0.0, X'.
Definition at line 821 of file PatternMatch.h.
References m_AnyZeroFP(), and m_FSub().
Referenced by SimplifyFDivInst().
|
inline |
Matches FPExt.
Definition at line 1370 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitFCmpInst(), and llvm::InstCombiner::visitFSub().
|
inline |
Match a float 1.0 or vector with all elements equal to 1.0.
Definition at line 628 of file PatternMatch.h.
References m_SpecificFP().
Referenced by createPowWithIntegerExponent(), factorizeLerp(), llvm::GCNTTIImpl::getArithmeticInstrCost(), SimplifyFDivInst(), and SimplifyFMAFMul().
|
inline |
Matches FPTrunc.
Definition at line 1364 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitFSub().
|
inline |
Definition at line 868 of file PatternMatch.h.
|
inline |
Definition at line 777 of file PatternMatch.h.
Referenced by factorizeLerp(), getNegatibleInsts(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), m_FNegNSZ(), SimplifyFAddInst(), SimplifyFSubInst(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitFNeg(), and llvm::InstCombiner::visitFSub().
|
inline |
Definition at line 1152 of file PatternMatch.h.
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), computeKnownBitsFromAssume(), countToEliminateCompares(), createFFSIntrinsic(), foldGuardedRotateToFunnelShift(), foldICmpShlOne(), foldIsPowerOf2(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), llvm::SCEVExpander::getRelatedExistingExpansion(), IsMasked(), isSupportedGuardInstruction(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), omitCheckForZeroBeforeInvertedMulWithOverflow(), omitCheckForZeroBeforeMulWithOverflow(), processUGT_ADDCST_ADD(), replaceAllUsesOfWithIn(), simplifyAndOfICmpsWithAdd(), simplifyAndOfICmpsWithSameOperands(), simplifyOrOfICmpsWithAdd(), simplifyOrOfICmpsWithSameOperands(), simplifySelectWithICmpCond(), simplifyUnsignedRangeCheck(), truncateIVUse(), and tryToMoveFreeBeforeNullTest().
|
inline |
Matches integer division operations.
Definition at line 1085 of file PatternMatch.h.
Referenced by isKnownNonZero(), matchExpandedRem(), and SimplifyMulInst().
|
inline |
Matches InsertElementInst.
Definition at line 1236 of file PatternMatch.h.
Referenced by canonicalizeInsertSplat(), cheapToScalarize(), foldBitcastExtElt(), foldInsEltIntoSplat(), foldShuffleWithInsert(), llvm::getSplatValue(), IsMasked(), and llvm::ARMTargetLowering::shouldSinkOperands().
|
inline |
Match an instruction, capturing it if we match.
Definition at line 558 of file PatternMatch.h.
References I.
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), getNegatibleInsts(), llvm::SCEVExpander::getRelatedExistingExpansion(), IsMasked(), isMinMaxWithLoads(), lookThroughAnd(), matchExpandedRem(), processUGT_ADDCST_ADD(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), and llvm::InstCombiner::visitFCmpInst().
|
inline |
Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X))
Definition at line 1732 of file PatternMatch.h.
|
inline |
Definition at line 1737 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 1742 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 1749 of file PatternMatch.h.
References m_CombineAnd(), and T1.
|
inline |
Definition at line 1756 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Matches integer remainder operations.
Definition at line 1092 of file PatternMatch.h.
Referenced by processUGT_ADDCST_ADD().
|
inline |
Matches LoadInst.
Definition at line 1258 of file PatternMatch.h.
Referenced by cheapToScalarize(), createFFSIntrinsic(), llvm::slpvectorizer::BoUpSLP::isLoadCombineReductionCandidate(), isMinMaxWithLoads(), and removeBitcastsFromLoadStoreOnMinMax().
|
inline |
Matches logical shift operations.
Definition at line 1072 of file PatternMatch.h.
Referenced by foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldVecTruncToExtElt(), matchRotate(), and llvm::InstCombiner::visitAnd().
|
inline |
Match an integer or vector with only the low bit(s) set.
For vectors, this includes constants with undefined elements.
Definition at line 457 of file PatternMatch.h.
Referenced by foldICmpWithLowBitMaskedVal().
|
inline |
Definition at line 898 of file PatternMatch.h.
Referenced by canEvaluateShifted(), canNarrowShiftAmt(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), EvaluateConstantChrecAtConstant(), foldGuardedRotateToFunnelShift(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldSelectICmpAndAnd(), foldSelectICmpLshrAshr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldVecTruncToExtElt(), GetLoopInvariantInsertPosition(), isKnownToBeAPowerOfTwo(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchAndOrChain(), MatchDiv(), processUGT_ADDCST_ADD(), replaceAllUsesOfWithIn(), llvm::InstCombiner::replacedSelectWithOperand(), SimplifyAndInst(), simplifyICmpWithBinOp(), simplifyValueKnownNonZero(), tryToRecognizePopCount(), llvm::InstCombiner::visitLShr(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitUDiv(), and llvm::InstCombiner::visitXor().
|
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 346 of file PatternMatch.h.
|
inline |
Definition at line 349 of file PatternMatch.h.
|
inline |
Definition at line 826 of file PatternMatch.h.
Referenced by canNarrowShiftAmt(), hasOnlyOneNonZeroIndex(), isGEPFoldable(), isKnownNonZero(), MatchMul(), tryToRecognizePopCount(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitShl(), and llvm::InstCombiner::visitSub().
|
inline |
Match an arbitrary NaN constant.
This includes quiet and signalling nans. For vectors, this includes constants with undefined elements.
Definition at line 506 of file PatternMatch.h.
Referenced by simplifyBinaryIntrinsic(), SimplifyFCmpInst(), and simplifyFPOp().
|
inline |
Matches a 'Neg' as 'sub 0, V'.
Definition at line 1850 of file PatternMatch.h.
References m_Sub(), and m_ZeroInt().
Referenced by canonicalizeSaturatedAdd(), computeKnownBitsFromOperator(), createAndInstr(), foldCttzCtlz(), foldICmpWithMinMax(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldVecTruncToExtElt(), getBinOpsForFactorization(), llvm::getComplexity(), getNegatibleInsts(), isKnownToBeAPowerOfTwo(), isReassociableOp(), LinearizeExprTree(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchRotate(), matchSelectPattern(), NegateValue(), setLimitsForSelectPattern(), ShouldBreakUpSubtract(), SimplifyAndInst(), simplifyICmpWithBinOp(), unifyBitWidth(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitMul(), and llvm::InstCombiner::visitSub().
|
inline |
Match a integer or vector negated power-of-2.
For vectors, this includes constants with undefined elements.
Definition at line 424 of file PatternMatch.h.
|
inline |
Definition at line 427 of file PatternMatch.h.
|
inline |
Match an integer or vector of negative values.
For vectors, this includes constants with undefined elements.
Definition at line 358 of file PatternMatch.h.
Referenced by SimplifyShlInst(), llvm::InstCombiner::visitSRem(), llvm::InstCombiner::visitUDiv(), llvm::InstCombiner::visitURem(), and llvm::InstCombiner::visitXor().
|
inline |
Definition at line 361 of file PatternMatch.h.
|
inline |
Match a floating-point negative zero.
For vectors, this includes constants with undefined elements.
Definition at line 533 of file PatternMatch.h.
Referenced by SimplifyFAddInst(), SimplifyFRemInst(), and SimplifyFSubInst().
|
inline |
Match an integer or vector of nonnegative values.
For vectors, this includes constants with undefined elements.
Definition at line 370 of file PatternMatch.h.
Referenced by foldICmpWithLowBitMaskedVal(), and llvm::InstCombiner::visitXor().
|
inline |
Definition at line 373 of file PatternMatch.h.
|
inline |
Matches a 'Not' as 'xor V, -1' or 'xor -1, V'.
Definition at line 1857 of file PatternMatch.h.
References m_AllOnes(), and m_c_Xor().
Referenced by areInverseVectorBitmasks(), llvm::canFreelyInvertAllUsersOf(), canonicalizeSaturatedAdd(), computeKnownBitsFromAssume(), createAndInstr(), findAffectedValues(), foldAndToXor(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldNoWrapAdd(), foldOrToXor(), foldToUnsignedSaturatedAdd(), FoldTwoEntryPHINode(), foldXorToXor(), llvm::getComplexity(), llvm::haveNoCommonBitsSet(), llvm::isFreeToInvert(), isReassociableOp(), matchDeMorgansLaws(), matchMinMax(), matchMinMaxOfMinMax(), omitCheckForZeroBeforeInvertedMulWithOverflow(), OptimizeAndOrXor(), SimplifyAddInst(), SimplifyAndInst(), SimplifyOrInst(), SimplifyXorInst(), sinkNotIntoXor(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitBranchInst(), visitMaskedMerge(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitXor().
|
inline |
Definition at line 937 of file PatternMatch.h.
References llvm::MCID::Add, and llvm::OverflowingBinaryOperator::NoSignedWrap.
Referenced by llvm::createSeparateConstOffsetFromGEPPass(), foldNoWrapAdd(), isTruePredicate(), truncateIVUse(), and llvm::InstCombiner::visitCallInst().
|
inline |
Definition at line 953 of file PatternMatch.h.
References llvm::OverflowingBinaryOperator::NoSignedWrap.
Referenced by llvm::InstCombiner::commonIDivTransforms(), and matchesOr().
|
inline |
Definition at line 961 of file PatternMatch.h.
References llvm::MCID::Add, llvm::OverflowingBinaryOperator::NoSignedWrap, and llvm::OverflowingBinaryOperator::NoUnsignedWrap.
Referenced by llvm::InstCombiner::commonIDivTransforms(), matchesOr(), SimplifyAShrInst(), simplifyRem(), and llvm::InstCombiner::visitAShr().
|
inline |
Definition at line 945 of file PatternMatch.h.
References llvm::OverflowingBinaryOperator::NoSignedWrap.
Referenced by llvm::createSeparateConstOffsetFromGEPPass(), llvm::isKnownNegation(), matchMinMax(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSDiv(), and llvm::InstCombiner::visitSRem().
|
inline |
Definition at line 970 of file PatternMatch.h.
References llvm::MCID::Add, and llvm::OverflowingBinaryOperator::NoUnsignedWrap.
Referenced by foldNoWrapAdd(), isTruePredicate(), and llvm::InstCombiner::visitCallInst().
|
inline |
Definition at line 986 of file PatternMatch.h.
References llvm::OverflowingBinaryOperator::NoUnsignedWrap.
Referenced by llvm::InstCombiner::commonIDivTransforms(), and llvm::InstCombiner::visitUDiv().
|
inline |
Definition at line 994 of file PatternMatch.h.
References llvm::OverflowingBinaryOperator::NoUnsignedWrap.
Referenced by llvm::InstCombiner::commonIDivTransforms(), SimplifyAndInst(), SimplifyLShrInst(), and simplifyRem().
|
inline |
Definition at line 978 of file PatternMatch.h.
References llvm::OverflowingBinaryOperator::NoUnsignedWrap.
|
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 382 of file PatternMatch.h.
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), checkForNegativeOperand(), llvm::InstCombiner::commonIDivTransforms(), llvm::ConstantFoldBinaryInstruction(), despeculateCountZeros(), dropRedundantMaskingOfLeftShiftInput(), foldAnyOrAllBitsSet(), foldCttzCtlz(), foldICmpBitCast(), foldICmpShlOne(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldSelectICmpAndAnd(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::Constant::isElementWiseEqual(), isKnownToBeAPowerOfTwo(), isNeutralValue(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchAndOrChain(), matchSelectPattern(), processUGT_ADDCST_ADD(), replaceAllUsesOfWithIn(), replaceConditionalBranchesOnConstant(), llvm::InstCombiner::replacedSelectWithOperand(), simplifyDivRem(), simplifyICmpOfBools(), SimplifyMulInst(), simplifyValueKnownNonZero(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitURem().
|
inline |
Definition at line 61 of file PatternMatch.h.
References llvm::PatternMatch::OneUse_match< SubPattern_t >::SubPattern.
Referenced by canNarrowShiftAmt(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeInsertSplat(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), cheapToScalarize(), llvm::InstCombiner::commonShiftTransforms(), factorizeFAddFSub(), factorizeLerp(), foldAnyOrAllBitsSet(), foldBitCastBitwiseLogic(), foldFNegIntoConstant(), foldGuardedRotateToFunnelShift(), foldICmpWithHighBitMask(), foldICmpWithMinMax(), foldICmpWithTruncSignExtendedVal(), foldLogicCastConstant(), foldNoWrapAdd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), llvm::InstCombiner::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVecTruncToExtElt(), hoistFNegAboveFMulFDiv(), matchDeMorgansLaws(), matchRotate(), narrowUDivURem(), optimizeTrigReflections(), processUGT_ADDCST_ADD(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), scaleWeights(), shouldMergeGEPs(), simplifyAssocCastAssoc(), simplifyValueKnownNonZero(), sinkNotIntoXor(), splitMergedValStore(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitBranchInst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitFNeg(), llvm::InstCombiner::visitFSub(), llvm::InstCombiner::visitLShr(), visitMaskedMerge(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSRem(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::visitZExt().
|
inline |
Definition at line 880 of file PatternMatch.h.
Referenced by checkForNegativeOperand(), foldAndToXor(), foldAnyOrAllBitsSet(), foldNoWrapAdd(), foldSelectICmpAndOr(), foldVecTruncToExtElt(), foldXorToXor(), isImpliedCondAndOr(), isKnownNonZero(), llvm::slpvectorizer::BoUpSLP::isLoadCombineReductionCandidate(), isOnlyReachableViaThisEdge(), isSupportedGuardInstruction(), isTruePredicate(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchAndOrChain(), matchesOr(), processUGT_ADDCST_ADD(), scaleWeights(), simplifySelectBitTest(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitOr(), and llvm::InstCombiner::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 1557 of file PatternMatch.h.
Referenced by createRdxShuffleMask(), getReductionData(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), and matchFastFloatClamp().
|
inline |
Match an 'ordered' floating point minimum function.
Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'minimum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(olt/le, L, R), L, R) semantics matched by this predicate.
min(L, R) iff L and R are not NaN
m_OrdFMin(L, R) = R iff L or R are NaN
Definition at line 1572 of file PatternMatch.h.
Referenced by createRdxShuffleMask(), getReductionData(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), and matchFastFloatClamp().
|
inline |
Match a floating-point positive zero.
For vectors, this includes constants with undefined elements.
Definition at line 524 of file PatternMatch.h.
Referenced by llvm::CannotBeNegativeZero(), foldFabsWithFcmpZero(), foldUnsignedUnderflowCheck(), SimplifyFAddInst(), SimplifyFRemInst(), SimplifyFSubInst(), llvm::InstCombiner::visitFCmpInst(), and llvm::InstCombiner::visitFSub().
|
inline |
Match an integer or vector power-of-2.
For vectors, this includes constants with undefined elements.
Definition at line 412 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), llvm::InstCombiner::commonShiftTransforms(), foldICmpShlOne(), foldSelectICmpAnd(), foldSelectICmpAndOr(), foldSignedTruncationCheck(), isKnownToBeAPowerOfTwo(), PickMostRelevantLoop(), llvm::InstCombiner::replacedSelectWithOperand(), and visitUDivOperand().
|
inline |
Definition at line 415 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 436 of file PatternMatch.h.
Referenced by isKnownToBeAPowerOfTwo().
|
inline |
Definition at line 439 of file PatternMatch.h.
|
inline |
Matches PtrToInt.
Definition at line 1294 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), findAffectedValues(), processUGT_ADDCST_ADD(), simplifyAndOrOfICmpsWithZero(), SimplifyGEPInst(), SimplifySubInst(), llvm::InstCombiner::visitGetElementPtrInst(), and llvm::InstCombiner::visitSub().
|
inline |
Definition at line 844 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), IsKnownPredicateViaMinOrMax(), MatchDiv(), simplifyDiv(), SimplifyGEPInst(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitSDiv(), and llvm::InstCombiner::visitSub().
|
inline |
Matches SelectInst.
Definition at line 1220 of file PatternMatch.h.
Referenced by annotateNonNullAndDereferenceable(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), foldICmpShlOne(), getBinOpsForFactorization(), getRangeForAffineARHelper(), llvm::isFreeToInvert(), isMinMaxWithLoads(), llvm::isSplatValue(), and llvm::InstCombiner::visitOr().
|
inline |
This matches a select of two constants, e.g.
: m_SelectCst<-1, 0>(m_Value(V))
Definition at line 1229 of file PatternMatch.h.
|
inline |
Matches SExt.
Definition at line 1312 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), llvm::InstCombiner::commonShiftTransforms(), llvm::createSeparateConstOffsetFromGEPPass(), foldLogicCastConstant(), foldNoWrapAdd(), m_SExtOrSelf(), m_ZExtOrSExt(), matchesOr(), matchSelectPattern(), shouldMergeGEPs(), SimplifyShift(), SimplifySRemInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitLShr(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitUDiv(), and llvm::InstCombiner::visitURem().
|
inline |
Definition at line 1330 of file PatternMatch.h.
References m_CombineOr(), and m_SExt().
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract().
|
inline |
Matches shift operations.
Definition at line 1057 of file PatternMatch.h.
Referenced by dropRedundantMaskingOfLeftShiftInput(), and llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts().
|
inline |
Definition at line 892 of file PatternMatch.h.
Referenced by canEvaluateShifted(), canNarrowShiftAmt(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), computeKnownBitsFromAssume(), dropRedundantMaskingOfLeftShiftInput(), EvaluateConstantChrecAtConstant(), foldGuardedRotateToFunnelShift(), foldICmpShlOne(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldICmpWithTruncSignExtendedVal(), foldNoWrapAdd(), foldUDivShl(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), getBinOpsForFactorization(), GetLoopInvariantInsertPosition(), hasOnlyOneNonZeroIndex(), isKnownNonZero(), isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineReductionCandidate(), MatchMul(), replaceAllUsesOfWithIn(), llvm::InstCombiner::replacedSelectWithOperand(), SimplifyAndInst(), simplifyICmpWithBinOp(), simplifyValueKnownNonZero(), splitMergedValStore(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitLShr(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), and visitUDivOperand().
|
inline |
Matches logical shift operations.
Definition at line 1064 of file PatternMatch.h.
Referenced by computeKnownBitsFromAssume(), dropRedundantMaskingOfLeftShiftInput(), llvm::InstCombiner::FoldShiftByConstant(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), isKnownNonZero(), processUGT_ADDCST_ADD(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), ShrinkDemandedConstant(), SimplifyShlInst(), llvm::InstCombiner::visitShl(), and llvm::InstCombiner::visitTrunc().
|
inline |
Matches ShuffleVectorInst.
Definition at line 1251 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), foldICmpBitCast(), foldIdentityExtractShuffle(), foldVectorCmp(), llvm::getSplatValue(), IsMasked(), llvm::isSplatValue(), shouldMergeGEPs(), and llvm::ARMTargetLowering::shouldSinkOperands().
|
inline |
Match an integer or vector with only the sign bit(s) set.
For vectors, this includes constants with undefined elements.
Definition at line 448 of file PatternMatch.h.
Referenced by isKnownToBeAPowerOfTwo(), SimplifyAddInst(), and llvm::InstCombiner::visitSDiv().
|
inline |
Matches a signum pattern.
signum(x) = x > 0 -> 1 x == 0 -> 0 x < 0 -> -1
Definition at line 1936 of file PatternMatch.h.
Referenced by processUGT_ADDCST_ADD().
|
inline |
Matches SIToFP.
Definition at line 1358 of file PatternMatch.h.
Referenced by foldICmpBitCast(), and simplifyUnaryIntrinsic().
|
inline |
Definition at line 1524 of file PatternMatch.h.
Referenced by createRdxShuffleMask(), getReductionData(), getSelectFoldableConstant(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), matchClamp(), and simplifyICmpWithMinMax().
|
inline |
Definition at line 1530 of file PatternMatch.h.
Referenced by createRdxShuffleMask(), getReductionData(), getSelectFoldableConstant(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), matchClamp(), and simplifyICmpWithMinMax().
|
inline |
Match if we have a specific specified value.
Definition at line 587 of file PatternMatch.h.
Referenced by areInverseVectorBitmasks(), canNarrowShiftAmt(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), llvm::InstCombiner::commonIDivTransforms(), computeKnownBitsFromAssume(), computeKnownBitsFromOperator(), factorizeFAddFSub(), foldGuardedRotateToFunnelShift(), foldICmpWithMinMax(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldIsPowerOf2(), foldOrToXor(), foldSelectBinOpIdentity(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSelectICmpLshrAshr(), foldSelectShuffleWith1Binop(), llvm::InstCombiner::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVectorCmp(), foldVecTruncToExtElt(), foldXorToXor(), getBinOpsForFactorization(), GetLoopInvariantInsertPosition(), getValueFromICmpCondition(), llvm::haveNoCommonBitsSet(), isEqualImpl(), llvm::isKnownNegation(), isKnownNonNullFromDominatingCondition(), isKnownToBeAPowerOfTwo(), isMinMaxWithLoads(), isSupportedGuardInstruction(), isTruePredicate(), matchClamp(), matchExpandedRem(), matchFastFloatClamp(), matchMinMax(), matchMinMaxOfMinMax(), matchRotate(), matchSelectPattern(), matchUAddWithOverflowConstantEdgeCases(), omitCheckForZeroBeforeMulWithOverflowInternal(), processUGT_ADDCST_ADD(), replaceAllUsesOfWithIn(), setLimitsForSelectPattern(), shouldMergeGEPs(), SimplifyAddInst(), SimplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOfICmpsWithSameOperands(), simplifyAndOrOfICmpsWithZero(), SimplifyAShrInst(), simplifyDiv(), SimplifyFAddInst(), SimplifyFDivInst(), SimplifyFSubInst(), SimplifyGEPInst(), simplifyICmpWithBinOp(), llvm::SimplifyInsertElementInst(), SimplifyLShrInst(), SimplifyMulInst(), SimplifyOrInst(), simplifyOrOfICmpsWithAdd(), simplifyOrOfICmpsWithSameOperands(), simplifyRem(), simplifySelectBitTest(), SimplifyShlInst(), simplifyUnsignedRangeCheck(), SimplifyXorInst(), swapMayExposeCSEOpportunities(), truncateIVUse(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitFSub(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitLShr(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitUDiv(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::visitZExt().
|
inline |
Match a specific basic block value.
Definition at line 689 of file PatternMatch.h.
Referenced by foldGuardedRotateToFunnelShift().
|
inline |
Match a specific floating point value or vector with all elements equal to the value.
Definition at line 625 of file PatternMatch.h.
Referenced by createPowWithIntegerExponent(), getIntToFPVal(), m_FPOne(), simplifyUnaryIntrinsic(), and llvm::InstCombiner::visitFMul().
|
inline |
Match a specific integer value or vector with all elements equal to the value.
Definition at line 664 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), foldGuardedRotateToFunnelShift(), foldInsEltIntoIdentityShuffle(), foldIsPowerOf2(), foldVecTruncToExtElt(), IsMasked(), m_SpecificInt(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchRotate(), SimplifyGEPInst(), splitMergedValStore(), tryToRecognizePopCount(), llvm::InstCombiner::visitCallInst(), and llvm::InstCombiner::visitShl().
|
inline |
Definition at line 668 of file PatternMatch.h.
References m_SpecificInt().
|
inline |
Match an integer or vector with every element comparing 'pred' (eg/ne/...) to Threshold.
For vectors, this includes constants with undefined elements.
Definition at line 494 of file PatternMatch.h.
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedAdd(), foldSelectICmpLshrAshr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), processUGT_ADDCST_ADD(), and llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts().
|
inline |
Definition at line 862 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::commonShiftTransforms(), MatchRem(), simplifyDiv(), simplifyRem(), and llvm::InstCombiner::visitSRem().
|
inline |
Matches StoreInst.
Definition at line 1265 of file PatternMatch.h.
|
inline |
Definition at line 771 of file PatternMatch.h.
Referenced by canNarrowShiftAmt(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeSaturatedSubtract(), llvm::InstCombiner::commonIDivTransforms(), llvm::createSeparateConstOffsetFromGEPPass(), foldGuardedRotateToFunnelShift(), foldNoWrapAdd(), foldUnsignedUnderflowCheck(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVecTruncToExtElt(), llvm::isKnownNegation(), m_Neg(), matchExpandedRem(), matchUAddWithOverflowConstantEdgeCases(), SimplifyAddInst(), SimplifyGEPInst(), SimplifySubInst(), simplifyUnsignedRangeCheck(), swapMayExposeCSEOpportunities(), tryToRecognizePopCount(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitXor().
|
inline |
Matches Trunc.
Definition at line 1300 of file PatternMatch.h.
Referenced by canAlwaysEvaluateInType(), canonicalizeSaturatedAdd(), llvm::decomposeBitTestICmp(), foldICmpWithMinMax(), foldSelectICmpAndOr(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), m_TruncOrSelf(), processUGT_ADDCST_ADD(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), SimplifySubInst(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitZExt().
|
inline |
Definition at line 1306 of file PatternMatch.h.
References m_CombineOr(), and m_Trunc().
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), processUGT_ADDCST_ADD(), and llvm::InstCombiner::visitSub().
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 1663 of file PatternMatch.h.
Referenced by matchUAddWithOverflowConstantEdgeCases().
|
inline |
Definition at line 838 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), isKnownToBeAPowerOfTwo(), MatchDiv(), simplifyDiv(), and simplifyICmpWithBinOp().
|
inline |
Matches UIToFP.
Definition at line 1352 of file PatternMatch.h.
Referenced by foldICmpBitCast(), simplifyICmpWithConstant(), and simplifyUnaryIntrinsic().
|
inline |
Definition at line 1536 of file PatternMatch.h.
Referenced by createRdxShuffleMask(), getReductionData(), getSelectFoldableConstant(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), matchClamp(), and simplifyICmpWithMinMax().
|
inline |
Definition at line 1542 of file PatternMatch.h.
Referenced by createRdxShuffleMask(), foldToUnsignedSaturatedAdd(), getReductionData(), getSelectFoldableConstant(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), matchClamp(), and simplifyICmpWithMinMax().
|
inline |
Definition at line 1393 of file PatternMatch.h.
Referenced by tryToMoveFreeBeforeNullTest().
|
inline |
Match an arbitrary undef constant.
Definition at line 86 of file PatternMatch.h.
Referenced by areExtractShuffleVectors(), canonicalizeInsertSplat(), llvm::ConstantFoldBinaryInstruction(), foldICmpBitCast(), foldInsEltIntoSplat(), foldVectorCmp(), IsMasked(), markAliveBlocks(), narrowVectorSelect(), replaceUndefsWith(), shouldMergeGEPs(), llvm::ARMTargetLowering::shouldSinkOperands(), SimplifyAddInst(), SimplifyAndInst(), simplifyBinaryIntrinsic(), simplifyDivRem(), SimplifyInsertValueInst(), simplifyIntrinsic(), SimplifyMulInst(), SimplifyOrInst(), SimplifyRightShift(), SimplifyShlInst(), SimplifySubInst(), SimplifyXorInst(), and llvm::InstCombiner::visitCallInst().
|
inline |
Match if the inner matcher does NOT match.
Definition at line 106 of file PatternMatch.h.
|
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 1588 of file PatternMatch.h.
Referenced by createRdxShuffleMask(), getReductionData(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), and matchFastFloatClamp().
|
inline |
Match an 'unordered' floating point minimum function.
Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'minimum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ult/le, L, R), L, R) semantics matched by this predicate.
min(L, R) iff L and R are not NaN
m_UnordFMin(L, R) = L iff L or R are NaN
Definition at line 1603 of file PatternMatch.h.
Referenced by createRdxShuffleMask(), getReductionData(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), and matchFastFloatClamp().
|
inline |
Definition at line 856 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), MatchRem(), processUGT_ADDCST_ADD(), simplifyDiv(), simplifyICmpWithBinOp(), and simplifyRem().
|
inline |
Match an arbitrary value and ignore it.
Definition at line 70 of file PatternMatch.h.
Referenced by annotateNonNullAndDereferenceable(), areExtractExts(), areExtractShuffleVectors(), canAlwaysEvaluateInType(), canEvaluateShifted(), llvm::canFreelyInvertAllUsersOf(), canNarrowShiftAmt(), llvm::CannotBeNegativeZero(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeInsertSplat(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), cheapToScalarize(), checkForNegativeOperand(), llvm::collectCmpOps(), combineLoadToNewType(), llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::commonShiftTransforms(), computeKnownBitsFromAssume(), computeKnownBitsFromOperator(), llvm::JumpThreadingPass::ComputeValueKnownInPredecessorsImpl(), countToEliminateCompares(), createAndInstr(), createFFSIntrinsic(), createPowWithIntegerExponent(), createRdxShuffleMask(), llvm::createSeparateConstOffsetFromGEPPass(), llvm::decomposeBitTestICmp(), dropRedundantMaskingOfLeftShiftInput(), EvaluateConstantChrecAtConstant(), factorizeFAddFSub(), factorizeLerp(), findAffectedValues(), llvm::findScalarElement(), foldAndOrOfEqualityCmpsWithConstants(), foldAndToXor(), foldAnyOrAllBitsSet(), foldBitCastBitwiseLogic(), foldBitcastExtElt(), foldCtpop(), foldCttzCtlz(), foldFabsWithFcmpZero(), foldFDivConstantDividend(), foldFDivConstantDivisor(), foldFNegIntoConstant(), foldGuardedRotateToFunnelShift(), foldICmpBitCast(), foldICmpShlOne(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldICmpWithTruncSignExtendedVal(), foldICmpWithZextOrSext(), foldIdentityExtractShuffle(), foldIsPowerOf2(), foldLogicCastConstant(), foldNoWrapAdd(), foldOrToXor(), foldSelectBinOpIdentity(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSelectICmpLshrAshr(), foldSelectShuffle(), llvm::InstCombiner::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShuffleWithInsert(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), FoldTwoEntryPHINode(), foldUDivShl(), foldUnsignedUnderflowCheck(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVectorCmp(), foldVecTruncToExtElt(), foldXorToXor(), getBinOpsForFactorization(), llvm::getComplexity(), GetLoopInvariantInsertPosition(), getMaskedTypeForICmpPair(), getNegatibleInsts(), getRangeForAffineARHelper(), getReductionData(), getSelectFoldableConstant(), llvm::getSplatValue(), hasOnlyOneNonZeroIndex(), llvm::haveNoCommonBitsSet(), hoistFNegAboveFMulFDiv(), hoistInsEltConst(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isEqualImpl(), llvm::isFreeToInvert(), isGEPFoldable(), isImpliedCondAndOr(), llvm::isKnownNegation(), isKnownNonZero(), IsKnownPredicateViaMinOrMax(), isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineReductionCandidate(), llvm::ScalarEvolution::isLoopInvariantPredicate(), IsMasked(), llvm::RecurrenceDescriptor::isMinMaxSelectCmpPattern(), isMinMaxWithLoads(), isOnlyReachableViaThisEdge(), isReassociableOp(), llvm::isSplatValue(), isSupportedGuardInstruction(), isTruePredicate(), LinearizeExprTree(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), llvm::PatternMatch::Signum_match< Opnd_t >::match(), matchAndOrChain(), matchDeMorgansLaws(), MatchDiv(), matchesAdd(), matchesOr(), matchExpandedRem(), MatchMul(), MatchRem(), matchRotate(), matchUAddWithOverflowConstantEdgeCases(), narrowUDivURem(), NegateValue(), normalizePredicate(), omitCheckForZeroBeforeInvertedMulWithOverflow(), omitCheckForZeroBeforeMulWithOverflow(), OptimizeAndOrXor(), optimizeTrigReflections(), llvm::parseWidenableBranch(), processUGT_ADDCST_ADD(), processUMulZExtIdiom(), reassociateFCmps(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), removeBitcastsFromLoadStoreOnMinMax(), replaceAllUsesOfWithIn(), llvm::InstCombiner::replacedSelectWithOperand(), scaleWeights(), llvm::FastISel::selectOperator(), ShouldBreakUpSubtract(), shouldMergeGEPs(), llvm::ARMTargetLowering::shouldSinkOperands(), ShrinkDemandedConstant(), SimplifyAddInst(), SimplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOfICmpsWithSameOperands(), simplifyAndOrOfICmpsWithZero(), SimplifyAShrInst(), simplifyAssocCastAssoc(), SimplifyBSwap(), simplifyDiv(), simplifyDivRem(), SimplifyFAddInst(), SimplifyFCmpInst(), SimplifyFDivInst(), SimplifyFMAFMul(), simplifyFNegInst(), SimplifyFSubInst(), SimplifyGEPInst(), simplifyICmpWithBinOp(), simplifyICmpWithConstant(), simplifyICmpWithMinMax(), SimplifyLShrInst(), SimplifyMulInst(), SimplifyOrInst(), simplifyOrOfICmpsWithAdd(), simplifyOrOfICmpsWithSameOperands(), simplifyRem(), simplifySelectWithICmpCond(), SimplifyShift(), SimplifyShlInst(), SimplifySRemInst(), SimplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), sinkNotIntoXor(), splitMergedValStore(), truncateIVUse(), tryToRecognizePopCount(), unifyBitWidth(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitBranchInst(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitExtractElementInst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFCmpInst(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitFNeg(), llvm::InstCombiner::visitFPTrunc(), llvm::InstCombiner::visitFSub(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitInsertElementInst(), llvm::InstCombiner::visitLShr(), visitMaskedMerge(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSRem(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitUDiv(), visitUDivOperand(), llvm::InstCombiner::visitURem(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::visitZExt().
Match a value, capturing it if we match.
Definition at line 554 of file PatternMatch.h.
Definition at line 555 of file PatternMatch.h.
|
inline |
Definition at line 886 of file PatternMatch.h.
Referenced by canonicalizeSaturatedAdd(), checkForNegativeOperand(), dropRedundantMaskingOfLeftShiftInput(), foldICmpWithMinMax(), foldNoWrapAdd(), foldXorToXor(), processUGT_ADDCST_ADD(), replaceAllUsesOfWithIn(), SimplifyAddInst(), SimplifyGEPInst(), SimplifyOrInst(), sinkNotIntoXor(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::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 403 of file PatternMatch.h.
Referenced by areInverseVectorBitmasks(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), llvm::ConstantFoldBinaryInstruction(), foldICmpBitCast(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldSignedTruncationCheck(), foldUnsignedUnderflowCheck(), foldXorToXor(), llvm::getGEPInductionOperand(), isKnownNonNullFromDominatingCondition(), IsMasked(), isNeutralValue(), markAliveBlocks(), matchMinMax(), omitCheckForZeroBeforeInvertedMulWithOverflow(), omitCheckForZeroBeforeMulWithOverflow(), processUGT_ADDCST_ADD(), replaceAllUsesOfWithIn(), replaceConditionalBranchesOnConstant(), shouldMergeGEPs(), llvm::ARMTargetLowering::shouldSinkOperands(), SimplifyAddInst(), SimplifyAndInst(), simplifyAndOrOfICmpsWithZero(), simplifyBinaryIntrinsic(), simplifyDivRem(), llvm::InstCombiner::simplifyDivRemOfSelectWithZeroOp(), SimplifyGEPInst(), simplifyICmpOfBools(), simplifyICmpWithConstant(), simplifyICmpWithZero(), SimplifyMulInst(), SimplifyOrInst(), simplifySelectWithICmpCond(), SimplifyShift(), SimplifySubInst(), simplifyUnsignedRangeCheck(), SimplifyXorInst(), tryToMoveFreeBeforeNullTest(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitPHINode(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSRem(), and llvm::InstCombiner::visitSub().
|
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 391 of file PatternMatch.h.
Referenced by canonicalizeInsertSplat(), canonicalizeSaturatedAdd(), foldGuardedRotateToFunnelShift(), foldICmpWithMinMax(), foldInsEltIntoSplat(), foldIsPowerOf2(), llvm::getSplatValue(), llvm::isKnownNegation(), m_Neg(), llvm::PatternMatch::UAddWithOverflow_match< LHS_t, RHS_t, Sum_t >::match(), matchSelectPattern(), matchUAddWithOverflowConstantEdgeCases(), llvm::ARMTargetLowering::shouldSinkOperands(), simplifyX86addcarry(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitZExt().
|
inline |
Matches ZExt.
Definition at line 1318 of file PatternMatch.h.
Referenced by canNarrowShiftAmt(), canonicalizeSaturatedAdd(), foldICmpWithMinMax(), foldLogicCastConstant(), foldNoWrapAdd(), foldUDivShl(), foldVecTruncToExtElt(), llvm::slpvectorizer::BoUpSLP::isLoadCombineReductionCandidate(), m_ZExtOrSelf(), m_ZExtOrSExt(), matchRotate(), narrowUDivURem(), replaceAllUsesOfWithIn(), shouldMergeGEPs(), simplifyDivRem(), simplifyICmpWithBinOp(), splitMergedValStore(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitLShr(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), and visitUDivOperand().
|
inline |
Definition at line 1324 of file PatternMatch.h.
References m_CombineOr(), and m_ZExt().
Referenced by llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), and llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts().
|
inline |
Definition at line 1337 of file PatternMatch.h.
References m_CombineOr(), m_SExt(), and m_ZExt().
Referenced by areExtractExts(), canAlwaysEvaluateInType(), foldICmpWithZextOrSext(), foldVecTruncToExtElt(), m_ZExtOrSExtOrSelf(), and shouldMergeGEPs().
|
inline |
Definition at line 1346 of file PatternMatch.h.
References m_CombineOr(), and m_ZExtOrSExt().
bool llvm::PatternMatch::match | ( | Val * | V, |
const Pattern & | P | ||
) |
Definition at line 47 of file PatternMatch.h.
References P.
Referenced by llvm::AliasSetTracker::add(), annotateNonNullAndDereferenceable(), areExtractExts(), areExtractShuffleVectors(), areInverseVectorBitmasks(), canAlwaysEvaluateInType(), canEvaluateShifted(), canEvaluateShiftedShift(), canEvaluateTruncated(), canEvaluateZExtd(), llvm::canFreelyInvertAllUsersOf(), canNarrowShiftAmt(), llvm::CannotBeNegativeZero(), llvm::InstCombiner::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeICmpBool(), canonicalizeInsertSplat(), canonicalizeLowbitMask(), canonicalizeSaturatedAdd(), canonicalizeSaturatedSubtract(), llvm::canSinkOrHoistInst(), cheapToScalarize(), checkForNegativeOperand(), llvm::collectCmpOps(), combineInstructionsOverFunction(), combineLoadToNewType(), llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::commonIRemTransforms(), llvm::InstCombiner::commonShiftTransforms(), llvm::computeConstantRange(), computeKnownBits(), computeKnownBitsFromAssume(), computeKnownBitsFromOperator(), ComputeNumSignBitsImpl(), llvm::JumpThreadingPass::ComputeValueKnownInPredecessorsImpl(), llvm::ConstantFoldBinaryInstruction(), countToEliminateCompares(), createAndInstr(), createFFSIntrinsic(), createPowWithIntegerExponent(), createRdxShuffleMask(), llvm::createSeparateConstOffsetFromGEPPass(), llvm::decomposeBitTestICmp(), despeculateCountZeros(), dropRedundantMaskingOfLeftShiftInput(), EvaluateConstantChrecAtConstant(), llvm::CodeExtractor::extractCodeRegion(), factorizeFAddFSub(), factorizeLerp(), findAffectedValues(), llvm::findScalarElement(), foldAndOrOfEqualityCmpsWithConstants(), foldAndToXor(), foldAnyOrAllBitsSet(), foldBitCastBitwiseLogic(), foldBitcastExtElt(), foldConstantInsEltIntoShuffle(), foldCtpop(), foldCttzCtlz(), foldFabsWithFcmpZero(), foldFCmpReciprocalAndZero(), foldFDivConstantDividend(), foldFDivConstantDivisor(), foldFNegIntoConstant(), foldGuardedRotateToFunnelShift(), foldICmpBitCast(), foldICmpShlOne(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldICmpWithMinMax(), foldICmpWithTruncSignExtendedVal(), foldICmpWithZextOrSext(), foldIdentityExtractShuffle(), foldInsEltIntoIdentityShuffle(), foldInsEltIntoSplat(), foldIsPowerOf2(), foldLogicCastConstant(), foldNoWrapAdd(), foldOrToXor(), foldSelectBinOpIdentity(), foldSelectICmpAnd(), foldSelectICmpAndAnd(), foldSelectICmpAndOr(), foldSelectICmpLshrAshr(), foldSelectShuffle(), foldSelectShuffleWith1Binop(), llvm::InstCombiner::FoldShiftByConstant(), foldShiftedShift(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShuffleWithInsert(), foldSignedTruncationCheck(), foldToUnsignedSaturatedAdd(), FoldTwoEntryPHINode(), foldUDivShl(), foldUnsignedUnderflowCheck(), llvm::InstCombiner::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVectorCmp(), foldVecTruncToExtElt(), foldXorToXor(), ForwardTemplateReference::ForwardTemplateReference(), getAlternateBinop(), llvm::GCNTTIImpl::getArithmeticInstrCost(), getBinOpsForFactorization(), llvm::getComplexity(), getDemandedBitsLHSMask(), llvm::getGEPInductionOperand(), getIntToFPVal(), getLogBase2(), GetLoopInvariantInsertPosition(), getMaskedTypeForICmpPair(), getNegatibleInsts(), getRangeForAffineARHelper(), getReductionData(), llvm::SCEVExpander::getRelatedExistingExpansion(), getSelectFoldableConstant(), llvm::getSplatValue(), getSqrtCall(), getValueFromICmpCondition(), getValueFromOverflowCondition(), hasOnlyOneNonZeroIndex(), llvm::haveNoCommonBitsSet(), hoistFNegAboveFMulFDiv(), hoistInsEltConst(), llvm::hoistRegion(), isAlwaysLive(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isDivZero(), llvm::Constant::isElementWiseEqual(), llvm::DenseMapInfo< UserValueIdentity >::isEqual(), isEqualImpl(), llvm::isFreeToInvert(), isGEPFoldable(), llvm::isGuard(), llvm::isGuardAsWidenableBranch(), isImpliedCondAndOr(), llvm::isKnownNegation(), isKnownNonNullFromDominatingCondition(), isKnownNonZero(), IsKnownPredicateViaMinOrMax(), isKnownToBeAPowerOfTwo(), llvm::slpvectorizer::BoUpSLP::isLoadCombineReductionCandidate(), llvm::ScalarEvolution::isLoopInvariantPredicate(), IsMasked(), isMinMaxWithLoads(), isNeutralValue(), isOnlyReachableViaThisEdge(), isReassociableOp(), llvm::isSafeToSpeculativelyExecute(), isSelect01(), isSignedMinMaxClamp(), llvm::MemoryWriteTracking::isSpecialInstruction(), llvm::isSplatValue(), isSupportedGuardInstruction(), isTruePredicate(), LinearizeExprTree(), lookThroughAnd(), lookThroughCast(), lowerWidenableCondition(), maintainNoSignedWrap(), markAliveBlocks(), llvm::FileCheckPattern::match(), llvm::PatternMatch::MaxMin_match< CmpInst_t, LHS_t, RHS_t, Pred_t, Commutable >::match(), matchAndOrChain(), matchClamp(), matchDeMorgansLaws(), MatchDiv(), matchesAdd(), matchesOr(), matchExpandedRem(), matchFastFloatClamp(), matchMinMax(), matchMinMaxOfMinMax(), MatchMul(), MatchRem(), matchRotate(), matchSelectPattern(), matchUAddWithOverflowConstantEdgeCases(), narrowUDivURem(), narrowVectorSelect(), NegateValue(), normalizePredicate(), omitCheckForZeroBeforeInvertedMulWithOverflow(), omitCheckForZeroBeforeMulWithOverflow(), omitCheckForZeroBeforeMulWithOverflowInternal(), OptimizeAndOrXor(), optimizeTrigReflections(), llvm::parseWidenableBranch(), PickMostRelevantLoop(), processUGT_ADDCST_ADD(), processUMulZExtIdiom(), reassociateFCmps(), llvm::InstCombiner::reassociateShiftAmtsOfTwoSameDirectionShifts(), llvm::AssumptionCache::registerAssumption(), removeBitcastsFromLoadStoreOnMinMax(), replaceAllUsesOfWithIn(), replaceConditionalBranchesOnConstant(), llvm::InstCombiner::replacedSelectWithOperand(), replaceUndefsWith(), scaleWeights(), llvm::FastISel::selectOperator(), setLimitsForBinOp(), setLimitsForIntrinsic(), setLimitsForSelectPattern(), ShouldBreakUpSubtract(), shouldMergeGEPs(), llvm::ARMTargetLowering::shouldSinkOperands(), ShrinkDemandedConstant(), SimplifyAddInst(), SimplifyAndInst(), simplifyAndOfICmpsWithAdd(), simplifyAndOfICmpsWithSameOperands(), simplifyAndOrOfICmpsWithConstants(), simplifyAndOrOfICmpsWithZero(), SimplifyAShrInst(), simplifyAssocCastAssoc(), simplifyBinaryIntrinsic(), SimplifyBSwap(), simplifyDiv(), simplifyDivRem(), llvm::InstCombiner::simplifyDivRemOfSelectWithZeroOp(), SimplifyFAddInst(), SimplifyFCmpInst(), SimplifyFDivInst(), SimplifyFMAFMul(), simplifyFNegInst(), simplifyFPOp(), SimplifyFRemInst(), SimplifyFSubInst(), SimplifyGEPInst(), simplifyICmpOfBools(), simplifyICmpWithBinOp(), simplifyICmpWithConstant(), simplifyICmpWithMinMax(), simplifyICmpWithZero(), llvm::SimplifyInsertElementInst(), SimplifyInsertValueInst(), simplifyIntrinsic(), SimplifyLShrInst(), SimplifyMulInst(), SimplifyOrInst(), simplifyOrOfICmpsWithAdd(), simplifyOrOfICmpsWithSameOperands(), simplifyRem(), SimplifyRightShift(), simplifySelectBitTest(), simplifySelectWithICmpCond(), SimplifyShift(), SimplifyShlInst(), SimplifySRemInst(), SimplifySubInst(), simplifyUnaryIntrinsic(), simplifyUnsignedRangeCheck(), simplifyValueKnownNonZero(), simplifyX86addcarry(), SimplifyXorInst(), sinkNotIntoXor(), splitMergedValStore(), swapMayExposeCSEOpportunities(), truncateIVUse(), tryToMoveFreeBeforeNullTest(), tryToRecognizePopCount(), unifyBitWidth(), llvm::AssumptionCache::unregisterAssumption(), llvm::AssumptionCacheTracker::verifyAnalysis(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitBranchInst(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitExtractElementInst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFCmpInst(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitFNeg(), llvm::InstCombiner::visitFPTrunc(), llvm::InstCombiner::visitFSub(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitInsertElementInst(), llvm::InstCombiner::visitLShr(), visitMaskedMerge(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitPHINode(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSRem(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitUDiv(), visitUDivOperand(), llvm::InstCombiner::visitURem(), llvm::InstCombiner::visitXor(), llvm::InstCombiner::visitZExt(), and llvm::reassociate::XorOpnd::XorOpnd().