1;;! target = "aarch64"
2;;! test = "compile"
3;;! flags = ["-Wexceptions=yes", "-Wgc=yes", "-Dguest-debug=yes"]
4
5(module
6  (tag $t (param i32))
7  (import "" "host" (func))
8  (func (export "main")
9    (block $b (result i32)
10      (try_table (catch $t $b)
11        (drop (i32.const 42))
12        (throw $t (i32.const 42)))
13      i32.const 0)
14    (call 0)
15    (drop)))
16;; wasm[0]::function[1]:
17;;       stp     x29, x30, [sp, #-0x10]!
18;;       mov     x29, sp
19;;       stp     x27, x28, [sp, #-0x10]!
20;;       stp     x25, x26, [sp, #-0x10]!
21;;       stp     x23, x24, [sp, #-0x10]!
22;;       stp     x21, x22, [sp, #-0x10]!
23;;       stp     x19, x20, [sp, #-0x10]!
24;;       stp     d14, d15, [sp, #-0x10]!
25;;       stp     d12, d13, [sp, #-0x10]!
26;;       stp     d10, d11, [sp, #-0x10]!
27;;       stp     d8, d9, [sp, #-0x10]!
28;;       sub     sp, sp, #0x30
29;;       ldr     x3, [x2, #8]
30;;       ldr     x3, [x3, #0x10]
31;;       mov     x4, sp
32;;       cmp     x4, x3
33;;       b.lo    #0x15c
34;;   44: stur    x2, [sp]
35;;       stur    x2, [sp, #0x10]
36;;       mov     w22, #0x2a
37;;       ╰─╼ debug frame state (before next inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 61, slot at FP-0xc0, locals , stack
38;;       stur    w22, [sp, #8]
39;;       stur    w22, [sp, #8]
40;;       ╰─╼ debug frame state (before next inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 64, slot at FP-0xc0, locals , stack
41;;       ldur    x2, [sp, #0x10]
42;;       ╰─╼ debug frame state (before next inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 66, slot at FP-0xc0, locals , stack I32 @ slot+0x8
43;;       bl      #0x3f0
44;;   60: mov     x24, x2
45;;       mov     w3, #0x4000000
46;;       mov     w4, #2
47;;       mov     w5, #0x28
48;;       mov     w6, #8
49;;       ldur    x2, [sp, #0x10]
50;;       bl      #0x310
51;;   7c: ldur    x13, [sp, #0x10]
52;;       ldr     x5, [x13, #8]
53;;       ldr     x6, [x5, #0x18]
54;;       stur    x5, [sp, #0x20]
55;;       add     x15, x6, #0x20
56;;       str     w22, [x15, w2, uxtw]
57;;       add     x3, x6, #0x18
58;;       mov     x7, x24
59;;       str     w7, [x3, w2, uxtw]
60;;       mov     w3, #0
61;;       add     x4, x6, #0x1c
62;;       stur    x6, [sp, #0x18]
63;;       str     w3, [x4, w2, uxtw]
64;;       mov     x3, x2
65;;       ldur    x2, [sp, #0x10]
66;;       bl      #0x428
67;;       ├─╼ exception frame offset: SP = FP - 0xc0
68;;       ╰─╼ exception handler: tag=0, context at [SP+0x10], handler=0xd4
69;;   bc: mov     w3, #9
70;;       ldur    x2, [sp, #0x10]
71;;       bl      #0x384
72;;   c8: ldur    x2, [sp, #0x10]
73;;       bl      #0x3bc
74;;   d0: .byte   0x1f, 0xc1, 0x00, 0x00
75;;       mov     x15, x0
76;;       mov     w6, w15
77;;       mov     x7, #0x28
78;;       adds    x5, x6, x7
79;;       cset    x7, hs
80;;       uxtb    w6, w7
81;;       cbnz    x6, #0x174
82;;   f0: ldur    x12, [sp, #0x20]
83;;       ldr     x8, [x12, #0x20]
84;;       cmp     x5, x8
85;;       cset    x9, hi
86;;       uxtb    w9, w9
87;;       cbnz    x9, #0x178
88;;  108: ldur    x6, [sp, #0x18]
89;;       add     x10, x6, #0x20
90;;       ldr     w12, [x10, w15, uxtw]
91;;       stur    w12, [sp, #8]
92;;       ldur    x2, [sp, #0x10]
93;;       ╰─╼ debug frame state (before next inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 72, slot at FP-0xc0, locals , stack I32 @ slot+0x8
94;;       ldr     x14, [x2, #0x30]
95;;       ldr     x2, [x2, #0x40]
96;;       ldur    x3, [sp, #0x10]
97;;       blr     x14
98;;       ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 72, slot at FP-0xc0, locals , stack I32 @ slot+0x8
99;;  12c: add     sp, sp, #0x30
100;;       ╰─╼ debug frame state (before next inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 75, slot at FP-0xc0, locals , stack
101;;       ldp     d8, d9, [sp], #0x10
102;;       ldp     d10, d11, [sp], #0x10
103;;       ldp     d12, d13, [sp], #0x10
104;;       ldp     d14, d15, [sp], #0x10
105;;       ldp     x19, x20, [sp], #0x10
106;;       ldp     x21, x22, [sp], #0x10
107;;       ldp     x23, x24, [sp], #0x10
108;;       ldp     x25, x26, [sp], #0x10
109;;       ldp     x27, x28, [sp], #0x10
110;;       ldp     x29, x30, [sp], #0x10
111;;       ret
112;;  15c: stur    x2, [sp, #0x10]
113;;  160: mov     w3, #0
114;;  164: bl      #0x384
115;;  168: ldur    x2, [sp, #0x10]
116;;  16c: bl      #0x3bc
117;;  170: .byte   0x1f, 0xc1, 0x00, 0x00
118;;  174: .byte   0x1f, 0xc1, 0x00, 0x00
119;;  178: .byte   0x1f, 0xc1, 0x00, 0x00
120