diff --git a/cranelift/codegen/src/isa/aarch64/abi.rs b/cranelift/codegen/src/isa/aarch64/abi.rs index 3008a42f687d..9ade3ebea363 100644 --- a/cranelift/codegen/src/isa/aarch64/abi.rs +++ b/cranelift/codegen/src/isa/aarch64/abi.rs @@ -1123,8 +1123,11 @@ impl ABIMachineSpec for AArch64MachineDeps { } } - fn get_regs_clobbered_by_call(_call_conv: isa::CallConv) -> PRegSet { - DEFAULT_AAPCS_CLOBBERS + fn get_regs_clobbered_by_call(call_conv: isa::CallConv) -> PRegSet { + match call_conv { + isa::CallConv::Winch => WINCH_CLOBBERS, + _ => DEFAULT_AAPCS_CLOBBERS, + } } fn get_ext_mode( @@ -1438,7 +1441,78 @@ const fn default_aapcs_clobbers() -> PRegSet { .with(vreg_preg(31)) } +const fn winch_clobbers() -> PRegSet { + PRegSet::empty() + .with(xreg_preg(0)) + .with(xreg_preg(1)) + .with(xreg_preg(2)) + .with(xreg_preg(3)) + .with(xreg_preg(4)) + .with(xreg_preg(5)) + .with(xreg_preg(6)) + .with(xreg_preg(7)) + .with(xreg_preg(8)) + .with(xreg_preg(9)) + .with(xreg_preg(10)) + .with(xreg_preg(11)) + .with(xreg_preg(12)) + .with(xreg_preg(13)) + .with(xreg_preg(14)) + .with(xreg_preg(15)) + .with(xreg_preg(16)) + .with(xreg_preg(17)) + // x18 is used to carry platform state and is not allocatable by Winch. + // + // x19 - x27 are considered caller-saved in Winch's calling convention. + .with(xreg_preg(19)) + .with(xreg_preg(20)) + .with(xreg_preg(21)) + .with(xreg_preg(22)) + .with(xreg_preg(23)) + .with(xreg_preg(24)) + .with(xreg_preg(25)) + .with(xreg_preg(26)) + .with(xreg_preg(27)) + // x28 is used as the shadow stack pointer and is considered + // callee-saved. + // + // All vregs are considered caller-saved. + .with(vreg_preg(0)) + .with(vreg_preg(1)) + .with(vreg_preg(2)) + .with(vreg_preg(3)) + .with(vreg_preg(4)) + .with(vreg_preg(5)) + .with(vreg_preg(6)) + .with(vreg_preg(7)) + .with(vreg_preg(8)) + .with(vreg_preg(9)) + .with(vreg_preg(10)) + .with(vreg_preg(11)) + .with(vreg_preg(12)) + .with(vreg_preg(13)) + .with(vreg_preg(14)) + .with(vreg_preg(15)) + .with(vreg_preg(16)) + .with(vreg_preg(17)) + .with(vreg_preg(18)) + .with(vreg_preg(19)) + .with(vreg_preg(20)) + .with(vreg_preg(21)) + .with(vreg_preg(22)) + .with(vreg_preg(23)) + .with(vreg_preg(24)) + .with(vreg_preg(25)) + .with(vreg_preg(26)) + .with(vreg_preg(27)) + .with(vreg_preg(28)) + .with(vreg_preg(29)) + .with(vreg_preg(30)) + .with(vreg_preg(31)) +} + const DEFAULT_AAPCS_CLOBBERS: PRegSet = default_aapcs_clobbers(); +const WINCH_CLOBBERS: PRegSet = winch_clobbers(); fn create_reg_env(enable_pinned_reg: bool) -> MachineEnv { fn preg(r: Reg) -> PReg { diff --git a/tests/disas/winch/aarch64/br/as_br_if_cond.wat b/tests/disas/winch/aarch64/br/as_br_if_cond.wat index ec594a9b1f14..26ce820b0ca1 100644 --- a/tests/disas/winch/aarch64/br/as_br_if_cond.wat +++ b/tests/disas/winch/aarch64/br/as_br_if_cond.wat @@ -8,6 +8,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -17,5 +18,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br/as_br_value.wat b/tests/disas/winch/aarch64/br/as_br_value.wat index 162f5e65ec6f..4ac945e638bf 100644 --- a/tests/disas/winch/aarch64/br/as_br_value.wat +++ b/tests/disas/winch/aarch64/br/as_br_value.wat @@ -8,6 +8,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,5 +20,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br/as_if_cond.wat b/tests/disas/winch/aarch64/br/as_if_cond.wat index 97f724e116fb..3201ecf9b899 100644 --- a/tests/disas/winch/aarch64/br/as_if_cond.wat +++ b/tests/disas/winch/aarch64/br/as_if_cond.wat @@ -13,6 +13,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br/as_if_else.wat b/tests/disas/winch/aarch64/br/as_if_else.wat index 1ce587b1db12..50f3683b484b 100644 --- a/tests/disas/winch/aarch64/br/as_if_else.wat +++ b/tests/disas/winch/aarch64/br/as_if_else.wat @@ -13,6 +13,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -23,14 +24,15 @@ ;; stur w3, [x28] ;; ldur w0, [x28, #4] ;; tst w0, w0 -;; b.eq #0x40 -;; b #0x38 -;; 38: ldur w0, [x28] -;; b #0x48 -;; 40: mov x16, #4 +;; b.eq #0x44 +;; b #0x3c +;; 3c: ldur w0, [x28] +;; b #0x4c +;; 44: mov x16, #4 ;; mov w0, w16 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br/as_if_then.wat b/tests/disas/winch/aarch64/br/as_if_then.wat index a9fbdfc274d3..f49898363e78 100644 --- a/tests/disas/winch/aarch64/br/as_if_then.wat +++ b/tests/disas/winch/aarch64/br/as_if_then.wat @@ -13,6 +13,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -23,14 +24,15 @@ ;; stur w3, [x28] ;; ldur w0, [x28, #4] ;; tst w0, w0 -;; b.eq #0x44 -;; b #0x38 -;; 38: mov x16, #3 +;; b.eq #0x48 +;; b #0x3c +;; 3c: mov x16, #3 ;; mov w0, w16 -;; b #0x48 -;; 44: ldur w0, [x28] +;; b #0x4c +;; 48: ldur w0, [x28] ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br/as_loop_first.wat b/tests/disas/winch/aarch64/br/as_loop_first.wat index 15bd2ac70aa6..e6f167a11c9b 100644 --- a/tests/disas/winch/aarch64/br/as_loop_first.wat +++ b/tests/disas/winch/aarch64/br/as_loop_first.wat @@ -9,6 +9,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -20,5 +21,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br/br_jump.wat b/tests/disas/winch/aarch64/br/br_jump.wat index 918459dc4875..04c95dc6428f 100644 --- a/tests/disas/winch/aarch64/br/br_jump.wat +++ b/tests/disas/winch/aarch64/br/br_jump.wat @@ -16,6 +16,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -34,9 +35,10 @@ ;; stur w16, [x28] ;; add x28, x28, #4 ;; mov sp, x28 -;; b #0x38 -;; 54: add x28, x28, #0x18 +;; b #0x3c +;; 58: add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br_if/as_br_if_cond.wat b/tests/disas/winch/aarch64/br_if/as_br_if_cond.wat index 572464cf211d..898a1c4b16a3 100644 --- a/tests/disas/winch/aarch64/br_if/as_br_if_cond.wat +++ b/tests/disas/winch/aarch64/br_if/as_br_if_cond.wat @@ -8,6 +8,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -17,15 +18,16 @@ ;; mov x16, #1 ;; mov w0, w16 ;; tst w0, w0 -;; b.ne #0x48 -;; b #0x34 -;; 34: mov x16, #1 +;; b.ne #0x4c +;; b #0x38 +;; 38: mov x16, #1 ;; mov w0, w16 ;; tst w0, w0 -;; b.ne #0x48 -;; b #0x48 -;; 48: add x28, x28, #0x10 +;; b.ne #0x4c +;; b #0x4c +;; 4c: add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br_if/as_br_value.wat b/tests/disas/winch/aarch64/br_if/as_br_value.wat index ae4dc7543b5a..ca8232b354aa 100644 --- a/tests/disas/winch/aarch64/br_if/as_br_value.wat +++ b/tests/disas/winch/aarch64/br_if/as_br_value.wat @@ -8,6 +8,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,10 +20,11 @@ ;; mov x16, #1 ;; mov w0, w16 ;; tst w1, w1 -;; b.ne #0x3c -;; b #0x3c -;; 3c: add x28, x28, #0x10 +;; b.ne #0x40 +;; b #0x40 +;; 40: add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br_if/as_if_cond.wat b/tests/disas/winch/aarch64/br_if/as_if_cond.wat index 86f33409bbca..7a4f1c4b42b0 100644 --- a/tests/disas/winch/aarch64/br_if/as_if_cond.wat +++ b/tests/disas/winch/aarch64/br_if/as_if_cond.wat @@ -14,6 +14,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,18 +26,19 @@ ;; mov x16, #1 ;; mov w0, w16 ;; tst w1, w1 -;; b.ne #0x5c -;; b #0x3c -;; 3c: tst w0, w0 -;; b.eq #0x54 -;; b #0x48 -;; 48: mov x16, #2 +;; b.ne #0x60 +;; b #0x40 +;; 40: tst w0, w0 +;; b.eq #0x58 +;; b #0x4c +;; 4c: mov x16, #2 ;; mov w0, w16 -;; b #0x5c -;; 54: mov x16, #3 +;; b #0x60 +;; 58: mov x16, #3 ;; mov w0, w16 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br_if/as_local_set_value.wat b/tests/disas/winch/aarch64/br_if/as_local_set_value.wat index dc72eced9300..ec5937136dc1 100644 --- a/tests/disas/winch/aarch64/br_if/as_local_set_value.wat +++ b/tests/disas/winch/aarch64/br_if/as_local_set_value.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,13 +27,14 @@ ;; mov x16, #0x11 ;; mov w0, w16 ;; tst w1, w1 -;; b.ne #0x54 -;; b #0x48 -;; 48: stur w0, [x28, #4] +;; b.ne #0x58 +;; b #0x4c +;; 4c: stur w0, [x28, #4] ;; orr x16, xzr, #0xffffffff ;; mov w0, w16 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br_table/large.wat b/tests/disas/winch/aarch64/br_table/large.wat index 9ad742c3f61d..d1e5813d3f0c 100644 --- a/tests/disas/winch/aarch64/br_table/large.wat +++ b/tests/disas/winch/aarch64/br_table/large.wat @@ -741,6 +741,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -751,14 +752,14 @@ ;; ldur w0, [x28, #4] ;; mov x16, #0x6027 ;; cmp x0, x16, uxtx -;; b.hs #0x180f4 -;; 34: csel x1, xzr, x0, hs +;; b.hs #0x180f8 +;; 38: csel x1, xzr, x0, hs ;; csdb -;; adr x16, #0x4c +;; adr x16, #0x50 ;; ldrsw x1, [x16, w1, uxtw #2] ;; add x16, x16, x1 ;; br x16 -;; 4c: .byte 0x9c, 0x80, 0x01, 0x00 +;; 50: .byte 0x9c, 0x80, 0x01, 0x00 ;; .byte 0xa8, 0x80, 0x01, 0x00 ;; .byte 0x9c, 0x80, 0x01, 0x00 ;; .byte 0xa8, 0x80, 0x01, 0x00 @@ -25375,11 +25376,12 @@ ;; .byte 0x9c, 0x80, 0x01, 0x00 ;; mov x16, #0 ;; mov w0, w16 -;; b #0x180fc -;; 180f4: mov x16, #1 +;; b #0x18100 +;; 180f8: mov x16, #1 ;; mov w0, w16 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/br_table/nested_br_table_loop_block.wat b/tests/disas/winch/aarch64/br_table/nested_br_table_loop_block.wat index b09ee4c47738..7d49dbd6e790 100644 --- a/tests/disas/winch/aarch64/br_table/nested_br_table_loop_block.wat +++ b/tests/disas/winch/aarch64/br_table/nested_br_table_loop_block.wat @@ -21,6 +21,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -30,34 +31,35 @@ ;; stur w2, [x28, #4] ;; ldur w0, [x28, #4] ;; cmp x0, #2 -;; b.hs #0x54 -;; 30: csel x1, xzr, x0, hs +;; b.hs #0x58 +;; 34: csel x1, xzr, x0, hs ;; csdb -;; adr x16, #0x48 +;; adr x16, #0x4c ;; ldrsw x1, [x16, w1, uxtw #2] ;; add x16, x16, x1 ;; br x16 -;; 48: .byte 0xdc, 0xff, 0xff, 0xff +;; 4c: .byte 0xdc, 0xff, 0xff, 0xff ;; .byte 0x0c, 0x00, 0x00, 0x00 -;; b #0x24 -;; 54: mov x16, #0 +;; b #0x28 +;; 58: mov x16, #0 ;; mov w0, w16 ;; stur w0, [x28, #4] ;; ldur w0, [x28, #4] ;; cmp x0, #2 -;; b.hs #0x60 -;; 6c: csel x1, xzr, x0, hs +;; b.hs #0x64 +;; 70: csel x1, xzr, x0, hs ;; csdb -;; adr x16, #0x84 +;; adr x16, #0x88 ;; ldrsw x1, [x16, w1, uxtw #2] ;; add x16, x16, x1 ;; br x16 -;; 84: .byte 0x08, 0x00, 0x00, 0x00 +;; 88: .byte 0x08, 0x00, 0x00, 0x00 ;; .byte 0xdc, 0xff, 0xff, 0xff ;; mov x16, #3 ;; mov w0, w16 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/call/multi.wat b/tests/disas/winch/aarch64/call/multi.wat index 71ad407dd931..f0f435b179e3 100644 --- a/tests/disas/winch/aarch64/call/multi.wat +++ b/tests/disas/winch/aarch64/call/multi.wat @@ -13,6 +13,7 @@ ;; wasm[0]::function[0]::multi: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x1 ;; sub x28, x28, #0x18 @@ -34,12 +35,14 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret ;; ;; wasm[0]::function[1]::start: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -54,7 +57,7 @@ ;; mov x2, x9 ;; add x0, x28, #0xc ;; bl #0 -;; c0: add x28, x28, #0xc +;; c4: add x28, x28, #0xc ;; mov sp, x28 ;; ldur x9, [x28, #0xc] ;; add x28, x28, #4 @@ -62,5 +65,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/call/params.wat b/tests/disas/winch/aarch64/call/params.wat index 7cb27b946a85..986f3429e842 100644 --- a/tests/disas/winch/aarch64/call/params.wat +++ b/tests/disas/winch/aarch64/call/params.wat @@ -40,6 +40,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -79,7 +80,7 @@ ;; mov w16, w16 ;; stur w16, [x28, #0x10] ;; bl #0x180 -;; a4: add x28, x28, #0x24 +;; a8: add x28, x28, #0x24 ;; mov sp, x28 ;; add x28, x28, #4 ;; mov sp, x28 @@ -117,7 +118,7 @@ ;; mov w16, w16 ;; stur w16, [x28, #0x10] ;; bl #0x180 -;; 13c: add x28, x28, #0x20 +;; 140: add x28, x28, #0x20 ;; mov sp, x28 ;; add x28, x28, #8 ;; mov sp, x28 @@ -125,12 +126,14 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret ;; ;; wasm[0]::function[1]::add: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x28 @@ -164,5 +167,6 @@ ;; add x28, x28, #0x28 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/call/recursive.wat b/tests/disas/winch/aarch64/call/recursive.wat index f89d4236b6e5..b5a96b582793 100644 --- a/tests/disas/winch/aarch64/call/recursive.wat +++ b/tests/disas/winch/aarch64/call/recursive.wat @@ -27,6 +27,7 @@ ;; wasm[0]::function[0]::fibonacci8: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -38,11 +39,11 @@ ;; cmp w0, #1 ;; cset x0, le ;; tst w0, w0 -;; b.eq #0x44 -;; b #0x3c -;; 3c: ldur w0, [x28, #4] -;; b #0xd4 -;; 44: ldur w0, [x28, #4] +;; b.eq #0x48 +;; b #0x40 +;; 40: ldur w0, [x28, #4] +;; b #0xd8 +;; 48: ldur w0, [x28, #4] ;; sub w0, w0, #1 ;; sub x28, x28, #4 ;; mov sp, x28 @@ -53,7 +54,7 @@ ;; mov x1, x9 ;; ldur w2, [x28, #4] ;; bl #0 -;; 70: add x28, x28, #4 +;; 74: add x28, x28, #4 ;; mov sp, x28 ;; add x28, x28, #4 ;; mov sp, x28 @@ -70,7 +71,7 @@ ;; mov x1, x9 ;; ldur w2, [x28] ;; bl #0 -;; b4: add x28, x28, #4 +;; b8: add x28, x28, #4 ;; mov sp, x28 ;; ldur x9, [x28, #0x14] ;; ldur w1, [x28] @@ -81,5 +82,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/call/reg_on_stack.wat b/tests/disas/winch/aarch64/call/reg_on_stack.wat index 46f2d476d988..2f62e342fac6 100644 --- a/tests/disas/winch/aarch64/call/reg_on_stack.wat +++ b/tests/disas/winch/aarch64/call/reg_on_stack.wat @@ -16,6 +16,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -34,7 +35,7 @@ ;; mov x16, #1 ;; mov w2, w16 ;; bl #0 -;; 50: add x28, x28, #4 +;; 54: add x28, x28, #4 ;; mov sp, x28 ;; ldur x9, [x28, #0x14] ;; sub x28, x28, #4 @@ -45,7 +46,7 @@ ;; mov x16, #1 ;; mov w2, w16 ;; bl #0 -;; 7c: ldur x9, [x28, #0x18] +;; 80: ldur x9, [x28, #0x18] ;; sub x28, x28, #4 ;; mov sp, x28 ;; stur w0, [x28] @@ -56,14 +57,15 @@ ;; add x28, x28, #4 ;; mov sp, x28 ;; tst w1, w1 -;; b.eq #0xbc -;; b #0xb0 -;; b0: add x28, x28, #4 +;; b.eq #0xc0 +;; b #0xb4 +;; b4: add x28, x28, #4 ;; mov sp, x28 -;; b #0xc0 -;; bc: .byte 0x1f, 0xc1, 0x00, 0x00 +;; b #0xc4 +;; c0: .byte 0x1f, 0xc1, 0x00, 0x00 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/call/simple.wat b/tests/disas/winch/aarch64/call/simple.wat index 63a0428d8390..5c2634c2502f 100644 --- a/tests/disas/winch/aarch64/call/simple.wat +++ b/tests/disas/winch/aarch64/call/simple.wat @@ -18,6 +18,7 @@ ;; wasm[0]::function[0]::main: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -34,8 +35,8 @@ ;; mov w2, w16 ;; mov x16, #0x50 ;; mov w3, w16 -;; bl #0x80 -;; 4c: add x28, x28, #8 +;; bl #0xa0 +;; 50: add x28, x28, #8 ;; mov sp, x28 ;; ldur x9, [x28, #0x10] ;; mov x16, #2 @@ -46,12 +47,14 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret ;; ;; wasm[0]::function[1]::add: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -67,5 +70,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/call_indirect/call_indirect.wat b/tests/disas/winch/aarch64/call_indirect/call_indirect.wat index ee0d2be3dc3f..34e7fbfcac76 100644 --- a/tests/disas/winch/aarch64/call_indirect/call_indirect.wat +++ b/tests/disas/winch/aarch64/call_indirect/call_indirect.wat @@ -32,6 +32,7 @@ ;; wasm[0]::function[0]::fib-i32: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -43,12 +44,12 @@ ;; cmp w0, #1 ;; cset x0, ls ;; tst w0, w0 -;; b.eq #0x48 -;; b #0x3c -;; 3c: mov x16, #1 +;; b.eq #0x4c +;; b #0x40 +;; 40: mov x16, #1 ;; mov w0, w16 -;; b #0x268 -;; 48: ldur w0, [x28, #4] +;; b #0x26c +;; 4c: ldur w0, [x28, #4] ;; sub w0, w0, #2 ;; sub x28, x28, #4 ;; mov sp, x28 @@ -59,8 +60,8 @@ ;; ldur x3, [x2, #0x58] ;; cmp x1, x3, uxtx ;; sub sp, x28, #4 -;; b.hs #0x27c -;; 78: mov sp, x28 +;; b.hs #0x284 +;; 7c: mov sp, x28 ;; mov x16, x1 ;; mov x16, #8 ;; mul x16, x16, x16 @@ -71,31 +72,31 @@ ;; csel x2, x4, x4, hs ;; ldur x0, [x2] ;; tst x0, x0 -;; b.ne #0xdc -;; b #0xac -;; ac: sub x28, x28, #4 +;; b.ne #0xe0 +;; b #0xb0 +;; b0: sub x28, x28, #4 ;; mov sp, x28 ;; stur w1, [x28] ;; mov x0, x9 ;; mov x16, #0 ;; mov w1, w16 ;; ldur w2, [x28] -;; bl #0x3b4 -;; cc: add x28, x28, #4 +;; bl #0x3fc +;; d0: add x28, x28, #4 ;; mov sp, x28 ;; ldur x9, [x28, #0x14] -;; b #0xe0 -;; dc: and x0, x0, #0xfffffffffffffffe +;; b #0xe4 +;; e0: and x0, x0, #0xfffffffffffffffe ;; sub sp, x28, #4 -;; cbz x0, #0x280 -;; e8: mov sp, x28 +;; cbz x0, #0x288 +;; ec: mov sp, x28 ;; ldur x16, [x9, #0x40] ;; ldur w1, [x16] ;; ldur w2, [x0, #0x10] ;; cmp w1, w2, uxtx ;; sub sp, x28, #4 -;; b.ne #0x284 -;; 104: mov sp, x28 +;; b.ne #0x28c +;; 108: mov sp, x28 ;; sub x28, x28, #8 ;; mov sp, x28 ;; stur x0, [x28] @@ -110,7 +111,7 @@ ;; mov x1, x9 ;; ldur w2, [x28, #4] ;; blr x4 -;; 140: add x28, x28, #4 +;; 144: add x28, x28, #4 ;; mov sp, x28 ;; add x28, x28, #4 ;; mov sp, x28 @@ -128,8 +129,8 @@ ;; mov x2, x9 ;; ldur x3, [x2, #0x58] ;; cmp x1, x3, uxtx -;; b.hs #0x288 -;; 18c: mov x16, x1 +;; b.hs #0x290 +;; 190: mov x16, x1 ;; mov x16, #8 ;; mul x16, x16, x16 ;; ldur x2, [x2, #0x50] @@ -139,9 +140,9 @@ ;; csel x2, x4, x4, hs ;; ldur x0, [x2] ;; tst x0, x0 -;; b.ne #0x1fc -;; b #0x1bc -;; 1bc: sub x28, x28, #4 +;; b.ne #0x200 +;; b #0x1c0 +;; 1c0: sub x28, x28, #4 ;; mov sp, x28 ;; stur w1, [x28] ;; sub x28, x28, #0xc @@ -150,21 +151,21 @@ ;; mov x16, #0 ;; mov w1, w16 ;; ldur w2, [x28, #0xc] -;; bl #0x3b4 -;; 1e4: add x28, x28, #0xc +;; bl #0x3fc +;; 1e8: add x28, x28, #0xc ;; mov sp, x28 ;; add x28, x28, #4 ;; mov sp, x28 ;; ldur x9, [x28, #0x18] -;; b #0x200 -;; 1fc: and x0, x0, #0xfffffffffffffffe -;; cbz x0, #0x28c -;; 204: ldur x16, [x9, #0x40] +;; b #0x204 +;; 200: and x0, x0, #0xfffffffffffffffe +;; cbz x0, #0x294 +;; 208: ldur x16, [x9, #0x40] ;; ldur w1, [x16] ;; ldur w2, [x0, #0x10] ;; cmp w1, w2, uxtx -;; b.ne #0x290 -;; 218: sub x28, x28, #8 +;; b.ne #0x298 +;; 21c: sub x28, x28, #8 ;; mov sp, x28 ;; stur x0, [x28] ;; ldur x3, [x28] @@ -176,7 +177,7 @@ ;; mov x1, x9 ;; ldur w2, [x28] ;; blr x4 -;; 248: add x28, x28, #4 +;; 24c: add x28, x28, #4 ;; mov sp, x28 ;; ldur x9, [x28, #0x14] ;; ldur w1, [x28] @@ -187,11 +188,12 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 27c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 280: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 284: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 288: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 28c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 290: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 294: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 298: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/call_indirect/local_arg.wat b/tests/disas/winch/aarch64/call_indirect/local_arg.wat index 722efccda9b6..bf2223e51c81 100644 --- a/tests/disas/winch/aarch64/call_indirect/local_arg.wat +++ b/tests/disas/winch/aarch64/call_indirect/local_arg.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]::param-i32: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -30,12 +31,14 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret ;; ;; wasm[0]::function[1]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -54,8 +57,8 @@ ;; ldur x3, [x2, #0x58] ;; cmp x1, x3, uxtx ;; sub sp, x28, #4 -;; b.hs #0x184 -;; 94: mov sp, x28 +;; b.hs #0x18c +;; 98: mov sp, x28 ;; mov x16, x1 ;; mov x16, #8 ;; mul x16, x16, x16 @@ -66,31 +69,31 @@ ;; csel x2, x4, x4, hs ;; ldur x0, [x2] ;; tst x0, x0 -;; b.ne #0xf8 -;; b #0xc8 -;; c8: sub x28, x28, #4 +;; b.ne #0xfc +;; b #0xcc +;; cc: sub x28, x28, #4 ;; mov sp, x28 ;; stur w1, [x28] ;; mov x0, x9 ;; mov x16, #0 ;; mov w1, w16 ;; ldur w2, [x28] -;; bl #0x394 -;; e8: add x28, x28, #4 +;; bl #0x424 +;; ec: add x28, x28, #4 ;; mov sp, x28 ;; ldur x9, [x28, #0x14] -;; b #0xfc -;; f8: and x0, x0, #0xfffffffffffffffe +;; b #0x100 +;; fc: and x0, x0, #0xfffffffffffffffe ;; sub sp, x28, #4 -;; cbz x0, #0x188 -;; 104: mov sp, x28 +;; cbz x0, #0x190 +;; 108: mov sp, x28 ;; ldur x16, [x9, #0x40] ;; ldur w1, [x16] ;; ldur w2, [x0, #0x10] ;; cmp w1, w2, uxtx ;; sub sp, x28, #4 -;; b.ne #0x18c -;; 120: mov sp, x28 +;; b.ne #0x194 +;; 124: mov sp, x28 ;; sub x28, x28, #8 ;; mov sp, x28 ;; stur x0, [x28] @@ -105,7 +108,7 @@ ;; mov x1, x9 ;; ldur w2, [x28, #4] ;; blr x4 -;; 15c: add x28, x28, #4 +;; 160: add x28, x28, #4 ;; mov sp, x28 ;; add x28, x28, #4 ;; mov sp, x28 @@ -113,8 +116,9 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 184: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 188: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 18c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 190: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 194: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/f32_abs/f32_abs_const.wat b/tests/disas/winch/aarch64/f32_abs/f32_abs_const.wat index 0e44c8b24092..f634bb126cfd 100644 --- a/tests/disas/winch/aarch64/f32_abs/f32_abs_const.wat +++ b/tests/disas/winch/aarch64/f32_abs/f32_abs_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_abs/f32_abs_param.wat b/tests/disas/winch/aarch64/f32_abs/f32_abs_param.wat index c018229fc975..dde079bb14a6 100644 --- a/tests/disas/winch/aarch64/f32_abs/f32_abs_param.wat +++ b/tests/disas/winch/aarch64/f32_abs/f32_abs_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_add/const.wat b/tests/disas/winch/aarch64/f32_add/const.wat index 10b052a9eb48..5ec361836880 100644 --- a/tests/disas/winch/aarch64/f32_add/const.wat +++ b/tests/disas/winch/aarch64/f32_add/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -28,5 +29,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_add/locals.wat b/tests/disas/winch/aarch64/f32_add/locals.wat index 42d17f1d6afc..8e2e4203cf58 100644 --- a/tests/disas/winch/aarch64/f32_add/locals.wat +++ b/tests/disas/winch/aarch64/f32_add/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_add/params.wat b/tests/disas/winch/aarch64/f32_add/params.wat index 5f521bfefc84..d9f0a6aba5ae 100644 --- a/tests/disas/winch/aarch64/f32_add/params.wat +++ b/tests/disas/winch/aarch64/f32_add/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_ceil/f32_ceil_const.wat b/tests/disas/winch/aarch64/f32_ceil/f32_ceil_const.wat index f6f043046516..a7a64b8f9f9f 100644 --- a/tests/disas/winch/aarch64/f32_ceil/f32_ceil_const.wat +++ b/tests/disas/winch/aarch64/f32_ceil/f32_ceil_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_ceil/f32_ceil_param.wat b/tests/disas/winch/aarch64/f32_ceil/f32_ceil_param.wat index d3b30e8f4bbd..adeaebc06583 100644 --- a/tests/disas/winch/aarch64/f32_ceil/f32_ceil_param.wat +++ b/tests/disas/winch/aarch64/f32_ceil/f32_ceil_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i32_s/const.wat b/tests/disas/winch/aarch64/f32_convert_i32_s/const.wat index 9e28d335b87b..bf00b6805b0c 100644 --- a/tests/disas/winch/aarch64/f32_convert_i32_s/const.wat +++ b/tests/disas/winch/aarch64/f32_convert_i32_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i32_s/locals.wat b/tests/disas/winch/aarch64/f32_convert_i32_s/locals.wat index 1fc7ceee32a5..d28144805aec 100644 --- a/tests/disas/winch/aarch64/f32_convert_i32_s/locals.wat +++ b/tests/disas/winch/aarch64/f32_convert_i32_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i32_s/params.wat b/tests/disas/winch/aarch64/f32_convert_i32_s/params.wat index 69e30c43ca41..a925441e2740 100644 --- a/tests/disas/winch/aarch64/f32_convert_i32_s/params.wat +++ b/tests/disas/winch/aarch64/f32_convert_i32_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i32_s/spilled.wat b/tests/disas/winch/aarch64/f32_convert_i32_s/spilled.wat index c7dad4c378c3..1b5ee14c1136 100644 --- a/tests/disas/winch/aarch64/f32_convert_i32_s/spilled.wat +++ b/tests/disas/winch/aarch64/f32_convert_i32_s/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i32_u/const.wat b/tests/disas/winch/aarch64/f32_convert_i32_u/const.wat index c9268aac5788..48c43076816e 100644 --- a/tests/disas/winch/aarch64/f32_convert_i32_u/const.wat +++ b/tests/disas/winch/aarch64/f32_convert_i32_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i32_u/locals.wat b/tests/disas/winch/aarch64/f32_convert_i32_u/locals.wat index a2f13179c2d8..c787c0faebd7 100644 --- a/tests/disas/winch/aarch64/f32_convert_i32_u/locals.wat +++ b/tests/disas/winch/aarch64/f32_convert_i32_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i32_u/params.wat b/tests/disas/winch/aarch64/f32_convert_i32_u/params.wat index d26a1a72dcca..23ec0e37f6cf 100644 --- a/tests/disas/winch/aarch64/f32_convert_i32_u/params.wat +++ b/tests/disas/winch/aarch64/f32_convert_i32_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i32_u/spilled.wat b/tests/disas/winch/aarch64/f32_convert_i32_u/spilled.wat index 60d397d4d6b8..1bc769285c51 100644 --- a/tests/disas/winch/aarch64/f32_convert_i32_u/spilled.wat +++ b/tests/disas/winch/aarch64/f32_convert_i32_u/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i64_s/const.wat b/tests/disas/winch/aarch64/f32_convert_i64_s/const.wat index c5f787b97667..2735c463b3b6 100644 --- a/tests/disas/winch/aarch64/f32_convert_i64_s/const.wat +++ b/tests/disas/winch/aarch64/f32_convert_i64_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i64_s/locals.wat b/tests/disas/winch/aarch64/f32_convert_i64_s/locals.wat index c46f1a9a4133..1620f435f086 100644 --- a/tests/disas/winch/aarch64/f32_convert_i64_s/locals.wat +++ b/tests/disas/winch/aarch64/f32_convert_i64_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i64_s/params.wat b/tests/disas/winch/aarch64/f32_convert_i64_s/params.wat index f7c7cc603db9..eb9780b1b4d7 100644 --- a/tests/disas/winch/aarch64/f32_convert_i64_s/params.wat +++ b/tests/disas/winch/aarch64/f32_convert_i64_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i64_s/spilled.wat b/tests/disas/winch/aarch64/f32_convert_i64_s/spilled.wat index de355b4f4ac7..6c5eaeb78374 100644 --- a/tests/disas/winch/aarch64/f32_convert_i64_s/spilled.wat +++ b/tests/disas/winch/aarch64/f32_convert_i64_s/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i64_u/const.wat b/tests/disas/winch/aarch64/f32_convert_i64_u/const.wat index f1b13b7bace7..3b11b6a51d88 100644 --- a/tests/disas/winch/aarch64/f32_convert_i64_u/const.wat +++ b/tests/disas/winch/aarch64/f32_convert_i64_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i64_u/locals.wat b/tests/disas/winch/aarch64/f32_convert_i64_u/locals.wat index a7e013bda131..f9f0cb4447c5 100644 --- a/tests/disas/winch/aarch64/f32_convert_i64_u/locals.wat +++ b/tests/disas/winch/aarch64/f32_convert_i64_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i64_u/params.wat b/tests/disas/winch/aarch64/f32_convert_i64_u/params.wat index 0f7148fbbd77..edf64f92bf70 100644 --- a/tests/disas/winch/aarch64/f32_convert_i64_u/params.wat +++ b/tests/disas/winch/aarch64/f32_convert_i64_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_convert_i64_u/spilled.wat b/tests/disas/winch/aarch64/f32_convert_i64_u/spilled.wat index c66eb9646c65..e7db45aaf7e9 100644 --- a/tests/disas/winch/aarch64/f32_convert_i64_u/spilled.wat +++ b/tests/disas/winch/aarch64/f32_convert_i64_u/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_copysign/const.wat b/tests/disas/winch/aarch64/f32_copysign/const.wat index 58372694ba28..87586cdff3a7 100644 --- a/tests/disas/winch/aarch64/f32_copysign/const.wat +++ b/tests/disas/winch/aarch64/f32_copysign/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -29,5 +30,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_copysign/locals.wat b/tests/disas/winch/aarch64/f32_copysign/locals.wat index f49a83d9180c..924a6ce6991c 100644 --- a/tests/disas/winch/aarch64/f32_copysign/locals.wat +++ b/tests/disas/winch/aarch64/f32_copysign/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -44,5 +45,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_copysign/params.wat b/tests/disas/winch/aarch64/f32_copysign/params.wat index 32b6c71109d0..b5e5a377ce8e 100644 --- a/tests/disas/winch/aarch64/f32_copysign/params.wat +++ b/tests/disas/winch/aarch64/f32_copysign/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_demote_f64/const.wat b/tests/disas/winch/aarch64/f32_demote_f64/const.wat index 50870abf01a5..b78619cbd101 100644 --- a/tests/disas/winch/aarch64/f32_demote_f64/const.wat +++ b/tests/disas/winch/aarch64/f32_demote_f64/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_demote_f64/locals.wat b/tests/disas/winch/aarch64/f32_demote_f64/locals.wat index 8c3f4bfa2c98..1a120c176b8c 100644 --- a/tests/disas/winch/aarch64/f32_demote_f64/locals.wat +++ b/tests/disas/winch/aarch64/f32_demote_f64/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_demote_f64/params.wat b/tests/disas/winch/aarch64/f32_demote_f64/params.wat index dd4910efb351..cd4666ff9d67 100644 --- a/tests/disas/winch/aarch64/f32_demote_f64/params.wat +++ b/tests/disas/winch/aarch64/f32_demote_f64/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_div/const.wat b/tests/disas/winch/aarch64/f32_div/const.wat index b1987a98ddc8..584fa37933fd 100644 --- a/tests/disas/winch/aarch64/f32_div/const.wat +++ b/tests/disas/winch/aarch64/f32_div/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -28,5 +29,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_div/locals.wat b/tests/disas/winch/aarch64/f32_div/locals.wat index 5aef9153678c..26802c528c9c 100644 --- a/tests/disas/winch/aarch64/f32_div/locals.wat +++ b/tests/disas/winch/aarch64/f32_div/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_div/params.wat b/tests/disas/winch/aarch64/f32_div/params.wat index f353a50c7c7b..468b237e3497 100644 --- a/tests/disas/winch/aarch64/f32_div/params.wat +++ b/tests/disas/winch/aarch64/f32_div/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_eq/const.wat b/tests/disas/winch/aarch64/f32_eq/const.wat index b205814d710a..bdc85c2dc5c8 100644 --- a/tests/disas/winch/aarch64/f32_eq/const.wat +++ b/tests/disas/winch/aarch64/f32_eq/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_eq/locals.wat b/tests/disas/winch/aarch64/f32_eq/locals.wat index 385b9087890c..78ca473f43c9 100644 --- a/tests/disas/winch/aarch64/f32_eq/locals.wat +++ b/tests/disas/winch/aarch64/f32_eq/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_eq/params.wat b/tests/disas/winch/aarch64/f32_eq/params.wat index c000583a1559..ab0973af610d 100644 --- a/tests/disas/winch/aarch64/f32_eq/params.wat +++ b/tests/disas/winch/aarch64/f32_eq/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_floor/f32_floor_const.wat b/tests/disas/winch/aarch64/f32_floor/f32_floor_const.wat index cb0caa640b8f..d5c1b1f4275e 100644 --- a/tests/disas/winch/aarch64/f32_floor/f32_floor_const.wat +++ b/tests/disas/winch/aarch64/f32_floor/f32_floor_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_floor/f32_floor_param.wat b/tests/disas/winch/aarch64/f32_floor/f32_floor_param.wat index 9c553722b6c5..03dc83386a99 100644 --- a/tests/disas/winch/aarch64/f32_floor/f32_floor_param.wat +++ b/tests/disas/winch/aarch64/f32_floor/f32_floor_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_ge/const.wat b/tests/disas/winch/aarch64/f32_ge/const.wat index c7476b90300c..a844a59bdd8e 100644 --- a/tests/disas/winch/aarch64/f32_ge/const.wat +++ b/tests/disas/winch/aarch64/f32_ge/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_ge/locals.wat b/tests/disas/winch/aarch64/f32_ge/locals.wat index 23d6838e0147..942abd87a5c2 100644 --- a/tests/disas/winch/aarch64/f32_ge/locals.wat +++ b/tests/disas/winch/aarch64/f32_ge/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_ge/params.wat b/tests/disas/winch/aarch64/f32_ge/params.wat index d2764310f57f..f2ee68079c98 100644 --- a/tests/disas/winch/aarch64/f32_ge/params.wat +++ b/tests/disas/winch/aarch64/f32_ge/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_gt/const.wat b/tests/disas/winch/aarch64/f32_gt/const.wat index 517f2e74f5e7..91c7a4f54368 100644 --- a/tests/disas/winch/aarch64/f32_gt/const.wat +++ b/tests/disas/winch/aarch64/f32_gt/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_gt/locals.wat b/tests/disas/winch/aarch64/f32_gt/locals.wat index 74d76cbe2ebe..5848d447b8af 100644 --- a/tests/disas/winch/aarch64/f32_gt/locals.wat +++ b/tests/disas/winch/aarch64/f32_gt/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_gt/params.wat b/tests/disas/winch/aarch64/f32_gt/params.wat index c9a579aa70ef..4da6394e8581 100644 --- a/tests/disas/winch/aarch64/f32_gt/params.wat +++ b/tests/disas/winch/aarch64/f32_gt/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_le/const.wat b/tests/disas/winch/aarch64/f32_le/const.wat index 9d6576ea8172..514c565fa4c8 100644 --- a/tests/disas/winch/aarch64/f32_le/const.wat +++ b/tests/disas/winch/aarch64/f32_le/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_le/locals.wat b/tests/disas/winch/aarch64/f32_le/locals.wat index 85c9c0a4463e..a17089a1164a 100644 --- a/tests/disas/winch/aarch64/f32_le/locals.wat +++ b/tests/disas/winch/aarch64/f32_le/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_le/params.wat b/tests/disas/winch/aarch64/f32_le/params.wat index 5c4506b0f4cb..c13eb0deb652 100644 --- a/tests/disas/winch/aarch64/f32_le/params.wat +++ b/tests/disas/winch/aarch64/f32_le/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_lt/const.wat b/tests/disas/winch/aarch64/f32_lt/const.wat index caa405bb78fb..acc16ad4f6cf 100644 --- a/tests/disas/winch/aarch64/f32_lt/const.wat +++ b/tests/disas/winch/aarch64/f32_lt/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_lt/locals.wat b/tests/disas/winch/aarch64/f32_lt/locals.wat index ff15aaff2e7a..9719f8ef3282 100644 --- a/tests/disas/winch/aarch64/f32_lt/locals.wat +++ b/tests/disas/winch/aarch64/f32_lt/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_lt/params.wat b/tests/disas/winch/aarch64/f32_lt/params.wat index 713635a7723f..dd96a8fa8a8e 100644 --- a/tests/disas/winch/aarch64/f32_lt/params.wat +++ b/tests/disas/winch/aarch64/f32_lt/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_max/const.wat b/tests/disas/winch/aarch64/f32_max/const.wat index 011d8dd175d4..d7c9c34e385b 100644 --- a/tests/disas/winch/aarch64/f32_max/const.wat +++ b/tests/disas/winch/aarch64/f32_max/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -28,5 +29,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_max/locals.wat b/tests/disas/winch/aarch64/f32_max/locals.wat index a6a4f66bca77..aa80dcf6f339 100644 --- a/tests/disas/winch/aarch64/f32_max/locals.wat +++ b/tests/disas/winch/aarch64/f32_max/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_max/params.wat b/tests/disas/winch/aarch64/f32_max/params.wat index b39414e9de60..9b0c9bc12286 100644 --- a/tests/disas/winch/aarch64/f32_max/params.wat +++ b/tests/disas/winch/aarch64/f32_max/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_min/const.wat b/tests/disas/winch/aarch64/f32_min/const.wat index b169c810e0e3..ebe91ffeb83c 100644 --- a/tests/disas/winch/aarch64/f32_min/const.wat +++ b/tests/disas/winch/aarch64/f32_min/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -28,5 +29,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_min/locals.wat b/tests/disas/winch/aarch64/f32_min/locals.wat index 311f0ac8ec68..44199a554928 100644 --- a/tests/disas/winch/aarch64/f32_min/locals.wat +++ b/tests/disas/winch/aarch64/f32_min/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_min/params.wat b/tests/disas/winch/aarch64/f32_min/params.wat index 94338ef515d7..cc3d588c1279 100644 --- a/tests/disas/winch/aarch64/f32_min/params.wat +++ b/tests/disas/winch/aarch64/f32_min/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_mul/const.wat b/tests/disas/winch/aarch64/f32_mul/const.wat index 8a2874d07e56..331f05b98df4 100644 --- a/tests/disas/winch/aarch64/f32_mul/const.wat +++ b/tests/disas/winch/aarch64/f32_mul/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -28,5 +29,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_mul/locals.wat b/tests/disas/winch/aarch64/f32_mul/locals.wat index 9a367b01df32..6d6108f48af0 100644 --- a/tests/disas/winch/aarch64/f32_mul/locals.wat +++ b/tests/disas/winch/aarch64/f32_mul/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_mul/params.wat b/tests/disas/winch/aarch64/f32_mul/params.wat index 77afce522824..7ea4bc11869d 100644 --- a/tests/disas/winch/aarch64/f32_mul/params.wat +++ b/tests/disas/winch/aarch64/f32_mul/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_ne/const.wat b/tests/disas/winch/aarch64/f32_ne/const.wat index 7fa5457ae6e4..290ac18d3b52 100644 --- a/tests/disas/winch/aarch64/f32_ne/const.wat +++ b/tests/disas/winch/aarch64/f32_ne/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_ne/locals.wat b/tests/disas/winch/aarch64/f32_ne/locals.wat index 4451058a670a..4a589a584616 100644 --- a/tests/disas/winch/aarch64/f32_ne/locals.wat +++ b/tests/disas/winch/aarch64/f32_ne/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_ne/params.wat b/tests/disas/winch/aarch64/f32_ne/params.wat index 2e9d8132148d..5f33c3d14ffa 100644 --- a/tests/disas/winch/aarch64/f32_ne/params.wat +++ b/tests/disas/winch/aarch64/f32_ne/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_nearest/f32_nearest_const.wat b/tests/disas/winch/aarch64/f32_nearest/f32_nearest_const.wat index d0bcf2b61572..8b8892567faf 100644 --- a/tests/disas/winch/aarch64/f32_nearest/f32_nearest_const.wat +++ b/tests/disas/winch/aarch64/f32_nearest/f32_nearest_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_nearest/f32_nearest_param.wat b/tests/disas/winch/aarch64/f32_nearest/f32_nearest_param.wat index b8ac11dce9b6..ae3855c40635 100644 --- a/tests/disas/winch/aarch64/f32_nearest/f32_nearest_param.wat +++ b/tests/disas/winch/aarch64/f32_nearest/f32_nearest_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_neg/f32_neg_const.wat b/tests/disas/winch/aarch64/f32_neg/f32_neg_const.wat index ce41011527e4..d69fb098e482 100644 --- a/tests/disas/winch/aarch64/f32_neg/f32_neg_const.wat +++ b/tests/disas/winch/aarch64/f32_neg/f32_neg_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_neg/f32_neg_param.wat b/tests/disas/winch/aarch64/f32_neg/f32_neg_param.wat index 54e80f33ca34..c293f7375fc4 100644 --- a/tests/disas/winch/aarch64/f32_neg/f32_neg_param.wat +++ b/tests/disas/winch/aarch64/f32_neg/f32_neg_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_reinterpret_i32/const.wat b/tests/disas/winch/aarch64/f32_reinterpret_i32/const.wat index 4ec19119b351..05dab6128406 100644 --- a/tests/disas/winch/aarch64/f32_reinterpret_i32/const.wat +++ b/tests/disas/winch/aarch64/f32_reinterpret_i32/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_reinterpret_i32/locals.wat b/tests/disas/winch/aarch64/f32_reinterpret_i32/locals.wat index 5c738e4e6a96..d80c01f5ef34 100644 --- a/tests/disas/winch/aarch64/f32_reinterpret_i32/locals.wat +++ b/tests/disas/winch/aarch64/f32_reinterpret_i32/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_reinterpret_i32/params.wat b/tests/disas/winch/aarch64/f32_reinterpret_i32/params.wat index c3a181d5e707..34efd106a7ab 100644 --- a/tests/disas/winch/aarch64/f32_reinterpret_i32/params.wat +++ b/tests/disas/winch/aarch64/f32_reinterpret_i32/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_reinterpret_i32/ret_int.wat b/tests/disas/winch/aarch64/f32_reinterpret_i32/ret_int.wat index 6c62a17ac259..11de4f7ec335 100644 --- a/tests/disas/winch/aarch64/f32_reinterpret_i32/ret_int.wat +++ b/tests/disas/winch/aarch64/f32_reinterpret_i32/ret_int.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_reinterpret_i32/spilled.wat b/tests/disas/winch/aarch64/f32_reinterpret_i32/spilled.wat index 741ce1c8d6cb..0303cf2939cf 100644 --- a/tests/disas/winch/aarch64/f32_reinterpret_i32/spilled.wat +++ b/tests/disas/winch/aarch64/f32_reinterpret_i32/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_sqrt/f32_sqrt_const.wat b/tests/disas/winch/aarch64/f32_sqrt/f32_sqrt_const.wat index 3b34291235e3..160b6a1dcec0 100644 --- a/tests/disas/winch/aarch64/f32_sqrt/f32_sqrt_const.wat +++ b/tests/disas/winch/aarch64/f32_sqrt/f32_sqrt_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_sqrt/f32_sqrt_param.wat b/tests/disas/winch/aarch64/f32_sqrt/f32_sqrt_param.wat index a11c3f2e452f..0faa160352db 100644 --- a/tests/disas/winch/aarch64/f32_sqrt/f32_sqrt_param.wat +++ b/tests/disas/winch/aarch64/f32_sqrt/f32_sqrt_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_sub/const.wat b/tests/disas/winch/aarch64/f32_sub/const.wat index 31df212c31b3..8e214af3d567 100644 --- a/tests/disas/winch/aarch64/f32_sub/const.wat +++ b/tests/disas/winch/aarch64/f32_sub/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -28,5 +29,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_sub/locals.wat b/tests/disas/winch/aarch64/f32_sub/locals.wat index ed183a260760..83a787b712d2 100644 --- a/tests/disas/winch/aarch64/f32_sub/locals.wat +++ b/tests/disas/winch/aarch64/f32_sub/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_sub/params.wat b/tests/disas/winch/aarch64/f32_sub/params.wat index 590ec9f07e05..24f312ffc2a9 100644 --- a/tests/disas/winch/aarch64/f32_sub/params.wat +++ b/tests/disas/winch/aarch64/f32_sub/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_trunc/f32_trunc_const.wat b/tests/disas/winch/aarch64/f32_trunc/f32_trunc_const.wat index 6b98be0cca7b..81b9c8fb45c5 100644 --- a/tests/disas/winch/aarch64/f32_trunc/f32_trunc_const.wat +++ b/tests/disas/winch/aarch64/f32_trunc/f32_trunc_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f32_trunc/f32_trunc_param.wat b/tests/disas/winch/aarch64/f32_trunc/f32_trunc_param.wat index 3f56933fd4ed..244c31f24687 100644 --- a/tests/disas/winch/aarch64/f32_trunc/f32_trunc_param.wat +++ b/tests/disas/winch/aarch64/f32_trunc/f32_trunc_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_abs/f64_abs_const.wat b/tests/disas/winch/aarch64/f64_abs/f64_abs_const.wat index fdb45030c452..0c3361dc81cf 100644 --- a/tests/disas/winch/aarch64/f64_abs/f64_abs_const.wat +++ b/tests/disas/winch/aarch64/f64_abs/f64_abs_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_abs/f64_abs_param.wat b/tests/disas/winch/aarch64/f64_abs/f64_abs_param.wat index 97f5036830b8..add51de7fb71 100644 --- a/tests/disas/winch/aarch64/f64_abs/f64_abs_param.wat +++ b/tests/disas/winch/aarch64/f64_abs/f64_abs_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_add/const.wat b/tests/disas/winch/aarch64/f64_add/const.wat index 3465791140a5..c2dc1bb2f7fe 100644 --- a/tests/disas/winch/aarch64/f64_add/const.wat +++ b/tests/disas/winch/aarch64/f64_add/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -32,5 +33,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_add/locals.wat b/tests/disas/winch/aarch64/f64_add/locals.wat index a27800c32145..9beb0badf1de 100644 --- a/tests/disas/winch/aarch64/f64_add/locals.wat +++ b/tests/disas/winch/aarch64/f64_add/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -48,5 +49,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_add/params.wat b/tests/disas/winch/aarch64/f64_add/params.wat index 1d8a70d345be..5189f37da4b5 100644 --- a/tests/disas/winch/aarch64/f64_add/params.wat +++ b/tests/disas/winch/aarch64/f64_add/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_ceil/f64_ceil_const.wat b/tests/disas/winch/aarch64/f64_ceil/f64_ceil_const.wat index 55710e0bdf81..100c7964c6ac 100644 --- a/tests/disas/winch/aarch64/f64_ceil/f64_ceil_const.wat +++ b/tests/disas/winch/aarch64/f64_ceil/f64_ceil_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_ceil/f64_ceil_param.wat b/tests/disas/winch/aarch64/f64_ceil/f64_ceil_param.wat index 210582867025..3e210f8143a8 100644 --- a/tests/disas/winch/aarch64/f64_ceil/f64_ceil_param.wat +++ b/tests/disas/winch/aarch64/f64_ceil/f64_ceil_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i32_s/const.wat b/tests/disas/winch/aarch64/f64_convert_i32_s/const.wat index f5d3acb6fd0f..b0d777905a31 100644 --- a/tests/disas/winch/aarch64/f64_convert_i32_s/const.wat +++ b/tests/disas/winch/aarch64/f64_convert_i32_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i32_s/locals.wat b/tests/disas/winch/aarch64/f64_convert_i32_s/locals.wat index 0a6c7826c34b..4987dcfa490b 100644 --- a/tests/disas/winch/aarch64/f64_convert_i32_s/locals.wat +++ b/tests/disas/winch/aarch64/f64_convert_i32_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i32_s/params.wat b/tests/disas/winch/aarch64/f64_convert_i32_s/params.wat index 4dd89a25eb88..b23a49762006 100644 --- a/tests/disas/winch/aarch64/f64_convert_i32_s/params.wat +++ b/tests/disas/winch/aarch64/f64_convert_i32_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i32_s/spilled.wat b/tests/disas/winch/aarch64/f64_convert_i32_s/spilled.wat index 53f70a6f89f6..3ce4f65ca770 100644 --- a/tests/disas/winch/aarch64/f64_convert_i32_s/spilled.wat +++ b/tests/disas/winch/aarch64/f64_convert_i32_s/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i32_u/const.wat b/tests/disas/winch/aarch64/f64_convert_i32_u/const.wat index f2f8e4c066fd..92cdcce1c0e1 100644 --- a/tests/disas/winch/aarch64/f64_convert_i32_u/const.wat +++ b/tests/disas/winch/aarch64/f64_convert_i32_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i32_u/locals.wat b/tests/disas/winch/aarch64/f64_convert_i32_u/locals.wat index 71ff494afda2..0bc88187a63e 100644 --- a/tests/disas/winch/aarch64/f64_convert_i32_u/locals.wat +++ b/tests/disas/winch/aarch64/f64_convert_i32_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i32_u/params.wat b/tests/disas/winch/aarch64/f64_convert_i32_u/params.wat index 36947127c607..ea4da51dec06 100644 --- a/tests/disas/winch/aarch64/f64_convert_i32_u/params.wat +++ b/tests/disas/winch/aarch64/f64_convert_i32_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i32_u/spilled.wat b/tests/disas/winch/aarch64/f64_convert_i32_u/spilled.wat index b8e2a050148a..3037d3186b53 100644 --- a/tests/disas/winch/aarch64/f64_convert_i32_u/spilled.wat +++ b/tests/disas/winch/aarch64/f64_convert_i32_u/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i64_s/const.wat b/tests/disas/winch/aarch64/f64_convert_i64_s/const.wat index a78b26f08aaf..10972740b5a4 100644 --- a/tests/disas/winch/aarch64/f64_convert_i64_s/const.wat +++ b/tests/disas/winch/aarch64/f64_convert_i64_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i64_s/locals.wat b/tests/disas/winch/aarch64/f64_convert_i64_s/locals.wat index b77bd854067c..39ba1b9b8007 100644 --- a/tests/disas/winch/aarch64/f64_convert_i64_s/locals.wat +++ b/tests/disas/winch/aarch64/f64_convert_i64_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i64_s/params.wat b/tests/disas/winch/aarch64/f64_convert_i64_s/params.wat index c53c9a12e25e..8f9e0a4ffa69 100644 --- a/tests/disas/winch/aarch64/f64_convert_i64_s/params.wat +++ b/tests/disas/winch/aarch64/f64_convert_i64_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i64_s/spilled.wat b/tests/disas/winch/aarch64/f64_convert_i64_s/spilled.wat index 78e29e13c80e..9cd40ec38605 100644 --- a/tests/disas/winch/aarch64/f64_convert_i64_s/spilled.wat +++ b/tests/disas/winch/aarch64/f64_convert_i64_s/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i64_u/const.wat b/tests/disas/winch/aarch64/f64_convert_i64_u/const.wat index 3b23ca114a78..12c6565565d8 100644 --- a/tests/disas/winch/aarch64/f64_convert_i64_u/const.wat +++ b/tests/disas/winch/aarch64/f64_convert_i64_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i64_u/locals.wat b/tests/disas/winch/aarch64/f64_convert_i64_u/locals.wat index 0de8b0b9bc0f..3c2c513c14c6 100644 --- a/tests/disas/winch/aarch64/f64_convert_i64_u/locals.wat +++ b/tests/disas/winch/aarch64/f64_convert_i64_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i64_u/params.wat b/tests/disas/winch/aarch64/f64_convert_i64_u/params.wat index 6541d077733e..3ad879dd85d0 100644 --- a/tests/disas/winch/aarch64/f64_convert_i64_u/params.wat +++ b/tests/disas/winch/aarch64/f64_convert_i64_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_convert_i64_u/spilled.wat b/tests/disas/winch/aarch64/f64_convert_i64_u/spilled.wat index a916843e3a06..0ccfb3d4c094 100644 --- a/tests/disas/winch/aarch64/f64_convert_i64_u/spilled.wat +++ b/tests/disas/winch/aarch64/f64_convert_i64_u/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_copysign/const.wat b/tests/disas/winch/aarch64/f64_copysign/const.wat index c5c4c7104d3c..37299471d140 100644 --- a/tests/disas/winch/aarch64/f64_copysign/const.wat +++ b/tests/disas/winch/aarch64/f64_copysign/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -33,5 +34,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_copysign/locals.wat b/tests/disas/winch/aarch64/f64_copysign/locals.wat index f9dde38e4999..0aafbd1500cc 100644 --- a/tests/disas/winch/aarch64/f64_copysign/locals.wat +++ b/tests/disas/winch/aarch64/f64_copysign/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -49,5 +50,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_copysign/params.wat b/tests/disas/winch/aarch64/f64_copysign/params.wat index db15a60be070..f82ef9718ee1 100644 --- a/tests/disas/winch/aarch64/f64_copysign/params.wat +++ b/tests/disas/winch/aarch64/f64_copysign/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_div/const.wat b/tests/disas/winch/aarch64/f64_div/const.wat index 9da800010b84..ae95dbe240c7 100644 --- a/tests/disas/winch/aarch64/f64_div/const.wat +++ b/tests/disas/winch/aarch64/f64_div/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -32,5 +33,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_div/locals.wat b/tests/disas/winch/aarch64/f64_div/locals.wat index e42ac914f1dc..4f3a3d6679c5 100644 --- a/tests/disas/winch/aarch64/f64_div/locals.wat +++ b/tests/disas/winch/aarch64/f64_div/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -48,5 +49,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_div/params.wat b/tests/disas/winch/aarch64/f64_div/params.wat index 806afb88f008..0611d249e543 100644 --- a/tests/disas/winch/aarch64/f64_div/params.wat +++ b/tests/disas/winch/aarch64/f64_div/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_eq/const.wat b/tests/disas/winch/aarch64/f64_eq/const.wat index c9a0abbaafda..9613d55b3972 100644 --- a/tests/disas/winch/aarch64/f64_eq/const.wat +++ b/tests/disas/winch/aarch64/f64_eq/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_eq/locals.wat b/tests/disas/winch/aarch64/f64_eq/locals.wat index 6059578f8c2d..110d757bdbc3 100644 --- a/tests/disas/winch/aarch64/f64_eq/locals.wat +++ b/tests/disas/winch/aarch64/f64_eq/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_eq/params.wat b/tests/disas/winch/aarch64/f64_eq/params.wat index 5263403af30b..706d10788124 100644 --- a/tests/disas/winch/aarch64/f64_eq/params.wat +++ b/tests/disas/winch/aarch64/f64_eq/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_floor/f64_floor_const.wat b/tests/disas/winch/aarch64/f64_floor/f64_floor_const.wat index 5cba16b46b5c..59eab23432ba 100644 --- a/tests/disas/winch/aarch64/f64_floor/f64_floor_const.wat +++ b/tests/disas/winch/aarch64/f64_floor/f64_floor_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_floor/f64_floor_param.wat b/tests/disas/winch/aarch64/f64_floor/f64_floor_param.wat index d880d77f567b..584ffbcbed15 100644 --- a/tests/disas/winch/aarch64/f64_floor/f64_floor_param.wat +++ b/tests/disas/winch/aarch64/f64_floor/f64_floor_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_ge/const.wat b/tests/disas/winch/aarch64/f64_ge/const.wat index 63e18301255c..1c7c0163d341 100644 --- a/tests/disas/winch/aarch64/f64_ge/const.wat +++ b/tests/disas/winch/aarch64/f64_ge/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_ge/locals.wat b/tests/disas/winch/aarch64/f64_ge/locals.wat index 781dab14bab0..0508c50ea199 100644 --- a/tests/disas/winch/aarch64/f64_ge/locals.wat +++ b/tests/disas/winch/aarch64/f64_ge/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_ge/params.wat b/tests/disas/winch/aarch64/f64_ge/params.wat index d5cabff77500..51cadc16a02c 100644 --- a/tests/disas/winch/aarch64/f64_ge/params.wat +++ b/tests/disas/winch/aarch64/f64_ge/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_gt/const.wat b/tests/disas/winch/aarch64/f64_gt/const.wat index cfc8b117e6d4..5a63991ecb92 100644 --- a/tests/disas/winch/aarch64/f64_gt/const.wat +++ b/tests/disas/winch/aarch64/f64_gt/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_gt/locals.wat b/tests/disas/winch/aarch64/f64_gt/locals.wat index 2ff5036ee9f6..62c9406ed4c3 100644 --- a/tests/disas/winch/aarch64/f64_gt/locals.wat +++ b/tests/disas/winch/aarch64/f64_gt/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_gt/params.wat b/tests/disas/winch/aarch64/f64_gt/params.wat index cf3abe704720..8ee2ae86397b 100644 --- a/tests/disas/winch/aarch64/f64_gt/params.wat +++ b/tests/disas/winch/aarch64/f64_gt/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_le/const.wat b/tests/disas/winch/aarch64/f64_le/const.wat index 7338ccc57ad2..1560c928f005 100644 --- a/tests/disas/winch/aarch64/f64_le/const.wat +++ b/tests/disas/winch/aarch64/f64_le/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_le/locals.wat b/tests/disas/winch/aarch64/f64_le/locals.wat index e53974e892e9..02d332c881ea 100644 --- a/tests/disas/winch/aarch64/f64_le/locals.wat +++ b/tests/disas/winch/aarch64/f64_le/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_le/params.wat b/tests/disas/winch/aarch64/f64_le/params.wat index 62165a5f7ebb..617c3600774e 100644 --- a/tests/disas/winch/aarch64/f64_le/params.wat +++ b/tests/disas/winch/aarch64/f64_le/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_lt/const.wat b/tests/disas/winch/aarch64/f64_lt/const.wat index 8bc3c9e8345c..29d7579f471f 100644 --- a/tests/disas/winch/aarch64/f64_lt/const.wat +++ b/tests/disas/winch/aarch64/f64_lt/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_lt/locals.wat b/tests/disas/winch/aarch64/f64_lt/locals.wat index 401f769f191c..d16be48f02a7 100644 --- a/tests/disas/winch/aarch64/f64_lt/locals.wat +++ b/tests/disas/winch/aarch64/f64_lt/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_lt/params.wat b/tests/disas/winch/aarch64/f64_lt/params.wat index 7dc6987a8a75..4248b8f8278d 100644 --- a/tests/disas/winch/aarch64/f64_lt/params.wat +++ b/tests/disas/winch/aarch64/f64_lt/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_max/const.wat b/tests/disas/winch/aarch64/f64_max/const.wat index 3968510d99b5..194c3369db25 100644 --- a/tests/disas/winch/aarch64/f64_max/const.wat +++ b/tests/disas/winch/aarch64/f64_max/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -32,5 +33,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_max/locals.wat b/tests/disas/winch/aarch64/f64_max/locals.wat index c354038508bb..f85fed5ebffd 100644 --- a/tests/disas/winch/aarch64/f64_max/locals.wat +++ b/tests/disas/winch/aarch64/f64_max/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -48,5 +49,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_max/params.wat b/tests/disas/winch/aarch64/f64_max/params.wat index 4e2f29e02342..d7c7eb63b806 100644 --- a/tests/disas/winch/aarch64/f64_max/params.wat +++ b/tests/disas/winch/aarch64/f64_max/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_min/const.wat b/tests/disas/winch/aarch64/f64_min/const.wat index 6a23756a6736..56fd27fe8bbe 100644 --- a/tests/disas/winch/aarch64/f64_min/const.wat +++ b/tests/disas/winch/aarch64/f64_min/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -32,5 +33,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_min/locals.wat b/tests/disas/winch/aarch64/f64_min/locals.wat index 4874841f06c0..5ac425178884 100644 --- a/tests/disas/winch/aarch64/f64_min/locals.wat +++ b/tests/disas/winch/aarch64/f64_min/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -48,5 +49,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_min/params.wat b/tests/disas/winch/aarch64/f64_min/params.wat index a08562ccca65..2f4b1aede063 100644 --- a/tests/disas/winch/aarch64/f64_min/params.wat +++ b/tests/disas/winch/aarch64/f64_min/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_mul/const.wat b/tests/disas/winch/aarch64/f64_mul/const.wat index 3b8d94ad2cab..545b1cf42a99 100644 --- a/tests/disas/winch/aarch64/f64_mul/const.wat +++ b/tests/disas/winch/aarch64/f64_mul/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -32,5 +33,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_mul/locals.wat b/tests/disas/winch/aarch64/f64_mul/locals.wat index 64f848a1855e..a571dbc6316b 100644 --- a/tests/disas/winch/aarch64/f64_mul/locals.wat +++ b/tests/disas/winch/aarch64/f64_mul/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -48,5 +49,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_mul/params.wat b/tests/disas/winch/aarch64/f64_mul/params.wat index 76afc78b6147..86f877a89e76 100644 --- a/tests/disas/winch/aarch64/f64_mul/params.wat +++ b/tests/disas/winch/aarch64/f64_mul/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_ne/const.wat b/tests/disas/winch/aarch64/f64_ne/const.wat index 6335fcb55212..743620ac0e9a 100644 --- a/tests/disas/winch/aarch64/f64_ne/const.wat +++ b/tests/disas/winch/aarch64/f64_ne/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_ne/locals.wat b/tests/disas/winch/aarch64/f64_ne/locals.wat index 9ea8714e6695..8d3504ae5a2d 100644 --- a/tests/disas/winch/aarch64/f64_ne/locals.wat +++ b/tests/disas/winch/aarch64/f64_ne/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_ne/params.wat b/tests/disas/winch/aarch64/f64_ne/params.wat index 4631961b98f5..276467eb0264 100644 --- a/tests/disas/winch/aarch64/f64_ne/params.wat +++ b/tests/disas/winch/aarch64/f64_ne/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_nearest/f64_nearest_const.wat b/tests/disas/winch/aarch64/f64_nearest/f64_nearest_const.wat index 786dc07aa9d5..3597575ff3f6 100644 --- a/tests/disas/winch/aarch64/f64_nearest/f64_nearest_const.wat +++ b/tests/disas/winch/aarch64/f64_nearest/f64_nearest_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_nearest/f64_nearest_param.wat b/tests/disas/winch/aarch64/f64_nearest/f64_nearest_param.wat index fa7f75122c1e..cd9e79baf5b0 100644 --- a/tests/disas/winch/aarch64/f64_nearest/f64_nearest_param.wat +++ b/tests/disas/winch/aarch64/f64_nearest/f64_nearest_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_neg/f64_neg_const.wat b/tests/disas/winch/aarch64/f64_neg/f64_neg_const.wat index 898fb0af7204..58a1340c2437 100644 --- a/tests/disas/winch/aarch64/f64_neg/f64_neg_const.wat +++ b/tests/disas/winch/aarch64/f64_neg/f64_neg_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_neg/f64_neg_param.wat b/tests/disas/winch/aarch64/f64_neg/f64_neg_param.wat index bf802113c5fc..2a67827337e3 100644 --- a/tests/disas/winch/aarch64/f64_neg/f64_neg_param.wat +++ b/tests/disas/winch/aarch64/f64_neg/f64_neg_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_promote_f32/const.wat b/tests/disas/winch/aarch64/f64_promote_f32/const.wat index 30d7f5892d7e..700768d85ade 100644 --- a/tests/disas/winch/aarch64/f64_promote_f32/const.wat +++ b/tests/disas/winch/aarch64/f64_promote_f32/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_promote_f32/locals.wat b/tests/disas/winch/aarch64/f64_promote_f32/locals.wat index 4244cf007f4b..0fe5eb90cdbe 100644 --- a/tests/disas/winch/aarch64/f64_promote_f32/locals.wat +++ b/tests/disas/winch/aarch64/f64_promote_f32/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_promote_f32/params.wat b/tests/disas/winch/aarch64/f64_promote_f32/params.wat index 441e0da0c984..75d0d7ed9cfb 100644 --- a/tests/disas/winch/aarch64/f64_promote_f32/params.wat +++ b/tests/disas/winch/aarch64/f64_promote_f32/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_reinterpret_i64/const.wat b/tests/disas/winch/aarch64/f64_reinterpret_i64/const.wat index ccfaaaa7cd56..22b9424a5a59 100644 --- a/tests/disas/winch/aarch64/f64_reinterpret_i64/const.wat +++ b/tests/disas/winch/aarch64/f64_reinterpret_i64/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_reinterpret_i64/locals.wat b/tests/disas/winch/aarch64/f64_reinterpret_i64/locals.wat index 7881e7a00753..b7be39fd8f2e 100644 --- a/tests/disas/winch/aarch64/f64_reinterpret_i64/locals.wat +++ b/tests/disas/winch/aarch64/f64_reinterpret_i64/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_reinterpret_i64/params.wat b/tests/disas/winch/aarch64/f64_reinterpret_i64/params.wat index 70a4af71a6fd..3ecc42ffbefe 100644 --- a/tests/disas/winch/aarch64/f64_reinterpret_i64/params.wat +++ b/tests/disas/winch/aarch64/f64_reinterpret_i64/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_reinterpret_i64/ret_int.wat b/tests/disas/winch/aarch64/f64_reinterpret_i64/ret_int.wat index 52b61e5c2673..d198b311e841 100644 --- a/tests/disas/winch/aarch64/f64_reinterpret_i64/ret_int.wat +++ b/tests/disas/winch/aarch64/f64_reinterpret_i64/ret_int.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_reinterpret_i64/spilled.wat b/tests/disas/winch/aarch64/f64_reinterpret_i64/spilled.wat index 0ffbb51fbd14..f66a7c95a38a 100644 --- a/tests/disas/winch/aarch64/f64_reinterpret_i64/spilled.wat +++ b/tests/disas/winch/aarch64/f64_reinterpret_i64/spilled.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_sqrt/f64_sqrt_const.wat b/tests/disas/winch/aarch64/f64_sqrt/f64_sqrt_const.wat index f7deb06c7eb7..65a39d9d5a96 100644 --- a/tests/disas/winch/aarch64/f64_sqrt/f64_sqrt_const.wat +++ b/tests/disas/winch/aarch64/f64_sqrt/f64_sqrt_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_sqrt/f64_sqrt_param.wat b/tests/disas/winch/aarch64/f64_sqrt/f64_sqrt_param.wat index 4cb63b9ad11e..f256d06121aa 100644 --- a/tests/disas/winch/aarch64/f64_sqrt/f64_sqrt_param.wat +++ b/tests/disas/winch/aarch64/f64_sqrt/f64_sqrt_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_sub/const.wat b/tests/disas/winch/aarch64/f64_sub/const.wat index 886d1f843d7f..c72421190e8d 100644 --- a/tests/disas/winch/aarch64/f64_sub/const.wat +++ b/tests/disas/winch/aarch64/f64_sub/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -32,5 +33,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_sub/locals.wat b/tests/disas/winch/aarch64/f64_sub/locals.wat index 2af1e7c4cb70..af72871f8890 100644 --- a/tests/disas/winch/aarch64/f64_sub/locals.wat +++ b/tests/disas/winch/aarch64/f64_sub/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -48,5 +49,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_sub/params.wat b/tests/disas/winch/aarch64/f64_sub/params.wat index 2ef0c8582b67..8f26e2f3f0ab 100644 --- a/tests/disas/winch/aarch64/f64_sub/params.wat +++ b/tests/disas/winch/aarch64/f64_sub/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_trunc/f64_trunc_const.wat b/tests/disas/winch/aarch64/f64_trunc/f64_trunc_const.wat index f8e0a45bb79e..59aadc37f14e 100644 --- a/tests/disas/winch/aarch64/f64_trunc/f64_trunc_const.wat +++ b/tests/disas/winch/aarch64/f64_trunc/f64_trunc_const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/f64_trunc/f64_trunc_param.wat b/tests/disas/winch/aarch64/f64_trunc/f64_trunc_param.wat index 59ffeac8be83..81b6c189509e 100644 --- a/tests/disas/winch/aarch64/f64_trunc/f64_trunc_param.wat +++ b/tests/disas/winch/aarch64/f64_trunc/f64_trunc_param.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_add/const.wat b/tests/disas/winch/aarch64/i32_add/const.wat index 916c28738ff3..f8ff7882835a 100644 --- a/tests/disas/winch/aarch64/i32_add/const.wat +++ b/tests/disas/winch/aarch64/i32_add/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_add/locals.wat b/tests/disas/winch/aarch64/i32_add/locals.wat index 3dbc0e821520..1698bc511275 100644 --- a/tests/disas/winch/aarch64/i32_add/locals.wat +++ b/tests/disas/winch/aarch64/i32_add/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_add/max.wat b/tests/disas/winch/aarch64/i32_add/max.wat index e58bc37d7eb6..3451acd23e0e 100644 --- a/tests/disas/winch/aarch64/i32_add/max.wat +++ b/tests/disas/winch/aarch64/i32_add/max.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_add/max_one.wat b/tests/disas/winch/aarch64/i32_add/max_one.wat index 2340b13d6cfb..76ed402bcc5a 100644 --- a/tests/disas/winch/aarch64/i32_add/max_one.wat +++ b/tests/disas/winch/aarch64/i32_add/max_one.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_add/mixed.wat b/tests/disas/winch/aarch64/i32_add/mixed.wat index 1a4e57d5e25a..09f8372da018 100644 --- a/tests/disas/winch/aarch64/i32_add/mixed.wat +++ b/tests/disas/winch/aarch64/i32_add/mixed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_add/params.wat b/tests/disas/winch/aarch64/i32_add/params.wat index 90d34c43e8fa..07d4606fd04d 100644 --- a/tests/disas/winch/aarch64/i32_add/params.wat +++ b/tests/disas/winch/aarch64/i32_add/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_add/signed.wat b/tests/disas/winch/aarch64/i32_add/signed.wat index ac519dff6942..fcfded855a2d 100644 --- a/tests/disas/winch/aarch64/i32_add/signed.wat +++ b/tests/disas/winch/aarch64/i32_add/signed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_add/unsigned_with_zero.wat b/tests/disas/winch/aarch64/i32_add/unsigned_with_zero.wat index c3e6b6907997..319f3aff7206 100644 --- a/tests/disas/winch/aarch64/i32_add/unsigned_with_zero.wat +++ b/tests/disas/winch/aarch64/i32_add/unsigned_with_zero.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_and/const.wat b/tests/disas/winch/aarch64/i32_and/const.wat index 5ce9e96268cd..8aebaf438b6e 100644 --- a/tests/disas/winch/aarch64/i32_and/const.wat +++ b/tests/disas/winch/aarch64/i32_and/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_and/locals.wat b/tests/disas/winch/aarch64/i32_and/locals.wat index 9bd34285fa7c..0ea4724b1b33 100644 --- a/tests/disas/winch/aarch64/i32_and/locals.wat +++ b/tests/disas/winch/aarch64/i32_and/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_and/params.wat b/tests/disas/winch/aarch64/i32_and/params.wat index 3f8bee3a6311..5a03e47a7780 100644 --- a/tests/disas/winch/aarch64/i32_and/params.wat +++ b/tests/disas/winch/aarch64/i32_and/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_clz/const.wat b/tests/disas/winch/aarch64/i32_clz/const.wat index 2ad07d009f74..0c212c8cd0e4 100644 --- a/tests/disas/winch/aarch64/i32_clz/const.wat +++ b/tests/disas/winch/aarch64/i32_clz/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_clz/locals.wat b/tests/disas/winch/aarch64/i32_clz/locals.wat index 5e4d30d291e8..2ccbafd377b5 100644 --- a/tests/disas/winch/aarch64/i32_clz/locals.wat +++ b/tests/disas/winch/aarch64/i32_clz/locals.wat @@ -14,6 +14,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -29,5 +30,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_clz/params.wat b/tests/disas/winch/aarch64/i32_clz/params.wat index 44fc042f26a2..4b16f68c5f72 100644 --- a/tests/disas/winch/aarch64/i32_clz/params.wat +++ b/tests/disas/winch/aarch64/i32_clz/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ctz/const.wat b/tests/disas/winch/aarch64/i32_ctz/const.wat index 6ff52e4c1fac..db97675d3acf 100644 --- a/tests/disas/winch/aarch64/i32_ctz/const.wat +++ b/tests/disas/winch/aarch64/i32_ctz/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ctz/locals.wat b/tests/disas/winch/aarch64/i32_ctz/locals.wat index 741cdfa1c3b0..8d1d5626de61 100644 --- a/tests/disas/winch/aarch64/i32_ctz/locals.wat +++ b/tests/disas/winch/aarch64/i32_ctz/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -28,5 +29,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ctz/params.wat b/tests/disas/winch/aarch64/i32_ctz/params.wat index d3a92ea4a561..b04296b8e8e3 100644 --- a/tests/disas/winch/aarch64/i32_ctz/params.wat +++ b/tests/disas/winch/aarch64/i32_ctz/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_divs/const.wat b/tests/disas/winch/aarch64/i32_divs/const.wat index aae4d77197ca..eb508facf17b 100644 --- a/tests/disas/winch/aarch64/i32_divs/const.wat +++ b/tests/disas/winch/aarch64/i32_divs/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,18 +23,19 @@ ;; mov w0, w16 ;; mov x16, #0x14 ;; mov w1, w16 -;; cbz w0, #0x64 -;; 34: cmn w0, #1 +;; cbz w0, #0x6c +;; 38: cmn w0, #1 ;; ccmp w1, #1, #0, eq -;; b.vs #0x68 -;; 40: sxtw x0, w0 +;; b.vs #0x70 +;; 44: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x1, x1, x0 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divs/one_zero.wat b/tests/disas/winch/aarch64/i32_divs/one_zero.wat index 31fb24635cde..97f38c3013dc 100644 --- a/tests/disas/winch/aarch64/i32_divs/one_zero.wat +++ b/tests/disas/winch/aarch64/i32_divs/one_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,18 +23,19 @@ ;; mov w0, w16 ;; mov x16, #1 ;; mov w1, w16 -;; cbz w0, #0x64 -;; 34: cmn w0, #1 +;; cbz w0, #0x6c +;; 38: cmn w0, #1 ;; ccmp w1, #1, #0, eq -;; b.vs #0x68 -;; 40: sxtw x0, w0 +;; b.vs #0x70 +;; 44: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x1, x1, x0 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divs/overflow.wat b/tests/disas/winch/aarch64/i32_divs/overflow.wat index 2a5ec055ef74..48cbe8a4ca3e 100644 --- a/tests/disas/winch/aarch64/i32_divs/overflow.wat +++ b/tests/disas/winch/aarch64/i32_divs/overflow.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,18 +23,19 @@ ;; mov w0, w16 ;; mov x16, #0x80000000 ;; mov w1, w16 -;; cbz w0, #0x64 -;; 34: cmn w0, #1 +;; cbz w0, #0x6c +;; 38: cmn w0, #1 ;; ccmp w1, #1, #0, eq -;; b.vs #0x68 -;; 40: sxtw x0, w0 +;; b.vs #0x70 +;; 44: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x1, x1, x0 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divs/params.wat b/tests/disas/winch/aarch64/i32_divs/params.wat index 1f90c26f486d..1f6198f4ef76 100644 --- a/tests/disas/winch/aarch64/i32_divs/params.wat +++ b/tests/disas/winch/aarch64/i32_divs/params.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,18 +23,19 @@ ;; stur w3, [x28] ;; ldur w0, [x28] ;; ldur w1, [x28, #4] -;; cbz w0, #0x64 -;; 34: cmn w0, #1 +;; cbz w0, #0x6c +;; 38: cmn w0, #1 ;; ccmp w1, #1, #0, eq -;; b.vs #0x68 -;; 40: sxtw x0, w0 +;; b.vs #0x70 +;; 44: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x1, x1, x0 ;; mov w0, w1 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divs/zero_zero.wat b/tests/disas/winch/aarch64/i32_divs/zero_zero.wat index e973d577b481..7bf7d1fb3aa2 100644 --- a/tests/disas/winch/aarch64/i32_divs/zero_zero.wat +++ b/tests/disas/winch/aarch64/i32_divs/zero_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,18 +23,19 @@ ;; mov w0, w16 ;; mov x16, #0 ;; mov w1, w16 -;; cbz w0, #0x64 -;; 34: cmn w0, #1 +;; cbz w0, #0x6c +;; 38: cmn w0, #1 ;; ccmp w1, #1, #0, eq -;; b.vs #0x68 -;; 40: sxtw x0, w0 +;; b.vs #0x70 +;; 44: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x1, x1, x0 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divu/const.wat b/tests/disas/winch/aarch64/i32_divu/const.wat index 49f3b1dfcbe5..64c3f28f949c 100644 --- a/tests/disas/winch/aarch64/i32_divu/const.wat +++ b/tests/disas/winch/aarch64/i32_divu/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,12 +23,13 @@ ;; mov w0, w16 ;; mov x16, #0x14 ;; mov w1, w16 -;; cbz w0, #0x50 -;; 34: udiv w1, w1, w0 +;; cbz w0, #0x58 +;; 38: udiv w1, w1, w0 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divu/one_zero.wat b/tests/disas/winch/aarch64/i32_divu/one_zero.wat index f577a787b890..5492c7d05bcb 100644 --- a/tests/disas/winch/aarch64/i32_divu/one_zero.wat +++ b/tests/disas/winch/aarch64/i32_divu/one_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,12 +23,13 @@ ;; mov w0, w16 ;; mov x16, #1 ;; mov w1, w16 -;; cbz w0, #0x50 -;; 34: udiv w1, w1, w0 +;; cbz w0, #0x58 +;; 38: udiv w1, w1, w0 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divu/params.wat b/tests/disas/winch/aarch64/i32_divu/params.wat index 6f07082bb741..b6455d1425fc 100644 --- a/tests/disas/winch/aarch64/i32_divu/params.wat +++ b/tests/disas/winch/aarch64/i32_divu/params.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,12 +23,13 @@ ;; stur w3, [x28] ;; ldur w0, [x28] ;; ldur w1, [x28, #4] -;; cbz w0, #0x50 -;; 34: udiv w1, w1, w0 +;; cbz w0, #0x58 +;; 38: udiv w1, w1, w0 ;; mov w0, w1 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divu/signed.wat b/tests/disas/winch/aarch64/i32_divu/signed.wat index 2e19cd20ae3f..9d77ae890dca 100644 --- a/tests/disas/winch/aarch64/i32_divu/signed.wat +++ b/tests/disas/winch/aarch64/i32_divu/signed.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,12 +23,13 @@ ;; mov w0, w16 ;; orr x16, xzr, #0xffffffff ;; mov w1, w16 -;; cbz w0, #0x50 -;; 34: udiv w1, w1, w0 +;; cbz w0, #0x58 +;; 38: udiv w1, w1, w0 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_divu/zero_zero.wat b/tests/disas/winch/aarch64/i32_divu/zero_zero.wat index c4c7c815380a..3e7a9e3eb5fd 100644 --- a/tests/disas/winch/aarch64/i32_divu/zero_zero.wat +++ b/tests/disas/winch/aarch64/i32_divu/zero_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,12 +23,13 @@ ;; mov w0, w16 ;; mov x16, #0 ;; mov w1, w16 -;; cbz w0, #0x50 -;; 34: udiv w1, w1, w0 +;; cbz w0, #0x58 +;; 38: udiv w1, w1, w0 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_eq/const.wat b/tests/disas/winch/aarch64/i32_eq/const.wat index f840ffd9ae57..dc7db9e6583c 100644 --- a/tests/disas/winch/aarch64/i32_eq/const.wat +++ b/tests/disas/winch/aarch64/i32_eq/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_eq/locals.wat b/tests/disas/winch/aarch64/i32_eq/locals.wat index f330330b7090..00dd9a762456 100644 --- a/tests/disas/winch/aarch64/i32_eq/locals.wat +++ b/tests/disas/winch/aarch64/i32_eq/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_eq/params.wat b/tests/disas/winch/aarch64/i32_eq/params.wat index bf74df70d65c..6a19db6a47c3 100644 --- a/tests/disas/winch/aarch64/i32_eq/params.wat +++ b/tests/disas/winch/aarch64/i32_eq/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_extend_16_s/const.wat b/tests/disas/winch/aarch64/i32_extend_16_s/const.wat index 5569668c86db..cc515ae66cf1 100644 --- a/tests/disas/winch/aarch64/i32_extend_16_s/const.wat +++ b/tests/disas/winch/aarch64/i32_extend_16_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_extend_16_s/locals.wat b/tests/disas/winch/aarch64/i32_extend_16_s/locals.wat index 0bef002271c6..08206918173f 100644 --- a/tests/disas/winch/aarch64/i32_extend_16_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_extend_16_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_extend_16_s/params.wat b/tests/disas/winch/aarch64/i32_extend_16_s/params.wat index 62b318b53204..f651b090a4f5 100644 --- a/tests/disas/winch/aarch64/i32_extend_16_s/params.wat +++ b/tests/disas/winch/aarch64/i32_extend_16_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_extend_8_s/const.wat b/tests/disas/winch/aarch64/i32_extend_8_s/const.wat index b15eadd43945..24b330e240b8 100644 --- a/tests/disas/winch/aarch64/i32_extend_8_s/const.wat +++ b/tests/disas/winch/aarch64/i32_extend_8_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_extend_8_s/locals.wat b/tests/disas/winch/aarch64/i32_extend_8_s/locals.wat index f39b7cd0161e..3f3fa9cf4eb1 100644 --- a/tests/disas/winch/aarch64/i32_extend_8_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_extend_8_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_extend_8_s/params.wat b/tests/disas/winch/aarch64/i32_extend_8_s/params.wat index b883cfb3b6c9..36c1f491fa6a 100644 --- a/tests/disas/winch/aarch64/i32_extend_8_s/params.wat +++ b/tests/disas/winch/aarch64/i32_extend_8_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ge_s/const.wat b/tests/disas/winch/aarch64/i32_ge_s/const.wat index ee9202c06019..eb8e1f7e44b7 100644 --- a/tests/disas/winch/aarch64/i32_ge_s/const.wat +++ b/tests/disas/winch/aarch64/i32_ge_s/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ge_s/locals.wat b/tests/disas/winch/aarch64/i32_ge_s/locals.wat index 3ab505f86fbd..9e7a201fe6de 100644 --- a/tests/disas/winch/aarch64/i32_ge_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_ge_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ge_s/params.wat b/tests/disas/winch/aarch64/i32_ge_s/params.wat index f448eb2efecd..ec969c18abe4 100644 --- a/tests/disas/winch/aarch64/i32_ge_s/params.wat +++ b/tests/disas/winch/aarch64/i32_ge_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ge_u/const.wat b/tests/disas/winch/aarch64/i32_ge_u/const.wat index ed80b8e64f16..dd0f5685fb1c 100644 --- a/tests/disas/winch/aarch64/i32_ge_u/const.wat +++ b/tests/disas/winch/aarch64/i32_ge_u/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ge_u/locals.wat b/tests/disas/winch/aarch64/i32_ge_u/locals.wat index 1d8ea2d32d82..f6242bba9985 100644 --- a/tests/disas/winch/aarch64/i32_ge_u/locals.wat +++ b/tests/disas/winch/aarch64/i32_ge_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ge_u/params.wat b/tests/disas/winch/aarch64/i32_ge_u/params.wat index bdb07b964f9e..9dbaf57dccb6 100644 --- a/tests/disas/winch/aarch64/i32_ge_u/params.wat +++ b/tests/disas/winch/aarch64/i32_ge_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_gt_s/const.wat b/tests/disas/winch/aarch64/i32_gt_s/const.wat index 1f918e263ac7..4851ffd35120 100644 --- a/tests/disas/winch/aarch64/i32_gt_s/const.wat +++ b/tests/disas/winch/aarch64/i32_gt_s/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_gt_s/locals.wat b/tests/disas/winch/aarch64/i32_gt_s/locals.wat index 71d6bf9d774b..bd9cb5e687d0 100644 --- a/tests/disas/winch/aarch64/i32_gt_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_gt_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_gt_s/params.wat b/tests/disas/winch/aarch64/i32_gt_s/params.wat index 7d0e9f3f9272..8423125205ab 100644 --- a/tests/disas/winch/aarch64/i32_gt_s/params.wat +++ b/tests/disas/winch/aarch64/i32_gt_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_gt_u/const.wat b/tests/disas/winch/aarch64/i32_gt_u/const.wat index 420cb594fd04..f18f3de77398 100644 --- a/tests/disas/winch/aarch64/i32_gt_u/const.wat +++ b/tests/disas/winch/aarch64/i32_gt_u/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_gt_u/locals.wat b/tests/disas/winch/aarch64/i32_gt_u/locals.wat index 1b471b76d7f9..b13a53668929 100644 --- a/tests/disas/winch/aarch64/i32_gt_u/locals.wat +++ b/tests/disas/winch/aarch64/i32_gt_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_gt_u/params.wat b/tests/disas/winch/aarch64/i32_gt_u/params.wat index 53400cbcb255..6e55ae436bf8 100644 --- a/tests/disas/winch/aarch64/i32_gt_u/params.wat +++ b/tests/disas/winch/aarch64/i32_gt_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_le_s/const.wat b/tests/disas/winch/aarch64/i32_le_s/const.wat index 301135a1ab9e..4036f28ec748 100644 --- a/tests/disas/winch/aarch64/i32_le_s/const.wat +++ b/tests/disas/winch/aarch64/i32_le_s/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_le_s/locals.wat b/tests/disas/winch/aarch64/i32_le_s/locals.wat index 3746cca36db9..d07693ac11ed 100644 --- a/tests/disas/winch/aarch64/i32_le_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_le_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_le_s/params.wat b/tests/disas/winch/aarch64/i32_le_s/params.wat index bbe5135cf3ec..686be6bc24bb 100644 --- a/tests/disas/winch/aarch64/i32_le_s/params.wat +++ b/tests/disas/winch/aarch64/i32_le_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_le_u/const.wat b/tests/disas/winch/aarch64/i32_le_u/const.wat index 2a9acff582a8..24e119909fc4 100644 --- a/tests/disas/winch/aarch64/i32_le_u/const.wat +++ b/tests/disas/winch/aarch64/i32_le_u/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_le_u/locals.wat b/tests/disas/winch/aarch64/i32_le_u/locals.wat index 1948ec3b83c0..a9efbb6e11f0 100644 --- a/tests/disas/winch/aarch64/i32_le_u/locals.wat +++ b/tests/disas/winch/aarch64/i32_le_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_le_u/params.wat b/tests/disas/winch/aarch64/i32_le_u/params.wat index a5ab8042c2e3..4b4898cb38df 100644 --- a/tests/disas/winch/aarch64/i32_le_u/params.wat +++ b/tests/disas/winch/aarch64/i32_le_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_lt_s/const.wat b/tests/disas/winch/aarch64/i32_lt_s/const.wat index bbda5522cc87..29d01a0dc78f 100644 --- a/tests/disas/winch/aarch64/i32_lt_s/const.wat +++ b/tests/disas/winch/aarch64/i32_lt_s/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_lt_s/locals.wat b/tests/disas/winch/aarch64/i32_lt_s/locals.wat index 7872edc834d7..e1f289e14489 100644 --- a/tests/disas/winch/aarch64/i32_lt_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_lt_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_lt_s/params.wat b/tests/disas/winch/aarch64/i32_lt_s/params.wat index be8cd352227e..3a7d511f57da 100644 --- a/tests/disas/winch/aarch64/i32_lt_s/params.wat +++ b/tests/disas/winch/aarch64/i32_lt_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_lt_u/const.wat b/tests/disas/winch/aarch64/i32_lt_u/const.wat index cc9530a14503..cbc9eef618e8 100644 --- a/tests/disas/winch/aarch64/i32_lt_u/const.wat +++ b/tests/disas/winch/aarch64/i32_lt_u/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_lt_u/locals.wat b/tests/disas/winch/aarch64/i32_lt_u/locals.wat index b3912ca884da..f42fd3622b8a 100644 --- a/tests/disas/winch/aarch64/i32_lt_u/locals.wat +++ b/tests/disas/winch/aarch64/i32_lt_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_lt_u/params.wat b/tests/disas/winch/aarch64/i32_lt_u/params.wat index 378c2f08a2bd..249524aa08ba 100644 --- a/tests/disas/winch/aarch64/i32_lt_u/params.wat +++ b/tests/disas/winch/aarch64/i32_lt_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_mul/const.wat b/tests/disas/winch/aarch64/i32_mul/const.wat index 287e0e119c37..ff2aa9732ebe 100644 --- a/tests/disas/winch/aarch64/i32_mul/const.wat +++ b/tests/disas/winch/aarch64/i32_mul/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_mul/locals.wat b/tests/disas/winch/aarch64/i32_mul/locals.wat index 80e612b039b7..30702eecbfe4 100644 --- a/tests/disas/winch/aarch64/i32_mul/locals.wat +++ b/tests/disas/winch/aarch64/i32_mul/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_mul/max.wat b/tests/disas/winch/aarch64/i32_mul/max.wat index d7e61fbd436b..37d00243b7cf 100644 --- a/tests/disas/winch/aarch64/i32_mul/max.wat +++ b/tests/disas/winch/aarch64/i32_mul/max.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_mul/max_one.wat b/tests/disas/winch/aarch64/i32_mul/max_one.wat index aaf57472cc73..02734b7b4d67 100644 --- a/tests/disas/winch/aarch64/i32_mul/max_one.wat +++ b/tests/disas/winch/aarch64/i32_mul/max_one.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_mul/mixed.wat b/tests/disas/winch/aarch64/i32_mul/mixed.wat index eb9455e9be82..2aca5661d3c0 100644 --- a/tests/disas/winch/aarch64/i32_mul/mixed.wat +++ b/tests/disas/winch/aarch64/i32_mul/mixed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_mul/params.wat b/tests/disas/winch/aarch64/i32_mul/params.wat index e06e9329a6b6..3d29ce0abab5 100644 --- a/tests/disas/winch/aarch64/i32_mul/params.wat +++ b/tests/disas/winch/aarch64/i32_mul/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_mul/signed.wat b/tests/disas/winch/aarch64/i32_mul/signed.wat index faebec24b934..25ad58706ca8 100644 --- a/tests/disas/winch/aarch64/i32_mul/signed.wat +++ b/tests/disas/winch/aarch64/i32_mul/signed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_mul/unsigned_with_zero.wat b/tests/disas/winch/aarch64/i32_mul/unsigned_with_zero.wat index 54aff2bce678..f29e14786e71 100644 --- a/tests/disas/winch/aarch64/i32_mul/unsigned_with_zero.wat +++ b/tests/disas/winch/aarch64/i32_mul/unsigned_with_zero.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ne/const.wat b/tests/disas/winch/aarch64/i32_ne/const.wat index a865a99e93d0..6bcd9d08618a 100644 --- a/tests/disas/winch/aarch64/i32_ne/const.wat +++ b/tests/disas/winch/aarch64/i32_ne/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ne/locals.wat b/tests/disas/winch/aarch64/i32_ne/locals.wat index e6ba526b91ad..ecdc974becab 100644 --- a/tests/disas/winch/aarch64/i32_ne/locals.wat +++ b/tests/disas/winch/aarch64/i32_ne/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_ne/params.wat b/tests/disas/winch/aarch64/i32_ne/params.wat index cd2da18c3ff9..627dd605b3e2 100644 --- a/tests/disas/winch/aarch64/i32_ne/params.wat +++ b/tests/disas/winch/aarch64/i32_ne/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_or/const.wat b/tests/disas/winch/aarch64/i32_or/const.wat index 08cd49429c8e..d3b8eebac378 100644 --- a/tests/disas/winch/aarch64/i32_or/const.wat +++ b/tests/disas/winch/aarch64/i32_or/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_or/locals.wat b/tests/disas/winch/aarch64/i32_or/locals.wat index 0c9635968540..92c4734a8168 100644 --- a/tests/disas/winch/aarch64/i32_or/locals.wat +++ b/tests/disas/winch/aarch64/i32_or/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_or/params.wat b/tests/disas/winch/aarch64/i32_or/params.wat index e209cc8bec4f..c33b3f51ab32 100644 --- a/tests/disas/winch/aarch64/i32_or/params.wat +++ b/tests/disas/winch/aarch64/i32_or/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_popcnt/const.wat b/tests/disas/winch/aarch64/i32_popcnt/const.wat index a4c2c40c516d..46e08424a233 100644 --- a/tests/disas/winch/aarch64/i32_popcnt/const.wat +++ b/tests/disas/winch/aarch64/i32_popcnt/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_popcnt/reg.wat b/tests/disas/winch/aarch64/i32_popcnt/reg.wat index 4e6624b378f6..7478e30f4e45 100644 --- a/tests/disas/winch/aarch64/i32_popcnt/reg.wat +++ b/tests/disas/winch/aarch64/i32_popcnt/reg.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_reinterpret_f32/const.wat b/tests/disas/winch/aarch64/i32_reinterpret_f32/const.wat index ef992a060254..6e9a514228c7 100644 --- a/tests/disas/winch/aarch64/i32_reinterpret_f32/const.wat +++ b/tests/disas/winch/aarch64/i32_reinterpret_f32/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_reinterpret_f32/locals.wat b/tests/disas/winch/aarch64/i32_reinterpret_f32/locals.wat index 6f1c3ca7b1af..bbd0c0a7da38 100644 --- a/tests/disas/winch/aarch64/i32_reinterpret_f32/locals.wat +++ b/tests/disas/winch/aarch64/i32_reinterpret_f32/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_reinterpret_f32/params.wat b/tests/disas/winch/aarch64/i32_reinterpret_f32/params.wat index ae54fe2575d9..26a12551500e 100644 --- a/tests/disas/winch/aarch64/i32_reinterpret_f32/params.wat +++ b/tests/disas/winch/aarch64/i32_reinterpret_f32/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_reinterpret_f32/ret_float.wat b/tests/disas/winch/aarch64/i32_reinterpret_f32/ret_float.wat index 2ab82fbb5ff1..17d9ab716a96 100644 --- a/tests/disas/winch/aarch64/i32_reinterpret_f32/ret_float.wat +++ b/tests/disas/winch/aarch64/i32_reinterpret_f32/ret_float.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_rems/const.wat b/tests/disas/winch/aarch64/i32_rems/const.wat index 09d7c613c3dd..c249c4f72c8b 100644 --- a/tests/disas/winch/aarch64/i32_rems/const.wat +++ b/tests/disas/winch/aarch64/i32_rems/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,8 +23,8 @@ ;; mov w0, w16 ;; mov x16, #7 ;; mov w1, w16 -;; cbz w0, #0x5c -;; 34: sxtw x0, w0 +;; cbz w0, #0x64 +;; 38: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 @@ -31,6 +32,7 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_rems/one_zero.wat b/tests/disas/winch/aarch64/i32_rems/one_zero.wat index d4cfecd1c15c..f3f2d73b52fd 100644 --- a/tests/disas/winch/aarch64/i32_rems/one_zero.wat +++ b/tests/disas/winch/aarch64/i32_rems/one_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,8 +23,8 @@ ;; mov w0, w16 ;; mov x16, #1 ;; mov w1, w16 -;; cbz w0, #0x5c -;; 34: sxtw x0, w0 +;; cbz w0, #0x64 +;; 38: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 @@ -31,6 +32,7 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_rems/overflow.wat b/tests/disas/winch/aarch64/i32_rems/overflow.wat index 6979c4e1f0c1..7b63133dbfb4 100644 --- a/tests/disas/winch/aarch64/i32_rems/overflow.wat +++ b/tests/disas/winch/aarch64/i32_rems/overflow.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,8 +23,8 @@ ;; mov w0, w16 ;; mov x16, #0x80000000 ;; mov w1, w16 -;; cbz w0, #0x5c -;; 34: sxtw x0, w0 +;; cbz w0, #0x64 +;; 38: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 @@ -31,6 +32,7 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_rems/params.wat b/tests/disas/winch/aarch64/i32_rems/params.wat index 3699d97a24c7..824f6e1a32a8 100644 --- a/tests/disas/winch/aarch64/i32_rems/params.wat +++ b/tests/disas/winch/aarch64/i32_rems/params.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,8 +23,8 @@ ;; stur w3, [x28] ;; ldur w0, [x28] ;; ldur w1, [x28, #4] -;; cbz w0, #0x5c -;; 34: sxtw x0, w0 +;; cbz w0, #0x64 +;; 38: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 @@ -31,6 +32,7 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_rems/zero_zero.wat b/tests/disas/winch/aarch64/i32_rems/zero_zero.wat index e69686279020..d8cb86616c84 100644 --- a/tests/disas/winch/aarch64/i32_rems/zero_zero.wat +++ b/tests/disas/winch/aarch64/i32_rems/zero_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,8 +23,8 @@ ;; mov w0, w16 ;; mov x16, #0 ;; mov w1, w16 -;; cbz w0, #0x5c -;; 34: sxtw x0, w0 +;; cbz w0, #0x64 +;; 38: sxtw x0, w0 ;; sxtw x1, w1 ;; sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 @@ -31,6 +32,7 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_remu/const.wat b/tests/disas/winch/aarch64/i32_remu/const.wat index deaf15450ffb..995068701c76 100644 --- a/tests/disas/winch/aarch64/i32_remu/const.wat +++ b/tests/disas/winch/aarch64/i32_remu/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov w0, w16 ;; mov x16, #7 ;; mov w1, w16 -;; cbz w0, #0x54 -;; 34: udiv w16, w1, w0 +;; cbz w0, #0x5c +;; 38: udiv w16, w1, w0 ;; msub w1, w0, w16, w1 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_remu/one_zero.wat b/tests/disas/winch/aarch64/i32_remu/one_zero.wat index 1f74f6aaf9b6..2beca50fae77 100644 --- a/tests/disas/winch/aarch64/i32_remu/one_zero.wat +++ b/tests/disas/winch/aarch64/i32_remu/one_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov w0, w16 ;; mov x16, #1 ;; mov w1, w16 -;; cbz w0, #0x54 -;; 34: udiv w16, w1, w0 +;; cbz w0, #0x5c +;; 38: udiv w16, w1, w0 ;; msub w1, w0, w16, w1 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_remu/params.wat b/tests/disas/winch/aarch64/i32_remu/params.wat index a9cb111af0e5..7556fca1a14c 100644 --- a/tests/disas/winch/aarch64/i32_remu/params.wat +++ b/tests/disas/winch/aarch64/i32_remu/params.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,13 +23,14 @@ ;; stur w3, [x28] ;; ldur w0, [x28] ;; ldur w1, [x28, #4] -;; cbz w0, #0x54 -;; 34: udiv w16, w1, w0 +;; cbz w0, #0x5c +;; 38: udiv w16, w1, w0 ;; msub w1, w0, w16, w1 ;; mov w0, w1 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_remu/signed.wat b/tests/disas/winch/aarch64/i32_remu/signed.wat index 67600b35ab04..455c2c75d341 100644 --- a/tests/disas/winch/aarch64/i32_remu/signed.wat +++ b/tests/disas/winch/aarch64/i32_remu/signed.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov w0, w16 ;; orr x16, xzr, #0xffffffff ;; mov w1, w16 -;; cbz w0, #0x54 -;; 34: udiv w16, w1, w0 +;; cbz w0, #0x5c +;; 38: udiv w16, w1, w0 ;; msub w1, w0, w16, w1 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_remu/zero_zero.wat b/tests/disas/winch/aarch64/i32_remu/zero_zero.wat index cc775e1ea4d9..e37aa1266b2e 100644 --- a/tests/disas/winch/aarch64/i32_remu/zero_zero.wat +++ b/tests/disas/winch/aarch64/i32_remu/zero_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov w0, w16 ;; mov x16, #0 ;; mov w1, w16 -;; cbz w0, #0x54 -;; 34: udiv w16, w1, w0 +;; cbz w0, #0x5c +;; 38: udiv w16, w1, w0 ;; msub w1, w0, w16, w1 ;; mov w0, w1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_rotl/16_const.wat b/tests/disas/winch/aarch64/i32_rotl/16_const.wat index 286dff569b0e..537d9f41576d 100644 --- a/tests/disas/winch/aarch64/i32_rotl/16_const.wat +++ b/tests/disas/winch/aarch64/i32_rotl/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_rotl/8_const.wat b/tests/disas/winch/aarch64/i32_rotl/8_const.wat index a2cef9556b53..a860b7ece7a6 100644 --- a/tests/disas/winch/aarch64/i32_rotl/8_const.wat +++ b/tests/disas/winch/aarch64/i32_rotl/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_rotl/locals.wat b/tests/disas/winch/aarch64/i32_rotl/locals.wat index 959702cf9ef8..dd99f3f5475d 100644 --- a/tests/disas/winch/aarch64/i32_rotl/locals.wat +++ b/tests/disas/winch/aarch64/i32_rotl/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_rotl/params.wat b/tests/disas/winch/aarch64/i32_rotl/params.wat index c40311bfc0f8..01549305b2bc 100644 --- a/tests/disas/winch/aarch64/i32_rotl/params.wat +++ b/tests/disas/winch/aarch64/i32_rotl/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_rotr/16_const.wat b/tests/disas/winch/aarch64/i32_rotr/16_const.wat index 0e1f68561fab..23159096547e 100644 --- a/tests/disas/winch/aarch64/i32_rotr/16_const.wat +++ b/tests/disas/winch/aarch64/i32_rotr/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_rotr/8_const.wat b/tests/disas/winch/aarch64/i32_rotr/8_const.wat index c92f9e93bf50..47ed794579d5 100644 --- a/tests/disas/winch/aarch64/i32_rotr/8_const.wat +++ b/tests/disas/winch/aarch64/i32_rotr/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_rotr/locals.wat b/tests/disas/winch/aarch64/i32_rotr/locals.wat index 148611406298..ea899b47c2d9 100644 --- a/tests/disas/winch/aarch64/i32_rotr/locals.wat +++ b/tests/disas/winch/aarch64/i32_rotr/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_rotr/params.wat b/tests/disas/winch/aarch64/i32_rotr/params.wat index 82592f2398c4..16be05c4d53f 100644 --- a/tests/disas/winch/aarch64/i32_rotr/params.wat +++ b/tests/disas/winch/aarch64/i32_rotr/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shl/16_const.wat b/tests/disas/winch/aarch64/i32_shl/16_const.wat index 7b78ca8c50f3..a0bacd9136d7 100644 --- a/tests/disas/winch/aarch64/i32_shl/16_const.wat +++ b/tests/disas/winch/aarch64/i32_shl/16_const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shl/8_const.wat b/tests/disas/winch/aarch64/i32_shl/8_const.wat index 3f0932f07af7..a0523ea97bc1 100644 --- a/tests/disas/winch/aarch64/i32_shl/8_const.wat +++ b/tests/disas/winch/aarch64/i32_shl/8_const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shl/locals.wat b/tests/disas/winch/aarch64/i32_shl/locals.wat index 2d50f3f1f9b8..b9df995a9d0a 100644 --- a/tests/disas/winch/aarch64/i32_shl/locals.wat +++ b/tests/disas/winch/aarch64/i32_shl/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shl/params.wat b/tests/disas/winch/aarch64/i32_shl/params.wat index 8b23440cc733..25672bd99f8e 100644 --- a/tests/disas/winch/aarch64/i32_shl/params.wat +++ b/tests/disas/winch/aarch64/i32_shl/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shr_s/16_const.wat b/tests/disas/winch/aarch64/i32_shr_s/16_const.wat index 8717fdde832c..98285f7307f3 100644 --- a/tests/disas/winch/aarch64/i32_shr_s/16_const.wat +++ b/tests/disas/winch/aarch64/i32_shr_s/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shr_s/8_const.wat b/tests/disas/winch/aarch64/i32_shr_s/8_const.wat index e2ffa7c1cc4d..b94a1f158d92 100644 --- a/tests/disas/winch/aarch64/i32_shr_s/8_const.wat +++ b/tests/disas/winch/aarch64/i32_shr_s/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shr_s/locals.wat b/tests/disas/winch/aarch64/i32_shr_s/locals.wat index e5242b65f52b..190cb9eb309f 100644 --- a/tests/disas/winch/aarch64/i32_shr_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_shr_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shr_s/params.wat b/tests/disas/winch/aarch64/i32_shr_s/params.wat index 0a02984b5fc8..668c25bc12bf 100644 --- a/tests/disas/winch/aarch64/i32_shr_s/params.wat +++ b/tests/disas/winch/aarch64/i32_shr_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shr_u/16_const.wat b/tests/disas/winch/aarch64/i32_shr_u/16_const.wat index 0c1e8628dcd8..b8c034257ef4 100644 --- a/tests/disas/winch/aarch64/i32_shr_u/16_const.wat +++ b/tests/disas/winch/aarch64/i32_shr_u/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shr_u/8_const.wat b/tests/disas/winch/aarch64/i32_shr_u/8_const.wat index 89090d9ed37b..ed9b13269548 100644 --- a/tests/disas/winch/aarch64/i32_shr_u/8_const.wat +++ b/tests/disas/winch/aarch64/i32_shr_u/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shr_u/locals.wat b/tests/disas/winch/aarch64/i32_shr_u/locals.wat index 1dd1bf01030b..96e65988979a 100644 --- a/tests/disas/winch/aarch64/i32_shr_u/locals.wat +++ b/tests/disas/winch/aarch64/i32_shr_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_shr_u/params.wat b/tests/disas/winch/aarch64/i32_shr_u/params.wat index c64184ba568d..f84c25b4202c 100644 --- a/tests/disas/winch/aarch64/i32_shr_u/params.wat +++ b/tests/disas/winch/aarch64/i32_shr_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_sub/const.wat b/tests/disas/winch/aarch64/i32_sub/const.wat index b0ea96af04d6..38a06816c654 100644 --- a/tests/disas/winch/aarch64/i32_sub/const.wat +++ b/tests/disas/winch/aarch64/i32_sub/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_sub/locals.wat b/tests/disas/winch/aarch64/i32_sub/locals.wat index e04e99deec7d..6f70da42e021 100644 --- a/tests/disas/winch/aarch64/i32_sub/locals.wat +++ b/tests/disas/winch/aarch64/i32_sub/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_sub/max.wat b/tests/disas/winch/aarch64/i32_sub/max.wat index b00fb8d570fe..6dc1d6d03e74 100644 --- a/tests/disas/winch/aarch64/i32_sub/max.wat +++ b/tests/disas/winch/aarch64/i32_sub/max.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_sub/max_one.wat b/tests/disas/winch/aarch64/i32_sub/max_one.wat index effde4bb46e7..1ad0c05a748a 100644 --- a/tests/disas/winch/aarch64/i32_sub/max_one.wat +++ b/tests/disas/winch/aarch64/i32_sub/max_one.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_sub/mixed.wat b/tests/disas/winch/aarch64/i32_sub/mixed.wat index b61e42e6d51b..780e0cef9834 100644 --- a/tests/disas/winch/aarch64/i32_sub/mixed.wat +++ b/tests/disas/winch/aarch64/i32_sub/mixed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_sub/params.wat b/tests/disas/winch/aarch64/i32_sub/params.wat index 2184bc97754c..5994b0dc88f7 100644 --- a/tests/disas/winch/aarch64/i32_sub/params.wat +++ b/tests/disas/winch/aarch64/i32_sub/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_sub/signed.wat b/tests/disas/winch/aarch64/i32_sub/signed.wat index 974860103569..8f1f3e853915 100644 --- a/tests/disas/winch/aarch64/i32_sub/signed.wat +++ b/tests/disas/winch/aarch64/i32_sub/signed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_sub/unsigned_with_zero.wat b/tests/disas/winch/aarch64/i32_sub/unsigned_with_zero.wat index 54ac7549d1f2..a6abd9717963 100644 --- a/tests/disas/winch/aarch64/i32_sub/unsigned_with_zero.wat +++ b/tests/disas/winch/aarch64/i32_sub/unsigned_with_zero.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_trunc_f32_s/const.wat b/tests/disas/winch/aarch64/i32_trunc_f32_s/const.wat index 3811eb8a3cc7..e15dd9fe5bdb 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f32_s/const.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f32_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,21 +20,22 @@ ;; mov x16, #0x3f800000 ;; fmov s0, w16 ;; fcmp s0, s0 -;; b.vs #0x68 -;; 30: mov x16, #0xcf000000 +;; b.vs #0x70 +;; 34: mov x16, #0xcf000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.le #0x6c -;; 40: mov x16, #0x4f000000 +;; b.le #0x74 +;; 44: mov x16, #0x4f000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x70 -;; 50: fcvtzs w0, s0 +;; b.ge #0x78 +;; 54: fcvtzs w0, s0 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f32_s/locals.wat b/tests/disas/winch/aarch64/i32_trunc_f32_s/locals.wat index 1518296d6b4b..ee9a951dc3ac 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f32_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f32_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,21 +23,22 @@ ;; stur x16, [x28] ;; ldur s0, [x28, #4] ;; fcmp s0, s0 -;; b.vs #0x6c -;; 34: mov x16, #0xcf000000 +;; b.vs #0x74 +;; 38: mov x16, #0xcf000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.le #0x70 -;; 44: mov x16, #0x4f000000 +;; b.le #0x78 +;; 48: mov x16, #0x4f000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x74 -;; 54: fcvtzs w0, s0 +;; b.ge #0x7c +;; 58: fcvtzs w0, s0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 7c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f32_s/params.wat b/tests/disas/winch/aarch64/i32_trunc_f32_s/params.wat index 471698642c1d..5c0b678ecf98 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f32_s/params.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f32_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -19,21 +20,22 @@ ;; stur s0, [x28, #4] ;; ldur s0, [x28, #4] ;; fcmp s0, s0 -;; b.vs #0x68 -;; 30: mov x16, #0xcf000000 +;; b.vs #0x70 +;; 34: mov x16, #0xcf000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.le #0x6c -;; 40: mov x16, #0x4f000000 +;; b.le #0x74 +;; 44: mov x16, #0x4f000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x70 -;; 50: fcvtzs w0, s0 +;; b.ge #0x78 +;; 54: fcvtzs w0, s0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f32_u/const.wat b/tests/disas/winch/aarch64/i32_trunc_f32_u/const.wat index c18491954d83..0cc6ba075e8f 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f32_u/const.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f32_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,20 +20,21 @@ ;; mov x16, #0x3f800000 ;; fmov s0, w16 ;; fcmp s0, s0 -;; b.vs #0x64 -;; 30: fmov s31, #-1.00000000 +;; b.vs #0x6c +;; 34: fmov s31, #-1.00000000 ;; fcmp s31, s0 -;; b.le #0x68 -;; 3c: mov x16, #0x4f800000 +;; b.le #0x70 +;; 40: mov x16, #0x4f800000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x6c -;; 4c: fcvtzu w0, s0 +;; b.ge #0x74 +;; 50: fcvtzu w0, s0 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f32_u/locals.wat b/tests/disas/winch/aarch64/i32_trunc_f32_u/locals.wat index 610b6cbe4cb7..50f3ae02657c 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f32_u/locals.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f32_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,20 +23,21 @@ ;; stur x16, [x28] ;; ldur s0, [x28, #4] ;; fcmp s0, s0 -;; b.vs #0x68 -;; 34: fmov s31, #-1.00000000 +;; b.vs #0x70 +;; 38: fmov s31, #-1.00000000 ;; fcmp s31, s0 -;; b.le #0x6c -;; 40: mov x16, #0x4f800000 +;; b.le #0x74 +;; 44: mov x16, #0x4f800000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x70 -;; 50: fcvtzu w0, s0 +;; b.ge #0x78 +;; 54: fcvtzu w0, s0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f32_u/params.wat b/tests/disas/winch/aarch64/i32_trunc_f32_u/params.wat index 215f13f8f85e..c6c76c9a8e01 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f32_u/params.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f32_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -19,20 +20,21 @@ ;; stur s0, [x28, #4] ;; ldur s0, [x28, #4] ;; fcmp s0, s0 -;; b.vs #0x64 -;; 30: fmov s31, #-1.00000000 +;; b.vs #0x6c +;; 34: fmov s31, #-1.00000000 ;; fcmp s31, s0 -;; b.le #0x68 -;; 3c: mov x16, #0x4f800000 +;; b.le #0x70 +;; 40: mov x16, #0x4f800000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x6c -;; 4c: fcvtzu w0, s0 +;; b.ge #0x74 +;; 50: fcvtzu w0, s0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f64_s/const.wat b/tests/disas/winch/aarch64/i32_trunc_f64_s/const.wat index a5aceb533770..4fd561b6bea6 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f64_s/const.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f64_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,22 +20,23 @@ ;; mov x16, #0x3ff0000000000000 ;; fmov d0, x16 ;; fcmp d0, d0 -;; b.vs #0x6c -;; 30: mov x16, #0x200000 +;; b.vs #0x74 +;; 34: mov x16, #0x200000 ;; movk x16, #0xc1e0, lsl #48 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.le #0x70 -;; 44: mov x16, #0x41e0000000000000 +;; b.le #0x78 +;; 48: mov x16, #0x41e0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x74 -;; 54: fcvtzs w0, d0 +;; b.ge #0x7c +;; 58: fcvtzs w0, d0 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 7c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f64_s/locals.wat b/tests/disas/winch/aarch64/i32_trunc_f64_s/locals.wat index 099d4a0fbb7f..9c14c3ea24e9 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f64_s/locals.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f64_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,22 +23,23 @@ ;; stur x16, [x28] ;; ldur d0, [x28] ;; fcmp d0, d0 -;; b.vs #0x70 -;; 34: mov x16, #0x200000 +;; b.vs #0x78 +;; 38: mov x16, #0x200000 ;; movk x16, #0xc1e0, lsl #48 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.le #0x74 -;; 48: mov x16, #0x41e0000000000000 +;; b.le #0x7c +;; 4c: mov x16, #0x41e0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x78 -;; 58: fcvtzs w0, d0 +;; b.ge #0x80 +;; 5c: fcvtzs w0, d0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 7c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 80: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f64_s/params.wat b/tests/disas/winch/aarch64/i32_trunc_f64_s/params.wat index 3018091e1140..d748838f3afa 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f64_s/params.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f64_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -19,22 +20,23 @@ ;; stur d0, [x28] ;; ldur d0, [x28] ;; fcmp d0, d0 -;; b.vs #0x6c -;; 30: mov x16, #0x200000 +;; b.vs #0x74 +;; 34: mov x16, #0x200000 ;; movk x16, #0xc1e0, lsl #48 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.le #0x70 -;; 44: mov x16, #0x41e0000000000000 +;; b.le #0x78 +;; 48: mov x16, #0x41e0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x74 -;; 54: fcvtzs w0, d0 +;; b.ge #0x7c +;; 58: fcvtzs w0, d0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 7c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f64_u/const.wat b/tests/disas/winch/aarch64/i32_trunc_f64_u/const.wat index 62779bc11d64..038cbe3581d3 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f64_u/const.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f64_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,20 +20,21 @@ ;; mov x16, #0x3ff0000000000000 ;; fmov d0, x16 ;; fcmp d0, d0 -;; b.vs #0x64 -;; 30: fmov d31, #-1.00000000 +;; b.vs #0x6c +;; 34: fmov d31, #-1.00000000 ;; fcmp d31, d0 -;; b.le #0x68 -;; 3c: mov x16, #0x41f0000000000000 +;; b.le #0x70 +;; 40: mov x16, #0x41f0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x6c -;; 4c: fcvtzu w0, d0 +;; b.ge #0x74 +;; 50: fcvtzu w0, d0 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f64_u/locals.wat b/tests/disas/winch/aarch64/i32_trunc_f64_u/locals.wat index 4403ef8cf236..ce8a83e7541b 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f64_u/locals.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f64_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,20 +23,21 @@ ;; stur x16, [x28] ;; ldur d0, [x28] ;; fcmp d0, d0 -;; b.vs #0x68 -;; 34: fmov d31, #-1.00000000 +;; b.vs #0x70 +;; 38: fmov d31, #-1.00000000 ;; fcmp d31, d0 -;; b.le #0x6c -;; 40: mov x16, #0x41f0000000000000 +;; b.le #0x74 +;; 44: mov x16, #0x41f0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x70 -;; 50: fcvtzu w0, d0 +;; b.ge #0x78 +;; 54: fcvtzu w0, d0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_trunc_f64_u/params.wat b/tests/disas/winch/aarch64/i32_trunc_f64_u/params.wat index b1fd7a9ae959..d58a8b4e5b29 100644 --- a/tests/disas/winch/aarch64/i32_trunc_f64_u/params.wat +++ b/tests/disas/winch/aarch64/i32_trunc_f64_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -19,20 +20,21 @@ ;; stur d0, [x28] ;; ldur d0, [x28] ;; fcmp d0, d0 -;; b.vs #0x64 -;; 30: fmov d31, #-1.00000000 +;; b.vs #0x6c +;; 34: fmov d31, #-1.00000000 ;; fcmp d31, d0 -;; b.le #0x68 -;; 3c: mov x16, #0x41f0000000000000 +;; b.le #0x70 +;; 40: mov x16, #0x41f0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x6c -;; 4c: fcvtzu w0, d0 +;; b.ge #0x74 +;; 50: fcvtzu w0, d0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i32_wrap_i64/const.wat b/tests/disas/winch/aarch64/i32_wrap_i64/const.wat index 9d11b3b0168d..847072da11c7 100644 --- a/tests/disas/winch/aarch64/i32_wrap_i64/const.wat +++ b/tests/disas/winch/aarch64/i32_wrap_i64/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_wrap_i64/locals.wat b/tests/disas/winch/aarch64/i32_wrap_i64/locals.wat index e39fcae6cb78..5f8d1a570300 100644 --- a/tests/disas/winch/aarch64/i32_wrap_i64/locals.wat +++ b/tests/disas/winch/aarch64/i32_wrap_i64/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_wrap_i64/params.wat b/tests/disas/winch/aarch64/i32_wrap_i64/params.wat index 358bc5cb2eab..5c0cf0c690f9 100644 --- a/tests/disas/winch/aarch64/i32_wrap_i64/params.wat +++ b/tests/disas/winch/aarch64/i32_wrap_i64/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_xor/const.wat b/tests/disas/winch/aarch64/i32_xor/const.wat index 361c0bd8bb32..722816226877 100644 --- a/tests/disas/winch/aarch64/i32_xor/const.wat +++ b/tests/disas/winch/aarch64/i32_xor/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_xor/locals.wat b/tests/disas/winch/aarch64/i32_xor/locals.wat index 3324d92a905b..dfac23d29e3d 100644 --- a/tests/disas/winch/aarch64/i32_xor/locals.wat +++ b/tests/disas/winch/aarch64/i32_xor/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i32_xor/params.wat b/tests/disas/winch/aarch64/i32_xor/params.wat index bfc9455b455e..a251576087ba 100644 --- a/tests/disas/winch/aarch64/i32_xor/params.wat +++ b/tests/disas/winch/aarch64/i32_xor/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_add/const.wat b/tests/disas/winch/aarch64/i64_add/const.wat index 1b81fffeea59..e1f24cb6c535 100644 --- a/tests/disas/winch/aarch64/i64_add/const.wat +++ b/tests/disas/winch/aarch64/i64_add/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_add/locals.wat b/tests/disas/winch/aarch64/i64_add/locals.wat index 6beea0587aac..5218232020ab 100644 --- a/tests/disas/winch/aarch64/i64_add/locals.wat +++ b/tests/disas/winch/aarch64/i64_add/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_add/max.wat b/tests/disas/winch/aarch64/i64_add/max.wat index 9fafab0695a8..3448101f888f 100644 --- a/tests/disas/winch/aarch64/i64_add/max.wat +++ b/tests/disas/winch/aarch64/i64_add/max.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_add/max_one.wat b/tests/disas/winch/aarch64/i64_add/max_one.wat index bd6e72728fcd..e32ce54ff002 100644 --- a/tests/disas/winch/aarch64/i64_add/max_one.wat +++ b/tests/disas/winch/aarch64/i64_add/max_one.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_add/mixed.wat b/tests/disas/winch/aarch64/i64_add/mixed.wat index 6e1fe6000f60..8397aaae2f63 100644 --- a/tests/disas/winch/aarch64/i64_add/mixed.wat +++ b/tests/disas/winch/aarch64/i64_add/mixed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_add/params.wat b/tests/disas/winch/aarch64/i64_add/params.wat index 464255761488..7f4943e605f4 100644 --- a/tests/disas/winch/aarch64/i64_add/params.wat +++ b/tests/disas/winch/aarch64/i64_add/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_add/signed.wat b/tests/disas/winch/aarch64/i64_add/signed.wat index 4d2376947fbe..dbeb3eb402aa 100644 --- a/tests/disas/winch/aarch64/i64_add/signed.wat +++ b/tests/disas/winch/aarch64/i64_add/signed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_add/unsigned_with_zero.wat b/tests/disas/winch/aarch64/i64_add/unsigned_with_zero.wat index 8cd3d6feda9f..59f0e1f6d946 100644 --- a/tests/disas/winch/aarch64/i64_add/unsigned_with_zero.wat +++ b/tests/disas/winch/aarch64/i64_add/unsigned_with_zero.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_and/32_const.wat b/tests/disas/winch/aarch64/i64_and/32_const.wat index 4c7fd8ac40d4..803aba07ef4c 100644 --- a/tests/disas/winch/aarch64/i64_and/32_const.wat +++ b/tests/disas/winch/aarch64/i64_and/32_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_and/64_const.wat b/tests/disas/winch/aarch64/i64_and/64_const.wat index 6562624c74ac..34aa0dbb3b79 100644 --- a/tests/disas/winch/aarch64/i64_and/64_const.wat +++ b/tests/disas/winch/aarch64/i64_and/64_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_and/locals.wat b/tests/disas/winch/aarch64/i64_and/locals.wat index df654d1075c4..194f522aa663 100644 --- a/tests/disas/winch/aarch64/i64_and/locals.wat +++ b/tests/disas/winch/aarch64/i64_and/locals.wat @@ -19,6 +19,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_and/params.wat b/tests/disas/winch/aarch64/i64_and/params.wat index 668b066e52bc..f22166326dce 100644 --- a/tests/disas/winch/aarch64/i64_and/params.wat +++ b/tests/disas/winch/aarch64/i64_and/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_clz/const.wat b/tests/disas/winch/aarch64/i64_clz/const.wat index 32c906997690..76f246b90525 100644 --- a/tests/disas/winch/aarch64/i64_clz/const.wat +++ b/tests/disas/winch/aarch64/i64_clz/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_clz/locals.wat b/tests/disas/winch/aarch64/i64_clz/locals.wat index 282618c38baa..4c7b927c0b3f 100644 --- a/tests/disas/winch/aarch64/i64_clz/locals.wat +++ b/tests/disas/winch/aarch64/i64_clz/locals.wat @@ -14,6 +14,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -29,5 +30,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_clz/params.wat b/tests/disas/winch/aarch64/i64_clz/params.wat index 50c1480b6777..64b5d4c5f8c0 100644 --- a/tests/disas/winch/aarch64/i64_clz/params.wat +++ b/tests/disas/winch/aarch64/i64_clz/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ctz/const.wat b/tests/disas/winch/aarch64/i64_ctz/const.wat index e313e40f5e14..5f6d4a39f342 100644 --- a/tests/disas/winch/aarch64/i64_ctz/const.wat +++ b/tests/disas/winch/aarch64/i64_ctz/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ctz/locals.wat b/tests/disas/winch/aarch64/i64_ctz/locals.wat index 8eac6b25437b..f042821b41ec 100644 --- a/tests/disas/winch/aarch64/i64_ctz/locals.wat +++ b/tests/disas/winch/aarch64/i64_ctz/locals.wat @@ -14,6 +14,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -30,5 +31,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ctz/params.wat b/tests/disas/winch/aarch64/i64_ctz/params.wat index d3067af62f9a..7b57045c47d7 100644 --- a/tests/disas/winch/aarch64/i64_ctz/params.wat +++ b/tests/disas/winch/aarch64/i64_ctz/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_divs/const.wat b/tests/disas/winch/aarch64/i64_divs/const.wat index 3455629a5fe4..96d5f6951236 100644 --- a/tests/disas/winch/aarch64/i64_divs/const.wat +++ b/tests/disas/winch/aarch64/i64_divs/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,16 +23,17 @@ ;; mov x0, x16 ;; mov x16, #0x14 ;; mov x1, x16 -;; cbz x0, #0x5c -;; 34: cmn x0, #1 +;; cbz x0, #0x64 +;; 38: cmn x0, #1 ;; ccmp x1, #1, #0, eq -;; b.vs #0x60 -;; 40: sdiv x1, x1, x0 +;; b.vs #0x68 +;; 44: sdiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 60: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divs/one_zero.wat b/tests/disas/winch/aarch64/i64_divs/one_zero.wat index 92b5365b55c5..33eba67fca13 100644 --- a/tests/disas/winch/aarch64/i64_divs/one_zero.wat +++ b/tests/disas/winch/aarch64/i64_divs/one_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,16 +23,17 @@ ;; mov x0, x16 ;; mov x16, #1 ;; mov x1, x16 -;; cbz x0, #0x5c -;; 34: cmn x0, #1 +;; cbz x0, #0x64 +;; 38: cmn x0, #1 ;; ccmp x1, #1, #0, eq -;; b.vs #0x60 -;; 40: sdiv x1, x1, x0 +;; b.vs #0x68 +;; 44: sdiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 60: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divs/overflow.wat b/tests/disas/winch/aarch64/i64_divs/overflow.wat index 9f70cbe0bea6..c708f5201823 100644 --- a/tests/disas/winch/aarch64/i64_divs/overflow.wat +++ b/tests/disas/winch/aarch64/i64_divs/overflow.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,16 +23,17 @@ ;; mov x0, x16 ;; mov x16, #-0x8000000000000000 ;; mov x1, x16 -;; cbz x0, #0x5c -;; 34: cmn x0, #1 +;; cbz x0, #0x64 +;; 38: cmn x0, #1 ;; ccmp x1, #1, #0, eq -;; b.vs #0x60 -;; 40: sdiv x1, x1, x0 +;; b.vs #0x68 +;; 44: sdiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 60: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divs/params.wat b/tests/disas/winch/aarch64/i64_divs/params.wat index 314ad5c533ca..bb4c4574069d 100644 --- a/tests/disas/winch/aarch64/i64_divs/params.wat +++ b/tests/disas/winch/aarch64/i64_divs/params.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -22,16 +23,17 @@ ;; stur x3, [x28] ;; ldur x0, [x28] ;; ldur x1, [x28, #8] -;; cbz x0, #0x5c -;; 34: cmn x0, #1 +;; cbz x0, #0x64 +;; 38: cmn x0, #1 ;; ccmp x1, #1, #0, eq -;; b.vs #0x60 -;; 40: sdiv x1, x1, x0 +;; b.vs #0x68 +;; 44: sdiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 60: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divs/zero_zero.wat b/tests/disas/winch/aarch64/i64_divs/zero_zero.wat index 862751339c7b..657e4c7de9be 100644 --- a/tests/disas/winch/aarch64/i64_divs/zero_zero.wat +++ b/tests/disas/winch/aarch64/i64_divs/zero_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,16 +23,17 @@ ;; mov x0, x16 ;; mov x16, #0 ;; mov x1, x16 -;; cbz x0, #0x5c -;; 34: cmn x0, #1 +;; cbz x0, #0x64 +;; 38: cmn x0, #1 ;; ccmp x1, #1, #0, eq -;; b.vs #0x60 -;; 40: sdiv x1, x1, x0 +;; b.vs #0x68 +;; 44: sdiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 60: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divu/const.wat b/tests/disas/winch/aarch64/i64_divu/const.wat index 675d84b0d94b..92c2b464b112 100644 --- a/tests/disas/winch/aarch64/i64_divu/const.wat +++ b/tests/disas/winch/aarch64/i64_divu/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,12 +23,13 @@ ;; mov x0, x16 ;; mov x16, #0x14 ;; mov x1, x16 -;; cbz x0, #0x50 -;; 34: udiv x1, x1, x0 +;; cbz x0, #0x58 +;; 38: udiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divu/one_zero.wat b/tests/disas/winch/aarch64/i64_divu/one_zero.wat index 64e146bf2982..994a7b596162 100644 --- a/tests/disas/winch/aarch64/i64_divu/one_zero.wat +++ b/tests/disas/winch/aarch64/i64_divu/one_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,12 +23,13 @@ ;; mov x0, x16 ;; mov x16, #1 ;; mov x1, x16 -;; cbz x0, #0x50 -;; 34: udiv x1, x1, x0 +;; cbz x0, #0x58 +;; 38: udiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divu/params.wat b/tests/disas/winch/aarch64/i64_divu/params.wat index be903363231b..2a51484a74f5 100644 --- a/tests/disas/winch/aarch64/i64_divu/params.wat +++ b/tests/disas/winch/aarch64/i64_divu/params.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -22,12 +23,13 @@ ;; stur x3, [x28] ;; ldur x0, [x28] ;; ldur x1, [x28, #8] -;; cbz x0, #0x50 -;; 34: udiv x1, x1, x0 +;; cbz x0, #0x58 +;; 38: udiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divu/signed.wat b/tests/disas/winch/aarch64/i64_divu/signed.wat index eaf9a4373634..0de4a6c04881 100644 --- a/tests/disas/winch/aarch64/i64_divu/signed.wat +++ b/tests/disas/winch/aarch64/i64_divu/signed.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,12 +23,13 @@ ;; mov x0, x16 ;; mov x16, #-1 ;; mov x1, x16 -;; cbz x0, #0x50 -;; 34: udiv x1, x1, x0 +;; cbz x0, #0x58 +;; 38: udiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_divu/zero_zero.wat b/tests/disas/winch/aarch64/i64_divu/zero_zero.wat index 010d16fb7190..82f8fd7fd308 100644 --- a/tests/disas/winch/aarch64/i64_divu/zero_zero.wat +++ b/tests/disas/winch/aarch64/i64_divu/zero_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,12 +23,13 @@ ;; mov x0, x16 ;; mov x16, #0 ;; mov x1, x16 -;; cbz x0, #0x50 -;; 34: udiv x1, x1, x0 +;; cbz x0, #0x58 +;; 38: udiv x1, x1, x0 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 50: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 58: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_eq/const.wat b/tests/disas/winch/aarch64/i64_eq/const.wat index 6c5ba4456aab..1424df1027d1 100644 --- a/tests/disas/winch/aarch64/i64_eq/const.wat +++ b/tests/disas/winch/aarch64/i64_eq/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_eq/locals.wat b/tests/disas/winch/aarch64/i64_eq/locals.wat index 58897eee4044..4e93378b679e 100644 --- a/tests/disas/winch/aarch64/i64_eq/locals.wat +++ b/tests/disas/winch/aarch64/i64_eq/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_eq/params.wat b/tests/disas/winch/aarch64/i64_eq/params.wat index 7cd3db194bf3..3ce2e3037978 100644 --- a/tests/disas/winch/aarch64/i64_eq/params.wat +++ b/tests/disas/winch/aarch64/i64_eq/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_16_s/const.wat b/tests/disas/winch/aarch64/i64_extend_16_s/const.wat index 0391191b7d38..f3b850594241 100644 --- a/tests/disas/winch/aarch64/i64_extend_16_s/const.wat +++ b/tests/disas/winch/aarch64/i64_extend_16_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_16_s/locals.wat b/tests/disas/winch/aarch64/i64_extend_16_s/locals.wat index 189637d1b8d7..494262f0714a 100644 --- a/tests/disas/winch/aarch64/i64_extend_16_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_extend_16_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_16_s/params.wat b/tests/disas/winch/aarch64/i64_extend_16_s/params.wat index d2110d549a25..10d6764b0925 100644 --- a/tests/disas/winch/aarch64/i64_extend_16_s/params.wat +++ b/tests/disas/winch/aarch64/i64_extend_16_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_32_s/const.wat b/tests/disas/winch/aarch64/i64_extend_32_s/const.wat index 58b8d5057804..6f7a8cca01e5 100644 --- a/tests/disas/winch/aarch64/i64_extend_32_s/const.wat +++ b/tests/disas/winch/aarch64/i64_extend_32_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_32_s/locals.wat b/tests/disas/winch/aarch64/i64_extend_32_s/locals.wat index 9ef0c3a125fa..dc960bad4443 100644 --- a/tests/disas/winch/aarch64/i64_extend_32_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_extend_32_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_32_s/params.wat b/tests/disas/winch/aarch64/i64_extend_32_s/params.wat index da6254ac1ada..542c33df10cb 100644 --- a/tests/disas/winch/aarch64/i64_extend_32_s/params.wat +++ b/tests/disas/winch/aarch64/i64_extend_32_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_8_s/const.wat b/tests/disas/winch/aarch64/i64_extend_8_s/const.wat index f81220664344..3d8c3128e155 100644 --- a/tests/disas/winch/aarch64/i64_extend_8_s/const.wat +++ b/tests/disas/winch/aarch64/i64_extend_8_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_8_s/locals.wat b/tests/disas/winch/aarch64/i64_extend_8_s/locals.wat index 38cedc33c116..428e3523f7f5 100644 --- a/tests/disas/winch/aarch64/i64_extend_8_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_extend_8_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_8_s/params.wat b/tests/disas/winch/aarch64/i64_extend_8_s/params.wat index 4768cec33a9d..6443fa258c28 100644 --- a/tests/disas/winch/aarch64/i64_extend_8_s/params.wat +++ b/tests/disas/winch/aarch64/i64_extend_8_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_i32_s/const.wat b/tests/disas/winch/aarch64/i64_extend_i32_s/const.wat index 7fd69c09a9fa..5df293f303d6 100644 --- a/tests/disas/winch/aarch64/i64_extend_i32_s/const.wat +++ b/tests/disas/winch/aarch64/i64_extend_i32_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_i32_s/locals.wat b/tests/disas/winch/aarch64/i64_extend_i32_s/locals.wat index 17e45e8f4279..35ae9a963e85 100644 --- a/tests/disas/winch/aarch64/i64_extend_i32_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_extend_i32_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_i32_s/params.wat b/tests/disas/winch/aarch64/i64_extend_i32_s/params.wat index 33abfe18045d..f4f05ef9d10c 100644 --- a/tests/disas/winch/aarch64/i64_extend_i32_s/params.wat +++ b/tests/disas/winch/aarch64/i64_extend_i32_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_i32_u/const.wat b/tests/disas/winch/aarch64/i64_extend_i32_u/const.wat index d2846b075c32..691281ceef67 100644 --- a/tests/disas/winch/aarch64/i64_extend_i32_u/const.wat +++ b/tests/disas/winch/aarch64/i64_extend_i32_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_i32_u/locals.wat b/tests/disas/winch/aarch64/i64_extend_i32_u/locals.wat index 96410cd30378..da08e32335fe 100644 --- a/tests/disas/winch/aarch64/i64_extend_i32_u/locals.wat +++ b/tests/disas/winch/aarch64/i64_extend_i32_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_extend_i32_u/params.wat b/tests/disas/winch/aarch64/i64_extend_i32_u/params.wat index 3a327c5059e8..4f9290d5f55a 100644 --- a/tests/disas/winch/aarch64/i64_extend_i32_u/params.wat +++ b/tests/disas/winch/aarch64/i64_extend_i32_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ge_s/const.wat b/tests/disas/winch/aarch64/i64_ge_s/const.wat index 39367a4640d6..6d080bfa0f7f 100644 --- a/tests/disas/winch/aarch64/i64_ge_s/const.wat +++ b/tests/disas/winch/aarch64/i64_ge_s/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ge_s/locals.wat b/tests/disas/winch/aarch64/i64_ge_s/locals.wat index ce2824dcd575..990322c5d0ac 100644 --- a/tests/disas/winch/aarch64/i64_ge_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_ge_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ge_s/params.wat b/tests/disas/winch/aarch64/i64_ge_s/params.wat index 655d1eccd809..36e84085fce6 100644 --- a/tests/disas/winch/aarch64/i64_ge_s/params.wat +++ b/tests/disas/winch/aarch64/i64_ge_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ge_u/const.wat b/tests/disas/winch/aarch64/i64_ge_u/const.wat index bf40723b9880..f8df683c3725 100644 --- a/tests/disas/winch/aarch64/i64_ge_u/const.wat +++ b/tests/disas/winch/aarch64/i64_ge_u/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ge_u/locals.wat b/tests/disas/winch/aarch64/i64_ge_u/locals.wat index 434368fc752a..068d621d1e93 100644 --- a/tests/disas/winch/aarch64/i64_ge_u/locals.wat +++ b/tests/disas/winch/aarch64/i64_ge_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ge_u/params.wat b/tests/disas/winch/aarch64/i64_ge_u/params.wat index 7b1ca03da1c6..6e67b4b80140 100644 --- a/tests/disas/winch/aarch64/i64_ge_u/params.wat +++ b/tests/disas/winch/aarch64/i64_ge_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_gt_s/const.wat b/tests/disas/winch/aarch64/i64_gt_s/const.wat index 51881fea060d..62ca9f2eea0f 100644 --- a/tests/disas/winch/aarch64/i64_gt_s/const.wat +++ b/tests/disas/winch/aarch64/i64_gt_s/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_gt_s/locals.wat b/tests/disas/winch/aarch64/i64_gt_s/locals.wat index ca7a064c337c..5f6b7ab3cf88 100644 --- a/tests/disas/winch/aarch64/i64_gt_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_gt_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_gt_s/params.wat b/tests/disas/winch/aarch64/i64_gt_s/params.wat index ae8f140efe94..63e739653abd 100644 --- a/tests/disas/winch/aarch64/i64_gt_s/params.wat +++ b/tests/disas/winch/aarch64/i64_gt_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_gt_u/const.wat b/tests/disas/winch/aarch64/i64_gt_u/const.wat index f023c42132d1..ab03be4a3d2e 100644 --- a/tests/disas/winch/aarch64/i64_gt_u/const.wat +++ b/tests/disas/winch/aarch64/i64_gt_u/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_gt_u/locals.wat b/tests/disas/winch/aarch64/i64_gt_u/locals.wat index 872466277514..cf4b1571ed5b 100644 --- a/tests/disas/winch/aarch64/i64_gt_u/locals.wat +++ b/tests/disas/winch/aarch64/i64_gt_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_gt_u/params.wat b/tests/disas/winch/aarch64/i64_gt_u/params.wat index ec64f1a7e292..b44eb8fb3a01 100644 --- a/tests/disas/winch/aarch64/i64_gt_u/params.wat +++ b/tests/disas/winch/aarch64/i64_gt_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_le_s/const.wat b/tests/disas/winch/aarch64/i64_le_s/const.wat index 4de043fc3fa8..2d11dde2fe08 100644 --- a/tests/disas/winch/aarch64/i64_le_s/const.wat +++ b/tests/disas/winch/aarch64/i64_le_s/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_le_s/locals.wat b/tests/disas/winch/aarch64/i64_le_s/locals.wat index f1e426ca4c55..9ab6f757bec6 100644 --- a/tests/disas/winch/aarch64/i64_le_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_le_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_le_s/params.wat b/tests/disas/winch/aarch64/i64_le_s/params.wat index 2bf8b1261ee9..f59dbf2a1989 100644 --- a/tests/disas/winch/aarch64/i64_le_s/params.wat +++ b/tests/disas/winch/aarch64/i64_le_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_le_u/const.wat b/tests/disas/winch/aarch64/i64_le_u/const.wat index 34e27e035124..2c52238a98e0 100644 --- a/tests/disas/winch/aarch64/i64_le_u/const.wat +++ b/tests/disas/winch/aarch64/i64_le_u/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_le_u/locals.wat b/tests/disas/winch/aarch64/i64_le_u/locals.wat index 52538caa8d09..55e6e9a3fc18 100644 --- a/tests/disas/winch/aarch64/i64_le_u/locals.wat +++ b/tests/disas/winch/aarch64/i64_le_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_le_u/params.wat b/tests/disas/winch/aarch64/i64_le_u/params.wat index 1b2780bd67a6..e8d7508e1270 100644 --- a/tests/disas/winch/aarch64/i64_le_u/params.wat +++ b/tests/disas/winch/aarch64/i64_le_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_lt_s/const.wat b/tests/disas/winch/aarch64/i64_lt_s/const.wat index c86e612af2d2..73d611dd2bef 100644 --- a/tests/disas/winch/aarch64/i64_lt_s/const.wat +++ b/tests/disas/winch/aarch64/i64_lt_s/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_lt_s/locals.wat b/tests/disas/winch/aarch64/i64_lt_s/locals.wat index 7b3b9cdd0a4e..a4f6da770c36 100644 --- a/tests/disas/winch/aarch64/i64_lt_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_lt_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_lt_s/params.wat b/tests/disas/winch/aarch64/i64_lt_s/params.wat index 94d1e3f33b08..130e6b4afb85 100644 --- a/tests/disas/winch/aarch64/i64_lt_s/params.wat +++ b/tests/disas/winch/aarch64/i64_lt_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_lt_u/const.wat b/tests/disas/winch/aarch64/i64_lt_u/const.wat index 1f891813a7d5..ad921711fcda 100644 --- a/tests/disas/winch/aarch64/i64_lt_u/const.wat +++ b/tests/disas/winch/aarch64/i64_lt_u/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_lt_u/locals.wat b/tests/disas/winch/aarch64/i64_lt_u/locals.wat index 9675c7fe548d..7d45d1db7fe6 100644 --- a/tests/disas/winch/aarch64/i64_lt_u/locals.wat +++ b/tests/disas/winch/aarch64/i64_lt_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_lt_u/params.wat b/tests/disas/winch/aarch64/i64_lt_u/params.wat index 7ffa185cbf86..3bb03313e33c 100644 --- a/tests/disas/winch/aarch64/i64_lt_u/params.wat +++ b/tests/disas/winch/aarch64/i64_lt_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_mul/const.wat b/tests/disas/winch/aarch64/i64_mul/const.wat index 1e45b7de2aa5..d435460f0092 100644 --- a/tests/disas/winch/aarch64/i64_mul/const.wat +++ b/tests/disas/winch/aarch64/i64_mul/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_mul/locals.wat b/tests/disas/winch/aarch64/i64_mul/locals.wat index 573040c0a042..3f07314ffab6 100644 --- a/tests/disas/winch/aarch64/i64_mul/locals.wat +++ b/tests/disas/winch/aarch64/i64_mul/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_mul/max.wat b/tests/disas/winch/aarch64/i64_mul/max.wat index 1844353362b7..a53cda462d6c 100644 --- a/tests/disas/winch/aarch64/i64_mul/max.wat +++ b/tests/disas/winch/aarch64/i64_mul/max.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_mul/max_one.wat b/tests/disas/winch/aarch64/i64_mul/max_one.wat index e9b94670d77b..4900d202f000 100644 --- a/tests/disas/winch/aarch64/i64_mul/max_one.wat +++ b/tests/disas/winch/aarch64/i64_mul/max_one.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_mul/mixed.wat b/tests/disas/winch/aarch64/i64_mul/mixed.wat index 3625f5133ee7..d892a836eb73 100644 --- a/tests/disas/winch/aarch64/i64_mul/mixed.wat +++ b/tests/disas/winch/aarch64/i64_mul/mixed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_mul/params.wat b/tests/disas/winch/aarch64/i64_mul/params.wat index 98470fb015fd..9fa7dc418d29 100644 --- a/tests/disas/winch/aarch64/i64_mul/params.wat +++ b/tests/disas/winch/aarch64/i64_mul/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_mul/signed.wat b/tests/disas/winch/aarch64/i64_mul/signed.wat index 408475e4d1f4..22bfb4cf2fed 100644 --- a/tests/disas/winch/aarch64/i64_mul/signed.wat +++ b/tests/disas/winch/aarch64/i64_mul/signed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_mul/unsigned_with_zero.wat b/tests/disas/winch/aarch64/i64_mul/unsigned_with_zero.wat index b3da9e56c83c..590e4d2ee215 100644 --- a/tests/disas/winch/aarch64/i64_mul/unsigned_with_zero.wat +++ b/tests/disas/winch/aarch64/i64_mul/unsigned_with_zero.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ne/const.wat b/tests/disas/winch/aarch64/i64_ne/const.wat index 4a0e8171bca2..73d8a5814454 100644 --- a/tests/disas/winch/aarch64/i64_ne/const.wat +++ b/tests/disas/winch/aarch64/i64_ne/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ne/locals.wat b/tests/disas/winch/aarch64/i64_ne/locals.wat index f90ce6428c45..3d603704b7e6 100644 --- a/tests/disas/winch/aarch64/i64_ne/locals.wat +++ b/tests/disas/winch/aarch64/i64_ne/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_ne/params.wat b/tests/disas/winch/aarch64/i64_ne/params.wat index 47805d10e507..d5f42f9ddea9 100644 --- a/tests/disas/winch/aarch64/i64_ne/params.wat +++ b/tests/disas/winch/aarch64/i64_ne/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_or/32_const.wat b/tests/disas/winch/aarch64/i64_or/32_const.wat index 3e9e364acbca..602bb25e4b2f 100644 --- a/tests/disas/winch/aarch64/i64_or/32_const.wat +++ b/tests/disas/winch/aarch64/i64_or/32_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_or/64_const.wat b/tests/disas/winch/aarch64/i64_or/64_const.wat index 325e5e686147..9fc0b29d9fa7 100644 --- a/tests/disas/winch/aarch64/i64_or/64_const.wat +++ b/tests/disas/winch/aarch64/i64_or/64_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_or/locals.wat b/tests/disas/winch/aarch64/i64_or/locals.wat index 56dc4d2e268b..3d2ff13ba37e 100644 --- a/tests/disas/winch/aarch64/i64_or/locals.wat +++ b/tests/disas/winch/aarch64/i64_or/locals.wat @@ -19,6 +19,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_or/params.wat b/tests/disas/winch/aarch64/i64_or/params.wat index 83a63bb34935..f7f324e5c374 100644 --- a/tests/disas/winch/aarch64/i64_or/params.wat +++ b/tests/disas/winch/aarch64/i64_or/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_popcnt/const.wat b/tests/disas/winch/aarch64/i64_popcnt/const.wat index f3f058e3579f..d5726d7a5afc 100644 --- a/tests/disas/winch/aarch64/i64_popcnt/const.wat +++ b/tests/disas/winch/aarch64/i64_popcnt/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_popcnt/reg.wat b/tests/disas/winch/aarch64/i64_popcnt/reg.wat index f6bc16c1d507..6fcd8a879f4b 100644 --- a/tests/disas/winch/aarch64/i64_popcnt/reg.wat +++ b/tests/disas/winch/aarch64/i64_popcnt/reg.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_reinterpret_f64/const.wat b/tests/disas/winch/aarch64/i64_reinterpret_f64/const.wat index 7a984bc6eda2..62b5df4b6c77 100644 --- a/tests/disas/winch/aarch64/i64_reinterpret_f64/const.wat +++ b/tests/disas/winch/aarch64/i64_reinterpret_f64/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_reinterpret_f64/locals.wat b/tests/disas/winch/aarch64/i64_reinterpret_f64/locals.wat index cfb65052706b..264788acdd3c 100644 --- a/tests/disas/winch/aarch64/i64_reinterpret_f64/locals.wat +++ b/tests/disas/winch/aarch64/i64_reinterpret_f64/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_reinterpret_f64/params.wat b/tests/disas/winch/aarch64/i64_reinterpret_f64/params.wat index d942517fcae6..b6c8e71d7d26 100644 --- a/tests/disas/winch/aarch64/i64_reinterpret_f64/params.wat +++ b/tests/disas/winch/aarch64/i64_reinterpret_f64/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_reinterpret_f64/ret_float.wat b/tests/disas/winch/aarch64/i64_reinterpret_f64/ret_float.wat index c77a27a86417..6e9481ed7f71 100644 --- a/tests/disas/winch/aarch64/i64_reinterpret_f64/ret_float.wat +++ b/tests/disas/winch/aarch64/i64_reinterpret_f64/ret_float.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_rems/const.wat b/tests/disas/winch/aarch64/i64_rems/const.wat index 6b1ed53cdf9e..4d5f929af4d2 100644 --- a/tests/disas/winch/aarch64/i64_rems/const.wat +++ b/tests/disas/winch/aarch64/i64_rems/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov x0, x16 ;; mov x16, #7 ;; mov x1, x16 -;; cbz x0, #0x54 -;; 34: sdiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_rems/one_zero.wat b/tests/disas/winch/aarch64/i64_rems/one_zero.wat index a9fa72f93b97..37906a2e4981 100644 --- a/tests/disas/winch/aarch64/i64_rems/one_zero.wat +++ b/tests/disas/winch/aarch64/i64_rems/one_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov x0, x16 ;; mov x16, #1 ;; mov x1, x16 -;; cbz x0, #0x54 -;; 34: sdiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_rems/overflow.wat b/tests/disas/winch/aarch64/i64_rems/overflow.wat index bd06871191d9..15dc46f44e42 100644 --- a/tests/disas/winch/aarch64/i64_rems/overflow.wat +++ b/tests/disas/winch/aarch64/i64_rems/overflow.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov x0, x16 ;; mov x16, #-0x8000000000000000 ;; mov x1, x16 -;; cbz x0, #0x54 -;; 34: sdiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_rems/params.wat b/tests/disas/winch/aarch64/i64_rems/params.wat index 19ef15cff225..c79cac6e660c 100644 --- a/tests/disas/winch/aarch64/i64_rems/params.wat +++ b/tests/disas/winch/aarch64/i64_rems/params.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -22,13 +23,14 @@ ;; stur x3, [x28] ;; ldur x0, [x28] ;; ldur x1, [x28, #8] -;; cbz x0, #0x54 -;; 34: sdiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_rems/zero_zero.wat b/tests/disas/winch/aarch64/i64_rems/zero_zero.wat index 75d8f0dde076..be4c56a7ca6f 100644 --- a/tests/disas/winch/aarch64/i64_rems/zero_zero.wat +++ b/tests/disas/winch/aarch64/i64_rems/zero_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov x0, x16 ;; mov x16, #0 ;; mov x1, x16 -;; cbz x0, #0x54 -;; 34: sdiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: sdiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_remu/const.wat b/tests/disas/winch/aarch64/i64_remu/const.wat index 733edb4dbf15..58e9f8b7f145 100644 --- a/tests/disas/winch/aarch64/i64_remu/const.wat +++ b/tests/disas/winch/aarch64/i64_remu/const.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov x0, x16 ;; mov x16, #7 ;; mov x1, x16 -;; cbz x0, #0x54 -;; 34: udiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: udiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_remu/one_zero.wat b/tests/disas/winch/aarch64/i64_remu/one_zero.wat index 7734e10c0ec8..88a016ecc437 100644 --- a/tests/disas/winch/aarch64/i64_remu/one_zero.wat +++ b/tests/disas/winch/aarch64/i64_remu/one_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov x0, x16 ;; mov x16, #1 ;; mov x1, x16 -;; cbz x0, #0x54 -;; 34: udiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: udiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_remu/params.wat b/tests/disas/winch/aarch64/i64_remu/params.wat index 9692eee04352..8963c747bd18 100644 --- a/tests/disas/winch/aarch64/i64_remu/params.wat +++ b/tests/disas/winch/aarch64/i64_remu/params.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -22,13 +23,14 @@ ;; stur x3, [x28] ;; ldur x0, [x28] ;; ldur x1, [x28, #8] -;; cbz x0, #0x54 -;; 34: udiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: udiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_remu/signed.wat b/tests/disas/winch/aarch64/i64_remu/signed.wat index 058be1e3d6e4..650c1b3270b3 100644 --- a/tests/disas/winch/aarch64/i64_remu/signed.wat +++ b/tests/disas/winch/aarch64/i64_remu/signed.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov x0, x16 ;; mov x16, #-1 ;; mov x1, x16 -;; cbz x0, #0x54 -;; 34: udiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: udiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_remu/zero_zero.wat b/tests/disas/winch/aarch64/i64_remu/zero_zero.wat index a2375595054f..2c305fb05bfa 100644 --- a/tests/disas/winch/aarch64/i64_remu/zero_zero.wat +++ b/tests/disas/winch/aarch64/i64_remu/zero_zero.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,13 +23,14 @@ ;; mov x0, x16 ;; mov x16, #0 ;; mov x1, x16 -;; cbz x0, #0x54 -;; 34: udiv x16, x1, x0 +;; cbz x0, #0x5c +;; 38: udiv x16, x1, x0 ;; msub x1, x0, x16, x1 ;; mov x0, x1 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 54: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 5c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_rotl/16_const.wat b/tests/disas/winch/aarch64/i64_rotl/16_const.wat index 1ea0b4cc3205..6d830f6785be 100644 --- a/tests/disas/winch/aarch64/i64_rotl/16_const.wat +++ b/tests/disas/winch/aarch64/i64_rotl/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_rotl/8_const.wat b/tests/disas/winch/aarch64/i64_rotl/8_const.wat index d9fd98e14e02..ee6ad9e9817b 100644 --- a/tests/disas/winch/aarch64/i64_rotl/8_const.wat +++ b/tests/disas/winch/aarch64/i64_rotl/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_rotl/locals.wat b/tests/disas/winch/aarch64/i64_rotl/locals.wat index 24b310bf4390..9468b2286d4b 100644 --- a/tests/disas/winch/aarch64/i64_rotl/locals.wat +++ b/tests/disas/winch/aarch64/i64_rotl/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -43,5 +44,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_rotl/params.wat b/tests/disas/winch/aarch64/i64_rotl/params.wat index f405d1862ae6..0a8b119339e5 100644 --- a/tests/disas/winch/aarch64/i64_rotl/params.wat +++ b/tests/disas/winch/aarch64/i64_rotl/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -27,5 +28,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_rotr/16_const.wat b/tests/disas/winch/aarch64/i64_rotr/16_const.wat index 6f8ad20a01ef..469c89f76347 100644 --- a/tests/disas/winch/aarch64/i64_rotr/16_const.wat +++ b/tests/disas/winch/aarch64/i64_rotr/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_rotr/8_const.wat b/tests/disas/winch/aarch64/i64_rotr/8_const.wat index ec61cb01d20a..2048001ed05d 100644 --- a/tests/disas/winch/aarch64/i64_rotr/8_const.wat +++ b/tests/disas/winch/aarch64/i64_rotr/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_rotr/locals.wat b/tests/disas/winch/aarch64/i64_rotr/locals.wat index 8d1ff44b89a7..bbcf33376d52 100644 --- a/tests/disas/winch/aarch64/i64_rotr/locals.wat +++ b/tests/disas/winch/aarch64/i64_rotr/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_rotr/params.wat b/tests/disas/winch/aarch64/i64_rotr/params.wat index f46bf692500f..5a1809c05558 100644 --- a/tests/disas/winch/aarch64/i64_rotr/params.wat +++ b/tests/disas/winch/aarch64/i64_rotr/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shl/16_const.wat b/tests/disas/winch/aarch64/i64_shl/16_const.wat index 61858ed60bb3..c81208967dcb 100644 --- a/tests/disas/winch/aarch64/i64_shl/16_const.wat +++ b/tests/disas/winch/aarch64/i64_shl/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shl/8_const.wat b/tests/disas/winch/aarch64/i64_shl/8_const.wat index 0751ea78d22c..c3f37d41f63d 100644 --- a/tests/disas/winch/aarch64/i64_shl/8_const.wat +++ b/tests/disas/winch/aarch64/i64_shl/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shl/locals.wat b/tests/disas/winch/aarch64/i64_shl/locals.wat index ba7f8ec5d135..0c189f1bf483 100644 --- a/tests/disas/winch/aarch64/i64_shl/locals.wat +++ b/tests/disas/winch/aarch64/i64_shl/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shl/params.wat b/tests/disas/winch/aarch64/i64_shl/params.wat index 959700886663..7c4353fc9765 100644 --- a/tests/disas/winch/aarch64/i64_shl/params.wat +++ b/tests/disas/winch/aarch64/i64_shl/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shr_s/16_const.wat b/tests/disas/winch/aarch64/i64_shr_s/16_const.wat index f778a785fe11..1d8761eac64a 100644 --- a/tests/disas/winch/aarch64/i64_shr_s/16_const.wat +++ b/tests/disas/winch/aarch64/i64_shr_s/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shr_s/8_const.wat b/tests/disas/winch/aarch64/i64_shr_s/8_const.wat index 1452f60a99ff..92c0eaa62d13 100644 --- a/tests/disas/winch/aarch64/i64_shr_s/8_const.wat +++ b/tests/disas/winch/aarch64/i64_shr_s/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shr_s/locals.wat b/tests/disas/winch/aarch64/i64_shr_s/locals.wat index 23fcf6436e7b..c56b4aa4aa73 100644 --- a/tests/disas/winch/aarch64/i64_shr_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_shr_s/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shr_s/params.wat b/tests/disas/winch/aarch64/i64_shr_s/params.wat index f0ba1715b840..37fb6e3049de 100644 --- a/tests/disas/winch/aarch64/i64_shr_s/params.wat +++ b/tests/disas/winch/aarch64/i64_shr_s/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shr_u/16_const.wat b/tests/disas/winch/aarch64/i64_shr_u/16_const.wat index 42121eb9867f..7907850ffa09 100644 --- a/tests/disas/winch/aarch64/i64_shr_u/16_const.wat +++ b/tests/disas/winch/aarch64/i64_shr_u/16_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shr_u/8_const.wat b/tests/disas/winch/aarch64/i64_shr_u/8_const.wat index 8f4f434ea260..ce58bba1047c 100644 --- a/tests/disas/winch/aarch64/i64_shr_u/8_const.wat +++ b/tests/disas/winch/aarch64/i64_shr_u/8_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shr_u/locals.wat b/tests/disas/winch/aarch64/i64_shr_u/locals.wat index 84e1b17d7ec2..22c84db848d9 100644 --- a/tests/disas/winch/aarch64/i64_shr_u/locals.wat +++ b/tests/disas/winch/aarch64/i64_shr_u/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_shr_u/params.wat b/tests/disas/winch/aarch64/i64_shr_u/params.wat index bd097176f510..4712801f369a 100644 --- a/tests/disas/winch/aarch64/i64_shr_u/params.wat +++ b/tests/disas/winch/aarch64/i64_shr_u/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_sub/const.wat b/tests/disas/winch/aarch64/i64_sub/const.wat index a02d562cc866..e9cccdd242a2 100644 --- a/tests/disas/winch/aarch64/i64_sub/const.wat +++ b/tests/disas/winch/aarch64/i64_sub/const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_sub/locals.wat b/tests/disas/winch/aarch64/i64_sub/locals.wat index 1a30545cdf13..229354e0b788 100644 --- a/tests/disas/winch/aarch64/i64_sub/locals.wat +++ b/tests/disas/winch/aarch64/i64_sub/locals.wat @@ -20,6 +20,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -42,5 +43,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_sub/max.wat b/tests/disas/winch/aarch64/i64_sub/max.wat index 0f89ff1c9139..0c1dd461e206 100644 --- a/tests/disas/winch/aarch64/i64_sub/max.wat +++ b/tests/disas/winch/aarch64/i64_sub/max.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_sub/max_one.wat b/tests/disas/winch/aarch64/i64_sub/max_one.wat index 6815ab29f262..db6576079da7 100644 --- a/tests/disas/winch/aarch64/i64_sub/max_one.wat +++ b/tests/disas/winch/aarch64/i64_sub/max_one.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_sub/mixed.wat b/tests/disas/winch/aarch64/i64_sub/mixed.wat index 7641ce423be0..8e01e2f423d0 100644 --- a/tests/disas/winch/aarch64/i64_sub/mixed.wat +++ b/tests/disas/winch/aarch64/i64_sub/mixed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_sub/params.wat b/tests/disas/winch/aarch64/i64_sub/params.wat index 6aabcdbbc407..aaf8a58a60f9 100644 --- a/tests/disas/winch/aarch64/i64_sub/params.wat +++ b/tests/disas/winch/aarch64/i64_sub/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_sub/signed.wat b/tests/disas/winch/aarch64/i64_sub/signed.wat index 6f0e6a3a37c3..f4620cadf116 100644 --- a/tests/disas/winch/aarch64/i64_sub/signed.wat +++ b/tests/disas/winch/aarch64/i64_sub/signed.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_sub/unsigned_with_zero.wat b/tests/disas/winch/aarch64/i64_sub/unsigned_with_zero.wat index 1e3888408c4e..6aa9ca45a9a3 100644 --- a/tests/disas/winch/aarch64/i64_sub/unsigned_with_zero.wat +++ b/tests/disas/winch/aarch64/i64_sub/unsigned_with_zero.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_trunc_f32_s/const.wat b/tests/disas/winch/aarch64/i64_trunc_f32_s/const.wat index 96d112878137..a932310d138e 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f32_s/const.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f32_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,21 +20,22 @@ ;; mov x16, #0x3f800000 ;; fmov s0, w16 ;; fcmp s0, s0 -;; b.vs #0x68 -;; 30: mov x16, #0xdf000000 +;; b.vs #0x70 +;; 34: mov x16, #0xdf000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.le #0x6c -;; 40: mov x16, #0x5f000000 +;; b.le #0x74 +;; 44: mov x16, #0x5f000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x70 -;; 50: fcvtzs x0, s0 +;; b.ge #0x78 +;; 54: fcvtzs x0, s0 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f32_s/locals.wat b/tests/disas/winch/aarch64/i64_trunc_f32_s/locals.wat index b3d8898117f5..99835337e31b 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f32_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f32_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,21 +23,22 @@ ;; stur x16, [x28] ;; ldur s0, [x28, #4] ;; fcmp s0, s0 -;; b.vs #0x6c -;; 34: mov x16, #0xdf000000 +;; b.vs #0x74 +;; 38: mov x16, #0xdf000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.le #0x70 -;; 44: mov x16, #0x5f000000 +;; b.le #0x78 +;; 48: mov x16, #0x5f000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x74 -;; 54: fcvtzs x0, s0 +;; b.ge #0x7c +;; 58: fcvtzs x0, s0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 7c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f32_s/params.wat b/tests/disas/winch/aarch64/i64_trunc_f32_s/params.wat index 6f827d019a3f..a126a6df806f 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f32_s/params.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f32_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -19,21 +20,22 @@ ;; stur s0, [x28, #4] ;; ldur s0, [x28, #4] ;; fcmp s0, s0 -;; b.vs #0x68 -;; 30: mov x16, #0xdf000000 +;; b.vs #0x70 +;; 34: mov x16, #0xdf000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.le #0x6c -;; 40: mov x16, #0x5f000000 +;; b.le #0x74 +;; 44: mov x16, #0x5f000000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x70 -;; 50: fcvtzs x0, s0 +;; b.ge #0x78 +;; 54: fcvtzs x0, s0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f32_u/const.wat b/tests/disas/winch/aarch64/i64_trunc_f32_u/const.wat index 0fe135a9ded1..8fb2e49ae9be 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f32_u/const.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f32_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,20 +20,21 @@ ;; mov x16, #0x3f800000 ;; fmov s0, w16 ;; fcmp s0, s0 -;; b.vs #0x64 -;; 30: fmov s31, #-1.00000000 +;; b.vs #0x6c +;; 34: fmov s31, #-1.00000000 ;; fcmp s31, s0 -;; b.le #0x68 -;; 3c: mov x16, #0x5f800000 +;; b.le #0x70 +;; 40: mov x16, #0x5f800000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x6c -;; 4c: fcvtzu x0, s0 +;; b.ge #0x74 +;; 50: fcvtzu x0, s0 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f32_u/locals.wat b/tests/disas/winch/aarch64/i64_trunc_f32_u/locals.wat index 533db34abb59..ff01533e4ebb 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f32_u/locals.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f32_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,20 +23,21 @@ ;; stur x16, [x28] ;; ldur s0, [x28, #4] ;; fcmp s0, s0 -;; b.vs #0x68 -;; 34: fmov s31, #-1.00000000 +;; b.vs #0x70 +;; 38: fmov s31, #-1.00000000 ;; fcmp s31, s0 -;; b.le #0x6c -;; 40: mov x16, #0x5f800000 +;; b.le #0x74 +;; 44: mov x16, #0x5f800000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x70 -;; 50: fcvtzu x0, s0 +;; b.ge #0x78 +;; 54: fcvtzu x0, s0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f32_u/params.wat b/tests/disas/winch/aarch64/i64_trunc_f32_u/params.wat index 22d0d408fb18..212ff73c87b5 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f32_u/params.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f32_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -19,20 +20,21 @@ ;; stur s0, [x28, #4] ;; ldur s0, [x28, #4] ;; fcmp s0, s0 -;; b.vs #0x64 -;; 30: fmov s31, #-1.00000000 +;; b.vs #0x6c +;; 34: fmov s31, #-1.00000000 ;; fcmp s31, s0 -;; b.le #0x68 -;; 3c: mov x16, #0x5f800000 +;; b.le #0x70 +;; 40: mov x16, #0x5f800000 ;; fmov s31, w16 ;; fcmp s31, s0 -;; b.ge #0x6c -;; 4c: fcvtzu x0, s0 +;; b.ge #0x74 +;; 50: fcvtzu x0, s0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f64_s/const.wat b/tests/disas/winch/aarch64/i64_trunc_f64_s/const.wat index 9b69513a2350..d75de817b7fe 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f64_s/const.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f64_s/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,21 +20,22 @@ ;; mov x16, #0x3ff0000000000000 ;; fmov d0, x16 ;; fcmp d0, d0 -;; b.vs #0x68 -;; 30: mov x16, #-0x3c20000000000000 +;; b.vs #0x70 +;; 34: mov x16, #-0x3c20000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.le #0x6c -;; 40: mov x16, #0x43e0000000000000 +;; b.le #0x74 +;; 44: mov x16, #0x43e0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x70 -;; 50: fcvtzs x0, d0 +;; b.ge #0x78 +;; 54: fcvtzs x0, d0 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f64_s/locals.wat b/tests/disas/winch/aarch64/i64_trunc_f64_s/locals.wat index 97305b60f0e1..5dd57ac2776d 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f64_s/locals.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f64_s/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,21 +23,22 @@ ;; stur x16, [x28] ;; ldur d0, [x28] ;; fcmp d0, d0 -;; b.vs #0x6c -;; 34: mov x16, #-0x3c20000000000000 +;; b.vs #0x74 +;; 38: mov x16, #-0x3c20000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.le #0x70 -;; 44: mov x16, #0x43e0000000000000 +;; b.le #0x78 +;; 48: mov x16, #0x43e0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x74 -;; 54: fcvtzs x0, d0 +;; b.ge #0x7c +;; 58: fcvtzs x0, d0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 7c: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f64_s/params.wat b/tests/disas/winch/aarch64/i64_trunc_f64_s/params.wat index 935f6675d5c8..7f875ffbca0e 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f64_s/params.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f64_s/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -19,21 +20,22 @@ ;; stur d0, [x28] ;; ldur d0, [x28] ;; fcmp d0, d0 -;; b.vs #0x68 -;; 30: mov x16, #-0x3c20000000000000 +;; b.vs #0x70 +;; 34: mov x16, #-0x3c20000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.le #0x6c -;; 40: mov x16, #0x43e0000000000000 +;; b.le #0x74 +;; 44: mov x16, #0x43e0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x70 -;; 50: fcvtzs x0, d0 +;; b.ge #0x78 +;; 54: fcvtzs x0, d0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f64_u/const.wat b/tests/disas/winch/aarch64/i64_trunc_f64_u/const.wat index 6497ae19cee1..4f8582c1d2f7 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f64_u/const.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f64_u/const.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -19,20 +20,21 @@ ;; mov x16, #0x3ff0000000000000 ;; fmov d0, x16 ;; fcmp d0, d0 -;; b.vs #0x64 -;; 30: fmov d31, #-1.00000000 +;; b.vs #0x6c +;; 34: fmov d31, #-1.00000000 ;; fcmp d31, d0 -;; b.le #0x68 -;; 3c: mov x16, #0x43f0000000000000 +;; b.le #0x70 +;; 40: mov x16, #0x43f0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x6c -;; 4c: fcvtzu x0, d0 +;; b.ge #0x74 +;; 50: fcvtzu x0, d0 ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f64_u/locals.wat b/tests/disas/winch/aarch64/i64_trunc_f64_u/locals.wat index 2a19f56b46ab..9427e6df7f30 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f64_u/locals.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f64_u/locals.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -22,20 +23,21 @@ ;; stur x16, [x28] ;; ldur d0, [x28] ;; fcmp d0, d0 -;; b.vs #0x68 -;; 34: fmov d31, #-1.00000000 +;; b.vs #0x70 +;; 38: fmov d31, #-1.00000000 ;; fcmp d31, d0 -;; b.le #0x6c -;; 40: mov x16, #0x43f0000000000000 +;; b.le #0x74 +;; 44: mov x16, #0x43f0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x70 -;; 50: fcvtzu x0, d0 +;; b.ge #0x78 +;; 54: fcvtzu x0, d0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 78: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_trunc_f64_u/params.wat b/tests/disas/winch/aarch64/i64_trunc_f64_u/params.wat index a22a4ed6d9d0..6df89ce9f2cb 100644 --- a/tests/disas/winch/aarch64/i64_trunc_f64_u/params.wat +++ b/tests/disas/winch/aarch64/i64_trunc_f64_u/params.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -19,20 +20,21 @@ ;; stur d0, [x28] ;; ldur d0, [x28] ;; fcmp d0, d0 -;; b.vs #0x64 -;; 30: fmov d31, #-1.00000000 +;; b.vs #0x6c +;; 34: fmov d31, #-1.00000000 ;; fcmp d31, d0 -;; b.le #0x68 -;; 3c: mov x16, #0x43f0000000000000 +;; b.le #0x70 +;; 40: mov x16, #0x43f0000000000000 ;; fmov d31, x16 ;; fcmp d31, d0 -;; b.ge #0x6c -;; 4c: fcvtzu x0, d0 +;; b.ge #0x74 +;; 50: fcvtzu x0, d0 ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 64: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 68: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 6c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 70: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 74: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/i64_xor/32_const.wat b/tests/disas/winch/aarch64/i64_xor/32_const.wat index d4dd6cf40a76..dc043e1ca15b 100644 --- a/tests/disas/winch/aarch64/i64_xor/32_const.wat +++ b/tests/disas/winch/aarch64/i64_xor/32_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_xor/64_const.wat b/tests/disas/winch/aarch64/i64_xor/64_const.wat index 4f2b7032019f..35b063d9f052 100644 --- a/tests/disas/winch/aarch64/i64_xor/64_const.wat +++ b/tests/disas/winch/aarch64/i64_xor/64_const.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_xor/locals.wat b/tests/disas/winch/aarch64/i64_xor/locals.wat index 9ba662698c6f..68a5785e373c 100644 --- a/tests/disas/winch/aarch64/i64_xor/locals.wat +++ b/tests/disas/winch/aarch64/i64_xor/locals.wat @@ -19,6 +19,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -41,5 +42,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/i64_xor/params.wat b/tests/disas/winch/aarch64/i64_xor/params.wat index 8c9d31937d4b..75c50994e6be 100644 --- a/tests/disas/winch/aarch64/i64_xor/params.wat +++ b/tests/disas/winch/aarch64/i64_xor/params.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/load/dynamic_heap.wat b/tests/disas/winch/aarch64/load/dynamic_heap.wat index 14cbe93156c6..7d8365c6063f 100644 --- a/tests/disas/winch/aarch64/load/dynamic_heap.wat +++ b/tests/disas/winch/aarch64/load/dynamic_heap.wat @@ -22,6 +22,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x1 ;; sub x28, x28, #0x20 @@ -34,10 +35,10 @@ ;; ldur x1, [x9, #0x60] ;; mov w2, w0 ;; add x2, x2, #4 -;; b.hs #0x138 -;; 3c: cmp x2, x1, uxtx -;; b.hi #0x13c -;; 44: ldur x3, [x9, #0x58] +;; b.hs #0x140 +;; 40: cmp x2, x1, uxtx +;; b.hi #0x144 +;; 48: ldur x3, [x9, #0x58] ;; add x3, x3, x0, uxtx ;; mov x16, #0 ;; mov x4, x16 @@ -48,10 +49,10 @@ ;; ldur x2, [x9, #0x60] ;; mov w3, w1 ;; add x3, x3, #8 -;; b.hs #0x140 -;; 74: cmp x3, x2, uxtx -;; b.hi #0x144 -;; 7c: ldur x4, [x9, #0x58] +;; b.hs #0x148 +;; 78: cmp x3, x2, uxtx +;; b.hi #0x14c +;; 80: ldur x4, [x9, #0x58] ;; add x4, x4, x1, uxtx ;; add x4, x4, #4 ;; mov x16, #0 @@ -65,10 +66,10 @@ ;; mov w16, #3 ;; movk w16, #0x10, lsl #16 ;; add x4, x4, x16, uxtx -;; b.hs #0x148 -;; b8: cmp x4, x3, uxtx -;; b.hi #0x14c -;; c0: ldur x5, [x9, #0x58] +;; b.hs #0x150 +;; bc: cmp x4, x3, uxtx +;; b.hi #0x154 +;; c4: ldur x5, [x9, #0x58] ;; add x5, x5, x2, uxtx ;; orr x16, xzr, #0xfffff ;; add x5, x5, x16, uxtx @@ -96,11 +97,12 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 138: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 13c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 140: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 144: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 148: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 14c: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 150: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 154: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/load/f32.wat b/tests/disas/winch/aarch64/load/f32.wat index 8bcc4cea071f..ae1afc0074b6 100644 --- a/tests/disas/winch/aarch64/load/f32.wat +++ b/tests/disas/winch/aarch64/load/f32.wat @@ -9,6 +9,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/load/f64.wat b/tests/disas/winch/aarch64/load/f64.wat index f8c6068f4cf1..3d73c2ae3d16 100644 --- a/tests/disas/winch/aarch64/load/f64.wat +++ b/tests/disas/winch/aarch64/load/f64.wat @@ -8,6 +8,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/load/i32.wat b/tests/disas/winch/aarch64/load/i32.wat index fa9aa473c2c4..65a830e17898 100644 --- a/tests/disas/winch/aarch64/load/i32.wat +++ b/tests/disas/winch/aarch64/load/i32.wat @@ -9,6 +9,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -23,5 +24,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/load/i64.wat b/tests/disas/winch/aarch64/load/i64.wat index 1d9ccbda191f..8889327106de 100644 --- a/tests/disas/winch/aarch64/load/i64.wat +++ b/tests/disas/winch/aarch64/load/i64.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x18 @@ -35,5 +36,6 @@ ;; add x28, x28, #0x18 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/nop/nop.wat b/tests/disas/winch/aarch64/nop/nop.wat index 07fa010e1c04..f23460ec45a4 100644 --- a/tests/disas/winch/aarch64/nop/nop.wat +++ b/tests/disas/winch/aarch64/nop/nop.wat @@ -9,6 +9,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -18,5 +19,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/params/400_params.wat b/tests/disas/winch/aarch64/params/400_params.wat index 856abec99ee0..40ecce501097 100644 --- a/tests/disas/winch/aarch64/params/400_params.wat +++ b/tests/disas/winch/aarch64/params/400_params.wat @@ -52,6 +52,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x28 @@ -68,5 +69,6 @@ ;; add x28, x28, #0x28 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/params/multi_values.wat b/tests/disas/winch/aarch64/params/multi_values.wat index 557783f39cf1..7df33a9de4dc 100644 --- a/tests/disas/winch/aarch64/params/multi_values.wat +++ b/tests/disas/winch/aarch64/params/multi_values.wat @@ -12,6 +12,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x1 ;; sub x28, x28, #0x28 @@ -52,5 +53,6 @@ ;; add x28, x28, #0x28 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/store/dynamic_heap.wat b/tests/disas/winch/aarch64/store/dynamic_heap.wat index 9da24b193cb7..06e7492756e0 100644 --- a/tests/disas/winch/aarch64/store/dynamic_heap.wat +++ b/tests/disas/winch/aarch64/store/dynamic_heap.wat @@ -22,6 +22,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x20 @@ -37,10 +38,10 @@ ;; ldur x2, [x9, #0x60] ;; mov w3, w1 ;; add x3, x3, #4 -;; b.hs #0x10c -;; 48: cmp x3, x2, uxtx -;; b.hi #0x110 -;; 50: ldur x4, [x9, #0x58] +;; b.hs #0x114 +;; 4c: cmp x3, x2, uxtx +;; b.hi #0x118 +;; 54: ldur x4, [x9, #0x58] ;; add x4, x4, x1, uxtx ;; mov x16, #0 ;; mov x5, x16 @@ -52,10 +53,10 @@ ;; ldur x2, [x9, #0x60] ;; mov w3, w1 ;; add x3, x3, #8 -;; b.hs #0x114 -;; 84: cmp x3, x2, uxtx -;; b.hi #0x118 -;; 8c: ldur x4, [x9, #0x58] +;; b.hs #0x11c +;; 88: cmp x3, x2, uxtx +;; b.hi #0x120 +;; 90: ldur x4, [x9, #0x58] ;; add x4, x4, x1, uxtx ;; add x4, x4, #4 ;; mov x16, #0 @@ -70,10 +71,10 @@ ;; mov w16, #3 ;; movk w16, #0x10, lsl #16 ;; add x3, x3, x16, uxtx -;; b.hs #0x11c -;; cc: cmp x3, x2, uxtx -;; b.hi #0x120 -;; d4: ldur x4, [x9, #0x58] +;; b.hs #0x124 +;; d0: cmp x3, x2, uxtx +;; b.hi #0x128 +;; d8: ldur x4, [x9, #0x58] ;; add x4, x4, x1, uxtx ;; orr x16, xzr, #0xfffff ;; add x4, x4, x16, uxtx @@ -85,11 +86,12 @@ ;; add x28, x28, #0x20 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret -;; 10c: .byte 0x1f, 0xc1, 0x00, 0x00 -;; 110: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 114: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 118: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 11c: .byte 0x1f, 0xc1, 0x00, 0x00 ;; 120: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 124: .byte 0x1f, 0xc1, 0x00, 0x00 +;; 128: .byte 0x1f, 0xc1, 0x00, 0x00 diff --git a/tests/disas/winch/aarch64/store/f32.wat b/tests/disas/winch/aarch64/store/f32.wat index 08f6171a17a7..84a223c29c14 100644 --- a/tests/disas/winch/aarch64/store/f32.wat +++ b/tests/disas/winch/aarch64/store/f32.wat @@ -8,6 +8,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -24,5 +25,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/store/f64.wat b/tests/disas/winch/aarch64/store/f64.wat index e5f75689f704..ba2bdadf82c7 100644 --- a/tests/disas/winch/aarch64/store/f64.wat +++ b/tests/disas/winch/aarch64/store/f64.wat @@ -9,6 +9,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -25,5 +26,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/store/i32.wat b/tests/disas/winch/aarch64/store/i32.wat index d7d518940b27..fe032e3dd290 100644 --- a/tests/disas/winch/aarch64/store/i32.wat +++ b/tests/disas/winch/aarch64/store/i32.wat @@ -10,6 +10,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -26,5 +27,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/tests/disas/winch/aarch64/store/i64.wat b/tests/disas/winch/aarch64/store/i64.wat index 87483c3bc2b5..8e3ba0a9b003 100644 --- a/tests/disas/winch/aarch64/store/i64.wat +++ b/tests/disas/winch/aarch64/store/i64.wat @@ -11,6 +11,7 @@ ;; wasm[0]::function[0]: ;; stp x29, x30, [sp, #-0x10]! ;; mov x29, sp +;; str x28, [sp, #-0x10]! ;; mov x28, sp ;; mov x9, x0 ;; sub x28, x28, #0x10 @@ -22,5 +23,6 @@ ;; add x28, x28, #0x10 ;; mov sp, x28 ;; mov sp, x28 +;; ldr x28, [sp], #0x10 ;; ldp x29, x30, [sp], #0x10 ;; ret diff --git a/winch/codegen/src/abi/mod.rs b/winch/codegen/src/abi/mod.rs index 1a3eee578af7..00b78df4a6ce 100644 --- a/winch/codegen/src/abi/mod.rs +++ b/winch/codegen/src/abi/mod.rs @@ -114,6 +114,12 @@ pub(crate) trait ABI { /// The offset to the argument base, relative to the frame pointer. fn arg_base_offset() -> u8; + /// The initial size in bytes of the function's frame. + /// + /// This amount is constant and accounts for all the stack space allocated + /// at the frame setup. + fn initial_frame_size() -> u8; + /// Construct the ABI-specific signature from a WebAssembly /// function type. #[cfg(test)] diff --git a/winch/codegen/src/isa/aarch64/abi.rs b/winch/codegen/src/isa/aarch64/abi.rs index 0617b9568dea..eb9d3b6cc625 100644 --- a/winch/codegen/src/isa/aarch64/abi.rs +++ b/winch/codegen/src/isa/aarch64/abi.rs @@ -9,6 +9,20 @@ use wasmtime_environ::{WasmHeapType, WasmRefType, WasmValType}; #[derive(Default)] pub(crate) struct Aarch64ABI; +/// The x28 register serves as the shadow stack pointer. For further details, +/// please refer to [`crate::isa::aarch64::regs::shadow_sp`]. +/// +/// This register is designated as callee-saved to prevent corruption during +/// function calls. This is especially important for Wasm-to-Wasm calls in +/// Winch-generated code, as Winch's default calling convention does not define +/// any callee-saved registers. +/// +/// Note that 16 bytes are used to save the shadow stack pointer register even +/// though only 8 are needed. 16 is used for simplicitly to ensure that the +/// 16-byte alignment requirement for memory addressing is met at the function's +/// prologue and epilogue. +pub const SHADOW_STACK_POINTER_SLOT_SIZE: u8 = 16; + impl ABI for Aarch64ABI { // TODO change to 16 once SIMD is supported fn stack_align() -> u8 { @@ -20,9 +34,42 @@ impl ABI for Aarch64ABI { } fn arg_base_offset() -> u8 { + // Two 8-byte slots: + // * One for link register + // * One for the frame pointer + // + // ┌──────────┬───────── Argument base + // │ LR │ + // │ │ + // ├──────────┼ + // │ │ + // │ FP │ + // └──────────┴ -> 16 16 } + fn initial_frame_size() -> u8 { + // The initial frame size is composed of 4 8-byte slots: + // * Two slots for the link register and the frame pointer. See + // [`Self::arg_base_offset`] + // * Two for the shadow stack pointer register. See + // [`SHADOW_STACK_POINTER_SIZE`] + // + // ┌──────────┬───────── Argument base + // │ LR │ + // │ │ + // ├──────────┼ + // │ │ + // │ FP │ + // ┌──────────┬ + // │ │ + // │ │ + // │ │ + // │ x28 │ + // └──────────┴ -> 32 + Self::arg_base_offset() + SHADOW_STACK_POINTER_SLOT_SIZE + } + fn word_bits() -> u8 { 64 } diff --git a/winch/codegen/src/isa/aarch64/masm.rs b/winch/codegen/src/isa/aarch64/masm.rs index 30cd8f509e69..fe3dcb75ae0a 100644 --- a/winch/codegen/src/isa/aarch64/masm.rs +++ b/winch/codegen/src/isa/aarch64/masm.rs @@ -9,6 +9,7 @@ use crate::{ abi::{self, align_to, calculate_frame_adjustment, local::LocalSlot, vmctx}, codegen::{ptr_type_from_ptr_size, CodeGenContext, CodeGenError, Emission, FuncEnv}, isa::{ + aarch64::abi::SHADOW_STACK_POINTER_SLOT_SIZE, reg::{writable, Reg, WritableReg}, CallingConvention, }, @@ -65,7 +66,7 @@ impl MacroAssembler { { let mut aligned = false; let alignment: u32 = ::call_stack_align().into(); - let addend: u32 = ::arg_base_offset().into(); + let addend: u32 = ::initial_frame_size().into(); let delta = calculate_frame_adjustment(self.sp_offset()?.as_u32(), addend, alignment); if delta != 0 { self.asm.sub_ir( @@ -106,10 +107,15 @@ impl Masm for MacroAssembler { let lr = regs::lr(); let fp = regs::fp(); let sp = regs::sp(); - let addr = Address::pre_indexed_from_sp(-16); + let addr = Address::pre_indexed_from_sp(-16); self.asm.stp(fp, lr, addr); self.asm.mov_rr(sp, writable!(fp), OperandSize::S64); + + let addr = Address::pre_indexed_from_sp(-(SHADOW_STACK_POINTER_SLOT_SIZE as i64)); + self.asm + .str(regs::shadow_sp(), addr, OperandSize::S64, TRUSTED_FLAGS); + self.move_sp_to_shadow_sp(); Ok(()) } @@ -122,12 +128,24 @@ impl Masm for MacroAssembler { fn frame_restore(&mut self) -> Result<()> { debug_assert_eq!(self.sp_offset, 0); - let lr = regs::lr(); - let fp = regs::fp(); - // Sync the real stack pointer with the value of the shadow stack // pointer. self.move_shadow_sp_to_sp(); + + // Pop the shadow stack pointer. It's assumed that at this point + // `sp_offset` is 0 and therfore the real stack pointer should be + // 16-byte aligned. + let addr = Address::post_indexed_from_sp(SHADOW_STACK_POINTER_SLOT_SIZE as i64); + self.asm.uload( + addr, + writable!(regs::shadow_sp()), + OperandSize::S64, + TRUSTED_FLAGS, + ); + + // Restore the link register and frame pointer. + let lr = regs::lr(); + let fp = regs::fp(); let addr = Address::post_indexed_from_sp(16); self.asm.ldp(fp, lr, addr); @@ -263,7 +281,7 @@ impl Masm for MacroAssembler { mut load_callee: impl FnMut(&mut Self) -> Result<(CalleeKind, CallingConvention)>, ) -> Result { let alignment: u32 = ::call_stack_align().into(); - let addend: u32 = ::arg_base_offset().into(); + let addend: u32 = ::initial_frame_size().into(); let delta = calculate_frame_adjustment(self.sp_offset()?.as_u32(), addend, alignment); let aligned_args_size = align_to(stack_args_size, alignment); let total_stack = delta + aligned_args_size; diff --git a/winch/codegen/src/isa/x64/abi.rs b/winch/codegen/src/isa/x64/abi.rs index d310a4dd32c9..5b13d3566930 100644 --- a/winch/codegen/src/isa/x64/abi.rs +++ b/winch/codegen/src/isa/x64/abi.rs @@ -33,6 +33,12 @@ impl ABI for X64ABI { 16 } + fn initial_frame_size() -> u8 { + // The initial frame size is equal to the space allocated to save the + // return address and the frame pointer. + Self::arg_base_offset() + } + fn word_bits() -> u8 { 64 } diff --git a/winch/codegen/src/isa/x64/masm.rs b/winch/codegen/src/isa/x64/masm.rs index 0466e5bf3f45..a94ba0ca3e4e 100644 --- a/winch/codegen/src/isa/x64/masm.rs +++ b/winch/codegen/src/isa/x64/masm.rs @@ -310,7 +310,7 @@ impl Masm for MacroAssembler { mut load_callee: impl FnMut(&mut Self) -> Result<(CalleeKind, CallingConvention)>, ) -> Result { let alignment: u32 = ::call_stack_align().into(); - let addend: u32 = ::arg_base_offset().into(); + let addend: u32 = ::initial_frame_size().into(); let delta = calculate_frame_adjustment(self.sp_offset()?.as_u32(), addend, alignment); let aligned_args_size = align_to(stack_args_size, alignment); let total_stack = delta + aligned_args_size;