[llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h

Reid Spencer reid at x10sys.com
Thu Mar 1 12:39:18 PST 2007



Changes in directory llvm/include/llvm/ADT:

APInt.h updated: 1.33 -> 1.34
---
Log message:

Add doubleToBits and floatToBits methods.


---
Diffs of the changes:  (+34 -0)

 APInt.h |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+)


Index: llvm/include/llvm/ADT/APInt.h
diff -u llvm/include/llvm/ADT/APInt.h:1.33 llvm/include/llvm/ADT/APInt.h:1.34
--- llvm/include/llvm/ADT/APInt.h:1.33	Thu Mar  1 14:06:51 2007
+++ llvm/include/llvm/ADT/APInt.h	Thu Mar  1 14:39:01 2007
@@ -723,6 +723,40 @@
     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;
 };






More information about the llvm-commits mailing list