qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: Paolo Bonzini <pbonzini@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [PATCH 17/22] target/i386: extract gen_far_call/jmp, reordering temporaries
Date: Fri, 29 Dec 2023 09:25:17 +1100	[thread overview]
Message-ID: <5294c676-706e-492d-b46a-e62d87a4fb5c@linaro.org> (raw)
In-Reply-To: <20231222181603.174137-18-pbonzini@redhat.com>

On 12/23/23 05:15, Paolo Bonzini wrote:
> Extract the code into new functions, and swap T0/T1 so that T0 corresponds
> to the first immediate in the instruction stream.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   target/i386/tcg/translate.c | 90 ++++++++++++++++++++-----------------
>   1 file changed, 50 insertions(+), 40 deletions(-)
> 
> diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c
> index e5f71170967..edbad0ad746 100644
> --- a/target/i386/tcg/translate.c
> +++ b/target/i386/tcg/translate.c
> @@ -2525,12 +2525,12 @@ static inline void gen_op_movl_T0_seg(DisasContext *s, X86Seg seg_reg)
>                        offsetof(CPUX86State,segs[seg_reg].selector));
>   }
>   
> -static inline void gen_op_movl_seg_T0_vm(DisasContext *s, X86Seg seg_reg)
> +static inline void gen_op_movl_seg_real(DisasContext *s, X86Seg seg_reg, TCGv seg)

In general, you probably want to drop inline markers as you come across them, and just let 
the compiler inline as it chooses.

>   {
> -    tcg_gen_ext16u_tl(s->T0, s->T0);
> -    tcg_gen_st32_tl(s->T0, tcg_env,
> +    tcg_gen_ext16u_tl(seg, seg);

While cleaning, maybe better to not silently modify the input?

> +static void gen_far_call(DisasContext *s)
> +{
> +    if (PE(s) && !VM86(s)) {
> +        tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T1);
> +        gen_helper_lcall_protected(tcg_env, s->tmp2_i32, s->T0,
> +                                   tcg_constant_i32(s->dflag - 1),
> +                                   eip_next_tl(s));
> +    } else {
> +        tcg_gen_trunc_tl_i32(s->tmp3_i32, s->T1);
> +        tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T0);

New temps?

> +        gen_helper_lcall_real(tcg_env, s->tmp3_i32, s->tmp2_i32,
> +                              tcg_constant_i32(s->dflag - 1),
> +                              eip_next_i32(s));
> +    }
> +    s->base.is_jmp = DISAS_JUMP;
> +}
> +
> +static void gen_far_jmp(DisasContext *s)
> +{
> +    if (PE(s) && !VM86(s)) {
> +        tcg_gen_trunc_tl_i32(s->tmp2_i32, s->T1);

Likewise.

Otherwise,
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~


  reply	other threads:[~2023-12-28 22:26 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-22 18:15 [PATCH 00/22] target/i386: first part of TCG changes for 9.0 Paolo Bonzini
2023-12-22 18:15 ` [PATCH 01/22] target/i386: optimize computation of JL and JLE from flags Paolo Bonzini
2023-12-28 20:53   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 02/22] target/i386: speedup JO/SETO after MUL or IMUL Paolo Bonzini
2023-12-28 20:56   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 03/22] target/i386: remove unnecessary arguments from raise_interrupt Paolo Bonzini
2023-12-28 20:58   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 04/22] target/i386: remove unnecessary truncations Paolo Bonzini
2023-12-28 21:13   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 05/22] target/i386: clean up cpu_cc_compute_all Paolo Bonzini
2023-12-28 21:27   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 06/22] target/i386: document more deviations from the manual Paolo Bonzini
2023-12-28 21:34   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 07/22] target/i386: reimplement check for validity of LOCK prefix Paolo Bonzini
2023-12-28 21:55   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 08/22] target/i386: avoid trunc and ext for MULX and RORX Paolo Bonzini
2023-12-28 21:50   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 09/22] target/i386: rename zext0/zext2 and make them closer to the manual Paolo Bonzini
2023-12-28 22:04   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 10/22] target/i386: add X86_SPECIALs for MOVSX and MOVZX Paolo Bonzini
2023-12-28 22:08   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 11/22] target/i386: do not decode string source/destination into decode->mem Paolo Bonzini
2023-12-28 22:09   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 12/22] target/i386: do not clobber A0 in POP translation Paolo Bonzini
2023-12-22 18:15 ` [PATCH 13/22] target/i386: do not clobber T0 on string operations Paolo Bonzini
2023-12-28 22:11   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 14/22] target/i386: split eflags computation out of gen_compute_eflags Paolo Bonzini
2023-12-28 22:13   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 15/22] target/i386: do not use s->tmp4 for push Paolo Bonzini
2023-12-28 22:14   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 16/22] target/i386: do not use s->tmp0 for jumps on ECX ==/!= 0 Paolo Bonzini
2023-12-28 22:15   ` Richard Henderson
2023-12-22 18:15 ` [PATCH 17/22] target/i386: extract gen_far_call/jmp, reordering temporaries Paolo Bonzini
2023-12-28 22:25   ` Richard Henderson [this message]
2023-12-22 18:15 ` [PATCH 18/22] target/i386: prepare for implementation of STOS/SCAS in new decoder Paolo Bonzini
2023-12-28 22:27   ` Richard Henderson
2023-12-22 18:16 ` [PATCH 19/22] target/i386: move operand load and writeback out of gen_cmovcc1 Paolo Bonzini
2023-12-28 22:29   ` Richard Henderson
2023-12-22 18:16 ` [PATCH 20/22] target/i386: adjust decoding of J operand Paolo Bonzini
2023-12-22 18:16 ` [PATCH 21/22] target/i386: introduce flags writeback mechanism Paolo Bonzini
2023-12-28 22:46   ` Richard Henderson
2023-12-22 18:16 ` [PATCH 22/22] target/i386: implement CMPccXADD Paolo Bonzini
2023-12-28 23:04   ` Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5294c676-706e-492d-b46a-e62d87a4fb5c@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).