git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116455
91177308-0d34-0410-b5e6-
96231b3b80d8
// Operations that return overflow indicators.
// ssub_ov - Signed subtraction. Unsigned subtraction never overflows.
// Operations that return overflow indicators.
// ssub_ov - Signed subtraction. Unsigned subtraction never overflows.
- APInt sadd_ov(const APInt &RHS, bool &Overflow);
- APInt ssub_ov(const APInt &RHS, bool &Overflow);
- APInt sdiv_ov(const APInt &RHS, bool &Overflow);
- APInt smul_ov(const APInt &RHS, bool &Overflow);
+ APInt sadd_ov(const APInt &RHS, bool &Overflow) const;
+ APInt ssub_ov(const APInt &RHS, bool &Overflow) const;
+ APInt sdiv_ov(const APInt &RHS, bool &Overflow) const;
+ APInt smul_ov(const APInt &RHS, bool &Overflow) const;
APInt sshl_ov(unsigned Amt, bool &Overflow);
/// @returns the bit value at bitPosition
APInt sshl_ov(unsigned Amt, bool &Overflow);
/// @returns the bit value at bitPosition
divide(LHS, lhsWords, RHS, rhsWords, &Quotient, &Remainder);
}
divide(LHS, lhsWords, RHS, rhsWords, &Quotient, &Remainder);
}
-APInt APInt::sadd_ov(const APInt &RHS, bool &Overflow) {
+APInt APInt::sadd_ov(const APInt &RHS, bool &Overflow) const {
APInt Res = *this+RHS;
Overflow = isNonNegative() == RHS.isNonNegative() &&
Res.isNonNegative() != isNonNegative();
return Res;
}
APInt Res = *this+RHS;
Overflow = isNonNegative() == RHS.isNonNegative() &&
Res.isNonNegative() != isNonNegative();
return Res;
}
-APInt APInt::ssub_ov(const APInt &RHS, bool &Overflow) {
+APInt APInt::ssub_ov(const APInt &RHS, bool &Overflow) const {
APInt Res = *this - RHS;
Overflow = isNonNegative() != RHS.isNonNegative() &&
Res.isNonNegative() != isNonNegative();
return Res;
}
APInt Res = *this - RHS;
Overflow = isNonNegative() != RHS.isNonNegative() &&
Res.isNonNegative() != isNonNegative();
return Res;
}
-APInt APInt::sdiv_ov(const APInt &RHS, bool &Overflow) {
+APInt APInt::sdiv_ov(const APInt &RHS, bool &Overflow) const {
// MININT/-1 --> overflow.
Overflow = isMinSignedValue() && RHS.isAllOnesValue();
return sdiv(RHS);
}
// MININT/-1 --> overflow.
Overflow = isMinSignedValue() && RHS.isAllOnesValue();
return sdiv(RHS);
}
-APInt APInt::smul_ov(const APInt &RHS, bool &Overflow) {
+APInt APInt::smul_ov(const APInt &RHS, bool &Overflow) const {
APInt Res = *this * RHS;
if (*this != 0 && RHS != 0)
APInt Res = *this * RHS;
if (*this != 0 && RHS != 0)
-APInt APInt::sshl_ov(unsigned ShAmt, bool &Overflow) {
+APInt APInt::sshl_ov(unsigned ShAmt, bool &Overflow) const {
Overflow = ShAmt >= getBitWidth();
if (Overflow)
ShAmt = getBitWidth()-1;
Overflow = ShAmt >= getBitWidth();
if (Overflow)
ShAmt = getBitWidth()-1;