61edfd9ee57db0592a941e48bad4053c70ba45d1
[platform/framework/web/lwnode.git] /
1 (module
2   ;; Auxiliary
3   (func $dummy)
4   (table $tab funcref (elem $dummy))
5   (memory 1)
6
7   (func (export "select-i32") (param i32 i32 i32) (result i32)
8     (select (local.get 0) (local.get 1) (local.get 2))
9   )
10   (func (export "select-i64") (param i64 i64 i32) (result i64)
11     (select (local.get 0) (local.get 1) (local.get 2))
12   )
13   (func (export "select-f32") (param f32 f32 i32) (result f32)
14     (select (local.get 0) (local.get 1) (local.get 2))
15   )
16   (func (export "select-f64") (param f64 f64 i32) (result f64)
17     (select (local.get 0) (local.get 1) (local.get 2))
18   )
19
20   (func (export "select-i32-t") (param i32 i32 i32) (result i32)
21     (select (result i32) (local.get 0) (local.get 1) (local.get 2))
22   )
23   (func (export "select-i64-t") (param i64 i64 i32) (result i64)
24     (select (result i64) (local.get 0) (local.get 1) (local.get 2))
25   )
26   (func (export "select-f32-t") (param f32 f32 i32) (result f32)
27     (select (result f32) (local.get 0) (local.get 1) (local.get 2))
28   )
29   (func (export "select-f64-t") (param f64 f64 i32) (result f64)
30     (select (result f64) (local.get 0) (local.get 1) (local.get 2))
31   )
32   (func (export "select-funcref") (param funcref funcref i32) (result funcref)
33     (select (result funcref) (local.get 0) (local.get 1) (local.get 2))
34   )
35   (func (export "select-externref") (param externref externref i32) (result externref)
36     (select (result externref) (local.get 0) (local.get 1) (local.get 2))
37   )
38
39   ;; Check that both sides of the select are evaluated
40   (func (export "select-trap-left") (param $cond i32) (result i32)
41     (select (unreachable) (i32.const 0) (local.get $cond))
42   )
43   (func (export "select-trap-right") (param $cond i32) (result i32)
44     (select (i32.const 0) (unreachable) (local.get $cond))
45   )
46
47   (func (export "select-unreached")
48     (unreachable) (select)
49     (unreachable) (i32.const 0) (select)
50     (unreachable) (i32.const 0) (i32.const 0) (select)
51     (unreachable) (f32.const 0) (i32.const 0) (select)
52     (unreachable)
53   )
54
55
56   ;; As the argument of control constructs and instructions
57
58   (func (export "as-select-first") (param i32) (result i32)
59     (select (select (i32.const 0) (i32.const 1) (local.get 0)) (i32.const 2) (i32.const 3))
60   )
61   (func (export "as-select-mid") (param i32) (result i32)
62     (select (i32.const 2) (select (i32.const 0) (i32.const 1) (local.get 0)) (i32.const 3))
63   )
64   (func (export "as-select-last") (param i32) (result i32)
65     (select (i32.const 2) (i32.const 3) (select (i32.const 0) (i32.const 1) (local.get 0)))
66   )
67
68   (func (export "as-loop-first") (param i32) (result i32)
69     (loop (result i32) (select (i32.const 2) (i32.const 3) (local.get 0)) (call $dummy) (call $dummy))
70   )
71   (func (export "as-loop-mid") (param i32) (result i32)
72     (loop (result i32) (call $dummy) (select (i32.const 2) (i32.const 3) (local.get 0)) (call $dummy))
73   )
74   (func (export "as-loop-last") (param i32) (result i32)
75     (loop (result i32) (call $dummy) (call $dummy) (select (i32.const 2) (i32.const 3) (local.get 0)))
76   )
77
78   (func (export "as-if-condition") (param i32)
79     (select (i32.const 2) (i32.const 3) (local.get 0)) (if (then (call $dummy)))
80   )
81   (func (export "as-if-then") (param i32) (result i32)
82     (if (result i32) (i32.const 1) (then (select (i32.const 2) (i32.const 3) (local.get 0))) (else (i32.const 4)))
83   )
84   (func (export "as-if-else") (param i32) (result i32)
85     (if (result i32) (i32.const 0) (then (i32.const 2)) (else (select (i32.const 2) (i32.const 3) (local.get 0))))
86   )
87
88   (func (export "as-br_if-first") (param i32) (result i32)
89     (block (result i32) (br_if 0 (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 4)))
90   )
91   (func (export "as-br_if-last") (param i32) (result i32)
92     (block (result i32) (br_if 0 (i32.const 2) (select (i32.const 2) (i32.const 3) (local.get 0))))
93   )
94
95   (func (export "as-br_table-first") (param i32) (result i32)
96     (block (result i32) (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 2) (br_table 0 0))
97   )
98   (func (export "as-br_table-last") (param i32) (result i32)
99     (block (result i32) (i32.const 2) (select (i32.const 2) (i32.const 3) (local.get 0)) (br_table 0 0))
100   )
101
102   (func $func (param i32 i32) (result i32) (local.get 0))
103   (type $check (func (param i32 i32) (result i32)))
104   (table $t funcref (elem $func))
105   (func (export "as-call_indirect-first") (param i32) (result i32)
106     (block (result i32)
107       (call_indirect $t (type $check)
108         (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 1) (i32.const 0)
109       )
110     )
111   )
112   (func (export "as-call_indirect-mid") (param i32) (result i32)
113     (block (result i32)
114       (call_indirect $t (type $check)
115         (i32.const 1) (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 0)
116       )
117     )
118   )
119   (func (export "as-call_indirect-last") (param i32) (result i32)
120     (block (result i32)
121       (call_indirect $t (type $check)
122         (i32.const 1) (i32.const 4) (select (i32.const 2) (i32.const 3) (local.get 0))
123       )
124     )
125   )
126
127   (func (export "as-store-first") (param i32)
128     (select (i32.const 0) (i32.const 4) (local.get 0)) (i32.const 1) (i32.store)
129   )
130   (func (export "as-store-last") (param i32)
131     (i32.const 8) (select (i32.const 1) (i32.const 2) (local.get 0)) (i32.store)
132   )
133
134   (func (export "as-memory.grow-value") (param i32) (result i32)
135     (memory.grow (select (i32.const 1) (i32.const 2) (local.get 0)))
136   )
137
138   (func $f (param i32) (result i32) (local.get 0))
139
140   (func (export "as-call-value") (param i32) (result i32)
141     (call $f (select (i32.const 1) (i32.const 2) (local.get 0)))
142   )
143   (func (export "as-return-value") (param i32) (result i32)
144     (select (i32.const 1) (i32.const 2) (local.get 0)) (return)
145   )
146   (func (export "as-drop-operand") (param i32)
147     (drop (select (i32.const 1) (i32.const 2) (local.get 0)))
148   )
149   (func (export "as-br-value") (param i32) (result i32)
150     (block (result i32) (br 0 (select (i32.const 1) (i32.const 2) (local.get 0))))
151   )
152   (func (export "as-local.set-value") (param i32) (result i32)
153     (local i32) (local.set 0 (select (i32.const 1) (i32.const 2) (local.get 0))) (local.get 0)
154   )
155   (func (export "as-local.tee-value") (param i32) (result i32)
156     (local.tee 0 (select (i32.const 1) (i32.const 2) (local.get 0)))
157   )
158   (global $a (mut i32) (i32.const 10))
159   (func (export "as-global.set-value") (param i32) (result i32)
160     (global.set $a (select (i32.const 1) (i32.const 2) (local.get 0)))
161     (global.get $a)
162   )
163   (func (export "as-load-operand") (param i32) (result i32)
164     (i32.load (select (i32.const 0) (i32.const 4) (local.get 0)))
165   )
166
167   (func (export "as-unary-operand") (param i32) (result i32)
168     (i32.eqz (select (i32.const 0) (i32.const 1) (local.get 0)))
169   )
170   (func (export "as-binary-operand") (param i32) (result i32)
171     (i32.mul
172       (select (i32.const 1) (i32.const 2) (local.get 0))
173       (select (i32.const 1) (i32.const 2) (local.get 0))
174     )
175   )
176   (func (export "as-test-operand") (param i32) (result i32)
177     (block (result i32)
178       (i32.eqz (select (i32.const 0) (i32.const 1) (local.get 0)))
179     )
180   )
181
182   (func (export "as-compare-left") (param i32) (result i32)
183     (block (result i32)
184       (i32.le_s (select (i32.const 1) (i32.const 2) (local.get 0)) (i32.const 1))
185     )
186   )
187   (func (export "as-compare-right") (param i32) (result i32)
188     (block (result i32)
189       (i32.ne (i32.const 1) (select (i32.const 0) (i32.const 1) (local.get 0)))
190     )
191   )
192
193   (func (export "as-convert-operand") (param i32) (result i32)
194     (block (result i32)
195       (i32.wrap_i64 (select (i64.const 1) (i64.const 0) (local.get 0)))
196     )
197   )
198 )
199
200 (assert_return (invoke "select-i32" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1))
201 (assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2))
202 (assert_return (invoke "select-f32" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1))
203 (assert_return (invoke "select-f64" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1))
204
205 (assert_return (invoke "select-i32" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2))
206 (assert_return (invoke "select-i32" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1))
207 (assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2))
208 (assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2))
209
210 (assert_return (invoke "select-f32" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan))
211 (assert_return (invoke "select-f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304))
212 (assert_return (invoke "select-f32" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1))
213 (assert_return (invoke "select-f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1))
214 (assert_return (invoke "select-f32" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2))
215 (assert_return (invoke "select-f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2))
216 (assert_return (invoke "select-f32" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan))
217 (assert_return (invoke "select-f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 0)) (f32.const nan:0x20304))
218
219 (assert_return (invoke "select-f64" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan))
220 (assert_return (invoke "select-f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304))
221 (assert_return (invoke "select-f64" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1))
222 (assert_return (invoke "select-f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1))
223 (assert_return (invoke "select-f64" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2))
224 (assert_return (invoke "select-f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2))
225 (assert_return (invoke "select-f64" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan))
226 (assert_return (invoke "select-f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304))
227
228 (assert_return (invoke "select-i32-t" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1))
229 (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2))
230 (assert_return (invoke "select-f32-t" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1))
231 (assert_return (invoke "select-f64-t" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1))
232 (assert_return (invoke "select-funcref" (ref.null func) (ref.null func) (i32.const 1)) (ref.null func))
233 (assert_return (invoke "select-externref" (ref.extern 1) (ref.extern 2) (i32.const 1)) (ref.extern 1))
234
235 (assert_return (invoke "select-i32-t" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2))
236 (assert_return (invoke "select-i32-t" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1))
237 (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2))
238 (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2))
239 (assert_return (invoke "select-externref" (ref.extern 1) (ref.extern 2) (i32.const 0)) (ref.extern 2))
240 (assert_return (invoke "select-externref" (ref.extern 2) (ref.extern 1) (i32.const 0)) (ref.extern 1))
241
242 (assert_return (invoke "select-f32-t" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan))
243 (assert_return (invoke "select-f32-t" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304))
244 (assert_return (invoke "select-f32-t" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1))
245 (assert_return (invoke "select-f32-t" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1))
246 (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2))
247 (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2))
248 (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan))
249 (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan:0x20304) (i32.const 0)) (f32.const nan:0x20304))
250
251 (assert_return (invoke "select-f64-t" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan))
252 (assert_return (invoke "select-f64-t" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304))
253 (assert_return (invoke "select-f64-t" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1))
254 (assert_return (invoke "select-f64-t" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1))
255 (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2))
256 (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2))
257 (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan))
258 (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304))
259
260 (assert_trap (invoke "select-trap-left" (i32.const 1)) "unreachable")
261 (assert_trap (invoke "select-trap-left" (i32.const 0)) "unreachable")
262 (assert_trap (invoke "select-trap-right" (i32.const 1)) "unreachable")
263 (assert_trap (invoke "select-trap-right" (i32.const 0)) "unreachable")
264
265 (assert_return (invoke "as-select-first" (i32.const 0)) (i32.const 1))
266 (assert_return (invoke "as-select-first" (i32.const 1)) (i32.const 0))
267 (assert_return (invoke "as-select-mid" (i32.const 0)) (i32.const 2))
268 (assert_return (invoke "as-select-mid" (i32.const 1)) (i32.const 2))
269 (assert_return (invoke "as-select-last" (i32.const 0)) (i32.const 2))
270 (assert_return (invoke "as-select-last" (i32.const 1)) (i32.const 3))
271
272 (assert_return (invoke "as-loop-first" (i32.const 0)) (i32.const 3))
273 (assert_return (invoke "as-loop-first" (i32.const 1)) (i32.const 2))
274 (assert_return (invoke "as-loop-mid" (i32.const 0)) (i32.const 3))
275 (assert_return (invoke "as-loop-mid" (i32.const 1)) (i32.const 2))
276 (assert_return (invoke "as-loop-last" (i32.const 0)) (i32.const 3))
277 (assert_return (invoke "as-loop-last" (i32.const 1)) (i32.const 2))
278
279 (assert_return (invoke "as-if-condition" (i32.const 0)))
280 (assert_return (invoke "as-if-condition" (i32.const 1)))
281 (assert_return (invoke "as-if-then" (i32.const 0)) (i32.const 3))
282 (assert_return (invoke "as-if-then" (i32.const 1)) (i32.const 2))
283 (assert_return (invoke "as-if-else" (i32.const 0)) (i32.const 3))
284 (assert_return (invoke "as-if-else" (i32.const 1)) (i32.const 2))
285
286 (assert_return (invoke "as-br_if-first" (i32.const 0)) (i32.const 3))
287 (assert_return (invoke "as-br_if-first" (i32.const 1)) (i32.const 2))
288 (assert_return (invoke "as-br_if-last" (i32.const 0)) (i32.const 2))
289 (assert_return (invoke "as-br_if-last" (i32.const 1)) (i32.const 2))
290
291 (assert_return (invoke "as-br_table-first" (i32.const 0)) (i32.const 3))
292 (assert_return (invoke "as-br_table-first" (i32.const 1)) (i32.const 2))
293 (assert_return (invoke "as-br_table-last" (i32.const 0)) (i32.const 2))
294 (assert_return (invoke "as-br_table-last" (i32.const 1)) (i32.const 2))
295
296 (assert_return (invoke "as-call_indirect-first" (i32.const 0)) (i32.const 3))
297 ;;(assert_return (invoke "as-call_indirect-first" (i32.const 1)) (i32.const 2))
298 (assert_return (invoke "as-call_indirect-mid" (i32.const 0)) (i32.const 1))
299 (assert_return (invoke "as-call_indirect-mid" (i32.const 1)) (i32.const 1))
300 (assert_trap (invoke "as-call_indirect-last" (i32.const 0)) "undefined element")
301 (assert_trap (invoke "as-call_indirect-last" (i32.const 1)) "undefined element")
302
303 (assert_return (invoke "as-store-first" (i32.const 0)))
304 (assert_return (invoke "as-store-first" (i32.const 1)))
305 (assert_return (invoke "as-store-last" (i32.const 0)))
306 (assert_return (invoke "as-store-last" (i32.const 1)))
307
308 (assert_return (invoke "as-memory.grow-value" (i32.const 0)) (i32.const 1))
309 (assert_return (invoke "as-memory.grow-value" (i32.const 1)) (i32.const 3))
310
311 (assert_return (invoke "as-call-value" (i32.const 0)) (i32.const 2))
312 (assert_return (invoke "as-call-value" (i32.const 1)) (i32.const 1))
313 (assert_return (invoke "as-return-value" (i32.const 0)) (i32.const 2))
314 (assert_return (invoke "as-return-value" (i32.const 1)) (i32.const 1))
315 (assert_return (invoke "as-drop-operand" (i32.const 0)))
316 (assert_return (invoke "as-drop-operand" (i32.const 1)))
317 (assert_return (invoke "as-br-value" (i32.const 0)) (i32.const 2))
318 (assert_return (invoke "as-br-value" (i32.const 1)) (i32.const 1))
319 (assert_return (invoke "as-local.set-value" (i32.const 0)) (i32.const 2))
320 (assert_return (invoke "as-local.set-value" (i32.const 1)) (i32.const 1))
321 (assert_return (invoke "as-local.tee-value" (i32.const 0)) (i32.const 2))
322 (assert_return (invoke "as-local.tee-value" (i32.const 1)) (i32.const 1))
323 (assert_return (invoke "as-global.set-value" (i32.const 0)) (i32.const 2))
324 (assert_return (invoke "as-global.set-value" (i32.const 1)) (i32.const 1))
325 (assert_return (invoke "as-load-operand" (i32.const 0)) (i32.const 1))
326 (assert_return (invoke "as-load-operand" (i32.const 1)) (i32.const 1))
327
328 (assert_return (invoke "as-unary-operand" (i32.const 0)) (i32.const 0))
329 (assert_return (invoke "as-unary-operand" (i32.const 1)) (i32.const 1))
330 (assert_return (invoke "as-binary-operand" (i32.const 0)) (i32.const 4))
331 (assert_return (invoke "as-binary-operand" (i32.const 1)) (i32.const 1))
332 (assert_return (invoke "as-test-operand" (i32.const 0)) (i32.const 0))
333 (assert_return (invoke "as-test-operand" (i32.const 1)) (i32.const 1))
334 (assert_return (invoke "as-compare-left" (i32.const 0)) (i32.const 0))
335 (assert_return (invoke "as-compare-left" (i32.const 1)) (i32.const 1))
336 (assert_return (invoke "as-compare-right" (i32.const 0)) (i32.const 0))
337 (assert_return (invoke "as-compare-right" (i32.const 1)) (i32.const 1))
338 (assert_return (invoke "as-convert-operand" (i32.const 0)) (i32.const 0))
339 (assert_return (invoke "as-convert-operand" (i32.const 1)) (i32.const 1))
340
341 (assert_invalid
342   (module (func $arity-0-implicit (select (nop) (nop) (i32.const 1))))
343   "type mismatch"
344 )
345 (assert_invalid
346   (module (func $arity-0 (select (result) (nop) (nop) (i32.const 1))))
347   "invalid result arity"
348 )
349 (assert_invalid
350   (module (func $arity-2 (result i32 i32)
351     (select (result i32 i32)
352       (i32.const 0) (i32.const 0)
353       (i32.const 0) (i32.const 0)
354       (i32.const 1)
355     )
356   ))
357   "invalid result arity"
358 )
359
360
361 (assert_invalid
362   (module (func $type-externref-implicit (param $r externref)
363     (drop (select (local.get $r) (local.get $r) (i32.const 1)))
364   ))
365   "type mismatch"
366 )
367
368 (assert_invalid
369   (module (func $type-num-vs-num
370     (drop (select (i32.const 1) (i64.const 1) (i32.const 1)))
371   ))
372   "type mismatch"
373 )
374 (assert_invalid
375   (module (func $type-num-vs-num
376     (drop (select (i32.const 1) (f32.const 1.0) (i32.const 1)))
377   ))
378   "type mismatch"
379 )
380 (assert_invalid
381   (module (func $type-num-vs-num
382     (drop (select (i32.const 1) (f64.const 1.0) (i32.const 1)))
383   ))
384   "type mismatch"
385 )
386
387
388 (assert_invalid
389   (module
390     (func $type-1st-operand-empty
391       (select) (drop)
392     )
393   )
394   "type mismatch"
395 )
396 (assert_invalid
397   (module
398     (func $type-2nd-operand-empty
399       (i32.const 0) (select) (drop)
400     )
401   )
402   "type mismatch"
403 )
404 (assert_invalid
405   (module
406     (func $type-3rd-operand-empty
407       (i32.const 0) (i32.const 0) (select) (drop)
408     )
409   )
410   "type mismatch"
411 )
412 (assert_invalid
413   (module
414     (func $type-1st-operand-empty-in-block
415       (i32.const 0) (i32.const 0) (i32.const 0)
416       (block (select) (drop))
417     )
418   )
419   "type mismatch"
420 )
421 (assert_invalid
422   (module
423     (func $type-2nd-operand-empty-in-block
424       (i32.const 0) (i32.const 0)
425       (block (i32.const 0) (select) (drop))
426     )
427   )
428   "type mismatch"
429 )
430 (assert_invalid
431   (module
432     (func $type-3rd-operand-empty-in-block
433       (i32.const 0)
434       (block (i32.const 0) (i32.const 0) (select) (drop))
435     )
436   )
437   "type mismatch"
438 )
439 (assert_invalid
440   (module
441     (func $type-1st-operand-empty-in-loop
442       (i32.const 0) (i32.const 0) (i32.const 0)
443       (loop (select) (drop))
444     )
445   )
446   "type mismatch"
447 )
448 (assert_invalid
449   (module
450     (func $type-2nd-operand-empty-in-loop
451       (i32.const 0) (i32.const 0)
452       (loop (i32.const 0) (select) (drop))
453     )
454   )
455   "type mismatch"
456 )
457 (assert_invalid
458   (module
459     (func $type-3rd-operand-empty-in-loop
460       (i32.const 0)
461       (loop (i32.const 0) (i32.const 0) (select) (drop))
462     )
463   )
464   "type mismatch"
465 )
466 (assert_invalid
467   (module
468     (func $type-1st-operand-empty-in-then
469       (i32.const 0) (i32.const 0) (i32.const 0)
470       (if (then (select) (drop)))
471     )
472   )
473   "type mismatch"
474 )
475 (assert_invalid
476   (module
477     (func $type-2nd-operand-empty-in-then
478       (i32.const 0) (i32.const 0)
479       (if (then (i32.const 0) (select) (drop)))
480     )
481   )
482   "type mismatch"
483 )
484 (assert_invalid
485   (module
486     (func $type-3rd-operand-empty-in-then
487       (i32.const 0)
488       (if (then (i32.const 0) (i32.const 0) (select) (drop)))
489     )
490   )
491   "type mismatch"
492 )