mbox series

[v2,0/4] softfloat: Fix division

Message ID 20181003180711.19335-1-richard.henderson@linaro.org
Headers show
Series softfloat: Fix division | expand

Message

Richard Henderson Oct. 3, 2018, 6:07 p.m. UTC
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

Comments

Alex Bennée Oct. 4, 2018, 9:13 a.m. UTC | #1
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
Emilio Cota Oct. 4, 2018, 2:55 p.m. UTC | #2
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.
Alex Bennée Oct. 4, 2018, 3:43 p.m. UTC | #3
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