Lines Matching defs:C0
1084 /// Try to canonicalize min/max(X + C0, C1) as min/max(X, C1 - C0) + C0. This
1096 const APInt *C0, *C1;
1097 if (!match(Op0, m_OneUse(m_Add(m_Value(X), m_APInt(C0)))) ||
1112 IsSigned ? C1->ssub_ov(*C0, Overflow) : C1->usub_ov(*C0, Overflow);
1115 // min/max (add X, C0), C1 --> add (min/max X, C1 - C0), C0
1191 const APInt *C0, *C1;
1198 if (match(I0, m_SMin(m_Value(X), m_APInt(C0))) && *C0 == *C1 + 1)
1202 if (match(I0, m_SMax(m_Value(X), m_APInt(C0))) && *C1 == *C0 + 1)
1206 if (match(I0, m_UMin(m_Value(X), m_APInt(C0))) && *C0 == *C1 + 1)
1210 if (match(I0, m_UMax(m_Value(X), m_APInt(C0))) && *C1 == *C0 + 1)
1222 return SelectInst::Create(Cmp, ConstantInt::get(II->getType(), *C0), I1);
1235 Constant *C0, *C1;
1236 if (!match(LHS->getArgOperand(1), m_ImmConstant(C0)) ||
1240 // max (max X, C0), C1 --> max X, (max C0, C1)
1241 // min (min X, C0), C1 --> min X, (min C0, C1)
1242 // umax (smax X, nneg C0), nneg C1 --> smax X, (umax C0, C1)
1243 // smin (umin X, nneg C0), nneg C1 --> umin X, (smin C0, C1)
1248 isKnownNonNegative(C0, SQ) && isKnownNonNegative(C1, SQ)))
1252 Value *CondC = Builder.CreateICmp(Pred, C0, C1);
1253 Value *NewC = Builder.CreateSelect(CondC, C0, C1);
2166 // uaddo (X +nuw C0), C1 -> uaddo X, C0 + C1
2167 // saddo (X +nsw C0), C1 -> saddo X, C0 + C1
2169 const APInt *C0, *C1;
2174 ? match(Arg0, m_NSWAddLike(m_Value(X), m_APInt(C0)))
2175 : match(Arg0, m_NUWAddLike(m_Value(X), m_APInt(C0)));
2179 IsSigned ? C1->sadd_ov(*C0, Overflow) : C1->uadd_ov(*C0, Overflow);