diff --git a/include/llvm/ADT/APInt.h b/include/llvm/ADT/APInt.h index a6ec167da35..7fe79e2ccad 100644 --- a/include/llvm/ADT/APInt.h +++ b/include/llvm/ADT/APInt.h @@ -280,7 +280,7 @@ public: isNegative() && countPopulation() == 1; } - /// @brief Check if this APInt has an N-bits integer value. + /// @brief Check if this APInt has an N-bits unsigned integer value. inline bool isIntN(uint32_t N) const { assert(N && "N == 0 ???"); if (isSingleWord()) { @@ -291,6 +291,12 @@ public: } } + /// @brief Check if this APInt has an N-bits signed integer value. + inline bool isSignedIntN(uint32_t N) const { + assert(N && "N == 0 ???"); + return getMinSignedBits() <= N; + } + /// @returns true if the argument APInt value is a power of two > 0. bool isPowerOf2() const; @@ -1221,11 +1227,16 @@ inline APInt umax(const APInt &A, const APInt &B) { return A.ugt(B) ? A : B; } -/// @brief Check if the specified APInt has a N-bits integer value. +/// @brief Check if the specified APInt has a N-bits unsigned integer value. inline bool isIntN(uint32_t N, const APInt& APIVal) { return APIVal.isIntN(N); } +/// @brief Check if the specified APInt has a N-bits signed integer value. +inline bool isSignedIntN(uint32_t N, const APInt& APIVal) { + return APIVal.isSignedIntN(N); +} + /// @returns true if the argument APInt value is a sequence of ones /// starting at the least significant bit with the remainder zero. inline bool isMask(uint32_t numBits, const APInt& APIVal) {