Patchwork [2/2] softfloat: Implement uint64_to_float128

login
register
mail settings
Submitter Richard Henderson
Date Dec. 7, 2012, 9:52 p.m.
Message ID <1354917127-29718-3-git-send-email-rth@twiddle.net>
Download mbox | patch
Permalink /patch/204612/
State New
Headers show

Comments

Richard Henderson - Dec. 7, 2012, 9:52 p.m.
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 fpu/softfloat.c | 8 ++++++++
 fpu/softfloat.h | 3 +++
 2 files changed, 11 insertions(+)
Peter Maydell - Dec. 8, 2012, 10:43 a.m.
On 7 December 2012 21:52, Richard Henderson <rth@twiddle.net> wrote:
> Signed-off-by: Richard Henderson <rth@twiddle.net>

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

-- PMM
Andreas Färber - Dec. 8, 2012, 2:53 p.m.
Am 07.12.2012 22:52, schrieb Richard Henderson:
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  fpu/softfloat.c | 8 ++++++++
>  fpu/softfloat.h | 3 +++
>  2 files changed, 11 insertions(+)
> 
> diff --git a/fpu/softfloat.c b/fpu/softfloat.c
> index 62830d7..d3290d8 100644
> --- a/fpu/softfloat.c
> +++ b/fpu/softfloat.c
> @@ -1337,6 +1337,14 @@ float128 int64_to_float128( int64 a STATUS_PARAM )
>  
>  }
>  
> +float128 uint64_to_float128( uint64 a STATUS_PARAM )

Update the parenthesis style as well? You adopted QEMU's style below.

> +{
> +    if (a == 0) {
> +        return float128_zero;
> +    }
> +    return normalizeRoundAndPackFloat128(0, 0x406E, a, 0 STATUS_VAR);
> +}
> +
>  /*----------------------------------------------------------------------------
>  | Returns the result of converting the single-precision floating-point value
>  | `a' to the 32-bit two's complement integer format.  The conversion is
> diff --git a/fpu/softfloat.h b/fpu/softfloat.h
> index d8999b3..c1ea196 100644
> --- a/fpu/softfloat.h
> +++ b/fpu/softfloat.h
> @@ -237,6 +237,7 @@ float64 int64_to_float64( int64 STATUS_PARAM );
>  float64 uint64_to_float64( uint64 STATUS_PARAM );
>  floatx80 int64_to_floatx80( int64 STATUS_PARAM );
>  float128 int64_to_float128( int64 STATUS_PARAM );
> +float128 uint64_to_float128( uint64 STATUS_PARAM );

Ditto? I would've expected checkpatch.pl complaints...

Andreas

>  
>  /*----------------------------------------------------------------------------
>  | Software half-precision conversion routines.
> @@ -630,6 +631,8 @@ INLINE int float128_is_any_nan(float128 a)
>          ((a.low != 0) || ((a.high & 0xffffffffffffLL) != 0));
>  }
>  
> +#define float128_zero make_float128(0, 0)
> +
>  /*----------------------------------------------------------------------------
>  | The pattern for a default generated quadruple-precision NaN.
>  *----------------------------------------------------------------------------*/
>

Patch

diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 62830d7..d3290d8 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -1337,6 +1337,14 @@  float128 int64_to_float128( int64 a STATUS_PARAM )
 
 }
 
+float128 uint64_to_float128( uint64 a STATUS_PARAM )
+{
+    if (a == 0) {
+        return float128_zero;
+    }
+    return normalizeRoundAndPackFloat128(0, 0x406E, a, 0 STATUS_VAR);
+}
+
 /*----------------------------------------------------------------------------
 | Returns the result of converting the single-precision floating-point value
 | `a' to the 32-bit two's complement integer format.  The conversion is
diff --git a/fpu/softfloat.h b/fpu/softfloat.h
index d8999b3..c1ea196 100644
--- a/fpu/softfloat.h
+++ b/fpu/softfloat.h
@@ -237,6 +237,7 @@  float64 int64_to_float64( int64 STATUS_PARAM );
 float64 uint64_to_float64( uint64 STATUS_PARAM );
 floatx80 int64_to_floatx80( int64 STATUS_PARAM );
 float128 int64_to_float128( int64 STATUS_PARAM );
+float128 uint64_to_float128( uint64 STATUS_PARAM );
 
 /*----------------------------------------------------------------------------
 | Software half-precision conversion routines.
@@ -630,6 +631,8 @@  INLINE int float128_is_any_nan(float128 a)
         ((a.low != 0) || ((a.high & 0xffffffffffffLL) != 0));
 }
 
+#define float128_zero make_float128(0, 0)
+
 /*----------------------------------------------------------------------------
 | The pattern for a default generated quadruple-precision NaN.
 *----------------------------------------------------------------------------*/