aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Support/MathExtras.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/Support/MathExtras.h')
-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);