qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/2] softfloat: Implement floatx80_is_any_nan()


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH 1/2] softfloat: Implement floatx80_is_any_nan() and float128_is_any_nan()
Date: Fri, 7 Jan 2011 16:28:19 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

On Thu, Jan 06, 2011 at 06:34:43PM +0000, Peter Maydell wrote:
> Implement versions of float*_is_any_nan() for the floatx80 and
> float128 types.
> 
> Signed-off-by: Peter Maydell <address@hidden>
> ---
>  fpu/softfloat.h |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/fpu/softfloat.h b/fpu/softfloat.h
> index f2104c6..ac81845 100644
> --- a/fpu/softfloat.h
> +++ b/fpu/softfloat.h
> @@ -469,6 +469,11 @@ INLINE int floatx80_is_zero(floatx80 a)
>      return (a.high & 0x7fff) == 0 && a.low == 0;
>  }
>  
> +INLINE int floatx80_is_any_nan(floatx80 a)
> +{
> +    return ((a.high & 0x7fff) == 0x7fff) && (a.low<<1);
> +}
> +
>  #endif

While this looks correct, this seems to say that our definition of
floatx80_is_quiet_nan() (for SNAN_BIT_IS_ZERO) is wrong as it is exactly
the same.

>  #ifdef FLOAT128
> @@ -536,6 +541,12 @@ INLINE int float128_is_zero(float128 a)
>      return (a.high & 0x7fffffffffffffffLL) == 0 && a.low == 0;
>  }
>  
> +INLINE int float128_is_any_nan(float128 a)
> +{
> +    return ((a.high >> 48) & 0x7fff) == 0x7fff &&
> +        ((a.low != 0) || ((a.high & 0xffffffffffffLL) != 0));
> +}
> +
>  #endif
>  
>  #else /* CONFIG_SOFTFLOAT */
> -- 
> 1.6.3.3
> 

Acked-by: Aurelien Jarno <address@hidden>

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
address@hidden                 http://www.aurel32.net



reply via email to

[Prev in Thread] Current Thread [Next in Thread]