While looking at some float_status usage, I got distracted by some odd looking hexagon code. With some minor additions to softfloat, we can handle all of the special cases.
I have a feeling that dfmpyhh can also be simplified, but I don't quite grok the accumulator in this case. It appears to be integral value, added into the middle of the floating-point partial product? r~ Richard Henderson (17): softfloat: Add float{16,32,64}_muladd_scalbn target/arm: Use float*_muladd_scalbn target/sparc: Use float*_muladd_scalbn softfloat: Remove float_muladd_halve_result softfloat: Add float_round_nearest_even_max softfloat: Add float_muladd_suppress_add_product_zero target/hexagon: Use float32_mul in helper_sfmpy target/hexagon: Use float32_muladd for helper_sffma target/hexagon: Use float32_muladd for helper_sffms target/hexagon: Use float32_muladd_scalbn for helper_sffma_sc target/hexagon: Use float32_muladd for helper_sffm[as]_lib target/hexagon: Remove internal_fmafx target/hexagon: Expand GEN_XF_ROUND target/hexagon: Remove Float target/hexagon: Remove Double target/hexagon: Use mulu64 for int128_mul_6464 target/hexagon: Simplify internal_mpyhh setup include/fpu/softfloat-types.h | 2 + include/fpu/softfloat.h | 14 +- target/hexagon/fma_emu.h | 3 - target/sparc/helper.h | 4 +- fpu/softfloat.c | 64 ++--- target/arm/tcg/helper-a64.c | 6 +- target/hexagon/fma_emu.c | 494 +++++++++------------------------- target/hexagon/op_helper.c | 125 +++------ target/sparc/fop_helper.c | 8 +- target/sparc/translate.c | 80 +++--- fpu/softfloat-parts.c.inc | 16 +- 11 files changed, 277 insertions(+), 539 deletions(-) -- 2.43.0