[llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h
Chris Lattner
clattner at apple.com
Thu Mar 1 14:50:31 PST 2007
> Add bitsToDouble and bitsToFloat methods for re-interpretation of
> bits as FP.
Likewise, these shouldn't be needed.
-Chris
> ---
> Diffs of the changes: (+26 -0)
>
> APInt.h | 26 ++++++++++++++++++++++++++
> 1 files changed, 26 insertions(+)
>
>
> Index: llvm/include/llvm/ADT/APInt.h
> diff -u llvm/include/llvm/ADT/APInt.h:1.32 llvm/include/llvm/ADT/
> APInt.h:1.33
> --- llvm/include/llvm/ADT/APInt.h:1.32 Thu Mar 1 11:15:32 2007
> +++ llvm/include/llvm/ADT/APInt.h Thu Mar 1 14:06:51 2007
> @@ -697,6 +697,32 @@
> return roundToDouble(true);
> }
>
> + /// The conversion does not do a translation from integer to
> double, it just
> + /// re-interprets the bits as a double. Note that it is valid to
> do this on
> + /// any bit width. Exactly 64 bits will be translated.
> + /// @brief Converts APInt bits to a double
> + double bitsToDouble() const {
> + union {
> + uint64_t I;
> + double D;
> + } T;
> + T.I = (isSingleWord() ? VAL : pVal[0]);
> + return T.D;
> + }
> +
> + /// The conversion does not do a translation from integer to
> float, it just
> + /// re-interprets the bits as a float. Note that it is valid to
> do this on
> + /// any bit width. Exactly 32 bits will be translated.
> + /// @brief Converts APInt bits to a double
> + float bitsToFloat() const {
> + union {
> + uint32_t I;
> + float F;
> + } T;
> + T.I = uint32_t((isSingleWord() ? VAL : pVal[0]));
> + return T.F;
> + }
> +
> /// @brief Compute the square root
> APInt sqrt() const;
> };
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list