[Qemu-devel] [PATCH v2 0/4] softfloat: Fix division

Richard Henderson posted 4 patches 5 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20181003180711.19335-1-richard.henderson@linaro.org
Test docker-clang@ubuntu failed
Test checkpatch passed
There is a newer version of this series
include/fpu/softfloat-macros.h | 35 +++++++++++++++++++++++++++++++---
fpu/softfloat.c                | 35 ++++++++++++++++++++++++++--------
2 files changed, 59 insertions(+), 11 deletions(-)
[Qemu-devel] [PATCH v2 0/4] softfloat: Fix division
Posted by Richard Henderson 5 years, 6 months ago
Changes from v1:
  * Preserve udiv_qrnnd as a separate division primitive that
    could be used as a building block for float128 division.
  * Include asm fragments for x86_64, s390x, and ppc64.


r~


Richard Henderson (4):
  softfloat: Fix division
  softfloat: Specialize udiv_qrnnd for x86_64
  softfloat: Specialize udiv_qrnnd for s390x
  softfloat: Specialize udiv_qrnnd for ppc64

 include/fpu/softfloat-macros.h | 35 +++++++++++++++++++++++++++++++---
 fpu/softfloat.c                | 35 ++++++++++++++++++++++++++--------
 2 files changed, 59 insertions(+), 11 deletions(-)

-- 
2.17.1


Re: [Qemu-devel] [PATCH v2 0/4] softfloat: Fix division
Posted by Alex Bennée 5 years, 6 months ago
Richard Henderson <richard.henderson@linaro.org> writes:

> Changes from v1:
>   * Preserve udiv_qrnnd as a separate division primitive that
>     could be used as a building block for float128 division.
>   * Include asm fragments for x86_64, s390x, and ppc64.


It passes my fops fdiv_double test but Emilio's test is reporting:

  Errors found in f64_div, rounding near_even:
  +252.7FFFFFFFFFF80  +001.FFFFFFFFFFFFE
          => +64F.7FFFFFFFFFF82 ....x  expected +64F.7FFFFFFFFFF81 ....x
  +000.FFFFFFFFFFFFF  +3FE.FFFFFFFFFFFFF
          => +001.0000000000000 ...ux  expected +000.FFFFFFFFFFFFF ...ux
  +000.FFFFFFFFFFFFF  -3FE.FFFFFFFFFFFFF
          => -001.0000000000000 ...ux  expected -000.FFFFFFFFFFFFF ...ux
  +000.FFFFFFFFFFFFE  +3FE.FFFFFFFFFFFFF
          => +000.FFFFFFFFFFFFF ...ux  expected +000.FFFFFFFFFFFFE ...ux
  +000.FFFFFFFFFFFFE  +3FF.FFFFFFFFFFFFE
          => +000.8000000000000 ...ux  expected +000.7FFFFFFFFFFFF ...ux
  +000.FFFFFFFFFFFFE  -3FE.FFFFFFFFFFFFF
          => -000.FFFFFFFFFFFFF ...ux  expected -000.FFFFFFFFFFFFE ...ux
  +000.FFFFFFFFFFFFE  -3FF.FFFFFFFFFFFFE
          => -000.8000000000000 ...ux  expected -000.7FFFFFFFFFFFF ...ux
  -401.E7D66F623CB4C  +787.FEFF7FFFFFFFE
          => -078.E8CB4F3CAEDB8 ....x  expected -078.E8CB4F3CAEDB7 ....x
  +3FC.0000000007FEF  +198.0000002000007
          => +662.FFFFFFC00FFD1 ....x  expected +662.FFFFFFC00FFD0 ....x
  -400.FFFFF8000001F  -41C.FFFFFFBFFFFDF
          => +3E2.FFFFF84000031 ....x  expected +3E2.FFFFF84000030 ....x
  -7FE.7FFFFFFFBFFFF  +3FE.FFFFFFFFFFFFE
          => -7FE.7FFFFFFFC0001 ....x  expected -7FE.7FFFFFFFC0000 ....x
  +001.FFFFFFFFFFFFE  +3FF.FFFFFFFFFFFFF
          => +001.0000000000000 ...ux  expected +000.FFFFFFFFFFFFF ...ux
  +001.FFFFFFFFFFFFE  -3FF.FFFFFFFFFFFFF
          => -001.0000000000000 ...ux  expected -000.FFFFFFFFFFFFF ...ux
  +3CA.0000000000000  +4CF.FFFFFE000001F
          => +2F9.0000010000001 ....x  expected +2F9.0000010000000 ....x
  +3FD.0000000000000  -400.000003DFFFFFF
          => -3FB.FFFFF840001E3 ....x  expected -3FB.FFFFF840001E2 ....x
  +2C6.00000000003EF  -400.0000400400000
          => -2C4.FFFF7FF82081E ....x  expected -2C4.FFFF7FF82081D ....x
  +3FD.0000000000001  -3CA.FFFFFF0001FFF
          => -431.0000007FFF006 ....x  expected -431.0000007FFF005 ....x
  -002.FFFFFFFFFFFDE  -400.FFFFFFFFFFFFF
          => +000.FFFFFFFFFFFF0 ...ux  expected +000.FFFFFFFFFFFEF ...ux
  +3FE.0000000000001  -3FF.0000001FFFFFF
          => -3FD.FFFFFFC000005 ....x  expected -3FD.FFFFFFC000004 ....x
  +3FF.0000000000000  -47E.FFFFFC00000FF
          => -37F.000001FFFFFC1 ....x  expected -37F.000001FFFFFC0 ....x

>
> r~
>
>
> Richard Henderson (4):
>   softfloat: Fix division
>   softfloat: Specialize udiv_qrnnd for x86_64
>   softfloat: Specialize udiv_qrnnd for s390x
>   softfloat: Specialize udiv_qrnnd for ppc64
>
>  include/fpu/softfloat-macros.h | 35 +++++++++++++++++++++++++++++++---
>  fpu/softfloat.c                | 35 ++++++++++++++++++++++++++--------
>  2 files changed, 59 insertions(+), 11 deletions(-)


--
Alex Bennée

Re: [Qemu-devel] [PATCH v2 0/4] softfloat: Fix division
Posted by Emilio G. Cota 5 years, 6 months ago
On Thu, Oct 04, 2018 at 10:13:55 +0100, Alex Bennée wrote:
> 
> Richard Henderson <richard.henderson@linaro.org> writes:
> 
> > Changes from v1:
> >   * Preserve udiv_qrnnd as a separate division primitive that
> >     could be used as a building block for float128 division.
> >   * Include asm fragments for x86_64, s390x, and ppc64.
> 
> It passes my fops fdiv_double test but Emilio's test is reporting:
> 
>   Errors found in f64_div, rounding near_even:
>   +252.7FFFFFFFFFF80  +001.FFFFFFFFFFFFE
>           => +64F.7FFFFFFFFFF82 ....x  expected +64F.7FFFFFFFFFF81 ....x

Did you rebuild the test program? v2 passes all f64_div tests for me.

Tested-by: Emilio G. Cota <cota@braap.org>
for patches 1 and 2.

Thanks,

		E.

Re: [Qemu-devel] [PATCH v2 0/4] softfloat: Fix division
Posted by Alex Bennée 5 years, 6 months ago
Emilio G. Cota <cota@braap.org> writes:

> On Thu, Oct 04, 2018 at 10:13:55 +0100, Alex Bennée wrote:
>>
>> Richard Henderson <richard.henderson@linaro.org> writes:
>>
>> > Changes from v1:
>> >   * Preserve udiv_qrnnd as a separate division primitive that
>> >     could be used as a building block for float128 division.
>> >   * Include asm fragments for x86_64, s390x, and ppc64.
>>
>> It passes my fops fdiv_double test but Emilio's test is reporting:
>>
>>   Errors found in f64_div, rounding near_even:
>>   +252.7FFFFFFFFFF80  +001.FFFFFFFFFFFFE
>>           => +64F.7FFFFFFFFFF82 ....x  expected +64F.7FFFFFFFFFF81 ....x
>
> Did you rebuild the test program? v2 passes all f64_div tests for me.
>
> Tested-by: Emilio G. Cota <cota@braap.org>
> for patches 1 and 2.

Hmm I did:

  make clean
  make

in the tests/fp dir multiple times while going through before/after fix
scenarios. And now of course it works....

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>


>
> Thanks,
>
> 		E.


--
Alex Bennée