f04db6770f750afe5e74c52e620e428acf25bbad
[platform/framework/web/lwnode.git] /
1 ;; Tests for i32x4 arithmetic operations on major boundary values and all special values.
2
3
4 (module
5   (func (export "i32x4.extmul_low_i16x8_s") (param v128 v128) (result v128) (i32x4.extmul_low_i16x8_s (local.get 0) (local.get 1)))
6   (func (export "i32x4.extmul_high_i16x8_s") (param v128 v128) (result v128) (i32x4.extmul_high_i16x8_s (local.get 0) (local.get 1)))
7   (func (export "i32x4.extmul_low_i16x8_u") (param v128 v128) (result v128) (i32x4.extmul_low_i16x8_u (local.get 0) (local.get 1)))
8   (func (export "i32x4.extmul_high_i16x8_u") (param v128 v128) (result v128) (i32x4.extmul_high_i16x8_u (local.get 0) (local.get 1)))
9 )
10
11
12 ;; i32x4.extmul_low_i16x8_s
13 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0)
14                                                   (v128.const i16x8 0 0 0 0 0 0 0 0))
15                                                   (v128.const i32x4 0 0 0 0))
16 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0)
17                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
18                                                   (v128.const i32x4 0 0 0 0))
19 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 1 1 1 1 1 1 1 1)
20                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
21                                                   (v128.const i32x4 1 1 1 1))
22 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0)
23                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
24                                                   (v128.const i32x4 0 0 0 0))
25 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 1 1 1 1 1 1 1 1)
26                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
27                                                   (v128.const i32x4 -1 -1 -1 -1))
28 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)
29                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
30                                                   (v128.const i32x4 1 1 1 1))
31 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383)
32                                                   (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
33                                                   (v128.const i32x4 268419072 268419072 268419072 268419072))
34 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)
35                                                   (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
36                                                   (v128.const i32x4 268435456 268435456 268435456 268435456))
37 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383)
38                                                   (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
39                                                   (v128.const i32x4 268419072 268419072 268419072 268419072))
40 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)
41                                                   (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
42                                                   (v128.const i32x4 268435456 268435456 268435456 268435456))
43 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385)
44                                                   (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
45                                                   (v128.const i32x4 268451840 268451840 268451840 268451840))
46 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765)
47                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
48                                                   (v128.const i32x4 32765 32765 32765 32765))
49 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)
50                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
51                                                   (v128.const i32x4 32766 32766 32766 32766))
52 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)
53                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
54                                                   (v128.const i32x4 -32768 -32768 -32768 -32768))
55 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766)
56                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
57                                                   (v128.const i32x4 32766 32766 32766 32766))
58 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)
59                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
60                                                   (v128.const i32x4 32767 32767 32767 32767))
61 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
62                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
63                                                   (v128.const i32x4 32768 32768 32768 32768))
64 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)
65                                                   (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767))
66                                                   (v128.const i32x4 1073676289 1073676289 1073676289 1073676289))
67 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
68                                                   (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768))
69                                                   (v128.const i32x4 1073741824 1073741824 1073741824 1073741824))
70 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
71                                                   (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767))
72                                                   (v128.const i32x4 1073709056 1073709056 1073709056 1073709056))
73 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
74                                                   (v128.const i16x8 0 0 0 0 0 0 0 0))
75                                                   (v128.const i32x4 0 0 0 0))
76 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
77                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
78                                                   (v128.const i32x4 -1 -1 -1 -1))
79 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
80                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
81                                                   (v128.const i32x4 1 1 1 1))
82 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
83                                                   (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767))
84                                                   (v128.const i32x4 -32767 -32767 -32767 -32767))
85 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
86                                                   (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768))
87                                                   (v128.const i32x4 32768 32768 32768 32768))
88 (assert_return (invoke "i32x4.extmul_low_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
89                                                   (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535))
90                                                   (v128.const i32x4 1 1 1 1))
91
92 ;; i32x4.extmul_high_i16x8_s
93 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0)
94                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
95                                                    (v128.const i32x4 0 0 0 0))
96 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0)
97                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
98                                                    (v128.const i32x4 0 0 0 0))
99 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 1 1 1 1 1 1 1 1)
100                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
101                                                    (v128.const i32x4 1 1 1 1))
102 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 0 0 0 0 0 0 0 0)
103                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
104                                                    (v128.const i32x4 0 0 0 0))
105 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 1 1 1 1 1 1 1 1)
106                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
107                                                    (v128.const i32x4 -1 -1 -1 -1))
108 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)
109                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
110                                                    (v128.const i32x4 1 1 1 1))
111 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383)
112                                                    (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
113                                                    (v128.const i32x4 268419072 268419072 268419072 268419072))
114 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)
115                                                    (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
116                                                    (v128.const i32x4 268435456 268435456 268435456 268435456))
117 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383)
118                                                    (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
119                                                    (v128.const i32x4 268419072 268419072 268419072 268419072))
120 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)
121                                                    (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
122                                                    (v128.const i32x4 268435456 268435456 268435456 268435456))
123 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385)
124                                                    (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
125                                                    (v128.const i32x4 268451840 268451840 268451840 268451840))
126 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765)
127                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
128                                                    (v128.const i32x4 32765 32765 32765 32765))
129 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)
130                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
131                                                    (v128.const i32x4 32766 32766 32766 32766))
132 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)
133                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
134                                                    (v128.const i32x4 -32768 -32768 -32768 -32768))
135 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766)
136                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
137                                                    (v128.const i32x4 32766 32766 32766 32766))
138 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)
139                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
140                                                    (v128.const i32x4 32767 32767 32767 32767))
141 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
142                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
143                                                    (v128.const i32x4 32768 32768 32768 32768))
144 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)
145                                                    (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767))
146                                                    (v128.const i32x4 1073676289 1073676289 1073676289 1073676289))
147 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
148                                                    (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768))
149                                                    (v128.const i32x4 1073741824 1073741824 1073741824 1073741824))
150 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
151                                                    (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767))
152                                                    (v128.const i32x4 1073709056 1073709056 1073709056 1073709056))
153 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
154                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
155                                                    (v128.const i32x4 0 0 0 0))
156 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
157                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
158                                                    (v128.const i32x4 -1 -1 -1 -1))
159 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
160                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
161                                                    (v128.const i32x4 1 1 1 1))
162 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
163                                                    (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767))
164                                                    (v128.const i32x4 -32767 -32767 -32767 -32767))
165 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
166                                                    (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768))
167                                                    (v128.const i32x4 32768 32768 32768 32768))
168 (assert_return (invoke "i32x4.extmul_high_i16x8_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
169                                                    (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535))
170                                                    (v128.const i32x4 1 1 1 1))
171
172 ;; i32x4.extmul_low_i16x8_u
173 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 0 0 0 0 0 0 0 0)
174                                                   (v128.const i16x8 0 0 0 0 0 0 0 0))
175                                                   (v128.const i32x4 0 0 0 0))
176 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 0 0 0 0 0 0 0 0)
177                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
178                                                   (v128.const i32x4 0 0 0 0))
179 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 1 1 1 1 1 1 1 1)
180                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
181                                                   (v128.const i32x4 1 1 1 1))
182 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 0 0 0 0 0 0 0 0)
183                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
184                                                   (v128.const i32x4 0 0 0 0))
185 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 1 1 1 1 1 1 1 1)
186                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
187                                                   (v128.const i32x4 65535 65535 65535 65535))
188 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)
189                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
190                                                   (v128.const i32x4 -131071 -131071 -131071 -131071))
191 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383)
192                                                   (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
193                                                   (v128.const i32x4 268419072 268419072 268419072 268419072))
194 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)
195                                                   (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
196                                                   (v128.const i32x4 268435456 268435456 268435456 268435456))
197 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383)
198                                                   (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
199                                                   (v128.const i32x4 -1878999040 -1878999040 -1878999040 -1878999040))
200 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)
201                                                   (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
202                                                   (v128.const i32x4 -1879048192 -1879048192 -1879048192 -1879048192))
203 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385)
204                                                   (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
205                                                   (v128.const i32x4 -1879097344 -1879097344 -1879097344 -1879097344))
206 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765)
207                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
208                                                   (v128.const i32x4 32765 32765 32765 32765))
209 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)
210                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
211                                                   (v128.const i32x4 32766 32766 32766 32766))
212 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)
213                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
214                                                   (v128.const i32x4 32768 32768 32768 32768))
215 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766)
216                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
217                                                   (v128.const i32x4 -2147385346 -2147385346 -2147385346 -2147385346))
218 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)
219                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
220                                                   (v128.const i32x4 -2147450881 -2147450881 -2147450881 -2147450881))
221 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
222                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
223                                                   (v128.const i32x4 2147450880 2147450880 2147450880 2147450880))
224 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)
225                                                   (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767))
226                                                   (v128.const i32x4 1073676289 1073676289 1073676289 1073676289))
227 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
228                                                   (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768))
229                                                   (v128.const i32x4 1073741824 1073741824 1073741824 1073741824))
230 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
231                                                   (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767))
232                                                   (v128.const i32x4 1073774592 1073774592 1073774592 1073774592))
233 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
234                                                   (v128.const i16x8 0 0 0 0 0 0 0 0))
235                                                   (v128.const i32x4 0 0 0 0))
236 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
237                                                   (v128.const i16x8 1 1 1 1 1 1 1 1))
238                                                   (v128.const i32x4 65535 65535 65535 65535))
239 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
240                                                   (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
241                                                   (v128.const i32x4 -131071 -131071 -131071 -131071))
242 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
243                                                   (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767))
244                                                   (v128.const i32x4 2147385345 2147385345 2147385345 2147385345))
245 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
246                                                   (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768))
247                                                   (v128.const i32x4 2147450880 2147450880 2147450880 2147450880))
248 (assert_return (invoke "i32x4.extmul_low_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
249                                                   (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535))
250                                                   (v128.const i32x4 -131071 -131071 -131071 -131071))
251
252 ;; i32x4.extmul_high_i16x8_u
253 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 0 0 0 0 0 0 0 0)
254                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
255                                                    (v128.const i32x4 0 0 0 0))
256 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 0 0 0 0 0 0 0 0)
257                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
258                                                    (v128.const i32x4 0 0 0 0))
259 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 1 1 1 1 1 1 1 1)
260                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
261                                                    (v128.const i32x4 1 1 1 1))
262 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 0 0 0 0 0 0 0 0)
263                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
264                                                    (v128.const i32x4 0 0 0 0))
265 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 1 1 1 1 1 1 1 1)
266                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
267                                                    (v128.const i32x4 65535 65535 65535 65535))
268 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)
269                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
270                                                    (v128.const i32x4 -131071 -131071 -131071 -131071))
271 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383)
272                                                    (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
273                                                    (v128.const i32x4 268419072 268419072 268419072 268419072))
274 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)
275                                                    (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384))
276                                                    (v128.const i32x4 268435456 268435456 268435456 268435456))
277 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383)
278                                                    (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
279                                                    (v128.const i32x4 -1878999040 -1878999040 -1878999040 -1878999040))
280 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)
281                                                    (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
282                                                    (v128.const i32x4 -1879048192 -1879048192 -1879048192 -1879048192))
283 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385)
284                                                    (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384))
285                                                    (v128.const i32x4 -1879097344 -1879097344 -1879097344 -1879097344))
286 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765)
287                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
288                                                    (v128.const i32x4 32765 32765 32765 32765))
289 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)
290                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
291                                                    (v128.const i32x4 32766 32766 32766 32766))
292 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)
293                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
294                                                    (v128.const i32x4 32768 32768 32768 32768))
295 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766)
296                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
297                                                    (v128.const i32x4 -2147385346 -2147385346 -2147385346 -2147385346))
298 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)
299                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
300                                                    (v128.const i32x4 -2147450881 -2147450881 -2147450881 -2147450881))
301 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
302                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
303                                                    (v128.const i32x4 2147450880 2147450880 2147450880 2147450880))
304 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)
305                                                    (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767))
306                                                    (v128.const i32x4 1073676289 1073676289 1073676289 1073676289))
307 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
308                                                    (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768))
309                                                    (v128.const i32x4 1073741824 1073741824 1073741824 1073741824))
310 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)
311                                                    (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767))
312                                                    (v128.const i32x4 1073774592 1073774592 1073774592 1073774592))
313 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
314                                                    (v128.const i16x8 0 0 0 0 0 0 0 0))
315                                                    (v128.const i32x4 0 0 0 0))
316 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
317                                                    (v128.const i16x8 1 1 1 1 1 1 1 1))
318                                                    (v128.const i32x4 65535 65535 65535 65535))
319 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
320                                                    (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1))
321                                                    (v128.const i32x4 -131071 -131071 -131071 -131071))
322 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
323                                                    (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767))
324                                                    (v128.const i32x4 2147385345 2147385345 2147385345 2147385345))
325 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
326                                                    (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768))
327                                                    (v128.const i32x4 2147450880 2147450880 2147450880 2147450880))
328 (assert_return (invoke "i32x4.extmul_high_i16x8_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)
329                                                    (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535))
330                                                    (v128.const i32x4 -131071 -131071 -131071 -131071))
331
332 ;; type check
333 (assert_invalid (module (func (result v128) (i32x4.extmul_low_i16x8_s (i32.const 0) (f32.const 0.0)))) "type mismatch")
334 (assert_invalid (module (func (result v128) (i32x4.extmul_high_i16x8_s (i32.const 0) (f32.const 0.0)))) "type mismatch")
335 (assert_invalid (module (func (result v128) (i32x4.extmul_low_i16x8_u (i32.const 0) (f32.const 0.0)))) "type mismatch")
336 (assert_invalid (module (func (result v128) (i32x4.extmul_high_i16x8_u (i32.const 0) (f32.const 0.0)))) "type mismatch")
337
338 ;; Test operation with empty argument
339
340 (assert_invalid
341   (module
342     (func $i32x4.extmul_low_i16x8_s-1st-arg-empty (result v128)
343       (i32x4.extmul_low_i16x8_s (v128.const i32x4 0 0 0 0))
344     )
345   )
346   "type mismatch"
347 )
348 (assert_invalid
349   (module
350     (func $i32x4.extmul_low_i16x8_s-arg-empty (result v128)
351       (i32x4.extmul_low_i16x8_s)
352     )
353   )
354   "type mismatch"
355 )
356 (assert_invalid
357   (module
358     (func $i32x4.extmul_high_i16x8_s-1st-arg-empty (result v128)
359       (i32x4.extmul_high_i16x8_s (v128.const i32x4 0 0 0 0))
360     )
361   )
362   "type mismatch"
363 )
364 (assert_invalid
365   (module
366     (func $i32x4.extmul_high_i16x8_s-arg-empty (result v128)
367       (i32x4.extmul_high_i16x8_s)
368     )
369   )
370   "type mismatch"
371 )
372 (assert_invalid
373   (module
374     (func $i32x4.extmul_low_i16x8_u-1st-arg-empty (result v128)
375       (i32x4.extmul_low_i16x8_u (v128.const i32x4 0 0 0 0))
376     )
377   )
378   "type mismatch"
379 )
380 (assert_invalid
381   (module
382     (func $i32x4.extmul_low_i16x8_u-arg-empty (result v128)
383       (i32x4.extmul_low_i16x8_u)
384     )
385   )
386   "type mismatch"
387 )
388 (assert_invalid
389   (module
390     (func $i32x4.extmul_high_i16x8_u-1st-arg-empty (result v128)
391       (i32x4.extmul_high_i16x8_u (v128.const i32x4 0 0 0 0))
392     )
393   )
394   "type mismatch"
395 )
396 (assert_invalid
397   (module
398     (func $i32x4.extmul_high_i16x8_u-arg-empty (result v128)
399       (i32x4.extmul_high_i16x8_u)
400     )
401   )
402   "type mismatch"
403 )
404