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()
248 static ConstantRange makeExactMulNUWRegion(const APInt &V) { in makeExactMulNUWRegion()
254 APIntOps::RoundingUDiv(APInt::getMinValue(BitWidth), V, in makeExactMulNUWRegion()
255 APInt::Rounding::UP), in makeExactMulNUWRegion()
256 APIntOps::RoundingUDiv(APInt::getMaxValue(BitWidth), V, in makeExactMulNUWRegion()
257 APInt::Rounding::DOWN) + 1); in makeExactMulNUWRegion()
261 static ConstantRange makeExactMulNSWRegion(const APInt &V) { in makeExactMulNSWRegion()
267 APInt MinValue = APInt::getSignedMinValue(BitWidth); in makeExactMulNSWRegion()
268 APInt MaxValue = APInt::getSignedMaxValue(BitWidth); in makeExactMulNSWRegion()
273 APInt Lower, Upper; in makeExactMulNSWRegion()
275 Lower = APIntOps::RoundingSDiv(MaxValue, V, APInt::Rounding::UP); in makeExactMulNSWRegion()
276 Upper = APIntOps::RoundingSDiv(MinValue, V, APInt::Rounding::DOWN); in makeExactMulNSWRegion()
278 Lower = APIntOps::RoundingSDiv(MinValue, V, APInt::Rounding::UP); in makeExactMulNSWRegion()
279 Upper = APIntOps::RoundingSDiv(MaxValue, V, APInt::Rounding::DOWN); in makeExactMulNSWRegion()
305 return getNonEmpty(APInt::getZero(BitWidth), -Other.getUnsignedMax()); in makeGuaranteedNoWrapRegion()
307 APInt SignedMinVal = APInt::getSignedMinValue(BitWidth); in makeGuaranteedNoWrapRegion()
308 APInt SMin = Other.getSignedMin(), SMax = Other.getSignedMax(); in makeGuaranteedNoWrapRegion()
316 return getNonEmpty(Other.getUnsignedMax(), APInt::getMinValue(BitWidth)); in makeGuaranteedNoWrapRegion()
318 APInt SignedMinVal = APInt::getSignedMinValue(BitWidth); in makeGuaranteedNoWrapRegion()
319 APInt SMin = Other.getSignedMin(), SMax = Other.getSignedMax(); in makeGuaranteedNoWrapRegion()
330 if (const APInt *C = Other.getSingleElement()) in makeGuaranteedNoWrapRegion()
340 ConstantRange(APInt(BitWidth, 0), APInt(BitWidth, (BitWidth - 1) + 1))); in makeGuaranteedNoWrapRegion()
349 APInt ShAmtUMax = ShAmt.getUnsignedMax(); in makeGuaranteedNoWrapRegion()
351 return getNonEmpty(APInt::getZero(BitWidth), in makeGuaranteedNoWrapRegion()
352 APInt::getMaxValue(BitWidth).lshr(ShAmtUMax) + 1); in makeGuaranteedNoWrapRegion()
353 return getNonEmpty(APInt::getSignedMinValue(BitWidth).ashr(ShAmtUMax), in makeGuaranteedNoWrapRegion()
354 APInt::getSignedMaxValue(BitWidth).ashr(ShAmtUMax) + 1); in makeGuaranteedNoWrapRegion()
360 const APInt &Other, in makeExactNoWrapRegion()
406 return MaxSize == 0 || APInt::getMaxValue(getBitWidth()).ugt(MaxSize - 1); in isSizeLargerThan()
426 APInt ConstantRange::getUnsignedMax() const { in getUnsignedMax()
428 return APInt::getMaxValue(getBitWidth()); in getUnsignedMax()
432 APInt ConstantRange::getUnsignedMin() const { in getUnsignedMin()
434 return APInt::getMinValue(getBitWidth()); in getUnsignedMin()
438 APInt ConstantRange::getSignedMax() const { in getSignedMax()
440 return APInt::getSignedMaxValue(getBitWidth()); in getSignedMax()
444 APInt ConstantRange::getSignedMin() const { in getSignedMin()
446 return APInt::getSignedMinValue(getBitWidth()); in getSignedMin()
450 bool ConstantRange::contains(const APInt &V) const { in contains()
492 ConstantRange ConstantRange::subtract(const APInt &Val) const { in subtract()
651 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower; in unionWith()
652 APInt U = (CR.Upper - 1).ugt(Upper - 1) ? CR.Upper : Upper; in unionWith()
697 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower; in unionWith()
698 APInt U = CR.Upper.ugt(Upper) ? CR.Upper : Upper; in unionWith()
743 APInt Min = APInt::getMinValue(BW); in castOp()
744 APInt Max = APInt::getMaxValue(BW); in castOp()
754 APInt SMin = APInt::getSignedMinValue(BW); in castOp()
755 APInt SMax = APInt::getSignedMaxValue(BW); in castOp()
779 APInt LowerExt(DstTySize, 0); in zeroExtend()
783 APInt::getOneBitSet(DstTySize, SrcTySize)); in zeroExtend()
800 return ConstantRange(APInt::getHighBitsSet(DstTySize,DstTySize-SrcTySize+1), in signExtend()
801 APInt::getLowBitsSet(DstTySize, SrcTySize-1) + 1); in signExtend()
814 APInt LowerDiv(Lower), UpperDiv(Upper); in truncate()
826 Union = ConstantRange(APInt::getMaxValue(DstTySize),Upper.trunc(DstTySize)); in truncate()
838 APInt Adjust = LowerDiv & APInt::getBitsSetFrom(getBitWidth(), DstTySize); in truncate()
980 const APInt *IntMinIsPoison = Ops[1].getSingleElement(); in intrinsic()
986 const APInt *ZeroIsPoison = Ops[1].getSingleElement(); in intrinsic()
992 const APInt *ZeroIsPoison = Ops[1].getSingleElement(); in intrinsic()
1012 APInt NewLower = getLower() + Other.getLower(); in add()
1013 APInt NewUpper = getUpper() + Other.getUpper() - 1; in add()
1059 APInt NewLower = getLower() - Other.getUpper() + 1; in sub()
1060 APInt NewUpper = getUpper() - Other.getLower(); in sub()
1112 if (const APInt *C = getSingleElement()) { in multiply()
1116 return ConstantRange(APInt::getZero(getBitWidth())).sub(Other); in multiply()
1119 if (const APInt *C = Other.getSingleElement()) { in multiply()
1123 return ConstantRange(APInt::getZero(getBitWidth())).sub(*this); in multiply()
1133 APInt this_min = getUnsignedMin().zext(getBitWidth() * 2); in multiply()
1134 APInt this_max = getUnsignedMax().zext(getBitWidth() * 2); in multiply()
1135 APInt Other_min = Other.getUnsignedMin().zext(getBitWidth() * 2); in multiply()
1136 APInt Other_max = Other.getUnsignedMax().zext(getBitWidth() * 2); in multiply()
1163 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in multiply()
1174 APInt Min = getSignedMin(); in smul_fast()
1175 APInt Max = getSignedMax(); in smul_fast()
1176 APInt OtherMin = Other.getSignedMin(); in smul_fast()
1177 APInt OtherMax = Other.getSignedMax(); in smul_fast()
1185 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in smul_fast()
1195 APInt NewL = APIntOps::smax(getSignedMin(), Other.getSignedMin()); in smax()
1196 APInt NewU = APIntOps::smax(getSignedMax(), Other.getSignedMax()) + 1; in smax()
1209 APInt NewL = APIntOps::umax(getUnsignedMin(), Other.getUnsignedMin()); in umax()
1210 APInt NewU = APIntOps::umax(getUnsignedMax(), Other.getUnsignedMax()) + 1; in umax()
1223 APInt NewL = APIntOps::smin(getSignedMin(), Other.getSignedMin()); in smin()
1224 APInt NewU = APIntOps::smin(getSignedMax(), Other.getSignedMax()) + 1; in smin()
1237 APInt NewL = APIntOps::umin(getUnsignedMin(), Other.getUnsignedMin()); in umin()
1238 APInt NewU = APIntOps::umin(getUnsignedMax(), Other.getUnsignedMax()) + 1; in umin()
1250 APInt Lower = getUnsignedMin().udiv(RHS.getUnsignedMax()); in udiv()
1252 APInt RHS_umin = RHS.getUnsignedMin(); in udiv()
1262 APInt Upper = getUnsignedMax().udiv(RHS_umin) + 1; in udiv()
1270 APInt Zero = APInt::getZero(getBitWidth()); in sdiv()
1271 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in sdiv()
1275 : ConstantRange(APInt(getBitWidth(), 1), SignedMin); in sdiv()
1295 APInt Lo = (NegL.Upper - 1).sdiv(NegR.Lower); in sdiv()
1300 APInt AdjNegRUpper; in sdiv()
1315 APInt AdjNegLLower; in sdiv()
1358 if (const APInt *RHSInt = RHS.getSingleElement()) { in urem()
1363 if (const APInt *LHSInt = getSingleElement()) in urem()
1372 APInt Upper = APIntOps::umin(getUnsignedMax(), RHS.getUnsignedMax() - 1) + 1; in urem()
1373 return getNonEmpty(APInt::getZero(getBitWidth()), std::move(Upper)); in urem()
1380 if (const APInt *RHSInt = RHS.getSingleElement()) { in srem()
1385 if (const APInt *LHSInt = getSingleElement()) in srem()
1390 APInt MinAbsRHS = AbsRHS.getUnsignedMin(); in srem()
1391 APInt MaxAbsRHS = AbsRHS.getUnsignedMax(); in srem()
1400 APInt MinLHS = getSignedMin(), MaxLHS = getSignedMax(); in srem()
1408 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1; in srem()
1409 return ConstantRange(APInt::getZero(getBitWidth()), std::move(Upper)); in srem()
1417 APInt Lower = APIntOps::umax(MinLHS, -MaxAbsRHS + 1); in srem()
1418 return ConstantRange(std::move(Lower), APInt(getBitWidth(), 1)); in srem()
1422 APInt Lower = APIntOps::umax(MinLHS, -MaxAbsRHS + 1); in srem()
1423 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1; in srem()
1428 return ConstantRange(APInt::getAllOnes(getBitWidth())).sub(*this); in binaryNot()
1438 getNonEmpty(APInt::getZero(getBitWidth()), in binaryAnd()
1452 APInt::getZero(getBitWidth())); in binaryOr()
1478 APInt Min = getUnsignedMin(); in shl()
1479 APInt Max = getUnsignedMax(); in shl()
1480 if (const APInt *RHS = Other.getSingleElement()) { in shl()
1489 return getNonEmpty(APInt::getZero(BW), in shl()
1490 APInt::getBitsSetFrom(BW, RHS->getZExtValue()) + 1); in shl()
1493 APInt OtherMax = Other.getUnsignedMax(); in shl()
1519 APInt max = getUnsignedMax().lshr(Other.getUnsignedMin()) + 1; in lshr()
1520 APInt min = getUnsignedMin().lshr(Other.getUnsignedMax()); in lshr()
1535 APInt PosMax = getSignedMax().ashr(Other.getUnsignedMin()) + 1; in ashr()
1542 APInt PosMin = getSignedMin().ashr(Other.getUnsignedMax()); in ashr()
1549 APInt NegMax = getSignedMax().ashr(Other.getUnsignedMax()) + 1; in ashr()
1556 APInt NegMin = getSignedMin().ashr(Other.getUnsignedMin()); in ashr()
1558 APInt max, min; in ashr()
1579 APInt NewL = getUnsignedMin().uadd_sat(Other.getUnsignedMin()); in uadd_sat()
1580 APInt NewU = getUnsignedMax().uadd_sat(Other.getUnsignedMax()) + 1; in uadd_sat()
1588 APInt NewL = getSignedMin().sadd_sat(Other.getSignedMin()); in sadd_sat()
1589 APInt NewU = getSignedMax().sadd_sat(Other.getSignedMax()) + 1; in sadd_sat()
1597 APInt NewL = getUnsignedMin().usub_sat(Other.getUnsignedMax()); in usub_sat()
1598 APInt NewU = getUnsignedMax().usub_sat(Other.getUnsignedMin()) + 1; in usub_sat()
1606 APInt NewL = getSignedMin().ssub_sat(Other.getSignedMax()); in ssub_sat()
1607 APInt NewU = getSignedMax().ssub_sat(Other.getSignedMin()) + 1; in ssub_sat()
1615 APInt NewL = getUnsignedMin().umul_sat(Other.getUnsignedMin()); in umul_sat()
1616 APInt NewU = getUnsignedMax().umul_sat(Other.getUnsignedMax()) + 1; in umul_sat()
1630 APInt Min = getSignedMin(); in smul_sat()
1631 APInt Max = getSignedMax(); in smul_sat()
1632 APInt OtherMin = Other.getSignedMin(); in smul_sat()
1633 APInt OtherMax = Other.getSignedMax(); in smul_sat()
1637 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in smul_sat()
1645 APInt NewL = getUnsignedMin().ushl_sat(Other.getUnsignedMin()); in ushl_sat()
1646 APInt NewU = getUnsignedMax().ushl_sat(Other.getUnsignedMax()) + 1; in ushl_sat()
1654 APInt Min = getSignedMin(), Max = getSignedMax(); in sshl_sat()
1655 APInt ShAmtMin = Other.getUnsignedMin(), ShAmtMax = Other.getUnsignedMax(); in sshl_sat()
1656 APInt NewL = Min.sshl_sat(Min.isNonNegative() ? ShAmtMin : ShAmtMax); in sshl_sat()
1657 APInt NewU = Max.sshl_sat(Max.isNegative() ? ShAmtMin : ShAmtMax) + 1; in sshl_sat()
1674 APInt Lo; in abs()
1677 Lo = APInt::getZero(getBitWidth()); in abs()
1683 return ConstantRange(Lo, APInt::getSignedMinValue(getBitWidth())); in abs()
1685 return ConstantRange(Lo, APInt::getSignedMinValue(getBitWidth()) + 1); in abs()
1688 APInt SMin = getSignedMin(), SMax = getSignedMax(); in abs()
1707 return ConstantRange::getNonEmpty(APInt::getZero(getBitWidth()), in abs()
1715 APInt Zero = APInt::getZero(getBitWidth()); in ctlz()
1732 APInt(getBitWidth(), (getUpper() - 1).countl_zero()), in ctlz()
1733 APInt(getBitWidth(), (getLower() + 1).countl_zero() + 1)); in ctlz()
1737 APInt(getBitWidth(), getLower().countl_zero() + 1)); in ctlz()
1739 return ConstantRange(Zero, APInt(getBitWidth(), getBitWidth())); in ctlz()
1745 return getNonEmpty(APInt(getBitWidth(), getUnsignedMax().countl_zero()), in ctlz()
1746 APInt(getBitWidth(), getUnsignedMin().countl_zero() + 1)); in ctlz()
1749 static ConstantRange getUnsignedCountTrailingZerosRange(const APInt &Lower, in getUnsignedCountTrailingZerosRange()
1750 const APInt &Upper) { in getUnsignedCountTrailingZerosRange()
1756 return ConstantRange(APInt(BitWidth, Lower.countr_zero())); in getUnsignedCountTrailingZerosRange()
1758 return ConstantRange(APInt::getZero(BitWidth), in getUnsignedCountTrailingZerosRange()
1759 APInt(BitWidth, BitWidth + 1)); in getUnsignedCountTrailingZerosRange()
1766 APInt::getZero(BitWidth), in getUnsignedCountTrailingZerosRange()
1767 APInt(BitWidth, in getUnsignedCountTrailingZerosRange()
1776 APInt Zero = APInt::getZero(BitWidth); in cttz()
1792 return getUnsignedCountTrailingZerosRange(APInt(BitWidth, 1), Upper); in cttz()
1799 getUnsignedCountTrailingZerosRange(APInt(BitWidth, 1), Upper); in cttz()
1805 return getNonEmpty(Zero, APInt(BitWidth, BitWidth + 1)); in cttz()
1817 static ConstantRange getUnsignedPopCountRange(const APInt &Lower, in getUnsignedPopCountRange()
1818 const APInt &Upper) { in getUnsignedPopCountRange()
1824 return ConstantRange(APInt(BitWidth, Lower.popcount())); in getUnsignedPopCountRange()
1826 APInt Max = Upper - 1; in getUnsignedPopCountRange()
1840 return ConstantRange(APInt(BitWidth, MinBits), APInt(BitWidth, MaxBits + 1)); in getUnsignedPopCountRange()
1848 APInt Zero = APInt::getZero(BitWidth); in ctpop()
1850 return getNonEmpty(Zero, APInt(BitWidth, BitWidth + 1)); in ctpop()
1856 ConstantRange CR1 = ConstantRange(APInt(BitWidth, Lower.countl_one()), in ctpop()
1857 APInt(BitWidth, BitWidth + 1)); in ctpop()
1868 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedAddMayOverflow()
1869 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedAddMayOverflow()
1884 APInt Min = getSignedMin(), Max = getSignedMax(); in signedAddMayOverflow()
1885 APInt OtherMin = Other.getSignedMin(), OtherMax = Other.getSignedMax(); in signedAddMayOverflow()
1887 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in signedAddMayOverflow()
1888 APInt SignedMax = APInt::getSignedMaxValue(getBitWidth()); in signedAddMayOverflow()
1914 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedSubMayOverflow()
1915 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedSubMayOverflow()
1930 APInt Min = getSignedMin(), Max = getSignedMax(); in signedSubMayOverflow()
1931 APInt OtherMin = Other.getSignedMin(), OtherMax = Other.getSignedMax(); in signedSubMayOverflow()
1933 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in signedSubMayOverflow()
1934 APInt SignedMax = APInt::getSignedMaxValue(getBitWidth()); in signedSubMayOverflow()
1960 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedMulMayOverflow()
1961 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedMulMayOverflow()