Lines Matching refs:C2
228 Constant *C1, *C2; in visitMul() local
230 if (match(&I, m_Mul(m_Shl(m_Value(NewOp), m_ImmConstant(C2)), in visitMul()
235 ConstantFoldBinaryOpOperands(Instruction::Shl, C1, C2, DL); in visitMul()
1052 static bool multiplyOverflows(const APInt &C1, const APInt &C2, APInt &Product, in multiplyOverflows() argument
1055 Product = IsSigned ? C1.smul_ov(C2, Overflow) : C1.umul_ov(C2, Overflow); in multiplyOverflows()
1060 static bool isMultiple(const APInt &C1, const APInt &C2, APInt &Quotient, in isMultiple() argument
1062 assert(C1.getBitWidth() == C2.getBitWidth() && "Constant widths not equal"); in isMultiple()
1065 if (C2.isZero()) in isMultiple()
1069 if (IsSigned && C1.isMinSignedValue() && C2.isAllOnes()) in isMultiple()
1074 APInt::sdivrem(C1, C2, Quotient, Remainder); in isMultiple()
1076 APInt::udivrem(C1, C2, Quotient, Remainder); in isMultiple()
1192 const APInt *C2; in commonIDivTransforms() local
1193 if (match(Op1, m_APInt(C2))) { in commonIDivTransforms()
1201 if (!multiplyOverflows(*C1, *C2, Product, IsSigned)) in commonIDivTransforms()
1206 APInt Quotient(C2->getBitWidth(), /*val=*/0ULL, IsSigned); in commonIDivTransforms()
1211 if (isMultiple(*C2, *C1, Quotient, IsSigned)) { in commonIDivTransforms()
1219 if (isMultiple(*C1, *C2, Quotient, IsSigned)) { in commonIDivTransforms()
1237 if (isMultiple(*C2, C1Shifted, Quotient, IsSigned)) { in commonIDivTransforms()
1245 if (isMultiple(C1Shifted, *C2, Quotient, IsSigned)) { in commonIDivTransforms()
1260 match(Op0, m_NSWAddLike(m_NSWMul(m_Value(X), m_SpecificInt(*C2)), in commonIDivTransforms()
1262 isMultiple(*C1, *C2, Quotient, IsSigned)) { in commonIDivTransforms()
1266 match(Op0, m_NUWAddLike(m_NUWMul(m_Value(X), m_SpecificInt(*C2)), in commonIDivTransforms()
1269 ConstantInt::get(Ty, C1->udiv(*C2))); in commonIDivTransforms()
1272 if (!C2->isZero()) // avoid X udiv 0 in commonIDivTransforms()
1369 const APInt *C1, *C2; in commonIDivTransforms() local
1377 if (match(A, m_APInt(C1)) && match(B, m_APInt(C2)) && C2->ule(*C1)) in commonIDivTransforms()
1528 const APInt *C1, *C2; in visitUDiv() local
1529 if (match(Op0, m_LShr(m_Value(X), m_APInt(C1))) && match(Op1, m_APInt(C2))) { in visitUDiv()
1532 APInt C2ShlC1 = C2->ushl_ov(*C1, Overflow); in visitUDiv()
1784 Constant *C2, *NewC = nullptr; in foldFDivConstantDividend() local
1785 if (match(I.getOperand(1), m_FMul(m_Value(X), m_Constant(C2)))) { in foldFDivConstantDividend()
1787 NewC = ConstantFoldBinaryOpOperands(Instruction::FDiv, C, C2, DL); in foldFDivConstantDividend()
1788 } else if (match(I.getOperand(1), m_FDiv(m_Value(X), m_Constant(C2)))) { in foldFDivConstantDividend()
1790 NewC = ConstantFoldBinaryOpOperands(Instruction::FMul, C, C2, DL); in foldFDivConstantDividend()