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()
179 if (match(Y, m_OneUse(m_Not(m_OneUse(m_Shl(m_AllOnes(), m_Value(Z))))))) { in foldMulShl1()
216 if (match(Op1, m_AllOnes())) { in visitMul()
226 if (match(&I, m_Mul(m_Shl(m_Value(NewOp), m_Constant(C2)), in visitMul()
228 match(C1, m_APInt(IVal))) { in visitMul()
240 if (match(&I, m_Mul(m_Value(NewOp), m_Constant(C1)))) { in visitMul()
249 if (match(NewCst, m_APInt(V)) && *V != V->getBitWidth() - 1) in visitMul()
258 if (Op0->hasOneUse() && match(Op1, m_NegatedPower2())) { in visitMul()
278 if (match(Op0, m_ZExtOrSExt(m_Value(X))) && in visitMul()
279 match(Op1, m_APIntAllowUndef(NegPow2C))) { in visitMul()
298 if (match(Op1, m_ImmConstant(MulC))) { in visitMul()
303 if (match(Op0, m_OneUse(m_AddLike(m_Value(X), m_ImmConstant(C1))))) { in visitMul()
329 if (match(Op0, m_Intrinsic<Intrinsic::abs>(m_Value(X)))) in visitMul()
337 match(Op0, in visitMul()
339 match(Op1, m_OneUse(m_Intrinsic<Intrinsic::abs>(m_Value(Y), m_One())))) in visitMul()
349 if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Constant(Op1C))) in visitMul()
353 if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Neg(m_Value(Y)))) { in visitMul()
363 if (match(&I, m_c_Mul(m_OneUse(m_Neg(m_Value(X))), m_Value(Y)))) in visitMul()
368 if (match(Op1, m_Neg(m_Value(X)))) { in visitMul()
414 (match(Op0, m_And(m_Value(), m_One())) && in visitMul()
415 match(Op1, m_And(m_Value(), m_One())))) in visitMul()
426 if (((match(Op0, m_ZExt(m_Value(X))) && match(Op1, m_ZExt(m_Value(Y)))) || in visitMul()
427 (match(Op0, m_SExt(m_Value(X))) && match(Op1, m_SExt(m_Value(Y))))) && in visitMul()
436 if (((match(Op0, m_SExt(m_Value(X))) && match(Op1, m_ZExt(m_Value(Y)))) || in visitMul()
437 (match(Op0, m_ZExt(m_Value(X))) && match(Op1, m_SExt(m_Value(Y))))) && in visitMul()
446 if (match(Op0, m_ZExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) in visitMul()
448 if (match(Op1, m_ZExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) in visitMul()
452 if (match(Op1, m_ImmConstant(ImmC))) { in visitMul()
454 if (match(Op0, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) { in visitMul()
461 if (match(Op0, m_OneUse(m_AShr(m_Value(X), m_APInt(C)))) && in visitMul()
473 if (match(&I, m_c_BinOp(m_LShr(m_Value(X), m_APInt(C)), m_Value(Y))) && in visitMul()
480 if (match(&I, m_c_BinOp(m_OneUse(m_And(m_Value(X), m_One())), m_Value(Y)))) { in visitMul()
487 if (match(&I, m_c_BinOp(m_Or(m_AShr(m_Value(X), in visitMul()
551 if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_FNeg(m_Value(Y)))) in foldFPSignBitOps()
556 if (Op0 == Op1 && match(Op0, m_FAbs(m_Value(X)))) in foldFPSignBitOps()
561 if (match(Op0, m_FAbs(m_Value(X))) && match(Op1, m_FAbs(m_Value(Y))) && in foldFPSignBitOps()
582 if (match(Op1, m_Constant(C)) && C->isFiniteNonZeroFP()) { in foldFMulReassoc()
584 if (match(Op0, m_OneUse(m_FDiv(m_Constant(C1), m_Value(X))))) { in foldFMulReassoc()
591 if (match(Op0, m_FDiv(m_Value(X), m_Constant(C1)))) { in foldFMulReassoc()
609 if (match(Op0, m_OneUse(m_FAdd(m_Value(X), m_Constant(C1))))) { in foldFMulReassoc()
617 if (match(Op0, m_OneUse(m_FSub(m_Constant(C1), m_Value(X))))) { in foldFMulReassoc()
628 if (match(&I, in foldFMulReassoc()
638 if (I.hasNoNaNs() && match(Op0, m_OneUse(m_Sqrt(m_Value(X)))) && in foldFMulReassoc()
639 match(Op1, m_OneUse(m_Sqrt(m_Value(Y))))) { in foldFMulReassoc()
652 match(Op0, (m_FDiv(m_SpecificFP(1.0), m_Value(Y)))) && in foldFMulReassoc()
653 match(Y, m_Sqrt(m_Value(X))) && Op1 == X) in foldFMulReassoc()
656 match(Op1, (m_FDiv(m_SpecificFP(1.0), m_Value(Y)))) && in foldFMulReassoc()
657 match(Y, m_Sqrt(m_Value(X))) && Op0 == X) in foldFMulReassoc()
665 if (match(Op0, m_FDiv(m_Value(X), m_Sqrt(m_Value(Y))))) { in foldFMulReassoc()
670 if (match(Op0, m_FDiv(m_Sqrt(m_Value(Y)), m_Value(X)))) { in foldFMulReassoc()
678 if (match(&I, m_c_FMul(m_OneUse(m_Intrinsic<Intrinsic::pow>(m_Value(X), in foldFMulReassoc()
688 if (match(Op0, m_Intrinsic<Intrinsic::pow>(m_Value(X), m_Value(Y))) && in foldFMulReassoc()
689 match(Op1, m_Intrinsic<Intrinsic::pow>(m_Specific(X), m_Value(Z)))) { in foldFMulReassoc()
695 if (match(Op0, m_Intrinsic<Intrinsic::pow>(m_Value(X), m_Value(Y))) && in foldFMulReassoc()
696 match(Op1, m_Intrinsic<Intrinsic::pow>(m_Value(Z), m_Specific(Y)))) { in foldFMulReassoc()
703 if (match(Op0, m_Intrinsic<Intrinsic::powi>(m_Value(X), m_Value(Y))) && in foldFMulReassoc()
704 match(Op1, m_Intrinsic<Intrinsic::powi>(m_Specific(X), m_Value(Z))) && in foldFMulReassoc()
713 if (match(Op0, m_Intrinsic<Intrinsic::exp>(m_Value(X))) && in foldFMulReassoc()
714 match(Op1, m_Intrinsic<Intrinsic::exp>(m_Value(Y)))) { in foldFMulReassoc()
721 if (match(Op0, m_Intrinsic<Intrinsic::exp2>(m_Value(X))) && in foldFMulReassoc()
722 match(Op1, m_Intrinsic<Intrinsic::exp2>(m_Value(Y)))) { in foldFMulReassoc()
736 if (match(Op0, m_OneUse(m_c_FMul(m_Specific(Op1), m_Value(Y)))) && Op1 != Y) { in foldFMulReassoc()
740 if (match(Op1, m_OneUse(m_c_FMul(m_Specific(Op0), m_Value(Y)))) && Op0 != Y) { in foldFMulReassoc()
774 if (match(Op1, m_SpecificFP(-1.0))) in visitFMul()
778 if (I.hasNoNaNs() && match(Op1, m_PosZeroFP())) { in visitFMul()
787 if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_Constant(C))) in visitFMul()
802 if (match(Op0, m_OneUse(m_Intrinsic<Intrinsic::log2>( in visitFMul()
807 if (match(Op1, m_OneUse(m_Intrinsic<Intrinsic::log2>( in visitFMul()
825 I.hasNoSignedZeros() && match(Start, m_Zero())) in visitFMul()
829 if (match(&I, in visitFMul()
854 if (match(SI->getTrueValue(), m_Zero())) in simplifyDivRemOfSelectWithZeroOp()
857 else if (match(SI->getFalseValue(), m_Zero())) in simplifyDivRemOfSelectWithZeroOp()
957 if (match(Op1, m_Shl(m_Value(X), m_Value(Z))) && in foldIDivShl()
958 match(Op0, m_c_Mul(m_Specific(X), m_Value(Y)))) { in foldIDivShl()
978 if (match(Op0, m_Shl(m_Value(X), m_Value(Z))) && in foldIDivShl()
979 match(Op1, m_Shl(m_Value(Y), m_Specific(Z)))) { in foldIDivShl()
1001 if (match(Op0, m_Shl(m_Value(X), m_Value(Y))) && in foldIDivShl()
1002 match(Op1, m_Shl(m_Specific(X), m_Value(Z)))) { in foldIDivShl()
1048 if (match(Op0, m_ImmConstant()) && in commonIDivTransforms()
1049 match(Op1, m_Select(m_Value(), m_ImmConstant(), m_ImmConstant()))) { in commonIDivTransforms()
1056 if (match(Op1, m_APInt(C2))) { in commonIDivTransforms()
1061 if ((IsSigned && match(Op0, m_SDiv(m_Value(X), m_APInt(C1)))) || in commonIDivTransforms()
1062 (!IsSigned && match(Op0, m_UDiv(m_Value(X), m_APInt(C1))))) { in commonIDivTransforms()
1070 if ((IsSigned && match(Op0, m_NSWMul(m_Value(X), m_APInt(C1)))) || in commonIDivTransforms()
1071 (!IsSigned && match(Op0, m_NUWMul(m_Value(X), m_APInt(C1))))) { in commonIDivTransforms()
1092 if ((IsSigned && match(Op0, m_NSWShl(m_Value(X), m_APInt(C1))) && in commonIDivTransforms()
1094 (!IsSigned && match(Op0, m_NUWShl(m_Value(X), m_APInt(C1))) && in commonIDivTransforms()
1123 match(Op0, m_NSWAdd(m_NSWMul(m_Value(X), m_SpecificInt(*C2)), in commonIDivTransforms()
1129 match(Op0, m_NUWAdd(m_NUWMul(m_Value(X), m_SpecificInt(*C2)), in commonIDivTransforms()
1140 if (match(Op0, m_One())) { in commonIDivTransforms()
1163 if (match(Op0, m_Sub(m_Value(X), m_Value(Z)))) // (X - Z) / Y; Y = Op1 in commonIDivTransforms()
1164 if ((IsSigned && match(Z, m_SRem(m_Specific(X), m_Specific(Op1)))) || in commonIDivTransforms()
1165 (!IsSigned && match(Z, m_URem(m_Specific(X), m_Specific(Op1))))) in commonIDivTransforms()
1170 if (IsSigned && match(Op0, m_NSWShl(m_Specific(Op1), m_Value(Y)))) in commonIDivTransforms()
1172 if (!IsSigned && match(Op0, m_NUWShl(m_Specific(Op1), m_Value(Y)))) in commonIDivTransforms()
1176 if (match(Op1, m_c_Mul(m_Specific(Op0), m_Value(Y)))) { in commonIDivTransforms()
1189 match(Op0, m_NUWShl(m_Value(X), m_Value(Z))) && in commonIDivTransforms()
1190 match(Op1, m_c_Mul(m_Specific(X), m_Value(Y)))) in commonIDivTransforms()
1204 if (match(Op0, m_BinOp(I.getOpcode(), m_c_Mul(m_Specific(Op1), m_Value(X)), in commonIDivTransforms()
1222 if (match(Op0, m_Mul(m_Value(X), m_Value(Y)))) { in commonIDivTransforms()
1232 if (OB1HasNSW && match(B, m_APInt(C1)) && !C1->isAllOnes()) in commonIDivTransforms()
1238 if (match(A, m_APInt(C1)) && match(B, m_APInt(C2)) && C2->ule(*C1)) in commonIDivTransforms()
1244 if (match(Op1, m_c_Mul(m_Specific(X), m_Value(Z)))) { in commonIDivTransforms()
1248 if (match(Op1, m_c_Mul(m_Specific(Y), m_Value(Z)))) { in commonIDivTransforms()
1272 if (match(Op, m_Power2())) in takeLog2()
1287 if (match(Op, m_ZExt(m_Value(X)))) in takeLog2()
1293 if (match(Op, m_Shl(m_Value(X), m_Value(Y)))) { in takeLog2()
1343 if (match(N, m_ZExt(m_Value(X))) && match(D, m_ZExt(m_Value(Y))) && in narrowUDivURem()
1352 if (isa<Instruction>(N) && match(N, m_OneUse(m_ZExt(m_Value(X)))) && in narrowUDivURem()
1353 match(D, m_Constant(C))) { in narrowUDivURem()
1363 if (isa<Instruction>(D) && match(D, m_OneUse(m_ZExt(m_Value(X)))) && in narrowUDivURem()
1364 match(N, m_Constant(C))) { in narrowUDivURem()
1393 if (match(Op0, m_LShr(m_Value(X), m_APInt(C1))) && match(Op1, m_APInt(C2))) { in visitUDiv()
1398 bool IsExact = I.isExact() && match(Op0, m_Exact(m_Value())); in visitUDiv()
1410 if (match(Op1, m_Negative())) { in visitUDiv()
1415 if (match(Op1, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) { in visitUDiv()
1427 if (match(Op0, m_LShr(m_NUWMul(m_Specific(Op1), m_Value(A)), m_Value(B))) || in visitUDiv()
1428 match(Op0, m_LShr(m_NUWMul(m_Value(A), m_Specific(Op1)), m_Value(B)))) { in visitUDiv()
1464 if (match(Op1, m_AllOnes()) || in visitSDiv()
1465 (match(Op1, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1))) in visitSDiv()
1469 if (match(Op1, m_SignMask())) in visitSDiv()
1474 if (match(Op1, m_Power2()) && match(Op1, m_NonNegative())) { in visitSDiv()
1481 if (match(Op1, m_NSWShl(m_One(), m_Value(ShAmt)))) in visitSDiv()
1485 if (match(Op1, m_NegatedPower2())) { in visitSDiv()
1494 if (match(Op1, m_APInt(Op1C))) { in visitSDiv()
1499 if (match(Op0, m_OneUse(m_SExt(m_Value(Op0Src)))) && in visitSDiv()
1517 match(Op0, m_NSWSub(m_Zero(), m_Value(X)))) { in visitSDiv()
1527 if (match(&I, m_SDiv(m_OneUse(m_NSWSub(m_Zero(), m_Value(X))), m_Value(Y)))) in visitSDiv()
1533 if (match(&I, m_c_BinOp( in visitSDiv()
1543 (match(Op1, m_Power2(Op1C)) || match(Op1, m_NegatedPower2(Op1C))) && in visitSDiv()
1557 if (match(Op1, m_NegatedPower2())) { in visitSDiv()
1590 if (!match(I.getOperand(1), m_Constant(C))) in foldFDivConstantDivisor()
1596 if (match(I.getOperand(0), m_FNeg(m_Value(X)))) in foldFDivConstantDivisor()
1601 if (I.hasNoNaNs() && match(I.getOperand(1), m_Zero())) { in foldFDivConstantDivisor()
1633 if (!match(I.getOperand(0), m_Constant(C))) in foldFDivConstantDividend()
1639 if (match(I.getOperand(1), m_FNeg(m_Value(X)))) in foldFDivConstantDividend()
1648 if (match(I.getOperand(1), m_FMul(m_Value(X), m_Constant(C2)))) { in foldFDivConstantDividend()
1651 } else if (match(I.getOperand(1), m_FDiv(m_Value(X), m_Constant(C2)))) { in foldFDivConstantDividend()
1746 if (match(Op0, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) && in visitFDiv()
1752 if (match(Op1, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) && in visitFDiv()
1764 if (match(Op1, m_FDiv(m_SpecificFP(1.0), m_Value(Y)))) in visitFDiv()
1772 bool IsTan = match(Op0, m_Intrinsic<Intrinsic::sin>(m_Value(X))) && in visitFDiv()
1773 match(Op1, m_Intrinsic<Intrinsic::cos>(m_Specific(X))); in visitFDiv()
1775 !IsTan && match(Op0, m_Intrinsic<Intrinsic::cos>(m_Value(X))) && in visitFDiv()
1776 match(Op1, m_Intrinsic<Intrinsic::sin>(m_Specific(X))); in visitFDiv()
1798 match(Op1, m_c_FMul(m_Specific(Op0), m_Value(Y)))) { in visitFDiv()
1807 (match(&I, m_FDiv(m_Value(X), m_FAbs(m_Deferred(X)))) || in visitFDiv()
1808 match(&I, m_FDiv(m_FAbs(m_Value(X)), m_Deferred(X))))) { in visitFDiv()
1819 match(Op0, m_OneUse(m_Intrinsic<Intrinsic::pow>(m_Specific(Op1), in visitFDiv()
1832 match(Op0, m_OneUse(m_Intrinsic<Intrinsic::powi>(m_Specific(Op1), in visitFDiv()
1860 if ((!V && match(Op, m_Mul(m_Value(V), m_APInt(Tmp)))) || in simplifyIRemMulShl()
1861 (V && match(Op, m_Mul(m_Specific(V), m_APInt(Tmp))))) in simplifyIRemMulShl()
1863 else if ((!V && match(Op, m_Shl(m_Value(V), m_APInt(Tmp)))) || in simplifyIRemMulShl()
1864 (V && match(Op, m_Shl(m_Specific(V), m_APInt(Tmp))))) in simplifyIRemMulShl()
1876 if ((!V && match(Op, m_Shl(m_APInt(Tmp), m_Value(V)))) || in simplifyIRemMulShl()
1877 (V && match(Op, m_Shl(m_APInt(Tmp), m_Specific(V))))) { in simplifyIRemMulShl()
1971 if (match(Op0, m_ImmConstant()) && in commonIRemTransforms()
1972 match(Op1, m_Select(m_Value(), m_ImmConstant(), m_ImmConstant()))) { in commonIRemTransforms()
1985 if (match(Op1, m_APInt(Op1Int)) && !Op1Int->isMinValue() && in commonIRemTransforms()
2034 if (match(Op0, m_One())) { in visitURem()
2041 if (match(Op1, m_Negative())) { in visitURem()
2053 if (match(Op1, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) { in visitURem()
2061 if (match(Op0, m_Add(m_Value(X), m_One()))) { in visitURem()
2064 if (Val && match(Val, m_One())) { in visitURem()
2090 if (match(Op1, m_Negative(Y)) && !Y->isMinSignedValue()) in visitSRem()
2096 if (match(&I, m_SRem(m_OneUse(m_NSWSub(m_Zero(), m_Value(X))), m_Value(Y)))) in visitSRem()