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()
873 Value *Y; in foldAddWithConstant() local
876 if (match(Op0, m_OneUse(m_Sub(m_Value(X), m_Value(Y)))) && in foldAddWithConstant()
878 return BinaryOperator::CreateAdd(Builder.CreateNot(Y), X); in foldAddWithConstant()
1239 Value *X, *Y; in foldToUnsignedSaturatedAdd() local
1240 if (match(&I, m_c_Add(m_c_UMin(m_Value(X), m_Not(m_Value(Y))), in foldToUnsignedSaturatedAdd()
1241 m_Deferred(Y)))) in foldToUnsignedSaturatedAdd()
1242 return CallInst::Create(getUAddSat(), { X, Y }); in foldToUnsignedSaturatedAdd()
1422 Value *X, *Y, *ShAmt; in factorizeMathWithShlOps() local
1424 !match(Op1, m_Shl(m_Value(Y), m_Specific(ShAmt)))) in factorizeMathWithShlOps()
1434 Value *NewMath = Builder.CreateBinOp(I.getOpcode(), X, Y); in factorizeMathWithShlOps()
1469 Value *X, *Y; in foldBoxMultiply() local
1471 !match(YLo, m_And(m_Value(Y), m_SpecificInt(HalfMask)))) in foldBoxMultiply()
1477 m_c_Add(m_c_Mul(m_LShr(m_Specific(Y), m_SpecificInt(HalfBits)), in foldBoxMultiply()
1480 m_CombineOr(m_Specific(Y), m_Specific(YLo)))))) in foldBoxMultiply()
1481 return BinaryOperator::CreateMul(X, Y); in foldBoxMultiply()
1828 Value *X, *Y, *Z; in factorizeLerp() local
1829 if (!match(&I, m_c_FAdd(m_OneUse(m_c_FMul(m_Value(Y), in factorizeLerp()
1836 Value *XY = Builder.CreateFSubFMF(X, Y, &I); in factorizeLerp()
1838 return BinaryOperator::CreateFAddFMF(Y, MulZ, &I); in factorizeLerp()
1856 Value *X, *Y, *Z; in factorizeFAddFSub() local
1859 match(Op1, m_c_FMul(m_Value(Y), m_Specific(Z)))) || in factorizeFAddFSub()
1861 match(Op1, m_c_FMul(m_Value(Y), m_Specific(Z))))) in factorizeFAddFSub()
1864 match(Op1, m_FDiv(m_Value(Y), m_Specific(Z)))) in factorizeFAddFSub()
1874 Value *XY = IsFAdd ? Builder.CreateFAddFMF(X, Y, &I) in factorizeFAddFSub()
1875 : Builder.CreateFSubFMF(X, Y, &I); in factorizeFAddFSub()
1906 Value *X, *Y; in visitFAdd() local
1907 if (match(&I, m_c_FAdd(m_FNeg(m_Value(X)), m_Value(Y)))) in visitFAdd()
1908 return BinaryOperator::CreateFSubFMF(Y, X, &I); in visitFAdd()
1913 if (match(&I, m_c_FAdd(m_OneUse(m_c_FMul(m_FNeg(m_Value(X)), m_Value(Y))), in visitFAdd()
1915 Value *XY = Builder.CreateFMulFMF(X, Y, &I); in visitFAdd()
1920 if (match(&I, m_c_FAdd(m_OneUse(m_FDiv(m_FNeg(m_Value(X)), m_Value(Y))), in visitFAdd()
1922 match(&I, m_c_FAdd(m_OneUse(m_FDiv(m_Value(X), m_FNeg(m_Value(Y)))), in visitFAdd()
1924 Value *XY = Builder.CreateFDivFMF(X, Y, &I); in visitFAdd()
1948 m_Value(Y)))) { in visitFAdd()
1952 {X->getType()}, {Y, X}, &I)); in visitFAdd()
1975 if (match(&I, m_c_FAdd(m_FSub(m_FNeg(m_Value(X)), m_Value(Y)), in visitFAdd()
1977 return BinaryOperator::CreateFSubFMF(Z, Y, &I); in visitFAdd()
1985 m_c_FAdd(m_Intrinsic<Intrinsic::maximum>(m_Value(X), m_Value(Y)), in visitFAdd()
1987 m_Deferred(Y))))) { in visitFAdd()
1988 BinaryOperator *Result = BinaryOperator::CreateFAddFMF(X, Y, &I); in visitFAdd()
2078 Value *Y = MinMax->getRHS(); in foldSubOfMinMax() local
2079 if (match(Op0, m_c_Add(m_Specific(X), m_Specific(Y))) && in foldSubOfMinMax()
2083 return CallInst::Create(F, {X, Y}); in foldSubOfMinMax()
2089 if (match(Op1, m_OneUse(m_UMin(m_Value(Y), m_Value(Z))))) { in foldSubOfMinMax()
2090 if (match(Op0, m_OneUse(m_c_Add(m_Specific(Y), m_Value(X))))) { in foldSubOfMinMax()
2091 Value *USub = Builder.CreateIntrinsic(Intrinsic::usub_sat, Ty, {Y, Z}); in foldSubOfMinMax()
2095 Value *USub = Builder.CreateIntrinsic(Intrinsic::usub_sat, Ty, {Z, Y}); in foldSubOfMinMax()
2102 if (MinMax->isSigned() && match(Y, m_ZeroInt()) && in foldSubOfMinMax()
2218 Value *X, *Y; in visitSub() local
2226 if (match(Op0, m_OneUse(m_c_Add(m_OneUse(m_Sub(m_Value(X), m_Value(Y))), in visitSub()
2229 Value *YW = Builder.CreateAdd(Y, Op1); in visitSub()
2234 if (match(Op0, m_OneUse(m_Sub(m_Value(X), m_Value(Y))))) { in visitSub()
2238 Value *Add = Builder.CreateAdd(Y, Op1, "", /* HasNUW */ HasNUW, in visitSub()
2252 match(Op1, m_c_Add(m_Value(Y), m_Specific(Z)))) in visitSub()
2253 return BinaryOperator::CreateSub(X, Y); in visitSub()
2258 match(Op1, m_OneUse(m_Add(m_Value(Y), m_ImmConstant(CY))))) { in visitSub()
2259 Value *OpsSub = Builder.CreateSub(X, Y); in visitSub()
2359 Value *Y; in visitSub() local
2361 if (match(Op1, m_c_Add(m_Specific(Op0), m_Value(Y)))) in visitSub()
2362 return BinaryOperator::CreateNeg(Y); in visitSub()
2365 if (match(Op0, m_Sub(m_Specific(Op1), m_Value(Y)))) in visitSub()
2366 return BinaryOperator::CreateNeg(Y); in visitSub()
2420 Value *Y; in visitSub() local
2422 if (match(Op0, m_OneUse(m_c_Or(m_Value(Y), m_Specific(Op1))))) in visitSub()
2424 Y, Builder.CreateNot(Op1, Op1->getName() + ".not")); in visitSub()
2517 if (match(Op1, m_c_And(m_Specific(Op0), m_Value(Y))) && in visitSub()
2518 (Op1->hasOneUse() || isa<Constant>(Y))) in visitSub()
2520 Op0, Builder.CreateNot(Y, Y->getName() + ".not")); in visitSub()
2530 match(Op1, m_c_MaxOrMin(m_Specific(Op0), m_Value(Y))) && in visitSub()
2531 !Op0->hasNUsesOrMore(3) && isFreeToInvert(Y, Y->hasOneUse())) { in visitSub()
2536 match(Op0, m_c_MaxOrMin(m_Specific(Op1), m_Value(Y))) && in visitSub()
2537 !Op1->hasNUsesOrMore(3) && isFreeToInvert(Y, Y->hasOneUse())) { in visitSub()
2600 m_Value(Y))))) in visitSub()
2602 I, Builder.CreateIntrinsic(Intrinsic::umin, {I.getType()}, {Op0, Y})); in visitSub()
2638 match(Op1, m_OneUse(m_Mul(m_Value(Y), m_Deferred(Y))))) { in visitSub()
2645 Value *Add = Builder.CreateAdd(X, Y, "add", PropagateNUW, PropagateNSW); in visitSub()
2646 Value *Sub = Builder.CreateSub(X, Y, "sub", PropagateNUW, PropagateNSW); in visitSub()
2652 if (match(Op0, m_OneUse(m_c_SMax(m_Value(X), m_Value(Y)))) && in visitSub()
2653 match(Op1, m_OneUse(m_c_SMin(m_Specific(X), m_Specific(Y))))) { in visitSub()
2656 Builder.CreateSub(X, Y, "sub", /*HasNUW=*/false, /*HasNSW=*/true); in visitSub()
2716 Value *X, *Y; in hoistFNegAboveFMulFDiv() local
2717 if (match(FNegOp, m_FMul(m_Value(X), m_Value(Y)))) { in hoistFNegAboveFMulFDiv()
2719 Builder.CreateFNegFMF(X, &FMFSource), Y, &FMFSource)); in hoistFNegAboveFMulFDiv()
2722 if (match(FNegOp, m_FDiv(m_Value(X), m_Value(Y)))) { in hoistFNegAboveFMulFDiv()
2724 Builder.CreateFNegFMF(X, &FMFSource), Y, &FMFSource)); in hoistFNegAboveFMulFDiv()
2755 Value *X, *Y; in visitFNeg() local
2759 match(Op, m_OneUse(m_FSub(m_Value(X), m_Value(Y))))) in visitFNeg()
2760 return BinaryOperator::CreateFSubFMF(Y, X, &I); in visitFNeg()
2771 if (match(OneUse, m_Select(m_Value(Cond), m_Value(X), m_Value(Y)))) { in visitFNeg()
2788 Value *NegY = Builder.CreateFNegFMF(Y, &I, Y->getName() + ".neg"); in visitFNeg()
2790 propagateSelectFMF(NewSel, P == Y); in visitFNeg()
2794 if (match(Y, m_FNeg(m_Value(P)))) { in visitFNeg()
2803 if (match(X, m_ImmConstant()) || match(Y, m_ImmConstant())) { in visitFNeg()
2805 Value *NegY = Builder.CreateFNegFMF(Y, &I, Y->getName() + ".neg"); in visitFNeg()
2813 if (match(OneUse, m_CopySign(m_Value(X), m_Value(Y)))) { in visitFNeg()
2822 Value *NegY = Builder.CreateFNeg(Y); in visitFNeg()
2859 Value *X, *Y; in visitFSub() local
2871 if (match(Op1, m_OneUse(m_FSub(m_Value(X), m_Value(Y))))) { in visitFSub()
2872 Value *NewSub = Builder.CreateFSubFMF(Y, X, &I); in visitFSub()
2897 if (match(Op1, m_FNeg(m_Value(Y)))) in visitFSub()
2898 return BinaryOperator::CreateFAddFMF(Op0, Y, &I); in visitFSub()
2903 if (match(Op1, m_OneUse(m_FPTrunc(m_FNeg(m_Value(Y)))))) in visitFSub()
2904 return BinaryOperator::CreateFAddFMF(Op0, Builder.CreateFPTrunc(Y, Ty), &I); in visitFSub()
2907 if (match(Op1, m_OneUse(m_FPExt(m_FNeg(m_Value(Y)))))) in visitFSub()
2908 return BinaryOperator::CreateFAddFMF(Op0, Builder.CreateFPExt(Y, Ty), &I); in visitFSub()
2913 if (match(Op1, m_OneUse(m_c_FMul(m_FNeg(m_Value(X)), m_Value(Y))))) { in visitFSub()
2914 Value *FMul = Builder.CreateFMulFMF(X, Y, &I); in visitFSub()
2919 if (match(Op1, m_OneUse(m_FDiv(m_FNeg(m_Value(X)), m_Value(Y)))) || in visitFSub()
2920 match(Op1, m_OneUse(m_FDiv(m_Value(X), m_FNeg(m_Value(Y)))))) { in visitFSub()
2921 Value *FDiv = Builder.CreateFDivFMF(X, Y, &I); in visitFSub()
2956 if (match(Op0, m_OneUse(m_c_FAdd(m_OneUse(m_FSub(m_Value(X), m_Value(Y))), in visitFSub()
2959 Value *YW = Builder.CreateFAddFMF(Y, Op1, &I); in visitFSub()
2989 if (match(Op0, m_OneUse(m_FSub(m_Value(X), m_Value(Y))))) { in visitFSub()
2990 Value *FAdd = Builder.CreateFAddFMF(Y, Op1, &I); in visitFSub()