diff --git a/lib/singlepass-backend/src/translator_aarch64.rs b/lib/singlepass-backend/src/translator_aarch64.rs index cdc86dcf3..83352284c 100644 --- a/lib/singlepass-backend/src/translator_aarch64.rs +++ b/lib/singlepass-backend/src/translator_aarch64.rs @@ -566,16 +566,16 @@ impl Emitter for Assembler { match (sz, src, dst) { (Size::S32, Location::Memory(src, disp), Location::GPR(dst)) => { if disp >= 0 { - dynasm!(self ; add W(map_gpr(dst).x()), W(map_gpr(src).x()), disp as u32); + dynasm!(self ; b >after ; disp: ; .dword disp ; after: ; ldr w_tmp3, after ; disp: ; .dword -disp ; after: ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add X(map_gpr(dst).x()), X(map_gpr(src).x()), disp as u32); + dynasm!(self ; b >after ; disp: ; .dword disp ; after: ; ldr w_tmp3, after ; disp: ; .dword -disp ; after: ; ldr w_tmp3, unreachable!(),