Major changes: (1) Get rid of the env->qt[01] temporaries and use TCGv_i128 for float128. (2) Perform ieee exception check within the helpers, before any writeback to the floating point registers. (3) Split env->fsr into pieces to simplify update, especially compares.
r~ Based-on: 20231101041132.174501-1-richard.hender...@linaro.org ("[PATCH v2 00/21] target/sparc: Cleanup condition codes etc") Richard Henderson (22): target/sparc: Use tcg_gen_qemu_{ld,st}_i128 for ASI_M_BCOPY target/sparc: Use tcg_gen_qemu_{ld,st}_i128 for ASI_M_BFILL target/sparc: Remove gen_dest_fpr_F target/sparc: Introduce gen_{load,store}_fpr_Q target/sparc: Inline FNEG, FABS target/sparc: Use i128 for FSQRTq target/sparc: Use i128 for FADDq, FSUBq, FMULq, FDIVq target/sparc: Use i128 for FqTOs, FqTOi target/sparc: Use i128 for FqTOd, FqTOx target/sparc: Use i128 for FCMPq, FCMPEq target/sparc: Use i128 for FsTOq, FiTOq target/sparc: Use i128 for FdTOq, FxTOq target/sparc: Use i128 for Fdmulq target/sparc: Remove qt0, qt1 temporaries target/sparc: Introduce cpu_get_fsr, cpu_put_fsr target/split: Split ver from env->fsr target/sparc: Clear cexc and ftt in do_check_ieee_exceptions target/sparc: Merge check_ieee_exceptions with FPop helpers target/sparc: Split cexc and ftt from env->fsr target/sparc: Remove cpu_fsr target/sparc: Split fcc out of env->fsr target/sparc: Remove FSR_FTT_NMASK, FSR_FTT_CEXC_NMASK target/sparc/cpu.h | 39 +- target/sparc/helper.h | 116 ++---- linux-user/sparc/cpu_loop.c | 2 +- linux-user/sparc/signal.c | 14 +- target/sparc/cpu.c | 32 +- target/sparc/fop_helper.c | 510 +++++++++++++---------- target/sparc/gdbstub.c | 8 +- target/sparc/ldst_helper.c | 3 - target/sparc/machine.c | 38 +- target/sparc/translate.c | 799 ++++++++++++------------------------ 10 files changed, 680 insertions(+), 881 deletions(-) -- 2.34.1