1 ;; Tests for i64x2 arithmetic operations on major boundary values and all special values.
5 (func (export "i64x2.add") (param v128 v128) (result v128) (i64x2.add (local.get 0) (local.get 1)))
6 (func (export "i64x2.sub") (param v128 v128) (result v128) (i64x2.sub (local.get 0) (local.get 1)))
7 (func (export "i64x2.mul") (param v128 v128) (result v128) (i64x2.mul (local.get 0) (local.get 1)))
8 (func (export "i64x2.neg") (param v128) (result v128) (i64x2.neg (local.get 0)))
13 (assert_return (invoke "i64x2.add" (v128.const i64x2 0 0)
14 (v128.const i64x2 0 0))
15 (v128.const i64x2 0 0))
16 (assert_return (invoke "i64x2.add" (v128.const i64x2 0 0)
17 (v128.const i64x2 1 1))
18 (v128.const i64x2 1 1))
19 (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
20 (v128.const i64x2 1 1))
21 (v128.const i64x2 2 2))
22 (assert_return (invoke "i64x2.add" (v128.const i64x2 0 0)
23 (v128.const i64x2 -1 -1))
24 (v128.const i64x2 -1 -1))
25 (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
26 (v128.const i64x2 -1 -1))
27 (v128.const i64x2 0 0))
28 (assert_return (invoke "i64x2.add" (v128.const i64x2 -1 -1)
29 (v128.const i64x2 -1 -1))
30 (v128.const i64x2 -2 -2))
31 (assert_return (invoke "i64x2.add" (v128.const i64x2 4611686018427387903 4611686018427387903)
32 (v128.const i64x2 4611686018427387904 4611686018427387904))
33 (v128.const i64x2 9223372036854775807 9223372036854775807))
34 (assert_return (invoke "i64x2.add" (v128.const i64x2 4611686018427387904 4611686018427387904)
35 (v128.const i64x2 4611686018427387904 4611686018427387904))
36 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
37 (assert_return (invoke "i64x2.add" (v128.const i64x2 -4611686018427387903 -4611686018427387903)
38 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
39 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
40 (assert_return (invoke "i64x2.add" (v128.const i64x2 -4611686018427387904 -4611686018427387904)
41 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
42 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
43 (assert_return (invoke "i64x2.add" (v128.const i64x2 -4611686018427387905 -4611686018427387905)
44 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
45 (v128.const i64x2 9223372036854775807 9223372036854775807))
46 (assert_return (invoke "i64x2.add" (v128.const i64x2 9223372036854775805 9223372036854775805)
47 (v128.const i64x2 1 1))
48 (v128.const i64x2 9223372036854775806 9223372036854775806))
49 (assert_return (invoke "i64x2.add" (v128.const i64x2 9223372036854775806 9223372036854775806)
50 (v128.const i64x2 1 1))
51 (v128.const i64x2 9223372036854775807 9223372036854775807))
52 (assert_return (invoke "i64x2.add" (v128.const i64x2 9223372036854775808 9223372036854775808)
53 (v128.const i64x2 1 1))
54 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
55 (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775806 -9223372036854775806)
56 (v128.const i64x2 -1 -1))
57 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
58 (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775807 -9223372036854775807)
59 (v128.const i64x2 -1 -1))
60 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
61 (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
62 (v128.const i64x2 -1 -1))
63 (v128.const i64x2 9223372036854775807 9223372036854775807))
64 (assert_return (invoke "i64x2.add" (v128.const i64x2 9223372036854775807 9223372036854775807)
65 (v128.const i64x2 9223372036854775807 9223372036854775807))
66 (v128.const i64x2 -2 -2))
67 (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
68 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
69 (v128.const i64x2 0 0))
70 (assert_return (invoke "i64x2.add" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
71 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
72 (v128.const i64x2 1 1))
73 (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
74 (v128.const i64x2 0 0))
75 (v128.const i64x2 -1 -1))
76 (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
77 (v128.const i64x2 1 1))
78 (v128.const i64x2 0 0))
79 (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
80 (v128.const i64x2 -1 -1))
81 (v128.const i64x2 -2 -2))
82 (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
83 (v128.const i64x2 9223372036854775807 9223372036854775807))
84 (v128.const i64x2 9223372036854775806 9223372036854775806))
85 (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
86 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
87 (v128.const i64x2 9223372036854775807 9223372036854775807))
88 (assert_return (invoke "i64x2.add" (v128.const i64x2 18446744073709551615 18446744073709551615)
89 (v128.const i64x2 18446744073709551615 18446744073709551615))
90 (v128.const i64x2 -2 -2))
91 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x3fffffffffffffff 0x3fffffffffffffff)
92 (v128.const i64x2 0x4000000000000000 0x4000000000000000))
93 (v128.const i64x2 9223372036854775807 9223372036854775807))
94 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x4000000000000000 0x4000000000000000)
95 (v128.const i64x2 0x4000000000000000 0x4000000000000000))
96 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
97 (assert_return (invoke "i64x2.add" (v128.const i64x2 -0x3fffffffffffffff -0x3fffffffffffffff)
98 (v128.const i64x2 -0x40000000fffffff -0x40000000fffffff))
99 (v128.const i64x2 -4899916394847535102 -4899916394847535102))
100 (assert_return (invoke "i64x2.add" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
101 (v128.const i64x2 -0x400000000000000 -0x400000000000000))
102 (v128.const i64x2 -4899916394579099648 -4899916394579099648))
103 (assert_return (invoke "i64x2.add" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
104 (v128.const i64x2 -0x400000000000001 -0x400000000000001))
105 (v128.const i64x2 -4899916394579099649 -4899916394579099649))
106 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
107 (v128.const i64x2 0x7ffffffffffffff 0x7ffffffffffffff))
108 (v128.const i64x2 -8646911284551352322 -8646911284551352322))
109 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
110 (v128.const i64x2 0x01 0x01))
111 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
112 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
113 (v128.const i64x2 -0x01 -0x01))
114 (v128.const i64x2 9223372036854775807 9223372036854775807))
115 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
116 (v128.const i64x2 0x8000000000000000 0x8000000000000000))
117 (v128.const i64x2 -1 -1))
118 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
119 (v128.const i64x2 0x8000000000000000 0x8000000000000000))
120 (v128.const i64x2 0 0))
121 (assert_return (invoke "i64x2.add" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
122 (v128.const i64x2 0x01 0x01))
123 (v128.const i64x2 0 0))
124 (assert_return (invoke "i64x2.add" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
125 (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff))
126 (v128.const i64x2 -2 -2))
127 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
128 (v128.const i8x16 0 0 0 0 0 0 0 0x80 0 0 0 0 0 0 0 0x80))
129 (v128.const i64x2 -1 -1))
130 (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
131 (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
132 (v128.const i64x2 0 0))
133 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
134 (v128.const i16x8 0 0 0 0x8000 0 0 0 0x8000))
135 (v128.const i64x2 -1 -1))
136 (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
137 (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff))
138 (v128.const i64x2 0 0))
139 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
140 (v128.const i32x4 0 0x80000000 0 0x80000000))
141 (v128.const i64x2 -1 -1))
142 (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
143 (v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff))
144 (v128.const i64x2 0 0))
145 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
146 (v128.const f64x2 +0.0 +0.0))
147 (v128.const i64x2 0x8000000000000000 0x8000000000000000))
148 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
149 (v128.const f64x2 -0.0 -0.0))
150 (v128.const i64x2 0 0))
151 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
152 (v128.const f64x2 1.0 1.0))
153 (v128.const i64x2 0xbff0000000000000 0xbff0000000000000))
154 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
155 (v128.const f64x2 -1.0 -1.0))
156 (v128.const i64x2 0x3ff0000000000000 0x3ff0000000000000))
157 (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
158 (v128.const f64x2 +inf +inf))
159 (v128.const i64x2 0x7ff0000000000001 0x7ff0000000000001))
160 (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
161 (v128.const f64x2 -inf -inf))
162 (v128.const i64x2 0xfff0000000000001 0xfff0000000000001))
163 (assert_return (invoke "i64x2.add" (v128.const i64x2 1 1)
164 (v128.const f64x2 nan nan))
165 (v128.const i64x2 0x7ff8000000000001 0x7ff8000000000001))
166 (assert_return (invoke "i64x2.add" (v128.const i64x2 0 1)
167 (v128.const i64x2 0 0xffffffffffffffff))
168 (v128.const i64x2 0 0))
169 (assert_return (invoke "i64x2.add" (v128.const i64x2 0 1)
170 (v128.const i64x2 0 2))
171 (v128.const i64x2 0 3))
172 (assert_return (invoke "i64x2.add" (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789)
173 (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789))
174 (v128.const i64x2 02_469_135_780_246_913_578 02_469_135_780_246_913_578))
175 (assert_return (invoke "i64x2.add" (v128.const i64x2 0x0_1234_5678_90AB_cdef 0x0_1234_5678_90AB_cdef)
176 (v128.const i64x2 0x0_90AB_cdef_1234_5678 0x0_90AB_cdef_1234_5678))
177 (v128.const i64x2 0x0_a2e0_2467_a2e0_2467 0x0_a2e0_2467_a2e0_2467))
180 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 0)
181 (v128.const i64x2 0 0))
182 (v128.const i64x2 0 0))
183 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 0)
184 (v128.const i64x2 1 1))
185 (v128.const i64x2 -1 -1))
186 (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
187 (v128.const i64x2 1 1))
188 (v128.const i64x2 0 0))
189 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 0)
190 (v128.const i64x2 -1 -1))
191 (v128.const i64x2 1 1))
192 (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
193 (v128.const i64x2 -1 -1))
194 (v128.const i64x2 2 2))
195 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -1 -1)
196 (v128.const i64x2 -1 -1))
197 (v128.const i64x2 0 0))
198 (assert_return (invoke "i64x2.sub" (v128.const i64x2 4611686018427387903 4611686018427387903)
199 (v128.const i64x2 4611686018427387904 4611686018427387904))
200 (v128.const i64x2 -1 -1))
201 (assert_return (invoke "i64x2.sub" (v128.const i64x2 4611686018427387904 4611686018427387904)
202 (v128.const i64x2 4611686018427387904 4611686018427387904))
203 (v128.const i64x2 0 0))
204 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -4611686018427387903 -4611686018427387903)
205 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
206 (v128.const i64x2 1 1))
207 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -4611686018427387904 -4611686018427387904)
208 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
209 (v128.const i64x2 0 0))
210 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -4611686018427387905 -4611686018427387905)
211 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
212 (v128.const i64x2 -1 -1))
213 (assert_return (invoke "i64x2.sub" (v128.const i64x2 9223372036854775805 9223372036854775805)
214 (v128.const i64x2 1 1))
215 (v128.const i64x2 9223372036854775804 9223372036854775804))
216 (assert_return (invoke "i64x2.sub" (v128.const i64x2 9223372036854775806 9223372036854775806)
217 (v128.const i64x2 1 1))
218 (v128.const i64x2 9223372036854775805 9223372036854775805))
219 (assert_return (invoke "i64x2.sub" (v128.const i64x2 9223372036854775808 9223372036854775808)
220 (v128.const i64x2 1 1))
221 (v128.const i64x2 9223372036854775807 9223372036854775807))
222 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775806 -9223372036854775806)
223 (v128.const i64x2 -1 -1))
224 (v128.const i64x2 -9223372036854775805 -9223372036854775805))
225 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775807 -9223372036854775807)
226 (v128.const i64x2 -1 -1))
227 (v128.const i64x2 -9223372036854775806 -9223372036854775806))
228 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
229 (v128.const i64x2 -1 -1))
230 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
231 (assert_return (invoke "i64x2.sub" (v128.const i64x2 9223372036854775807 9223372036854775807)
232 (v128.const i64x2 9223372036854775807 9223372036854775807))
233 (v128.const i64x2 0 0))
234 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
235 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
236 (v128.const i64x2 0 0))
237 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
238 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
239 (v128.const i64x2 -1 -1))
240 (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
241 (v128.const i64x2 0 0))
242 (v128.const i64x2 -1 -1))
243 (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
244 (v128.const i64x2 1 1))
245 (v128.const i64x2 -2 -2))
246 (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
247 (v128.const i64x2 -1 -1))
248 (v128.const i64x2 0 0))
249 (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
250 (v128.const i64x2 9223372036854775807 9223372036854775807))
251 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
252 (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
253 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
254 (v128.const i64x2 9223372036854775807 9223372036854775807))
255 (assert_return (invoke "i64x2.sub" (v128.const i64x2 18446744073709551615 18446744073709551615)
256 (v128.const i64x2 18446744073709551615 18446744073709551615))
257 (v128.const i64x2 0 0))
258 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x3fffffffffffffff 0x3fffffffffffffff)
259 (v128.const i64x2 0x4000000000000000 0x4000000000000000))
260 (v128.const i64x2 -1 -1))
261 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x4000000000000000 0x4000000000000000)
262 (v128.const i64x2 0x4000000000000000 0x4000000000000000))
263 (v128.const i64x2 0 0))
264 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -0x3fffffffffffffff -0x3fffffffffffffff)
265 (v128.const i64x2 -0x40000000fffffff -0x40000000fffffff))
266 (v128.const i64x2 -4323455642007240704 -4323455642007240704))
267 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
268 (v128.const i64x2 -0x400000000000000 -0x400000000000000))
269 (v128.const i64x2 -4323455642275676160 -4323455642275676160))
270 (assert_return (invoke "i64x2.sub" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
271 (v128.const i64x2 -0x400000000000001 -0x400000000000001))
272 (v128.const i64x2 -4323455642275676159 -4323455642275676159))
273 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
274 (v128.const i64x2 0x7ffffffffffffff 0x7ffffffffffffff))
275 (v128.const i64x2 8646911284551352320 8646911284551352320))
276 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
277 (v128.const i64x2 0x01 0x01))
278 (v128.const i64x2 9223372036854775806 9223372036854775806))
279 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
280 (v128.const i64x2 -0x01 -0x01))
281 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
282 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
283 (v128.const i64x2 0x8000000000000000 0x8000000000000000))
284 (v128.const i64x2 -1 -1))
285 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
286 (v128.const i64x2 0x8000000000000000 0x8000000000000000))
287 (v128.const i64x2 0 0))
288 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
289 (v128.const i64x2 0x01 0x01))
290 (v128.const i64x2 -2 -2))
291 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
292 (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff))
293 (v128.const i64x2 0 0))
294 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
295 (v128.const i8x16 0 0 0 0 0 0 0 0x80 0 0 0 0 0 0 0 0x80))
296 (v128.const i64x2 -1 -1))
297 (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
298 (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
299 (v128.const i64x2 2 2))
300 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
301 (v128.const i16x8 0 0 0 0x8000 0 0 0 0x8000))
302 (v128.const i64x2 -1 -1))
303 (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
304 (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff))
305 (v128.const i64x2 2 2))
306 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
307 (v128.const i32x4 0 0x80000000 0 0x80000000))
308 (v128.const i64x2 -1 -1))
309 (assert_return (invoke "i64x2.sub" (v128.const i64x2 1 1)
310 (v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff))
311 (v128.const i64x2 2 2))
312 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
313 (v128.const f64x2 +0.0 +0.0))
314 (v128.const i64x2 0x8000000000000000 0x8000000000000000))
315 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
316 (v128.const f64x2 -0.0 -0.0))
317 (v128.const i64x2 0 0))
318 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
319 (v128.const f64x2 1.0 1.0))
320 (v128.const i64x2 0x4010000000000000 0x4010000000000000))
321 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
322 (v128.const f64x2 -1.0 -1.0))
323 (v128.const i64x2 0xc010000000000000 0xc010000000000000))
324 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x1 0x1)
325 (v128.const f64x2 +inf +inf))
326 (v128.const i64x2 0x8010000000000001 0x8010000000000001))
327 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x1 0x1)
328 (v128.const f64x2 -inf -inf))
329 (v128.const i64x2 0x0010000000000001 0x0010000000000001))
330 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x1 0x1)
331 (v128.const f64x2 nan nan))
332 (v128.const i64x2 0x8008000000000001 0x8008000000000001))
333 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 1)
334 (v128.const i64x2 0 0xffffffffffffffff))
335 (v128.const i64x2 0 0x02))
336 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0 1)
337 (v128.const i64x2 0 2))
338 (v128.const i64x2 0 -1))
339 (assert_return (invoke "i64x2.sub" (v128.const i64x2 03_214_567_890_123_456_789 03_214_567_890_123_456_789)
340 (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789))
341 (v128.const i64x2 01_980_000_000_000_000_000 01_980_000_000_000_000_000))
342 (assert_return (invoke "i64x2.sub" (v128.const i64x2 0x0_90AB_cdef_8765_4321 0x0_90AB_cdef_8765_4321)
343 (v128.const i64x2 0x0_1234_5678_90AB_cdef 0x0_1234_5678_90AB_cdef))
344 (v128.const i64x2 0x0_7e77_7776_f6b9_7532 0x0_7e77_7776_f6b9_7532))
347 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 0)
348 (v128.const i64x2 0 0))
349 (v128.const i64x2 0 0))
350 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 0)
351 (v128.const i64x2 1 1))
352 (v128.const i64x2 0 0))
353 (assert_return (invoke "i64x2.mul" (v128.const i64x2 1 1)
354 (v128.const i64x2 1 1))
355 (v128.const i64x2 1 1))
356 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 0)
357 (v128.const i64x2 -1 -1))
358 (v128.const i64x2 0 0))
359 (assert_return (invoke "i64x2.mul" (v128.const i64x2 1 1)
360 (v128.const i64x2 -1 -1))
361 (v128.const i64x2 -1 -1))
362 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -1 -1)
363 (v128.const i64x2 -1 -1))
364 (v128.const i64x2 1 1))
365 (assert_return (invoke "i64x2.mul" (v128.const i64x2 4611686018427387903 4611686018427387903)
366 (v128.const i64x2 4611686018427387904 4611686018427387904))
367 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
368 (assert_return (invoke "i64x2.mul" (v128.const i64x2 4611686018427387904 4611686018427387904)
369 (v128.const i64x2 4611686018427387904 4611686018427387904))
370 (v128.const i64x2 0 0))
371 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -4611686018427387903 -4611686018427387903)
372 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
373 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
374 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -4611686018427387904 -4611686018427387904)
375 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
376 (v128.const i64x2 0 0))
377 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -4611686018427387905 -4611686018427387905)
378 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
379 (v128.const i64x2 4611686018427387904 4611686018427387904))
380 (assert_return (invoke "i64x2.mul" (v128.const i64x2 9223372036854775805 9223372036854775805)
381 (v128.const i64x2 1 1))
382 (v128.const i64x2 9223372036854775805 9223372036854775805))
383 (assert_return (invoke "i64x2.mul" (v128.const i64x2 9223372036854775806 9223372036854775806)
384 (v128.const i64x2 1 1))
385 (v128.const i64x2 9223372036854775806 9223372036854775806))
386 (assert_return (invoke "i64x2.mul" (v128.const i64x2 9223372036854775808 9223372036854775808)
387 (v128.const i64x2 1 1))
388 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
389 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775806 -9223372036854775806)
390 (v128.const i64x2 -1 -1))
391 (v128.const i64x2 9223372036854775806 9223372036854775806))
392 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775807 -9223372036854775807)
393 (v128.const i64x2 -1 -1))
394 (v128.const i64x2 9223372036854775807 9223372036854775807))
395 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
396 (v128.const i64x2 -1 -1))
397 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
398 (assert_return (invoke "i64x2.mul" (v128.const i64x2 9223372036854775807 9223372036854775807)
399 (v128.const i64x2 9223372036854775807 9223372036854775807))
400 (v128.const i64x2 1 1))
401 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
402 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
403 (v128.const i64x2 0 0))
404 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -9223372036854775808 -9223372036854775808)
405 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
406 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
407 (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
408 (v128.const i64x2 0 0))
409 (v128.const i64x2 0 0))
410 (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
411 (v128.const i64x2 1 1))
412 (v128.const i64x2 -1 -1))
413 (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
414 (v128.const i64x2 -1 -1))
415 (v128.const i64x2 1 1))
416 (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
417 (v128.const i64x2 9223372036854775807 9223372036854775807))
418 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
419 (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
420 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
421 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
422 (assert_return (invoke "i64x2.mul" (v128.const i64x2 18446744073709551615 18446744073709551615)
423 (v128.const i64x2 18446744073709551615 18446744073709551615))
424 (v128.const i64x2 1 1))
425 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x3fffffffffffffff 0x3fffffffffffffff)
426 (v128.const i64x2 0x4000000000000000 0x4000000000000000))
427 (v128.const i64x2 -4611686018427387904 -4611686018427387904))
428 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x4000000000000000 0x4000000000000000)
429 (v128.const i64x2 0x4000000000000000 0x4000000000000000))
430 (v128.const i64x2 0 0))
431 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -0x3fffffffffffffff -0x3fffffffffffffff)
432 (v128.const i64x2 -0x40000000fffffff -0x40000000fffffff))
433 (v128.const i64x2 -4899916394847535103 -4899916394847535103))
434 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
435 (v128.const i64x2 -0x400000000000000 -0x400000000000000))
436 (v128.const i64x2 0 0))
437 (assert_return (invoke "i64x2.mul" (v128.const i64x2 -0x4000000000000000 -0x4000000000000000)
438 (v128.const i64x2 -0x400000000000001 -0x400000000000001))
439 (v128.const i64x2 4611686018427387904 4611686018427387904))
440 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
441 (v128.const i64x2 0x7ffffffffffffff 0x7ffffffffffffff))
442 (v128.const i64x2 8646911284551352321 8646911284551352321))
443 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
444 (v128.const i64x2 0x01 0x01))
445 (v128.const i64x2 9223372036854775807 9223372036854775807))
446 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
447 (v128.const i64x2 -0x01 -0x01))
448 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
449 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff)
450 (v128.const i64x2 0x8000000000000000 0x8000000000000000))
451 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
452 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
453 (v128.const i64x2 0x8000000000000000 0x8000000000000000))
454 (v128.const i64x2 0 0))
455 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
456 (v128.const i64x2 0x01 0x01))
457 (v128.const i64x2 -1 -1))
458 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
459 (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff))
460 (v128.const i64x2 1 1))
461 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
462 (v128.const i8x16 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2 0x2))
463 (v128.const i64x2 0 0))
464 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
465 (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255))
466 (v128.const i64x2 1 1))
467 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
468 (v128.const i16x8 0 0 0 0x02 0 0 0 0x02))
469 (v128.const i64x2 0 0))
470 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
471 (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff))
472 (v128.const i64x2 1 1))
473 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x8000000000000000 0x8000000000000000)
474 (v128.const i32x4 0 0x02 0 0x02))
475 (v128.const i64x2 0 0))
476 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff)
477 (v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff))
478 (v128.const i64x2 1 1))
479 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x80000000 0x80000000)
480 (v128.const f64x2 +0.0 +0.0))
481 (v128.const i64x2 0 0))
482 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x80000000 0x80000000)
483 (v128.const f64x2 -0.0 -0.0))
484 (v128.const i64x2 0 0))
485 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x80000000 0x80000000)
486 (v128.const f64x2 1.0 1.0))
487 (v128.const i64x2 0 0))
488 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x80000000 0x80000000)
489 (v128.const f64x2 -1.0 -1.0))
490 (v128.const i64x2 0 0))
491 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x1 0x1)
492 (v128.const f64x2 +inf +inf))
493 (v128.const i64x2 0x7ff0000000000000 0x7ff0000000000000))
494 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x1 0x1)
495 (v128.const f64x2 -inf -inf))
496 (v128.const i64x2 0xfff0000000000000 0xfff0000000000000))
497 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x1 0x1)
498 (v128.const f64x2 nan nan))
499 (v128.const i64x2 0x7ff8000000000000 0x7ff8000000000000))
500 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 1)
501 (v128.const i64x2 0 0xffffffffffffffff))
502 (v128.const i64x2 0 0xffffffffffffffff))
503 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0 1)
504 (v128.const i64x2 0 2))
505 (v128.const i64x2 0 0x02))
506 (assert_return (invoke "i64x2.mul" (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789)
507 (v128.const i64x2 01_234_567_890_123_456_789 01_234_567_890_123_456_789))
508 (v128.const i64x2 09_710_478_858_155_731_897 09_710_478_858_155_731_897))
509 (assert_return (invoke "i64x2.mul" (v128.const i64x2 0x0_1234_5678_90AB_cdef 0x0_1234_5678_90AB_cdef)
510 (v128.const i64x2 0x0_90AB_cdef_8765_4321 0x0_90AB_cdef_8765_4321))
511 (v128.const i64x2 0x0_602f_05e9_e556_18cf 0x0_602f_05e9_e556_18cf))
514 (assert_return (invoke "i64x2.neg" (v128.const i64x2 0 0))
515 (v128.const i64x2 0 0))
516 (assert_return (invoke "i64x2.neg" (v128.const i64x2 1 1))
517 (v128.const i64x2 -1 -1))
518 (assert_return (invoke "i64x2.neg" (v128.const i64x2 -1 -1))
519 (v128.const i64x2 1 1))
520 (assert_return (invoke "i64x2.neg" (v128.const i64x2 9223372036854775806 9223372036854775806))
521 (v128.const i64x2 -9223372036854775806 -9223372036854775806))
522 (assert_return (invoke "i64x2.neg" (v128.const i64x2 -9223372036854775807 -9223372036854775807))
523 (v128.const i64x2 9223372036854775807 9223372036854775807))
524 (assert_return (invoke "i64x2.neg" (v128.const i64x2 -9223372036854775808 -9223372036854775808))
525 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
526 (assert_return (invoke "i64x2.neg" (v128.const i64x2 9223372036854775807 9223372036854775807))
527 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
528 (assert_return (invoke "i64x2.neg" (v128.const i64x2 18446744073709551615 18446744073709551615))
529 (v128.const i64x2 1 1))
530 (assert_return (invoke "i64x2.neg" (v128.const i64x2 0x01 0x01))
531 (v128.const i64x2 -1 -1))
532 (assert_return (invoke "i64x2.neg" (v128.const i64x2 -0x01 -0x01))
533 (v128.const i64x2 1 1))
534 (assert_return (invoke "i64x2.neg" (v128.const i64x2 -0x8000000000000000 -0x8000000000000000))
535 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
536 (assert_return (invoke "i64x2.neg" (v128.const i64x2 -0x7fffffffffffffff -0x7fffffffffffffff))
537 (v128.const i64x2 9223372036854775807 9223372036854775807))
538 (assert_return (invoke "i64x2.neg" (v128.const i64x2 0x7fffffffffffffff 0x7fffffffffffffff))
539 (v128.const i64x2 -9223372036854775807 -9223372036854775807))
540 (assert_return (invoke "i64x2.neg" (v128.const i64x2 0x8000000000000000 0x8000000000000000))
541 (v128.const i64x2 -9223372036854775808 -9223372036854775808))
542 (assert_return (invoke "i64x2.neg" (v128.const i64x2 0xffffffffffffffff 0xffffffffffffffff))
543 (v128.const i64x2 1 1))
546 (assert_invalid (module (func (result v128) (i64x2.neg (i32.const 0)))) "type mismatch")
547 (assert_invalid (module (func (result v128) (i64x2.add (i32.const 0) (f32.const 0.0)))) "type mismatch")
548 (assert_invalid (module (func (result v128) (i64x2.sub (i32.const 0) (f32.const 0.0)))) "type mismatch")
549 (assert_invalid (module (func (result v128) (i64x2.mul (i32.const 0) (f32.const 0.0)))) "type mismatch")
551 ;; Test operation with empty argument
555 (func $i64x2.neg-arg-empty (result v128)
563 (func $i64x2.add-1st-arg-empty (result v128)
564 (i64x2.add (v128.const i64x2 0 0))
571 (func $i64x2.add-arg-empty (result v128)
579 (func $i64x2.sub-1st-arg-empty (result v128)
580 (i64x2.sub (v128.const i64x2 0 0))
587 (func $i64x2.sub-arg-empty (result v128)
595 (func $i64x2.mul-1st-arg-empty (result v128)
596 (i64x2.mul (v128.const i64x2 0 0))
603 (func $i64x2.mul-arg-empty (result v128)
612 (func (export "add-sub") (param v128 v128 v128) (result v128)
613 (i64x2.add (i64x2.sub (local.get 0) (local.get 1))(local.get 2)))
614 (func (export "mul-add") (param v128 v128 v128) (result v128)
615 (i64x2.mul (i64x2.add (local.get 0) (local.get 1))(local.get 2)))
616 (func (export "mul-sub") (param v128 v128 v128) (result v128)
617 (i64x2.mul (i64x2.sub (local.get 0) (local.get 1))(local.get 2)))
618 (func (export "sub-add") (param v128 v128 v128) (result v128)
619 (i64x2.sub (i64x2.add (local.get 0) (local.get 1))(local.get 2)))
620 (func (export "add-neg") (param v128 v128) (result v128)
621 (i64x2.add (i64x2.neg (local.get 0)) (local.get 1)))
622 (func (export "mul-neg") (param v128 v128) (result v128)
623 (i64x2.mul (i64x2.neg (local.get 0)) (local.get 1)))
624 (func (export "sub-neg") (param v128 v128) (result v128)
625 (i64x2.sub (i64x2.neg (local.get 0)) (local.get 1)))
628 (assert_return (invoke "add-sub" (v128.const i64x2 0 1)
629 (v128.const i64x2 0 2)
630 (v128.const i64x2 0 2))
631 (v128.const i64x2 0 1))
632 (assert_return (invoke "mul-add" (v128.const i64x2 0 1)
633 (v128.const i64x2 0 1)
634 (v128.const i64x2 2 2))
635 (v128.const i64x2 0 4))
636 (assert_return (invoke "mul-sub" (v128.const i64x2 0 2)
637 (v128.const i64x2 0 1)
638 (v128.const i64x2 0 1))
639 (v128.const i64x2 0 1))
640 (assert_return (invoke "sub-add" (v128.const i64x2 0 1)
641 (v128.const i64x2 0 2)
642 (v128.const i64x2 0 2))
643 (v128.const i64x2 0 1))
644 (assert_return (invoke "add-neg" (v128.const i64x2 0 1)
645 (v128.const i64x2 0 1))
646 (v128.const i64x2 0 0))
647 (assert_return (invoke "mul-neg" (v128.const i64x2 0 1)
648 (v128.const i64x2 2 2))
649 (v128.const i64x2 0 -2))
650 (assert_return (invoke "sub-neg" (v128.const i64x2 0 1)
651 (v128.const i64x2 0 1))
652 (v128.const i64x2 0 -2))