Add doubleToBits and floatToBits methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34807 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer 2007-03-01 20:39:01 +00:00
parent bb9723bd98
commit 53ee4f9d40

View File

@ -723,6 +723,40 @@ public:
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;
};