[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 3/4] softfloat: Revert and reimplement remain
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v2 3/4] softfloat: Revert and reimplement remaining parts of b645bb4885 and 5a6932d51d |
Date: |
Thu, 29 Jan 2015 16:46:33 +0000 |
On 12 January 2015 at 14:38, Peter Maydell <address@hidden> wrote:
> Revert the parts of commits b645bb4885 and 5a6932d51d which are still
> in the codebase and under a SoftFloat-2b license.
>
> Reimplement support for architectures where the most significant bit
> in the mantissa is 1 for a signaling NaN rather than a quiet NaN,
> by adding handling for SNAN_BIT_IS_ONE being set to the functions
> which test values for NaN-ness.
>
> This includes restoring the bugfixes lost in the reversion where
> some of the float*_is_quiet_nan() functions were returning true
> for both signaling and quiet NaNs.
>
> [This is a mechanical squashing together of two separate "revert"
> and "reimplement" patches.]
> @@ -1029,13 +1031,12 @@ int float128_is_signaling_nan(float128 a_)
> int float128_is_quiet_nan( float128 a )
> {
> #if SNAN_BIT_IS_ONE
> - return
> - ( ( ( a.high>>47 ) & 0xFFFF ) == 0xFFFE )
> - && ( a.low || ( a.high & LIT64( 0x00007FFFFFFFFFFF ) ) );
> + return (((a.high >> 47) & 0xffff) == 0xfffe)
> + && (a.low || (a.high & 0x00007fffffffffffULL));
> #else
> return
> - ( LIT64( 0xFFFE000000000000 ) <= (uint64_t) ( a.high<<1 ) )
> - && ( a.low || ( a.high & LIT64( 0x0000FFFFFFFFFFFF ) ) );
> + ((a.high << 1) >= 0xffff000000000000)
> + && (a.low || (a.high & 0x0000ffffffffffffULL));
> #endif
> }
>
> @@ -1048,8 +1049,8 @@ int float128_is_signaling_nan( float128 a )
> {
> #if SNAN_BIT_IS_ONE
> return
> - ( LIT64( 0xFFFE000000000000 ) <= (uint64_t) ( a.high<<1 ) )
> - && ( a.low || ( a.high & LIT64( 0x0000FFFFFFFFFFFF ) ) );
> + ((a.high << 1) >= 0xffff000000000000)
> + && (a.low || (a.high & 0x0000ffffffffffffULL));
> #else
> return
> ( ( ( a.high>>47 ) & 0xFFFF ) == 0xFFFE )
These hunks turn out to be missing some "ULL" suffixes on the
"0xffff000000000000" constants, which makes the Windows build
complain. I'm going to fold the trivial fix in as I apply.
-- PMM
- [Qemu-devel] [PATCH v2 0/4] relicense QEMU softfloat from 2b to to 2a, Peter Maydell, 2015/01/12
- [Qemu-devel] [PATCH v2 1/4] softfloat: Apply patch corresponding to rebasing to softfloat-2a, Peter Maydell, 2015/01/12
- [Qemu-devel] [PATCH v2 4/4] softfloat: Clarify license status, Peter Maydell, 2015/01/12
- [Qemu-devel] [PATCH v2 2/4] softfloat: Revert and reimplement remaining portions of 75d62a5856 and 3430b0be36f, Peter Maydell, 2015/01/12
- [Qemu-devel] [PATCH v2 3/4] softfloat: Revert and reimplement remaining parts of b645bb4885 and 5a6932d51d, Peter Maydell, 2015/01/12
- Re: [Qemu-devel] [PATCH v2 3/4] softfloat: Revert and reimplement remaining parts of b645bb4885 and 5a6932d51d,
Peter Maydell <=
- Re: [Qemu-devel] [PATCH v2 0/4] relicense QEMU softfloat from 2b to to 2a, Peter Maydell, 2015/01/26