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()
94 APInt UMax(CR.getUnsignedMax()); in makeAllowedICmpRegion()
97 return ConstantRange(APInt::getMinValue(W), std::move(UMax)); in makeAllowedICmpRegion()
100 APInt SMax(CR.getSignedMax()); in makeAllowedICmpRegion()
103 return ConstantRange(APInt::getSignedMinValue(W), std::move(SMax)); in makeAllowedICmpRegion()
106 return getNonEmpty(APInt::getMinValue(W), CR.getUnsignedMax() + 1); in makeAllowedICmpRegion()
108 return getNonEmpty(APInt::getSignedMinValue(W), CR.getSignedMax() + 1); in makeAllowedICmpRegion()
110 APInt UMin(CR.getUnsignedMin()); in makeAllowedICmpRegion()
113 return ConstantRange(std::move(UMin) + 1, APInt::getNullValue(W)); in makeAllowedICmpRegion()
116 APInt SMin(CR.getSignedMin()); in makeAllowedICmpRegion()
119 return ConstantRange(std::move(SMin) + 1, APInt::getSignedMinValue(W)); in makeAllowedICmpRegion()
122 return getNonEmpty(CR.getUnsignedMin(), APInt::getNullValue(W)); in makeAllowedICmpRegion()
124 return getNonEmpty(CR.getSignedMin(), APInt::getSignedMinValue(W)); in makeAllowedICmpRegion()
139 const APInt &C) { in makeExactICmpRegion()
151 APInt &RHS) const { in getEquivalentICmp()
156 RHS = APInt(getBitWidth(), 0); in getEquivalentICmp()
190 static ConstantRange makeExactMulNUWRegion(const APInt &V) { in makeExactMulNUWRegion()
196 APIntOps::RoundingUDiv(APInt::getMinValue(BitWidth), V, in makeExactMulNUWRegion()
197 APInt::Rounding::UP), in makeExactMulNUWRegion()
198 APIntOps::RoundingUDiv(APInt::getMaxValue(BitWidth), V, in makeExactMulNUWRegion()
199 APInt::Rounding::DOWN) + 1); in makeExactMulNUWRegion()
203 static ConstantRange makeExactMulNSWRegion(const APInt &V) { in makeExactMulNSWRegion()
210 APInt MinValue = APInt::getSignedMinValue(BitWidth); in makeExactMulNSWRegion()
211 APInt MaxValue = APInt::getSignedMaxValue(BitWidth); in makeExactMulNSWRegion()
216 APInt Lower, Upper; in makeExactMulNSWRegion()
218 Lower = APIntOps::RoundingSDiv(MaxValue, V, APInt::Rounding::UP); in makeExactMulNSWRegion()
219 Upper = APIntOps::RoundingSDiv(MinValue, V, APInt::Rounding::DOWN); in makeExactMulNSWRegion()
221 Lower = APIntOps::RoundingSDiv(MinValue, V, APInt::Rounding::UP); in makeExactMulNSWRegion()
222 Upper = APIntOps::RoundingSDiv(MaxValue, V, APInt::Rounding::DOWN); in makeExactMulNSWRegion()
251 return getNonEmpty(APInt::getNullValue(BitWidth), in makeGuaranteedNoWrapRegion()
254 APInt SignedMinVal = APInt::getSignedMinValue(BitWidth); in makeGuaranteedNoWrapRegion()
255 APInt SMin = Other.getSignedMin(), SMax = Other.getSignedMax(); in makeGuaranteedNoWrapRegion()
263 return getNonEmpty(Other.getUnsignedMax(), APInt::getMinValue(BitWidth)); in makeGuaranteedNoWrapRegion()
265 APInt SignedMinVal = APInt::getSignedMinValue(BitWidth); in makeGuaranteedNoWrapRegion()
266 APInt SMin = Other.getSignedMin(), SMax = Other.getSignedMax(); in makeGuaranteedNoWrapRegion()
283 ConstantRange(APInt(BitWidth, 0), APInt(BitWidth, (BitWidth - 1) + 1))); in makeGuaranteedNoWrapRegion()
292 APInt ShAmtUMax = ShAmt.getUnsignedMax(); in makeGuaranteedNoWrapRegion()
294 return getNonEmpty(APInt::getNullValue(BitWidth), in makeGuaranteedNoWrapRegion()
295 APInt::getMaxValue(BitWidth).lshr(ShAmtUMax) + 1); in makeGuaranteedNoWrapRegion()
296 return getNonEmpty(APInt::getSignedMinValue(BitWidth).ashr(ShAmtUMax), in makeGuaranteedNoWrapRegion()
297 APInt::getSignedMaxValue(BitWidth).ashr(ShAmtUMax) + 1); in makeGuaranteedNoWrapRegion()
303 const APInt &Other, in makeExactNoWrapRegion()
350 return APInt::getMaxValue(getBitWidth()).ugt(MaxSize - 1); in isSizeLargerThan()
370 APInt ConstantRange::getUnsignedMax() const { in getUnsignedMax()
372 return APInt::getMaxValue(getBitWidth()); in getUnsignedMax()
376 APInt ConstantRange::getUnsignedMin() const { in getUnsignedMin()
378 return APInt::getMinValue(getBitWidth()); in getUnsignedMin()
382 APInt ConstantRange::getSignedMax() const { in getSignedMax()
384 return APInt::getSignedMaxValue(getBitWidth()); in getSignedMax()
388 APInt ConstantRange::getSignedMin() const { in getSignedMin()
390 return APInt::getSignedMinValue(getBitWidth()); in getSignedMin()
394 bool ConstantRange::contains(const APInt &V) const { in contains()
436 ConstantRange ConstantRange::subtract(const APInt &Val) const { in subtract()
595 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower; in unionWith()
596 APInt U = (CR.Upper - 1).ugt(Upper - 1) ? CR.Upper : Upper; in unionWith()
641 APInt L = CR.Lower.ult(Lower) ? CR.Lower : Lower; in unionWith()
642 APInt U = CR.Upper.ugt(Upper) ? CR.Upper : Upper; in unionWith()
669 APInt Min = APInt::getMinValue(BW).zextOrSelf(ResultBitWidth); in castOp()
670 APInt Max = APInt::getMaxValue(BW).zextOrSelf(ResultBitWidth); in castOp()
676 APInt SMin = APInt::getSignedMinValue(BW).sextOrSelf(ResultBitWidth); in castOp()
677 APInt SMax = APInt::getSignedMaxValue(BW).sextOrSelf(ResultBitWidth); in castOp()
697 APInt LowerExt(DstTySize, 0); in zeroExtend()
701 APInt::getOneBitSet(DstTySize, SrcTySize)); in zeroExtend()
718 return ConstantRange(APInt::getHighBitsSet(DstTySize,DstTySize-SrcTySize+1), in signExtend()
719 APInt::getLowBitsSet(DstTySize, SrcTySize-1) + 1); in signExtend()
732 APInt LowerDiv(Lower), UpperDiv(Upper); in truncate()
745 Union = ConstantRange(APInt::getMaxValue(DstTySize),Upper.trunc(DstTySize)); in truncate()
757 APInt Adjust = LowerDiv & APInt::getBitsSetFrom(getBitWidth(), DstTySize); in truncate()
896 const APInt *IntMinIsPoison = Ops[1].getSingleElement(); in intrinsic()
914 APInt NewLower = getLower() + Other.getLower(); in add()
915 APInt NewUpper = getUpper() + Other.getUpper() - 1; in add()
961 APInt NewLower = getLower() - Other.getUpper() + 1; in sub()
962 APInt NewUpper = getUpper() - Other.getLower(); in sub()
1021 APInt this_min = getUnsignedMin().zext(getBitWidth() * 2); in multiply()
1022 APInt this_max = getUnsignedMax().zext(getBitWidth() * 2); in multiply()
1023 APInt Other_min = Other.getUnsignedMin().zext(getBitWidth() * 2); in multiply()
1024 APInt Other_max = Other.getUnsignedMax().zext(getBitWidth() * 2); in multiply()
1051 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in multiply()
1064 APInt NewL = APIntOps::smax(getSignedMin(), Other.getSignedMin()); in smax()
1065 APInt NewU = APIntOps::smax(getSignedMax(), Other.getSignedMax()) + 1; in smax()
1078 APInt NewL = APIntOps::umax(getUnsignedMin(), Other.getUnsignedMin()); in umax()
1079 APInt NewU = APIntOps::umax(getUnsignedMax(), Other.getUnsignedMax()) + 1; in umax()
1092 APInt NewL = APIntOps::smin(getSignedMin(), Other.getSignedMin()); in smin()
1093 APInt NewU = APIntOps::smin(getSignedMax(), Other.getSignedMax()) + 1; in smin()
1106 APInt NewL = APIntOps::umin(getUnsignedMin(), Other.getUnsignedMin()); in umin()
1107 APInt NewU = APIntOps::umin(getUnsignedMax(), Other.getUnsignedMax()) + 1; in umin()
1119 APInt Lower = getUnsignedMin().udiv(RHS.getUnsignedMax()); in udiv()
1121 APInt RHS_umin = RHS.getUnsignedMin(); in udiv()
1131 APInt Upper = getUnsignedMax().udiv(RHS_umin) + 1; in udiv()
1139 APInt Zero = APInt::getNullValue(getBitWidth()); in sdiv()
1140 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in sdiv()
1141 ConstantRange PosFilter(APInt(getBitWidth(), 1), SignedMin); in sdiv()
1161 APInt Lo = (NegL.Upper - 1).sdiv(NegR.Lower); in sdiv()
1166 APInt AdjNegRUpper; in sdiv()
1181 APInt AdjNegLLower; in sdiv()
1229 APInt Upper = APIntOps::umin(getUnsignedMax(), RHS.getUnsignedMax() - 1) + 1; in urem()
1230 return getNonEmpty(APInt::getNullValue(getBitWidth()), std::move(Upper)); in urem()
1238 APInt MinAbsRHS = AbsRHS.getUnsignedMin(); in srem()
1239 APInt MaxAbsRHS = AbsRHS.getUnsignedMax(); in srem()
1248 APInt MinLHS = getSignedMin(), MaxLHS = getSignedMax(); in srem()
1256 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1; in srem()
1257 return ConstantRange(APInt::getNullValue(getBitWidth()), std::move(Upper)); in srem()
1265 APInt Lower = APIntOps::umax(MinLHS, -MaxAbsRHS + 1); in srem()
1266 return ConstantRange(std::move(Lower), APInt(getBitWidth(), 1)); in srem()
1270 APInt Lower = APIntOps::umax(MinLHS, -MaxAbsRHS + 1); in srem()
1271 APInt Upper = APIntOps::umin(MaxLHS, MaxAbsRHS - 1) + 1; in srem()
1276 return ConstantRange(APInt::getAllOnesValue(getBitWidth())).sub(*this); in binaryNot()
1290 APInt umin = APIntOps::umin(Other.getUnsignedMax(), getUnsignedMax()); in binaryAnd()
1291 return getNonEmpty(APInt::getNullValue(getBitWidth()), std::move(umin) + 1); in binaryAnd()
1305 APInt umax = APIntOps::umax(getUnsignedMin(), Other.getUnsignedMin()); in binaryOr()
1306 return getNonEmpty(std::move(umax), APInt::getNullValue(getBitWidth())); in binaryOr()
1332 APInt max = getUnsignedMax(); in shl()
1333 APInt Other_umax = Other.getUnsignedMax(); in shl()
1345 APInt min = getUnsignedMin(); in shl()
1357 APInt max = getUnsignedMax().lshr(Other.getUnsignedMin()) + 1; in lshr()
1358 APInt min = getUnsignedMin().lshr(Other.getUnsignedMax()); in lshr()
1373 APInt PosMax = getSignedMax().ashr(Other.getUnsignedMin()) + 1; in ashr()
1380 APInt PosMin = getSignedMin().ashr(Other.getUnsignedMax()); in ashr()
1387 APInt NegMax = getSignedMax().ashr(Other.getUnsignedMax()) + 1; in ashr()
1394 APInt NegMin = getSignedMin().ashr(Other.getUnsignedMin()); in ashr()
1396 APInt max, min; in ashr()
1417 APInt NewL = getUnsignedMin().uadd_sat(Other.getUnsignedMin()); in uadd_sat()
1418 APInt NewU = getUnsignedMax().uadd_sat(Other.getUnsignedMax()) + 1; in uadd_sat()
1426 APInt NewL = getSignedMin().sadd_sat(Other.getSignedMin()); in sadd_sat()
1427 APInt NewU = getSignedMax().sadd_sat(Other.getSignedMax()) + 1; in sadd_sat()
1435 APInt NewL = getUnsignedMin().usub_sat(Other.getUnsignedMax()); in usub_sat()
1436 APInt NewU = getUnsignedMax().usub_sat(Other.getUnsignedMin()) + 1; in usub_sat()
1444 APInt NewL = getSignedMin().ssub_sat(Other.getSignedMax()); in ssub_sat()
1445 APInt NewU = getSignedMax().ssub_sat(Other.getSignedMin()) + 1; in ssub_sat()
1453 APInt NewL = getUnsignedMin().umul_sat(Other.getUnsignedMin()); in umul_sat()
1454 APInt NewU = getUnsignedMax().umul_sat(Other.getUnsignedMax()) + 1; in umul_sat()
1468 APInt this_min = getSignedMin().sext(getBitWidth() * 2); in smul_sat()
1469 APInt this_max = getSignedMax().sext(getBitWidth() * 2); in smul_sat()
1470 APInt Other_min = Other.getSignedMin().sext(getBitWidth() * 2); in smul_sat()
1471 APInt Other_max = Other.getSignedMax().sext(getBitWidth() * 2); in smul_sat()
1475 auto Compare = [](const APInt &A, const APInt &B) { return A.slt(B); }; in smul_sat()
1488 APInt NewL = getUnsignedMin().ushl_sat(Other.getUnsignedMin()); in ushl_sat()
1489 APInt NewU = getUnsignedMax().ushl_sat(Other.getUnsignedMax()) + 1; in ushl_sat()
1497 APInt Min = getSignedMin(), Max = getSignedMax(); in sshl_sat()
1498 APInt ShAmtMin = Other.getUnsignedMin(), ShAmtMax = Other.getUnsignedMax(); in sshl_sat()
1499 APInt NewL = Min.sshl_sat(Min.isNonNegative() ? ShAmtMin : ShAmtMax); in sshl_sat()
1500 APInt NewU = Max.sshl_sat(Max.isNegative() ? ShAmtMin : ShAmtMax) + 1; in sshl_sat()
1517 APInt Lo; in abs()
1520 Lo = APInt::getNullValue(getBitWidth()); in abs()
1526 return ConstantRange(Lo, APInt::getSignedMinValue(getBitWidth())); in abs()
1528 return ConstantRange(Lo, APInt::getSignedMinValue(getBitWidth()) + 1); in abs()
1531 APInt SMin = getSignedMin(), SMax = getSignedMax(); in abs()
1550 return ConstantRange(APInt::getNullValue(getBitWidth()), in abs()
1559 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedAddMayOverflow()
1560 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedAddMayOverflow()
1575 APInt Min = getSignedMin(), Max = getSignedMax(); in signedAddMayOverflow()
1576 APInt OtherMin = Other.getSignedMin(), OtherMax = Other.getSignedMax(); in signedAddMayOverflow()
1578 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in signedAddMayOverflow()
1579 APInt SignedMax = APInt::getSignedMaxValue(getBitWidth()); in signedAddMayOverflow()
1605 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedSubMayOverflow()
1606 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedSubMayOverflow()
1621 APInt Min = getSignedMin(), Max = getSignedMax(); in signedSubMayOverflow()
1622 APInt OtherMin = Other.getSignedMin(), OtherMax = Other.getSignedMax(); in signedSubMayOverflow()
1624 APInt SignedMin = APInt::getSignedMinValue(getBitWidth()); in signedSubMayOverflow()
1625 APInt SignedMax = APInt::getSignedMaxValue(getBitWidth()); in signedSubMayOverflow()
1651 APInt Min = getUnsignedMin(), Max = getUnsignedMax(); in unsignedMulMayOverflow()
1652 APInt OtherMin = Other.getUnsignedMin(), OtherMax = Other.getUnsignedMax(); in unsignedMulMayOverflow()