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     x0, [x2, #8]
30;;       ldr     x0, [x0, #0x18]
31;;       mov     x1, sp
32;;       cmp     x1, x0
33;;       b.lo    #0x194
34;;   44: stur    x2, [sp]
35;;       mov     x0, x2
36;;       stur    x2, [sp, #0x10]
37;;       nop
38;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x35, slot at FP-0xc0, locals , stack
39;;       ╰─╼ breakpoint patch: wasm PC 0x35, patch bytes [38, 1, 0, 148]
40;;       ldur    x0, [sp, #0x10]
41;;       nop
42;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x37, slot at FP-0xc0, locals , stack
43;;       ╰─╼ breakpoint patch: wasm PC 0x37, patch bytes [36, 1, 0, 148]
44;;       ldur    x0, [sp, #0x10]
45;;       nop
46;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x3d, slot at FP-0xc0, locals , stack
47;;       ╰─╼ breakpoint patch: wasm PC 0x3d, patch bytes [34, 1, 0, 148]
48;;       mov     w19, #0x2a
49;;       stur    w19, [sp, #8]
50;;       nop
51;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x3f, slot at FP-0xc0, locals , stack I32 @ slot+0x8
52;;       ╰─╼ breakpoint patch: wasm PC 0x3f, patch bytes [31, 1, 0, 148]
53;;       nop
54;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x40, slot at FP-0xc0, locals , stack
55;;       ╰─╼ breakpoint patch: wasm PC 0x40, patch bytes [30, 1, 0, 148]
56;;       stur    w19, [sp, #8]
57;;       nop
58;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x42, slot at FP-0xc0, locals , stack I32 @ slot+0x8
59;;       ╰─╼ breakpoint patch: wasm PC 0x42, patch bytes [28, 1, 0, 148]
60;;       ldur    x2, [sp, #0x10]
61;;       bl      #0x448
62;;   84: mov     x20, x2
63;;       mov     w3, #0x4000000
64;;       mov     w4, #2
65;;       mov     w5, #0x28
66;;       mov     w6, #8
67;;       ldur    x2, [sp, #0x10]
68;;       bl      #0x368
69;;   a0: ldur    x0, [sp, #0x10]
70;;       ldr     x5, [x0, #8]
71;;       ldr     x6, [x5, #0x20]
72;;       stur    x5, [sp, #0x20]
73;;       add     x3, x6, #0x20
74;;       str     w19, [x3, w2, uxtw]
75;;       add     x3, x6, #0x18
76;;       mov     x0, x20
77;;       str     w0, [x3, w2, uxtw]
78;;       mov     w3, #0
79;;       add     x4, x6, #0x1c
80;;       stur    x6, [sp, #0x18]
81;;       str     w3, [x4, w2, uxtw]
82;;       mov     x3, x2
83;;       ldur    x2, [sp, #0x10]
84;;       bl      #0x480
85;;       ├─╼ exception frame offset: SP = FP - 0xc0
86;;       ╰─╼ exception handler: tag=0, context at [SP+0x10], handler=0xf8
87;;   e0: mov     w3, #9
88;;       ldur    x2, [sp, #0x10]
89;;       bl      #0x3dc
90;;   ec: ldur    x2, [sp, #0x10]
91;;       bl      #0x414
92;;       ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x42, slot at FP-0xc0, locals , stack I32 @ slot+0x8
93;;   f4: .byte   0x1f, 0xc1, 0x00, 0x00
94;;       mov     x2, x0
95;;       mov     w3, w2
96;;       mov     x4, #0x28
97;;       adds    x3, x3, x4
98;;       cset    x4, hs
99;;       uxtb    w4, w4
100;;       cbnz    x4, #0x1ac
101;;  114: ldur    x5, [sp, #0x20]
102;;       ldr     x1, [x5, #0x28]
103;;       cmp     x3, x1
104;;       cset    x1, hi
105;;       uxtb    w1, w1
106;;       cbnz    x1, #0x1b0
107;;  12c: ldur    x6, [sp, #0x18]
108;;       add     x0, x6, #0x20
109;;       ldr     w0, [x0, w2, uxtw]
110;;       stur    w0, [sp, #8]
111;;       ldur    x0, [sp, #0x10]
112;;       nop
113;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x48, slot at FP-0xc0, locals , stack I32 @ slot+0x8
114;;       ╰─╼ breakpoint patch: wasm PC 0x48, patch bytes [234, 0, 0, 148]
115;;       ldur    x1, [sp, #0x10]
116;;       ldr     x0, [x1, #0x30]
117;;       ldr     x2, [x1, #0x40]
118;;       ldur    x3, [sp, #0x10]
119;;       blr     x0
120;;       ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x4a, slot at FP-0xc0, locals , stack I32 @ slot+0x8
121;;  158: ldur    x0, [sp, #0x10]
122;;       nop
123;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x4a, slot at FP-0xc0, locals , stack I32 @ slot+0x8
124;;       ╰─╼ breakpoint patch: wasm PC 0x4a, patch bytes [227, 0, 0, 148]
125;;       nop
126;;       ├─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x4b, slot at FP-0xc0, locals , stack
127;;       ╰─╼ breakpoint patch: wasm PC 0x4b, patch bytes [226, 0, 0, 148]
128;;       add     sp, sp, #0x30
129;;       ldp     d8, d9, [sp], #0x10
130;;       ldp     d10, d11, [sp], #0x10
131;;       ldp     d12, d13, [sp], #0x10
132;;       ldp     d14, d15, [sp], #0x10
133;;       ldp     x19, x20, [sp], #0x10
134;;       ldp     x21, x22, [sp], #0x10
135;;       ldp     x23, x24, [sp], #0x10
136;;       ldp     x25, x26, [sp], #0x10
137;;       ldp     x27, x28, [sp], #0x10
138;;       ldp     x29, x30, [sp], #0x10
139;;       ret
140;;  194: stur    x2, [sp, #0x10]
141;;  198: mov     w3, #0
142;;  19c: bl      #0x3dc
143;;  1a0: ldur    x2, [sp, #0x10]
144;;  1a4: bl      #0x414
145;;       ╰─╼ debug frame state (after previous inst): func key DefinedWasmFunction(StaticModuleIndex(0), DefinedFuncIndex(0)), wasm PC 0x34, slot at FP-0xc0, locals , stack
146;;  1a8: .byte   0x1f, 0xc1, 0x00, 0x00
147;;  1ac: .byte   0x1f, 0xc1, 0x00, 0x00
148;;  1b0: .byte   0x1f, 0xc1, 0x00, 0x00
149