This is my SNaN patch set, Alex's float-float refactor, and a couple
of other random outstanding fpu patches. This has been reordered so
as to be bisectable, since the float-float refactor requires the snan
work to avoid breakage.
The edition of pm215/target-arm.next upon which this was built has
now been merged to master, so there are no external dependencies.
Changes since v5:
- Fix issues in the last couple of patches added for v5.
- Incorporate feedback from pm215.
Changes since n-2:
- Use v5 instead of v3, since Alex was up to v4 with float-float.
- Incorporate feedback from pm215.
- Include float128 fix from Petr.
- Include further cleanups for default_nan and silence_nan.
The first of these was inspired by a comment from pm215;
the rest follow as logical extensions.
r~
Alex Bennée (4):
target/arm: convert conversion helpers to fpst/ahp_flag
target/arm: squash FZ16 behaviour for conversions
fpu/softfloat: Partial support for ARM Alternative half-precision
fpu/softfloat: re-factor float to float conversions
Petr Tesarik (1):
fpu/softfloat: Fix conversion from uint64 to float128
Richard Henderson (23):
fpu/softfloat: Merge NO_SIGNALING_NANS definitions
fpu/softfloat: Split floatXX_silence_nan from
floatXX_maybe_silence_nan
fpu/softfloat: Move softfloat-specialize.h below FloatParts definition
fpu/softfloat: Canonicalize NaN fraction
fpu/softfloat: Introduce parts_is_snan_frac
fpu/softfloat: Replace float_class_dnan with parts_default_nan
fpu/softfloat: Replace float_class_msnan with parts_silence_nan
target/arm: Use floatX_silence_nan when we have already checked for
SNaN
target/arm: Remove floatX_maybe_silence_nan from conversions
target/hppa: Remove floatX_maybe_silence_nan from conversions
target/m68k: Use floatX_silence_nan when we have already checked for
SNaN
target/mips: Remove floatX_maybe_silence_nan from conversions
target/riscv: Remove floatX_maybe_silence_nan from conversions
target/s390x: Remove floatX_maybe_silence_nan from conversions
fpu/softfloat: Use float*_silence_nan in propagateFloat*NaN
fpu/softfloat: Remove floatX_maybe_silence_nan
fpu/softfloat: Specialize on snan_bit_is_one
fpu/softfloat: Make is_nan et al available to softfloat-specialize.h
fpu/softfloat: Pass FloatClass to pickNaN
fpu/softfloat: Pass FloatClass to pickNaNMulAdd
fpu/softfloat: Define floatN_default_nan in terms of parts_default_nan
fpu/softfloat: Clean up parts_default_nan
fpu/softfloat: Define floatN_silence_nan in terms of parts_silence_nan
fpu/softfloat-specialize.h | 691 +++++++++++++-------------------
include/fpu/softfloat-types.h | 1 +
include/fpu/softfloat.h | 18 +-
target/arm/helper.h | 10 +-
target/arm/translate.h | 12 +
fpu/softfloat.c | 726 ++++++++++++----------------------
target/arm/helper-a64.c | 7 +-
target/arm/helper.c | 114 +++---
target/arm/translate-a64.c | 37 +-
target/arm/translate.c | 74 +++-
target/hppa/cpu.c | 1 -
target/hppa/op_helper.c | 2 -
target/m68k/softfloat.c | 3 +-
target/mips/msa_helper.c | 4 -
target/mips/op_helper.c | 2 -
target/ppc/fpu_helper.c | 1 -
target/riscv/fpu_helper.c | 6 +-
target/s390x/fpu_helper.c | 12 +-
target/sh4/cpu.c | 1 -
target/unicore32/cpu.c | 2 -
20 files changed, 718 insertions(+), 1006 deletions(-)
--
2.17.0