Lines Matching refs:Y
761 Value *X = nullptr, *Y = nullptr, *Z = nullptr; in checkForNegativeOperand() local
770 if (match(RHS, m_Xor(m_Value(Y), m_APInt(C1)))) in checkForNegativeOperand()
773 if (match(X, m_Xor(m_Value(Y), m_APInt(C1)))) { in checkForNegativeOperand()
776 if (match(Y, m_Or(m_Value(Z), m_APInt(C2))) && (*C2 == ~(*C1))) { in checkForNegativeOperand()
779 } else if (match(Y, m_And(m_Value(Z), m_APInt(C2))) && (*C1 == *C2)) { in checkForNegativeOperand()
793 if (match(RHS, m_Xor(m_Value(Y), m_APInt(C1)))) in checkForNegativeOperand()
799 if (match(LHS, m_Xor(m_Value(Y), m_APInt(C1)))) in checkForNegativeOperand()
801 if (match(Y, m_And(m_Value(Z), m_APInt(C2))) && *C1 == (*C2 + 1)) { in checkForNegativeOperand()
866 Value *Y; in foldAddWithConstant() local
869 if (match(Op0, m_OneUse(m_Sub(m_Value(X), m_Value(Y)))) && in foldAddWithConstant()
871 return BinaryOperator::CreateAdd(Builder.CreateNot(Y), X); in foldAddWithConstant()
1197 Value *X, *Y; in foldToUnsignedSaturatedAdd() local
1198 if (match(&I, m_c_Add(m_c_UMin(m_Value(X), m_Not(m_Value(Y))), in foldToUnsignedSaturatedAdd()
1199 m_Deferred(Y)))) in foldToUnsignedSaturatedAdd()
1200 return CallInst::Create(getUAddSat(), { X, Y }); in foldToUnsignedSaturatedAdd()
1380 Value *X, *Y, *ShAmt; in factorizeMathWithShlOps() local
1382 !match(Op1, m_Shl(m_Value(Y), m_Specific(ShAmt)))) in factorizeMathWithShlOps()
1392 Value *NewMath = Builder.CreateBinOp(I.getOpcode(), X, Y); in factorizeMathWithShlOps()
1427 Value *X, *Y; in foldBoxMultiply() local
1429 !match(YLo, m_And(m_Value(Y), m_SpecificInt(HalfMask)))) in foldBoxMultiply()
1435 m_c_Add(m_c_Mul(m_LShr(m_Specific(Y), m_SpecificInt(HalfBits)), in foldBoxMultiply()
1438 m_CombineOr(m_Specific(Y), m_Specific(YLo)))))) in foldBoxMultiply()
1439 return BinaryOperator::CreateMul(X, Y); in foldBoxMultiply()
1768 Value *X, *Y, *Z; in factorizeLerp() local
1769 if (!match(&I, m_c_FAdd(m_OneUse(m_c_FMul(m_Value(Y), in factorizeLerp()
1776 Value *XY = Builder.CreateFSubFMF(X, Y, &I); in factorizeLerp()
1778 return BinaryOperator::CreateFAddFMF(Y, MulZ, &I); in factorizeLerp()
1796 Value *X, *Y, *Z; in factorizeFAddFSub() local
1799 match(Op1, m_c_FMul(m_Value(Y), m_Specific(Z)))) || in factorizeFAddFSub()
1801 match(Op1, m_c_FMul(m_Value(Y), m_Specific(Z))))) in factorizeFAddFSub()
1804 match(Op1, m_FDiv(m_Value(Y), m_Specific(Z)))) in factorizeFAddFSub()
1814 Value *XY = IsFAdd ? Builder.CreateFAddFMF(X, Y, &I) in factorizeFAddFSub()
1815 : Builder.CreateFSubFMF(X, Y, &I); in factorizeFAddFSub()
1846 Value *X, *Y; in visitFAdd() local
1847 if (match(&I, m_c_FAdd(m_FNeg(m_Value(X)), m_Value(Y)))) in visitFAdd()
1848 return BinaryOperator::CreateFSubFMF(Y, X, &I); in visitFAdd()
1853 if (match(&I, m_c_FAdd(m_OneUse(m_c_FMul(m_FNeg(m_Value(X)), m_Value(Y))), in visitFAdd()
1855 Value *XY = Builder.CreateFMulFMF(X, Y, &I); in visitFAdd()
1860 if (match(&I, m_c_FAdd(m_OneUse(m_FDiv(m_FNeg(m_Value(X)), m_Value(Y))), in visitFAdd()
1862 match(&I, m_c_FAdd(m_OneUse(m_FDiv(m_Value(X), m_FNeg(m_Value(Y)))), in visitFAdd()
1864 Value *XY = Builder.CreateFDivFMF(X, Y, &I); in visitFAdd()
1942 m_Value(Y)))) { in visitFAdd()
1946 {X->getType()}, {Y, X}, &I)); in visitFAdd()
1969 if (match(&I, m_c_FAdd(m_FSub(m_FNeg(m_Value(X)), m_Value(Y)), in visitFAdd()
1971 return BinaryOperator::CreateFSubFMF(Z, Y, &I); in visitFAdd()
1979 m_c_FAdd(m_Intrinsic<Intrinsic::maximum>(m_Value(X), m_Value(Y)), in visitFAdd()
1981 m_Deferred(Y))))) { in visitFAdd()
1982 BinaryOperator *Result = BinaryOperator::CreateFAddFMF(X, Y, &I); in visitFAdd()
2085 Value *Y = MinMax->getRHS(); in foldSubOfMinMax() local
2086 if (match(Op0, m_c_Add(m_Specific(X), m_Specific(Y))) && in foldSubOfMinMax()
2090 return CallInst::Create(F, {X, Y}); in foldSubOfMinMax()
2096 if (match(Op1, m_OneUse(m_UMin(m_Value(Y), m_Value(Z))))) { in foldSubOfMinMax()
2097 if (match(Op0, m_OneUse(m_c_Add(m_Specific(Y), m_Value(X))))) { in foldSubOfMinMax()
2098 Value *USub = Builder.CreateIntrinsic(Intrinsic::usub_sat, Ty, {Y, Z}); in foldSubOfMinMax()
2102 Value *USub = Builder.CreateIntrinsic(Intrinsic::usub_sat, Ty, {Z, Y}); in foldSubOfMinMax()
2109 if (MinMax->isSigned() && match(Y, m_ZeroInt()) && in foldSubOfMinMax()
2225 Value *X, *Y; in visitSub() local
2233 if (match(Op0, m_OneUse(m_c_Add(m_OneUse(m_Sub(m_Value(X), m_Value(Y))), in visitSub()
2236 Value *YW = Builder.CreateAdd(Y, Op1); in visitSub()
2241 if (match(Op0, m_OneUse(m_Sub(m_Value(X), m_Value(Y))))) { in visitSub()
2245 Value *Add = Builder.CreateAdd(Y, Op1, "", /* HasNUW */ HasNUW, in visitSub()
2259 match(Op1, m_c_Add(m_Value(Y), m_Specific(Z)))) in visitSub()
2260 return BinaryOperator::CreateSub(X, Y); in visitSub()
2265 match(Op1, m_OneUse(m_Add(m_Value(Y), m_ImmConstant(CY))))) { in visitSub()
2266 Value *OpsSub = Builder.CreateSub(X, Y); in visitSub()
2364 Value *Y; in visitSub() local
2366 if (match(Op1, m_c_Add(m_Specific(Op0), m_Value(Y)))) in visitSub()
2367 return BinaryOperator::CreateNeg(Y); in visitSub()
2370 if (match(Op0, m_Sub(m_Specific(Op1), m_Value(Y)))) in visitSub()
2371 return BinaryOperator::CreateNeg(Y); in visitSub()
2425 Value *Y; in visitSub() local
2427 if (match(Op0, m_OneUse(m_c_Or(m_Value(Y), m_Specific(Op1))))) in visitSub()
2429 Y, Builder.CreateNot(Op1, Op1->getName() + ".not")); in visitSub()
2507 if (match(Op1, m_c_And(m_Specific(Op0), m_Value(Y))) && in visitSub()
2508 (Op1->hasOneUse() || isa<Constant>(Y))) in visitSub()
2510 Op0, Builder.CreateNot(Y, Y->getName() + ".not")); in visitSub()
2520 match(Op1, m_c_MaxOrMin(m_Specific(Op0), m_Value(Y))) && in visitSub()
2521 !Op0->hasNUsesOrMore(3) && isFreeToInvert(Y, Y->hasOneUse())) { in visitSub()
2526 match(Op0, m_c_MaxOrMin(m_Specific(Op1), m_Value(Y))) && in visitSub()
2527 !Op1->hasNUsesOrMore(3) && isFreeToInvert(Y, Y->hasOneUse())) { in visitSub()
2589 m_Value(Y))))) in visitSub()
2591 I, Builder.CreateIntrinsic(Intrinsic::umin, {I.getType()}, {Op0, Y})); in visitSub()
2627 match(Op1, m_OneUse(m_Mul(m_Value(Y), m_Deferred(Y))))) { in visitSub()
2634 Value *Add = Builder.CreateAdd(X, Y, "add", PropagateNUW, PropagateNSW); in visitSub()
2635 Value *Sub = Builder.CreateSub(X, Y, "sub", PropagateNUW, PropagateNSW); in visitSub()
2641 if (match(Op0, m_OneUse(m_c_SMax(m_Value(X), m_Value(Y)))) && in visitSub()
2642 match(Op1, m_OneUse(m_c_SMin(m_Specific(X), m_Specific(Y))))) { in visitSub()
2645 Builder.CreateSub(X, Y, "sub", /*HasNUW=*/false, /*HasNSW=*/true); in visitSub()
2705 Value *X, *Y; in hoistFNegAboveFMulFDiv() local
2706 if (match(FNegOp, m_FMul(m_Value(X), m_Value(Y)))) { in hoistFNegAboveFMulFDiv()
2708 Builder.CreateFNegFMF(X, &FMFSource), Y, &FMFSource)); in hoistFNegAboveFMulFDiv()
2711 if (match(FNegOp, m_FDiv(m_Value(X), m_Value(Y)))) { in hoistFNegAboveFMulFDiv()
2713 Builder.CreateFNegFMF(X, &FMFSource), Y, &FMFSource)); in hoistFNegAboveFMulFDiv()
2744 Value *X, *Y; in visitFNeg() local
2748 match(Op, m_OneUse(m_FSub(m_Value(X), m_Value(Y))))) in visitFNeg()
2749 return BinaryOperator::CreateFSubFMF(Y, X, &I); in visitFNeg()
2760 if (match(OneUse, m_Select(m_Value(Cond), m_Value(X), m_Value(Y)))) { in visitFNeg()
2777 Value *NegY = Builder.CreateFNegFMF(Y, &I, Y->getName() + ".neg"); in visitFNeg()
2779 propagateSelectFMF(NewSel, P == Y); in visitFNeg()
2783 if (match(Y, m_FNeg(m_Value(P)))) { in visitFNeg()
2792 if (match(OneUse, m_CopySign(m_Value(X), m_Value(Y)))) { in visitFNeg()
2801 Value *NegY = Builder.CreateFNeg(Y); in visitFNeg()
2835 Value *X, *Y; in visitFSub() local
2846 if (match(Op1, m_OneUse(m_FSub(m_Value(X), m_Value(Y))))) { in visitFSub()
2847 Value *NewSub = Builder.CreateFSubFMF(Y, X, &I); in visitFSub()
2872 if (match(Op1, m_FNeg(m_Value(Y)))) in visitFSub()
2873 return BinaryOperator::CreateFAddFMF(Op0, Y, &I); in visitFSub()
2878 if (match(Op1, m_OneUse(m_FPTrunc(m_FNeg(m_Value(Y)))))) in visitFSub()
2879 return BinaryOperator::CreateFAddFMF(Op0, Builder.CreateFPTrunc(Y, Ty), &I); in visitFSub()
2882 if (match(Op1, m_OneUse(m_FPExt(m_FNeg(m_Value(Y)))))) in visitFSub()
2883 return BinaryOperator::CreateFAddFMF(Op0, Builder.CreateFPExt(Y, Ty), &I); in visitFSub()
2888 if (match(Op1, m_OneUse(m_c_FMul(m_FNeg(m_Value(X)), m_Value(Y))))) { in visitFSub()
2889 Value *FMul = Builder.CreateFMulFMF(X, Y, &I); in visitFSub()
2894 if (match(Op1, m_OneUse(m_FDiv(m_FNeg(m_Value(X)), m_Value(Y)))) || in visitFSub()
2895 match(Op1, m_OneUse(m_FDiv(m_Value(X), m_FNeg(m_Value(Y)))))) { in visitFSub()
2896 Value *FDiv = Builder.CreateFDivFMF(X, Y, &I); in visitFSub()
2931 if (match(Op0, m_OneUse(m_c_FAdd(m_OneUse(m_FSub(m_Value(X), m_Value(Y))), in visitFSub()
2934 Value *YW = Builder.CreateFAddFMF(Y, Op1, &I); in visitFSub()
2964 if (match(Op0, m_OneUse(m_FSub(m_Value(X), m_Value(Y))))) { in visitFSub()
2965 Value *FAdd = Builder.CreateFAddFMF(Y, Op1, &I); in visitFSub()