From 00242cdd7f9548bef2ed7d84efa950e3ae2e9a2f Mon Sep 17 00:00:00 2001 From: losfair Date: Thu, 17 Oct 2019 23:00:50 +0800 Subject: [PATCH] Fix LEA simulation on aarch64. --- lib/singlepass-backend/src/translator_aarch64.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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!(),