aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Laskey <jlaskey@mac.com>2005-08-17 17:27:47 +0000
committerJim Laskey <jlaskey@mac.com>2005-08-17 17:27:47 +0000
commit59b8fcfa5f736dff4a08ebcac032935b6fd92f34 (patch)
treeef971992d53fa908838320910ba39d54246b8209
parent9d6c45bdd71cfa6d0aace1a3d2da82d7351010eb (diff)
Added support for converting raw bits to FP, and FP to raw bits. The intent
is to avoid the distraction of the union declarations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22830 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Support/MathExtras.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/include/llvm/Support/MathExtras.h b/include/llvm/Support/MathExtras.h
index ae3f752cc7..3dcb3a3972 100644
--- a/include/llvm/Support/MathExtras.h
+++ b/include/llvm/Support/MathExtras.h
@@ -168,6 +168,50 @@ inline unsigned Log2_64(uint64_t Value) {
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);