Lines Matching refs:APInt
44 : Lower(Full ? APInt::getMaxValue(BitWidth) : APInt::getMinValue(BitWidth)), in ConstantRange()
47 ConstantRange::ConstantRange(APInt V) in ConstantRange()
50 ConstantRange::ConstantRange(APInt L, APInt U) in ConstantRange()
72 APInt Lower = Known.getMinValue(), Upper = Known.getMaxValue(); in fromKnownBits()
85 APInt Min = getUnsignedMin(); in toKnownBits()
86 APInt Max = getUnsignedMax(); in toKnownBits()
112 APInt UMax(CR.getUnsignedMax()); in makeAllowedICmpRegion()
115 return ConstantRange(APInt::getMinValue(W), std::move(UMax)); in makeAllowedICmpRegion()
118 APInt SMax(CR.getSignedMax()); in makeAllowedICmpRegion()
121 return ConstantRange(APInt::getSignedMinValue(W), std::move(SMax)); in makeAllowedICmpRegion()
124 return getNonEmpty(APInt::getMinValue(W), CR.getUnsignedMax() + 1); in makeAllowedICmpRegion()
126 return getNonEmpty(APInt::getSignedMinValue(W), CR.getSignedMax() + 1); in makeAllowedICmpRegion()
128 APInt UMin(CR.getUnsignedMin()); in makeAllowedICmpRegion()
131 return ConstantRange(std::move(UMin) + 1, APInt::getZero(W)); in makeAllowedICmpRegion()
134 APInt SMin(CR.getSignedMin()); in makeAllowedICmpRegion()
137 return ConstantRange(std::move(SMin) + 1, APInt::getSignedMinValue(W)); in makeAllowedICmpRegion()
140 return getNonEmpty(CR.getUnsignedMin(), APInt::getZero(W)); in makeAllowedICmpRegion()
142 return getNonEmpty(CR.getSignedMin(), APInt::getSignedMinValue(W)); in makeAllowedICmpRegion()
157 const APInt &C) { in makeExactICmpRegion()
205 APInt &RHS, APInt &Offset) const { in getEquivalentICmp()
206 Offset = APInt(getBitWidth(), 0); in getEquivalentICmp()
209 RHS = APInt(getBitWidth(), 0); in getEquivalentICmp()
235 APInt &RHS) const { in getEquivalentICmp()
236 APInt Offset; in getEquivalentICmp()
247 static ConstantRange makeExactMulNUWRegion(const APInt &V) { in makeExactMulNUWRegion()
253 APIntOps::RoundingUDiv(APInt::getMinValue(BitWidth), V, in makeExactMulNUWRegion()
254 APInt::Rounding::UP), in makeExactMulNUWRegion()
255 APIntOps::RoundingUDiv(APInt::getMaxValue(BitWidth), V, in makeExactMulNUWRegion()
256 APInt::Rounding::DOWN) + 1); in makeExactMulNUWRegion()
260 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()
308 return getNonEmpty(APInt::getZero(BitWidth), -Other.getUnsignedMax()); in makeGuaranteedNoWrapRegion()
310 APInt SignedMinVal = APInt::getSignedMinValue(BitWidth); in makeGuaranteedNoWrapRegion()
311 APInt SMin = Other.getSignedMin(), SMax = Other.getSignedMax(); in makeGuaranteedNoWrapRegion()
319 return getNonEmpty(Other.getUnsignedMax(), APInt::getMinValue(BitWidth)); in makeGuaranteedNoWrapRegion()
321 APInt SignedMinVal = APInt::getSignedMinValue(BitWidth); in makeGuaranteedNoWrapRegion()
322 APInt SMin = Other.getSignedMin(), SMax = Other.getSignedMax(); in makeGuaranteedNoWrapRegion()
339 ConstantRange(APInt(BitWidth, 0), APInt(BitWidth, (BitWidth - 1) + 1))); in makeGuaranteedNoWrapRegion()
348 APInt ShAmtUMax = ShAmt.getUnsignedMax(); in makeGuaranteedNoWrapRegion()
350 return getNonEmpty(APInt::getZero(BitWidth), in makeGuaranteedNoWrapRegion()
351 APInt::getMaxValue(BitWidth).lshr(ShAmtUMax) + 1); in makeGuaranteedNoWrapRegion()
352 return getNonEmpty(APInt::getSignedMinValue(BitWidth).ashr(ShAmtUMax), in makeGuaranteedNoWrapRegion()
353 APInt::getSignedMaxValue(BitWidth).ashr(ShAmtUMax) + 1); in makeGuaranteedNoWrapRegion()
359 const APInt &Other, in makeExactNoWrapRegion()
405 return MaxSize == 0 || APInt::getMaxValue(getBitWidth()).ugt(MaxSize - 1); in isSizeLargerThan()
425 APInt ConstantRange::getUnsignedMax() const { in getUnsignedMax()
427 return APInt::getMaxValue(getBitWidth()); in getUnsignedMax()
431 APInt ConstantRange::getUnsignedMin() const { in getUnsignedMin()
433 return APInt::getMinValue(getBitWidth()); in getUnsignedMin()
437 APInt ConstantRange::getSignedMax() const { in getSignedMax()
439 return APInt::getSignedMaxValue(getBitWidth()); in getSignedMax()
443 APInt ConstantRange::getSignedMin() const { in getSignedMin()
445 return APInt::getSignedMinValue(getBitWidth()); in getSignedMin()
449 bool ConstantRange::contains(const APInt &V) const { in contains()
491 ConstantRange ConstantRange::subtract(const APInt &Val) const { in subtract()
650 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower; in unionWith()
651 APInt U = (CR.Upper - 1).ugt(Upper - 1) ? CR.Upper : Upper; in unionWith()
696 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower; in unionWith()
697 APInt U = CR.Upper.ugt(Upper) ? CR.Upper : Upper; in unionWith()
742 APInt Min = APInt::getMinValue(BW); in castOp()
743 APInt Max = APInt::getMaxValue(BW); in castOp()
753 APInt SMin = APInt::getSignedMinValue(BW); in castOp()
754 APInt SMax = APInt::getSignedMaxValue(BW); in castOp()
778 APInt LowerExt(DstTySize, 0); in zeroExtend()
782 APInt::getOneBitSet(DstTySize, SrcTySize)); in zeroExtend()
799 return ConstantRange(APInt::getHighBitsSet(DstTySize,DstTySize-SrcTySize+1), in signExtend()
800 APInt::getLowBitsSet(DstTySize, SrcTySize-1) + 1); in signExtend()
813 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()
977 const APInt *IntMinIsPoison = Ops[1].getSingleElement(); in intrinsic()
995 APInt NewLower = getLower() + Other.getLower(); in add()
996 APInt NewUpper = getUpper() + Other.getUpper() - 1; in add()
1042 APInt NewLower = getLower() - Other.getUpper() + 1; in sub()
1043 APInt NewUpper = getUpper() - Other.getLower(); in sub()
1102 APInt this_min = getUnsignedMin().zext(getBitWidth() * 2); in multiply()
1103 APInt this_max = getUnsignedMax().zext(getBitWidth() * 2); in multiply()
1104 APInt Other_min = Other.getUnsignedMin().zext(getBitWidth() * 2); in multiply()
1105 APInt Other_max = Other.getUnsignedMax().zext(getBitWidth() * 2); in multiply()
1132 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in multiply()
1143 APInt Min = getSignedMin(); in smul_fast()
1144 APInt Max = getSignedMax(); in smul_fast()
1145 APInt OtherMin = Other.getSignedMin(); in smul_fast()
1146 APInt OtherMax = Other.getSignedMax(); in smul_fast()
1154 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in smul_fast()
1164 APInt NewL = APIntOps::smax(getSignedMin(), Other.getSignedMin()); in smax()
1165 APInt NewU = APIntOps::smax(getSignedMax(), Other.getSignedMax()) + 1; in smax()
1178 APInt NewL = APIntOps::umax(getUnsignedMin(), Other.getUnsignedMin()); in umax()
1179 APInt NewU = APIntOps::umax(getUnsignedMax(), Other.getUnsignedMax()) + 1; in umax()
1192 APInt NewL = APIntOps::smin(getSignedMin(), Other.getSignedMin()); in smin()
1193 APInt NewU = APIntOps::smin(getSignedMax(), Other.getSignedMax()) + 1; in smin()
1206 APInt NewL = APIntOps::umin(getUnsignedMin(), Other.getUnsignedMin()); in umin()
1207 APInt NewU = APIntOps::umin(getUnsignedMax(), Other.getUnsignedMax()) + 1; in umin()
1219 APInt Lower = getUnsignedMin().udiv(RHS.getUnsignedMax()); in udiv()
1221 APInt RHS_umin = RHS.getUnsignedMin(); in udiv()
1231 APInt Upper = getUnsignedMax().udiv(RHS_umin) + 1; in udiv()
1239 APInt Zero = APInt::getZero(getBitWidth()); in sdiv()
1240 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in sdiv()
1244 : ConstantRange(APInt(getBitWidth(), 1), SignedMin); in sdiv()
1264 APInt Lo = (NegL.Upper - 1).sdiv(NegR.Lower); in sdiv()
1269 APInt AdjNegRUpper; in sdiv()
1284 APInt AdjNegLLower; in sdiv()
1327 if (const APInt *RHSInt = RHS.getSingleElement()) { in urem()
1332 if (const APInt *LHSInt = getSingleElement()) in urem()
1341 APInt Upper = APIntOps::umin(getUnsignedMax(), RHS.getUnsignedMax() - 1) + 1; in urem()
1342 return getNonEmpty(APInt::getZero(getBitWidth()), std::move(Upper)); in urem()
1349 if (const APInt *RHSInt = RHS.getSingleElement()) { in srem()
1354 if (const APInt *LHSInt = getSingleElement()) in srem()
1359 APInt MinAbsRHS = AbsRHS.getUnsignedMin(); in srem()
1360 APInt MaxAbsRHS = AbsRHS.getUnsignedMax(); in srem()
1369 APInt MinLHS = getSignedMin(), MaxLHS = getSignedMax(); in srem()
1377 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1; in srem()
1378 return ConstantRange(APInt::getZero(getBitWidth()), std::move(Upper)); in srem()
1386 APInt Lower = APIntOps::umax(MinLHS, -MaxAbsRHS + 1); in srem()
1387 return ConstantRange(std::move(Lower), APInt(getBitWidth(), 1)); in srem()
1391 APInt Lower = APIntOps::umax(MinLHS, -MaxAbsRHS + 1); in srem()
1392 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1; in srem()
1397 return ConstantRange(APInt::getAllOnes(getBitWidth())).sub(*this); in binaryNot()
1407 getNonEmpty(APInt::getZero(getBitWidth()), in binaryAnd()
1421 APInt::getZero(getBitWidth())); in binaryOr()
1447 APInt Min = getUnsignedMin(); in shl()
1448 APInt Max = getUnsignedMax(); in shl()
1449 if (const APInt *RHS = Other.getSingleElement()) { in shl()
1458 return getNonEmpty(APInt::getZero(BW), in shl()
1459 APInt::getBitsSetFrom(BW, RHS->getZExtValue()) + 1); in shl()
1462 APInt OtherMax = Other.getUnsignedMax(); in shl()
1481 APInt max = getUnsignedMax().lshr(Other.getUnsignedMin()) + 1; in lshr()
1482 APInt min = getUnsignedMin().lshr(Other.getUnsignedMax()); in lshr()
1497 APInt PosMax = getSignedMax().ashr(Other.getUnsignedMin()) + 1; in ashr()
1504 APInt PosMin = getSignedMin().ashr(Other.getUnsignedMax()); in ashr()
1511 APInt NegMax = getSignedMax().ashr(Other.getUnsignedMax()) + 1; in ashr()
1518 APInt NegMin = getSignedMin().ashr(Other.getUnsignedMin()); in ashr()
1520 APInt max, min; in ashr()
1541 APInt NewL = getUnsignedMin().uadd_sat(Other.getUnsignedMin()); in uadd_sat()
1542 APInt NewU = getUnsignedMax().uadd_sat(Other.getUnsignedMax()) + 1; in uadd_sat()
1550 APInt NewL = getSignedMin().sadd_sat(Other.getSignedMin()); in sadd_sat()
1551 APInt NewU = getSignedMax().sadd_sat(Other.getSignedMax()) + 1; in sadd_sat()
1559 APInt NewL = getUnsignedMin().usub_sat(Other.getUnsignedMax()); in usub_sat()
1560 APInt NewU = getUnsignedMax().usub_sat(Other.getUnsignedMin()) + 1; in usub_sat()
1568 APInt NewL = getSignedMin().ssub_sat(Other.getSignedMax()); in ssub_sat()
1569 APInt NewU = getSignedMax().ssub_sat(Other.getSignedMin()) + 1; in ssub_sat()
1577 APInt NewL = getUnsignedMin().umul_sat(Other.getUnsignedMin()); in umul_sat()
1578 APInt NewU = getUnsignedMax().umul_sat(Other.getUnsignedMax()) + 1; in umul_sat()
1592 APInt Min = getSignedMin(); in smul_sat()
1593 APInt Max = getSignedMax(); in smul_sat()
1594 APInt OtherMin = Other.getSignedMin(); in smul_sat()
1595 APInt OtherMax = Other.getSignedMax(); in smul_sat()
1599 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in smul_sat()
1607 APInt NewL = getUnsignedMin().ushl_sat(Other.getUnsignedMin()); in ushl_sat()
1608 APInt NewU = getUnsignedMax().ushl_sat(Other.getUnsignedMax()) + 1; in ushl_sat()
1616 APInt Min = getSignedMin(), Max = getSignedMax(); in sshl_sat()
1617 APInt ShAmtMin = Other.getUnsignedMin(), ShAmtMax = Other.getUnsignedMax(); in sshl_sat()
1618 APInt NewL = Min.sshl_sat(Min.isNonNegative() ? ShAmtMin : ShAmtMax); in sshl_sat()
1619 APInt NewU = Max.sshl_sat(Max.isNegative() ? ShAmtMin : ShAmtMax) + 1; in sshl_sat()
1636 APInt Lo; in abs()
1639 Lo = APInt::getZero(getBitWidth()); in abs()
1645 return ConstantRange(Lo, APInt::getSignedMinValue(getBitWidth())); in abs()
1647 return ConstantRange(Lo, APInt::getSignedMinValue(getBitWidth()) + 1); in abs()
1650 APInt SMin = getSignedMin(), SMax = getSignedMax(); in abs()
1669 return ConstantRange(APInt::getZero(getBitWidth()), in abs()
1678 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedAddMayOverflow()
1679 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedAddMayOverflow()
1694 APInt Min = getSignedMin(), Max = getSignedMax(); in signedAddMayOverflow()
1695 APInt OtherMin = Other.getSignedMin(), OtherMax = Other.getSignedMax(); in signedAddMayOverflow()
1697 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in signedAddMayOverflow()
1698 APInt SignedMax = APInt::getSignedMaxValue(getBitWidth()); in signedAddMayOverflow()
1724 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedSubMayOverflow()
1725 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedSubMayOverflow()
1740 APInt Min = getSignedMin(), Max = getSignedMax(); in signedSubMayOverflow()
1741 APInt OtherMin = Other.getSignedMin(), OtherMax = Other.getSignedMax(); in signedSubMayOverflow()
1743 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in signedSubMayOverflow()
1744 APInt SignedMax = APInt::getSignedMaxValue(getBitWidth()); in signedSubMayOverflow()
1770 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedMulMayOverflow()
1771 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedMulMayOverflow()