Lines Matching refs:Y

147   Value *X = Mul.getOperand(0), *Y = Mul.getOperand(1);  in foldMulShl1()  local
149 std::swap(X, Y); in foldMulShl1()
156 if (match(Y, m_Shl(m_One(), m_Value(Z)))) { in foldMulShl1()
157 bool PropagateNSW = HasNSW && cast<ShlOperator>(Y)->hasNoSignedWrap(); in foldMulShl1()
166 if (match(Y, m_OneUse(m_Add(m_BinOp(Shift), m_One()))) && in foldMulShl1()
181 if (match(Y, m_OneUse(m_Not(m_OneUse(m_Shl(m_AllOnes(), m_Value(Z))))))) { in foldMulShl1()
333 Value *Y; in visitMul() local
338 match(Op1, m_OneUse(m_Intrinsic<Intrinsic::abs>(m_Value(Y), m_One())))) in visitMul()
341 Builder.CreateNSWMul(X, Y), in visitMul()
346 Value *Y; in visitMul() local
352 if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Neg(m_Value(Y)))) { in visitMul()
353 auto *NewMul = BinaryOperator::CreateMul(X, Y); in visitMul()
362 if (match(&I, m_c_Mul(m_OneUse(m_Neg(m_Value(X))), m_Value(Y)))) in visitMul()
363 return BinaryOperator::CreateNeg(Builder.CreateMul(X, Y)); in visitMul()
397 Value *Y = Op1; in visitMul() local
401 Y = Op0; in visitMul()
404 Value *Neg = dyn_castNegVal(Y); in visitMul()
406 (Div->getOperand(1) == Y || Div->getOperand(1) == Neg) && in visitMul()
413 if (DivOp1 == Y) in visitMul()
425 if (DivOp1 == Y) in visitMul()
449 if (((match(Op0, m_ZExt(m_Value(X))) && match(Op1, m_ZExt(m_Value(Y)))) || in visitMul()
450 (match(Op0, m_SExt(m_Value(X))) && match(Op1, m_SExt(m_Value(Y))))) && in visitMul()
451 X->getType()->isIntOrIntVectorTy(1) && X->getType() == Y->getType() && in visitMul()
452 (Op0->hasOneUse() || Op1->hasOneUse() || X == Y)) { in visitMul()
453 Value *And = Builder.CreateAnd(X, Y, "mulbool"); in visitMul()
459 if (((match(Op0, m_SExt(m_Value(X))) && match(Op1, m_ZExt(m_Value(Y)))) || in visitMul()
460 (match(Op0, m_ZExt(m_Value(X))) && match(Op1, m_SExt(m_Value(Y))))) && in visitMul()
461 X->getType()->isIntOrIntVectorTy(1) && X->getType() == Y->getType() && in visitMul()
463 Value *And = Builder.CreateAnd(X, Y, "mulbool"); in visitMul()
476 if (match(&I, m_c_Mul(m_OneUse(m_SExt(m_Value(X))), m_Value(Y))) && in visitMul()
478 return SelectInst::Create(X, Builder.CreateNeg(Y, "", I.hasNoSignedWrap()), in visitMul()
503 if (match(&I, m_c_BinOp(m_LShr(m_Value(X), m_APInt(C)), m_Value(Y))) && in visitMul()
506 return SelectInst::Create(IsNeg, Y, ConstantInt::getNullValue(Ty)); in visitMul()
510 if (match(&I, m_c_BinOp(m_OneUse(m_And(m_Value(X), m_One())), m_Value(Y)))) { in visitMul()
512 return SelectInst::Create(Tr, Y, ConstantInt::getNullValue(Ty)); in visitMul()
577 Value *X, *Y; in foldFPSignBitOps() local
581 if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_FNeg(m_Value(Y)))) in foldFPSignBitOps()
582 return BinaryOperator::CreateWithCopiedFlags(Opcode, X, Y, &I); in foldFPSignBitOps()
591 if (match(Op0, m_FAbs(m_Value(X))) && match(Op1, m_FAbs(m_Value(Y))) && in foldFPSignBitOps()
595 Value *XY = Builder.CreateBinOp(Opcode, X, Y); in foldFPSignBitOps()
606 Value *Y, Value *Z) { in foldPowiReassoc() argument
608 Value *YZ = Builder.CreateAdd(Y, Z); in foldPowiReassoc()
615 Value *X, *Y, *Z; in foldPowiReassoc() local
623 m_Value(X), m_Value(Y)))), in foldPowiReassoc()
625 Constant *One = ConstantInt::get(Y->getType(), 1); in foldPowiReassoc()
626 if (willNotOverflowSignedAdd(Y, One, I)) { in foldPowiReassoc()
627 Instruction *NewPow = createPowiExpr(I, *this, X, Y, One); in foldPowiReassoc()
637 m_Intrinsic<Intrinsic::powi>(m_Value(X), m_Value(Y)))) && in foldPowiReassoc()
640 Y->getType() == Z->getType()) { in foldPowiReassoc()
641 Instruction *NewPow = createPowiExpr(I, *this, X, Y, Z); in foldPowiReassoc()
651 m_Specific(Op1), m_Value(Y))))) && in foldPowiReassoc()
652 willNotOverflowSignedSub(Y, ConstantInt::get(Y->getType(), 1), I)) { in foldPowiReassoc()
653 Constant *NegOne = ConstantInt::getAllOnesValue(Y->getType()); in foldPowiReassoc()
654 Instruction *NewPow = createPowiExpr(I, *this, Op1, Y, NegOne); in foldPowiReassoc()
663 m_Value(X), m_Value(Y))))) && in foldPowiReassoc()
665 willNotOverflowSignedSub(Y, ConstantInt::get(Y->getType(), 1), I)) { in foldPowiReassoc()
666 Constant *NegOne = ConstantInt::getAllOnesValue(Y->getType()); in foldPowiReassoc()
667 auto *NewPow = createPowiExpr(I, *this, X, Y, NegOne); in foldPowiReassoc()
678 Value *X, *Y; in foldFMulReassoc() local
737 m_c_FMul(m_AllowReassoc(m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))), in foldFMulReassoc()
746 return BinaryOperator::CreateFDivFMF(NewFMul, Y, FMF); in foldFMulReassoc()
754 match(Op1, m_OneUse(m_Sqrt(m_Value(Y))))) { in foldFMulReassoc()
755 Value *XY = Builder.CreateFMulFMF(X, Y, &I); in foldFMulReassoc()
767 match(Op0, (m_FDiv(m_SpecificFP(1.0), m_Value(Y)))) && in foldFMulReassoc()
768 match(Y, m_Sqrt(m_Value(X))) && Op1 == X) in foldFMulReassoc()
769 return BinaryOperator::CreateFDivFMF(X, Y, &I); in foldFMulReassoc()
771 match(Op1, (m_FDiv(m_SpecificFP(1.0), m_Value(Y)))) && in foldFMulReassoc()
772 match(Y, m_Sqrt(m_Value(X))) && Op0 == X) in foldFMulReassoc()
773 return BinaryOperator::CreateFDivFMF(X, Y, &I); in foldFMulReassoc()
780 if (match(Op0, m_FDiv(m_Value(X), m_Sqrt(m_Value(Y))))) { in foldFMulReassoc()
782 return BinaryOperator::CreateFDivFMF(XX, Y, &I); in foldFMulReassoc()
785 if (match(Op0, m_FDiv(m_Sqrt(m_Value(Y)), m_Value(X)))) { in foldFMulReassoc()
787 return BinaryOperator::CreateFDivFMF(Y, XX, &I); in foldFMulReassoc()
794 m_Value(Y))), in foldFMulReassoc()
796 Value *Y1 = Builder.CreateFAddFMF(Y, ConstantFP::get(I.getType(), 1.0), &I); in foldFMulReassoc()
806 if (match(Op0, m_Intrinsic<Intrinsic::pow>(m_Value(X), m_Value(Y))) && in foldFMulReassoc()
808 auto *YZ = Builder.CreateFAddFMF(Y, Z, &I); in foldFMulReassoc()
813 if (match(Op0, m_Intrinsic<Intrinsic::pow>(m_Value(X), m_Value(Y))) && in foldFMulReassoc()
814 match(Op1, m_Intrinsic<Intrinsic::pow>(m_Value(Z), m_Specific(Y)))) { in foldFMulReassoc()
816 auto *NewPow = Builder.CreateBinaryIntrinsic(Intrinsic::pow, XZ, Y, &I); in foldFMulReassoc()
822 match(Op1, m_Intrinsic<Intrinsic::exp>(m_Value(Y)))) { in foldFMulReassoc()
823 Value *XY = Builder.CreateFAddFMF(X, Y, &I); in foldFMulReassoc()
830 match(Op1, m_Intrinsic<Intrinsic::exp2>(m_Value(Y)))) { in foldFMulReassoc()
831 Value *XY = Builder.CreateFAddFMF(X, Y, &I); in foldFMulReassoc()
844 if (match(Op0, m_OneUse(m_c_FMul(m_Specific(Op1), m_Value(Y)))) && Op1 != Y) { in foldFMulReassoc()
846 return BinaryOperator::CreateFMulFMF(XX, Y, &I); in foldFMulReassoc()
848 if (match(Op1, m_OneUse(m_c_FMul(m_Specific(Op0), m_Value(Y)))) && Op0 != Y) { in foldFMulReassoc()
850 return BinaryOperator::CreateFMulFMF(XX, Y, &I); in foldFMulReassoc()
904 Value *X, *Y; in visitFMul() local
942 Y = Op1; in visitFMul()
947 Y = Op0; in visitFMul()
951 Value *LogXTimesY = Builder.CreateFMulFMF(Log2, Y, &I); in visitFMul()
952 return BinaryOperator::CreateFSubFMF(LogXTimesY, Y, &I); in visitFMul()
967 m_c_FMul(m_Intrinsic<Intrinsic::maximum>(m_Value(X), m_Value(Y)), in visitFMul()
969 m_Deferred(Y))))) { in visitFMul()
970 BinaryOperator *Result = BinaryOperator::CreateFMulFMF(X, Y, &I); in visitFMul()
1090 Value *X, *Y, *Z; in foldIDivShl() local
1095 match(Op0, m_c_Mul(m_Specific(X), m_Value(Y)))) { in foldIDivShl()
1104 return Builder.CreateLShr(Y, Z, "", I.isExact()); in foldIDivShl()
1109 return Builder.CreateSDiv(Y, Shl, "", I.isExact()); in foldIDivShl()
1116 match(Op1, m_Shl(m_Value(Y), m_Specific(Z)))) { in foldIDivShl()
1127 return Builder.CreateUDiv(X, Y, "", I.isExact()); in foldIDivShl()
1133 return Builder.CreateSDiv(X, Y, "", I.isExact()); in foldIDivShl()
1138 if (match(Op0, m_Shl(m_Value(X), m_Value(Y))) && in foldIDivShl()
1149 One, Y, "shl.dividend", in foldIDivShl()
1308 Value *Y; in commonIDivTransforms() local
1309 if (IsSigned && match(Op0, m_NSWShl(m_Specific(Op1), m_Value(Y)))) in commonIDivTransforms()
1310 return BinaryOperator::CreateNSWShl(ConstantInt::get(Ty, 1), Y); in commonIDivTransforms()
1311 if (!IsSigned && match(Op0, m_NUWShl(m_Specific(Op1), m_Value(Y)))) in commonIDivTransforms()
1312 return BinaryOperator::CreateNUWShl(ConstantInt::get(Ty, 1), Y); in commonIDivTransforms()
1315 if (match(Op1, m_c_Mul(m_Specific(Op0), m_Value(Y)))) { in commonIDivTransforms()
1320 replaceOperand(I, 1, Y); in commonIDivTransforms()
1329 match(Op1, m_c_Mul(m_Specific(X), m_Value(Y)))) in commonIDivTransforms()
1332 Builder.CreateShl(ConstantInt::get(Ty, 1), Z, "", /*NUW*/ true), Y); in commonIDivTransforms()
1344 m_Value(Y)))) { in commonIDivTransforms()
1349 NewDiv = BinaryOperator::CreateUDiv(X, Y); in commonIDivTransforms()
1351 NewDiv = BinaryOperator::CreateSDiv(X, Y); in commonIDivTransforms()
1361 if (match(Op0, m_Mul(m_Value(X), m_Value(Y)))) { in commonIDivTransforms()
1384 if (auto *Val = CreateDivOrNull(Y, Z)) in commonIDivTransforms()
1387 if (match(Op1, m_c_Mul(m_Specific(Y), m_Value(Z)))) { in commonIDivTransforms()
1425 Value *X, *Y; in takeLog2() local
1432 if (match(Op, m_Shl(m_Value(X), m_Value(Y)))) { in takeLog2()
1437 return IfFold([&]() { return Builder.CreateAdd(LogX, Y); }); in takeLog2()
1478 Value *X, *Y; in narrowUDivURem() local
1479 if (match(N, m_ZExt(m_Value(X))) && match(D, m_ZExt(m_Value(Y))) && in narrowUDivURem()
1480 X->getType() == Y->getType() && (N->hasOneUse() || D->hasOneUse())) { in narrowUDivURem()
1483 Value *NarrowOp = IC.Builder.CreateBinOp(Opcode, X, Y); in narrowUDivURem()
1661 Value *Y; in visitSDiv() local
1662 if (match(&I, m_SDiv(m_OneUse(m_NSWNeg(m_Value(X))), m_Value(Y)))) in visitSDiv()
1664 Builder.CreateSDiv(X, Y, I.getName(), I.isExact())); in visitSDiv()
1860 Value *Y, *Z; in foldFDivSqrtDivisor() local
1864 if (!match(DivOp, m_FDiv(m_Value(Y), m_Value(Z)))) in foldFDivSqrtDivisor()
1869 Value *SwapDiv = Builder.CreateFDivFMF(Z, Y, DivOp); in foldFDivSqrtDivisor()
1910 Value *X, *Y; in visitFDiv() local
1911 if (match(Op0, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) && in visitFDiv()
1912 (!isa<Constant>(Y) || !isa<Constant>(Op1))) { in visitFDiv()
1914 Value *YZ = Builder.CreateFMulFMF(Y, Op1, &I); in visitFDiv()
1917 if (match(Op1, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) && in visitFDiv()
1918 (!isa<Constant>(Y) || !isa<Constant>(Op0))) { in visitFDiv()
1920 Value *YZ = Builder.CreateFMulFMF(Y, Op0, &I); in visitFDiv()
1929 if (match(Op1, m_FDiv(m_SpecificFP(1.0), m_Value(Y)))) in visitFDiv()
1930 return BinaryOperator::CreateFMulFMF(Y, Op0, &I); in visitFDiv()
1961 Value *X, *Y; in visitFDiv() local
1963 match(Op1, m_c_FMul(m_Specific(Op0), m_Value(Y)))) { in visitFDiv()
1965 replaceOperand(I, 1, Y); in visitFDiv()
1988 m_Value(Y))))) { in visitFDiv()
1990 Builder.CreateFAddFMF(Y, ConstantFP::get(I.getType(), -1.0), &I); in visitFDiv()
2010 APInt Y, Z; in simplifyIRemMulShl() local
2043 if (MatchShiftOrMulXC(Op0, X, Y) && MatchShiftOrMulXC(Op1, X, Z)) { in simplifyIRemMulShl()
2045 } else if (MatchShiftCX(Op0, Y, X) && MatchShiftCX(Op1, Z, X)) { in simplifyIRemMulShl()
2060 APInt RemYZ = IsSRem ? Y.srem(Z) : Y.urem(Z); in simplifyIRemMulShl()
2085 if (RemYZ == Y && BO1NoWrap) { in simplifyIRemMulShl()
2086 BinaryOperator *BO = CreateMulOrShift(Y); in simplifyIRemMulShl()
2096 if (Y.uge(Z) && (IsSRem ? (BO0HasNSW && BO1HasNSW) : BO0HasNUW)) { in simplifyIRemMulShl()
2250 const APInt *Y; in visitSRem() local
2252 if (match(Op1, m_Negative(Y)) && !Y->isMinSignedValue()) in visitSRem()
2253 return replaceOperand(I, 1, ConstantInt::get(I.getType(), -*Y)); in visitSRem()
2257 Value *X, *Y; in visitSRem() local
2258 if (match(&I, m_SRem(m_OneUse(m_NSWNeg(m_Value(X))), m_Value(Y)))) in visitSRem()
2259 return BinaryOperator::CreateNSWNeg(Builder.CreateSRem(X, Y)); in visitSRem()