2 (func (export "block") (result i32)
4 (br $exit (i32.const 1))
9 (func (export "loop1") (result i32)
11 (set_local $i (i32.const 0))
14 (set_local $i (i32.add (get_local $i) (i32.const 1)))
15 (if (i32.eq (get_local $i) (i32.const 5))
16 (br $exit (get_local $i))
23 (func (export "loop2") (result i32)
25 (set_local $i (i32.const 0))
28 (set_local $i (i32.add (get_local $i) (i32.const 1)))
29 (if (i32.eq (get_local $i) (i32.const 5))
32 (if (i32.eq (get_local $i) (i32.const 8))
33 (br $exit (get_local $i))
35 (set_local $i (i32.add (get_local $i) (i32.const 1)))
41 (func (export "loop3") (result i32)
43 (set_local $i (i32.const 0))
46 (set_local $i (i32.add (get_local $i) (i32.const 1)))
47 (if (i32.eq (get_local $i) (i32.const 5))
48 (br $exit (get_local $i))
55 (func (export "loop4") (param $max i32) (result i32)
57 (set_local $i (i32.const 1))
60 (set_local $i (i32.add (get_local $i) (get_local $i)))
61 (if (i32.gt_u (get_local $i) (get_local $max))
62 (br $exit (get_local $i))
69 (func (export "loop5") (result i32)
71 (loop $l i32 (i32.const 1))
76 (func (export "if") (result i32)
78 (set_local $i (i32.const 0))
82 (then (br $l) (set_local $i (i32.const 666)))
84 (set_local $i (i32.add (get_local $i) (i32.const 1)))
87 (then (br $l) (set_local $i (i32.const 666)))
88 (else (set_local $i (i32.const 888)))
90 (set_local $i (i32.add (get_local $i) (i32.const 1)))
93 (then (br $l) (set_local $i (i32.const 666)))
94 (else (set_local $i (i32.const 888)))
96 (set_local $i (i32.add (get_local $i) (i32.const 1)))
99 (then (set_local $i (i32.const 888)))
100 (else (br $l) (set_local $i (i32.const 666)))
102 (set_local $i (i32.add (get_local $i) (i32.const 1)))
105 (then (set_local $i (i32.const 888)))
106 (else (br $l) (set_local $i (i32.const 666)))
108 (set_local $i (i32.add (get_local $i) (i32.const 1)))
113 (func (export "if2") (result i32)
115 (set_local $i (i32.const 0))
119 (then (br 0) (set_local $i (i32.const 666)))
121 (set_local $i (i32.add (get_local $i) (i32.const 1)))
124 (then (br 0) (set_local $i (i32.const 666)))
125 (else (set_local $i (i32.const 888)))
127 (set_local $i (i32.add (get_local $i) (i32.const 1)))
130 (then (br 0) (set_local $i (i32.const 666)))
131 (else (set_local $i (i32.const 888)))
133 (set_local $i (i32.add (get_local $i) (i32.const 1)))
136 (then (set_local $i (i32.const 888)))
137 (else (br 0) (set_local $i (i32.const 666)))
139 (set_local $i (i32.add (get_local $i) (i32.const 1)))
142 (then (set_local $i (i32.const 888)))
143 (else (br 0) (set_local $i (i32.const 666)))
145 (set_local $i (i32.add (get_local $i) (i32.const 1)))
150 (func (export "switch") (param i32) (result i32)
152 (i32.mul (i32.const 10)
159 (br_table $0 $1 $2 $3 $default (get_local 0))
162 (br $exit (i32.const 2))
164 (br $ret (i32.const 3))
173 (func (export "return") (param i32) (result i32)
177 (br_table $0 $1 (get_local 0))
180 (return (i32.const 0))
186 (func (export "br_if0") (result i32)
188 (set_local $i (i32.const 0))
191 (br_if $inner (i32.const 0))
192 (set_local $i (i32.or (get_local $i) (i32.const 0x1)))
193 (br_if $inner (i32.const 1))
194 (set_local $i (i32.or (get_local $i) (i32.const 0x2)))
198 (set_local $i (i32.or (get_local $i) (i32.const 0x4)))
203 (set_local $i (i32.or (get_local $i) (i32.const 0x8)))
206 (set_local $i (i32.or (get_local $i) (i32.const 0x10)))
211 (set_local $i (i32.or (get_local $i) (i32.const 0x20))) (get_local $i)
215 (func (export "br_if1") (result i32)
217 (drop (br_if $l0 (block $l1 i32 (br $l1 (i32.const 1))) (i32.const 1)))
222 (func (export "br_if2") (result i32)
225 (br $l0 (block $l1 i32 (br $l1 (i32.const 1))))
231 (func (export "br_if3") (result i32)
237 (block i32 (set_local $i1 (i32.const 1)) (get_local $i1))
238 (block i32 (set_local $i1 (i32.const 2)) (get_local $i1))
248 (func (export "br") (result i32)
251 (br $l0 (block $l1 i32 (br $l1 (i32.const 1))))
252 (block (drop (block $l1 i32 (br $l1 (i32.const 1)))))
258 (func (export "shadowing") (result i32)
259 (block $l1 i32 (i32.xor (br $l1 (i32.const 1)) (i32.const 2)))
262 (func (export "redefinition") (result i32)
265 (block $l1 i32 (i32.const 2))
266 (block $l1 i32 (br $l1 (i32.const 3)))
272 (assert_return (invoke "block") (i32.const 1))
273 (assert_return (invoke "loop1") (i32.const 5))
274 (assert_return (invoke "loop2") (i32.const 8))
275 (assert_return (invoke "loop3") (i32.const 1))
276 (assert_return (invoke "loop4" (i32.const 8)) (i32.const 16))
277 (assert_return (invoke "loop5") (i32.const 2))
278 (assert_return (invoke "if") (i32.const 5))
279 (assert_return (invoke "if2") (i32.const 5))
280 (assert_return (invoke "switch" (i32.const 0)) (i32.const 50))
281 (assert_return (invoke "switch" (i32.const 1)) (i32.const 20))
282 (assert_return (invoke "switch" (i32.const 2)) (i32.const 20))
283 (assert_return (invoke "switch" (i32.const 3)) (i32.const 3))
284 (assert_return (invoke "switch" (i32.const 4)) (i32.const 50))
285 (assert_return (invoke "switch" (i32.const 5)) (i32.const 50))
286 (assert_return (invoke "return" (i32.const 0)) (i32.const 0))
287 (assert_return (invoke "return" (i32.const 1)) (i32.const 2))
288 (assert_return (invoke "return" (i32.const 2)) (i32.const 2))
289 (assert_return (invoke "br_if0") (i32.const 0x1d))
290 (assert_return (invoke "br_if1") (i32.const 1))
291 (assert_return (invoke "br_if2") (i32.const 1))
292 (assert_return (invoke "br_if3") (i32.const 2))
293 (assert_return (invoke "br") (i32.const 1))
294 (assert_return (invoke "shadowing") (i32.const 1))
295 (assert_return (invoke "redefinition") (i32.const 5))
298 (module (func (block $l (f32.neg (br_if $l (i32.const 1))) (nop))))
302 (module (func (block $l (br_if $l (f32.const 0) (i32.const 1)))))
306 (module (func (block $l (br_if $l (f32.const 0) (i32.const 1)))))