On 10/21/22 23:17, Qi Hu wrote:
                  t0 = tcg_temp_local_new();
+                t1 = tcg_temp_local_new();
                  label1 = gen_new_label();
tcg_gen_mov_tl(a0, s->A0);
                  tcg_gen_mov_tl(t0, s->T0);
gen_set_label(label1);
-                t1 = tcg_temp_new();
                  t2 = tcg_temp_new();
                  tcg_gen_mov_tl(t2, t0);
                  tcg_gen_neg_tl(t1, t0);
                  tcg_gen_atomic_cmpxchg_tl(t0, a0, t0, t1,
                                            s->mem_index, ot | MO_LE);
-                tcg_temp_free(t1);
                  tcg_gen_brcond_tl(TCG_COND_NE, t0, t2, label1);
tcg_temp_free(t2);
+
+                tcg_gen_mov_tl(s->T0, t1);
+                tcg_temp_free(t1);
                  tcg_temp_free(a0);
-                tcg_gen_mov_tl(s->T0, t0);

Instead of creating another temporary stored across the branch,
simply replace this final mov with a neg.


r~

Reply via email to