1 ;; Test all the bitwise operators on major boundary values and all special values.
4 (func (export "not") (param $0 v128) (result v128) (v128.not (local.get $0)))
5 (func (export "and") (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1)))
6 (func (export "or") (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1)))
7 (func (export "xor") (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1)))
8 (func (export "bitselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128)
9 (v128.bitselect (local.get $0) (local.get $1) (local.get $2))
11 (func (export "andnot") (param $0 v128) (param $1 v128) (result v128) (v128.andnot (local.get $0) (local.get $1)))
15 (assert_return (invoke "not" (v128.const i32x4 0 0 0 0))
16 (v128.const i32x4 -1 -1 -1 -1))
17 (assert_return (invoke "not" (v128.const i32x4 -1 -1 -1 -1))
18 (v128.const i32x4 0 0 0 0))
19 (assert_return (invoke "not" (v128.const i32x4 -1 0 -1 0))
20 (v128.const i32x4 0 -1 0 -1))
21 (assert_return (invoke "not" (v128.const i32x4 0 -1 0 -1))
22 (v128.const i32x4 -1 0 -1 0))
23 (assert_return (invoke "not" (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555))
24 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
25 (assert_return (invoke "not" (v128.const i32x4 3435973836 3435973836 3435973836 3435973836))
26 (v128.const i32x4 858993459 858993459 858993459 858993459))
27 (assert_return (invoke "not" (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890))
28 (v128.const i32x4 3060399405 3060399405 3060399405 3060399405))
29 (assert_return (invoke "not" (v128.const i32x4 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678))
30 (v128.const i32x4 0xedcba987 0xedcba987 0xedcba987 0xedcba987))
31 (assert_return (invoke "and" (v128.const i32x4 0 0 -1 -1)
32 (v128.const i32x4 0 -1 0 -1))
33 (v128.const i32x4 0 0 0 -1))
34 (assert_return (invoke "and" (v128.const i32x4 0 0 0 0)
35 (v128.const i32x4 0 0 0 0))
36 (v128.const i32x4 0 0 0 0))
37 (assert_return (invoke "and" (v128.const i32x4 0 0 0 0)
38 (v128.const i32x4 -1 -1 -1 -1))
39 (v128.const i32x4 0 0 0 0))
40 (assert_return (invoke "and" (v128.const i32x4 0 0 0 0)
41 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
42 (v128.const i32x4 0 0 0 0))
43 (assert_return (invoke "and" (v128.const i32x4 1 1 1 1)
44 (v128.const i32x4 1 1 1 1))
45 (v128.const i32x4 1 1 1 1))
46 (assert_return (invoke "and" (v128.const i32x4 255 255 255 255)
47 (v128.const i32x4 85 85 85 85))
48 (v128.const i32x4 85 85 85 85))
49 (assert_return (invoke "and" (v128.const i32x4 255 255 255 255)
50 (v128.const i32x4 128 128 128 128))
51 (v128.const i32x4 128 128 128 128))
52 (assert_return (invoke "and" (v128.const i32x4 2863311530 2863311530 2863311530 2863311530)
53 (v128.const i32x4 10 128 5 165))
54 (v128.const i32x4 10 128 0 160))
55 (assert_return (invoke "and" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
56 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555))
57 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555))
58 (assert_return (invoke "and" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
59 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
60 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
61 (assert_return (invoke "and" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
62 (v128.const i32x4 0x0 0x0 0x0 0x0))
63 (v128.const i32x4 0x0 0x0 0x0 0x0))
64 (assert_return (invoke "and" (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555)
65 (v128.const i32x4 0x5555 0xFFFF 0x55FF 0x5FFF))
66 (v128.const i32x4 0x5555 0x5555 0x5555 0x5555))
67 (assert_return (invoke "and" (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890)
68 (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890))
69 (v128.const i32x4 1234567890 1234567890 1234567890 1234567890))
70 (assert_return (invoke "and" (v128.const i32x4 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678)
71 (v128.const i32x4 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef))
72 (v128.const i32x4 0x10204468 0x10204468 0x10204468 0x10204468))
73 (assert_return (invoke "or" (v128.const i32x4 0 0 -1 -1)
74 (v128.const i32x4 0 -1 0 -1))
75 (v128.const i32x4 0 -1 -1 -1))
76 (assert_return (invoke "or" (v128.const i32x4 0 0 0 0)
77 (v128.const i32x4 0 0 0 0))
78 (v128.const i32x4 0 0 0 0))
79 (assert_return (invoke "or" (v128.const i32x4 0 0 0 0)
80 (v128.const i32x4 -1 -1 -1 -1))
81 (v128.const i32x4 -1 -1 -1 -1))
82 (assert_return (invoke "or" (v128.const i32x4 0 0 0 0)
83 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
84 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
85 (assert_return (invoke "or" (v128.const i32x4 1 1 1 1)
86 (v128.const i32x4 1 1 1 1))
87 (v128.const i32x4 1 1 1 1))
88 (assert_return (invoke "or" (v128.const i32x4 255 255 255 255)
89 (v128.const i32x4 85 85 85 85))
90 (v128.const i32x4 255 255 255 255))
91 (assert_return (invoke "or" (v128.const i32x4 255 255 255 255)
92 (v128.const i32x4 128 128 128 128))
93 (v128.const i32x4 255 255 255 255))
94 (assert_return (invoke "or" (v128.const i32x4 2863311530 2863311530 2863311530 2863311530)
95 (v128.const i32x4 10 128 5 165))
96 (v128.const i32x4 2863311530 2863311530 2863311535 2863311535))
97 (assert_return (invoke "or" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
98 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555))
99 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
100 (assert_return (invoke "or" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
101 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
102 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
103 (assert_return (invoke "or" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
104 (v128.const i32x4 0x0 0x0 0x0 0x0))
105 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
106 (assert_return (invoke "or" (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555)
107 (v128.const i32x4 0x5555 0xFFFF 0x55FF 0x5FFF))
108 (v128.const i32x4 0x55555555 0x5555ffff 0x555555ff 0x55555fff))
109 (assert_return (invoke "or" (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890)
110 (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890))
111 (v128.const i32x4 1234567890 1234567890 1234567890 1234567890))
112 (assert_return (invoke "or" (v128.const i32x4 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678)
113 (v128.const i32x4 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef))
114 (v128.const i32x4 0x92bfdfff 0x92bfdfff 0x92bfdfff 0x92bfdfff))
115 (assert_return (invoke "xor" (v128.const i32x4 0 0 -1 -1)
116 (v128.const i32x4 0 -1 0 -1))
117 (v128.const i32x4 0 -1 -1 0))
118 (assert_return (invoke "xor" (v128.const i32x4 0 0 0 0)
119 (v128.const i32x4 0 0 0 0))
120 (v128.const i32x4 0 0 0 0))
121 (assert_return (invoke "xor" (v128.const i32x4 0 0 0 0)
122 (v128.const i32x4 -1 -1 -1 -1))
123 (v128.const i32x4 -1 -1 -1 -1))
124 (assert_return (invoke "xor" (v128.const i32x4 0 0 0 0)
125 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
126 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
127 (assert_return (invoke "xor" (v128.const i32x4 1 1 1 1)
128 (v128.const i32x4 1 1 1 1))
129 (v128.const i32x4 0 0 0 0))
130 (assert_return (invoke "xor" (v128.const i32x4 255 255 255 255)
131 (v128.const i32x4 85 85 85 85))
132 (v128.const i32x4 170 170 170 170))
133 (assert_return (invoke "xor" (v128.const i32x4 255 255 255 255)
134 (v128.const i32x4 128 128 128 128))
135 (v128.const i32x4 127 127 127 127))
136 (assert_return (invoke "xor" (v128.const i32x4 2863311530 2863311530 2863311530 2863311530)
137 (v128.const i32x4 10 128 5 165))
138 (v128.const i32x4 2863311520 2863311402 2863311535 2863311375))
139 (assert_return (invoke "xor" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
140 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555))
141 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
142 (assert_return (invoke "xor" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
143 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
144 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555))
145 (assert_return (invoke "xor" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
146 (v128.const i32x4 0x0 0x0 0x0 0x0))
147 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
148 (assert_return (invoke "xor" (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555)
149 (v128.const i32x4 0x5555 0xFFFF 0x55FF 0x5FFF))
150 (v128.const i32x4 0x55550000 0x5555AAAA 0x555500AA 0x55550AAA))
151 (assert_return (invoke "xor" (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890)
152 (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890))
153 (v128.const i32x4 0 0 0 0))
154 (assert_return (invoke "xor" (v128.const i32x4 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678)
155 (v128.const i32x4 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef))
156 (v128.const i32x4 0x829f9b97 0x829f9b97 0x829f9b97 0x829f9b97))
157 (assert_return (invoke "bitselect" (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA)
158 (v128.const i32x4 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB)
159 (v128.const i32x4 0x00112345 0xF00FFFFF 0x10112021 0xBBAABBAA))
160 (v128.const i32x4 0xBBAABABA 0xABBAAAAA 0xABAABBBA 0xAABBAABB))
161 (assert_return (invoke "bitselect" (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA)
162 (v128.const i32x4 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB)
163 (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000))
164 (v128.const i32x4 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB))
165 (assert_return (invoke "bitselect" (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA)
166 (v128.const i32x4 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB)
167 (v128.const i32x4 0x11111111 0x11111111 0x11111111 0x11111111))
168 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
169 (assert_return (invoke "bitselect" (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA)
170 (v128.const i32x4 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB)
171 (v128.const i32x4 0x01234567 0x89ABCDEF 0xFEDCBA98 0x76543210))
172 (v128.const i32x4 0xBABABABA 0xBABABABA 0xABABABAB 0xABABABAB))
173 (assert_return (invoke "bitselect" (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA)
174 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555)
175 (v128.const i32x4 0x01234567 0x89ABCDEF 0xFEDCBA98 0x76543210))
176 (v128.const i32x4 0x54761032 0xDCFE98BA 0xAB89EFCD 0x23016745))
177 (assert_return (invoke "bitselect" (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA)
178 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555)
179 (v128.const i32x4 0x55555555 0xAAAAAAAA 0x00000000 0xFFFFFFFF))
180 (v128.const i32x4 0x00000000 0xFFFFFFFF 0x55555555 0xAAAAAAAA))
181 (assert_return (invoke "bitselect" (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890)
182 (v128.const i32x4 03_060_399_406 03_060_399_406 03_060_399_406 03_060_399_406)
183 (v128.const i32x4 0xcdefcdef 0xcdefcdef 0xcdefcdef 0xcdefcdef))
184 (v128.const i32x4 2072391874 2072391874 2072391874 2072391874))
185 (assert_return (invoke "bitselect" (v128.const i32x4 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678)
186 (v128.const i32x4 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef)
187 (v128.const i32x4 0xcdefcdef 0xcdefcdef 0xcdefcdef 0xcdefcdef))
188 (v128.const i32x4 0x10244468 0x10244468 0x10244468 0x10244468))
189 (assert_return (invoke "andnot" (v128.const i32x4 0 0 -1 -1)
190 (v128.const i32x4 0 -1 0 -1))
191 (v128.const i32x4 0 0 -1 0))
192 (assert_return (invoke "andnot" (v128.const i32x4 0 0 0 0)
193 (v128.const i32x4 0 0 0 0))
194 (v128.const i32x4 0 0 0 0))
195 (assert_return (invoke "andnot" (v128.const i32x4 0 0 0 0)
196 (v128.const i32x4 -1 -1 -1 -1))
197 (v128.const i32x4 0 0 0 0))
198 (assert_return (invoke "andnot" (v128.const i32x4 0 0 0 0)
199 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
200 (v128.const i32x4 0 0 0 0))
201 (assert_return (invoke "andnot" (v128.const i32x4 1 1 1 1)
202 (v128.const i32x4 1 1 1 1))
203 (v128.const i32x4 0 0 0 0))
204 (assert_return (invoke "andnot" (v128.const i32x4 255 255 255 255)
205 (v128.const i32x4 85 85 85 85))
206 (v128.const i32x4 170 170 170 170))
207 (assert_return (invoke "andnot" (v128.const i32x4 255 255 255 255)
208 (v128.const i32x4 128 128 128 128))
209 (v128.const i32x4 127 127 127 127))
210 (assert_return (invoke "andnot" (v128.const i32x4 2863311530 2863311530 2863311530 2863311530)
211 (v128.const i32x4 10 128 5 165))
212 (v128.const i32x4 2863311520 2863311402 2863311530 2863311370))
213 (assert_return (invoke "andnot" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
214 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555))
215 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
216 (assert_return (invoke "andnot" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
217 (v128.const i32x4 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA))
218 (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555))
219 (assert_return (invoke "andnot" (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF)
220 (v128.const i32x4 0x0 0x0 0x0 0x0))
221 (v128.const i32x4 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF 0xFFFFFFFF))
222 (assert_return (invoke "andnot" (v128.const i32x4 0x55555555 0x55555555 0x55555555 0x55555555)
223 (v128.const i32x4 0x5555 0xFFFF 0x55FF 0x5FFF))
224 (v128.const i32x4 0x55550000 0x55550000 0x55550000 0x55550000))
225 (assert_return (invoke "andnot" (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890)
226 (v128.const i32x4 01_234_567_890 01_234_567_890 01_234_567_890 01_234_567_890))
227 (v128.const i32x4 0 0 0 0))
228 (assert_return (invoke "andnot" (v128.const i32x4 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678 0x0_1234_5678)
229 (v128.const i32x4 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef 0x0_90AB_cdef))
230 (v128.const i32x4 0x02141210 0x02141210 0x02141210 0x02141210))
232 ;; for float special data [e.g. -nan nan -inf inf]
233 (assert_return (invoke "not" (v128.const f32x4 -nan -nan -nan -nan))
234 (v128.const f32x4 5.87747e-39 5.87747e-39 5.87747e-39 5.87747e-39))
235 (assert_return (invoke "not" (v128.const f32x4 nan nan nan nan))
236 (v128.const f32x4 -5.87747e-39 -5.87747e-39 -5.87747e-39 -5.87747e-39))
237 (assert_return (invoke "not" (v128.const f32x4 -inf -inf -inf -inf))
238 (v128.const i32x4 0x007fffff 0x007fffff 0x007fffff 0x007fffff))
239 (assert_return (invoke "not" (v128.const f32x4 inf inf inf inf))
240 (v128.const i32x4 0x807fffff 0x807fffff 0x807fffff 0x807fffff))
241 (assert_return (invoke "and" (v128.const f32x4 -nan -nan -nan -nan)
242 (v128.const f32x4 -nan -nan -nan -nan))
243 (v128.const i32x4 0xffc00000 0xffc00000 0xffc00000 0xffc00000))
244 (assert_return (invoke "and" (v128.const f32x4 -nan -nan -nan -nan)
245 (v128.const f32x4 nan nan nan nan))
246 (v128.const f32x4 nan nan nan nan))
247 (assert_return (invoke "and" (v128.const f32x4 -nan -nan -nan -nan)
248 (v128.const f32x4 -inf -inf -inf -inf))
249 (v128.const f32x4 -inf -inf -inf -inf))
250 (assert_return (invoke "and" (v128.const f32x4 -nan -nan -nan -nan)
251 (v128.const f32x4 inf inf inf inf))
252 (v128.const f32x4 inf inf inf inf))
253 (assert_return (invoke "and" (v128.const f32x4 nan nan nan nan)
254 (v128.const f32x4 nan nan nan nan))
255 (v128.const f32x4 nan nan nan nan))
256 (assert_return (invoke "and" (v128.const f32x4 nan nan nan nan)
257 (v128.const f32x4 -inf -inf -inf -inf))
258 (v128.const f32x4 inf inf inf inf))
259 (assert_return (invoke "and" (v128.const f32x4 nan nan nan nan)
260 (v128.const f32x4 inf inf inf inf))
261 (v128.const f32x4 inf inf inf inf))
262 (assert_return (invoke "and" (v128.const f32x4 -inf -inf -inf -inf)
263 (v128.const f32x4 -inf -inf -inf -inf))
264 (v128.const f32x4 -inf -inf -inf -inf))
265 (assert_return (invoke "and" (v128.const f32x4 -inf -inf -inf -inf)
266 (v128.const f32x4 inf inf inf inf))
267 (v128.const f32x4 inf inf inf inf))
268 (assert_return (invoke "and" (v128.const f32x4 inf inf inf inf)
269 (v128.const f32x4 inf inf inf inf))
270 (v128.const f32x4 inf inf inf inf))
271 (assert_return (invoke "or" (v128.const f32x4 -nan -nan -nan -nan)
272 (v128.const f32x4 -nan -nan -nan -nan))
273 (v128.const i32x4 0xffc00000 0xffc00000 0xffc00000 0xffc00000))
274 (assert_return (invoke "or" (v128.const f32x4 -nan -nan -nan -nan)
275 (v128.const f32x4 nan nan nan nan))
276 (v128.const i32x4 0xffc00000 0xffc00000 0xffc00000 0xffc00000))
277 (assert_return (invoke "or" (v128.const f32x4 -nan -nan -nan -nan)
278 (v128.const f32x4 -inf -inf -inf -inf))
279 (v128.const i32x4 0xffc00000 0xffc00000 0xffc00000 0xffc00000))
280 (assert_return (invoke "or" (v128.const f32x4 -nan -nan -nan -nan)
281 (v128.const f32x4 inf inf inf inf))
282 (v128.const i32x4 0xffc00000 0xffc00000 0xffc00000 0xffc00000))
283 (assert_return (invoke "or" (v128.const f32x4 nan nan nan nan)
284 (v128.const f32x4 nan nan nan nan))
285 (v128.const f32x4 nan nan nan nan))
286 (assert_return (invoke "or" (v128.const f32x4 nan nan nan nan)
287 (v128.const f32x4 -inf -inf -inf -inf))
288 (v128.const i32x4 0xffc00000 0xffc00000 0xffc00000 0xffc00000))
289 (assert_return (invoke "or" (v128.const f32x4 nan nan nan nan)
290 (v128.const f32x4 inf inf inf inf))
291 (v128.const f32x4 nan nan nan nan))
292 (assert_return (invoke "or" (v128.const f32x4 -inf -inf -inf -inf)
293 (v128.const f32x4 -inf -inf -inf -inf))
294 (v128.const f32x4 -inf -inf -inf -inf))
295 (assert_return (invoke "or" (v128.const f32x4 -inf -inf -inf -inf)
296 (v128.const f32x4 inf inf inf inf))
297 (v128.const f32x4 -inf -inf -inf -inf))
298 (assert_return (invoke "or" (v128.const f32x4 inf inf inf inf)
299 (v128.const f32x4 inf inf inf inf))
300 (v128.const f32x4 inf inf inf inf))
301 (assert_return (invoke "xor" (v128.const f32x4 -nan -nan -nan -nan)
302 (v128.const f32x4 -nan -nan -nan -nan))
303 (v128.const f32x4 0 0 0 0))
304 (assert_return (invoke "xor" (v128.const f32x4 -nan -nan -nan -nan)
305 (v128.const f32x4 nan nan nan nan))
306 (v128.const f32x4 -0 -0 -0 -0))
307 (assert_return (invoke "xor" (v128.const f32x4 -nan -nan -nan -nan)
308 (v128.const f32x4 -inf -inf -inf -inf))
309 (v128.const i32x4 0x00400000 0x00400000 0x00400000 0x00400000))
310 (assert_return (invoke "xor" (v128.const f32x4 -nan -nan -nan -nan)
311 (v128.const f32x4 inf inf inf inf))
312 (v128.const i32x4 0x80400000 0x80400000 0x80400000 0x80400000))
313 (assert_return (invoke "xor" (v128.const f32x4 nan nan nan nan)
314 (v128.const f32x4 nan nan nan nan))
315 (v128.const f32x4 0 0 0 0))
316 (assert_return (invoke "xor" (v128.const f32x4 nan nan nan nan)
317 (v128.const f32x4 -inf -inf -inf -inf))
318 (v128.const i32x4 0x80400000 0x80400000 0x80400000 0x80400000))
319 (assert_return (invoke "xor" (v128.const f32x4 nan nan nan nan)
320 (v128.const f32x4 inf inf inf inf))
321 (v128.const i32x4 0x00400000 0x00400000 0x00400000 0x00400000))
322 (assert_return (invoke "xor" (v128.const f32x4 -inf -inf -inf -inf)
323 (v128.const f32x4 -inf -inf -inf -inf))
324 (v128.const f32x4 0 0 0 0))
325 (assert_return (invoke "xor" (v128.const f32x4 -inf -inf -inf -inf)
326 (v128.const f32x4 inf inf inf inf))
327 (v128.const i32x4 0x80000000 0x80000000 0x80000000 0x80000000))
328 (assert_return (invoke "xor" (v128.const f32x4 inf inf inf inf)
329 (v128.const f32x4 inf inf inf inf))
330 (v128.const f32x4 0 0 0 0))
331 (assert_return (invoke "bitselect" (v128.const f32x4 -nan -nan -nan -nan)
332 (v128.const f32x4 -nan -nan -nan -nan)
333 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
334 (v128.const i32x4 0xffc00000 0xffc00000 0xffc00000 0xffc00000))
335 (assert_return (invoke "bitselect" (v128.const f32x4 -nan -nan -nan -nan)
336 (v128.const f32x4 nan nan nan nan)
337 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
338 (v128.const f32x4 nan nan nan nan))
339 (assert_return (invoke "bitselect" (v128.const f32x4 -nan -nan -nan -nan)
340 (v128.const f32x4 -inf -inf -inf -inf)
341 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
342 (v128.const f32x4 -inf -inf -inf -inf))
343 (assert_return (invoke "bitselect" (v128.const f32x4 -nan -nan -nan -nan)
344 (v128.const f32x4 inf inf inf inf)
345 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
346 (v128.const f32x4 inf inf inf inf))
347 (assert_return (invoke "bitselect" (v128.const f32x4 nan nan nan nan)
348 (v128.const f32x4 nan nan nan nan)
349 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
350 (v128.const f32x4 nan nan nan nan))
351 (assert_return (invoke "bitselect" (v128.const f32x4 nan nan nan nan)
352 (v128.const f32x4 -inf -inf -inf -inf)
353 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
354 (v128.const f32x4 -inf -inf -inf -inf))
355 (assert_return (invoke "bitselect" (v128.const f32x4 nan nan nan nan)
356 (v128.const f32x4 inf inf inf inf)
357 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
358 (v128.const f32x4 inf inf inf inf))
359 (assert_return (invoke "bitselect" (v128.const f32x4 -inf -inf -inf -inf)
360 (v128.const f32x4 -inf -inf -inf -inf)
361 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
362 (v128.const f32x4 -inf -inf -inf -inf))
363 (assert_return (invoke "bitselect" (v128.const f32x4 -inf -inf -inf -inf)
364 (v128.const f32x4 inf inf inf inf)
365 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
366 (v128.const f32x4 inf inf inf inf))
367 (assert_return (invoke "bitselect" (v128.const f32x4 inf inf inf inf)
368 (v128.const f32x4 inf inf inf inf)
369 (v128.const f32x4 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5 0xA5A5A5A5))
370 (v128.const f32x4 inf inf inf inf))
371 (assert_return (invoke "andnot" (v128.const f32x4 -nan -nan -nan -nan)
372 (v128.const f32x4 -nan -nan -nan -nan))
373 (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000))
374 (assert_return (invoke "andnot" (v128.const f32x4 -nan -nan -nan -nan)
375 (v128.const f32x4 nan nan nan nan))
376 (v128.const f32x4 -0 -0 -0 -0))
377 (assert_return (invoke "andnot" (v128.const f32x4 -nan -nan -nan -nan)
378 (v128.const f32x4 -inf -inf -inf -inf))
379 (v128.const i32x4 0x00400000 0x00400000 0x00400000 0x00400000))
380 (assert_return (invoke "andnot" (v128.const f32x4 -nan -nan -nan -nan)
381 (v128.const f32x4 inf inf inf inf))
382 (v128.const i32x4 0x80400000 0x80400000 0x80400000 0x80400000))
383 (assert_return (invoke "andnot" (v128.const f32x4 nan nan nan nan)
384 (v128.const f32x4 nan nan nan nan))
385 (v128.const f32x4 0x00000000 0x00000000 0x00000000 0x00000000))
386 (assert_return (invoke "andnot" (v128.const f32x4 nan nan nan nan)
387 (v128.const f32x4 -inf -inf -inf -inf))
388 (v128.const i32x4 0x00400000 0x00400000 0x00400000 0x00400000))
389 (assert_return (invoke "andnot" (v128.const f32x4 nan nan nan nan)
390 (v128.const f32x4 inf inf inf inf))
391 (v128.const i32x4 0x00400000 0x00400000 0x00400000 0x00400000))
392 (assert_return (invoke "andnot" (v128.const f32x4 -inf -inf -inf -inf)
393 (v128.const f32x4 -inf -inf -inf -inf))
394 (v128.const f32x4 0x00000000 0x00000000 0x00000000 0x00000000))
395 (assert_return (invoke "andnot" (v128.const f32x4 -inf -inf -inf -inf)
396 (v128.const f32x4 inf inf inf inf))
397 (v128.const i32x4 0x80000000 0x80000000 0x80000000 0x80000000))
398 (assert_return (invoke "andnot" (v128.const f32x4 inf inf inf inf)
399 (v128.const f32x4 inf inf inf inf))
400 (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000))
405 (assert_invalid (module (func (result v128) (v128.not (i32.const 0)))) "type mismatch")
407 (assert_invalid (module (func (result v128) (v128.and (i32.const 0) (v128.const i32x4 0 0 0 0)))) "type mismatch")
408 (assert_invalid (module (func (result v128) (v128.and (v128.const i32x4 0 0 0 0) (i32.const 0)))) "type mismatch")
409 (assert_invalid (module (func (result v128) (v128.and (i32.const 0) (i32.const 0)))) "type mismatch")
411 (assert_invalid (module (func (result v128) (v128.or (i32.const 0) (v128.const i32x4 0 0 0 0)))) "type mismatch")
412 (assert_invalid (module (func (result v128) (v128.or (v128.const i32x4 0 0 0 0) (i32.const 0)))) "type mismatch")
413 (assert_invalid (module (func (result v128) (v128.or (i32.const 0) (i32.const 0)))) "type mismatch")
415 (assert_invalid (module (func (result v128) (v128.xor (i32.const 0) (v128.const i32x4 0 0 0 0)))) "type mismatch")
416 (assert_invalid (module (func (result v128) (v128.xor (v128.const i32x4 0 0 0 0) (i32.const 0)))) "type mismatch")
417 (assert_invalid (module (func (result v128) (v128.xor (i32.const 0) (i32.const 0)))) "type mismatch")
419 (assert_invalid (module (func (result v128) (v128.bitselect (i32.const 0) (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))) "type mismatch")
420 (assert_invalid (module (func (result v128) (v128.bitselect (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0) (i32.const 0)))) "type mismatch")
421 (assert_invalid (module (func (result v128) (v128.bitselect (i32.const 0) (i32.const 0) (i32.const 0)))) "type mismatch")
423 (assert_invalid (module (func (result v128) (v128.andnot (i32.const 0) (v128.const i32x4 0 0 0 0)))) "type mismatch")
424 (assert_invalid (module (func (result v128) (v128.andnot (v128.const i32x4 0 0 0 0) (i32.const 0)))) "type mismatch")
425 (assert_invalid (module (func (result v128) (v128.andnot (i32.const 0) (i32.const 0)))) "type mismatch")
430 (func (export "v128.not-in-block")
435 (block (result v128) (v128.load (i32.const 0)))
441 (func (export "v128.and-in-block")
446 (block (result v128) (v128.load (i32.const 0)))
447 (block (result v128) (v128.load (i32.const 1)))
453 (func (export "v128.or-in-block")
458 (block (result v128) (v128.load (i32.const 0)))
459 (block (result v128) (v128.load (i32.const 1)))
465 (func (export "v128.xor-in-block")
470 (block (result v128) (v128.load (i32.const 0)))
471 (block (result v128) (v128.load (i32.const 1)))
477 (func (export "v128.bitselect-in-block")
482 (block (result v128) (v128.load (i32.const 0)))
483 (block (result v128) (v128.load (i32.const 1)))
484 (block (result v128) (v128.load (i32.const 2)))
490 (func (export "v128.andnot-in-block")
495 (block (result v128) (v128.load (i32.const 0)))
496 (block (result v128) (v128.load (i32.const 1)))
502 (func (export "nested-v128.not")
507 (v128.load (i32.const 0))
513 (func (export "nested-v128.and")
518 (v128.load (i32.const 0))
519 (v128.load (i32.const 1))
522 (v128.load (i32.const 0))
523 (v128.load (i32.const 1))
528 (v128.load (i32.const 0))
529 (v128.load (i32.const 1))
532 (v128.load (i32.const 0))
533 (v128.load (i32.const 1))
539 (func (export "nested-v128.or")
544 (v128.load (i32.const 0))
545 (v128.load (i32.const 1))
548 (v128.load (i32.const 0))
549 (v128.load (i32.const 1))
554 (v128.load (i32.const 0))
555 (v128.load (i32.const 1))
558 (v128.load (i32.const 0))
559 (v128.load (i32.const 1))
565 (func (export "nested-v128.xor")
570 (v128.load (i32.const 0))
571 (v128.load (i32.const 1))
574 (v128.load (i32.const 0))
575 (v128.load (i32.const 1))
580 (v128.load (i32.const 0))
581 (v128.load (i32.const 1))
584 (v128.load (i32.const 0))
585 (v128.load (i32.const 1))
591 (func (export "nested-v128.bitselect")
596 (v128.load (i32.const 0))
597 (v128.load (i32.const 1))
598 (v128.load (i32.const 2))
601 (v128.load (i32.const 0))
602 (v128.load (i32.const 1))
603 (v128.load (i32.const 2))
606 (v128.load (i32.const 0))
607 (v128.load (i32.const 1))
608 (v128.load (i32.const 2))
613 (v128.load (i32.const 0))
614 (v128.load (i32.const 1))
615 (v128.load (i32.const 2))
618 (v128.load (i32.const 0))
619 (v128.load (i32.const 1))
620 (v128.load (i32.const 2))
623 (v128.load (i32.const 0))
624 (v128.load (i32.const 1))
625 (v128.load (i32.const 2))
630 (v128.load (i32.const 0))
631 (v128.load (i32.const 1))
632 (v128.load (i32.const 2))
635 (v128.load (i32.const 0))
636 (v128.load (i32.const 1))
637 (v128.load (i32.const 2))
640 (v128.load (i32.const 0))
641 (v128.load (i32.const 1))
642 (v128.load (i32.const 2))
648 (func (export "nested-v128.andnot")
653 (v128.load (i32.const 0))
654 (v128.load (i32.const 1))
657 (v128.load (i32.const 0))
658 (v128.load (i32.const 1))
663 (v128.load (i32.const 0))
664 (v128.load (i32.const 1))
667 (v128.load (i32.const 0))
668 (v128.load (i32.const 1))
674 (func (export "as-param")
679 (v128.load (i32.const 0))
682 (v128.load (i32.const 1))
687 (v128.load (i32.const 0))
688 (v128.load (i32.const 1))
689 (v128.load (i32.const 2))
692 (v128.load (i32.const 0))
693 (v128.load (i32.const 1))
700 (assert_return (invoke "v128.not-in-block"))
701 (assert_return (invoke "v128.and-in-block"))
702 (assert_return (invoke "v128.or-in-block"))
703 (assert_return (invoke "v128.xor-in-block"))
704 (assert_return (invoke "v128.bitselect-in-block"))
705 (assert_return (invoke "v128.andnot-in-block"))
706 (assert_return (invoke "nested-v128.not"))
707 (assert_return (invoke "nested-v128.and"))
708 (assert_return (invoke "nested-v128.or"))
709 (assert_return (invoke "nested-v128.xor"))
710 (assert_return (invoke "nested-v128.bitselect"))
711 (assert_return (invoke "nested-v128.andnot"))
712 (assert_return (invoke "as-param"))
715 ;; Test operation with empty argument
719 (func $v128.not-arg-empty (result v128)
727 (func $v128.and-1st-arg-empty (result v128)
728 (v128.and (v128.const i32x4 0 0 0 0))
735 (func $v128.and-arg-empty (result v128)
743 (func $v128.or-1st-arg-empty (result v128)
744 (v128.or (v128.const i32x4 0 0 0 0))
751 (func $v128.or-arg-empty (result v128)
759 (func $v128.xor-1st-arg-empty (result v128)
760 (v128.xor (v128.const i32x4 0 0 0 0))
767 (func $v128.xor-arg-empty (result v128)
775 (func $v128.andnot-1st-arg-empty (result v128)
776 (v128.andnot (v128.const i32x4 0 0 0 0))
783 (func $v128.andnot-arg-empty (result v128)
791 (func $v128.bitselect-1st-arg-empty (result v128)
792 (v128.bitselect (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0))
799 (func $v128.bitselect-two-args-empty (result v128)
800 (v128.bitselect (v128.const i32x4 0 0 0 0))
807 (func $v128.bitselect-arg-empty (result v128)