Laurent Vivier <laur...@vivier.eu> writes:

> Implement fmod, frem, fscale, fgetman and fgetexp.
>
> Instead of using functions of libm (v1 of this series)
> and converting between host long double and floatx80 type
> the new version (v2) adds new floatx80 functions in softfloat.

68k used 80bit float, well TIL ;-)

Just for reference Richard and I did a sprint on hacking the softfloat
last week. The results are currently brewing in:

  https://github.com/stsquad/qemu/tree/softfloat-and-arm-fp16-v2

The main push has been to decompose 16/32/64 bit floats and have a
common set of operations. This means we work with an internal 64 bit
fractional part and then just round appropriately when we pack the
result. It's a big departure from SoftFloat2a but seeing as we are not
likely to bring in changes from upstream we felt it was worth it from a
code clarity point of view.

However we have punted touching the 80bit code and any potential
quad-precision stuff to a later date, preferably when int128_t is easier
to use. Perhaps it is worth considering that option now?

>
> All the floatx80 functions are copied from "Previous",
> the NeXT Computer Emulator, and written by Andreas Grabher.
>
> Laurent Vivier (5):
>   softfloat: add floatx80_mod()
>   target/m68k: add fmod/frem
>   softfloat: use floatx80_infinity in softfloat
>   softfloat: add floatx80_getman(), floatx80_getexp(), floatx80_scale()
>   target-m68k: add fscale, fgetman and fgetexp
>
>  fpu/softfloat-specialize.h |  29 +++++
>  fpu/softfloat.c            | 258 
> ++++++++++++++++++++++++++++++++++++++++++---
>  include/fpu/softfloat.h    |  13 ++-
>  target/m68k/cpu.h          |   1 +
>  target/m68k/fpu_helper.c   |  48 +++++++++
>  target/m68k/helper.h       |   5 +
>  target/m68k/translate.c    |  15 +++
>  7 files changed, 355 insertions(+), 14 deletions(-)


--
Alex Bennée

Reply via email to