diff --git a/lib/singlepass-backend/src/translator_aarch64.rs b/lib/singlepass-backend/src/translator_aarch64.rs index 55649db49..0c373a9e5 100644 --- a/lib/singlepass-backend/src/translator_aarch64.rs +++ b/lib/singlepass-backend/src/translator_aarch64.rs @@ -224,9 +224,9 @@ macro_rules! binop_gpr_mem { match ($sz, $src, $dst) { (Size::S32, Location::GPR(src), Location::Memory(base, disp)) => { if disp >= 0 { - dynasm!($assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!($assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!($assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!($assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!($assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!($assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!($assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!($assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { assert!(imm < 32); if disp >= 0 { - dynasm!($assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!($assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!($assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!($assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { assert!(imm < 32); if disp >= 0 { - dynasm!($assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!($assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!($assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!($assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, after; data: ; .dword x as i32; after: ; ldr w_tmp1, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, after; data: ; .qword x as i64; after: ; ldr x_tmp1, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, after; data: ; .dword x as i32; after: ; ldr w_tmp1, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, after; data: ; .dword x as i32; after: ; ldr w_tmp1, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, dynasm!(self ; br X(map_gpr(x).x())), Location::Memory(base, disp) => { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, after @@ -811,9 +811,9 @@ impl Emitter for Assembler { } (Size::S64, Location::Imm32(left), Location::Memory(base, disp)) => { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, after @@ -835,9 +835,9 @@ impl Emitter for Assembler { ), (Size::S32, Location::GPR(left), Location::Memory(base, disp)) => { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(self ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(self ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3, { if disp >= 0 { - dynasm!(assembler ; add x_tmp3, X(map_gpr(base).x()), disp as u32); + dynasm!(assembler ; disp: ; .dword disp as i32 ; ldr w_tmp3,