[llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h
Reid Spencer
reid at x10sys.com
Thu Mar 1 12:39:18 PST 2007
Changes in directory llvm/include/llvm/ADT:
APInt.h updated: 1.33 -> 1.34
---
Log message:
Add doubleToBits and floatToBits methods.
---
Diffs of the changes: (+34 -0)
APInt.h | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+)
Index: llvm/include/llvm/ADT/APInt.h
diff -u llvm/include/llvm/ADT/APInt.h:1.33 llvm/include/llvm/ADT/APInt.h:1.34
--- llvm/include/llvm/ADT/APInt.h:1.33 Thu Mar 1 14:06:51 2007
+++ llvm/include/llvm/ADT/APInt.h Thu Mar 1 14:39:01 2007
@@ -723,6 +723,40 @@
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;
};
More information about the llvm-commits
mailing list