Second part of patches submitted in the v3. This series adds a subset of single precision and double precision instructions using set_floatx80_rounding_precision() to round the result.
For some other instructions, we introduce a new function, floatx80_round(), to round them manually. It also adds instructions fsglmul, fsgldiv, fmovecr and fscc (since v3, use tcg_gen_setcond()) fmovem manages static and dynamic register list, all the code has been moved to an helper. v4: Update floatx80_round() comment (and add Aurélien's R-b) Add a comment for undefined fmovecr offsets update gen_fcc_cond() with more fixes from Richard v3: Remove extra space in fmovem patch truncate operands of fsglmul and fslgdiv update gen_fcc_cond() as suggested by Richard fmoverc: use opmode instead of rom_offset, define and free the tcg constant v2: Fix gen_fcc_cond(): g[12] mark global variables, not variables to free. add 2 patches to compute trigonometric functions and fmod use floatx80_round() to compute fsglmul and fsgldiv split fmovem helper into 6 helpers Laurent Vivier (7): target/m68k: add fscc. target/m68k: add fmovecr target/m68k: add explicit single and double precision operations softfloat: define floatx80_round() target/m68k: add fsglmul and fsgldiv target/m68k: add explicit single and double precision operations (part 2) target/m68k: add fmovem fpu/softfloat.c | 16 ++ include/fpu/softfloat.h | 1 + target/m68k/fpu_helper.c | 310 ++++++++++++++++++++++++++++++++++++- target/m68k/helper.h | 27 +++- target/m68k/translate.c | 388 ++++++++++++++++++++++++++++++++--------------- 5 files changed, 619 insertions(+), 123 deletions(-) -- 2.9.4