Add an isSignedIntN, like isIntN but for signed integer values instead of
authorDan Gohman <gohman@apple.com>
Fri, 8 Feb 2008 21:58:15 +0000 (21:58 +0000)
committerDan Gohman <gohman@apple.com>
Fri, 8 Feb 2008 21:58:15 +0000 (21:58 +0000)
unsigned.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46894 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/APInt.h

index a6ec167da3559a862802b44cae1e180b9a23169f..7fe79e2ccad2d1ad2e6864ae3d8f5b398a4b3a11 100644 (file)
@@ -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) {