Lines Matching refs:Op0

812   Value *Op0 = Add.getOperand(0), *Op1 = Add.getOperand(1);  in foldNoWrapAdd()  local
823 match(Op0, m_OneUse(m_ZExt(m_NUWAdd(m_Value(X), m_APInt(C2))))) && in foldNoWrapAdd()
833 if (match(Op0, m_OneUse(m_SExt(m_NSWAdd(m_Value(X), m_Constant(NarrowC)))))) { in foldNoWrapAdd()
840 if (match(Op0, m_OneUse(m_ZExt(m_NUWAdd(m_Value(X), m_Constant(NarrowC)))))) { in foldNoWrapAdd()
851 Value *Op0 = Add.getOperand(0), *Op1 = Add.getOperand(1); in foldAddWithConstant() local
863 if (match(Op0, m_Sub(m_Constant(Op00C), m_Value(X)))) in foldAddWithConstant()
869 if (match(Op0, m_OneUse(m_Sub(m_Value(X), m_Value(Y)))) && in foldAddWithConstant()
874 if (match(Op0, m_ZExt(m_Value(X))) && in foldAddWithConstant()
878 if (match(Op0, m_SExt(m_Value(X))) && in foldAddWithConstant()
883 if (match(Op0, m_Not(m_Value(X)))) in foldAddWithConstant()
892 if (match(Op0, m_Or(m_Value(X), m_ImmConstant(Op01C))) && in foldAddWithConstant()
898 if (match(Op0, m_Or(m_Value(), m_APInt(C2))) && *C2 == -*C) in foldAddWithConstant()
899 return BinaryOperator::CreateXor(Op0, ConstantInt::get(Add.getType(), *C2)); in foldAddWithConstant()
905 return BinaryOperator::CreateOr(Op0, Op1); in foldAddWithConstant()
909 return BinaryOperator::CreateXor(Op0, Op1); in foldAddWithConstant()
915 if (match(Op0, m_ZExt(m_Xor(m_Value(X), m_APInt(C2)))) && in foldAddWithConstant()
919 if (match(Op0, m_Xor(m_Value(X), m_APInt(C2)))) { in foldAddWithConstant()
936 if (Op0->hasOneUse() && *C2 == -(*C)) { in foldAddWithConstant()
952 if (C->isOne() && Op0->hasOneUse()) { in foldAddWithConstant()
958 if (match(Op0, m_SExt(m_Value(X))) && in foldAddWithConstant()
965 if (match(Op0, m_AShr(m_Shl(m_Value(X), m_APInt(C2)), m_APInt(C3))) && in foldAddWithConstant()
975 if (match(Op0, m_OneUse(m_And(m_Value(X), m_APInt(C2)))) && in foldAddWithConstant()
1245 auto *Op0 = dyn_cast<BinaryOperator>(I.getOperand(0)); in factorizeMathWithShlOps() local
1247 if (!Op0 || !Op1 || !(Op0->hasOneUse() || Op1->hasOneUse())) in factorizeMathWithShlOps()
1251 if (!match(Op0, m_Shl(m_Value(X), m_Value(ShAmt))) || in factorizeMathWithShlOps()
1256 bool HasNSW = I.hasNoSignedWrap() && Op0->hasNoSignedWrap() && in factorizeMathWithShlOps()
1258 bool HasNUW = I.hasNoUnsignedWrap() && Op0->hasNoUnsignedWrap() && in factorizeMathWithShlOps()
1496 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in factorizeFAddFSub() local
1497 if (!Op0->hasOneUse() || !Op1->hasOneUse()) in factorizeFAddFSub()
1502 if ((match(Op0, m_FMul(m_Value(X), m_Value(Z))) && in factorizeFAddFSub()
1504 (match(Op0, m_FMul(m_Value(Z), m_Value(X))) && in factorizeFAddFSub()
1507 else if (match(Op0, m_FDiv(m_Value(X), m_Value(Z))) && in factorizeFAddFSub()
1756 Value *Op0 = I.getOperand(0); in foldSubOfMinMax() local
1767 if (match(Op0, m_c_Add(m_Specific(X), m_Specific(Y))) && in foldSubOfMinMax()
1768 (Op0->hasOneUse() || Op1->hasOneUse())) { in foldSubOfMinMax()
1778 if (match(Op0, m_OneUse(m_c_Add(m_Specific(Y), m_Value(X))))) { in foldSubOfMinMax()
1782 if (match(Op0, m_OneUse(m_c_Add(m_Specific(Z), m_Value(X))))) { in foldSubOfMinMax()
1791 match(X, m_NSWSub(m_Specific(Op0), m_Value(Z)))) { in foldSubOfMinMax()
1794 return CallInst::Create(F, {Op0, Z}); in foldSubOfMinMax()
1812 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitSub() local
1817 BinaryOperator *Res = BinaryOperator::CreateAdd(Op0, V); in visitSub()
1837 if (match(Op0, m_ImmConstant(C))) { in visitSub()
1846 auto TryToNarrowDeduceFlags = [this, &I, &Op0, &Op1]() -> Instruction * { in visitSub()
1851 if (!I.hasNoSignedWrap() && willNotOverflowSignedSub(Op0, Op1, I)) { in visitSub()
1855 if (!I.hasNoUnsignedWrap() && willNotOverflowUnsignedSub(Op0, Op1, I)) { in visitSub()
1866 bool IsNegation = match(Op0, m_ZeroInt()); in visitSub()
1876 return BinaryOperator::CreateAdd(NegOp1, Op0); in visitSub()
1886 return BinaryOperator::CreateXor(Op0, Op1); in visitSub()
1889 if (match(Op0, m_AllOnes())) in visitSub()
1894 if (match(Op0, m_OneUse(m_Add(m_Value(X), m_AllOnes())))) in visitSub()
1901 if (match(Op0, m_OneUse(m_c_Add(m_OneUse(m_Sub(m_Value(X), m_Value(Y))), in visitSub()
1909 if (match(Op0, m_OneUse(m_Sub(m_Value(X), m_Value(Y))))) { in visitSub()
1917 if (isFreeToInvert(Op0, Op0->hasOneUse()) && in visitSub()
1919 !match(Op0, m_Sub(m_ImmConstant(), m_Value()))) { in visitSub()
1920 Value *NotOp0 = Builder.CreateNot(Op0); in visitSub()
1929 if (match(Op0, m_AddRdx(V0)) && match(Op1, m_AddRdx(V1)) && in visitSub()
1939 if (Constant *C = dyn_cast<Constant>(Op0)) { in visitSub()
1970 if (match(Op0, m_APInt(Op0C)) && Op0C->isMask()) { in visitSub()
1975 return BinaryOperator::CreateXor(Op1, Op0); in visitSub()
1981 if (match(Op1, m_c_Add(m_Specific(Op0), m_Value(Y)))) in visitSub()
1985 if (match(Op0, m_Sub(m_Specific(Op1), m_Value(Y)))) in visitSub()
1993 match(Op0, m_c_Or(m_Specific(A), m_Specific(B)))) in visitSub()
2000 if (match(Op0, m_Add(m_Value(A), m_Value(B))) && in visitSub()
2008 if (match(Op0, m_Add(m_Value(A), m_Value(B))) && in visitSub()
2016 if (match(Op0, m_And(m_Value(A), m_Value(B))) && in visitSub()
2018 (Op0->hasOneUse() || Op1->hasOneUse())) in visitSub()
2026 match(Op0, m_c_Or(m_Specific(A), m_Specific(B)))) in visitSub()
2033 if (match(Op0, m_Xor(m_Value(A), m_Value(B))) && in visitSub()
2035 (Op0->hasOneUse() || Op1->hasOneUse())) in visitSub()
2042 if (match(Op0, m_OneUse(m_c_Or(m_Value(Y), m_Specific(Op1))))) in visitSub()
2050 if (match(Op0, m_OneUse(m_c_And(m_Specific(Op1), in visitSub()
2060 if (match(Op0, m_OneUse(m_And(m_Specific(Op1), m_Constant(C))))) { in visitSub()
2103 /*Select=*/Op0, /*OtherHandOfSub=*/Op1, in visitSub()
2110 /*Select=*/Op1, /*OtherHandOfSub=*/Op0, in visitSub()
2111 [Builder = &Builder, Op0](Value *OtherHandOfSelect) { in visitSub()
2112 return Builder->CreateSub(/*OtherHandOfSub=*/Op0, in visitSub()
2119 if (match(Op1, m_c_And(m_Specific(Op0), m_Value(Y))) && in visitSub()
2122 Op0, Builder.CreateNot(Y, Y->getName() + ".not")); in visitSub()
2131 if (match(Op0, m_Not(m_Value(X))) && in visitSub()
2132 match(Op1, m_c_MaxOrMin(m_Specific(Op0), m_Value(Y))) && in visitSub()
2133 !Op0->hasNUsesOrMore(3) && isFreeToInvert(Y, Y->hasOneUse())) { in visitSub()
2138 match(Op0, m_c_MaxOrMin(m_Specific(Op1), m_Value(Y))) && in visitSub()
2140 Value *Not = Builder.CreateNot(Op0); in visitSub()
2147 if (match(Op0, m_PtrToInt(m_Value(LHSOp))) && in visitSub()
2154 if (match(Op0, m_Trunc(m_PtrToInt(m_Value(LHSOp)))) && in visitSub()
2170 match(Op0, m_OneUse(m_c_Xor(m_Specific(A), m_Specific(Op1))))) { in visitSub()
2186 if (match(Op0, m_Add(m_Value(X), m_APInt(AddC))) && in visitSub()
2192 return BinaryOperator::CreateAnd(Op0, ConstantInt::get(Ty, ~(*AndC))); in visitSub()
2200 if (match(Op1, m_OneUse(m_Intrinsic<Intrinsic::usub_sat>(m_Specific(Op0), in visitSub()
2203 I, Builder.CreateIntrinsic(Intrinsic::umin, {I.getType()}, {Op0, Y})); in visitSub()
2208 if (match(Op0, m_OneUse(m_c_UMax(m_Value(X), m_Specific(Op1))))) in visitSub()
2213 if (match(Op1, m_OneUse(m_c_UMin(m_Value(X), m_Specific(Op0))))) in visitSub()
2215 I, Builder.CreateIntrinsic(Intrinsic::usub_sat, {Ty}, {Op0, X})); in visitSub()
2218 if (match(Op1, m_OneUse(m_c_UMax(m_Value(X), m_Specific(Op0))))) { in visitSub()
2219 Value *USub = Builder.CreateIntrinsic(Intrinsic::usub_sat, {Ty}, {X, Op0}); in visitSub()
2224 if (match(Op0, m_OneUse(m_c_UMin(m_Value(X), m_Specific(Op1))))) { in visitSub()
2230 if (match(Op0, m_SpecificInt(Ty->getScalarSizeInBits())) && in visitSub()
2382 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitFSub() local
2389 if (I.hasNoSignedZeros() || CannotBeNegativeZero(Op0, SQ.TLI)) { in visitFSub()
2392 return BinaryOperator::CreateFAddFMF(Op0, NewSub, &I); in visitFSub()
2397 if (I.hasNoSignedZeros() && !isa<ConstantExpr>(Op0) && in visitFSub()
2398 match(Op0, m_OneUse(m_FNeg(m_Value(X))))) { in visitFSub()
2403 if (isa<Constant>(Op0)) in visitFSub()
2412 return BinaryOperator::CreateFAddFMF(Op0, ConstantExpr::getFNeg(C), &I); in visitFSub()
2416 return BinaryOperator::CreateFAddFMF(Op0, Y, &I); in visitFSub()
2422 return BinaryOperator::CreateFAddFMF(Op0, Builder.CreateFPTrunc(Y, Ty), &I); in visitFSub()
2426 return BinaryOperator::CreateFAddFMF(Op0, Builder.CreateFPExt(Y, Ty), &I); in visitFSub()
2433 return BinaryOperator::CreateFAddFMF(Op0, FMul, &I); in visitFSub()
2440 return BinaryOperator::CreateFAddFMF(Op0, FDiv, &I); in visitFSub()
2444 if (Value *V = SimplifySelectsFeedingBinaryOp(I, Op0, Op1)) in visitFSub()
2449 if (match(Op0, m_FSub(m_Specific(Op1), m_Value(X)))) in visitFSub()
2454 if (match(Op1, m_c_FAdd(m_Specific(Op0), m_Value(X)))) in visitFSub()
2458 if (match(Op0, m_FMul(m_Specific(Op1), m_Constant(C)))) { in visitFSub()
2464 if (match(Op1, m_FMul(m_Specific(Op0), m_Constant(C)))) { in visitFSub()
2467 return BinaryOperator::CreateFMulFMF(Op0, OneSubC, &I); in visitFSub()
2474 if (match(Op0, m_OneUse(m_c_FAdd(m_OneUse(m_FSub(m_Value(X), m_Value(Y))), in visitFSub()
2486 if (match(Op0, m_FaddRdx(A0, V0)) && match(Op1, m_FaddRdx(A1, V1)) && in visitFSub()
2507 if (match(Op0, m_OneUse(m_FSub(m_Value(X), m_Value(Y))))) { in visitFSub()