On Mon, May 25, 2026 at 11:27 AM Matt Turner <[email protected]> wrote:
>
> The gUSA pattern matcher rejected `add #imm, Rn` whenever any prior
> `mov Rm, Rn` appeared (mv_src >= 0), forcing a fallback to
> cpu_exec_step_atomic for sequences like:
>
>   mov.l  @r2, r3      ; load
>   mov    r3, r7       ; save old value (mv_src == ld_dst)
>   add    #1, r7       ; increment copy
>   mov.l  r7, @r2      ; store
>
> When mv_src == ld_dst the move merely copies the loaded value to
> preserve it -- exactly the situation already accepted for the
> `add Rm, Rn` form. The immediate form can be handled identically with
> tcg_gen_atomic_fetch_add_i32 + tcg_gen_add_i32, so translate it inline
> instead of taking the slower single-step atomic fallback.
> ---

Signed-off-by: Matt Turner <[email protected]>

Reply via email to