xref: /wasmtime-44.0.1/tests/disas/br_table.wat (revision 7e0331c2)
1;;! target = "x86_64"
2
3(module
4  (func (result i32)
5    (block (result i32)
6      (block (result i32)
7        (block (result i32)
8          (br_table 0 1 2 3 (i32.const 42) (i32.const 0))
9        )
10      )
11    )
12  )
13  (func (result i32)
14    (block (result i32)
15      (block (result i32)
16        (block (result i32)
17          (br_table 3 2 1 0 (i32.const 42) (i32.const 0))
18        )
19      )
20    )
21  )
22  (func (result i32)
23    (block (result i32)
24      (br_table 0 0 1 1 (i32.const 42) (i32.const 0))
25    )
26  )
27  (func (result i32)
28    (block (result i32)
29      (br_table 1 1 0 0 (i32.const 42) (i32.const 0))
30    )
31  )
32)
33
34;; function u0:0(i64 vmctx, i64) -> i32 tail {
35;;     gv0 = vmctx
36;;     gv1 = load.i64 notrap aligned readonly gv0+8
37;;     gv2 = load.i64 notrap aligned gv1+24
38;;     stack_limit = gv2
39;;
40;;                                 block0(v0: i64, v1: i64):
41;; @0021                               v6 = iconst.i32 42
42;; @0023                               v7 = iconst.i32 0
43;; @0025                               br_table v7, block8, [block5, block6, block7]  ; v7 = 0
44;;
45;;                                 block5:
46;; @0025                               jump block4
47;;
48;;                                 block6:
49;; @0025                               jump block3
50;;
51;;                                 block7:
52;; @0025                               jump block2
53;;
54;;                                 block8:
55;; @0025                               jump block1
56;;
57;;                                 block4:
58;; @002c                               jump block3
59;;
60;;                                 block3:
61;; @002d                               jump block2
62;;
63;;                                 block2:
64;; @002e                               jump block1
65;;
66;;                                 block1:
67;; @002e                               return v6  ; v6 = 42
68;; }
69;;
70;; function u0:1(i64 vmctx, i64) -> i32 tail {
71;;     gv0 = vmctx
72;;     gv1 = load.i64 notrap aligned readonly gv0+8
73;;     gv2 = load.i64 notrap aligned gv1+24
74;;     stack_limit = gv2
75;;
76;;                                 block0(v0: i64, v1: i64):
77;; @0037                               v6 = iconst.i32 42
78;; @0039                               v7 = iconst.i32 0
79;; @003b                               br_table v7, block8, [block5, block6, block7]  ; v7 = 0
80;;
81;;                                 block5:
82;; @003b                               jump block1
83;;
84;;                                 block6:
85;; @003b                               jump block2
86;;
87;;                                 block7:
88;; @003b                               jump block3
89;;
90;;                                 block8:
91;; @003b                               jump block4
92;;
93;;                                 block4:
94;; @0042                               jump block3
95;;
96;;                                 block3:
97;; @0043                               jump block2
98;;
99;;                                 block2:
100;; @0044                               jump block1
101;;
102;;                                 block1:
103;; @0044                               return v6  ; v6 = 42
104;; }
105;;
106;; function u0:2(i64 vmctx, i64) -> i32 tail {
107;;     gv0 = vmctx
108;;     gv1 = load.i64 notrap aligned readonly gv0+8
109;;     gv2 = load.i64 notrap aligned gv1+24
110;;     stack_limit = gv2
111;;
112;;                                 block0(v0: i64, v1: i64):
113;; @0049                               v4 = iconst.i32 42
114;; @004b                               v5 = iconst.i32 0
115;; @004d                               br_table v5, block4, [block3, block3, block4]  ; v5 = 0
116;;
117;;                                 block3:
118;; @004d                               jump block2
119;;
120;;                                 block4:
121;; @004d                               jump block1
122;;
123;;                                 block2:
124;; @0054                               jump block1
125;;
126;;                                 block1:
127;; @0054                               return v4  ; v4 = 42
128;; }
129;;
130;; function u0:3(i64 vmctx, i64) -> i32 tail {
131;;     gv0 = vmctx
132;;     gv1 = load.i64 notrap aligned readonly gv0+8
133;;     gv2 = load.i64 notrap aligned gv1+24
134;;     stack_limit = gv2
135;;
136;;                                 block0(v0: i64, v1: i64):
137;; @0059                               v4 = iconst.i32 42
138;; @005b                               v5 = iconst.i32 0
139;; @005d                               br_table v5, block4, [block3, block3, block4]  ; v5 = 0
140;;
141;;                                 block3:
142;; @005d                               jump block1
143;;
144;;                                 block4:
145;; @005d                               jump block2
146;;
147;;                                 block2:
148;; @0064                               jump block1
149;;
150;;                                 block1:
151;; @0064                               return v4  ; v4 = 42
152;; }
153