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
This commit is contained in:
Jim Laskey 2005-08-17 17:27:47 +00:00
parent 9d6c45bdd7
commit 59b8fcfa5f

View File

@ -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);