Lines Matching refs:C1

355     ConstantFP *C0, *C1;
361 if ((C1 = dyn_cast<ConstantFP>(Opnd1)) && C1->isZero())
373 if (!C1)
376 Addend.set(C1, nullptr);
779 const APInt *C1 = nullptr, *C2 = nullptr;
787 if (match(RHS, m_Xor(m_Value(Y), m_APInt(C1))))
790 if (match(X, m_Xor(m_Value(Y), m_APInt(C1)))) {
791 // X = XOR(Y, C1), Y = OR(Z, C2), C2 = NOT(C1) ==> X == NOT(AND(Z, C1))
792 // ADD(ADD(X, 1), RHS) == ADD(X, ADD(RHS, 1)) == SUB(RHS, AND(Z, C1))
793 if (match(Y, m_Or(m_Value(Z), m_APInt(C2))) && (*C2 == ~(*C1))) {
794 Value *NewAnd = Builder.CreateAnd(Z, *C1);
796 } else if (match(Y, m_And(m_Value(Z), m_APInt(C2))) && (*C1 == *C2)) {
797 // X = XOR(Y, C1), Y = AND(Z, C2), C2 == C1 ==> X == NOT(OR(Z, ~C1))
798 // ADD(ADD(X, 1), RHS) == ADD(X, ADD(RHS, 1)) == SUB(RHS, OR(Z, ~C1))
799 Value *NewOr = Builder.CreateOr(Z, ~(*C1));
810 if (match(RHS, m_Xor(m_Value(Y), m_APInt(C1))))
814 // LHS = XOR(Y, C1), Y = AND(Z, C2), C1 == (C2 + 1) => LHS == NEG(OR(Z, ~C2))
816 if (match(LHS, m_Xor(m_Value(Y), m_APInt(C1))))
817 if (C1->countTrailingZeros() == 0)
818 if (match(Y, m_And(m_Value(Z), m_APInt(C2))) && *C1 == (*C2 + 1)) {
835 // (zext (X +nuw C2)) + C1 --> zext (X + (C2 + trunc(C1)))
837 const APInt *C1, *C2;
838 if (match(Op1, m_APInt(C1)) &&
840 C1->isNegative() && C1->sge(-C2->sext(C1->getBitWidth()))) {
842 ConstantInt::get(X->getType(), *C2 + C1->trunc(C2->getBitWidth()));
878 // add (sub C1, X), C2 --> sub (add C1, C2), X
1015 // Returns whether C0 * C1 with the given signedness overflows.
1016 static bool MulWillOverflow(APInt &C0, APInt &C1, bool IsSigned) {
1019 (void)C0.smul_ov(C1, overflow);
1021 (void)C0.umul_ov(C1, overflow);
1025 // Simplifies X % C0 + (( X / C0 ) % C1) * C0 to X % (C0 * C1), where (C0 * C1)
1037 APInt C1;
1039 // Match MulOpC = RemOpV % C1
1040 if (MatchRem(MulOpV, RemOpV, C1, Rem2IsSigned) &&
1046 C0 == DivOpC && !MulWillOverflow(C0, C1, IsSigned)) {
1048 ConstantInt::get(X->getType()->getContext(), C0 * C1);
1310 // X % C0 + (( X / C0 ) % C1) * C0 => X % (C0 * C1)