Add AVX2 VPMOVMASK instructions and intrinsics.
[oota-llvm.git] / include / llvm / ADT / APSInt.h
index 6fef4c7a0d0cb1a10921dcc75e7d7f828d73f398..54a7b601d1f1e20d05fdf636c98d911df9f58311 100644 (file)
@@ -59,7 +59,7 @@ public:
 
   /// toString - Append this APSInt to the specified SmallString.
   void toString(SmallVectorImpl<char> &Str, unsigned Radix = 10) const {
-    return APInt::toString(Str, Radix, isSigned());
+    APInt::toString(Str, Radix, isSigned());
   }
   /// toString - Converts an APInt to a std::string.  This is an inefficient
   /// method, your should prefer passing in a SmallString instead.
@@ -68,20 +68,22 @@ public:
   }
   using APInt::toString;
 
-  APSInt& extend(uint32_t width) {
+  APSInt trunc(uint32_t width) const {
+    return APSInt(APInt::trunc(width), IsUnsigned);
+  }
+
+  APSInt extend(uint32_t width) const {
     if (IsUnsigned)
-      zext(width);
+      return APSInt(zext(width), IsUnsigned);
     else
-      sext(width);
-    return *this;
+      return APSInt(sext(width), IsUnsigned);
   }
 
-  APSInt& extOrTrunc(uint32_t width) {
+  APSInt extOrTrunc(uint32_t width) const {
       if (IsUnsigned)
-        zextOrTrunc(width);
+        return APSInt(zextOrTrunc(width), IsUnsigned);
       else
-        sextOrTrunc(width);
-      return *this;
+        return APSInt(sextOrTrunc(width), IsUnsigned);
   }
 
   const APSInt &operator%=(const APSInt &RHS) {
@@ -150,7 +152,7 @@ public:
     return *this;
   }
   APSInt& operator--() {
-    static_cast<APInt&>(*this)++;
+    static_cast<APInt&>(*this)--;
     return *this;
   }
   APSInt operator++(int) {