Lines Matching defs:Upper
47 Upper(Lower) {}
50 : Lower(std::move(V)), Upper(Lower + 1) {}
53 : Lower(std::move(L)), Upper(std::move(U)) {
54 assert(Lower.getBitWidth() == Upper.getBitWidth() &&
56 assert((Lower != Upper || (Lower.isMaxValue() || Lower.isMinValue())) &&
57 "Lower == Upper, but they aren't min or max value!");
74 APInt Lower = Known.getMinValue(), Upper = Known.getMaxValue();
76 Upper.clearSignBit();
77 return ConstantRange(Lower, Upper + 1);
303 APInt Lower, Upper;
306 Upper = APIntOps::RoundingSDiv(MinValue, V, APInt::Rounding::DOWN);
309 Upper = APIntOps::RoundingSDiv(MaxValue, V, APInt::Rounding::DOWN);
311 return ConstantRange::getNonEmpty(Lower, Upper + 1);
415 return Lower == Upper && Lower.isMaxValue();
419 return Lower == Upper && Lower.isMinValue();
423 return Lower.ugt(Upper) && !Upper.isZero();
427 return Lower.ugt(Upper);
431 return Lower.sgt(Upper) && !Upper.isMinSignedValue();
435 return Lower.sgt(Upper);
445 return (Upper - Lower).ult(Other.Upper - Other.Lower);
455 return (Upper - Lower).ugt(MaxSize);
465 return !isUpperSignWrapped() && !Upper.isStrictlyPositive();
508 if (Lower == Upper)
512 return Lower.ule(V) && V.ult(Upper);
513 return Lower.ule(V) || V.ult(Upper);
524 return Lower.ule(Other.getLower()) && Other.getUpper().ule(Upper);
528 return Other.getUpper().ule(Upper) ||
531 return Other.getUpper().ule(Upper) && Lower.ule(Other.getLower());
552 if (Lower == Upper)
554 return ConstantRange(Lower - Val, Upper - Val);
597 if (Upper.ule(CR.Lower))
602 if (Upper.ult(CR.Upper))
603 return ConstantRange(CR.Lower, Upper);
611 if (Upper.ult(CR.Upper))
616 if (Lower.ult(CR.Upper))
617 return ConstantRange(Lower, CR.Upper);
625 if (CR.Lower.ult(Upper)) {
628 if (CR.Upper.ult(Upper))
633 if (CR.Upper.ule(Lower))
634 return ConstantRange(CR.Lower, Upper);
643 if (CR.Upper.ule(Lower))
648 return ConstantRange(Lower, CR.Upper);
656 if (CR.Upper.ult(Upper)) {
659 if (CR.Lower.ult(Upper))
665 return ConstantRange(Lower, CR.Upper);
671 if (CR.Upper.ule(Lower)) {
679 return ConstantRange(CR.Lower, Upper);
704 if (CR.Upper.ult(Lower) || Upper.ult(CR.Lower))
706 ConstantRange(Lower, CR.Upper), ConstantRange(CR.Lower, Upper), Type);
709 APInt U = (CR.Upper - 1).ugt(Upper - 1) ? CR.Upper : Upper;
720 if (CR.Upper.ule(Upper) || CR.Lower.uge(Lower))
725 if (CR.Lower.ule(Upper) && Lower.ule(CR.Upper))
733 if (Upper.ult(CR.Lower) && CR.Upper.ult(Lower))
735 ConstantRange(Lower, CR.Upper), ConstantRange(CR.Lower, Upper), Type);
739 if (Upper.ult(CR.Lower) && Lower.ule(CR.Upper))
740 return ConstantRange(CR.Lower, Upper);
744 assert(CR.Lower.ule(Upper) && CR.Upper.ult(Lower) &&
746 return ConstantRange(Lower, CR.Upper);
751 if (CR.Lower.ule(Upper) || Lower.ule(CR.Upper))
755 APInt U = CR.Upper.ugt(Upper) ? CR.Upper : Upper;
837 if (!Upper) // special case: [X, 0) -- not really wrapping around
843 return ConstantRange(Lower.zext(DstTySize), Upper.zext(DstTySize));
853 if (Upper.isMinSignedValue())
854 return ConstantRange(Lower.sext(DstTySize), Upper.zext(DstTySize));
861 return ConstantRange(Lower.sext(DstTySize), Upper.sext(DstTySize));
871 APInt LowerDiv(Lower), UpperDiv(Upper);
874 // Analyze wrapped sets in their two parts: [0, Upper) \/ [Lower, MaxValue]
876 // then we do the union with [MaxValue, Upper)
878 // If Upper is greater than or equal to MaxValue(DstTy), it covers the whole
880 if (Upper.getActiveBits() > DstTySize || Upper.countr_one() == DstTySize)
883 Union = ConstantRange(APInt::getMaxValue(DstTySize),Upper.trunc(DstTySize));
1354 APInt Upper = getUnsignedMax().udiv(RHS_umin) + 1;
1355 return getNonEmpty(std::move(Lower), std::move(Upper));
1377 PosRes = ConstantRange(PosL.Lower.sdiv(PosR.Upper - 1),
1378 (PosL.Upper - 1).sdiv(PosR.Lower) + 1);
1387 APInt Lo = (NegL.Upper - 1).sdiv(NegR.Lower);
1388 if (NegL.Lower.isMinSignedValue() && NegR.Upper.isZero()) {
1395 AdjNegRUpper = RHS.Upper;
1398 AdjNegRUpper = NegR.Upper - 1;
1406 if (NegL.Upper != SignedMin + 1) {
1408 if (Upper == SignedMin + 1)
1417 AdjNegLLower.sdiv(NegR.Upper - 1) + 1));
1421 ConstantRange(std::move(Lo), NegL.Lower.sdiv(NegR.Upper - 1) + 1));
1428 NegRes = ConstantRange((PosL.Upper - 1).sdiv(NegR.Upper - 1),
1435 (NegL.Upper - 1).sdiv(PosR.Upper - 1) + 1));
1464 APInt Upper = APIntOps::umin(getUnsignedMax(), RHS.getUnsignedMax() - 1) + 1;
1465 return getNonEmpty(APInt::getZero(getBitWidth()), std::move(Upper));
1500 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1;
1501 return ConstantRange(APInt::getZero(getBitWidth()), std::move(Upper));
1515 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1;
1516 return ConstantRange(std::move(Lower), std::move(Upper));
1606 // Upper wrapped range.
1805 // operation, when Upper of the LHS of ashr is a non-negative.
1807 // smaller number, the Upper value of LHS is shifted right with
1819 // operation, when Upper of the LHS of ashr is a negative number.
1821 // number, the Upper value of LHS is shifted right with the
1834 // Upper and Lower of LHS are non-negative.
1838 // Upper and Lower of LHS are negative.
1842 // Upper is non-negative and Lower is negative.
1940 return ConstantRange(Upper, Lower);
1950 if (Upper.isStrictlyPositive() || !Lower.isStrictlyPositive())
1953 Lo = APIntOps::umin(Lower, -Upper + 1);
1994 // 2) Upper is zero, wrapped set, handling cases of kind [3, 0], etc.
2009 // Compute the resulting range by excluding zero from Upper.
2024 const APInt &Upper) {
2025 assert(!ConstantRange(Lower, Upper).isWrappedSet() &&
2027 assert(Lower != Upper && "Unexpected empty set.");
2029 if (Lower + 1 == Upper)
2036 unsigned LCPLength = (Lower ^ (Upper - 1)).countl_zero();
2055 // 2) Upper is zero, wrapped set, handling cases of kind [3, 0], etc.
2059 if (Upper == 1) {
2066 return getUnsignedCountTrailingZerosRange(APInt(BitWidth, 1), Upper);
2067 } else if (Upper == 1) {
2068 // Compute the resulting range by excluding zero from Upper.
2073 getUnsignedCountTrailingZerosRange(APInt(BitWidth, 1), Upper);
2081 return getUnsignedCountTrailingZerosRange(Lower, Upper);
2082 // The range is wrapped. We decompose it into two ranges, [0, Upper) and
2086 // Handle [0, Upper)
2087 ConstantRange CR2 = getUnsignedCountTrailingZerosRange(Zero, Upper);
2092 const APInt &Upper) {
2093 assert(!ConstantRange(Lower, Upper).isWrappedSet() &&
2095 assert(Lower != Upper && "Unexpected empty set.");
2097 if (Lower + 1 == Upper)
2100 APInt Max = Upper - 1;
2126 return getUnsignedPopCountRange(Lower, Upper);
2127 // The range is wrapped. We decompose it into two ranges, [0, Upper) and
2132 // Handle [0, Upper)
2133 ConstantRange CR2 = getUnsignedPopCountRange(Zero, Upper);
2255 OS << "[" << Lower << "," << Upper << ")";