Lines Matching refs:match
58 if (match(V, m_LShr(m_OneUse(m_Shl(m_Value(One), m_Value(A))), m_Value(B))) && in simplifyValueKnownNonZero()
59 match(One, m_One())) { in simplifyValueKnownNonZero()
105 if (match(&I, m_c_Mul(m_OneUse(m_Select(m_Value(Cond), m_One(), m_AllOnes())), in foldMulSelectToNegate()
113 if (match(&I, m_c_Mul(m_OneUse(m_Select(m_Value(Cond), m_AllOnes(), m_One())), in foldMulSelectToNegate()
122 if (match(&I, m_c_FMul(m_OneUse(m_Select(m_Value(Cond), m_SpecificFP(1.0), in foldMulSelectToNegate()
132 if (match(&I, m_c_FMul(m_OneUse(m_Select(m_Value(Cond), m_SpecificFP(-1.0), in foldMulSelectToNegate()
156 if (match(Y, m_Shl(m_One(), m_Value(Z)))) { in foldMulShl1()
166 if (match(Y, m_OneUse(m_Add(m_BinOp(Shift), m_One()))) && in foldMulShl1()
167 match(Shift, m_OneUse(m_Shl(m_One(), m_Value(Z))))) { in foldMulShl1()
181 if (match(Y, m_OneUse(m_Not(m_OneUse(m_Shl(m_AllOnes(), m_Value(Z))))))) { in foldMulShl1()
220 if (match(Op1, m_AllOnes())) { in visitMul()
230 if (match(&I, m_Mul(m_Shl(m_Value(NewOp), m_ImmConstant(C2)), in visitMul()
232 match(C1, m_APInt(IVal))) { in visitMul()
246 if (match(&I, m_Mul(m_Value(NewOp), m_Constant(C1)))) { in visitMul()
255 if (match(NewCst, m_APInt(V)) && *V != V->getBitWidth() - 1) in visitMul()
264 if (Op0->hasOneUse() && match(Op1, m_NegatedPower2())) { in visitMul()
284 if (match(Op0, m_ZExtOrSExt(m_Value(X))) && in visitMul()
285 match(Op1, m_APIntAllowPoison(NegPow2C))) { in visitMul()
304 if (match(Op1, m_ImmConstant(MulC))) { in visitMul()
309 if (match(Op0, m_OneUse(m_AddLike(m_Value(X), m_ImmConstant(C1))))) { in visitMul()
329 if (Op0 == Op1 && match(Op0, m_Intrinsic<Intrinsic::abs>(m_Value(X)))) in visitMul()
336 match(Op0, in visitMul()
338 match(Op1, m_OneUse(m_Intrinsic<Intrinsic::abs>(m_Value(Y), m_One())))) in visitMul()
348 if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Constant(Op1C))) in visitMul()
352 if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Neg(m_Value(Y)))) { in visitMul()
362 if (match(&I, m_c_Mul(m_OneUse(m_Neg(m_Value(X))), m_Value(Y)))) in visitMul()
367 if (match(Op1, m_Neg(m_Value(X)))) { in visitMul()
383 if (match(Op1, m_APInt(C1)) && in visitMul()
384 (match(Op0, m_Exact(m_UDiv(m_Value(X), m_CheckedInt(UDivCheck)))) || in visitMul()
385 match(Op0, m_Exact(m_SDiv(m_Value(X), m_CheckedInt(SDivCheck)))))) { in visitMul()
437 (match(Op0, m_And(m_Value(), m_One())) && in visitMul()
438 match(Op1, m_And(m_Value(), m_One())))) 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()
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()
469 if (match(Op0, m_ZExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) in visitMul()
471 if (match(Op1, m_ZExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) in visitMul()
476 if (match(&I, m_c_Mul(m_OneUse(m_SExt(m_Value(X))), m_Value(Y))) && in visitMul()
482 if (match(Op1, m_ImmConstant(ImmC))) { in visitMul()
484 if (match(Op0, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) { in visitMul()
491 if (match(Op0, m_OneUse(m_AShr(m_Value(X), m_APInt(C)))) && in visitMul()
503 if (match(&I, m_c_BinOp(m_LShr(m_Value(X), m_APInt(C)), m_Value(Y))) && in visitMul()
510 if (match(&I, m_c_BinOp(m_OneUse(m_And(m_Value(X), m_One())), m_Value(Y)))) { in visitMul()
517 if (match(&I, m_c_BinOp(m_Or(m_AShr(m_Value(X), in visitMul()
581 if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_FNeg(m_Value(Y)))) in foldFPSignBitOps()
586 if (Op0 == Op1 && match(Op0, m_FAbs(m_Value(X)))) in foldFPSignBitOps()
591 if (match(Op0, m_FAbs(m_Value(X))) && match(Op1, m_FAbs(m_Value(Y))) && in foldFPSignBitOps()
622 if (match(&I, m_c_FMul(m_OneUse(m_AllowReassoc(m_Intrinsic<Intrinsic::powi>( in foldPowiReassoc()
636 match(Op0, m_AllowReassoc( in foldPowiReassoc()
638 match(Op1, m_AllowReassoc(m_Intrinsic<Intrinsic::powi>(m_Specific(X), in foldPowiReassoc()
650 if (match(Op0, m_OneUse(m_AllowReassoc(m_Intrinsic<Intrinsic::powi>( in foldPowiReassoc()
662 if (match(Op0, m_OneUse(m_AllowReassoc(m_Intrinsic<Intrinsic::powi>( in foldPowiReassoc()
664 match(Op1, m_AllowReassoc(m_c_FMul(m_Specific(X), m_Value(Z)))) && in foldPowiReassoc()
684 if (match(Op1, m_Constant(C)) && C->isFiniteNonZeroFP() && in foldFMulReassoc()
685 match(Op0, m_AllowReassoc(m_BinOp(Op0BinOp)))) { in foldFMulReassoc()
691 if (match(Op0, m_OneUse(m_FDiv(m_Constant(C1), m_Value(X))))) { in foldFMulReassoc()
698 if (match(Op0, m_FDiv(m_Value(X), m_Constant(C1)))) { in foldFMulReassoc()
717 if (match(Op0, m_OneUse(m_FAdd(m_Value(X), m_Constant(C1))))) { in foldFMulReassoc()
725 if (match(Op0, m_OneUse(m_FSub(m_Constant(C1), m_Value(X))))) { in foldFMulReassoc()
736 if (match(&I, in foldFMulReassoc()
753 if (I.hasNoNaNs() && match(Op0, m_OneUse(m_Sqrt(m_Value(X)))) && in foldFMulReassoc()
754 match(Op1, m_OneUse(m_Sqrt(m_Value(Y))))) { 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()
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()
780 if (match(Op0, m_FDiv(m_Value(X), m_Sqrt(m_Value(Y))))) { in foldFMulReassoc()
785 if (match(Op0, m_FDiv(m_Sqrt(m_Value(Y)), m_Value(X)))) { in foldFMulReassoc()
793 if (match(&I, m_c_FMul(m_OneUse(m_Intrinsic<Intrinsic::pow>(m_Value(X), in foldFMulReassoc()
806 if (match(Op0, m_Intrinsic<Intrinsic::pow>(m_Value(X), m_Value(Y))) && in foldFMulReassoc()
807 match(Op1, m_Intrinsic<Intrinsic::pow>(m_Specific(X), m_Value(Z)))) { 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()
821 if (match(Op0, m_Intrinsic<Intrinsic::exp>(m_Value(X))) && in foldFMulReassoc()
822 match(Op1, m_Intrinsic<Intrinsic::exp>(m_Value(Y)))) { in foldFMulReassoc()
829 if (match(Op0, m_Intrinsic<Intrinsic::exp2>(m_Value(X))) && in foldFMulReassoc()
830 match(Op1, m_Intrinsic<Intrinsic::exp2>(m_Value(Y)))) { in foldFMulReassoc()
844 if (match(Op0, m_OneUse(m_c_FMul(m_Specific(Op1), m_Value(Y)))) && Op1 != Y) { in foldFMulReassoc()
848 if (match(Op1, m_OneUse(m_c_FMul(m_Specific(Op0), m_Value(Y)))) && Op0 != Y) { in foldFMulReassoc()
885 if (match(Op1, m_SpecificFP(-1.0))) in visitFMul()
892 if (match(Op1, m_APFloatAllowPoison(FPC)) && FPC->isZero() && in visitFMul()
906 if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_Constant(C))) in visitFMul()
914 if (match(Op0, m_UIToFP(m_Value(X))) && in visitFMul()
920 if (match(Op1, m_UIToFP(m_Value(X))) && in visitFMul()
939 if (match(Op0, m_OneUse(m_Intrinsic<Intrinsic::log2>( in visitFMul()
944 if (match(Op1, m_OneUse(m_Intrinsic<Intrinsic::log2>( in visitFMul()
962 I.hasNoSignedZeros() && match(Start, m_Zero())) in visitFMul()
966 if (match(&I, in visitFMul()
991 if (match(SI->getTrueValue(), m_Zero())) in simplifyDivRemOfSelectWithZeroOp()
994 else if (match(SI->getFalseValue(), m_Zero())) in simplifyDivRemOfSelectWithZeroOp()
1094 if (match(Op1, m_Shl(m_Value(X), m_Value(Z))) && in foldIDivShl()
1095 match(Op0, m_c_Mul(m_Specific(X), m_Value(Y)))) { in foldIDivShl()
1115 if (match(Op0, m_Shl(m_Value(X), m_Value(Z))) && in foldIDivShl()
1116 match(Op1, m_Shl(m_Value(Y), m_Specific(Z)))) { in foldIDivShl()
1138 if (match(Op0, m_Shl(m_Value(X), m_Value(Y))) && in foldIDivShl()
1139 match(Op1, m_Shl(m_Specific(X), m_Value(Z)))) { in foldIDivShl()
1185 if (match(Op0, m_ImmConstant()) && in commonIDivTransforms()
1186 match(Op1, m_Select(m_Value(), m_ImmConstant(), m_ImmConstant()))) { in commonIDivTransforms()
1193 if (match(Op1, m_APInt(C2))) { in commonIDivTransforms()
1198 if ((IsSigned && match(Op0, m_SDiv(m_Value(X), m_APInt(C1)))) || in commonIDivTransforms()
1199 (!IsSigned && match(Op0, m_UDiv(m_Value(X), m_APInt(C1))))) { in commonIDivTransforms()
1207 if ((IsSigned && match(Op0, m_NSWMul(m_Value(X), m_APInt(C1)))) || in commonIDivTransforms()
1208 (!IsSigned && match(Op0, m_NUWMul(m_Value(X), m_APInt(C1))))) { in commonIDivTransforms()
1229 if ((IsSigned && match(Op0, m_NSWShl(m_Value(X), m_APInt(C1))) && in commonIDivTransforms()
1231 (!IsSigned && match(Op0, m_NUWShl(m_Value(X), m_APInt(C1))) && in commonIDivTransforms()
1260 match(Op0, m_NSWAddLike(m_NSWMul(m_Value(X), m_SpecificInt(*C2)), in commonIDivTransforms()
1266 match(Op0, m_NUWAddLike(m_NUWMul(m_Value(X), m_SpecificInt(*C2)), in commonIDivTransforms()
1277 if (match(Op0, m_One())) { in commonIDivTransforms()
1302 if (match(Op0, m_Sub(m_Value(X), m_Value(Z)))) // (X - Z) / Y; Y = Op1 in commonIDivTransforms()
1303 if ((IsSigned && match(Z, m_SRem(m_Specific(X), m_Specific(Op1)))) || in commonIDivTransforms()
1304 (!IsSigned && match(Z, m_URem(m_Specific(X), m_Specific(Op1))))) in commonIDivTransforms()
1309 if (IsSigned && match(Op0, m_NSWShl(m_Specific(Op1), m_Value(Y)))) in commonIDivTransforms()
1311 if (!IsSigned && match(Op0, m_NUWShl(m_Specific(Op1), m_Value(Y)))) in commonIDivTransforms()
1315 if (match(Op1, m_c_Mul(m_Specific(Op0), m_Value(Y)))) { in commonIDivTransforms()
1328 match(Op0, m_NUWShl(m_Value(X), m_Value(Z))) && in commonIDivTransforms()
1329 match(Op1, m_c_Mul(m_Specific(X), m_Value(Y)))) in commonIDivTransforms()
1343 if (match(Op0, m_BinOp(I.getOpcode(), m_c_Mul(m_Specific(Op1), m_Value(X)), in commonIDivTransforms()
1361 if (match(Op0, m_Mul(m_Value(X), m_Value(Y)))) { in commonIDivTransforms()
1371 if (OB1HasNSW && match(B, m_APInt(C1)) && !C1->isAllOnes()) in commonIDivTransforms()
1377 if (match(A, m_APInt(C1)) && match(B, m_APInt(C2)) && C2->ule(*C1)) in commonIDivTransforms()
1383 if (match(Op1, m_c_Mul(m_Specific(X), m_Value(Z)))) { in commonIDivTransforms()
1387 if (match(Op1, m_c_Mul(m_Specific(Y), m_Value(Z)))) { in commonIDivTransforms()
1411 if (match(Op, m_Power2())) in takeLog2()
1426 if (match(Op, m_ZExt(m_Value(X)))) in takeLog2()
1432 if (match(Op, m_Shl(m_Value(X), m_Value(Y)))) { in takeLog2()
1479 if (match(N, m_ZExt(m_Value(X))) && match(D, m_ZExt(m_Value(Y))) && in narrowUDivURem()
1488 if (isa<Instruction>(N) && match(N, m_OneUse(m_ZExt(m_Value(X)))) && in narrowUDivURem()
1489 match(D, m_Constant(C))) { in narrowUDivURem()
1499 if (isa<Instruction>(D) && match(D, m_OneUse(m_ZExt(m_Value(X)))) && in narrowUDivURem()
1500 match(N, m_Constant(C))) { in narrowUDivURem()
1529 if (match(Op0, m_LShr(m_Value(X), m_APInt(C1))) && match(Op1, m_APInt(C2))) { in visitUDiv()
1534 bool IsExact = I.isExact() && match(Op0, m_Exact(m_Value())); in visitUDiv()
1546 if (match(Op1, m_Negative())) { in visitUDiv()
1551 if (match(Op1, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) { in visitUDiv()
1563 if (match(Op0, m_LShr(m_NUWMul(m_Specific(Op1), m_Value(A)), m_Value(B))) || in visitUDiv()
1564 match(Op0, m_LShr(m_NUWMul(m_Value(A), m_Specific(Op1)), m_Value(B)))) { in visitUDiv()
1600 if (match(Op1, m_AllOnes()) || in visitSDiv()
1601 (match(Op1, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1))) in visitSDiv()
1605 if (match(Op1, m_SignMask())) in visitSDiv()
1610 if (match(Op1, m_Power2()) && match(Op1, m_NonNegative())) { in visitSDiv()
1617 if (match(Op1, m_NSWShl(m_One(), m_Value(ShAmt)))) in visitSDiv()
1621 if (match(Op1, m_NegatedPower2())) { in visitSDiv()
1630 if (match(Op1, m_APInt(Op1C))) { in visitSDiv()
1635 if (match(Op0, m_OneUse(m_SExt(m_Value(Op0Src)))) && in visitSDiv()
1652 if (!Op1C->isMinSignedValue() && match(Op0, m_NSWNeg(m_Value(X)))) { in visitSDiv()
1662 if (match(&I, m_SDiv(m_OneUse(m_NSWNeg(m_Value(X))), m_Value(Y)))) in visitSDiv()
1668 if (match(&I, m_c_BinOp( in visitSDiv()
1678 (match(Op1, m_Power2(Op1C)) || match(Op1, m_NegatedPower2(Op1C))) && in visitSDiv()
1692 if (match(Op1, m_NegatedPower2())) { in visitSDiv()
1725 if (!match(I.getOperand(1), m_Constant(C))) in foldFDivConstantDivisor()
1731 if (match(I.getOperand(0), m_FNeg(m_Value(X)))) in foldFDivConstantDivisor()
1738 (match(I.getOperand(1), m_PosZeroFP()) || in foldFDivConstantDivisor()
1739 (I.hasNoSignedZeros() && match(I.getOperand(1), m_AnyZeroFP())))) { in foldFDivConstantDivisor()
1770 if (!match(I.getOperand(0), m_Constant(C))) in foldFDivConstantDividend()
1776 if (match(I.getOperand(1), m_FNeg(m_Value(X)))) in foldFDivConstantDividend()
1785 if (match(I.getOperand(1), m_FMul(m_Value(X), m_Constant(C2)))) { in foldFDivConstantDividend()
1788 } else if (match(I.getOperand(1), m_FDiv(m_Value(X), m_Constant(C2)))) { in foldFDivConstantDividend()
1864 if (!match(DivOp, m_FDiv(m_Value(Y), m_Value(Z)))) in foldFDivSqrtDivisor()
1911 if (match(Op0, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) && in visitFDiv()
1917 if (match(Op1, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) && in visitFDiv()
1929 if (match(Op1, m_FDiv(m_SpecificFP(1.0), m_Value(Y)))) in visitFDiv()
1937 bool IsTan = match(Op0, m_Intrinsic<Intrinsic::sin>(m_Value(X))) && in visitFDiv()
1938 match(Op1, m_Intrinsic<Intrinsic::cos>(m_Specific(X))); in visitFDiv()
1940 !IsTan && match(Op0, m_Intrinsic<Intrinsic::cos>(m_Value(X))) && in visitFDiv()
1941 match(Op1, m_Intrinsic<Intrinsic::sin>(m_Specific(X))); in visitFDiv()
1963 match(Op1, m_c_FMul(m_Specific(Op0), m_Value(Y)))) { in visitFDiv()
1972 (match(&I, m_FDiv(m_Value(X), m_FAbs(m_Deferred(X)))) || in visitFDiv()
1973 match(&I, m_FDiv(m_FAbs(m_Value(X)), m_Deferred(X))))) { in visitFDiv()
1987 match(Op0, m_OneUse(m_Intrinsic<Intrinsic::pow>(m_Specific(Op1), in visitFDiv()
2016 if ((!V && match(Op, m_Mul(m_Value(V), m_APInt(Tmp)))) || in simplifyIRemMulShl()
2017 (V && match(Op, m_Mul(m_Specific(V), m_APInt(Tmp))))) in simplifyIRemMulShl()
2019 else if ((!V && match(Op, m_Shl(m_Value(V), m_APInt(Tmp)))) || in simplifyIRemMulShl()
2020 (V && match(Op, m_Shl(m_Specific(V), m_APInt(Tmp))))) in simplifyIRemMulShl()
2032 if ((!V && match(Op, m_Shl(m_APInt(Tmp), m_Value(V)))) || in simplifyIRemMulShl()
2033 (V && match(Op, m_Shl(m_APInt(Tmp), m_Specific(V))))) { in simplifyIRemMulShl()
2127 if (match(Op0, m_ImmConstant()) && in commonIRemTransforms()
2128 match(Op1, m_Select(m_Value(), m_ImmConstant(), m_ImmConstant()))) { in commonIRemTransforms()
2141 if (match(Op1, m_APInt(Op1Int)) && !Op1Int->isMinValue() && in commonIRemTransforms()
2190 if (match(Op0, m_One())) { in visitURem()
2197 if (match(Op1, m_Negative())) { in visitURem()
2211 if (match(Op1, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) { in visitURem()
2221 if (match(Op0, m_Add(m_Value(X), m_One()))) { in visitURem()
2224 if (Val && match(Val, m_One())) { in visitURem()
2252 if (match(Op1, m_Negative(Y)) && !Y->isMinSignedValue()) in visitSRem()
2258 if (match(&I, m_SRem(m_OneUse(m_NSWNeg(m_Value(X))), m_Value(Y)))) in visitSRem()