Lines Matching refs:APInt

45     : Lower(Full ? APInt::getMaxValue(BitWidth) : APInt::getMinValue(BitWidth)),  in ConstantRange()
48 ConstantRange::ConstantRange(APInt V) in ConstantRange()
51 ConstantRange::ConstantRange(APInt L, APInt U) in ConstantRange()
73 APInt Lower = Known.getMinValue(), Upper = Known.getMaxValue(); in fromKnownBits()
86 APInt Min = getUnsignedMin(); in toKnownBits()
87 APInt Max = getUnsignedMax(); in toKnownBits()
113 APInt UMax(CR.getUnsignedMax()); in makeAllowedICmpRegion()
116 return ConstantRange(APInt::getMinValue(W), std::move(UMax)); in makeAllowedICmpRegion()
119 APInt SMax(CR.getSignedMax()); in makeAllowedICmpRegion()
122 return ConstantRange(APInt::getSignedMinValue(W), std::move(SMax)); in makeAllowedICmpRegion()
125 return getNonEmpty(APInt::getMinValue(W), CR.getUnsignedMax() + 1); in makeAllowedICmpRegion()
127 return getNonEmpty(APInt::getSignedMinValue(W), CR.getSignedMax() + 1); in makeAllowedICmpRegion()
129 APInt UMin(CR.getUnsignedMin()); in makeAllowedICmpRegion()
132 return ConstantRange(std::move(UMin) + 1, APInt::getZero(W)); in makeAllowedICmpRegion()
135 APInt SMin(CR.getSignedMin()); in makeAllowedICmpRegion()
138 return ConstantRange(std::move(SMin) + 1, APInt::getSignedMinValue(W)); in makeAllowedICmpRegion()
141 return getNonEmpty(CR.getUnsignedMin(), APInt::getZero(W)); in makeAllowedICmpRegion()
143 return getNonEmpty(CR.getSignedMin(), APInt::getSignedMinValue(W)); in makeAllowedICmpRegion()
158 const APInt &C) { in makeExactICmpRegion()
206 APInt &RHS, APInt &Offset) const { in getEquivalentICmp()
207 Offset = APInt(getBitWidth(), 0); in getEquivalentICmp()
210 RHS = APInt(getBitWidth(), 0); in getEquivalentICmp()
236 APInt &RHS) const { in getEquivalentICmp()
237 APInt Offset; in getEquivalentICmp()
249 if (const APInt *L = getSingleElement()) in icmp()
250 if (const APInt *R = Other.getSingleElement()) in icmp()
277 static ConstantRange makeExactMulNUWRegion(const APInt &V) { in makeExactMulNUWRegion()
283 APIntOps::RoundingUDiv(APInt::getMinValue(BitWidth), V, in makeExactMulNUWRegion()
284 APInt::Rounding::UP), in makeExactMulNUWRegion()
285 APIntOps::RoundingUDiv(APInt::getMaxValue(BitWidth), V, in makeExactMulNUWRegion()
286 APInt::Rounding::DOWN) + 1); in makeExactMulNUWRegion()
290 static ConstantRange makeExactMulNSWRegion(const APInt &V) { in makeExactMulNSWRegion()
296 APInt MinValue = APInt::getSignedMinValue(BitWidth); in makeExactMulNSWRegion()
297 APInt MaxValue = APInt::getSignedMaxValue(BitWidth); in makeExactMulNSWRegion()
302 APInt Lower, Upper; in makeExactMulNSWRegion()
304 Lower = APIntOps::RoundingSDiv(MaxValue, V, APInt::Rounding::UP); in makeExactMulNSWRegion()
305 Upper = APIntOps::RoundingSDiv(MinValue, V, APInt::Rounding::DOWN); in makeExactMulNSWRegion()
307 Lower = APIntOps::RoundingSDiv(MinValue, V, APInt::Rounding::UP); in makeExactMulNSWRegion()
308 Upper = APIntOps::RoundingSDiv(MaxValue, V, APInt::Rounding::DOWN); in makeExactMulNSWRegion()
334 return getNonEmpty(APInt::getZero(BitWidth), -Other.getUnsignedMax()); in makeGuaranteedNoWrapRegion()
336 APInt SignedMinVal = APInt::getSignedMinValue(BitWidth); in makeGuaranteedNoWrapRegion()
337 APInt SMin = Other.getSignedMin(), SMax = Other.getSignedMax(); in makeGuaranteedNoWrapRegion()
345 return getNonEmpty(Other.getUnsignedMax(), APInt::getMinValue(BitWidth)); in makeGuaranteedNoWrapRegion()
347 APInt SignedMinVal = APInt::getSignedMinValue(BitWidth); in makeGuaranteedNoWrapRegion()
348 APInt SMin = Other.getSignedMin(), SMax = Other.getSignedMax(); in makeGuaranteedNoWrapRegion()
359 if (const APInt *C = Other.getSingleElement()) in makeGuaranteedNoWrapRegion()
369 ConstantRange(APInt(BitWidth, 0), APInt(BitWidth, (BitWidth - 1) + 1))); in makeGuaranteedNoWrapRegion()
378 APInt ShAmtUMax = ShAmt.getUnsignedMax(); in makeGuaranteedNoWrapRegion()
380 return getNonEmpty(APInt::getZero(BitWidth), in makeGuaranteedNoWrapRegion()
381 APInt::getMaxValue(BitWidth).lshr(ShAmtUMax) + 1); in makeGuaranteedNoWrapRegion()
382 return getNonEmpty(APInt::getSignedMinValue(BitWidth).ashr(ShAmtUMax), in makeGuaranteedNoWrapRegion()
383 APInt::getSignedMaxValue(BitWidth).ashr(ShAmtUMax) + 1); in makeGuaranteedNoWrapRegion()
389 const APInt &Other, in makeExactNoWrapRegion()
396 ConstantRange ConstantRange::makeMaskNotEqualRange(const APInt &Mask, in makeMaskNotEqualRange()
397 const APInt &C) { in makeMaskNotEqualRange()
410 APInt::getOneBitSet(BitWidth, Mask.countr_zero()) + C, C); in makeMaskNotEqualRange()
452 return MaxSize == 0 || APInt::getMaxValue(getBitWidth()).ugt(MaxSize - 1); in isSizeLargerThan()
482 APInt ConstantRange::getUnsignedMax() const { in getUnsignedMax()
484 return APInt::getMaxValue(getBitWidth()); in getUnsignedMax()
488 APInt ConstantRange::getUnsignedMin() const { in getUnsignedMin()
490 return APInt::getMinValue(getBitWidth()); in getUnsignedMin()
494 APInt ConstantRange::getSignedMax() const { in getSignedMax()
496 return APInt::getSignedMaxValue(getBitWidth()); in getSignedMax()
500 APInt ConstantRange::getSignedMin() const { in getSignedMin()
502 return APInt::getSignedMinValue(getBitWidth()); in getSignedMin()
506 bool ConstantRange::contains(const APInt &V) const { in contains()
548 ConstantRange ConstantRange::subtract(const APInt &Val) const { in subtract()
707 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower; in unionWith()
708 APInt U = (CR.Upper - 1).ugt(Upper - 1) ? CR.Upper : Upper; in unionWith()
753 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower; in unionWith()
754 APInt U = CR.Upper.ugt(Upper) ? CR.Upper : Upper; in unionWith()
799 APInt Min = APInt::getMinValue(BW); in castOp()
800 APInt Max = APInt::getMaxValue(BW); in castOp()
810 APInt SMin = APInt::getSignedMinValue(BW); in castOp()
811 APInt SMax = APInt::getSignedMaxValue(BW); in castOp()
835 APInt LowerExt(DstTySize, 0); in zeroExtend()
839 APInt::getOneBitSet(DstTySize, SrcTySize)); in zeroExtend()
856 return ConstantRange(APInt::getHighBitsSet(DstTySize,DstTySize-SrcTySize+1), in signExtend()
857 APInt::getLowBitsSet(DstTySize, SrcTySize-1) + 1); in signExtend()
870 APInt LowerDiv(Lower), UpperDiv(Upper); in truncate()
882 Union = ConstantRange(APInt::getMaxValue(DstTySize),Upper.trunc(DstTySize)); in truncate()
894 APInt Adjust = LowerDiv & APInt::getBitsSetFrom(getBitWidth(), DstTySize); in truncate()
1038 const APInt *IntMinIsPoison = Ops[1].getSingleElement(); in intrinsic()
1044 const APInt *ZeroIsPoison = Ops[1].getSingleElement(); in intrinsic()
1050 const APInt *ZeroIsPoison = Ops[1].getSingleElement(); in intrinsic()
1070 APInt NewLower = getLower() + Other.getLower(); in add()
1071 APInt NewUpper = getUpper() + Other.getUpper() - 1; in add()
1117 APInt NewLower = getLower() - Other.getUpper() + 1; in sub()
1118 APInt NewUpper = getUpper() - Other.getLower(); in sub()
1170 if (const APInt *C = getSingleElement()) { in multiply()
1174 return ConstantRange(APInt::getZero(getBitWidth())).sub(Other); in multiply()
1177 if (const APInt *C = Other.getSingleElement()) { in multiply()
1181 return ConstantRange(APInt::getZero(getBitWidth())).sub(*this); in multiply()
1191 APInt this_min = getUnsignedMin().zext(getBitWidth() * 2); in multiply()
1192 APInt this_max = getUnsignedMax().zext(getBitWidth() * 2); in multiply()
1193 APInt Other_min = Other.getUnsignedMin().zext(getBitWidth() * 2); in multiply()
1194 APInt Other_max = Other.getUnsignedMax().zext(getBitWidth() * 2); in multiply()
1221 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in multiply()
1252 APInt Min = getSignedMin(); in smul_fast()
1253 APInt Max = getSignedMax(); in smul_fast()
1254 APInt OtherMin = Other.getSignedMin(); in smul_fast()
1255 APInt OtherMax = Other.getSignedMax(); in smul_fast()
1263 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in smul_fast()
1273 APInt NewL = APIntOps::smax(getSignedMin(), Other.getSignedMin()); in smax()
1274 APInt NewU = APIntOps::smax(getSignedMax(), Other.getSignedMax()) + 1; in smax()
1287 APInt NewL = APIntOps::umax(getUnsignedMin(), Other.getUnsignedMin()); in umax()
1288 APInt NewU = APIntOps::umax(getUnsignedMax(), Other.getUnsignedMax()) + 1; in umax()
1301 APInt NewL = APIntOps::smin(getSignedMin(), Other.getSignedMin()); in smin()
1302 APInt NewU = APIntOps::smin(getSignedMax(), Other.getSignedMax()) + 1; in smin()
1315 APInt NewL = APIntOps::umin(getUnsignedMin(), Other.getUnsignedMin()); in umin()
1316 APInt NewU = APIntOps::umin(getUnsignedMax(), Other.getUnsignedMax()) + 1; in umin()
1328 APInt Lower = getUnsignedMin().udiv(RHS.getUnsignedMax()); in udiv()
1330 APInt RHS_umin = RHS.getUnsignedMin(); in udiv()
1340 APInt Upper = getUnsignedMax().udiv(RHS_umin) + 1; in udiv()
1348 APInt Zero = APInt::getZero(getBitWidth()); in sdiv()
1349 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in sdiv()
1353 : ConstantRange(APInt(getBitWidth(), 1), SignedMin); in sdiv()
1373 APInt Lo = (NegL.Upper - 1).sdiv(NegR.Lower); in sdiv()
1378 APInt AdjNegRUpper; in sdiv()
1393 APInt AdjNegLLower; in sdiv()
1436 if (const APInt *RHSInt = RHS.getSingleElement()) { in urem()
1441 if (const APInt *LHSInt = getSingleElement()) in urem()
1450 APInt Upper = APIntOps::umin(getUnsignedMax(), RHS.getUnsignedMax() - 1) + 1; in urem()
1451 return getNonEmpty(APInt::getZero(getBitWidth()), std::move(Upper)); in urem()
1458 if (const APInt *RHSInt = RHS.getSingleElement()) { in srem()
1463 if (const APInt *LHSInt = getSingleElement()) in srem()
1468 APInt MinAbsRHS = AbsRHS.getUnsignedMin(); in srem()
1469 APInt MaxAbsRHS = AbsRHS.getUnsignedMax(); in srem()
1478 APInt MinLHS = getSignedMin(), MaxLHS = getSignedMax(); in srem()
1486 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1; in srem()
1487 return ConstantRange(APInt::getZero(getBitWidth()), std::move(Upper)); in srem()
1495 APInt Lower = APIntOps::umax(MinLHS, -MaxAbsRHS + 1); in srem()
1496 return ConstantRange(std::move(Lower), APInt(getBitWidth(), 1)); in srem()
1500 APInt Lower = APIntOps::umax(MinLHS, -MaxAbsRHS + 1); in srem()
1501 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1; in srem()
1506 return ConstantRange(APInt::getAllOnes(getBitWidth())).sub(*this); in binaryNot()
1516 getNonEmpty(APInt::getZero(getBitWidth()), in binaryAnd()
1530 APInt::getZero(getBitWidth())); in binaryOr()
1571 APInt Min = getUnsignedMin(); in shl()
1572 APInt Max = getUnsignedMax(); in shl()
1573 if (const APInt *RHS = Other.getSingleElement()) { in shl()
1582 return getNonEmpty(APInt::getZero(BW), in shl()
1583 APInt::getBitsSetFrom(BW, RHS->getZExtValue()) + 1); in shl()
1586 APInt OtherMax = Other.getUnsignedMax(); in shl()
1612 APInt max = getUnsignedMax().lshr(Other.getUnsignedMin()) + 1; in lshr()
1613 APInt min = getUnsignedMin().lshr(Other.getUnsignedMax()); in lshr()
1628 APInt PosMax = getSignedMax().ashr(Other.getUnsignedMin()) + 1; in ashr()
1635 APInt PosMin = getSignedMin().ashr(Other.getUnsignedMax()); in ashr()
1642 APInt NegMax = getSignedMax().ashr(Other.getUnsignedMax()) + 1; in ashr()
1649 APInt NegMin = getSignedMin().ashr(Other.getUnsignedMin()); in ashr()
1651 APInt max, min; in ashr()
1672 APInt NewL = getUnsignedMin().uadd_sat(Other.getUnsignedMin()); in uadd_sat()
1673 APInt NewU = getUnsignedMax().uadd_sat(Other.getUnsignedMax()) + 1; in uadd_sat()
1681 APInt NewL = getSignedMin().sadd_sat(Other.getSignedMin()); in sadd_sat()
1682 APInt NewU = getSignedMax().sadd_sat(Other.getSignedMax()) + 1; in sadd_sat()
1690 APInt NewL = getUnsignedMin().usub_sat(Other.getUnsignedMax()); in usub_sat()
1691 APInt NewU = getUnsignedMax().usub_sat(Other.getUnsignedMin()) + 1; in usub_sat()
1699 APInt NewL = getSignedMin().ssub_sat(Other.getSignedMax()); in ssub_sat()
1700 APInt NewU = getSignedMax().ssub_sat(Other.getSignedMin()) + 1; in ssub_sat()
1708 APInt NewL = getUnsignedMin().umul_sat(Other.getUnsignedMin()); in umul_sat()
1709 APInt NewU = getUnsignedMax().umul_sat(Other.getUnsignedMax()) + 1; in umul_sat()
1723 APInt Min = getSignedMin(); in smul_sat()
1724 APInt Max = getSignedMax(); in smul_sat()
1725 APInt OtherMin = Other.getSignedMin(); in smul_sat()
1726 APInt OtherMax = Other.getSignedMax(); in smul_sat()
1730 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in smul_sat()
1738 APInt NewL = getUnsignedMin().ushl_sat(Other.getUnsignedMin()); in ushl_sat()
1739 APInt NewU = getUnsignedMax().ushl_sat(Other.getUnsignedMax()) + 1; in ushl_sat()
1747 APInt Min = getSignedMin(), Max = getSignedMax(); in sshl_sat()
1748 APInt ShAmtMin = Other.getUnsignedMin(), ShAmtMax = Other.getUnsignedMax(); in sshl_sat()
1749 APInt NewL = Min.sshl_sat(Min.isNonNegative() ? ShAmtMin : ShAmtMax); in sshl_sat()
1750 APInt NewU = Max.sshl_sat(Max.isNegative() ? ShAmtMin : ShAmtMax) + 1; in sshl_sat()
1767 APInt Lo; in abs()
1770 Lo = APInt::getZero(getBitWidth()); in abs()
1776 return ConstantRange(Lo, APInt::getSignedMinValue(getBitWidth())); in abs()
1778 return ConstantRange(Lo, APInt::getSignedMinValue(getBitWidth()) + 1); in abs()
1781 APInt SMin = getSignedMin(), SMax = getSignedMax(); in abs()
1800 return ConstantRange::getNonEmpty(APInt::getZero(getBitWidth()), in abs()
1808 APInt Zero = APInt::getZero(getBitWidth()); in ctlz()
1825 APInt(getBitWidth(), (getUpper() - 1).countl_zero()), in ctlz()
1826 APInt(getBitWidth(), (getLower() + 1).countl_zero() + 1)); in ctlz()
1830 APInt(getBitWidth(), getLower().countl_zero() + 1)); in ctlz()
1832 return ConstantRange(Zero, APInt(getBitWidth(), getBitWidth())); in ctlz()
1838 return getNonEmpty(APInt(getBitWidth(), getUnsignedMax().countl_zero()), in ctlz()
1839 APInt(getBitWidth(), getUnsignedMin().countl_zero() + 1)); in ctlz()
1842 static ConstantRange getUnsignedCountTrailingZerosRange(const APInt &Lower, in getUnsignedCountTrailingZerosRange()
1843 const APInt &Upper) { in getUnsignedCountTrailingZerosRange()
1849 return ConstantRange(APInt(BitWidth, Lower.countr_zero())); in getUnsignedCountTrailingZerosRange()
1851 return ConstantRange(APInt::getZero(BitWidth), in getUnsignedCountTrailingZerosRange()
1852 APInt(BitWidth, BitWidth + 1)); in getUnsignedCountTrailingZerosRange()
1859 APInt::getZero(BitWidth), in getUnsignedCountTrailingZerosRange()
1860 APInt(BitWidth, in getUnsignedCountTrailingZerosRange()
1869 APInt Zero = APInt::getZero(BitWidth); in cttz()
1885 return getUnsignedCountTrailingZerosRange(APInt(BitWidth, 1), Upper); in cttz()
1892 getUnsignedCountTrailingZerosRange(APInt(BitWidth, 1), Upper); in cttz()
1898 return getNonEmpty(Zero, APInt(BitWidth, BitWidth + 1)); in cttz()
1910 static ConstantRange getUnsignedPopCountRange(const APInt &Lower, in getUnsignedPopCountRange()
1911 const APInt &Upper) { in getUnsignedPopCountRange()
1917 return ConstantRange(APInt(BitWidth, Lower.popcount())); in getUnsignedPopCountRange()
1919 APInt Max = Upper - 1; in getUnsignedPopCountRange()
1933 return ConstantRange(APInt(BitWidth, MinBits), APInt(BitWidth, MaxBits + 1)); in getUnsignedPopCountRange()
1941 APInt Zero = APInt::getZero(BitWidth); in ctpop()
1943 return getNonEmpty(Zero, APInt(BitWidth, BitWidth + 1)); in ctpop()
1949 ConstantRange CR1 = ConstantRange(APInt(BitWidth, Lower.countl_one()), in ctpop()
1950 APInt(BitWidth, BitWidth + 1)); in ctpop()
1961 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedAddMayOverflow()
1962 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedAddMayOverflow()
1977 APInt Min = getSignedMin(), Max = getSignedMax(); in signedAddMayOverflow()
1978 APInt OtherMin = Other.getSignedMin(), OtherMax = Other.getSignedMax(); in signedAddMayOverflow()
1980 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in signedAddMayOverflow()
1981 APInt SignedMax = APInt::getSignedMaxValue(getBitWidth()); in signedAddMayOverflow()
2007 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedSubMayOverflow()
2008 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedSubMayOverflow()
2023 APInt Min = getSignedMin(), Max = getSignedMax(); in signedSubMayOverflow()
2024 APInt OtherMin = Other.getSignedMin(), OtherMax = Other.getSignedMax(); in signedSubMayOverflow()
2026 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in signedSubMayOverflow()
2027 APInt SignedMax = APInt::getSignedMaxValue(getBitWidth()); in signedSubMayOverflow()
2053 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedMulMayOverflow()
2054 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedMulMayOverflow()