Add doubleToBits and floatToBits methods.
authorReid Spencer <rspencer@reidspencer.com>
Thu, 1 Mar 2007 20:39:01 +0000 (20:39 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Thu, 1 Mar 2007 20:39:01 +0000 (20:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34807 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/APInt.h

index 7614c688c3b7352fe5ce29480ee189f499bdfd77..15652a2b71b868f2a1b11cc8998c317c0c7f4844 100644 (file)
@@ -723,6 +723,40 @@ public:
     return T.F;
   }
 
+  /// The conversion does not do a translation from double to integer, it just
+  /// re-interprets the bits of the double. Note that it is valid to do this on
+  /// any bit width but bits from V may get truncated.
+  /// @brief Converts a double to APInt bits.
+  APInt& doubleToBits(double V) {
+    union {
+      uint64_t I;
+      double D;
+    } T;
+    T.D = V;
+    if (isSingleWord())
+      VAL = T.I;
+    else
+      pVal[0] = T.I;
+    return clearUnusedBits();
+  }
+
+  /// The conversion does not do a translation from float to integer, it just
+  /// re-interprets the bits of the float. Note that it is valid to do this on
+  /// any bit width but bits from V may get truncated.
+  /// @brief Converts a float to APInt bits.
+  APInt& floatToBits(float V) {
+    union {
+      uint32_t I;
+      float F;
+    } T;
+    T.F = V;
+    if (isSingleWord())
+      VAL = T.I;
+    else
+      pVal[0] = T.I;
+    return clearUnusedBits();
+  }
+
   /// @brief Compute the square root
   APInt sqrt() const;
 };