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