mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
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:
parent
bb9723bd98
commit
53ee4f9d40
@ -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;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user