From: Paolo Bonzini Date: Wed, 24 Apr 2024 10:20:17 +0000 (+0200) Subject: target/i386/tcg: reuse gen_helper_fp_arith_ST0_FT0 for fcom STn and fcomp STn X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2326789c91fb77e40c0bf5468cc339d722846b3f;p=thirdparty%2Fqemu.git target/i386/tcg: reuse gen_helper_fp_arith_ST0_FT0 for fcom STn and fcomp STn Treat specially the undocumented ops, instead of treating specially the two d8/0 opcodes that have undocumented variants: just call gen_helper_fp_arith_ST0_FT0 for all opcodes in the d8/0 encoding. Reviewed-by: Richard Henderson Signed-off-by: Paolo Bonzini --- diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 4b77cff8ee..32a371e2d9 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -2777,7 +2777,7 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *decode) break; } break; - case 0x00: case 0x01: case 0x04 ... 0x07: /* fxxx st, sti */ + case 0x00 ... 0x07: /* fxxx st, sti */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fp_arith_ST0_FT0(op & 7); @@ -2790,12 +2790,10 @@ static void gen_x87(DisasContext *s, X86DecodedInsn *decode) gen_helper_fpop(tcg_env); } break; - case 0x02: /* fcom */ case 0x22: /* fcom2, undocumented op */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg)); gen_helper_fcom_ST0_FT0(tcg_env); break; - case 0x03: /* fcomp */ case 0x23: /* fcomp3, undocumented op */ case 0x32: /* fcomp5, undocumented op */ gen_helper_fmov_FT0_STN(tcg_env, tcg_constant_i32(opreg));