Re: [PATCH for-9.1 16/19] target/i386: remove now-converted opcodes from old decoder

2024-04-11 Thread Richard Henderson

On 4/9/24 09:43, Paolo Bonzini wrote:

Send all converted opcodes to disas_insn_new() directly from the big
decoding switch statement; once more, the debugging/bisecting logic
disappears.

Signed-off-by: Paolo Bonzini
---
  target/i386/helper.h|   11 -
  target/i386/tcg/shift_helper_template.h.inc |  108 -
  target/i386/tcg/int_helper.c|   34 -
  target/i386/tcg/translate.c | 2172 +--
  target/i386/tcg/decode-new.c.inc|3 -
  5 files changed, 11 insertions(+), 2317 deletions(-)
  delete mode 100644 target/i386/tcg/shift_helper_template.h.inc


Reviewed-by: Richard Henderson 

r~



[PATCH for-9.1 16/19] target/i386: remove now-converted opcodes from old decoder

2024-04-09 Thread Paolo Bonzini
Send all converted opcodes to disas_insn_new() directly from the big
decoding switch statement; once more, the debugging/bisecting logic
disappears.

Signed-off-by: Paolo Bonzini 
---
 target/i386/helper.h|   11 -
 target/i386/tcg/shift_helper_template.h.inc |  108 -
 target/i386/tcg/int_helper.c|   34 -
 target/i386/tcg/translate.c | 2172 +--
 target/i386/tcg/decode-new.c.inc|3 -
 5 files changed, 11 insertions(+), 2317 deletions(-)
 delete mode 100644 target/i386/tcg/shift_helper_template.h.inc

diff --git a/target/i386/helper.h b/target/i386/helper.h
index ac2b04abd63..3c207ac62d6 100644
--- a/target/i386/helper.h
+++ b/target/i386/helper.h
@@ -207,15 +207,4 @@ DEF_HELPER_1(emms, void, env)
 #define SHIFT 2
 #include "tcg/ops_sse_header.h.inc"
 
-DEF_HELPER_3(rclb, tl, env, tl, tl)
-DEF_HELPER_3(rclw, tl, env, tl, tl)
-DEF_HELPER_3(rcll, tl, env, tl, tl)
-DEF_HELPER_3(rcrb, tl, env, tl, tl)
-DEF_HELPER_3(rcrw, tl, env, tl, tl)
-DEF_HELPER_3(rcrl, tl, env, tl, tl)
-#ifdef TARGET_X86_64
-DEF_HELPER_3(rclq, tl, env, tl, tl)
-DEF_HELPER_3(rcrq, tl, env, tl, tl)
-#endif
-
 DEF_HELPER_1(rdrand, tl, env)
diff --git a/target/i386/tcg/shift_helper_template.h.inc 
b/target/i386/tcg/shift_helper_template.h.inc
deleted file mode 100644
index 54f15d6e05c..000
--- a/target/i386/tcg/shift_helper_template.h.inc
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  x86 shift helpers
- *
- *  Copyright (c) 2008 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see .
- */
-
-#define DATA_BITS (1 << (3 + SHIFT))
-#define SHIFT_MASK (DATA_BITS - 1)
-#if DATA_BITS <= 32
-#define SHIFT1_MASK 0x1f
-#else
-#define SHIFT1_MASK 0x3f
-#endif
-
-#if DATA_BITS == 8
-#define SUFFIX b
-#define DATA_MASK 0xff
-#elif DATA_BITS == 16
-#define SUFFIX w
-#define DATA_MASK 0x
-#elif DATA_BITS == 32
-#define SUFFIX l
-#define DATA_MASK 0x
-#elif DATA_BITS == 64
-#define SUFFIX q
-#define DATA_MASK 0xULL
-#else
-#error unhandled operand size
-#endif
-
-target_ulong glue(helper_rcl, SUFFIX)(CPUX86State *env, target_ulong t0,
-  target_ulong t1)
-{
-int count, eflags;
-target_ulong src;
-target_long res;
-
-count = t1 & SHIFT1_MASK;
-#if DATA_BITS == 16
-count = rclw_table[count];
-#elif DATA_BITS == 8
-count = rclb_table[count];
-#endif
-if (count) {
-eflags = env->cc_src;
-t0 &= DATA_MASK;
-src = t0;
-res = (t0 << count) | ((target_ulong)(eflags & CC_C) << (count - 1));
-if (count > 1) {
-res |= t0 >> (DATA_BITS + 1 - count);
-}
-t0 = res;
-env->cc_src = (eflags & ~(CC_C | CC_O)) |
-(lshift(src ^ t0, 11 - (DATA_BITS - 1)) & CC_O) |
-((src >> (DATA_BITS - count)) & CC_C);
-}
-return t0;
-}
-
-target_ulong glue(helper_rcr, SUFFIX)(CPUX86State *env, target_ulong t0,
-  target_ulong t1)
-{
-int count, eflags;
-target_ulong src;
-target_long res;
-
-count = t1 & SHIFT1_MASK;
-#if DATA_BITS == 16
-count = rclw_table[count];
-#elif DATA_BITS == 8
-count = rclb_table[count];
-#endif
-if (count) {
-eflags = env->cc_src;
-t0 &= DATA_MASK;
-src = t0;
-res = (t0 >> count) |
-((target_ulong)(eflags & CC_C) << (DATA_BITS - count));
-if (count > 1) {
-res |= t0 << (DATA_BITS + 1 - count);
-}
-t0 = res;
-env->cc_src = (eflags & ~(CC_C | CC_O)) |
-(lshift(src ^ t0, 11 - (DATA_BITS - 1)) & CC_O) |
-((src >> (count - 1)) & CC_C);
-}
-return t0;
-}
-
-#undef DATA_BITS
-#undef SHIFT_MASK
-#undef SHIFT1_MASK
-#undef DATA_TYPE
-#undef DATA_MASK
-#undef SUFFIX
diff --git a/target/i386/tcg/int_helper.c b/target/i386/tcg/int_helper.c
index ab85dc55400..df16130f5df 100644
--- a/target/i386/tcg/int_helper.c
+++ b/target/i386/tcg/int_helper.c
@@ -29,22 +29,6 @@
 
 //#define DEBUG_MULDIV
 
-/* modulo 9 table */
-static const uint8_t rclb_table[32] = {
-0, 1, 2, 3, 4, 5, 6, 7,
-8, 0, 1, 2, 3, 4, 5, 6,
-7, 8, 0, 1, 2, 3, 4, 5,
-6, 7, 8, 0, 1, 2, 3, 4,
-};
-
-/* modulo 17 table */
-static const uint8_t rclw_table[32] = {
-0, 1, 2, 3, 4, 5, 6, 7,
-8, 9, 10, 11, 1