[llvm-commits] CVS: llvm/include/llvm/Support/MathExtras.h

Jim Laskey jlaskey at apple.com
Wed Aug 17 10:28:00 PDT 2005



Changes in directory llvm/include/llvm/Support:

MathExtras.h updated: 1.23 -> 1.24
---
Log message:

Added support for converting raw bits to FP, and FP to raw bits.  The intent
is to avoid the distraction of the union declarations.



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

 MathExtras.h |   44 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 44 insertions(+)


Index: llvm/include/llvm/Support/MathExtras.h
diff -u llvm/include/llvm/Support/MathExtras.h:1.23 llvm/include/llvm/Support/MathExtras.h:1.24
--- llvm/include/llvm/Support/MathExtras.h:1.23	Wed Aug  3 15:53:19 2005
+++ llvm/include/llvm/Support/MathExtras.h	Wed Aug 17 12:27:47 2005
@@ -168,6 +168,50 @@
     return 63 - CountLeadingZeros_64(Value);
 }
 
+// BitsToDouble - This function takes a 64-bit integer and returns the bit
+// equivalent double.
+inline double BitsToDouble(uint64_t Bits) {
+  union {
+    uint64_t L;
+    double D;
+  } T;
+  T.L = Bits;
+  return T.D;
+}
+
+// BitsToFloat - This function takes a 32-bit integer and returns the bit
+// equivalent float.
+inline float BitsToFloat(unsigned Bits) {
+  union {
+    unsigned I;
+    float F;
+  } T;
+  T.I = Bits;
+  return T.F;
+}
+
+// DoubleToBits - This function takes a double and returns the bit
+// equivalent 64-bit integer.
+inline uint64_t DoubleToBits(double Double) {
+  union {
+    uint64_t L;
+    double D;
+  } T;
+  T.D = Double;
+  return T.L;
+}
+
+// FloatToBits - This function takes a float and returns the bit
+// equivalent 32-bit integer.
+inline unsigned FloatToBits(float Float) {
+  union {
+    unsigned I;
+    float F;
+  } T;
+  T.F = Float;
+  return T.I;
+}
+
 // Platform-independent wrappers for the C99 isnan() function.
 int IsNAN (float f);
 int IsNAN (double d);






More information about the llvm-commits mailing list