[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