[PATCH 01/13] target/i386: inline gen_jcc into sole caller

Paolo Bonzini posted 13 patches 3 months, 3 weeks ago
[PATCH 01/13] target/i386: inline gen_jcc into sole caller
Posted by Paolo Bonzini 3 months, 3 weeks ago
The code of gen_Jcc is very similar to gen_LOOP* and gen_JCXZ, but this
is hidden by gen_jcc.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target/i386/tcg/translate.c | 8 --------
 target/i386/tcg/emit.c.inc  | 6 +++++-
 2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
index 5d729e68c98..298842d46b6 100644
--- a/target/i386/tcg/translate.c
+++ b/target/i386/tcg/translate.c
@@ -1846,14 +1846,6 @@ static void gen_conditional_jump_labels(DisasContext *s, target_long diff,
     gen_jmp_rel(s, s->dflag, diff, 0);
 }
 
-static void gen_jcc(DisasContext *s, int b, int diff)
-{
-    TCGLabel *l1 = gen_new_label();
-
-    gen_jcc1(s, b, l1);
-    gen_conditional_jump_labels(s, diff, NULL, l1);
-}
-
 static void gen_cmovcc1(DisasContext *s, int b, TCGv dest, TCGv src)
 {
     CCPrepare cc = gen_prepare_cc(s, b, NULL);
diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc
index 785ff63f2ac..8d18407facf 100644
--- a/target/i386/tcg/emit.c.inc
+++ b/target/i386/tcg/emit.c.inc
@@ -2276,8 +2276,12 @@ static void gen_IRET(DisasContext *s, X86DecodedInsn *decode)
 
 static void gen_Jcc(DisasContext *s, X86DecodedInsn *decode)
 {
+    TCGLabel *taken = gen_new_label();
+
     gen_bnd_jmp(s);
-    gen_jcc(s, decode->b & 0xf, decode->immediate);
+    gen_jcc1(s, decode->b & 0xf, taken);
+    gen_conditional_jump_labels(s, decode->immediate, NULL, taken);
+
 }
 
 static void gen_JCXZ(DisasContext *s, X86DecodedInsn *decode)
-- 
2.47.1
Re: [PATCH 01/13] target/i386: inline gen_jcc into sole caller
Posted by Richard Henderson 3 months, 3 weeks ago
On 12/15/24 03:06, Paolo Bonzini wrote:
> The code of gen_Jcc is very similar to gen_LOOP* and gen_JCXZ, but this
> is hidden by gen_jcc.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   target/i386/tcg/translate.c | 8 --------
>   target/i386/tcg/emit.c.inc  | 6 +++++-
>   2 files changed, 5 insertions(+), 9 deletions(-)
> 
> diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
> index 5d729e68c98..298842d46b6 100644
> --- a/target/i386/tcg/translate.c
> +++ b/target/i386/tcg/translate.c
> @@ -1846,14 +1846,6 @@ static void gen_conditional_jump_labels(DisasContext *s, target_long diff,
>       gen_jmp_rel(s, s->dflag, diff, 0);
>   }
>   
> -static void gen_jcc(DisasContext *s, int b, int diff)
> -{
> -    TCGLabel *l1 = gen_new_label();
> -
> -    gen_jcc1(s, b, l1);
> -    gen_conditional_jump_labels(s, diff, NULL, l1);
> -}
> -
>   static void gen_cmovcc1(DisasContext *s, int b, TCGv dest, TCGv src)
>   {
>       CCPrepare cc = gen_prepare_cc(s, b, NULL);
> diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc
> index 785ff63f2ac..8d18407facf 100644
> --- a/target/i386/tcg/emit.c.inc
> +++ b/target/i386/tcg/emit.c.inc
> @@ -2276,8 +2276,12 @@ static void gen_IRET(DisasContext *s, X86DecodedInsn *decode)
>   
>   static void gen_Jcc(DisasContext *s, X86DecodedInsn *decode)
>   {
> +    TCGLabel *taken = gen_new_label();
> +
>       gen_bnd_jmp(s);
> -    gen_jcc(s, decode->b & 0xf, decode->immediate);
> +    gen_jcc1(s, decode->b & 0xf, taken);
> +    gen_conditional_jump_labels(s, decode->immediate, NULL, taken);
> +
>   }

Watch the extra blank line.  Otherwise,
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~