...
1;; i32 operations
2
3(module
4 (func (export "add") (param $x i32) (param $y i32) (result i32) (i32.add (local.get $x) (local.get $y)))
5 (func (export "sub") (param $x i32) (param $y i32) (result i32) (i32.sub (local.get $x) (local.get $y)))
6 (func (export "mul") (param $x i32) (param $y i32) (result i32) (i32.mul (local.get $x) (local.get $y)))
7 (func (export "div_s") (param $x i32) (param $y i32) (result i32) (i32.div_s (local.get $x) (local.get $y)))
8 (func (export "div_u") (param $x i32) (param $y i32) (result i32) (i32.div_u (local.get $x) (local.get $y)))
9 (func (export "rem_s") (param $x i32) (param $y i32) (result i32) (i32.rem_s (local.get $x) (local.get $y)))
10 (func (export "rem_u") (param $x i32) (param $y i32) (result i32) (i32.rem_u (local.get $x) (local.get $y)))
11 (func (export "and") (param $x i32) (param $y i32) (result i32) (i32.and (local.get $x) (local.get $y)))
12 (func (export "or") (param $x i32) (param $y i32) (result i32) (i32.or (local.get $x) (local.get $y)))
13 (func (export "xor") (param $x i32) (param $y i32) (result i32) (i32.xor (local.get $x) (local.get $y)))
14 (func (export "shl") (param $x i32) (param $y i32) (result i32) (i32.shl (local.get $x) (local.get $y)))
15 (func (export "shr_s") (param $x i32) (param $y i32) (result i32) (i32.shr_s (local.get $x) (local.get $y)))
16 (func (export "shr_u") (param $x i32) (param $y i32) (result i32) (i32.shr_u (local.get $x) (local.get $y)))
17 (func (export "rotl") (param $x i32) (param $y i32) (result i32) (i32.rotl (local.get $x) (local.get $y)))
18 (func (export "rotr") (param $x i32) (param $y i32) (result i32) (i32.rotr (local.get $x) (local.get $y)))
19 (func (export "clz") (param $x i32) (result i32) (i32.clz (local.get $x)))
20 (func (export "ctz") (param $x i32) (result i32) (i32.ctz (local.get $x)))
21 (func (export "popcnt") (param $x i32) (result i32) (i32.popcnt (local.get $x)))
22 (func (export "eqz") (param $x i32) (result i32) (i32.eqz (local.get $x)))
23 (func (export "eq") (param $x i32) (param $y i32) (result i32) (i32.eq (local.get $x) (local.get $y)))
24 (func (export "ne") (param $x i32) (param $y i32) (result i32) (i32.ne (local.get $x) (local.get $y)))
25 (func (export "lt_s") (param $x i32) (param $y i32) (result i32) (i32.lt_s (local.get $x) (local.get $y)))
26 (func (export "lt_u") (param $x i32) (param $y i32) (result i32) (i32.lt_u (local.get $x) (local.get $y)))
27 (func (export "le_s") (param $x i32) (param $y i32) (result i32) (i32.le_s (local.get $x) (local.get $y)))
28 (func (export "le_u") (param $x i32) (param $y i32) (result i32) (i32.le_u (local.get $x) (local.get $y)))
29 (func (export "gt_s") (param $x i32) (param $y i32) (result i32) (i32.gt_s (local.get $x) (local.get $y)))
30 (func (export "gt_u") (param $x i32) (param $y i32) (result i32) (i32.gt_u (local.get $x) (local.get $y)))
31 (func (export "ge_s") (param $x i32) (param $y i32) (result i32) (i32.ge_s (local.get $x) (local.get $y)))
32 (func (export "ge_u") (param $x i32) (param $y i32) (result i32) (i32.ge_u (local.get $x) (local.get $y)))
33)
34
35(assert_return (invoke "add" (i32.const 1) (i32.const 1)) (i32.const 2))
36(assert_return (invoke "add" (i32.const 1) (i32.const 0)) (i32.const 1))
37(assert_return (invoke "add" (i32.const -1) (i32.const -1)) (i32.const -2))
38(assert_return (invoke "add" (i32.const -1) (i32.const 1)) (i32.const 0))
39(assert_return (invoke "add" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x80000000))
40(assert_return (invoke "add" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x7fffffff))
41(assert_return (invoke "add" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
42(assert_return (invoke "add" (i32.const 0x3fffffff) (i32.const 1)) (i32.const 0x40000000))
43
44(assert_return (invoke "sub" (i32.const 1) (i32.const 1)) (i32.const 0))
45(assert_return (invoke "sub" (i32.const 1) (i32.const 0)) (i32.const 1))
46(assert_return (invoke "sub" (i32.const -1) (i32.const -1)) (i32.const 0))
47(assert_return (invoke "sub" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x80000000))
48(assert_return (invoke "sub" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x7fffffff))
49(assert_return (invoke "sub" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
50(assert_return (invoke "sub" (i32.const 0x3fffffff) (i32.const -1)) (i32.const 0x40000000))
51
52(assert_return (invoke "mul" (i32.const 1) (i32.const 1)) (i32.const 1))
53(assert_return (invoke "mul" (i32.const 1) (i32.const 0)) (i32.const 0))
54(assert_return (invoke "mul" (i32.const -1) (i32.const -1)) (i32.const 1))
55(assert_return (invoke "mul" (i32.const 0x10000000) (i32.const 4096)) (i32.const 0))
56(assert_return (invoke "mul" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
57(assert_return (invoke "mul" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000))
58(assert_return (invoke "mul" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x80000001))
59(assert_return (invoke "mul" (i32.const 0x01234567) (i32.const 0x76543210)) (i32.const 0x358e7470))
60(assert_return (invoke "mul" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
61
62(assert_trap (invoke "div_s" (i32.const 1) (i32.const 0)) "integer divide by zero")
63(assert_trap (invoke "div_s" (i32.const 0) (i32.const 0)) "integer divide by zero")
64(assert_trap (invoke "div_s" (i32.const 0x80000000) (i32.const -1)) "integer overflow")
65(assert_return (invoke "div_s" (i32.const 1) (i32.const 1)) (i32.const 1))
66(assert_return (invoke "div_s" (i32.const 0) (i32.const 1)) (i32.const 0))
67(assert_return (invoke "div_s" (i32.const 0) (i32.const -1)) (i32.const 0))
68(assert_return (invoke "div_s" (i32.const -1) (i32.const -1)) (i32.const 1))
69(assert_return (invoke "div_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0xc0000000))
70(assert_return (invoke "div_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const 0xffdf3b65))
71(assert_return (invoke "div_s" (i32.const 5) (i32.const 2)) (i32.const 2))
72(assert_return (invoke "div_s" (i32.const -5) (i32.const 2)) (i32.const -2))
73(assert_return (invoke "div_s" (i32.const 5) (i32.const -2)) (i32.const -2))
74(assert_return (invoke "div_s" (i32.const -5) (i32.const -2)) (i32.const 2))
75(assert_return (invoke "div_s" (i32.const 7) (i32.const 3)) (i32.const 2))
76(assert_return (invoke "div_s" (i32.const -7) (i32.const 3)) (i32.const -2))
77(assert_return (invoke "div_s" (i32.const 7) (i32.const -3)) (i32.const -2))
78(assert_return (invoke "div_s" (i32.const -7) (i32.const -3)) (i32.const 2))
79(assert_return (invoke "div_s" (i32.const 11) (i32.const 5)) (i32.const 2))
80(assert_return (invoke "div_s" (i32.const 17) (i32.const 7)) (i32.const 2))
81
82(assert_trap (invoke "div_u" (i32.const 1) (i32.const 0)) "integer divide by zero")
83(assert_trap (invoke "div_u" (i32.const 0) (i32.const 0)) "integer divide by zero")
84(assert_return (invoke "div_u" (i32.const 1) (i32.const 1)) (i32.const 1))
85(assert_return (invoke "div_u" (i32.const 0) (i32.const 1)) (i32.const 0))
86(assert_return (invoke "div_u" (i32.const -1) (i32.const -1)) (i32.const 1))
87(assert_return (invoke "div_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
88(assert_return (invoke "div_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0x40000000))
89(assert_return (invoke "div_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8fef))
90(assert_return (invoke "div_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 0x20c49b))
91(assert_return (invoke "div_u" (i32.const 5) (i32.const 2)) (i32.const 2))
92(assert_return (invoke "div_u" (i32.const -5) (i32.const 2)) (i32.const 0x7ffffffd))
93(assert_return (invoke "div_u" (i32.const 5) (i32.const -2)) (i32.const 0))
94(assert_return (invoke "div_u" (i32.const -5) (i32.const -2)) (i32.const 0))
95(assert_return (invoke "div_u" (i32.const 7) (i32.const 3)) (i32.const 2))
96(assert_return (invoke "div_u" (i32.const 11) (i32.const 5)) (i32.const 2))
97(assert_return (invoke "div_u" (i32.const 17) (i32.const 7)) (i32.const 2))
98
99(assert_trap (invoke "rem_s" (i32.const 1) (i32.const 0)) "integer divide by zero")
100(assert_trap (invoke "rem_s" (i32.const 0) (i32.const 0)) "integer divide by zero")
101(assert_return (invoke "rem_s" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0))
102(assert_return (invoke "rem_s" (i32.const 1) (i32.const 1)) (i32.const 0))
103(assert_return (invoke "rem_s" (i32.const 0) (i32.const 1)) (i32.const 0))
104(assert_return (invoke "rem_s" (i32.const 0) (i32.const -1)) (i32.const 0))
105(assert_return (invoke "rem_s" (i32.const -1) (i32.const -1)) (i32.const 0))
106(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
107(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0))
108(assert_return (invoke "rem_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const -647))
109(assert_return (invoke "rem_s" (i32.const 5) (i32.const 2)) (i32.const 1))
110(assert_return (invoke "rem_s" (i32.const -5) (i32.const 2)) (i32.const -1))
111(assert_return (invoke "rem_s" (i32.const 5) (i32.const -2)) (i32.const 1))
112(assert_return (invoke "rem_s" (i32.const -5) (i32.const -2)) (i32.const -1))
113(assert_return (invoke "rem_s" (i32.const 7) (i32.const 3)) (i32.const 1))
114(assert_return (invoke "rem_s" (i32.const -7) (i32.const 3)) (i32.const -1))
115(assert_return (invoke "rem_s" (i32.const 7) (i32.const -3)) (i32.const 1))
116(assert_return (invoke "rem_s" (i32.const -7) (i32.const -3)) (i32.const -1))
117(assert_return (invoke "rem_s" (i32.const 11) (i32.const 5)) (i32.const 1))
118(assert_return (invoke "rem_s" (i32.const 17) (i32.const 7)) (i32.const 3))
119
120(assert_trap (invoke "rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero")
121(assert_trap (invoke "rem_u" (i32.const 0) (i32.const 0)) "integer divide by zero")
122(assert_return (invoke "rem_u" (i32.const 1) (i32.const 1)) (i32.const 0))
123(assert_return (invoke "rem_u" (i32.const 0) (i32.const 1)) (i32.const 0))
124(assert_return (invoke "rem_u" (i32.const -1) (i32.const -1)) (i32.const 0))
125(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000))
126(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0))
127(assert_return (invoke "rem_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8001))
128(assert_return (invoke "rem_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 649))
129(assert_return (invoke "rem_u" (i32.const 5) (i32.const 2)) (i32.const 1))
130(assert_return (invoke "rem_u" (i32.const -5) (i32.const 2)) (i32.const 1))
131(assert_return (invoke "rem_u" (i32.const 5) (i32.const -2)) (i32.const 5))
132(assert_return (invoke "rem_u" (i32.const -5) (i32.const -2)) (i32.const -5))
133(assert_return (invoke "rem_u" (i32.const 7) (i32.const 3)) (i32.const 1))
134(assert_return (invoke "rem_u" (i32.const 11) (i32.const 5)) (i32.const 1))
135(assert_return (invoke "rem_u" (i32.const 17) (i32.const 7)) (i32.const 3))
136
137(assert_return (invoke "and" (i32.const 1) (i32.const 0)) (i32.const 0))
138(assert_return (invoke "and" (i32.const 0) (i32.const 1)) (i32.const 0))
139(assert_return (invoke "and" (i32.const 1) (i32.const 1)) (i32.const 1))
140(assert_return (invoke "and" (i32.const 0) (i32.const 0)) (i32.const 0))
141(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
142(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x7fffffff))
143(assert_return (invoke "and" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xf0f0f0f0))
144(assert_return (invoke "and" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff))
145
146(assert_return (invoke "or" (i32.const 1) (i32.const 0)) (i32.const 1))
147(assert_return (invoke "or" (i32.const 0) (i32.const 1)) (i32.const 1))
148(assert_return (invoke "or" (i32.const 1) (i32.const 1)) (i32.const 1))
149(assert_return (invoke "or" (i32.const 0) (i32.const 0)) (i32.const 0))
150(assert_return (invoke "or" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1))
151(assert_return (invoke "or" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000))
152(assert_return (invoke "or" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xffffffff))
153(assert_return (invoke "or" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff))
154
155(assert_return (invoke "xor" (i32.const 1) (i32.const 0)) (i32.const 1))
156(assert_return (invoke "xor" (i32.const 0) (i32.const 1)) (i32.const 1))
157(assert_return (invoke "xor" (i32.const 1) (i32.const 1)) (i32.const 0))
158(assert_return (invoke "xor" (i32.const 0) (i32.const 0)) (i32.const 0))
159(assert_return (invoke "xor" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1))
160(assert_return (invoke "xor" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000))
161(assert_return (invoke "xor" (i32.const -1) (i32.const 0x80000000)) (i32.const 0x7fffffff))
162(assert_return (invoke "xor" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 0x80000000))
163(assert_return (invoke "xor" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0x0f0f0f0f))
164(assert_return (invoke "xor" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0))
165
166(assert_return (invoke "shl" (i32.const 1) (i32.const 1)) (i32.const 2))
167(assert_return (invoke "shl" (i32.const 1) (i32.const 0)) (i32.const 1))
168(assert_return (invoke "shl" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0xfffffffe))
169(assert_return (invoke "shl" (i32.const 0xffffffff) (i32.const 1)) (i32.const 0xfffffffe))
170(assert_return (invoke "shl" (i32.const 0x80000000) (i32.const 1)) (i32.const 0))
171(assert_return (invoke "shl" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x80000000))
172(assert_return (invoke "shl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000))
173(assert_return (invoke "shl" (i32.const 1) (i32.const 32)) (i32.const 1))
174(assert_return (invoke "shl" (i32.const 1) (i32.const 33)) (i32.const 2))
175(assert_return (invoke "shl" (i32.const 1) (i32.const -1)) (i32.const 0x80000000))
176(assert_return (invoke "shl" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0x80000000))
177
178(assert_return (invoke "shr_s" (i32.const 1) (i32.const 1)) (i32.const 0))
179(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0)) (i32.const 1))
180(assert_return (invoke "shr_s" (i32.const -1) (i32.const 1)) (i32.const -1))
181(assert_return (invoke "shr_s" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff))
182(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 1)) (i32.const 0xc0000000))
183(assert_return (invoke "shr_s" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000))
184(assert_return (invoke "shr_s" (i32.const 1) (i32.const 32)) (i32.const 1))
185(assert_return (invoke "shr_s" (i32.const 1) (i32.const 33)) (i32.const 0))
186(assert_return (invoke "shr_s" (i32.const 1) (i32.const -1)) (i32.const 0))
187(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0))
188(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x80000000)) (i32.const 1))
189(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 31)) (i32.const -1))
190(assert_return (invoke "shr_s" (i32.const -1) (i32.const 32)) (i32.const -1))
191(assert_return (invoke "shr_s" (i32.const -1) (i32.const 33)) (i32.const -1))
192(assert_return (invoke "shr_s" (i32.const -1) (i32.const -1)) (i32.const -1))
193(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x7fffffff)) (i32.const -1))
194(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x80000000)) (i32.const -1))
195
196(assert_return (invoke "shr_u" (i32.const 1) (i32.const 1)) (i32.const 0))
197(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0)) (i32.const 1))
198(assert_return (invoke "shr_u" (i32.const -1) (i32.const 1)) (i32.const 0x7fffffff))
199(assert_return (invoke "shr_u" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff))
200(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x40000000))
201(assert_return (invoke "shr_u" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000))
202(assert_return (invoke "shr_u" (i32.const 1) (i32.const 32)) (i32.const 1))
203(assert_return (invoke "shr_u" (i32.const 1) (i32.const 33)) (i32.const 0))
204(assert_return (invoke "shr_u" (i32.const 1) (i32.const -1)) (i32.const 0))
205(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0))
206(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x80000000)) (i32.const 1))
207(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 31)) (i32.const 1))
208(assert_return (invoke "shr_u" (i32.const -1) (i32.const 32)) (i32.const -1))
209(assert_return (invoke "shr_u" (i32.const -1) (i32.const 33)) (i32.const 0x7fffffff))
210(assert_return (invoke "shr_u" (i32.const -1) (i32.const -1)) (i32.const 1))
211(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 1))
212(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x80000000)) (i32.const -1))
213
214(assert_return (invoke "rotl" (i32.const 1) (i32.const 1)) (i32.const 2))
215(assert_return (invoke "rotl" (i32.const 1) (i32.const 0)) (i32.const 1))
216(assert_return (invoke "rotl" (i32.const -1) (i32.const 1)) (i32.const -1))
217(assert_return (invoke "rotl" (i32.const 1) (i32.const 32)) (i32.const 1))
218(assert_return (invoke "rotl" (i32.const 0xabcd9876) (i32.const 1)) (i32.const 0x579b30ed))
219(assert_return (invoke "rotl" (i32.const 0xfe00dc00) (i32.const 4)) (i32.const 0xe00dc00f))
220(assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x183a5c76))
221(assert_return (invoke "rotl" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00100000))
222(assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x183a5c76))
223(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0x579beed3))
224(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0x579beed3))
225(assert_return (invoke "rotl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000))
226(assert_return (invoke "rotl" (i32.const 0x80000000) (i32.const 1)) (i32.const 1))
227
228(assert_return (invoke "rotr" (i32.const 1) (i32.const 1)) (i32.const 0x80000000))
229(assert_return (invoke "rotr" (i32.const 1) (i32.const 0)) (i32.const 1))
230(assert_return (invoke "rotr" (i32.const -1) (i32.const 1)) (i32.const -1))
231(assert_return (invoke "rotr" (i32.const 1) (i32.const 32)) (i32.const 1))
232(assert_return (invoke "rotr" (i32.const 0xff00cc00) (i32.const 1)) (i32.const 0x7f806600))
233(assert_return (invoke "rotr" (i32.const 0x00080000) (i32.const 4)) (i32.const 0x00008000))
234(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x1d860e97))
235(assert_return (invoke "rotr" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00000400))
236(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x1d860e97))
237(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0xe6fbb4d5))
238(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0xe6fbb4d5))
239(assert_return (invoke "rotr" (i32.const 1) (i32.const 31)) (i32.const 2))
240(assert_return (invoke "rotr" (i32.const 0x80000000) (i32.const 31)) (i32.const 1))
241
242(assert_return (invoke "clz" (i32.const 0xffffffff)) (i32.const 0))
243(assert_return (invoke "clz" (i32.const 0)) (i32.const 32))
244(assert_return (invoke "clz" (i32.const 0x00008000)) (i32.const 16))
245(assert_return (invoke "clz" (i32.const 0xff)) (i32.const 24))
246(assert_return (invoke "clz" (i32.const 0x80000000)) (i32.const 0))
247(assert_return (invoke "clz" (i32.const 1)) (i32.const 31))
248(assert_return (invoke "clz" (i32.const 2)) (i32.const 30))
249(assert_return (invoke "clz" (i32.const 0x7fffffff)) (i32.const 1))
250
251(assert_return (invoke "ctz" (i32.const -1)) (i32.const 0))
252(assert_return (invoke "ctz" (i32.const 0)) (i32.const 32))
253(assert_return (invoke "ctz" (i32.const 0x00008000)) (i32.const 15))
254(assert_return (invoke "ctz" (i32.const 0x00010000)) (i32.const 16))
255(assert_return (invoke "ctz" (i32.const 0x80000000)) (i32.const 31))
256(assert_return (invoke "ctz" (i32.const 0x7fffffff)) (i32.const 0))
257
258(assert_return (invoke "popcnt" (i32.const -1)) (i32.const 32))
259(assert_return (invoke "popcnt" (i32.const 0)) (i32.const 0))
260(assert_return (invoke "popcnt" (i32.const 0x00008000)) (i32.const 1))
261(assert_return (invoke "popcnt" (i32.const 0x80008000)) (i32.const 2))
262(assert_return (invoke "popcnt" (i32.const 0x7fffffff)) (i32.const 31))
263(assert_return (invoke "popcnt" (i32.const 0xAAAAAAAA)) (i32.const 16))
264(assert_return (invoke "popcnt" (i32.const 0x55555555)) (i32.const 16))
265(assert_return (invoke "popcnt" (i32.const 0xDEADBEEF)) (i32.const 24))
266
267(assert_return (invoke "eqz" (i32.const 0)) (i32.const 1))
268(assert_return (invoke "eqz" (i32.const 1)) (i32.const 0))
269(assert_return (invoke "eqz" (i32.const 0x80000000)) (i32.const 0))
270(assert_return (invoke "eqz" (i32.const 0x7fffffff)) (i32.const 0))
271(assert_return (invoke "eqz" (i32.const 0xffffffff)) (i32.const 0))
272
273(assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1))
274(assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1))
275(assert_return (invoke "eq" (i32.const -1) (i32.const 1)) (i32.const 0))
276(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
277(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
278(assert_return (invoke "eq" (i32.const -1) (i32.const -1)) (i32.const 1))
279(assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 0))
280(assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 0))
281(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
282(assert_return (invoke "eq" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
283(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
284(assert_return (invoke "eq" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
285(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
286(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
287
288(assert_return (invoke "ne" (i32.const 0) (i32.const 0)) (i32.const 0))
289(assert_return (invoke "ne" (i32.const 1) (i32.const 1)) (i32.const 0))
290(assert_return (invoke "ne" (i32.const -1) (i32.const 1)) (i32.const 1))
291(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
292(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
293(assert_return (invoke "ne" (i32.const -1) (i32.const -1)) (i32.const 0))
294(assert_return (invoke "ne" (i32.const 1) (i32.const 0)) (i32.const 1))
295(assert_return (invoke "ne" (i32.const 0) (i32.const 1)) (i32.const 1))
296(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
297(assert_return (invoke "ne" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
298(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
299(assert_return (invoke "ne" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
300(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
301(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
302
303(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0)) (i32.const 0))
304(assert_return (invoke "lt_s" (i32.const 1) (i32.const 1)) (i32.const 0))
305(assert_return (invoke "lt_s" (i32.const -1) (i32.const 1)) (i32.const 1))
306(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
307(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
308(assert_return (invoke "lt_s" (i32.const -1) (i32.const -1)) (i32.const 0))
309(assert_return (invoke "lt_s" (i32.const 1) (i32.const 0)) (i32.const 0))
310(assert_return (invoke "lt_s" (i32.const 0) (i32.const 1)) (i32.const 1))
311(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
312(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
313(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
314(assert_return (invoke "lt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
315(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
316(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
317
318(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0)) (i32.const 0))
319(assert_return (invoke "lt_u" (i32.const 1) (i32.const 1)) (i32.const 0))
320(assert_return (invoke "lt_u" (i32.const -1) (i32.const 1)) (i32.const 0))
321(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
322(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
323(assert_return (invoke "lt_u" (i32.const -1) (i32.const -1)) (i32.const 0))
324(assert_return (invoke "lt_u" (i32.const 1) (i32.const 0)) (i32.const 0))
325(assert_return (invoke "lt_u" (i32.const 0) (i32.const 1)) (i32.const 1))
326(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
327(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
328(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
329(assert_return (invoke "lt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
330(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
331(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
332
333(assert_return (invoke "le_s" (i32.const 0) (i32.const 0)) (i32.const 1))
334(assert_return (invoke "le_s" (i32.const 1) (i32.const 1)) (i32.const 1))
335(assert_return (invoke "le_s" (i32.const -1) (i32.const 1)) (i32.const 1))
336(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
337(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
338(assert_return (invoke "le_s" (i32.const -1) (i32.const -1)) (i32.const 1))
339(assert_return (invoke "le_s" (i32.const 1) (i32.const 0)) (i32.const 0))
340(assert_return (invoke "le_s" (i32.const 0) (i32.const 1)) (i32.const 1))
341(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
342(assert_return (invoke "le_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
343(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
344(assert_return (invoke "le_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
345(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
346(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
347
348(assert_return (invoke "le_u" (i32.const 0) (i32.const 0)) (i32.const 1))
349(assert_return (invoke "le_u" (i32.const 1) (i32.const 1)) (i32.const 1))
350(assert_return (invoke "le_u" (i32.const -1) (i32.const 1)) (i32.const 0))
351(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
352(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
353(assert_return (invoke "le_u" (i32.const -1) (i32.const -1)) (i32.const 1))
354(assert_return (invoke "le_u" (i32.const 1) (i32.const 0)) (i32.const 0))
355(assert_return (invoke "le_u" (i32.const 0) (i32.const 1)) (i32.const 1))
356(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
357(assert_return (invoke "le_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
358(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
359(assert_return (invoke "le_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
360(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
361(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
362
363(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0)) (i32.const 0))
364(assert_return (invoke "gt_s" (i32.const 1) (i32.const 1)) (i32.const 0))
365(assert_return (invoke "gt_s" (i32.const -1) (i32.const 1)) (i32.const 0))
366(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
367(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
368(assert_return (invoke "gt_s" (i32.const -1) (i32.const -1)) (i32.const 0))
369(assert_return (invoke "gt_s" (i32.const 1) (i32.const 0)) (i32.const 1))
370(assert_return (invoke "gt_s" (i32.const 0) (i32.const 1)) (i32.const 0))
371(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
372(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
373(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
374(assert_return (invoke "gt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
375(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
376(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
377
378(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0)) (i32.const 0))
379(assert_return (invoke "gt_u" (i32.const 1) (i32.const 1)) (i32.const 0))
380(assert_return (invoke "gt_u" (i32.const -1) (i32.const 1)) (i32.const 1))
381(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
382(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
383(assert_return (invoke "gt_u" (i32.const -1) (i32.const -1)) (i32.const 0))
384(assert_return (invoke "gt_u" (i32.const 1) (i32.const 0)) (i32.const 1))
385(assert_return (invoke "gt_u" (i32.const 0) (i32.const 1)) (i32.const 0))
386(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
387(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
388(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
389(assert_return (invoke "gt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
390(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
391(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
392
393(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0)) (i32.const 1))
394(assert_return (invoke "ge_s" (i32.const 1) (i32.const 1)) (i32.const 1))
395(assert_return (invoke "ge_s" (i32.const -1) (i32.const 1)) (i32.const 0))
396(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
397(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
398(assert_return (invoke "ge_s" (i32.const -1) (i32.const -1)) (i32.const 1))
399(assert_return (invoke "ge_s" (i32.const 1) (i32.const 0)) (i32.const 1))
400(assert_return (invoke "ge_s" (i32.const 0) (i32.const 1)) (i32.const 0))
401(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
402(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
403(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
404(assert_return (invoke "ge_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
405(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
406(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
407
408(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0)) (i32.const 1))
409(assert_return (invoke "ge_u" (i32.const 1) (i32.const 1)) (i32.const 1))
410(assert_return (invoke "ge_u" (i32.const -1) (i32.const 1)) (i32.const 1))
411(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
412(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
413(assert_return (invoke "ge_u" (i32.const -1) (i32.const -1)) (i32.const 1))
414(assert_return (invoke "ge_u" (i32.const 1) (i32.const 0)) (i32.const 1))
415(assert_return (invoke "ge_u" (i32.const 0) (i32.const 1)) (i32.const 0))
416(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
417(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
418(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
419(assert_return (invoke "ge_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
420(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
421(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
422
423
424(assert_invalid
425 (module
426 (func $type-unary-operand-empty
427 (i32.eqz) (drop)
428 )
429 )
430 "type mismatch"
431)
432(assert_invalid
433 (module
434 (func $type-unary-operand-empty-in-block
435 (i32.const 0)
436 (block (i32.eqz) (drop))
437 )
438 )
439 "type mismatch"
440)
441(assert_invalid
442 (module
443 (func $type-unary-operand-empty-in-loop
444 (i32.const 0)
445 (loop (i32.eqz) (drop))
446 )
447 )
448 "type mismatch"
449)
450(assert_invalid
451 (module
452 (func $type-unary-operand-empty-in-if
453 (i32.const 0) (i32.const 0)
454 (if (then (i32.eqz) (drop)))
455 )
456 )
457 "type mismatch"
458)
459(assert_invalid
460 (module
461 (func $type-unary-operand-empty-in-else
462 (i32.const 0) (i32.const 0)
463 (if (result i32) (then (i32.const 0)) (else (i32.eqz))) (drop)
464 )
465 )
466 "type mismatch"
467)
468(assert_invalid
469 (module
470 (func $type-unary-operand-empty-in-br
471 (i32.const 0)
472 (block (br 0 (i32.eqz)) (drop))
473 )
474 )
475 "type mismatch"
476)
477(assert_invalid
478 (module
479 (func $type-unary-operand-empty-in-br_if
480 (i32.const 0)
481 (block (br_if 0 (i32.eqz) (i32.const 1)) (drop))
482 )
483 )
484 "type mismatch"
485)
486(assert_invalid
487 (module
488 (func $type-unary-operand-empty-in-br_table
489 (i32.const 0)
490 (block (br_table 0 (i32.eqz)) (drop))
491 )
492 )
493 "type mismatch"
494)
495(assert_invalid
496 (module
497 (func $type-unary-operand-empty-in-return
498 (return (i32.eqz)) (drop)
499 )
500 )
501 "type mismatch"
502)
503(assert_invalid
504 (module
505 (func $type-unary-operand-empty-in-select
506 (select (i32.eqz) (i32.const 1) (i32.const 2)) (drop)
507 )
508 )
509 "type mismatch"
510)
511(assert_invalid
512 (module
513 (func $type-unary-operand-empty-in-call
514 (call 1 (i32.eqz)) (drop)
515 )
516 (func (param i32) (result i32) (local.get 0))
517 )
518 "type mismatch"
519)
520(assert_invalid
521 (module
522 (func $f (param i32) (result i32) (local.get 0))
523 (type $sig (func (param i32) (result i32)))
524 (table funcref (elem $f))
525 (func $type-unary-operand-empty-in-call_indirect
526 (block (result i32)
527 (call_indirect (type $sig)
528 (i32.eqz) (i32.const 0)
529 )
530 (drop)
531 )
532 )
533 )
534 "type mismatch"
535)
536(assert_invalid
537 (module
538 (func $type-unary-operand-empty-in-local.set
539 (local i32)
540 (local.set 0 (i32.eqz)) (local.get 0) (drop)
541 )
542 )
543 "type mismatch"
544)
545(assert_invalid
546 (module
547 (func $type-unary-operand-empty-in-local.tee
548 (local i32)
549 (local.tee 0 (i32.eqz)) (drop)
550 )
551 )
552 "type mismatch"
553)
554(assert_invalid
555 (module
556 (global $x (mut i32) (i32.const 0))
557 (func $type-unary-operand-empty-in-global.set
558 (global.set $x (i32.eqz)) (global.get $x) (drop)
559 )
560 )
561 "type mismatch"
562)
563(assert_invalid
564 (module
565 (memory 0)
566 (func $type-unary-operand-empty-in-memory.grow
567 (memory.grow (i32.eqz)) (drop)
568 )
569 )
570 "type mismatch"
571)
572(assert_invalid
573 (module
574 (memory 0)
575 (func $type-unary-operand-empty-in-load
576 (i32.load (i32.eqz)) (drop)
577 )
578 )
579 "type mismatch"
580)
581(assert_invalid
582 (module
583 (memory 1)
584 (func $type-unary-operand-empty-in-store
585 (i32.store (i32.eqz) (i32.const 1))
586 )
587 )
588 "type mismatch"
589)
590
591(assert_invalid
592 (module
593 (func $type-binary-1st-operand-empty
594 (i32.add) (drop)
595 )
596 )
597 "type mismatch"
598)
599(assert_invalid
600 (module
601 (func $type-binary-2nd-operand-empty
602 (i32.const 0) (i32.add) (drop)
603 )
604 )
605 "type mismatch"
606)
607(assert_invalid
608 (module
609 (func $type-binary-1st-operand-empty-in-block
610 (i32.const 0) (i32.const 0)
611 (block (i32.add) (drop))
612 )
613 )
614 "type mismatch"
615)
616(assert_invalid
617 (module
618 (func $type-binary-2nd-operand-empty-in-block
619 (i32.const 0)
620 (block (i32.const 0) (i32.add) (drop))
621 )
622 )
623 "type mismatch"
624)
625(assert_invalid
626 (module
627 (func $type-binary-1st-operand-empty-in-loop
628 (i32.const 0) (i32.const 0)
629 (loop (i32.add) (drop))
630 )
631 )
632 "type mismatch"
633)
634(assert_invalid
635 (module
636 (func $type-binary-2nd-operand-empty-in-loop
637 (i32.const 0)
638 (loop (i32.const 0) (i32.add) (drop))
639 )
640 )
641 "type mismatch"
642)
643(assert_invalid
644 (module
645 (func $type-binary-1st-operand-empty-in-if
646 (i32.const 0) (i32.const 0) (i32.const 0)
647 (if (i32.add) (then (drop)))
648 )
649 )
650 "type mismatch"
651)
652(assert_invalid
653 (module
654 (func $type-binary-2nd-operand-empty-in-if
655 (i32.const 0) (i32.const 0)
656 (if (i32.const 0) (then (i32.add)) (else (drop)))
657 )
658 )
659 "type mismatch"
660)
661(assert_invalid
662 (module
663 (func $type-binary-1st-operand-empty-in-else
664 (i32.const 0) (i32.const 0) (i32.const 0)
665 (if (result i32) (then (i32.const 0)) (else (i32.add) (i32.const 0)))
666 (drop) (drop)
667 )
668 )
669 "type mismatch"
670)
671(assert_invalid
672 (module
673 (func $type-binary-2nd-operand-empty-in-else
674 (i32.const 0) (i32.const 0)
675 (if (result i32) (then (i32.const 0)) (else (i32.add)))
676 (drop)
677 )
678 )
679 "type mismatch"
680)
681(assert_invalid
682 (module
683 (func $type-binary-1st-operand-empty-in-br
684 (i32.const 0) (i32.const 0)
685 (block (br 0 (i32.add)) (drop))
686 )
687 )
688 "type mismatch"
689)
690(assert_invalid
691 (module
692 (func $type-binary-2nd-operand-empty-in-br
693 (i32.const 0)
694 (block (br 0 (i32.const 0) (i32.add)) (drop))
695 )
696 )
697 "type mismatch"
698)
699(assert_invalid
700 (module
701 (func $type-binary-1st-operand-empty-in-br_if
702 (i32.const 0) (i32.const 0)
703 (block (br_if 0 (i32.add) (i32.const 1)) (drop))
704 )
705 )
706 "type mismatch"
707)
708(assert_invalid
709 (module
710 (func $type-binary-2nd-operand-empty-in-br_if
711 (i32.const 0)
712 (block (br_if 0 (i32.const 0) (i32.add) (i32.const 1)) (drop))
713 )
714 )
715 "type mismatch"
716)
717(assert_invalid
718 (module
719 (func $type-binary-1st-operand-empty-in-br_table
720 (i32.const 0) (i32.const 0)
721 (block (br_table 0 (i32.add)) (drop))
722 )
723 )
724 "type mismatch"
725)
726(assert_invalid
727 (module
728 (func $type-binary-2nd-operand-empty-in-br_table
729 (i32.const 0)
730 (block (br_table 0 (i32.const 0) (i32.add)) (drop))
731 )
732 )
733 "type mismatch"
734)
735(assert_invalid
736 (module
737 (func $type-binary-1st-operand-empty-in-return
738 (return (i32.add)) (drop)
739 )
740 )
741 "type mismatch"
742)
743(assert_invalid
744 (module
745 (func $type-binary-2nd-operand-empty-in-return
746 (return (i32.const 0) (i32.add)) (drop)
747 )
748 )
749 "type mismatch"
750)
751(assert_invalid
752 (module
753 (func $type-binary-1st-operand-empty-in-select
754 (select (i32.add) (i32.const 1) (i32.const 2)) (drop)
755 )
756 )
757 "type mismatch"
758)
759(assert_invalid
760 (module
761 (func $type-binary-2nd-operand-empty-in-select
762 (select (i32.const 0) (i32.add) (i32.const 1) (i32.const 2)) (drop)
763 )
764 )
765 "type mismatch"
766)
767(assert_invalid
768 (module
769 (func $type-binary-1st-operand-empty-in-call
770 (call 1 (i32.add)) (drop)
771 )
772 (func (param i32 i32) (result i32) (local.get 0))
773 )
774 "type mismatch"
775)
776(assert_invalid
777 (module
778 (func $type-binary-2nd-operand-empty-in-call
779 (call 1 (i32.const 0) (i32.add)) (drop)
780 )
781 (func (param i32 i32) (result i32) (local.get 0))
782 )
783 "type mismatch"
784)
785(assert_invalid
786 (module
787 (func $f (param i32) (result i32) (local.get 0))
788 (type $sig (func (param i32) (result i32)))
789 (table funcref (elem $f))
790 (func $type-binary-1st-operand-empty-in-call_indirect
791 (block (result i32)
792 (call_indirect (type $sig)
793 (i32.add) (i32.const 0)
794 )
795 (drop)
796 )
797 )
798 )
799 "type mismatch"
800)
801(assert_invalid
802 (module
803 (func $f (param i32) (result i32) (local.get 0))
804 (type $sig (func (param i32) (result i32)))
805 (table funcref (elem $f))
806 (func $type-binary-2nd-operand-empty-in-call_indirect
807 (block (result i32)
808 (call_indirect (type $sig)
809 (i32.const 0) (i32.add) (i32.const 0)
810 )
811 (drop)
812 )
813 )
814 )
815 "type mismatch"
816)
817(assert_invalid
818 (module
819 (func $type-binary-1st-operand-empty-in-local.set
820 (local i32)
821 (local.set 0 (i32.add)) (local.get 0) (drop)
822 )
823 )
824 "type mismatch"
825)
826(assert_invalid
827 (module
828 (func $type-binary-2nd-operand-empty-in-local.set
829 (local i32)
830 (local.set 0 (i32.const 0) (i32.add)) (local.get 0) (drop)
831 )
832 )
833 "type mismatch"
834)
835(assert_invalid
836 (module
837 (func $type-binary-1st-operand-empty-in-local.tee
838 (local i32)
839 (local.tee 0 (i32.add)) (drop)
840 )
841 )
842 "type mismatch"
843)
844(assert_invalid
845 (module
846 (func $type-binary-2nd-operand-empty-in-local.tee
847 (local i32)
848 (local.tee 0 (i32.const 0) (i32.add)) (drop)
849 )
850 )
851 "type mismatch"
852)
853(assert_invalid
854 (module
855 (global $x (mut i32) (i32.const 0))
856 (func $type-binary-1st-operand-empty-in-global.set
857 (global.set $x (i32.add)) (global.get $x) (drop)
858 )
859 )
860 "type mismatch"
861)
862(assert_invalid
863 (module
864 (global $x (mut i32) (i32.const 0))
865 (func $type-binary-2nd-operand-empty-in-global.set
866 (global.set $x (i32.const 0) (i32.add)) (global.get $x) (drop)
867 )
868 )
869 "type mismatch"
870)
871(assert_invalid
872 (module
873 (memory 0)
874 (func $type-binary-1st-operand-empty-in-memory.grow
875 (memory.grow (i32.add)) (drop)
876 )
877 )
878 "type mismatch"
879)
880(assert_invalid
881 (module
882 (memory 0)
883 (func $type-binary-2nd-operand-empty-in-memory.grow
884 (memory.grow (i32.const 0) (i32.add)) (drop)
885 )
886 )
887 "type mismatch"
888)
889(assert_invalid
890 (module
891 (memory 0)
892 (func $type-binary-1st-operand-empty-in-load
893 (i32.load (i32.add)) (drop)
894 )
895 )
896 "type mismatch"
897)
898(assert_invalid
899 (module
900 (memory 0)
901 (func $type-binary-2nd-operand-empty-in-load
902 (i32.load (i32.const 0) (i32.add)) (drop)
903 )
904 )
905 "type mismatch"
906)
907(assert_invalid
908 (module
909 (memory 1)
910 (func $type-binary-1st-operand-empty-in-store
911 (i32.store (i32.add) (i32.const 1))
912 )
913 )
914 "type mismatch"
915)
916(assert_invalid
917 (module
918 (memory 1)
919 (func $type-binary-2nd-operand-empty-in-store
920 (i32.store (i32.const 1) (i32.add) (i32.const 0))
921 )
922 )
923 "type mismatch"
924)
925
926
927;; Type check
928
929(assert_invalid (module (func (result i32) (i32.add (i64.const 0) (f32.const 0)))) "type mismatch")
930(assert_invalid (module (func (result i32) (i32.and (i64.const 0) (f32.const 0)))) "type mismatch")
931(assert_invalid (module (func (result i32) (i32.div_s (i64.const 0) (f32.const 0)))) "type mismatch")
932(assert_invalid (module (func (result i32) (i32.div_u (i64.const 0) (f32.const 0)))) "type mismatch")
933(assert_invalid (module (func (result i32) (i32.mul (i64.const 0) (f32.const 0)))) "type mismatch")
934(assert_invalid (module (func (result i32) (i32.or (i64.const 0) (f32.const 0)))) "type mismatch")
935(assert_invalid (module (func (result i32) (i32.rem_s (i64.const 0) (f32.const 0)))) "type mismatch")
936(assert_invalid (module (func (result i32) (i32.rem_u (i64.const 0) (f32.const 0)))) "type mismatch")
937(assert_invalid (module (func (result i32) (i32.rotl (i64.const 0) (f32.const 0)))) "type mismatch")
938(assert_invalid (module (func (result i32) (i32.rotr (i64.const 0) (f32.const 0)))) "type mismatch")
939(assert_invalid (module (func (result i32) (i32.shl (i64.const 0) (f32.const 0)))) "type mismatch")
940(assert_invalid (module (func (result i32) (i32.shr_s (i64.const 0) (f32.const 0)))) "type mismatch")
941(assert_invalid (module (func (result i32) (i32.shr_u (i64.const 0) (f32.const 0)))) "type mismatch")
942(assert_invalid (module (func (result i32) (i32.sub (i64.const 0) (f32.const 0)))) "type mismatch")
943(assert_invalid (module (func (result i32) (i32.xor (i64.const 0) (f32.const 0)))) "type mismatch")
944(assert_invalid (module (func (result i32) (i32.eqz (i64.const 0)))) "type mismatch")
945(assert_invalid (module (func (result i32) (i32.clz (i64.const 0)))) "type mismatch")
946(assert_invalid (module (func (result i32) (i32.ctz (i64.const 0)))) "type mismatch")
947(assert_invalid (module (func (result i32) (i32.popcnt (i64.const 0)))) "type mismatch")
948(assert_invalid (module (func (result i32) (i32.eq (i64.const 0) (f32.const 0)))) "type mismatch")
949(assert_invalid (module (func (result i32) (i32.ge_s (i64.const 0) (f32.const 0)))) "type mismatch")
950(assert_invalid (module (func (result i32) (i32.ge_u (i64.const 0) (f32.const 0)))) "type mismatch")
951(assert_invalid (module (func (result i32) (i32.gt_s (i64.const 0) (f32.const 0)))) "type mismatch")
952(assert_invalid (module (func (result i32) (i32.gt_u (i64.const 0) (f32.const 0)))) "type mismatch")
953(assert_invalid (module (func (result i32) (i32.le_s (i64.const 0) (f32.const 0)))) "type mismatch")
954(assert_invalid (module (func (result i32) (i32.le_u (i64.const 0) (f32.const 0)))) "type mismatch")
955(assert_invalid (module (func (result i32) (i32.lt_s (i64.const 0) (f32.const 0)))) "type mismatch")
956(assert_invalid (module (func (result i32) (i32.lt_u (i64.const 0) (f32.const 0)))) "type mismatch")
957(assert_invalid (module (func (result i32) (i32.ne (i64.const 0) (f32.const 0)))) "type mismatch")
View as plain text