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