qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 11/13] target/i386: execute multiple REP/REPZ iterations with


From: Richard Henderson
Subject: Re: [PATCH 11/13] target/i386: execute multiple REP/REPZ iterations without leaving TB
Date: Sun, 15 Dec 2024 09:06:53 -0600
User-agent: Mozilla Thunderbird

On 12/15/24 03:06, Paolo Bonzini wrote:
+
+    /*
+     * The last iteration is handled outside the loop, so that cx_next
+     * can never underflow.
+     */
+    if (can_loop) {
+        tcg_gen_brcondi_tl(TCG_COND_TSTEQ, cx_next, cx_mask, last);
+    }
+
+    gen_set_label(loop);

I know unused labels will get eliminated, but clearer if you emit the label within the IF as well.

@@ -1384,6 +1409,12 @@ static void do_gen_rep(DisasContext *s, MemOp ot,
          gen_jcc_noeob(s, (JCC_Z << 1) | (nz ^ 1), done);
      }
+ if (can_loop) {
+        tcg_gen_subi_tl(cx_next, cpu_regs[R_ECX], 1);

Since we've just written back cx_next to ECX, this is the same as cx_next -= 1, 
yes?


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


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]