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]>
