1
2 /* How to compile:
3
4 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
5 -marm -o neon64-a neon64.c
6
7 or
8
9 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
10 -mthumb -o neon64-t neon64.c
11
12 */
13
14 #include <stdio.h>
15 #include <string.h>
16 #include <math.h>
17
18 #ifndef __thumb__
19 // ARM
20 #define MOVE_to_FPSCR_from_R4 \
21 ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t"
22 #define MOVE_to_R4_from_FPSCR \
23 ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t"
24 #endif
25
26 #ifdef __thumb__
27 // Thumb
28 #define MOVE_to_FPSCR_from_R4 \
29 ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t"
30 #define MOVE_to_R4_from_FPSCR \
31 ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t"
32 #endif
33
f2u(float x)34 static inline unsigned int f2u(float x) {
35 union {
36 float f;
37 unsigned int u;
38 } cvt;
39 cvt.f = x;
40 return cvt.u;
41 }
42
43 /* test macros to generate and output the result of a single instruction */
44
45 const unsigned int mem[] = {
46 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c,
47 0x13121110, 0x17161514, 0x1b1a1918, 0x1f1e1d1c,
48 0x23222120, 0x27262524, 0x2b2a2928, 0x2f2e2d2c,
49 0x33323130, 0x37363534, 0x3b3a3938, 0x3f3e3d3c
50 };
51
52 #define TESTINSN_imm(instruction, QD, imm) \
53 { \
54 unsigned int out[2]; \
55 \
56 __asm__ volatile( \
57 "vmov.i8 " #QD ", #0x55" "\n\t" \
58 instruction ", #" #imm "\n\t" \
59 "vstmia %0, {" #QD "}\n\t" \
60 : \
61 : "r" (out) \
62 : #QD, "memory" \
63 ); \
64 fflush(stdout); \
65 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \
66 instruction, out[1], out[0]); \
67 } \
68 { \
69 unsigned int out[2]; \
70 unsigned int addr = 0; \
71 \
72 __asm__ volatile( \
73 "mov %1, %2\n\t" \
74 "vldmia %1!, {" #QD "}\n\t" \
75 instruction ", #" #imm "\n\t" \
76 "vstmia %0, {" #QD "}\n\t" \
77 : \
78 : "r" (out), "r" (addr), "r" (mem) \
79 : #QD, "%2", "memory" \
80 ); \
81 fflush(stdout); \
82 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \
83 instruction, out[1], out[0]); \
84 }
85
86 #define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \
87 { \
88 unsigned int out[2]; \
89 \
90 __asm__ volatile( \
91 "vmov.i8 " #QD ", #0x55" "\n\t" \
92 "vdup." #QMtype " " #QM ", %1\n\t" \
93 instruction "\n\t" \
94 "vstmia %0, {" #QD "}\n\t" \
95 : \
96 : "r" (out), "r" (QMval) \
97 : #QD, #QM, "memory" \
98 ); \
99 fflush(stdout); \
100 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \
101 instruction, out[1], out[0], QMval); \
102 } \
103 { \
104 unsigned int out[2]; \
105 unsigned int addr = 0; \
106 \
107 __asm__ volatile( \
108 "mov %2, %3\n\t" \
109 "vldmia %2!, {" #QD "}\n\t" \
110 "vldmia %2!, {" #QM "}\n\t" \
111 instruction "\n\t" \
112 "vstmia %0, {" #QD "}\n\t" \
113 "vstmia %0, {" #QD "}\n\t" \
114 : \
115 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
116 : #QD, #QM, "%2", "memory" \
117 ); \
118 fflush(stdout); \
119 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \
120 instruction, out[1], out[0], QMval ); \
121 }
122
123 #define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \
124 { \
125 unsigned int out[2]; \
126 unsigned int fpscr; \
127 \
128 __asm__ volatile( \
129 "vmov.i8 " #QD ", #0x55" "\n\t" \
130 "mov r4, #0\n\t" \
131 MOVE_to_FPSCR_from_R4 \
132 "vdup." #QMtype " " #QM ", %2\n\t" \
133 instruction "\n\t" \
134 "vstmia %1, {" #QD "}\n\t" \
135 MOVE_to_R4_from_FPSCR \
136 "mov %0, r4" \
137 : "=r" (fpscr) \
138 : "r" (out), "r" (QMval) \
139 : #QD, #QM, "memory", "r4" \
140 ); \
141 fflush(stdout); \
142 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \
143 instruction, out[1], out[0], QMval, fpscr); \
144 } \
145 { \
146 unsigned int out[2]; \
147 unsigned int fpscr; \
148 unsigned int addr = 0; \
149 \
150 __asm__ volatile( \
151 "vmov.i8 " #QD ", #0x55" "\n\t" \
152 "mov r4, #0\n\t" \
153 MOVE_to_FPSCR_from_R4 \
154 "mov %3, %4\n\t" \
155 "vldmia %3!, {" #QM "}\n\t" \
156 instruction "\n\t" \
157 "vstmia %1, {" #QD "}\n\t" \
158 MOVE_to_R4_from_FPSCR \
159 "mov %0, r4" \
160 : "=r" (fpscr) \
161 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
162 : #QD, #QM, "memory", "r4" \
163 ); \
164 fflush(stdout); \
165 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \
166 instruction, out[1], out[0], QMval, fpscr); \
167 }
168
169 #define TESTINSN_core_to_scalar(instruction, QD, QM, QMval) \
170 { \
171 unsigned int out[2]; \
172 \
173 __asm__ volatile( \
174 "vmov.i8 " #QD ", #0x55" "\n\t" \
175 "mov " #QM ", %1\n\t" \
176 instruction "\n\t" \
177 "vstmia %0, {" #QD "}\n\t" \
178 : \
179 : "r" (out), "r" (QMval) \
180 : #QD, #QM, "memory" \
181 ); \
182 fflush(stdout); \
183 printf("%s :: Qd 0x%08x 0x%08x Qm 0x%08x\n", \
184 instruction, out[1], out[0], QMval); \
185 }
186
187 #define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \
188 { \
189 unsigned int out[2]; \
190 \
191 __asm__ volatile( \
192 "mov " #QD ", #0x55" "\n\t" \
193 "vdup." #QMtype " " #QM ", %1\n\t" \
194 instruction "\n\t" \
195 "str " #QD ", [%0]\n\t" \
196 : \
197 : "r" (out), "r" (QMval) \
198 : #QD, #QM, "memory" \
199 ); \
200 fflush(stdout); \
201 printf("%s :: Rd 0x%08x Qm (" #QMtype ")0x%08x\n", \
202 instruction, out[0], QMval); \
203 }
204
205 #define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \
206 { \
207 unsigned int out[9]; \
208 \
209 __asm__ volatile( \
210 "vmov.i8 " #QD1 ", #0x55" "\n\t" \
211 "vmov.i8 " #QD2 ", #0x55" "\n\t" \
212 "vmov.i8 " #QD3 ", #0x55" "\n\t" \
213 "vmov.i8 " #QD4 ", #0x55" "\n\t" \
214 instruction ", [%1]\n\t" \
215 "mov r4, %0\n\t" \
216 "vstmia %0!, {" #QD1 "}\n\t" \
217 "vstmia %0!, {" #QD2 "}\n\t" \
218 "vstmia %0!, {" #QD3 "}\n\t" \
219 "vstmia %0!, {" #QD4 "}\n\t" \
220 "str %1, [%2]\n\t" \
221 "mov %0, r4\n\t" \
222 : \
223 : "r" (out), "r" (mem), "r"(&out[8]) \
224 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
225 ); \
226 fflush(stdout); \
227 printf("%s :: Result %08x'%08x %08x'%08x " \
228 "%08x'%08x %08x'%08x delta %d\n", \
229 instruction, out[1], out[0], out[3], out[2], out[5], \
230 out[4], out[7], out[6], (int)out[8]-(int)mem); \
231 }
232
233 #define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \
234 { \
235 unsigned int out[9]; \
236 \
237 memset(out, 0x55, 8 * (sizeof(unsigned int)));\
238 __asm__ volatile( \
239 "mov r4, %1\n\t" \
240 "vldmia %1!, {" #QD1 "}\n\t" \
241 "vldmia %1!, {" #QD2 "}\n\t" \
242 "vldmia %1!, {" #QD3 "}\n\t" \
243 "vldmia %1!, {" #QD4 "}\n\t" \
244 "mov %1, r4\n\t" \
245 instruction ", [%0]\n\t" \
246 "str %0, [%2]\n\t" \
247 : \
248 : "r" (out), "r" (mem), "r"(&out[8]) \
249 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
250 ); \
251 fflush(stdout); \
252 printf("%s :: Result %08x'%08x %08x'%08x " \
253 "%08x'%08x %08x'%08x delta %d\n", \
254 instruction, out[1], out[0], out[3], out[2], out[5], \
255 out[4], out[7], out[6], (int)out[8]-(int)out); \
256 }
257
258 #define TESTINSN_VLDn_WB(instruction, QD1, QD2, QD3, QD4) \
259 { \
260 unsigned int out[9]; \
261 unsigned int addr = 0; \
262 \
263 __asm__ volatile( \
264 "mov %0, %2\n\t" \
265 "vmov.i8 " #QD1 ", #0x55" "\n\t" \
266 "vmov.i8 " #QD2 ", #0x55" "\n\t" \
267 "vmov.i8 " #QD3 ", #0x55" "\n\t" \
268 "vmov.i8 " #QD4 ", #0x55" "\n\t" \
269 instruction ", [%0]!\n\t" \
270 "mov r4, %1\n\t" \
271 "vstmia %1!, {" #QD1 "}\n\t" \
272 "vstmia %1!, {" #QD2 "}\n\t" \
273 "vstmia %1!, {" #QD3 "}\n\t" \
274 "vstmia %1!, {" #QD4 "}\n\t" \
275 "str %0, [%3]\n\t" \
276 "mov %1, r4\n\t" \
277 : "+r" (addr) \
278 : "r" (out), "r" (mem), "r"(&out[8]) \
279 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
280 ); \
281 fflush(stdout); \
282 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
283 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
284 instruction, out[0], out[1], out[2], out[3], out[4], \
285 out[5], out[6], out[7], (int)out[8]-(int)mem); \
286 }
287
288 #define TESTINSN_VSTn_WB(instruction, QD1, QD2, QD3, QD4) \
289 { \
290 unsigned int out[9]; \
291 unsigned int addr = 0; \
292 \
293 memset(out, 0x55, 8 * (sizeof(unsigned int)));\
294 __asm__ volatile( \
295 "mov %0, %1\n\t" \
296 "mov r4, %2\n\t" \
297 "vldmia r4!, {" #QD1 "}\n\t" \
298 "vldmia r4!, {" #QD2 "}\n\t" \
299 "vldmia r4!, {" #QD3 "}\n\t" \
300 "vldmia r4!, {" #QD4 "}\n\t" \
301 instruction ", [%0]!\n\t" \
302 "str %0, [%3]\n\t" \
303 : "+r" (addr) \
304 : "r" (out), "r" (mem), "r"(&out[8]) \
305 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", "0" \
306 ); \
307 fflush(stdout); \
308 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
309 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
310 instruction, out[0], out[1], out[2], out[3], out[4], \
311 out[5], out[6], out[7], (int)out[8]-(int)out); \
312 }
313
314 #define TESTINSN_VLDn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \
315 { \
316 unsigned int out[9]; \
317 unsigned int addr = 0; \
318 \
319 __asm__ volatile( \
320 "mov %0, %2\n\t" \
321 "vmov.i8 " #QD1 ", #0x55" "\n\t" \
322 "vmov.i8 " #QD2 ", #0x55" "\n\t" \
323 "vmov.i8 " #QD3 ", #0x55" "\n\t" \
324 "vmov.i8 " #QD4 ", #0x55" "\n\t" \
325 "mov " #RM ", %4\n\t" \
326 instruction ", [%0], " #RM "\n\t" \
327 "mov r4, %1\n\t" \
328 "vstmia %1!, {" #QD1 "}\n\t" \
329 "vstmia %1!, {" #QD2 "}\n\t" \
330 "vstmia %1!, {" #QD3 "}\n\t" \
331 "vstmia %1!, {" #QD4 "}\n\t" \
332 "str %0, [%3]\n\t" \
333 "mov %1, r4\n\t" \
334 : "+r" (addr) \
335 : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \
336 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \
337 ); \
338 fflush(stdout); \
339 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
340 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
341 instruction, out[0], out[1], out[2], out[3], out[4], \
342 out[5], out[6], out[7], (int)out[8]-(int)addr); \
343 }
344
345
346 #define TESTINSN_VSTn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \
347 { \
348 unsigned int out[9]; \
349 unsigned int addr = 0; \
350 \
351 memset(out, 0x55, 8 * (sizeof(unsigned int)));\
352 __asm__ volatile( \
353 "mov %0, %1\n\t" \
354 "mov r4, %2\n\t" \
355 "vldmia r4!, {" #QD1 "}\n\t" \
356 "vldmia r4!, {" #QD2 "}\n\t" \
357 "vldmia r4!, {" #QD3 "}\n\t" \
358 "vldmia r4!, {" #QD4 "}\n\t" \
359 "mov " #RM ", %4\n\t" \
360 instruction ", [%0], " #RM "\n\t" \
361 "str %0, [%3]\n\t" \
362 : "+r" (addr) \
363 : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \
364 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \
365 ); \
366 fflush(stdout); \
367 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \
368 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \
369 instruction, out[0], out[1], out[2], out[3], out[4], \
370 out[5], out[6], out[7], (int)out[8]-(int)out); \
371 }
372
373 #define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
374 { \
375 unsigned int out[2]; \
376 \
377 __asm__ volatile( \
378 "vmov.i8 " #QD ", #0x55" "\n\t" \
379 "vdup." #QMtype " " #QM ", %1\n\t" \
380 "vdup." #QNtype " " #QN ", %2\n\t" \
381 instruction "\n\t" \
382 "vstmia %0, {" #QD "}\n\t" \
383 : \
384 : "r" (out), "r" (QMval), "r" (QNval) \
385 : #QD, #QM, #QN, "memory" \
386 ); \
387 fflush(stdout); \
388 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
389 " Qn (" #QNtype ")0x%08x\n", \
390 instruction, out[1], out[0], QMval, QNval); \
391 } \
392 { \
393 unsigned int out[2]; \
394 unsigned int addr = 0; \
395 \
396 __asm__ volatile( \
397 "mov %0, %4\n\t" \
398 "vldmia %0!, {" #QM "}\n\t" \
399 "vmov.i8 " #QD ", #0x55" "\n\t" \
400 "vdup." #QNtype " " #QN ", %3\n\t" \
401 instruction "\n\t" \
402 "vstmia %1, {" #QD "}\n\t" \
403 : "+r" (addr) \
404 : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \
405 : #QD, #QM, #QN, "memory" \
406 ); \
407 fflush(stdout); \
408 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
409 " Qn (" #QNtype ")0x%08x\n", \
410 instruction, out[1], out[0], QMval, QNval); \
411 }
412
413 #define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
414 { \
415 unsigned int out[2]; \
416 \
417 __asm__ volatile( \
418 "vdup.i32 " #QD ", %3\n\t" \
419 "vdup." #QMtype " " #QM ", %1\n\t" \
420 "vdup." #QNtype " " #QN ", %2\n\t" \
421 instruction "\n\t" \
422 "vstmia %0, {" #QD "}\n\t" \
423 : \
424 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000) \
425 : #QD, #QM, #QN, "memory" \
426 ); \
427 fflush(stdout); \
428 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
429 " Qn (" #QNtype ")0x%08x\n", \
430 instruction, out[1], out[0], QMval, QNval); \
431 } \
432 { \
433 unsigned int out[2]; \
434 unsigned int addr = 0; \
435 \
436 __asm__ volatile( \
437 "vdup.i32 " #QD ", %3\n\t" \
438 "mov %4, %5\n\t" \
439 "vldmia %4!, {" #QM "}\n\t" \
440 "vdup." #QNtype " " #QN ", %2\n\t" \
441 instruction "\n\t" \
442 "vstmia %0, {" #QD "}\n\t" \
443 : \
444 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \
445 : #QD, #QM, #QN, "memory" \
446 ); \
447 fflush(stdout); \
448 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
449 " Qn (" #QNtype ")0x%08x\n", \
450 instruction, out[1], out[0], QMval, QNval); \
451 }
452
453 #define TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
454 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \
455 { \
456 unsigned int out[2]; \
457 \
458 __asm__ volatile( \
459 "vmov.i8 " #QD ", #0x55" "\n\t" \
460 "vdup." #QMtype " " #QM ", %1\n\t" \
461 "vdup." #QN1type " " #QN1 ", %2\n\t" \
462 "vdup." #QN2type " " #QN2 ", %3\n\t" \
463 "vdup." #QN3type " " #QN3 ", %4\n\t" \
464 "vdup." #QN4type " " #QN4 ", %5\n\t" \
465 instruction "\n\t" \
466 "vstmia %0, {" #QD "}\n\t" \
467 : \
468 : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \
469 "r" (QN4val) \
470 : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \
471 ); \
472 fflush(stdout); \
473 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
474 " Qn1 (" #QN1type ")0x%08x" \
475 " Qn2 (" #QN2type ")0x%08x" \
476 " Qn3 (" #QN3type ")0x%08x" \
477 " Qn4 (" #QN4type ")0x%08x\n", \
478 instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
479 } \
480 { \
481 unsigned int out[2]; \
482 unsigned int addr = 0; \
483 \
484 __asm__ volatile( \
485 "mov %6, %7\n\t" \
486 "vmov.i8 " #QD ", #0x55" "\n\t" \
487 "vdup." #QMtype " " #QM ", %1\n\t" \
488 "vldmia %6!, {" #QN1 "}\n\t" \
489 "vdup." #QN2type " " #QN2 ", %3\n\t" \
490 "vldmia %6!, {" #QN3 "}\n\t" \
491 "vdup." #QN4type " " #QN4 ", %5\n\t" \
492 instruction "\n\t" \
493 "vstmia %0, {" #QD "}\n\t" \
494 : \
495 : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \
496 "r" (QN4val), "r" (addr), "r" (mem) \
497 : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \
498 ); \
499 fflush(stdout); \
500 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
501 " Qn1 (" #QN1type ")0x%08x" \
502 " Qn2 (" #QN2type ")0x%08x" \
503 " Qn3 (" #QN3type ")0x%08x" \
504 " Qn4 (" #QN4type ")0x%08x\n", \
505 instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
506 }
507
508 #define TESTINSN_tbl_1(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val) \
509 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
510 QN1, QN1type, QN1val, QN1, QN1type, QN1val, QN1, QN1type, QN1val)
511 #define TESTINSN_tbl_2(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
512 QN2, QN2type, QN2val) \
513 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
514 QN2, QN2type, QN2val, QN1, QN1type, QN1val, QN2, QN2type, QN2val)
515 #define TESTINSN_tbl_3(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
516 QN2, QN2type, QN2val, QN3, QN3type, QN3val) \
517 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
518 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN2, QN2type, QN2val)
519 #define TESTINSN_tbl_4(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
520 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \
521 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
522 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val)
523
524 #define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
525 { \
526 unsigned int out[2]; \
527 unsigned int fpscr; \
528 \
529 __asm__ volatile( \
530 "vmov.i8 " #QD ", #0x55" "\n\t" \
531 "mov r4, #0\n\t" \
532 MOVE_to_FPSCR_from_R4 \
533 "vdup." #QMtype " " #QM ", %2\n\t" \
534 "vdup." #QNtype " " #QN ", %3\n\t" \
535 instruction "\n\t" \
536 "vstmia %1, {" #QD "}\n\t" \
537 MOVE_to_R4_from_FPSCR \
538 "mov %0, r4" \
539 : "=r" (fpscr) \
540 : "r" (out), "r" (QMval), "r" (QNval) \
541 : #QD, #QM, #QN, "memory", "r4" \
542 ); \
543 fflush(stdout); \
544 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
545 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \
546 instruction, out[1], out[0], QMval, QNval, fpscr); \
547 } \
548 { \
549 unsigned int out[2]; \
550 unsigned int fpscr; \
551 unsigned int addr = 0; \
552 \
553 __asm__ volatile( \
554 "vmov.i8 " #QD ", #0x55" "\n\t" \
555 "mov r4, #0\n\t" \
556 MOVE_to_FPSCR_from_R4 \
557 "mov %4, %5\n\t" \
558 "vldmia %4!, {" #QM "}\n\t" \
559 "vdup." #QNtype " " #QN ", %3\n\t" \
560 instruction "\n\t" \
561 "vstmia %1, {" #QD "}\n\t" \
562 MOVE_to_R4_from_FPSCR \
563 "mov %0, r4" \
564 : "=r" (fpscr) \
565 : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
566 : #QD, #QM, #QN, "memory", "r4" \
567 ); \
568 fflush(stdout); \
569 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
570 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \
571 instruction, out[1], out[0], QMval, QNval, fpscr); \
572 }
573
574 #define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \
575 { \
576 unsigned int out1[2]; \
577 unsigned int out2[2]; \
578 unsigned int addr = 0; \
579 \
580 __asm__ volatile( \
581 "mov %4, %5\n\t" \
582 "vldmia %4!, {" #QM "}\n\t" \
583 "vdup." #QNtype " " #QN ", %3\n\t" \
584 instruction "\n\t" \
585 "vstmia %0, {" #QM "}\n\t" \
586 "vstmia %1, {" #QN "}\n\t" \
587 : \
588 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
589 : #QM, #QN, "memory" \
590 ); \
591 fflush(stdout); \
592 printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
593 " Qn (" #QNtype ")0x%08x\n", \
594 instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
595 } \
596 { \
597 unsigned int out1[2]; \
598 unsigned int out2[2]; \
599 unsigned int addr = 0; \
600 \
601 __asm__ volatile( \
602 "mov %4, %5\n\t" \
603 "vldmia %4!, {" #QM "}\n\t" \
604 "vdup." #QNtype " " #QN ", %3\n\t" \
605 instruction "\n\t" \
606 "vstmia %0, {" #QM "}\n\t" \
607 "vstmia %1, {" #QN "}\n\t" \
608 : \
609 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
610 : #QM, #QN, "%4", "memory" \
611 ); \
612 fflush(stdout); \
613 printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \
614 " Qn (" #QNtype ")0x%08x\n", \
615 instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
616 }
617
618 #if 0
619 #define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \
620 { \
621 unsigned int out[2]; \
622 \
623 __asm__ volatile( \
624 "vmov.i8 " #QD ", #0x55" "\n\t" \
625 "vdup." #QMtype " " #QM ", %1\n\t" \
626 instruction ", #" #imm "\n\t" \
627 "vstmia %0, {" #QD "}\n\t" \
628 : \
629 : "r" (out), "r" (QMval) \
630 : #QD, #QM, "memory" \
631 ); \
632 fflush(stdout); \
633 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x", \
634 instruction, out[1], out[0], QMval); \
635 }
636 #endif
637
main(int argc,char ** argv)638 int main(int argc, char **argv)
639 {
640 fflush(stdout);
641 printf("----- VMOV (immediate) -----\n");
642 TESTINSN_imm("vmov.i32 d0", d0, 0x7);
643 TESTINSN_imm("vmov.i16 d1", d1, 0x7);
644 TESTINSN_imm("vmov.i8 d2", d2, 0x7);
645 TESTINSN_imm("vmov.i32 d5", d5, 0x700);
646 TESTINSN_imm("vmov.i16 d7", d7, 0x700);
647 TESTINSN_imm("vmov.i32 d10", d10, 0x70000);
648 TESTINSN_imm("vmov.i32 d12", d12, 0x7000000);
649 TESTINSN_imm("vmov.i32 d13", d13, 0x7FF);
650 TESTINSN_imm("vmov.i32 d14", d14, 0x7FFFF);
651 TESTINSN_imm("vmov.i64 d15", d15, 0xFF0000FF00FFFF00);
652 TESTINSN_imm("vmov.f32 d0", d0, 0.328125);
653 TESTINSN_imm("vmov.f32 d0", d0, -0.328125);
654
655 fflush(stdout);
656 printf("----- VMVN (immediate) -----\n");
657 TESTINSN_imm("vmvn.i32 d0", d0, 0x7);
658 TESTINSN_imm("vmvn.i16 d1", d1, 0x7);
659 TESTINSN_imm("vmvn.i8 d2", d2, 0x7);
660 TESTINSN_imm("vmvn.i32 d5", d5, 0x700);
661 TESTINSN_imm("vmvn.i16 d7", d7, 0x700);
662 TESTINSN_imm("vmvn.i32 d10", d10, 0x70000);
663 TESTINSN_imm("vmvn.i32 d13", d13, 0x7000000);
664 TESTINSN_imm("vmvn.i32 d11", d11, 0x7FF);
665 TESTINSN_imm("vmvn.i32 d14", d14, 0x7FFFF);
666 TESTINSN_imm("vmvn.i64 d15", d15, 0xFF0000FF00FFFF00);
667
668 fflush(stdout);
669 printf("----- VORR (immediate) -----\n");
670 TESTINSN_imm("vorr.i32 d0", d0, 0x7);
671 TESTINSN_imm("vorr.i16 d2", d2, 0x7);
672 TESTINSN_imm("vorr.i32 d8", d8, 0x700);
673 TESTINSN_imm("vorr.i16 d6", d6, 0x700);
674 TESTINSN_imm("vorr.i32 d14", d14, 0x70000);
675 TESTINSN_imm("vorr.i32 d15", d15, 0x7000000);
676
677 fflush(stdout);
678 printf("----- VBIC (immediate) -----\n");
679 TESTINSN_imm("vbic.i32 d0", d0, 0x7);
680 TESTINSN_imm("vbic.i16 d3", d3, 0x7);
681 TESTINSN_imm("vbic.i32 d5", d5, 0x700);
682 TESTINSN_imm("vbic.i16 d8", d8, 0x700);
683 TESTINSN_imm("vbic.i32 d10", d10, 0x70000);
684 TESTINSN_imm("vbic.i32 d15", d15, 0x7000000);
685
686 fflush(stdout);
687 printf("---- VMVN (register) ----\n");
688 TESTINSN_un("vmvn d0, d1", d0, d1, i32, 24);
689 TESTINSN_un("vmvn d10, d15", d10, d15, i32, 24);
690 TESTINSN_un("vmvn d0, d14", d0, d14, i32, 24);
691
692 fflush(stdout);
693 printf("---- VMOV (register) ----\n");
694 TESTINSN_un("vmov d0, d1", d0, d1, i32, 24);
695 TESTINSN_un("vmov d10, d15", d10, d15, i32, 24);
696 TESTINSN_un("vmov d0, d14", d0, d14, i32, 24);
697
698 fflush(stdout);
699 printf("---- VDUP (ARM core register) (tested indirectly) ----\n");
700 TESTINSN_un("vmov d0, d1", d0, d1, i8, 7);
701 TESTINSN_un("vmov d10, d11", d10, d11, i16, 7);
702 TESTINSN_un("vmov d0, d15", d0, d15, i32, 7);
703
704 fflush(stdout);
705 printf("---- VADD ----\n");
706 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
707 TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
708 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
709 TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
710 TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
711 TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
712 TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
713 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
714 TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
715 TESTINSN_bin("vadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
716 TESTINSN_bin("vadd.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120);
717
718 fflush(stdout);
719 printf("---- VSUB ----\n");
720 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
721 TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
722 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
723 TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
724 TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
725 TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
726 TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
727 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
728 TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
729 TESTINSN_bin("vsub.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
730 TESTINSN_bin("vsub.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120);
731
732 fflush(stdout);
733 printf("---- VAND ----\n");
734 TESTINSN_bin("vand d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
735 TESTINSN_bin("vand d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
736 TESTINSN_bin("vand d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
737 TESTINSN_bin("vand d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
738
739 fflush(stdout);
740 printf("---- VBIC ----\n");
741 TESTINSN_bin("vbic d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
742 TESTINSN_bin("vbic d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
743 TESTINSN_bin("vbic d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
744 TESTINSN_bin("vbic d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
745
746 fflush(stdout);
747 printf("---- VORR ----\n");
748 TESTINSN_bin("vorr d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
749 TESTINSN_bin("vorr d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
750 TESTINSN_bin("vorr d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
751 TESTINSN_bin("vorr d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
752
753 fflush(stdout);
754 printf("---- VORN ----\n");
755 TESTINSN_bin("vorn d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
756 TESTINSN_bin("vorn d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
757 TESTINSN_bin("vorn d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
758 TESTINSN_bin("vorn d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
759
760 fflush(stdout);
761 printf("---- VEOR ----\n");
762 TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
763 TESTINSN_bin("veor d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
764 TESTINSN_bin("veor d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
765 TESTINSN_bin("veor d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
766 TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
767 TESTINSN_bin("veor d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
768 TESTINSN_bin("veor d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
769 TESTINSN_bin("veor d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
770
771 fflush(stdout);
772 printf("---- VBSL ----\n");
773 TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
774 TESTINSN_bin("vbsl d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
775 TESTINSN_bin("vbsl d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
776 TESTINSN_bin("vbsl d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
777 TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
778 TESTINSN_bin("vbsl d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
779 TESTINSN_bin("vbsl d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
780 TESTINSN_bin("vbsl d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
781
782 fflush(stdout);
783 printf("---- VBIT ----\n");
784 TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
785 TESTINSN_bin("vbit d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
786 TESTINSN_bin("vbit d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
787 TESTINSN_bin("vbit d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
788 TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
789 TESTINSN_bin("vbit d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
790 TESTINSN_bin("vbit d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
791 TESTINSN_bin("vbit d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
792
793 fflush(stdout);
794 printf("---- VBIF ----\n");
795 TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
796 TESTINSN_bin("vbif d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
797 TESTINSN_bin("vbif d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
798 TESTINSN_bin("vbif d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
799 TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
800 TESTINSN_bin("vbif d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
801 TESTINSN_bin("vbif d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
802 TESTINSN_bin("vbif d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
803
804 fflush(stdout);
805 printf("---- VEXT ----\n");
806 TESTINSN_bin("vext.8 d0, d1, d2, #0", d0, d1, i8, 0x77, d2, i8, 0xff);
807 TESTINSN_bin("vext.8 d0, d1, d2, #1", d0, d1, i8, 0x77, d2, i8, 0xff);
808 TESTINSN_bin("vext.8 d0, d1, d2, #7", d0, d1, i8, 0x77, d2, i8, 0xff);
809 TESTINSN_bin("vext.8 d0, d1, d2, #6", d0, d1, i8, 0x77, d2, i8, 0xff);
810 TESTINSN_bin("vext.8 d10, d11, d12, #4", d10, d11, i8, 0x77, d12, i8, 0xff);
811 TESTINSN_bin("vext.8 d0, d5, d15, #5", d0, d5, i8, 0x77, d15, i8, 0xff);
812
813 fflush(stdout);
814 printf("---- VHADD ----\n");
815 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
816 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
817 TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
818 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
819 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121);
820 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
821 TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
822 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
823 TESTINSN_bin("vhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
824 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
825 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
826 TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
827 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
828 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121);
829 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
830 TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
831 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
832 TESTINSN_bin("vhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
833
834 fflush(stdout);
835 printf("---- VHSUB ----\n");
836 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
837 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
838 TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
839 TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
840 TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
841 TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
842 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
843 TESTINSN_bin("vhsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
844 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
845 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
846 TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
847 TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
848 TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
849 TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
850 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
851 TESTINSN_bin("vhsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
852
853 fflush(stdout);
854 printf("---- VQADD ----\n");
855 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
856 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
857 TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
858 TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
859 TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
860 TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
861 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
862 TESTINSN_bin_q("vqadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
863 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
864 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
865 TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
866 TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
867 TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
868 TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
869 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
870 TESTINSN_bin_q("vqadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
871
872 fflush(stdout);
873 printf("---- VQSUB ----\n");
874 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
875 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
876 TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
877 TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
878 TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
879 TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
880 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
881 TESTINSN_bin_q("vqsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
882 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
883 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
884 TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
885 TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
886 TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
887 TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
888 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
889 TESTINSN_bin_q("vqsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
890
891 fflush(stdout);
892 printf("---- VRHADD ----\n");
893 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
894 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
895 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
896 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
897 TESTINSN_bin("vrhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
898 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
899 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
900 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
901 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
902 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
903 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
904 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
905 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
906 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
907 TESTINSN_bin("vrhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
908 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
909 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
910 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
911 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
912 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
913 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
914 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
915 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
916 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
917 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
918 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
919 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
920 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
921 TESTINSN_bin("vrhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
922
923 fflush(stdout);
924 printf("---- VCGT ----\n");
925 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
926 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
927 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
928 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
929 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
930 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
931 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
932 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
933 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
934 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
935 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
936 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2);
937 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
938 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
939 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
940 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
941 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
942 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2);
943 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
944 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
945 TESTINSN_bin("vcgt.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
946 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
947 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
948 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
949 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
950 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
951 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
952 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
953 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
954 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
955 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
956 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
957 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
958 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
959 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
960 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
961 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
962 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
963 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
964 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
965 TESTINSN_bin("vcgt.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
966
967 fflush(stdout);
968 printf("---- VCGE ----\n");
969 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
970 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
971 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
972 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
973 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
974 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
975 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
976 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
977 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
978 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
979 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
980 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2);
981 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
982 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
983 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
984 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
985 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
986 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2);
987 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
988 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
989 TESTINSN_bin("vcge.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
990 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
991 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
992 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
993 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
994 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
995 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
996 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
997 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
998 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
999 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
1000 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
1001 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
1002 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
1003 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1004 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1005 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1006 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
1007 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
1008 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
1009 TESTINSN_bin("vcge.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1010
1011 fflush(stdout);
1012 printf("---- VSHL (register) ----\n");
1013 TESTINSN_bin("vshl.s8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1);
1014 TESTINSN_bin("vshl.s8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8);
1015 TESTINSN_bin("vshl.s8 d10, d31, d7", d10, d31, i32, 24, d7, i32, 4);
1016 TESTINSN_bin("vshl.s16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2);
1017 TESTINSN_bin("vshl.s16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1);
1018 TESTINSN_bin("vshl.s16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11);
1019 TESTINSN_bin("vshl.s32 d9, d12, d19", d9, d12, i32, (1 << 31) + 2, d19, i32, 2);
1020 TESTINSN_bin("vshl.s32 d11, d22, d0", d11, d22, i32, -1, d0, i32, 12);
1021 TESTINSN_bin("vshl.s32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21);
1022 TESTINSN_bin("vshl.s64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20);
1023 TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4);
1024 TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30);
1025 TESTINSN_bin("vshl.s64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab);
1026 TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5);
1027 TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff);
1028 TESTINSN_bin("vshl.u8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1);
1029 TESTINSN_bin("vshl.u8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8);
1030 TESTINSN_bin("vshl.u8 d10, d11, d7", d10, d11, i32, 24, d7, i32, 4);
1031 TESTINSN_bin("vshl.u16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2);
1032 TESTINSN_bin("vshl.u16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1);
1033 TESTINSN_bin("vshl.u16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11);
1034 TESTINSN_bin("vshl.u32 d9, d12, d15", d9, d12, i32, (1 << 31) + 2, d15, i32, 2);
1035 TESTINSN_bin("vshl.u32 d11, d2, d0", d11, d2, i32, -1, d0, i32, 12);
1036 TESTINSN_bin("vshl.u32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21);
1037 TESTINSN_bin("vshl.u64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20);
1038 TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4);
1039 TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30);
1040 TESTINSN_bin("vshl.u64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab);
1041 TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5);
1042 TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff);
1043
1044 fflush(stdout);
1045 printf("---- VQSHL (register) ----\n");
1046 TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
1047 TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
1048 TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
1049 TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
1050 TESTINSN_bin_q("vqshl.s64 d13, d14, d31", d13, d14, i32, -17, d31, i32, -26);
1051 TESTINSN_bin_q("vqshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
1052 TESTINSN_bin_q("vqshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
1053 TESTINSN_bin_q("vqshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
1054 TESTINSN_bin_q("vqshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
1055 TESTINSN_bin_q("vqshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
1056 TESTINSN_bin_q("vqshl.s32 d9, d30, d11", d9, d30, i32, (1 << 31) + 8, d11, i32, -1);
1057 TESTINSN_bin_q("vqshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
1058 TESTINSN_bin_q("vqshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
1059 TESTINSN_bin_q("vqshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
1060 TESTINSN_bin_q("vqshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
1061 TESTINSN_bin_q("vqshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
1062 TESTINSN_bin_q("vqshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
1063 TESTINSN_bin_q("vqshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
1064 TESTINSN_bin_q("vqshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
1065 TESTINSN_bin_q("vqshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
1066 TESTINSN_bin_q("vqshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
1067 TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
1068 TESTINSN_bin_q("vqshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
1069 TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1070 TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
1071 TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
1072 TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
1073 TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
1074 TESTINSN_bin_q("vqshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
1075 TESTINSN_bin_q("vqshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
1076 TESTINSN_bin_q("vqshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
1077 TESTINSN_bin_q("vqshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
1078 TESTINSN_bin_q("vqshl.u32 d12, d31, d13", d12, d31, i32, -120, d13, i32, -9);
1079 TESTINSN_bin_q("vqshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
1080 TESTINSN_bin_q("vqshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
1081 TESTINSN_bin_q("vqshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
1082 TESTINSN_bin_q("vqshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
1083 TESTINSN_bin_q("vqshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
1084 TESTINSN_bin_q("vqshl.u16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
1085 TESTINSN_bin_q("vqshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
1086 TESTINSN_bin_q("vqshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
1087 TESTINSN_bin_q("vqshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
1088 TESTINSN_bin_q("vqshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
1089 TESTINSN_bin_q("vqshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
1090 TESTINSN_bin_q("vqshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
1091 TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
1092 TESTINSN_bin_q("vqshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
1093 TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1094
1095 fflush(stdout);
1096 printf("---- VQSHL / VQSHLU (immediate) ----\n");
1097 TESTINSN_un_q("vqshl.s64 d0, d1, #1", d0, d1, i32, 1);
1098 TESTINSN_un_q("vqshl.s64 d31, d30, #1", d31, d30, i32, -127);
1099 TESTINSN_un_q("vqshl.s64 d5, d4, #0", d5, d4, i32, -127);
1100 TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, 16);
1101 TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, 16);
1102 TESTINSN_un_q("vqshl.s64 d5, d4, #59", d5, d4, i32, 16);
1103 TESTINSN_un_q("vqshl.s64 d5, d4, #58", d5, d4, i32, 16);
1104 TESTINSN_un_q("vqshl.s64 d5, d4, #17", d5, d4, i32, 16);
1105 TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, -1);
1106 TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, -1);
1107 TESTINSN_un_q("vqshl.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1108 TESTINSN_un_q("vqshl.s32 d10, d11, #1", d10, d11, i32, 1);
1109 TESTINSN_un_q("vqshl.s32 d31, d30, #1", d31, d30, i32, -127);
1110 TESTINSN_un_q("vqshl.s32 d5, d4, #0", d5, d4, i32, -127);
1111 TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, 16);
1112 TESTINSN_un_q("vqshl.s32 d5, d4, #28", d5, d4, i32, 16);
1113 TESTINSN_un_q("vqshl.s32 d5, d4, #27", d5, d4, i32, 16);
1114 TESTINSN_un_q("vqshl.s32 d5, d4, #26", d5, d4, i32, 16);
1115 TESTINSN_un_q("vqshl.s32 d5, d4, #17", d5, d4, i32, 16);
1116 TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, -1);
1117 TESTINSN_un_q("vqshl.s32 d5, d4, #29", d5, d4, i32, -1);
1118 TESTINSN_un_q("vqshl.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1119 TESTINSN_un_q("vqshl.s16 d9, d8, #1", d9, d8, i32, 1);
1120 TESTINSN_un_q("vqshl.s16 d31, d30, #1", d31, d30, i32, -127);
1121 TESTINSN_un_q("vqshl.s16 d5, d4, #0", d5, d4, i32, -127);
1122 TESTINSN_un_q("vqshl.s16 d9, d8, #15", d9, d8, i32, 16);
1123 TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, 16);
1124 TESTINSN_un_q("vqshl.s16 d5, d4, #11", d5, d4, i32, 16);
1125 TESTINSN_un_q("vqshl.s16 d5, d4, #10", d5, d4, i32, 16);
1126 TESTINSN_un_q("vqshl.s16 d5, d4, #4", d5, d4, i32, 16);
1127 TESTINSN_un_q("vqshl.s16 d5, d4, #15", d5, d4, i32, -1);
1128 TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, -1);
1129 TESTINSN_un_q("vqshl.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1130 TESTINSN_un_q("vqshl.s8 d0, d1, #1", d0, d1, i32, 1);
1131 TESTINSN_un_q("vqshl.s8 d31, d30, #1", d31, d30, i32, -127);
1132 TESTINSN_un_q("vqshl.s8 d5, d4, #0", d5, d4, i32, -127);
1133 TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, 16);
1134 TESTINSN_un_q("vqshl.s8 d25, d4, #4", d25, d4, i32, 16);
1135 TESTINSN_un_q("vqshl.s8 d5, d4, #3", d5, d4, i32, 16);
1136 TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, 16);
1137 TESTINSN_un_q("vqshl.s8 d5, d4, #1", d5, d4, i32, 16);
1138 TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, -1);
1139 TESTINSN_un_q("vqshl.s8 d5, d4, #5", d5, d4, i32, -1);
1140 TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
1141 TESTINSN_un_q("vqshl.u64 d0, d1, #1", d0, d1, i32, 1);
1142 TESTINSN_un_q("vqshl.u64 d31, d30, #1", d31, d30, i32, -127);
1143 TESTINSN_un_q("vqshl.u64 d5, d4, #0", d5, d4, i32, -127);
1144 TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, 16);
1145 TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, 16);
1146 TESTINSN_un_q("vqshl.u64 d5, d4, #59", d5, d4, i32, 16);
1147 TESTINSN_un_q("vqshl.u64 d5, d4, #58", d5, d4, i32, 16);
1148 TESTINSN_un_q("vqshl.u64 d5, d4, #17", d5, d4, i32, 16);
1149 TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, -1);
1150 TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, -1);
1151 TESTINSN_un_q("vqshl.u64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1152 TESTINSN_un_q("vqshl.u32 d10, d11, #1", d10, d11, i32, 1);
1153 TESTINSN_un_q("vqshl.u32 d31, d30, #1", d31, d30, i32, -127);
1154 TESTINSN_un_q("vqshl.u32 d5, d4, #0", d5, d4, i32, -127);
1155 TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, 16);
1156 TESTINSN_un_q("vqshl.u32 d5, d4, #28", d5, d4, i32, 16);
1157 TESTINSN_un_q("vqshl.u32 d5, d4, #27", d5, d4, i32, 16);
1158 TESTINSN_un_q("vqshl.u32 d5, d4, #26", d5, d4, i32, 16);
1159 TESTINSN_un_q("vqshl.u32 d5, d4, #17", d5, d4, i32, 16);
1160 TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, -1);
1161 TESTINSN_un_q("vqshl.u32 d5, d4, #29", d5, d4, i32, -1);
1162 TESTINSN_un_q("vqshl.u32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1163 TESTINSN_un_q("vqshl.u16 d9, d8, #1", d9, d8, i32, 1);
1164 TESTINSN_un_q("vqshl.u16 d31, d30, #1", d31, d30, i32, -127);
1165 TESTINSN_un_q("vqshl.u16 d5, d4, #0", d5, d4, i32, -127);
1166 TESTINSN_un_q("vqshl.u16 d9, d8, #15", d9, d8, i32, 16);
1167 TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, 16);
1168 TESTINSN_un_q("vqshl.u16 d5, d4, #11", d5, d4, i32, 16);
1169 TESTINSN_un_q("vqshl.u16 d5, d4, #10", d5, d4, i32, 16);
1170 TESTINSN_un_q("vqshl.u16 d5, d4, #4", d5, d4, i32, 16);
1171 TESTINSN_un_q("vqshl.u16 d5, d4, #15", d5, d4, i32, -1);
1172 TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, -1);
1173 TESTINSN_un_q("vqshl.u16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1174 TESTINSN_un_q("vqshl.u8 d0, d1, #1", d0, d1, i32, 1);
1175 TESTINSN_un_q("vqshl.u8 d31, d30, #1", d31, d30, i32, -127);
1176 TESTINSN_un_q("vqshl.u8 d5, d4, #0", d5, d4, i32, -127);
1177 TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, 16);
1178 TESTINSN_un_q("vqshl.u8 d5, d4, #4", d5, d4, i32, 16);
1179 TESTINSN_un_q("vqshl.u8 d5, d4, #3", d5, d4, i32, 16);
1180 TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, 16);
1181 TESTINSN_un_q("vqshl.u8 d5, d4, #1", d5, d4, i32, 16);
1182 TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, -1);
1183 TESTINSN_un_q("vqshl.u8 d5, d4, #5", d5, d4, i32, -1);
1184 TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
1185 TESTINSN_un_q("vqshlu.s64 d0, d1, #1", d0, d1, i32, 1);
1186 TESTINSN_un_q("vqshlu.s64 d31, d30, #1", d31, d30, i32, -127);
1187 TESTINSN_un_q("vqshlu.s64 d5, d4, #0", d5, d4, i32, -127);
1188 TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, 16);
1189 TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, 16);
1190 TESTINSN_un_q("vqshlu.s64 d5, d4, #59", d5, d4, i32, 16);
1191 TESTINSN_un_q("vqshlu.s64 d5, d4, #58", d5, d4, i32, 16);
1192 TESTINSN_un_q("vqshlu.s64 d5, d4, #17", d5, d4, i32, 16);
1193 TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, -1);
1194 TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, -1);
1195 TESTINSN_un_q("vqshlu.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1196 TESTINSN_un_q("vqshlu.s32 d10, d11, #1", d10, d11, i32, 1);
1197 TESTINSN_un_q("vqshlu.s32 d31, d30, #1", d31, d30, i32, -127);
1198 TESTINSN_un_q("vqshlu.s32 d5, d4, #0", d5, d4, i32, -127);
1199 TESTINSN_un_q("vqshlu.s32 d5, d4, #31", d5, d4, i32, 16);
1200 TESTINSN_un_q("vqshlu.s32 d25, d24, #28", d25, d24, i32, 16);
1201 TESTINSN_un_q("vqshlu.s32 d5, d4, #27", d5, d4, i32, 16);
1202 TESTINSN_un_q("vqshlu.s32 d5, d4, #26", d5, d4, i32, 16);
1203 TESTINSN_un_q("vqshlu.s32 d5, d4, #17", d5, d4, i32, 16);
1204 TESTINSN_un_q("vqshlu.s32 d5, d24, #31", d5, d24, i32, -1);
1205 TESTINSN_un_q("vqshlu.s32 d5, d4, #29", d5, d4, i32, -1);
1206 TESTINSN_un_q("vqshlu.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1207 TESTINSN_un_q("vqshlu.s16 d9, d8, #1", d9, d8, i32, 1);
1208 TESTINSN_un_q("vqshlu.s16 d31, d30, #1", d31, d30, i32, -127);
1209 TESTINSN_un_q("vqshlu.s16 d5, d4, #0", d5, d4, i32, -127);
1210 TESTINSN_un_q("vqshlu.s16 d9, d8, #15", d9, d8, i32, 16);
1211 TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, 16);
1212 TESTINSN_un_q("vqshlu.s16 d5, d4, #11", d5, d4, i32, 16);
1213 TESTINSN_un_q("vqshlu.s16 d5, d4, #10", d5, d4, i32, 16);
1214 TESTINSN_un_q("vqshlu.s16 d5, d4, #4", d5, d4, i32, 16);
1215 TESTINSN_un_q("vqshlu.s16 d15, d14, #15", d15, d14, i32, -1);
1216 TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, -1);
1217 TESTINSN_un_q("vqshlu.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
1218 TESTINSN_un_q("vqshlu.s8 d0, d1, #1", d0, d1, i32, 1);
1219 TESTINSN_un_q("vqshlu.s8 d31, d30, #1", d31, d30, i32, -127);
1220 TESTINSN_un_q("vqshlu.s8 d5, d4, #0", d5, d4, i32, -127);
1221 TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, 16);
1222 TESTINSN_un_q("vqshlu.s8 d5, d4, #4", d5, d4, i32, 16);
1223 TESTINSN_un_q("vqshlu.s8 d5, d4, #3", d5, d4, i32, 16);
1224 TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, 16);
1225 TESTINSN_un_q("vqshlu.s8 d5, d4, #1", d5, d4, i32, 16);
1226 TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, -1);
1227 TESTINSN_un_q("vqshlu.s8 d5, d4, #5", d5, d4, i32, -1);
1228 TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
1229
1230 fflush(stdout);
1231 printf("---- VQRSHL (register) ----\n");
1232 TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
1233 TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
1234 TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
1235 TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
1236 TESTINSN_bin_q("vqrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
1237 TESTINSN_bin_q("vqrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
1238 TESTINSN_bin_q("vqrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
1239 TESTINSN_bin_q("vqrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
1240 TESTINSN_bin_q("vqrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
1241 TESTINSN_bin_q("vqrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
1242 TESTINSN_bin_q("vqrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
1243 TESTINSN_bin_q("vqrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
1244 TESTINSN_bin_q("vqrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
1245 TESTINSN_bin_q("vqrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
1246 TESTINSN_bin_q("vqrshl.s16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
1247 TESTINSN_bin_q("vqrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
1248 TESTINSN_bin_q("vqrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
1249 TESTINSN_bin_q("vqrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
1250 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1251 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1252 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1253 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
1254 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
1255 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
1256 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1257 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1258 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1259 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
1260 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
1261 TESTINSN_bin_q("vqrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, 0);
1262 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
1263 TESTINSN_bin_q("vqrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
1264 TESTINSN_bin_q("vqrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
1265 TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
1266 TESTINSN_bin_q("vqrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
1267 TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1268 TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
1269 TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
1270 TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
1271 TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
1272 TESTINSN_bin_q("vqrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
1273 TESTINSN_bin_q("vqrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
1274 TESTINSN_bin_q("vqrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
1275 TESTINSN_bin_q("vqrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
1276 TESTINSN_bin_q("vqrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
1277 TESTINSN_bin_q("vqrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
1278 TESTINSN_bin_q("vqrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
1279 TESTINSN_bin_q("vqrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
1280 TESTINSN_bin_q("vqrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
1281 TESTINSN_bin_q("vqrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
1282 TESTINSN_bin_q("vqrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
1283 TESTINSN_bin_q("vqrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
1284 TESTINSN_bin_q("vqrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
1285 TESTINSN_bin_q("vqrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
1286 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
1287 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
1288 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1289 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1290 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1291 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1292 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1293 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1294 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
1295 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
1296 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
1297 TESTINSN_bin_q("vqrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
1298 TESTINSN_bin_q("vqrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
1299 TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
1300 TESTINSN_bin_q("vqrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
1301 TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1302
1303 fflush(stdout);
1304 printf("---- VRSHL (register) ----\n");
1305 TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
1306 TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
1307 TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
1308 TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
1309 TESTINSN_bin("vrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
1310 TESTINSN_bin("vrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
1311 TESTINSN_bin("vrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
1312 TESTINSN_bin("vrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
1313 TESTINSN_bin("vrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
1314 TESTINSN_bin("vrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
1315 TESTINSN_bin("vrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
1316 TESTINSN_bin("vrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
1317 TESTINSN_bin("vrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
1318 TESTINSN_bin("vrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
1319 TESTINSN_bin("vrshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
1320 TESTINSN_bin("vrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
1321 TESTINSN_bin("vrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
1322 TESTINSN_bin("vrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
1323 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1324 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1325 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1326 TESTINSN_bin("vrshl.s8 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
1327 TESTINSN_bin("vrshl.s16 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
1328 TESTINSN_bin("vrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
1329 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1330 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1331 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
1332 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
1333 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
1334 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
1335 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
1336 TESTINSN_bin("vrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
1337 TESTINSN_bin("vrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
1338 TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
1339 TESTINSN_bin("vrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
1340 TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1341 TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
1342 TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
1343 TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
1344 TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
1345 TESTINSN_bin("vrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
1346 TESTINSN_bin("vrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
1347 TESTINSN_bin("vrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
1348 TESTINSN_bin("vrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
1349 TESTINSN_bin("vrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
1350 TESTINSN_bin("vrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
1351 TESTINSN_bin("vrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
1352 TESTINSN_bin("vrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
1353 TESTINSN_bin("vrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
1354 TESTINSN_bin("vrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
1355 TESTINSN_bin("vrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
1356 TESTINSN_bin("vrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
1357 TESTINSN_bin("vrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
1358 TESTINSN_bin("vrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
1359 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
1360 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
1361 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1362 TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1363 TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
1364 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
1365 TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
1366 TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
1367 TESTINSN_bin("vrshl.u8 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
1368 TESTINSN_bin("vrshl.u16 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
1369 TESTINSN_bin("vrshl.u32 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
1370 TESTINSN_bin("vrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
1371 TESTINSN_bin("vrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
1372 TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
1373 TESTINSN_bin("vrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
1374 TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1375
1376 fflush(stdout);
1377 printf("---- VMAX (integer) ----\n");
1378 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
1379 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
1380 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
1381 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1382 TESTINSN_bin("vmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
1383 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
1384 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1385 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1386 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
1387 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1388 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1389 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
1390 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1391 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1392 TESTINSN_bin("vmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1393 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
1394 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
1395 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
1396 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1397 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
1398 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1399 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1400 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1401 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1402 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1403 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1404 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1405 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1406 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1407 TESTINSN_bin("vmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1408
1409 fflush(stdout);
1410 printf("---- VMIN (integer) ----\n");
1411 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
1412 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
1413 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1414 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
1415 TESTINSN_bin("vmin.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
1416 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
1417 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1418 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1419 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
1420 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1421 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1422 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
1423 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1424 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1425 TESTINSN_bin("vmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1426 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
1427 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
1428 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1429 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
1430 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
1431 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1432 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1433 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1434 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1435 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1436 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1437 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1438 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1439 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1440 TESTINSN_bin("vmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1441
1442 fflush(stdout);
1443 printf("---- VABD ----\n");
1444 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
1445 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
1446 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120);
1447 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1448 TESTINSN_bin("vabd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1449 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
1450 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1451 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1452 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1453 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1454 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
1455 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1456 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1457 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
1458 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1459 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1460 TESTINSN_bin("vabd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1461 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
1462 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1463 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, -140, d2, i32, 120);
1464 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1465 TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1466 TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1467 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1468 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1469 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1470 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1471 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1472 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1473 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1474 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1475 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1476 TESTINSN_bin("vabd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1477
1478 fflush(stdout);
1479 printf("---- VABA ----\n");
1480 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
1481 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
1482 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1483 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1484 TESTINSN_bin("vaba.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1485 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
1486 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1487 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1488 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1489 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1490 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
1491 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1492 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1493 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
1494 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1495 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1496 TESTINSN_bin("vaba.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1497 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
1498 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1499 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1500 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1501 TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1502 TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1503 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1504 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1505 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1506 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1507 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1508 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1509 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1510 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1511 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1512 TESTINSN_bin("vaba.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1513
1514 fflush(stdout);
1515 printf("---- VTST ----\n");
1516 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
1517 TESTINSN_bin("vtst.32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120);
1518 TESTINSN_bin("vtst.16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120);
1519 TESTINSN_bin("vtst.8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120);
1520 TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1521 TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
1522 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1523 TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2);
1524 TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
1525 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2);
1526 TESTINSN_bin("vtst.32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1527
1528 fflush(stdout);
1529 printf("---- VCEQ ----\n");
1530 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
1531 TESTINSN_bin("vceq.i32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120);
1532 TESTINSN_bin("vceq.i16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120);
1533 TESTINSN_bin("vceq.i8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120);
1534 TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1535 TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
1536 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1537 TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2);
1538 TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 14) + 1);
1539 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2);
1540 TESTINSN_bin("vceq.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
1541
1542 fflush(stdout);
1543 printf("---- VMLA ----\n");
1544 TESTINSN_bin("vmla.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120);
1545 TESTINSN_bin("vmla.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, 120);
1546 TESTINSN_bin("vmla.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
1547 TESTINSN_bin("vmla.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120);
1548 TESTINSN_bin("vmla.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
1549 TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1550 TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1551 TESTINSN_bin("vmla.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
1552 TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1553 TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1554 TESTINSN_bin("vmla.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, -120);
1555
1556 fflush(stdout);
1557 printf("---- VMLS ----\n");
1558 TESTINSN_bin("vmls.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120);
1559 TESTINSN_bin("vmls.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
1560 TESTINSN_bin("vmls.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
1561 TESTINSN_bin("vmls.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1562 TESTINSN_bin("vmls.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
1563 TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1564 TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1565 TESTINSN_bin("vmls.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
1566 TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1567 TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1568 TESTINSN_bin("vmls.i32 d10, d11, d15", d10, d11, i32, -24, d15, i32, 120);
1569
1570 fflush(stdout);
1571 printf("---- VMUL ----\n");
1572 TESTINSN_bin("vmul.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
1573 TESTINSN_bin("vmul.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
1574 TESTINSN_bin("vmul.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
1575 TESTINSN_bin("vmul.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
1576 TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
1577 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1578 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1579 TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 25) + 0xfeb2, d12, i32, (1 << 13) + 0xdf);
1580 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1581 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
1582 TESTINSN_bin("vmul.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
1583 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1584 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1585 TESTINSN_bin("vmul.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
1586 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3);
1587 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f);
1588
1589 fflush(stdout);
1590 printf("---- VMUL (by scalar) ----\n");
1591 TESTINSN_bin("vmul.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120);
1592 TESTINSN_bin("vmul.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
1593 TESTINSN_bin("vmul.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
1594 TESTINSN_bin("vmul.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1595 TESTINSN_bin("vmul.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1596 TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1597 TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
1598 TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1599 TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1600
1601 fflush(stdout);
1602 printf("---- VMLA (by scalar) ----\n");
1603 TESTINSN_bin("vmla.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120);
1604 TESTINSN_bin("vmla.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
1605 TESTINSN_bin("vmla.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
1606 TESTINSN_bin("vmla.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1607 TESTINSN_bin("vmla.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1608 TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1609 TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
1610 TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1611 TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1612
1613 fflush(stdout);
1614 printf("---- VMLS (by scalar) ----\n");
1615 TESTINSN_bin("vmls.i32 d0, d1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
1616 TESTINSN_bin("vmls.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
1617 TESTINSN_bin("vmls.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
1618 TESTINSN_bin("vmls.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1619 TESTINSN_bin("vmls.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1620 TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1621 TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
1622 TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1623 TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1624
1625 fflush(stdout);
1626 printf("---- VRSHR ----\n");
1627 TESTINSN_un("vrshr.s8 d0, d1, #0", d0, d1, i32, -1);
1628 TESTINSN_un("vrshr.s8 d0, d1, #1", d0, d1, i32, -1);
1629 TESTINSN_un("vrshr.s16 d3, d4, #2", d3, d4, i32, -0x7c);
1630 TESTINSN_un("vrshr.s32 d2, d5, #31", d2, d5, i32, -1);
1631 TESTINSN_un("vrshr.s8 d6, d7, #7", d6, d7, i32, 0xffff);
1632 TESTINSN_un("vrshr.s16 d8, d9, #12", d8, d9, i32, -10);
1633 TESTINSN_un("vrshr.s32 d10, d11, #5", d10, d11, i32, 10234);
1634 TESTINSN_un("vrshr.u8 d12, d13, #1", d12, d13, i32, -1);
1635 TESTINSN_un("vrshr.u16 d14, d15, #11", d14, d15, i32, -1);
1636 TESTINSN_un("vrshr.u32 d10, d11, #9", d10, d11, i32, 1000);
1637 TESTINSN_un("vrshr.u8 d7, d13, #7", d7, d13, i32, -1);
1638 TESTINSN_un("vrshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
1639 TESTINSN_un("vrshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
1640 TESTINSN_un("vrshr.u64 d0, d1, #42", d0, d1, i32, -1);
1641 TESTINSN_un("vrshr.s64 d6, d7, #12", d6, d7, i32, 0xfac);
1642 TESTINSN_un("vrshr.u64 d8, d4, #9", d8, d4, i32, 13560);
1643 TESTINSN_un("vrshr.s64 d9, d12, #11", d9, d12, i32, 98710);
1644
1645 fflush(stdout);
1646 printf("---- VRSRA ----\n");
1647 TESTINSN_un("vrsra.s8 d0, d1, #1", d0, d1, i32, -1);
1648 TESTINSN_un("vrsra.s16 d3, d4, #2", d3, d4, i32, -0x7c);
1649 TESTINSN_un("vrsra.s32 d2, d5, #31", d2, d5, i32, -1);
1650 TESTINSN_un("vrsra.s8 d6, d7, #7", d6, d7, i32, 0xffff);
1651 TESTINSN_un("vrsra.s16 d8, d9, #12", d8, d9, i32, -10);
1652 TESTINSN_un("vrsra.s32 d10, d11, #5", d10, d11, i32, 10234);
1653 TESTINSN_un("vrsra.u8 d12, d13, #1", d12, d13, i32, -1);
1654 TESTINSN_un("vrsra.u16 d14, d15, #11", d14, d15, i32, -1);
1655 TESTINSN_un("vrsra.u32 d10, d11, #9", d10, d11, i32, 1000);
1656 TESTINSN_un("vrsra.u8 d7, d13, #7", d7, d13, i32, -1);
1657 TESTINSN_un("vrsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
1658 TESTINSN_un("vrsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
1659 TESTINSN_un("vrsra.u64 d0, d1, #42", d0, d1, i32, -1);
1660 TESTINSN_un("vrsra.s64 d6, d7, #12", d6, d7, i32, 0xfac);
1661 TESTINSN_un("vrsra.u64 d8, d4, #9", d8, d4, i32, 13560);
1662 TESTINSN_un("vrsra.s64 d9, d12, #11", d9, d12, i32, 98710);
1663
1664 fflush(stdout);
1665 printf("---- VSHR ----\n");
1666 TESTINSN_un("vshr.s8 d0, d1, #0", d0, d1, i32, -1);
1667 TESTINSN_un("vshr.s8 d0, d1, #1", d0, d1, i32, -1);
1668 TESTINSN_un("vshr.s16 d3, d4, #2", d3, d4, i32, -0x7c);
1669 TESTINSN_un("vshr.s32 d2, d5, #31", d2, d5, i32, -1);
1670 TESTINSN_un("vshr.s8 d6, d7, #7", d6, d7, i32, 0xffff);
1671 TESTINSN_un("vshr.s16 d8, d9, #12", d8, d9, i32, -10);
1672 TESTINSN_un("vshr.s32 d10, d11, #5", d10, d11, i32, 10234);
1673 TESTINSN_un("vshr.u8 d12, d13, #1", d12, d13, i32, -1);
1674 TESTINSN_un("vshr.u16 d14, d15, #11", d14, d15, i32, -1);
1675 TESTINSN_un("vshr.u32 d10, d11, #9", d10, d11, i32, 1000);
1676 TESTINSN_un("vshr.u8 d7, d13, #7", d7, d13, i32, -1);
1677 TESTINSN_un("vshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
1678 TESTINSN_un("vshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
1679 TESTINSN_un("vshr.u64 d0, d1, #42", d0, d1, i32, -1);
1680 TESTINSN_un("vshr.s64 d6, d7, #12", d6, d7, i32, 0xfac);
1681 TESTINSN_un("vshr.u64 d8, d4, #9", d8, d4, i32, 13560);
1682 TESTINSN_un("vshr.s64 d9, d12, #11", d9, d12, i32, 98710);
1683
1684 fflush(stdout);
1685 printf("---- VSRA ----\n");
1686 TESTINSN_un("vsra.s8 d0, d1, #1", d0, d1, i32, -1);
1687 TESTINSN_un("vsra.s16 d3, d4, #2", d3, d4, i32, -0x7c);
1688 TESTINSN_un("vsra.s32 d2, d5, #31", d2, d5, i32, -1);
1689 TESTINSN_un("vsra.s8 d6, d7, #7", d6, d7, i32, 0xffff);
1690 TESTINSN_un("vsra.s16 d8, d9, #12", d8, d9, i32, -10);
1691 TESTINSN_un("vsra.s32 d10, d11, #5", d10, d11, i32, 10234);
1692 TESTINSN_un("vsra.u8 d12, d13, #1", d12, d13, i32, -1);
1693 TESTINSN_un("vsra.u16 d14, d15, #11", d14, d15, i32, -1);
1694 TESTINSN_un("vsra.u32 d10, d11, #9", d10, d11, i32, 1000);
1695 TESTINSN_un("vsra.u8 d7, d13, #7", d7, d13, i32, -1);
1696 TESTINSN_un("vsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
1697 TESTINSN_un("vsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
1698 TESTINSN_un("vsra.u64 d0, d1, #42", d0, d1, i32, -1);
1699 TESTINSN_un("vsra.s64 d6, d7, #12", d6, d7, i32, 0xfac);
1700 TESTINSN_un("vsra.u64 d8, d4, #9", d8, d4, i32, 13560);
1701 TESTINSN_un("vsra.s64 d9, d12, #11", d9, d12, i32, 98710);
1702
1703 fflush(stdout);
1704 printf("---- VSRI ----\n");
1705 TESTINSN_un("vsri.16 d0, d1, #1", d0, d1, i32, -1);
1706 TESTINSN_un("vsri.16 d3, d4, #2", d3, d4, i32, -0x7c);
1707 TESTINSN_un("vsri.32 d2, d5, #31", d2, d5, i32, -1);
1708 TESTINSN_un("vsri.8 d6, d7, #7", d6, d7, i32, 0xffff);
1709 TESTINSN_un("vsri.16 d8, d9, #12", d8, d9, i32, -10);
1710 TESTINSN_un("vsri.32 d10, d11, #5", d10, d11, i32, 10234);
1711 TESTINSN_un("vsri.8 d12, d13, #1", d12, d13, i32, -1);
1712 TESTINSN_un("vsri.16 d14, d15, #11", d14, d15, i32, -1);
1713 TESTINSN_un("vsri.32 d10, d11, #9", d10, d11, i32, 1000);
1714 TESTINSN_un("vsri.8 d7, d13, #7", d7, d13, i32, -1);
1715 TESTINSN_un("vsri.16 d8, d1, #5", d8, d1, i32, 0xabcf);
1716 TESTINSN_un("vsri.32 d12, d3, #15", d12, d3, i32, -0x1b0);
1717 TESTINSN_un("vsri.64 d0, d1, #42", d0, d1, i32, -1);
1718 TESTINSN_un("vsri.64 d6, d7, #12", d6, d7, i32, 0xfac);
1719 TESTINSN_un("vsri.64 d8, d4, #9", d8, d4, i32, 13560);
1720 TESTINSN_un("vsri.64 d9, d12, #11", d9, d12, i32, 98710);
1721
1722 fflush(stdout);
1723 printf("---- VMOV (ARM core register to scalar) ----\n");
1724 TESTINSN_core_to_scalar("vmov.32 d0[0], r5", d0, r5, 13);
1725 TESTINSN_core_to_scalar("vmov.32 d1[1], r3", d1, r3, 12);
1726 TESTINSN_core_to_scalar("vmov.16 d0[0], r5", d0, r5, 13);
1727 TESTINSN_core_to_scalar("vmov.16 d2[2], r6", d2, r6, 14);
1728 TESTINSN_core_to_scalar("vmov.16 d3[3], r1", d3, r1, 17);
1729 TESTINSN_core_to_scalar("vmov.8 d0[0], r5", d0, r5, 13);
1730 TESTINSN_core_to_scalar("vmov.8 d0[1], r5", d0, r5, 13);
1731 TESTINSN_core_to_scalar("vmov.8 d0[2], r5", d0, r5, 13);
1732 TESTINSN_core_to_scalar("vmov.8 d0[3], r5", d0, r5, 13);
1733 TESTINSN_core_to_scalar("vmov.8 d0[4], r5", d0, r5, 13);
1734 TESTINSN_core_to_scalar("vmov.8 d0[5], r5", d0, r5, 13);
1735 TESTINSN_core_to_scalar("vmov.8 d0[6], r5", d0, r5, 13);
1736 TESTINSN_core_to_scalar("vmov.8 d31[7], r5", d31, r5, 13);
1737
1738 fflush(stdout);
1739 printf("---- VMOV (scalar toARM core register) ----\n");
1740 TESTINSN_scalar_to_core("vmov.32 r5, d0[0]", r5, d0, i32, 0x11223344);
1741 TESTINSN_scalar_to_core("vmov.32 r6, d5[1]", r6, d5, i32, 0x11223344);
1742 TESTINSN_scalar_to_core("vmov.u16 r5, d31[0]", r5, d31, i32, 0x11223344);
1743 TESTINSN_scalar_to_core("vmov.u16 r5, d30[1]", r5, d30, i32, 0x11223344);
1744 TESTINSN_scalar_to_core("vmov.u16 r5, d31[2]", r5, d31, i32, 0x11223344);
1745 TESTINSN_scalar_to_core("vmov.u16 r5, d31[3]", r5, d31, i32, 0x11223344);
1746 TESTINSN_scalar_to_core("vmov.u8 r2, d4[0]", r2, d4, i32, 0x11223344);
1747 TESTINSN_scalar_to_core("vmov.u8 r2, d4[1]", r2, d4, i32, 0x11223344);
1748 TESTINSN_scalar_to_core("vmov.u8 r2, d4[2]", r2, d4, i32, 0x11223344);
1749 TESTINSN_scalar_to_core("vmov.u8 r2, d4[3]", r2, d4, i32, 0x11223344);
1750 TESTINSN_scalar_to_core("vmov.u8 r2, d4[4]", r2, d4, i32, 0x11223344);
1751 TESTINSN_scalar_to_core("vmov.u8 r2, d4[5]", r2, d4, i32, 0x11223344);
1752 TESTINSN_scalar_to_core("vmov.u8 r2, d4[6]", r2, d4, i32, 0x11223344);
1753 TESTINSN_scalar_to_core("vmov.u8 r2, d4[7]", r2, d4, i32, 0x11223344);
1754 TESTINSN_scalar_to_core("vmov.s16 r5, d31[0]", r5, d31, i8, 128);
1755 TESTINSN_scalar_to_core("vmov.s16 r5, d30[1]", r5, d30, i8, 128);
1756 TESTINSN_scalar_to_core("vmov.s16 r5, d31[2]", r5, d31, i8, 128);
1757 TESTINSN_scalar_to_core("vmov.s16 r5, d31[3]", r5, d31, i8, 128);
1758 TESTINSN_scalar_to_core("vmov.s8 r2, d4[0]", r2, d4, i8, 128);
1759 TESTINSN_scalar_to_core("vmov.s8 r2, d4[1]", r2, d4, i8, 128);
1760 TESTINSN_scalar_to_core("vmov.s8 r2, d4[2]", r2, d4, i8, 128);
1761 TESTINSN_scalar_to_core("vmov.s8 r2, d4[3]", r2, d4, i8, 128);
1762 TESTINSN_scalar_to_core("vmov.s8 r2, d4[4]", r2, d4, i8, 128);
1763 TESTINSN_scalar_to_core("vmov.s8 r2, d4[5]", r2, d4, i8, 130);
1764 TESTINSN_scalar_to_core("vmov.s8 r2, d4[6]", r2, d4, i8, 129);
1765 TESTINSN_scalar_to_core("vmov.s8 r2, d4[7]", r2, d4, i8, 131);
1766
1767 fflush(stdout);
1768 printf("---- VLD1 (multiple single elements) ----\n");
1769 TESTINSN_VLDn("vld1.8 {d0}", d0, d0, d0, d0);
1770 TESTINSN_VLDn("vld1.16 {d0}", d0, d0, d0, d0);
1771 TESTINSN_VLDn("vld1.32 {d0}", d0, d0, d0, d0);
1772 TESTINSN_VLDn("vld1.64 {d0}", d0, d0, d0, d0);
1773 TESTINSN_VLDn("vld1.8 {d9}", d9, d9, d9, d9);
1774 TESTINSN_VLDn("vld1.16 {d17}", d17, d17, d17, d17);
1775 TESTINSN_VLDn("vld1.32 {d31}", d31, d31, d31, d31);
1776 TESTINSN_VLDn("vld1.64 {d14}", d14, d14, d14, d14);
1777 TESTINSN_VLDn("vld1.8 {d0-d1}", d0, d1, d0, d1);
1778 TESTINSN_VLDn("vld1.16 {d0-d1}", d0, d1, d0, d1);
1779 TESTINSN_VLDn("vld1.32 {d5-d6}", d5, d6, d5, d6);
1780 TESTINSN_VLDn("vld1.64 {d30-d31}", d30, d31, d30, d31);
1781 TESTINSN_VLDn("vld1.8 {d0-d2}", d0, d1, d2, d0);
1782 TESTINSN_VLDn("vld1.16 {d0-d2}", d0, d1, d2, d0);
1783 TESTINSN_VLDn("vld1.32 {d0-d2}", d0, d1, d2, d0);
1784 TESTINSN_VLDn("vld1.64 {d0-d2}", d0, d1, d2, d0);
1785 TESTINSN_VLDn("vld1.8 {d0-d3}", d0, d1, d2, d3);
1786 TESTINSN_VLDn("vld1.16 {d0-d3}", d0, d1, d2, d3);
1787 TESTINSN_VLDn("vld1.32 {d0-d3}", d0, d1, d2, d3);
1788 TESTINSN_VLDn("vld1.64 {d0-d3}", d0, d1, d2, d3);
1789
1790 fflush(stdout);
1791 printf("---- VLD1 (single element to one lane) ----\n");
1792 TESTINSN_VLDn("vld1.32 {d0[0]}", d0, d0, d0, d0);
1793 TESTINSN_VLDn("vld1.32 {d0[1]}", d0, d0, d0, d0);
1794 TESTINSN_VLDn("vld1.16 {d1[0]}", d1, d1, d1, d1);
1795 TESTINSN_VLDn("vld1.16 {d1[1]}", d1, d1, d1, d1);
1796 TESTINSN_VLDn("vld1.16 {d1[2]}", d1, d1, d1, d1);
1797 TESTINSN_VLDn("vld1.16 {d1[3]}", d1, d1, d1, d1);
1798 TESTINSN_VLDn("vld1.8 {d0[7]}", d0, d0, d0, d0);
1799 TESTINSN_VLDn("vld1.8 {d1[6]}", d1, d1, d1, d1);
1800 TESTINSN_VLDn("vld1.8 {d0[5]}", d0, d0, d0, d0);
1801 TESTINSN_VLDn("vld1.8 {d0[4]}", d0, d0, d0, d0);
1802 TESTINSN_VLDn("vld1.8 {d20[3]}", d20, d20, d20, d20);
1803 TESTINSN_VLDn("vld1.8 {d0[2]}", d0, d0, d0, d0);
1804 TESTINSN_VLDn("vld1.8 {d17[1]}", d17, d17, d17, d17);
1805 TESTINSN_VLDn("vld1.8 {d30[0]}", d30, d30, d30, d30);
1806
1807 fflush(stdout);
1808 printf("---- VLD1 (single element to all lanes) ----\n");
1809 TESTINSN_VLDn("vld1.8 {d0[]}", d0, d0, d0, d0);
1810 TESTINSN_VLDn("vld1.16 {d0[]}", d0, d0, d0, d0);
1811 TESTINSN_VLDn("vld1.32 {d0[]}", d0, d0, d0, d0);
1812 TESTINSN_VLDn("vld1.8 {d9[]}", d9, d9, d9, d9);
1813 TESTINSN_VLDn("vld1.16 {d17[]}", d17, d17, d17, d17);
1814 TESTINSN_VLDn("vld1.32 {d31[]}", d31, d31, d31, d31);
1815 TESTINSN_VLDn("vld1.8 {d0[],d1[]}", d0, d1, d0, d1);
1816 TESTINSN_VLDn("vld1.16 {d0[],d1[]}", d0, d1, d0, d1);
1817 TESTINSN_VLDn("vld1.32 {d5[],d6[]}", d5, d6, d5, d6);
1818
1819 fflush(stdout);
1820 printf("---- VLD2 (multiple 2-elements) ----\n");
1821 TESTINSN_VLDn("vld2.8 {d30-d31}", d30, d31, d30, d31);
1822 TESTINSN_VLDn("vld2.16 {d0-d1}", d0, d1, d0, d1);
1823 TESTINSN_VLDn("vld2.32 {d0-d1}", d0, d1, d0, d1);
1824 TESTINSN_VLDn("vld2.8 {d10,d12}", d10, d12, d10, d12);
1825 TESTINSN_VLDn("vld2.16 {d20,d22}", d20, d22, d20, d22);
1826 TESTINSN_VLDn("vld2.32 {d0,d2}", d0, d2, d0, d2);
1827 TESTINSN_VLDn("vld2.8 {d0-d3}", d0, d1, d2, d3);
1828 TESTINSN_VLDn("vld2.16 {d20-d23}", d20, d21, d22, d23);
1829 TESTINSN_VLDn("vld2.32 {d0-d3}", d0, d1, d2, d3);
1830
1831 fflush(stdout);
1832 printf("---- VLD2 (single 2-element structure to one lane) ----\n");
1833 TESTINSN_VLDn("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
1834 TESTINSN_VLDn("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
1835 TESTINSN_VLDn("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
1836 TESTINSN_VLDn("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
1837 TESTINSN_VLDn("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
1838 TESTINSN_VLDn("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
1839 TESTINSN_VLDn("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
1840 TESTINSN_VLDn("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
1841 TESTINSN_VLDn("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
1842 TESTINSN_VLDn("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
1843 TESTINSN_VLDn("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
1844 TESTINSN_VLDn("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
1845 TESTINSN_VLDn("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
1846 TESTINSN_VLDn("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
1847 TESTINSN_VLDn("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
1848 TESTINSN_VLDn("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
1849 TESTINSN_VLDn("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
1850 TESTINSN_VLDn("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
1851 TESTINSN_VLDn("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
1852 TESTINSN_VLDn("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
1853
1854 fflush(stdout);
1855 printf("---- VLD2 (2-elements to all lanes) ----\n");
1856 TESTINSN_VLDn("vld2.8 {d0[],d1[]}", d0, d1, d0, d1);
1857 TESTINSN_VLDn("vld2.16 {d0[],d1[]}", d0, d1, d0, d1);
1858 TESTINSN_VLDn("vld2.32 {d0[],d1[]}", d0, d1, d0, d1);
1859 TESTINSN_VLDn("vld2.8 {d9[],d11[]}", d9, d11, d9, d11);
1860 TESTINSN_VLDn("vld2.16 {d17[],d18[]}", d17, d18, d17, d18);
1861 TESTINSN_VLDn("vld2.32 {d30[],d31[]}", d30, d31, d30, d31);
1862 TESTINSN_VLDn("vld2.8 {d0[],d2[]}", d0, d2, d0, d2);
1863 TESTINSN_VLDn("vld2.16 {d0[],d2[]}", d0, d2, d0, d2);
1864 TESTINSN_VLDn("vld2.32 {d5[],d7[]}", d5, d7, d5, d7);
1865
1866 fflush(stdout);
1867 printf("---- VLD3 (multiple 3-elements) ----\n");
1868 TESTINSN_VLDn("vld3.8 {d20-d22}", d20, d21, d22, d20);
1869 TESTINSN_VLDn("vld3.16 {d0-d2}", d0, d1, d2, d0);
1870 TESTINSN_VLDn("vld3.32 {d0-d2}", d0, d1, d2, d0);
1871 TESTINSN_VLDn("vld3.8 {d0,d2,d4}", d0, d2, d4, d0);
1872 TESTINSN_VLDn("vld3.16 {d20,d22,d24}", d20, d22, d24, d20);
1873 TESTINSN_VLDn("vld3.32 {d0,d2,d4}", d0, d2, d4, d0);
1874
1875 fflush(stdout);
1876 printf("---- VLD3 (single 3-element structure to one lane) ----\n");
1877 TESTINSN_VLDn("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
1878 TESTINSN_VLDn("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
1879 TESTINSN_VLDn("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
1880 TESTINSN_VLDn("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
1881 TESTINSN_VLDn("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
1882 TESTINSN_VLDn("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
1883 TESTINSN_VLDn("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
1884 TESTINSN_VLDn("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
1885 TESTINSN_VLDn("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
1886 TESTINSN_VLDn("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
1887 TESTINSN_VLDn("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
1888 TESTINSN_VLDn("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
1889 TESTINSN_VLDn("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
1890 TESTINSN_VLDn("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
1891 TESTINSN_VLDn("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
1892 TESTINSN_VLDn("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
1893 TESTINSN_VLDn("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
1894 TESTINSN_VLDn("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
1895 TESTINSN_VLDn("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
1896 TESTINSN_VLDn("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
1897
1898 fflush(stdout);
1899 printf("---- VLD3 (3-elements to all lanes) ----\n");
1900 TESTINSN_VLDn("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1);
1901 TESTINSN_VLDn("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1);
1902 TESTINSN_VLDn("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1);
1903 TESTINSN_VLDn("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11);
1904 TESTINSN_VLDn("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18);
1905 TESTINSN_VLDn("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31);
1906 TESTINSN_VLDn("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2);
1907 TESTINSN_VLDn("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2);
1908 TESTINSN_VLDn("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7);
1909
1910 fflush(stdout);
1911 printf("---- VLD4 (multiple 3-elements) ----\n");
1912 TESTINSN_VLDn("vld4.8 {d0-d3}", d0, d1, d2, d3);
1913 TESTINSN_VLDn("vld4.16 {d20-d23}", d20, d21, d22, d23);
1914 TESTINSN_VLDn("vld4.32 {d0-d3}", d0, d1, d2, d3);
1915 TESTINSN_VLDn("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
1916 TESTINSN_VLDn("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
1917 TESTINSN_VLDn("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
1918
1919 fflush(stdout);
1920 printf("---- VLD4 (single 4-element structure to one lane) ----\n");
1921 TESTINSN_VLDn("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
1922 TESTINSN_VLDn("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
1923 TESTINSN_VLDn("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
1924 TESTINSN_VLDn("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
1925 TESTINSN_VLDn("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
1926 TESTINSN_VLDn("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
1927 TESTINSN_VLDn("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
1928 TESTINSN_VLDn("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
1929 TESTINSN_VLDn("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
1930 TESTINSN_VLDn("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
1931 TESTINSN_VLDn("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
1932 TESTINSN_VLDn("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
1933 TESTINSN_VLDn("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
1934 TESTINSN_VLDn("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
1935 TESTINSN_VLDn("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
1936 TESTINSN_VLDn("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
1937 TESTINSN_VLDn("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
1938 TESTINSN_VLDn("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
1939 TESTINSN_VLDn("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
1940 TESTINSN_VLDn("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
1941
1942 fflush(stdout);
1943 printf("---- VLD4 (4-elements to all lanes) ----\n");
1944 TESTINSN_VLDn("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
1945 TESTINSN_VLDn("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
1946 TESTINSN_VLDn("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
1947 TESTINSN_VLDn("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15);
1948 TESTINSN_VLDn("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20);
1949 TESTINSN_VLDn("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31);
1950 TESTINSN_VLDn("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
1951 TESTINSN_VLDn("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
1952 TESTINSN_VLDn("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11);
1953
1954 fflush(stdout);
1955 printf("---- VST1 (multiple single elements) ----\n");
1956 TESTINSN_VSTn("vst1.8 {d0}", d0, d0, d0, d0);
1957 TESTINSN_VSTn("vst1.16 {d0}", d0, d0, d0, d0);
1958 TESTINSN_VSTn("vst1.32 {d0}", d0, d0, d0, d0);
1959 TESTINSN_VSTn("vst1.64 {d0}", d0, d0, d0, d0);
1960 TESTINSN_VSTn("vst1.8 {d9}", d9, d9, d9, d9);
1961 TESTINSN_VSTn("vst1.16 {d17}", d17, d17, d17, d17);
1962 TESTINSN_VSTn("vst1.32 {d31}", d31, d31, d31, d31);
1963 TESTINSN_VSTn("vst1.64 {d14}", d14, d14, d14, d14);
1964 TESTINSN_VSTn("vst1.8 {d0-d1}", d0, d1, d0, d1);
1965 TESTINSN_VSTn("vst1.16 {d0-d1}", d0, d1, d0, d1);
1966 TESTINSN_VSTn("vst1.32 {d5-d6}", d5, d6, d5, d6);
1967 TESTINSN_VSTn("vst1.64 {d30-d31}", d30, d31, d30, d31);
1968 TESTINSN_VSTn("vst1.8 {d0-d2}", d0, d1, d2, d0);
1969 TESTINSN_VSTn("vst1.16 {d0-d2}", d0, d1, d2, d0);
1970 TESTINSN_VSTn("vst1.32 {d0-d2}", d0, d1, d2, d0);
1971 TESTINSN_VSTn("vst1.64 {d0-d2}", d0, d1, d2, d0);
1972 TESTINSN_VSTn("vst1.8 {d0-d3}", d0, d1, d2, d3);
1973 TESTINSN_VSTn("vst1.16 {d0-d3}", d0, d1, d2, d3);
1974 TESTINSN_VSTn("vst1.32 {d0-d3}", d0, d1, d2, d3);
1975 TESTINSN_VSTn("vst1.64 {d0-d3}", d0, d1, d2, d3);
1976
1977 fflush(stdout);
1978 printf("---- VST1 (single element from one lane) ----\n");
1979 TESTINSN_VSTn("vst1.32 {d0[0]}", d0, d0, d0, d0);
1980 TESTINSN_VSTn("vst1.32 {d0[1]}", d0, d0, d0, d0);
1981 TESTINSN_VSTn("vst1.16 {d1[0]}", d1, d1, d1, d1);
1982 TESTINSN_VSTn("vst1.16 {d1[1]}", d1, d1, d1, d1);
1983 TESTINSN_VSTn("vst1.16 {d1[2]}", d1, d1, d1, d1);
1984 TESTINSN_VSTn("vst1.16 {d1[3]}", d1, d1, d1, d1);
1985 TESTINSN_VSTn("vst1.8 {d0[7]}", d0, d0, d0, d0);
1986 TESTINSN_VSTn("vst1.8 {d1[6]}", d1, d1, d1, d1);
1987 TESTINSN_VSTn("vst1.8 {d0[5]}", d0, d0, d0, d0);
1988 TESTINSN_VSTn("vst1.8 {d0[4]}", d0, d0, d0, d0);
1989 TESTINSN_VSTn("vst1.8 {d20[3]}", d20, d20, d20, d20);
1990 TESTINSN_VSTn("vst1.8 {d0[2]}", d0, d0, d0, d0);
1991 TESTINSN_VSTn("vst1.8 {d17[1]}", d17, d17, d17, d17);
1992 TESTINSN_VSTn("vst1.8 {d30[0]}", d30, d30, d30, d30);
1993
1994 fflush(stdout);
1995 printf("---- VST2 (multiple 2-elements) ----\n");
1996 TESTINSN_VSTn("vst2.8 {d30-d31}", d30, d31, d30, d31);
1997 TESTINSN_VSTn("vst2.16 {d0-d1}", d0, d1, d0, d1);
1998 TESTINSN_VSTn("vst2.32 {d0-d1}", d0, d1, d0, d1);
1999 TESTINSN_VSTn("vst2.8 {d10,d12}", d10, d12, d10, d12);
2000 TESTINSN_VSTn("vst2.16 {d20,d22}", d20, d22, d20, d22);
2001 TESTINSN_VSTn("vst2.32 {d0,d2}", d0, d2, d0, d2);
2002 TESTINSN_VSTn("vst2.8 {d0-d3}", d0, d1, d2, d3);
2003 TESTINSN_VSTn("vst2.16 {d20-d23}", d20, d21, d22, d23);
2004 TESTINSN_VSTn("vst2.32 {d0-d3}", d0, d1, d2, d3);
2005
2006 fflush(stdout);
2007 printf("---- VST2 (single 2-element structure from one lane) ----\n");
2008 TESTINSN_VSTn("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
2009 TESTINSN_VSTn("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
2010 TESTINSN_VSTn("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
2011 TESTINSN_VSTn("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
2012 TESTINSN_VSTn("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
2013 TESTINSN_VSTn("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
2014 TESTINSN_VSTn("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
2015 TESTINSN_VSTn("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
2016 TESTINSN_VSTn("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
2017 TESTINSN_VSTn("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
2018 TESTINSN_VSTn("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
2019 TESTINSN_VSTn("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
2020 TESTINSN_VSTn("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
2021 TESTINSN_VSTn("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
2022 TESTINSN_VSTn("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
2023 TESTINSN_VSTn("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
2024 TESTINSN_VSTn("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
2025 TESTINSN_VSTn("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
2026 TESTINSN_VSTn("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
2027 TESTINSN_VSTn("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
2028
2029 fflush(stdout);
2030 printf("---- VST3 (multiple 3-elements) ----\n");
2031 TESTINSN_VSTn("vst3.8 {d20-d22}", d20, d21, d22, d20);
2032 TESTINSN_VSTn("vst3.16 {d0-d2}", d0, d1, d2, d0);
2033 TESTINSN_VSTn("vst3.32 {d0-d2}", d0, d1, d2, d0);
2034 TESTINSN_VSTn("vst3.8 {d0,d2,d4}", d0, d2, d4, d0);
2035 TESTINSN_VSTn("vst3.16 {d20,d22,d24}", d20, d22, d24, d20);
2036 TESTINSN_VSTn("vst3.32 {d0,d2,d4}", d0, d2, d4, d0);
2037
2038 fflush(stdout);
2039 printf("---- VST3 (single 3-element structure from one lane) ----\n");
2040 TESTINSN_VSTn("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
2041 TESTINSN_VSTn("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
2042 TESTINSN_VSTn("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
2043 TESTINSN_VSTn("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
2044 TESTINSN_VSTn("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
2045 TESTINSN_VSTn("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
2046 TESTINSN_VSTn("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
2047 TESTINSN_VSTn("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
2048 TESTINSN_VSTn("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
2049 TESTINSN_VSTn("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
2050 TESTINSN_VSTn("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
2051 TESTINSN_VSTn("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
2052 TESTINSN_VSTn("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
2053 TESTINSN_VSTn("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
2054 TESTINSN_VSTn("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
2055 TESTINSN_VSTn("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
2056 TESTINSN_VSTn("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
2057 TESTINSN_VSTn("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
2058 TESTINSN_VSTn("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
2059 TESTINSN_VSTn("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
2060
2061 fflush(stdout);
2062 printf("---- VST4 (multiple 4-elements) ----\n");
2063 TESTINSN_VSTn("vst4.8 {d0-d3}", d0, d1, d2, d3);
2064 TESTINSN_VSTn("vst4.16 {d20-d23}", d20, d21, d22, d23);
2065 TESTINSN_VSTn("vst4.32 {d0-d3}", d0, d1, d2, d3);
2066 TESTINSN_VSTn("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
2067 TESTINSN_VSTn("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
2068 TESTINSN_VSTn("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
2069
2070 fflush(stdout);
2071 printf("---- VST4 (single 4-element structure from one lane) ----\n");
2072 TESTINSN_VSTn("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
2073 TESTINSN_VSTn("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
2074 TESTINSN_VSTn("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
2075 TESTINSN_VSTn("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
2076 TESTINSN_VSTn("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
2077 TESTINSN_VSTn("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
2078 TESTINSN_VSTn("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
2079 TESTINSN_VSTn("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
2080 TESTINSN_VSTn("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
2081 TESTINSN_VSTn("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
2082 TESTINSN_VSTn("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
2083 TESTINSN_VSTn("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
2084 TESTINSN_VSTn("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
2085 TESTINSN_VSTn("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
2086 TESTINSN_VSTn("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
2087 TESTINSN_VSTn("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
2088 TESTINSN_VSTn("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
2089 TESTINSN_VSTn("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
2090 TESTINSN_VSTn("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
2091 TESTINSN_VSTn("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
2092
2093 fflush(stdout);
2094 printf("---- VLD1 (multiple single elements) ----\n");
2095 TESTINSN_VLDn_WB("vld1.8 {d0}", d0, d0, d0, d0);
2096 TESTINSN_VLDn_WB("vld1.16 {d0}", d0, d0, d0, d0);
2097 TESTINSN_VLDn_WB("vld1.32 {d0}", d0, d0, d0, d0);
2098 TESTINSN_VLDn_WB("vld1.64 {d0}", d0, d0, d0, d0);
2099 TESTINSN_VLDn_WB("vld1.8 {d9}", d9, d9, d9, d9);
2100 TESTINSN_VLDn_WB("vld1.16 {d17}", d17, d17, d17, d17);
2101 TESTINSN_VLDn_WB("vld1.32 {d31}", d31, d31, d31, d31);
2102 TESTINSN_VLDn_WB("vld1.64 {d14}", d14, d14, d14, d14);
2103 TESTINSN_VLDn_WB("vld1.8 {d0-d1}", d0, d1, d0, d1);
2104 TESTINSN_VLDn_WB("vld1.16 {d0-d1}", d0, d1, d0, d1);
2105 TESTINSN_VLDn_WB("vld1.32 {d5-d6}", d5, d6, d5, d6);
2106 TESTINSN_VLDn_WB("vld1.64 {d30-d31}", d30, d31, d30, d31);
2107 TESTINSN_VLDn_WB("vld1.8 {d0-d2}", d0, d1, d2, d0);
2108 TESTINSN_VLDn_WB("vld1.16 {d0-d2}", d0, d1, d2, d0);
2109 TESTINSN_VLDn_WB("vld1.32 {d0-d2}", d0, d1, d2, d0);
2110 TESTINSN_VLDn_WB("vld1.64 {d0-d2}", d0, d1, d2, d0);
2111 TESTINSN_VLDn_WB("vld1.8 {d0-d3}", d0, d1, d2, d3);
2112 TESTINSN_VLDn_WB("vld1.16 {d0-d3}", d0, d1, d2, d3);
2113 TESTINSN_VLDn_WB("vld1.32 {d0-d3}", d0, d1, d2, d3);
2114 TESTINSN_VLDn_WB("vld1.64 {d0-d3}", d0, d1, d2, d3);
2115
2116 fflush(stdout);
2117 printf("---- VLD1 (single element to one lane) ----\n");
2118 TESTINSN_VLDn_WB("vld1.32 {d0[0]}", d0, d0, d0, d0);
2119 TESTINSN_VLDn_WB("vld1.32 {d0[1]}", d0, d0, d0, d0);
2120 TESTINSN_VLDn_WB("vld1.16 {d1[0]}", d1, d1, d1, d1);
2121 TESTINSN_VLDn_WB("vld1.16 {d1[1]}", d1, d1, d1, d1);
2122 TESTINSN_VLDn_WB("vld1.16 {d1[2]}", d1, d1, d1, d1);
2123 TESTINSN_VLDn_WB("vld1.16 {d1[3]}", d1, d1, d1, d1);
2124 TESTINSN_VLDn_WB("vld1.8 {d0[7]}", d0, d0, d0, d0);
2125 TESTINSN_VLDn_WB("vld1.8 {d1[6]}", d1, d1, d1, d1);
2126 TESTINSN_VLDn_WB("vld1.8 {d0[5]}", d0, d0, d0, d0);
2127 TESTINSN_VLDn_WB("vld1.8 {d0[4]}", d0, d0, d0, d0);
2128 TESTINSN_VLDn_WB("vld1.8 {d20[3]}", d20, d20, d20, d20);
2129 TESTINSN_VLDn_WB("vld1.8 {d0[2]}", d0, d0, d0, d0);
2130 TESTINSN_VLDn_WB("vld1.8 {d17[1]}", d17, d17, d17, d17);
2131 TESTINSN_VLDn_WB("vld1.8 {d30[0]}", d30, d30, d30, d30);
2132
2133 fflush(stdout);
2134 printf("---- VLD1 (single element to all lanes) ----\n");
2135 TESTINSN_VLDn_WB("vld1.8 {d0[]}", d0, d0, d0, d0);
2136 TESTINSN_VLDn_WB("vld1.16 {d0[]}", d0, d0, d0, d0);
2137 TESTINSN_VLDn_WB("vld1.32 {d0[]}", d0, d0, d0, d0);
2138 TESTINSN_VLDn_WB("vld1.8 {d9[]}", d9, d9, d9, d9);
2139 TESTINSN_VLDn_WB("vld1.16 {d17[]}", d17, d17, d17, d17);
2140 TESTINSN_VLDn_WB("vld1.32 {d31[]}", d31, d31, d31, d31);
2141 TESTINSN_VLDn_WB("vld1.8 {d0[],d1[]}", d0, d1, d0, d1);
2142 TESTINSN_VLDn_WB("vld1.16 {d0[],d1[]}", d0, d1, d0, d1);
2143 TESTINSN_VLDn_WB("vld1.32 {d5[],d6[]}", d5, d6, d5, d6);
2144
2145 fflush(stdout);
2146 printf("---- VLD2 (multiple 2-elements) ----\n");
2147 TESTINSN_VLDn_WB("vld2.8 {d30-d31}", d30, d31, d30, d31);
2148 TESTINSN_VLDn_WB("vld2.16 {d0-d1}", d0, d1, d0, d1);
2149 TESTINSN_VLDn_WB("vld2.32 {d0-d1}", d0, d1, d0, d1);
2150 TESTINSN_VLDn_WB("vld2.8 {d10,d12}", d10, d12, d10, d12);
2151 TESTINSN_VLDn_WB("vld2.16 {d20,d22}", d20, d22, d20, d22);
2152 TESTINSN_VLDn_WB("vld2.32 {d0,d2}", d0, d2, d0, d2);
2153 TESTINSN_VLDn_WB("vld2.8 {d0-d3}", d0, d1, d2, d3);
2154 TESTINSN_VLDn_WB("vld2.16 {d20-d23}", d20, d21, d22, d23);
2155 TESTINSN_VLDn_WB("vld2.32 {d0-d3}", d0, d1, d2, d3);
2156
2157 fflush(stdout);
2158 printf("---- VLD2 (single 2-element structure to one lane) ----\n");
2159 TESTINSN_VLDn_WB("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
2160 TESTINSN_VLDn_WB("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
2161 TESTINSN_VLDn_WB("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
2162 TESTINSN_VLDn_WB("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
2163 TESTINSN_VLDn_WB("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
2164 TESTINSN_VLDn_WB("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
2165 TESTINSN_VLDn_WB("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
2166 TESTINSN_VLDn_WB("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
2167 TESTINSN_VLDn_WB("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
2168 TESTINSN_VLDn_WB("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
2169 TESTINSN_VLDn_WB("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
2170 TESTINSN_VLDn_WB("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
2171 TESTINSN_VLDn_WB("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
2172 TESTINSN_VLDn_WB("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
2173 TESTINSN_VLDn_WB("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
2174 TESTINSN_VLDn_WB("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
2175 TESTINSN_VLDn_WB("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
2176 TESTINSN_VLDn_WB("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
2177 TESTINSN_VLDn_WB("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
2178 TESTINSN_VLDn_WB("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
2179
2180 fflush(stdout);
2181 printf("---- VLD2 (2-elements to all lanes) ----\n");
2182 TESTINSN_VLDn_WB("vld2.8 {d0[],d1[]}", d0, d1, d0, d1);
2183 TESTINSN_VLDn_WB("vld2.16 {d0[],d1[]}", d0, d1, d0, d1);
2184 TESTINSN_VLDn_WB("vld2.32 {d0[],d1[]}", d0, d1, d0, d1);
2185 TESTINSN_VLDn_WB("vld2.8 {d9[],d11[]}", d9, d11, d9, d11);
2186 TESTINSN_VLDn_WB("vld2.16 {d17[],d18[]}", d17, d18, d17, d18);
2187 TESTINSN_VLDn_WB("vld2.32 {d30[],d31[]}", d30, d31, d30, d31);
2188 TESTINSN_VLDn_WB("vld2.8 {d0[],d2[]}", d0, d2, d0, d2);
2189 TESTINSN_VLDn_WB("vld2.16 {d0[],d2[]}", d0, d2, d0, d2);
2190 TESTINSN_VLDn_WB("vld2.32 {d5[],d7[]}", d5, d7, d5, d7);
2191
2192 fflush(stdout);
2193 printf("---- VLD3 (multiple 3-elements) ----\n");
2194 TESTINSN_VLDn_WB("vld3.8 {d20-d22}", d20, d21, d22, d20);
2195 TESTINSN_VLDn_WB("vld3.16 {d0-d2}", d0, d1, d2, d0);
2196 TESTINSN_VLDn_WB("vld3.32 {d0-d2}", d0, d1, d2, d0);
2197 TESTINSN_VLDn_WB("vld3.8 {d0,d2,d4}", d0, d2, d4, d0);
2198 TESTINSN_VLDn_WB("vld3.16 {d20,d22,d24}", d20, d22, d24, d20);
2199 TESTINSN_VLDn_WB("vld3.32 {d0,d2,d4}", d0, d2, d4, d0);
2200
2201 fflush(stdout);
2202 printf("---- VLD3 (single 3-element structure to one lane) ----\n");
2203 TESTINSN_VLDn_WB("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
2204 TESTINSN_VLDn_WB("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
2205 TESTINSN_VLDn_WB("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
2206 TESTINSN_VLDn_WB("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
2207 TESTINSN_VLDn_WB("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
2208 TESTINSN_VLDn_WB("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
2209 TESTINSN_VLDn_WB("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
2210 TESTINSN_VLDn_WB("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
2211 TESTINSN_VLDn_WB("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
2212 TESTINSN_VLDn_WB("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
2213 TESTINSN_VLDn_WB("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
2214 TESTINSN_VLDn_WB("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
2215 TESTINSN_VLDn_WB("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
2216 TESTINSN_VLDn_WB("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
2217 TESTINSN_VLDn_WB("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
2218 TESTINSN_VLDn_WB("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
2219 TESTINSN_VLDn_WB("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
2220 TESTINSN_VLDn_WB("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
2221 TESTINSN_VLDn_WB("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
2222 TESTINSN_VLDn_WB("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
2223
2224 fflush(stdout);
2225 printf("---- VLD3 (3-elements to all lanes) ----\n");
2226 TESTINSN_VLDn_WB("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1);
2227 TESTINSN_VLDn_WB("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1);
2228 TESTINSN_VLDn_WB("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1);
2229 TESTINSN_VLDn_WB("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11);
2230 TESTINSN_VLDn_WB("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18);
2231 TESTINSN_VLDn_WB("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31);
2232 TESTINSN_VLDn_WB("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2);
2233 TESTINSN_VLDn_WB("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2);
2234 TESTINSN_VLDn_WB("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7);
2235
2236 fflush(stdout);
2237 printf("---- VLD4 (multiple 3-elements) ----\n");
2238 TESTINSN_VLDn_WB("vld4.8 {d0-d3}", d0, d1, d2, d3);
2239 TESTINSN_VLDn_WB("vld4.16 {d20-d23}", d20, d21, d22, d23);
2240 TESTINSN_VLDn_WB("vld4.32 {d0-d3}", d0, d1, d2, d3);
2241 TESTINSN_VLDn_WB("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
2242 TESTINSN_VLDn_WB("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
2243 TESTINSN_VLDn_WB("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
2244
2245 fflush(stdout);
2246 printf("---- VLD4 (single 4-element structure to one lane) ----\n");
2247 TESTINSN_VLDn_WB("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
2248 TESTINSN_VLDn_WB("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
2249 TESTINSN_VLDn_WB("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
2250 TESTINSN_VLDn_WB("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
2251 TESTINSN_VLDn_WB("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
2252 TESTINSN_VLDn_WB("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
2253 TESTINSN_VLDn_WB("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
2254 TESTINSN_VLDn_WB("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
2255 TESTINSN_VLDn_WB("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
2256 TESTINSN_VLDn_WB("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
2257 TESTINSN_VLDn_WB("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
2258 TESTINSN_VLDn_WB("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
2259 TESTINSN_VLDn_WB("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
2260 TESTINSN_VLDn_WB("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
2261 TESTINSN_VLDn_WB("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
2262 TESTINSN_VLDn_WB("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
2263 TESTINSN_VLDn_WB("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
2264 TESTINSN_VLDn_WB("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
2265 TESTINSN_VLDn_WB("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
2266 TESTINSN_VLDn_WB("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
2267
2268 fflush(stdout);
2269 printf("---- VLD4 (4-elements to all lanes) ----\n");
2270 TESTINSN_VLDn_WB("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
2271 TESTINSN_VLDn_WB("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
2272 TESTINSN_VLDn_WB("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
2273 TESTINSN_VLDn_WB("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15);
2274 TESTINSN_VLDn_WB("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20);
2275 TESTINSN_VLDn_WB("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31);
2276 TESTINSN_VLDn_WB("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
2277 TESTINSN_VLDn_WB("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
2278 TESTINSN_VLDn_WB("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11);
2279
2280 fflush(stdout);
2281 printf("---- VST1 (multiple single elements) ----\n");
2282 TESTINSN_VSTn_WB("vst1.8 {d0}", d0, d0, d0, d0);
2283 TESTINSN_VSTn_WB("vst1.16 {d0}", d0, d0, d0, d0);
2284 TESTINSN_VSTn_WB("vst1.32 {d0}", d0, d0, d0, d0);
2285 TESTINSN_VSTn_WB("vst1.64 {d0}", d0, d0, d0, d0);
2286 TESTINSN_VSTn_WB("vst1.8 {d9}", d9, d9, d9, d9);
2287 TESTINSN_VSTn_WB("vst1.16 {d17}", d17, d17, d17, d17);
2288 TESTINSN_VSTn_WB("vst1.32 {d31}", d31, d31, d31, d31);
2289 TESTINSN_VSTn_WB("vst1.64 {d14}", d14, d14, d14, d14);
2290 TESTINSN_VSTn_WB("vst1.8 {d0-d1}", d0, d1, d0, d1);
2291 TESTINSN_VSTn_WB("vst1.16 {d0-d1}", d0, d1, d0, d1);
2292 TESTINSN_VSTn_WB("vst1.32 {d5-d6}", d5, d6, d5, d6);
2293 TESTINSN_VSTn_WB("vst1.64 {d30-d31}", d30, d31, d30, d31);
2294 TESTINSN_VSTn_WB("vst1.8 {d0-d2}", d0, d1, d2, d0);
2295 TESTINSN_VSTn_WB("vst1.16 {d0-d2}", d0, d1, d2, d0);
2296 TESTINSN_VSTn_WB("vst1.32 {d0-d2}", d0, d1, d2, d0);
2297 TESTINSN_VSTn_WB("vst1.64 {d0-d2}", d0, d1, d2, d0);
2298 TESTINSN_VSTn_WB("vst1.8 {d0-d3}", d0, d1, d2, d3);
2299 TESTINSN_VSTn_WB("vst1.16 {d0-d3}", d0, d1, d2, d3);
2300 TESTINSN_VSTn_WB("vst1.32 {d0-d3}", d0, d1, d2, d3);
2301 TESTINSN_VSTn_WB("vst1.64 {d0-d3}", d0, d1, d2, d3);
2302
2303 fflush(stdout);
2304 printf("---- VST1 (single element from one lane) ----\n");
2305 TESTINSN_VSTn_WB("vst1.32 {d0[0]}", d0, d0, d0, d0);
2306 TESTINSN_VSTn_WB("vst1.32 {d0[1]}", d0, d0, d0, d0);
2307 TESTINSN_VSTn_WB("vst1.16 {d1[0]}", d1, d1, d1, d1);
2308 TESTINSN_VSTn_WB("vst1.16 {d1[1]}", d1, d1, d1, d1);
2309 TESTINSN_VSTn_WB("vst1.16 {d1[2]}", d1, d1, d1, d1);
2310 TESTINSN_VSTn_WB("vst1.16 {d1[3]}", d1, d1, d1, d1);
2311 TESTINSN_VSTn_WB("vst1.8 {d0[7]}", d0, d0, d0, d0);
2312 TESTINSN_VSTn_WB("vst1.8 {d1[6]}", d1, d1, d1, d1);
2313 TESTINSN_VSTn_WB("vst1.8 {d0[5]}", d0, d0, d0, d0);
2314 TESTINSN_VSTn_WB("vst1.8 {d0[4]}", d0, d0, d0, d0);
2315 TESTINSN_VSTn_WB("vst1.8 {d20[3]}", d20, d20, d20, d20);
2316 TESTINSN_VSTn_WB("vst1.8 {d0[2]}", d0, d0, d0, d0);
2317 TESTINSN_VSTn_WB("vst1.8 {d17[1]}", d17, d17, d17, d17);
2318 TESTINSN_VSTn_WB("vst1.8 {d30[0]}", d30, d30, d30, d30);
2319
2320 fflush(stdout);
2321 printf("---- VST2 (multiple 2-elements) ----\n");
2322 TESTINSN_VSTn_WB("vst2.8 {d30-d31}", d30, d31, d30, d31);
2323 TESTINSN_VSTn_WB("vst2.16 {d0-d1}", d0, d1, d0, d1);
2324 TESTINSN_VSTn_WB("vst2.32 {d0-d1}", d0, d1, d0, d1);
2325 TESTINSN_VSTn_WB("vst2.8 {d10,d12}", d10, d12, d10, d12);
2326 TESTINSN_VSTn_WB("vst2.16 {d20,d22}", d20, d22, d20, d22);
2327 TESTINSN_VSTn_WB("vst2.32 {d0,d2}", d0, d2, d0, d2);
2328 TESTINSN_VSTn_WB("vst2.8 {d0-d3}", d0, d1, d2, d3);
2329 TESTINSN_VSTn_WB("vst2.16 {d20-d23}", d20, d21, d22, d23);
2330 TESTINSN_VSTn_WB("vst2.32 {d0-d3}", d0, d1, d2, d3);
2331
2332 fflush(stdout);
2333 printf("---- VST2 (single 2-element structure from one lane) ----\n");
2334 TESTINSN_VSTn_WB("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
2335 TESTINSN_VSTn_WB("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
2336 TESTINSN_VSTn_WB("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
2337 TESTINSN_VSTn_WB("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
2338 TESTINSN_VSTn_WB("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
2339 TESTINSN_VSTn_WB("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
2340 TESTINSN_VSTn_WB("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
2341 TESTINSN_VSTn_WB("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
2342 TESTINSN_VSTn_WB("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
2343 TESTINSN_VSTn_WB("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
2344 TESTINSN_VSTn_WB("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
2345 TESTINSN_VSTn_WB("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
2346 TESTINSN_VSTn_WB("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
2347 TESTINSN_VSTn_WB("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
2348 TESTINSN_VSTn_WB("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
2349 TESTINSN_VSTn_WB("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
2350 TESTINSN_VSTn_WB("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
2351 TESTINSN_VSTn_WB("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
2352 TESTINSN_VSTn_WB("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
2353 TESTINSN_VSTn_WB("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
2354
2355 fflush(stdout);
2356 printf("---- VST3 (multiple 3-elements) ----\n");
2357 TESTINSN_VSTn_WB("vst3.8 {d20-d22}", d20, d21, d22, d20);
2358 TESTINSN_VSTn_WB("vst3.16 {d0-d2}", d0, d1, d2, d0);
2359 TESTINSN_VSTn_WB("vst3.32 {d0-d2}", d0, d1, d2, d0);
2360 TESTINSN_VSTn_WB("vst3.8 {d0,d2,d4}", d0, d2, d4, d0);
2361 TESTINSN_VSTn_WB("vst3.16 {d20,d22,d24}", d20, d22, d24, d20);
2362 TESTINSN_VSTn_WB("vst3.32 {d0,d2,d4}", d0, d2, d4, d0);
2363
2364 fflush(stdout);
2365 printf("---- VST3 (single 3-element structure from one lane) ----\n");
2366 TESTINSN_VSTn_WB("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
2367 TESTINSN_VSTn_WB("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
2368 TESTINSN_VSTn_WB("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
2369 TESTINSN_VSTn_WB("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
2370 TESTINSN_VSTn_WB("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
2371 TESTINSN_VSTn_WB("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
2372 TESTINSN_VSTn_WB("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
2373 TESTINSN_VSTn_WB("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
2374 TESTINSN_VSTn_WB("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
2375 TESTINSN_VSTn_WB("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
2376 TESTINSN_VSTn_WB("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
2377 TESTINSN_VSTn_WB("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
2378 TESTINSN_VSTn_WB("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
2379 TESTINSN_VSTn_WB("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
2380 TESTINSN_VSTn_WB("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
2381 TESTINSN_VSTn_WB("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
2382 TESTINSN_VSTn_WB("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
2383 TESTINSN_VSTn_WB("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
2384 TESTINSN_VSTn_WB("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
2385 TESTINSN_VSTn_WB("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
2386
2387 fflush(stdout);
2388 printf("---- VST4 (multiple 4-elements) ----\n");
2389 TESTINSN_VSTn_WB("vst4.8 {d0-d3}", d0, d1, d2, d3);
2390 TESTINSN_VSTn_WB("vst4.16 {d20-d23}", d20, d21, d22, d23);
2391 TESTINSN_VSTn_WB("vst4.32 {d0-d3}", d0, d1, d2, d3);
2392 TESTINSN_VSTn_WB("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
2393 TESTINSN_VSTn_WB("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
2394 TESTINSN_VSTn_WB("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
2395
2396 fflush(stdout);
2397 printf("---- VST4 (single 4-element structure from one lane) ----\n");
2398 TESTINSN_VSTn_WB("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
2399 TESTINSN_VSTn_WB("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
2400 TESTINSN_VSTn_WB("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
2401 TESTINSN_VSTn_WB("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
2402 TESTINSN_VSTn_WB("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
2403 TESTINSN_VSTn_WB("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
2404 TESTINSN_VSTn_WB("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
2405 TESTINSN_VSTn_WB("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
2406 TESTINSN_VSTn_WB("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
2407 TESTINSN_VSTn_WB("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
2408 TESTINSN_VSTn_WB("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
2409 TESTINSN_VSTn_WB("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
2410 TESTINSN_VSTn_WB("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
2411 TESTINSN_VSTn_WB("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
2412 TESTINSN_VSTn_WB("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
2413 TESTINSN_VSTn_WB("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
2414 TESTINSN_VSTn_WB("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
2415 TESTINSN_VSTn_WB("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
2416 TESTINSN_VSTn_WB("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
2417 TESTINSN_VSTn_WB("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
2418
2419 fflush(stdout);
2420 printf("---- VLD1 (multiple single elements) ----\n");
2421 TESTINSN_VLDn_RI("vld1.8 {d0}", d0, d0, d0, d0, r5, 13);
2422 TESTINSN_VLDn_RI("vld1.16 {d0}", d0, d0, d0, d0, r8, 13);
2423 TESTINSN_VLDn_RI("vld1.32 {d0}", d0, d0, d0, d0, r5, 42);
2424 TESTINSN_VLDn_RI("vld1.64 {d0}", d0, d0, d0, d0, r5, 0);
2425 TESTINSN_VLDn_RI("vld1.8 {d9}", d9, d9, d9, d9, r5, 13);
2426 TESTINSN_VLDn_RI("vld1.16 {d17}", d17, d17, d17, d17, r6, 13);
2427 TESTINSN_VLDn_RI("vld1.32 {d31}", d31, d31, d31, d31, r5, -3);
2428 TESTINSN_VLDn_RI("vld1.64 {d14}", d14, d14, d14, d14, r5, 13);
2429 TESTINSN_VLDn_RI("vld1.8 {d0-d1}", d0, d1, d0, d1, r5, 13);
2430 TESTINSN_VLDn_RI("vld1.16 {d0-d1}", d0, d1, d0, d1, r5, 13);
2431 TESTINSN_VLDn_RI("vld1.32 {d5-d6}", d5, d6, d5, d6, r5, 13);
2432 TESTINSN_VLDn_RI("vld1.64 {d30-d31}", d30, d31, d30, d31, r5, 13);
2433 TESTINSN_VLDn_RI("vld1.8 {d0-d2}", d0, d1, d2, d0, r5, 13);
2434 TESTINSN_VLDn_RI("vld1.16 {d0-d2}", d0, d1, d2, d0, r5, 13);
2435 TESTINSN_VLDn_RI("vld1.32 {d0-d2}", d0, d1, d2, d0, r5, 13);
2436 TESTINSN_VLDn_RI("vld1.64 {d0-d2}", d0, d1, d2, d0, r5, 13);
2437 TESTINSN_VLDn_RI("vld1.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
2438 TESTINSN_VLDn_RI("vld1.16 {d0-d3}", d0, d1, d2, d3, r5, 13);
2439 TESTINSN_VLDn_RI("vld1.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
2440 TESTINSN_VLDn_RI("vld1.64 {d0-d3}", d0, d1, d2, d3, r5, 13);
2441
2442 fflush(stdout);
2443 printf("---- VLD1 (single element to one lane) ----\n");
2444 TESTINSN_VLDn_RI("vld1.32 {d0[0]}", d0, d0, d0, d0, r5, 13);
2445 TESTINSN_VLDn_RI("vld1.32 {d0[1]}", d0, d0, d0, d0, r9, 42);
2446 TESTINSN_VLDn_RI("vld1.16 {d1[0]}", d1, d1, d1, d1, r5, 13);
2447 TESTINSN_VLDn_RI("vld1.16 {d1[1]}", d1, d1, d1, d1, r1, 0);
2448 TESTINSN_VLDn_RI("vld1.16 {d1[2]}", d1, d1, d1, d1, r5, -3);
2449 TESTINSN_VLDn_RI("vld1.16 {d1[3]}", d1, d1, d1, d1, r5, 13);
2450 TESTINSN_VLDn_RI("vld1.8 {d0[7]}", d0, d0, d0, d0, r5, 13);
2451 TESTINSN_VLDn_RI("vld1.8 {d1[6]}", d1, d1, d1, d1, r5, 13);
2452 TESTINSN_VLDn_RI("vld1.8 {d0[5]}", d0, d0, d0, d0, r5, 13);
2453 TESTINSN_VLDn_RI("vld1.8 {d0[4]}", d0, d0, d0, d0, r5, 13);
2454 TESTINSN_VLDn_RI("vld1.8 {d20[3]}", d20, d20, d20, d20, r5, 13);
2455 TESTINSN_VLDn_RI("vld1.8 {d0[2]}", d0, d0, d0, d0, r5, 13);
2456 TESTINSN_VLDn_RI("vld1.8 {d17[1]}", d17, d17, d17, d17, r5, 13);
2457 TESTINSN_VLDn_RI("vld1.8 {d30[0]}", d30, d30, d30, d30, r5, 13);
2458
2459 fflush(stdout);
2460 printf("---- VLD1 (single element to all lanes) ----\n");
2461 TESTINSN_VLDn_RI("vld1.8 {d0[]}", d0, d0, d0, d0, r5, 13);
2462 TESTINSN_VLDn_RI("vld1.16 {d0[]}", d0, d0, d0, d0, r9, 42);
2463 TESTINSN_VLDn_RI("vld1.32 {d0[]}", d0, d0, d0, d0, r1, 0);
2464 TESTINSN_VLDn_RI("vld1.8 {d9[]}", d9, d9, d9, d9, r5, -3);
2465 TESTINSN_VLDn_RI("vld1.16 {d17[]}", d17, d17, d17, d17, r5, 13);
2466 TESTINSN_VLDn_RI("vld1.32 {d31[]}", d31, d31, d31, d31, r5, 13);
2467 TESTINSN_VLDn_RI("vld1.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13);
2468 TESTINSN_VLDn_RI("vld1.16 {d0[],d1[]}", d0, d1, d0, d1, r5, 13);
2469 TESTINSN_VLDn_RI("vld1.32 {d5[],d6[]}", d5, d6, d5, d6, r5, 13);
2470
2471 fflush(stdout);
2472 printf("---- VLD2 (multiple 2-elements) ----\n");
2473 TESTINSN_VLDn_RI("vld2.8 {d30-d31}", d30, d31, d30, d31, r5, 13);
2474 TESTINSN_VLDn_RI("vld2.16 {d0-d1}", d0, d1, d0, d1, r9, 42);
2475 TESTINSN_VLDn_RI("vld2.32 {d0-d1}", d0, d1, d0, d1, r1, 0);
2476 TESTINSN_VLDn_RI("vld2.8 {d10,d12}", d10, d12, d10, d12, r5, -3);
2477 TESTINSN_VLDn_RI("vld2.16 {d20,d22}", d20, d22, d20, d22, r5, 13);
2478 TESTINSN_VLDn_RI("vld2.32 {d0,d2}", d0, d2, d0, d2, r5, 13);
2479 TESTINSN_VLDn_RI("vld2.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
2480 TESTINSN_VLDn_RI("vld2.16 {d20-d23}", d20, d21, d22, d23, r5, 13);
2481 TESTINSN_VLDn_RI("vld2.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
2482
2483 fflush(stdout);
2484 printf("---- VLD2 (single 2-element structure to one lane) ----\n");
2485 TESTINSN_VLDn_RI("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13);
2486 TESTINSN_VLDn_RI("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42);
2487 TESTINSN_VLDn_RI("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0);
2488 TESTINSN_VLDn_RI("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3);
2489 TESTINSN_VLDn_RI("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13);
2490 TESTINSN_VLDn_RI("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13);
2491 TESTINSN_VLDn_RI("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13);
2492 TESTINSN_VLDn_RI("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13);
2493 TESTINSN_VLDn_RI("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13);
2494 TESTINSN_VLDn_RI("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13);
2495 TESTINSN_VLDn_RI("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13);
2496 TESTINSN_VLDn_RI("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13);
2497 TESTINSN_VLDn_RI("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13);
2498 TESTINSN_VLDn_RI("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13);
2499 TESTINSN_VLDn_RI("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13);
2500 TESTINSN_VLDn_RI("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13);
2501 TESTINSN_VLDn_RI("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13);
2502 TESTINSN_VLDn_RI("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13);
2503 TESTINSN_VLDn_RI("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13);
2504 TESTINSN_VLDn_RI("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13);
2505
2506 fflush(stdout);
2507 printf("---- VLD2 (2-elements to all lanes) ----\n");
2508 TESTINSN_VLDn_RI("vld2.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13);
2509 TESTINSN_VLDn_RI("vld2.16 {d0[],d1[]}", d0, d1, d0, d1, r9, 42);
2510 TESTINSN_VLDn_RI("vld2.32 {d0[],d1[]}", d0, d1, d0, d1, r1, 0);
2511 TESTINSN_VLDn_RI("vld2.8 {d9[],d11[]}", d9, d11, d9, d11, r5, -3);
2512 TESTINSN_VLDn_RI("vld2.16 {d17[],d18[]}", d17, d18, d17, d18, r5, 13);
2513 TESTINSN_VLDn_RI("vld2.32 {d30[],d31[]}", d30, d31, d30, d31, r5, 13);
2514 TESTINSN_VLDn_RI("vld2.8 {d0[],d2[]}", d0, d2, d0, d2, r5, 13);
2515 TESTINSN_VLDn_RI("vld2.16 {d0[],d2[]}", d0, d2, d0, d2, r5, 13);
2516 TESTINSN_VLDn_RI("vld2.32 {d5[],d7[]}", d5, d7, d5, d7, r5, 13);
2517
2518 fflush(stdout);
2519 printf("---- VLD3 (multiple 3-elements) ----\n");
2520 TESTINSN_VLDn_RI("vld3.8 {d20-d22}", d20, d21, d22, d20, r5, 13);
2521 TESTINSN_VLDn_RI("vld3.16 {d0-d2}", d0, d1, d2, d0, r9, 42);
2522 TESTINSN_VLDn_RI("vld3.32 {d0-d2}", d0, d1, d2, d0, r1, 0);
2523 TESTINSN_VLDn_RI("vld3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3);
2524 TESTINSN_VLDn_RI("vld3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13);
2525 TESTINSN_VLDn_RI("vld3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13);
2526
2527 fflush(stdout);
2528 printf("---- VLD3 (single 3-element structure to one lane) ----\n");
2529 TESTINSN_VLDn_RI("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13);
2530 TESTINSN_VLDn_RI("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42);
2531 TESTINSN_VLDn_RI("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0);
2532 TESTINSN_VLDn_RI("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3);
2533 TESTINSN_VLDn_RI("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13);
2534 TESTINSN_VLDn_RI("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13);
2535 TESTINSN_VLDn_RI("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13);
2536 TESTINSN_VLDn_RI("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13);
2537 TESTINSN_VLDn_RI("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13);
2538 TESTINSN_VLDn_RI("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13);
2539 TESTINSN_VLDn_RI("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13);
2540 TESTINSN_VLDn_RI("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13);
2541 TESTINSN_VLDn_RI("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13);
2542 TESTINSN_VLDn_RI("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13);
2543 TESTINSN_VLDn_RI("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13);
2544 TESTINSN_VLDn_RI("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13);
2545 TESTINSN_VLDn_RI("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13);
2546 TESTINSN_VLDn_RI("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13);
2547 TESTINSN_VLDn_RI("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13);
2548 TESTINSN_VLDn_RI("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13);
2549
2550 fflush(stdout);
2551 printf("---- VLD3 (3-elements to all lanes) ----\n");
2552 TESTINSN_VLDn_RI("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1, r5, 13);
2553 TESTINSN_VLDn_RI("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1, r9, 42);
2554 TESTINSN_VLDn_RI("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1, r1, 0);
2555 TESTINSN_VLDn_RI("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11, r5, -3);
2556 TESTINSN_VLDn_RI("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18, r5, 13);
2557 TESTINSN_VLDn_RI("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31, r5, 13);
2558 TESTINSN_VLDn_RI("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13);
2559 TESTINSN_VLDn_RI("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13);
2560 TESTINSN_VLDn_RI("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7, r5, 13);
2561
2562 fflush(stdout);
2563 printf("---- VLD4 (multiple 3-elements) ----\n");
2564 TESTINSN_VLDn_RI("vld4.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
2565 TESTINSN_VLDn_RI("vld4.16 {d20-d23}", d20, d21, d22, d23, r9, 0);
2566 TESTINSN_VLDn_RI("vld4.32 {d0-d3}", d0, d1, d2, d3, r0, 42);
2567 TESTINSN_VLDn_RI("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3);
2568 TESTINSN_VLDn_RI("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13);
2569 TESTINSN_VLDn_RI("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13);
2570
2571 fflush(stdout);
2572 printf("---- VLD4 (single 4-element structure to one lane) ----\n");
2573 TESTINSN_VLDn_RI("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13);
2574 TESTINSN_VLDn_RI("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42);
2575 TESTINSN_VLDn_RI("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0);
2576 TESTINSN_VLDn_RI("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3);
2577 TESTINSN_VLDn_RI("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13);
2578 TESTINSN_VLDn_RI("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13);
2579 TESTINSN_VLDn_RI("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13);
2580 TESTINSN_VLDn_RI("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13);
2581 TESTINSN_VLDn_RI("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13);
2582 TESTINSN_VLDn_RI("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13);
2583 TESTINSN_VLDn_RI("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13);
2584 TESTINSN_VLDn_RI("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13);
2585 TESTINSN_VLDn_RI("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13);
2586 TESTINSN_VLDn_RI("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13);
2587 TESTINSN_VLDn_RI("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13);
2588 TESTINSN_VLDn_RI("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13);
2589 TESTINSN_VLDn_RI("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13);
2590 TESTINSN_VLDn_RI("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13);
2591 TESTINSN_VLDn_RI("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13);
2592 TESTINSN_VLDn_RI("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13);
2593
2594 fflush(stdout);
2595 printf("---- VLD4 (4-elements to all lanes) ----\n");
2596 TESTINSN_VLDn_RI("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r5, 13);
2597 TESTINSN_VLDn_RI("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r9, 42);
2598 TESTINSN_VLDn_RI("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r1, 0);
2599 TESTINSN_VLDn_RI("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15, r5, -3);
2600 TESTINSN_VLDn_RI("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20, r5, 13);
2601 TESTINSN_VLDn_RI("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31, r5, 13);
2602 TESTINSN_VLDn_RI("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13);
2603 TESTINSN_VLDn_RI("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13);
2604 TESTINSN_VLDn_RI("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11, r5, 13);
2605
2606 fflush(stdout);
2607 printf("---- VST1 (multiple single elements) ----\n");
2608 TESTINSN_VSTn_RI("vst1.8 {d0}", d0, d0, d0, d0, r5, 13);
2609 TESTINSN_VSTn_RI("vst1.16 {d0}", d0, d0, d0, d0, r9, 42);
2610 TESTINSN_VSTn_RI("vst1.32 {d0}", d0, d0, d0, d0, r5, 0);
2611 TESTINSN_VSTn_RI("vst1.64 {d0}", d0, d0, d0, d0, r5, -3);
2612 TESTINSN_VSTn_RI("vst1.8 {d9}", d9, d9, d9, d9, r5, 13);
2613 TESTINSN_VSTn_RI("vst1.16 {d17}", d17, d17, d17, d17, r5, 13);
2614 TESTINSN_VSTn_RI("vst1.32 {d31}", d31, d31, d31, d31, r5, 13);
2615 TESTINSN_VSTn_RI("vst1.64 {d14}", d14, d14, d14, d14, r5, 13);
2616 TESTINSN_VSTn_RI("vst1.8 {d0-d1}", d0, d1, d0, d1, r5, 13);
2617 TESTINSN_VSTn_RI("vst1.16 {d0-d1}", d0, d1, d0, d1, r5, 13);
2618 TESTINSN_VSTn_RI("vst1.32 {d5-d6}", d5, d6, d5, d6, r5, 13);
2619 TESTINSN_VSTn_RI("vst1.64 {d30-d31}", d30, d31, d30, d31, r5, 13);
2620 TESTINSN_VSTn_RI("vst1.8 {d0-d2}", d0, d1, d2, d0, r5, 13);
2621 TESTINSN_VSTn_RI("vst1.16 {d0-d2}", d0, d1, d2, d0, r5, 13);
2622 TESTINSN_VSTn_RI("vst1.32 {d0-d2}", d0, d1, d2, d0, r5, 13);
2623 TESTINSN_VSTn_RI("vst1.64 {d0-d2}", d0, d1, d2, d0, r5, 13);
2624 TESTINSN_VSTn_RI("vst1.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
2625 TESTINSN_VSTn_RI("vst1.16 {d0-d3}", d0, d1, d2, d3, r5, 13);
2626 TESTINSN_VSTn_RI("vst1.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
2627 TESTINSN_VSTn_RI("vst1.64 {d0-d3}", d0, d1, d2, d3, r5, 13);
2628
2629 fflush(stdout);
2630 printf("---- VST1 (single element from one lane) ----\n");
2631 TESTINSN_VSTn_RI("vst1.32 {d0[0]}", d0, d0, d0, d0, r5, 13);
2632 TESTINSN_VSTn_RI("vst1.32 {d0[1]}", d0, d0, d0, d0, r9, 42);
2633 TESTINSN_VSTn_RI("vst1.16 {d1[0]}", d1, d1, d1, d1, r1, 0);
2634 TESTINSN_VSTn_RI("vst1.16 {d1[1]}", d1, d1, d1, d1, r5, -3);
2635 TESTINSN_VSTn_RI("vst1.16 {d1[2]}", d1, d1, d1, d1, r5, 13);
2636 TESTINSN_VSTn_RI("vst1.16 {d1[3]}", d1, d1, d1, d1, r5, 13);
2637 TESTINSN_VSTn_RI("vst1.8 {d0[7]}", d0, d0, d0, d0, r5, 13);
2638 TESTINSN_VSTn_RI("vst1.8 {d1[6]}", d1, d1, d1, d1, r5, 13);
2639 TESTINSN_VSTn_RI("vst1.8 {d0[5]}", d0, d0, d0, d0, r5, 13);
2640 TESTINSN_VSTn_RI("vst1.8 {d0[4]}", d0, d0, d0, d0, r5, 13);
2641 TESTINSN_VSTn_RI("vst1.8 {d20[3]}", d20, d20, d20, d20, r5, 13);
2642 TESTINSN_VSTn_RI("vst1.8 {d0[2]}", d0, d0, d0, d0, r5, 13);
2643 TESTINSN_VSTn_RI("vst1.8 {d17[1]}", d17, d17, d17, d17, r5, 13);
2644 TESTINSN_VSTn_RI("vst1.8 {d30[0]}", d30, d30, d30, d30, r5, 13);
2645
2646 fflush(stdout);
2647 printf("---- VST2 (multiple 2-elements) ----\n");
2648 TESTINSN_VSTn_RI("vst2.8 {d30-d31}", d30, d31, d30, d31, r5, 13);
2649 TESTINSN_VSTn_RI("vst2.16 {d0-d1}", d0, d1, d0, d1, r9, 42);
2650 TESTINSN_VSTn_RI("vst2.32 {d0-d1}", d0, d1, d0, d1, r1, 0);
2651 TESTINSN_VSTn_RI("vst2.8 {d10,d12}", d10, d12, d10, d12, r5, -3);
2652 TESTINSN_VSTn_RI("vst2.16 {d20,d22}", d20, d22, d20, d22, r5, 13);
2653 TESTINSN_VSTn_RI("vst2.32 {d0,d2}", d0, d2, d0, d2, r5, 13);
2654 TESTINSN_VSTn_RI("vst2.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
2655 TESTINSN_VSTn_RI("vst2.16 {d20-d23}", d20, d21, d22, d23, r5, 13);
2656 TESTINSN_VSTn_RI("vst2.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
2657
2658 fflush(stdout);
2659 printf("---- VST2 (single 2-element structure from one lane) ----\n");
2660 TESTINSN_VSTn_RI("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13);
2661 TESTINSN_VSTn_RI("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42);
2662 TESTINSN_VSTn_RI("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0);
2663 TESTINSN_VSTn_RI("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3);
2664 TESTINSN_VSTn_RI("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13);
2665 TESTINSN_VSTn_RI("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13);
2666 TESTINSN_VSTn_RI("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13);
2667 TESTINSN_VSTn_RI("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13);
2668 TESTINSN_VSTn_RI("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13);
2669 TESTINSN_VSTn_RI("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13);
2670 TESTINSN_VSTn_RI("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13);
2671 TESTINSN_VSTn_RI("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13);
2672 TESTINSN_VSTn_RI("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13);
2673 TESTINSN_VSTn_RI("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13);
2674 TESTINSN_VSTn_RI("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13);
2675 TESTINSN_VSTn_RI("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13);
2676 TESTINSN_VSTn_RI("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13);
2677 TESTINSN_VSTn_RI("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13);
2678 TESTINSN_VSTn_RI("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13);
2679 TESTINSN_VSTn_RI("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13);
2680
2681 fflush(stdout);
2682 printf("---- VST3 (multiple 3-elements) ----\n");
2683 TESTINSN_VSTn_RI("vst3.8 {d20-d22}", d20, d21, d22, d20, r5, 13);
2684 TESTINSN_VSTn_RI("vst3.16 {d0-d2}", d0, d1, d2, d0, r9, 42);
2685 TESTINSN_VSTn_RI("vst3.32 {d0-d2}", d0, d1, d2, d0, r1, 0);
2686 TESTINSN_VSTn_RI("vst3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3);
2687 TESTINSN_VSTn_RI("vst3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13);
2688 TESTINSN_VSTn_RI("vst3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13);
2689
2690 fflush(stdout);
2691 printf("---- VST3 (single 3-element structure from one lane) ----\n");
2692 TESTINSN_VSTn_RI("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13);
2693 TESTINSN_VSTn_RI("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42);
2694 TESTINSN_VSTn_RI("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0);
2695 TESTINSN_VSTn_RI("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3);
2696 TESTINSN_VSTn_RI("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13);
2697 TESTINSN_VSTn_RI("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13);
2698 TESTINSN_VSTn_RI("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13);
2699 TESTINSN_VSTn_RI("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13);
2700 TESTINSN_VSTn_RI("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13);
2701 TESTINSN_VSTn_RI("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13);
2702 TESTINSN_VSTn_RI("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13);
2703 TESTINSN_VSTn_RI("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13);
2704 TESTINSN_VSTn_RI("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13);
2705 TESTINSN_VSTn_RI("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13);
2706 TESTINSN_VSTn_RI("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13);
2707 TESTINSN_VSTn_RI("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13);
2708 TESTINSN_VSTn_RI("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13);
2709 TESTINSN_VSTn_RI("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13);
2710 TESTINSN_VSTn_RI("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13);
2711 TESTINSN_VSTn_RI("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13);
2712
2713 fflush(stdout);
2714 printf("---- VST4 (multiple 4-elements) ----\n");
2715 TESTINSN_VSTn_RI("vst4.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
2716 TESTINSN_VSTn_RI("vst4.16 {d20-d23}", d20, d21, d22, d23, r9, 42);
2717 TESTINSN_VSTn_RI("vst4.32 {d0-d3}", d0, d1, d2, d3, r1, 0);
2718 TESTINSN_VSTn_RI("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3);
2719 TESTINSN_VSTn_RI("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13);
2720 TESTINSN_VSTn_RI("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13);
2721
2722 fflush(stdout);
2723 printf("---- VST4 (single 4-element structure from one lane) ----\n");
2724 TESTINSN_VSTn_RI("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13);
2725 TESTINSN_VSTn_RI("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42);
2726 TESTINSN_VSTn_RI("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0);
2727 TESTINSN_VSTn_RI("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3);
2728 TESTINSN_VSTn_RI("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13);
2729 TESTINSN_VSTn_RI("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13);
2730 TESTINSN_VSTn_RI("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13);
2731 TESTINSN_VSTn_RI("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13);
2732 TESTINSN_VSTn_RI("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13);
2733 TESTINSN_VSTn_RI("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13);
2734 TESTINSN_VSTn_RI("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13);
2735 TESTINSN_VSTn_RI("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13);
2736 TESTINSN_VSTn_RI("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13);
2737 TESTINSN_VSTn_RI("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13);
2738 TESTINSN_VSTn_RI("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13);
2739 TESTINSN_VSTn_RI("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13);
2740 TESTINSN_VSTn_RI("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13);
2741 TESTINSN_VSTn_RI("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13);
2742 TESTINSN_VSTn_RI("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13);
2743 TESTINSN_VSTn_RI("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13);
2744
2745 fflush(stdout);
2746 printf("---- VMOVN ----\n");
2747 TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
2748 TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
2749 TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
2750 TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
2751 TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
2752 TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
2753
2754 fflush(stdout);
2755 printf("---- VQMOVN ----\n");
2756 TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
2757 TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
2758 TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
2759 TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
2760 TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
2761 TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
2762 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
2763 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
2764 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
2765 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
2766 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
2767 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
2768 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff);
2769 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff);
2770 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff);
2771
2772 fflush(stdout);
2773 printf("---- VQMOVN ----\n");
2774 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
2775 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
2776 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
2777 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
2778 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
2779 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
2780 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff);
2781 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff);
2782 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff);
2783
2784 fflush(stdout);
2785 printf("---- VABS ----\n");
2786 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0x73);
2787 TESTINSN_un("vabs.s16 d15, d4", d15, d4, i32, 0x73);
2788 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0x73);
2789 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0xfe);
2790 TESTINSN_un("vabs.s16 d31, d4", d31, d4, i32, 0xef);
2791 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0xde);
2792 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i16, 0xfe0a);
2793 TESTINSN_un("vabs.s16 d15, d4", d15, d4, i16, 0xef0b);
2794 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i16, 0xde0c);
2795
2796 fflush(stdout);
2797 printf("---- VQABS ----\n");
2798 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0x73);
2799 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 1 << 31);
2800 TESTINSN_un_q("vqabs.s16 d0, d1", d0, d1, i32, 1 << 31);
2801 TESTINSN_un_q("vqabs.s8 d0, d1", d0, d1, i32, 1 << 31);
2802 TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i32, 0x73);
2803 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0x73);
2804 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0xfe);
2805 TESTINSN_un_q("vqabs.s16 d31, d4", d31, d4, i32, 0xef);
2806 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0xde);
2807 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i16, 0xfe0a);
2808 TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i16, 0xef0b);
2809 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i16, 0xde0c);
2810
2811 fflush(stdout);
2812 printf("---- VADDHN ----\n");
2813 TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
2814 TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2815 TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2816 TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2817 TESTINSN_bin("vaddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
2818 TESTINSN_bin("vaddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
2819 TESTINSN_bin("vaddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
2820 TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
2821 TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2822 TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2823 TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2824
2825 fflush(stdout);
2826 printf("---- VRADDHN ----\n");
2827 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
2828 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2829 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2830 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2831 TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
2832 TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
2833 TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
2834 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
2835 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2836 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2837 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2838 TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0102);
2839 TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0102);
2840 TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0102);
2841 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x02);
2842 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
2843 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
2844 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
2845
2846 fflush(stdout);
2847 printf("---- VSUBHN ----\n");
2848 TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
2849 TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2850 TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2851 TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2852 TESTINSN_bin("vsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
2853 TESTINSN_bin("vsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
2854 TESTINSN_bin("vsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
2855 TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
2856 TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2857 TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2858 TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2859
2860 fflush(stdout);
2861 printf("---- VRSUBHN ----\n");
2862 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
2863 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2864 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2865 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
2866 TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
2867 TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
2868 TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
2869 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
2870 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2871 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2872 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
2873 TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef93, q2, i32, 0x0102);
2874 TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef93, q2, i32, 0x0102);
2875 TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef93, q8, i32, 0x0102);
2876 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x93, q1, i32, 0x02);
2877 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
2878 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
2879 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
2880
2881 fflush(stdout);
2882 printf("---- VCEQ #0 ----\n");
2883 TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x21);
2884 TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x21);
2885 TESTINSN_un("vceq.i8 d10, d11, #0", d10, d11, i32, 0x21);
2886 TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x0);
2887 TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x0);
2888 TESTINSN_un("vceq.i8 d10, d31, #0", d10, d31, i32, 0x0);
2889
2890 fflush(stdout);
2891 printf("---- VCGT #0 ----\n");
2892 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x21);
2893 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x21);
2894 TESTINSN_un("vcgt.s8 d10, d31, #0", d10, d31, i32, 0x21);
2895 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x0);
2896 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x0);
2897 TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i32, 0x0);
2898 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i8, 0xef);
2899 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i8, 0xed);
2900 TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i8, 0xae);
2901
2902 fflush(stdout);
2903 printf("---- VCGE #0 ----\n");
2904 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x21);
2905 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x21);
2906 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0x21);
2907 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x0);
2908 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x0);
2909 TESTINSN_un("vcge.s8 d10, d31, #0", d10, d31, i32, 0x0);
2910 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i8, 0xef);
2911 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i8, 0xed);
2912 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i8, 0xae);
2913 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0xef);
2914 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0xed);
2915 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0xae);
2916
2917 fflush(stdout);
2918 printf("---- VCLE #0 ----\n");
2919 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x21);
2920 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x21);
2921 TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i32, 0x21);
2922 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x0);
2923 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x0);
2924 TESTINSN_un("vcle.s8 d10, d31, #0", d10, d31, i32, 0x0);
2925 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i8, 0xef);
2926 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i8, 0xed);
2927 TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i8, 0xae);
2928
2929 fflush(stdout);
2930 printf("---- VCLT #0 ----\n");
2931 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x21);
2932 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x21);
2933 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x21);
2934 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x0);
2935 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x0);
2936 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x0);
2937 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i8, 0xef);
2938 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i8, 0xed);
2939 TESTINSN_un("vclt.s8 d10, d31, #0", d10, d31, i8, 0xae);
2940 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0xef);
2941 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0xed);
2942 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0xae);
2943
2944 fflush(stdout);
2945 printf("---- VCNT ----\n");
2946 TESTINSN_un("vcnt.8 d0, d1", d0, d1, i32, 0xac3d25eb);
2947 TESTINSN_un("vcnt.8 d11, d14", d11, d14, i32, 0xac3d25eb);
2948 TESTINSN_un("vcnt.8 d6, d2", d6, d2, i32, 0xad0eb);
2949
2950 fflush(stdout);
2951 printf("---- VCLS ----\n");
2952 TESTINSN_un("vcls.s8 d0, d1", d0, d1, i32, 0x21);
2953 TESTINSN_un("vcls.s8 d30, d31", d30, d31, i8, 0x82);
2954 TESTINSN_un("vcls.s16 d0, d1", d0, d1, i32, 0x21);
2955 TESTINSN_un("vcls.s16 d31, d30", d31, d30, i8, 0x82);
2956 TESTINSN_un("vcls.s32 d6, d1", d6, d1, i32, 0x21);
2957 TESTINSN_un("vcls.s32 d30, d5", d30, d5, i8, 0x82);
2958 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0xff);
2959 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0xff);
2960 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0xff);
2961 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0xffef);
2962 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0xffef);
2963 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0xffef);
2964 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0x00);
2965 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0x00);
2966 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0x00);
2967 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0x00ef);
2968 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0x00ef);
2969 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0x00ef);
2970
2971 fflush(stdout);
2972 printf("---- VCLZ ----\n");
2973 TESTINSN_un("vclz.i8 d0, d1", d0, d1, i32, 0x21);
2974 TESTINSN_un("vclz.i8 d30, d31", d30, d31, i8, 0x82);
2975 TESTINSN_un("vclz.i16 d0, d1", d0, d1, i32, 0x21);
2976 TESTINSN_un("vclz.i16 d31, d30", d31, d30, i8, 0x82);
2977 TESTINSN_un("vclz.i32 d6, d1", d6, d1, i32, 0x21);
2978 TESTINSN_un("vclz.i32 d30, d5", d30, d5, i8, 0x82);
2979 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0xff);
2980 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0xff);
2981 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0xff);
2982 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0xffef);
2983 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0xffef);
2984 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0xffef);
2985 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0x00);
2986 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0x00);
2987 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0x00);
2988 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0x00ef);
2989 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0x00ef);
2990 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0x00ef);
2991
2992 fflush(stdout);
2993 printf("---- VSLI ----\n");
2994 TESTINSN_un("vsli.16 d0, d1, #1", d0, d1, i32, 7);
2995 TESTINSN_un("vsli.16 d3, d4, #2", d3, d4, i32, -0x7c);
2996 TESTINSN_un("vsli.32 d2, d5, #31", d2, d5, i32, -1);
2997 TESTINSN_un("vsli.8 d6, d7, #7", d6, d7, i32, 0xffff);
2998 TESTINSN_un("vsli.16 d8, d9, #12", d8, d9, i32, -10);
2999 TESTINSN_un("vsli.32 d10, d11, #5", d10, d11, i32, 10234);
3000 TESTINSN_un("vsli.8 d12, d13, #1", d12, d13, i32, -1);
3001 TESTINSN_un("vsli.16 d14, d15, #11", d14, d15, i32, -1);
3002 TESTINSN_un("vsli.32 d10, d11, #9", d10, d11, i32, 1000);
3003 TESTINSN_un("vsli.8 d7, d13, #7", d7, d13, i32, -1);
3004 TESTINSN_un("vsli.16 d8, d1, #1", d8, d1, i32, 0xabcf);
3005 TESTINSN_un("vsli.32 d12, d3, #15", d12, d3, i32, -0x1b0);
3006 TESTINSN_un("vsli.64 d0, d1, #42", d0, d1, i32, -1);
3007 TESTINSN_un("vsli.64 d6, d7, #12", d6, d7, i32, 0xfac);
3008 TESTINSN_un("vsli.64 d8, d4, #9", d8, d4, i32, 13560);
3009 TESTINSN_un("vsli.64 d9, d12, #11", d9, d12, i32, 98710);
3010
3011 fflush(stdout);
3012 printf("---- VPADD ----\n");
3013 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
3014 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
3015 TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
3016 TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
3017 TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3018 TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3019 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3020 TESTINSN_bin("vpadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
3021
3022 fflush(stdout);
3023 printf("---- VPADDL ----\n");
3024 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 24);
3025 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 140);
3026 TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, 140);
3027 TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, 140);
3028 TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, (1 << 31) + 1);
3029 TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, (1 << 31) + 1);
3030 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, (1 << 31) + 1);
3031 TESTINSN_un("vpaddl.u32 d10, d11", d10, d11, i32, 24);
3032 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 24);
3033 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 140);
3034 TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, 140);
3035 TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, 140);
3036 TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, (1 << 31) + 1);
3037 TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, (1 << 31) + 1);
3038 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, (1 << 31) + 1);
3039 TESTINSN_un("vpaddl.s32 d10, d11", d10, d11, i32, 24);
3040
3041 fflush(stdout);
3042 printf("---- VPADAL ----\n");
3043 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 24);
3044 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 140);
3045 TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, 140);
3046 TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i8, 140);
3047 TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i32, (1 << 31) + 1);
3048 TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, (1 << 31) + 1);
3049 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, (1 << 31) + 1);
3050 TESTINSN_un("vpadal.u32 d10, d11", d10, d11, i32, 24);
3051 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 24);
3052 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 140);
3053 TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, 140);
3054 TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i8, 140);
3055 TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i32, (1 << 31) + 1);
3056 TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, (1 << 31) + 1);
3057 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, (1 << 31) + 1);
3058 TESTINSN_un("vpadal.s32 d10, d11", d10, d11, i32, 24);
3059
3060 fflush(stdout);
3061 printf("---- VZIP ----\n");
3062 TESTINSN_dual("vzip.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
3063 TESTINSN_dual("vzip.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
3064 TESTINSN_dual("vzip.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
3065 TESTINSN_dual("vzip.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
3066 TESTINSN_dual("vzip.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
3067 TESTINSN_dual("vzip.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
3068
3069 fflush(stdout);
3070 printf("---- VUZP ----\n");
3071 TESTINSN_dual("vuzp.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
3072 TESTINSN_dual("vuzp.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
3073 TESTINSN_dual("vuzp.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
3074 TESTINSN_dual("vuzp.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
3075 TESTINSN_dual("vuzp.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
3076 TESTINSN_dual("vuzp.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
3077
3078 fflush(stdout);
3079 printf("---- VTRN ----\n");
3080 TESTINSN_dual("vtrn.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
3081 TESTINSN_dual("vtrn.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
3082 TESTINSN_dual("vtrn.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
3083 TESTINSN_dual("vtrn.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
3084 TESTINSN_dual("vtrn.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
3085 TESTINSN_dual("vtrn.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
3086
3087 fflush(stdout);
3088 printf("---- VSWP ----\n");
3089 TESTINSN_dual("vswp d0, d1", d0, i8, 0x12, d1, i8, 0x34);
3090 TESTINSN_dual("vswp d1, d0", d0, i8, 0x12, d1, i8, 0x34);
3091 TESTINSN_dual("vswp d10, d11", d10, i8, 0x12, d11, i8, 0x34);
3092 TESTINSN_dual("vswp d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
3093 TESTINSN_dual("vswp d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
3094 TESTINSN_dual("vswp d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
3095
3096 fflush(stdout);
3097 printf("---- VSHRN ----\n");
3098 TESTINSN_un("vshrn.i16 d0, q1, #1", d0, q1, i32, -1);
3099 TESTINSN_un("vshrn.i16 d3, q4, #2", d3, q4, i32, -0x7c);
3100 TESTINSN_un("vshrn.i32 d2, q5, #10", d2, q5, i32, -1);
3101 TESTINSN_un("vshrn.i32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
3102 TESTINSN_un("vshrn.i64 d6, q7, #7", d6, q7, i32, 0xffff);
3103 TESTINSN_un("vshrn.i16 d8, q9, #8", d8, q9, i32, -10);
3104 TESTINSN_un("vshrn.i32 d10, q11, #5", d10, q11, i32, 10234);
3105 TESTINSN_un("vshrn.i64 d12, q13, #1", d12, q13, i32, -1);
3106 TESTINSN_un("vshrn.i16 d14, q15, #6", d14, q15, i32, -1);
3107 TESTINSN_un("vshrn.i32 d10, q11, #9", d10, q11, i32, 1000);
3108 TESTINSN_un("vshrn.i64 d7, q13, #7", d7, q13, i32, -1);
3109 TESTINSN_un("vshrn.i16 d8, q1, #1", d8, q1, i32, 0xabcf);
3110 TESTINSN_un("vshrn.i32 d12, q3, #15", d12, q3, i32, -0x1b0);
3111 TESTINSN_un("vshrn.i64 d0, q1, #22", d0, q1, i32, -1);
3112 TESTINSN_un("vshrn.i64 d6, q7, #12", d6, q7, i32, 0xfac);
3113 TESTINSN_un("vshrn.i64 d8, q4, #9", d8, q4, i32, 13560);
3114 TESTINSN_un("vshrn.i64 d9, q12, #11", d9, q12, i32, 98710);
3115
3116 fflush(stdout);
3117 printf("---- VDUP ----\n");
3118 TESTINSN_un("vdup.8 d12, d2[0]", d12, d2, i32, 0xabc4657);
3119 TESTINSN_un("vdup.8 d0, d3[2]", d0, d3, i32, 0x7a1b3);
3120 TESTINSN_un("vdup.8 d1, d0[7]", d1, d0, i32, 0x713aaa);
3121 TESTINSN_un("vdup.8 d10, d4[3]", d10, d4, i32, 0xaa713);
3122 TESTINSN_un("vdup.8 d4, d28[4]", d4, d28, i32, 0x7b1c3);
3123 TESTINSN_un("vdup.16 d17, d19[1]", d17, d19, i32, 0x713ffff);
3124 TESTINSN_un("vdup.16 d15, d31[2]", d15, d31, i32, 0x7f00fa);
3125 TESTINSN_un("vdup.16 d6, d2[0]", d6, d2, i32, 0xffabcde);
3126 TESTINSN_un("vdup.16 d8, d22[3]", d8, d22, i32, 0x713);
3127 TESTINSN_un("vdup.16 d9, d2[0]", d9, d2, i32, 0x713);
3128 TESTINSN_un("vdup.32 d10, d17[1]", d10, d17, i32, 0x713);
3129 TESTINSN_un("vdup.32 d15, d11[0]", d15, d11, i32, 0x3);
3130 TESTINSN_un("vdup.32 d30, d29[1]", d30, d29, i32, 0xf00000aa);
3131 TESTINSN_un("vdup.32 d22, d0[1]", d22, d0, i32, 0xf);
3132 TESTINSN_un("vdup.32 d13, d13[0]", d13, d13, i32, -1);
3133
3134 fflush(stdout);
3135 printf("---- VQDMULH ----\n");
3136 TESTINSN_bin_q("vqdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
3137 TESTINSN_bin_q("vqdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
3138 TESTINSN_bin_q("vqdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
3139 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
3140 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
3141 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
3142 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
3143 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
3144 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
3145 TESTINSN_bin_q("vqdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
3146 TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
3147 TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
3148 TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31);
3149 TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30);
3150
3151 fflush(stdout);
3152 printf("---- VQDMULH (by scalar) ----\n");
3153 TESTINSN_bin_q("vqdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120);
3154 TESTINSN_bin_q("vqdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120);
3155 TESTINSN_bin_q("vqdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120);
3156 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
3157 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
3158 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
3159 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12);
3160 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
3161 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
3162 TESTINSN_bin_q("vqdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120);
3163 TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31);
3164 TESTINSN_bin_q("vqdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, 1 << 31);
3165 TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31);
3166 TESTINSN_bin_q("vqdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30);
3167
3168 fflush(stdout);
3169 printf("---- VSHRN ----\n");
3170 TESTINSN_un("vshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657);
3171 TESTINSN_un("vshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3);
3172 TESTINSN_un("vshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa);
3173 TESTINSN_un("vshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713);
3174 TESTINSN_un("vshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3);
3175 TESTINSN_un("vshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff);
3176 TESTINSN_un("vshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa);
3177 TESTINSN_un("vshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc);
3178 TESTINSN_un("vshrn.i16 d8, q12, #3", d8, q12, i32, 0x713);
3179 TESTINSN_un("vshrn.i16 d9, q2, #7", d9, q2, i32, 0x713);
3180 TESTINSN_un("vshrn.i32 d10, q13, #2", d10, q13, i32, 0x713);
3181 TESTINSN_un("vshrn.i32 d15, q11, #1", d15, q11, i32, 0x3);
3182 TESTINSN_un("vshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa);
3183 TESTINSN_un("vshrn.i32 d12, q0, #6", d12, q0, i32, 0xf);
3184 TESTINSN_un("vshrn.i32 d13, q13, #2", d13, q13, i32, -1);
3185
3186 fflush(stdout);
3187 printf("---- VQSHRN ----\n");
3188 TESTINSN_un_q("vqshrn.s16 d0, q1, #1", d0, q1, i32, -1);
3189 TESTINSN_un_q("vqshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c);
3190 TESTINSN_un_q("vqshrn.s32 d2, q5, #10", d2, q5, i32, -1);
3191 TESTINSN_un_q("vqshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
3192 TESTINSN_un_q("vqshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
3193 TESTINSN_un_q("vqshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff);
3194 TESTINSN_un_q("vqshrn.s16 d8, q9, #8", d8, q9, i32, -10);
3195 TESTINSN_un_q("vqshrn.s32 d10, q11, #5", d10, q11, i32, 10234);
3196 TESTINSN_un_q("vqshrn.s64 d12, q13, #1", d12, q13, i32, -1);
3197 TESTINSN_un_q("vqshrn.s16 d14, q15, #6", d14, q15, i32, -1);
3198 TESTINSN_un_q("vqshrn.s32 d10, q11, #9", d10, q11, i32, 1000);
3199 TESTINSN_un_q("vqshrn.s64 d7, q13, #7", d7, q13, i32, -1);
3200 TESTINSN_un_q("vqshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
3201 TESTINSN_un_q("vqshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
3202 TESTINSN_un_q("vqshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
3203 TESTINSN_un_q("vqshrn.s64 d0, q1, #22", d0, q1, i32, -1);
3204 TESTINSN_un_q("vqshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac);
3205 TESTINSN_un_q("vqshrn.s64 d8, q4, #9", d8, q4, i32, 13560);
3206 TESTINSN_un_q("vqshrn.s64 d9, q12, #11", d9, q12, i32, 98710);
3207 TESTINSN_un_q("vqshrn.u16 d0, q1, #1", d0, q1, i32, -1);
3208 TESTINSN_un_q("vqshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c);
3209 TESTINSN_un_q("vqshrn.u32 d2, q5, #10", d2, q5, i32, -1);
3210 TESTINSN_un_q("vqshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
3211 TESTINSN_un_q("vqshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff);
3212 TESTINSN_un_q("vqshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff);
3213 TESTINSN_un_q("vqshrn.u16 d8, q9, #8", d8, q9, i32, -10);
3214 TESTINSN_un_q("vqshrn.u32 d10, q11, #5", d10, q11, i32, 10234);
3215 TESTINSN_un_q("vqshrn.u64 d12, q13, #1", d12, q13, i32, -1);
3216 TESTINSN_un_q("vqshrn.u16 d14, q15, #6", d14, q15, i32, -1);
3217 TESTINSN_un_q("vqshrn.u32 d10, q11, #9", d10, q11, i32, 1000);
3218 TESTINSN_un_q("vqshrn.u64 d7, q13, #7", d7, q13, i32, -1);
3219 TESTINSN_un_q("vqshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf);
3220 TESTINSN_un_q("vqshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf);
3221 TESTINSN_un_q("vqshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0);
3222 TESTINSN_un_q("vqshrn.u64 d0, q1, #22", d0, q1, i32, -1);
3223 TESTINSN_un_q("vqshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac);
3224 TESTINSN_un_q("vqshrn.u64 d8, q4, #9", d8, q4, i32, 13560);
3225 TESTINSN_un_q("vqshrn.u64 d9, q12, #11", d9, q12, i32, 98710);
3226
3227 fflush(stdout);
3228 printf("---- VQSHRUN ----\n");
3229 TESTINSN_un_q("vqshrun.s16 d0, q1, #1", d0, q1, i32, -1);
3230 TESTINSN_un_q("vqshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c);
3231 TESTINSN_un_q("vqshrun.s32 d2, q5, #10", d2, q5, i32, -1);
3232 TESTINSN_un_q("vqshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
3233 TESTINSN_un_q("vqshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
3234 TESTINSN_un_q("vqshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff);
3235 TESTINSN_un_q("vqshrun.s16 d8, q9, #8", d8, q9, i32, -10);
3236 TESTINSN_un_q("vqshrun.s32 d10, q11, #5", d10, q11, i32, 10234);
3237 TESTINSN_un_q("vqshrun.s64 d12, q13, #1", d12, q13, i32, -1);
3238 TESTINSN_un_q("vqshrun.s16 d14, q15, #6", d14, q15, i32, -1);
3239 TESTINSN_un_q("vqshrun.s32 d10, q11, #9", d10, q11, i32, 1000);
3240 TESTINSN_un_q("vqshrun.s64 d7, q13, #7", d7, q13, i32, -1);
3241 TESTINSN_un_q("vqshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
3242 TESTINSN_un_q("vqshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
3243 TESTINSN_un_q("vqshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
3244 TESTINSN_un_q("vqshrun.s64 d0, q1, #22", d0, q1, i32, -1);
3245 TESTINSN_un_q("vqshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac);
3246 TESTINSN_un_q("vqshrun.s64 d8, q4, #9", d8, q4, i32, 13560);
3247 TESTINSN_un_q("vqshrun.s64 d9, q12, #11", d9, q12, i32, 98710);
3248
3249 fflush(stdout);
3250 printf("---- VQRSHRN ----\n");
3251 TESTINSN_un_q("vqrshrn.s16 d0, q1, #1", d0, q1, i32, -1);
3252 TESTINSN_un_q("vqrshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c);
3253 TESTINSN_un_q("vqrshrn.s32 d2, q5, #10", d2, q5, i32, -1);
3254 TESTINSN_un_q("vqrshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
3255 TESTINSN_un_q("vqrshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
3256 TESTINSN_un_q("vqrshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff);
3257 TESTINSN_un_q("vqrshrn.s16 d8, q9, #8", d8, q9, i32, -10);
3258 TESTINSN_un_q("vqrshrn.s32 d10, q11, #5", d10, q11, i32, 10234);
3259 TESTINSN_un_q("vqrshrn.s64 d12, q13, #1", d12, q13, i32, -1);
3260 TESTINSN_un_q("vqrshrn.s16 d14, q15, #6", d14, q15, i32, -1);
3261 TESTINSN_un_q("vqrshrn.s32 d10, q11, #9", d10, q11, i32, 1000);
3262 TESTINSN_un_q("vqrshrn.s64 d7, q13, #7", d7, q13, i32, -1);
3263 TESTINSN_un_q("vqrshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
3264 TESTINSN_un_q("vqrshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
3265 TESTINSN_un_q("vqrshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
3266 TESTINSN_un_q("vqrshrn.s64 d0, q1, #22", d0, q1, i32, -1);
3267 TESTINSN_un_q("vqrshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac);
3268 TESTINSN_un_q("vqrshrn.s64 d8, q4, #9", d8, q4, i32, 13560);
3269 TESTINSN_un_q("vqrshrn.s64 d9, q12, #11", d9, q12, i32, 98710);
3270 TESTINSN_un_q("vqrshrn.u16 d0, q1, #1", d0, q1, i32, -1);
3271 TESTINSN_un_q("vqrshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c);
3272 TESTINSN_un_q("vqrshrn.u32 d2, q5, #10", d2, q5, i32, -1);
3273 TESTINSN_un_q("vqrshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
3274 TESTINSN_un_q("vqrshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff);
3275 TESTINSN_un_q("vqrshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff);
3276 TESTINSN_un_q("vqrshrn.u16 d8, q9, #8", d8, q9, i32, -10);
3277 TESTINSN_un_q("vqrshrn.u32 d10, q11, #5", d10, q11, i32, 10234);
3278 TESTINSN_un_q("vqrshrn.u64 d12, q13, #1", d12, q13, i32, -1);
3279 TESTINSN_un_q("vqrshrn.u16 d14, q15, #6", d14, q15, i32, -1);
3280 TESTINSN_un_q("vqrshrn.u32 d10, q11, #9", d10, q11, i32, 1000);
3281 TESTINSN_un_q("vqrshrn.u64 d7, q13, #7", d7, q13, i32, -1);
3282 TESTINSN_un_q("vqrshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf);
3283 TESTINSN_un_q("vqrshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf);
3284 TESTINSN_un_q("vqrshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0);
3285 TESTINSN_un_q("vqrshrn.u64 d0, q1, #22", d0, q1, i32, -1);
3286 TESTINSN_un_q("vqrshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac);
3287 TESTINSN_un_q("vqrshrn.u64 d8, q4, #9", d8, q4, i32, 13560);
3288 TESTINSN_un_q("vqrshrn.u64 d9, q12, #11", d9, q12, i32, 98710);
3289
3290 fflush(stdout);
3291 printf("---- VQRSHRUN ----\n");
3292 TESTINSN_un_q("vqrshrun.s16 d0, q1, #1", d0, q1, i32, -1);
3293 TESTINSN_un_q("vqrshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c);
3294 TESTINSN_un_q("vqrshrun.s32 d2, q5, #10", d2, q5, i32, -1);
3295 TESTINSN_un_q("vqrshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
3296 TESTINSN_un_q("vqrshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
3297 TESTINSN_un_q("vqrshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff);
3298 TESTINSN_un_q("vqrshrun.s16 d8, q9, #8", d8, q9, i32, -10);
3299 TESTINSN_un_q("vqrshrun.s32 d10, q11, #5", d10, q11, i32, 10234);
3300 TESTINSN_un_q("vqrshrun.s64 d12, q13, #1", d12, q13, i32, -1);
3301 TESTINSN_un_q("vqrshrun.s16 d14, q15, #6", d14, q15, i32, -1);
3302 TESTINSN_un_q("vqrshrun.s32 d10, q11, #9", d10, q11, i32, 1000);
3303 TESTINSN_un_q("vqrshrun.s64 d7, q13, #7", d7, q13, i32, -1);
3304 TESTINSN_un_q("vqrshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
3305 TESTINSN_un_q("vqrshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
3306 TESTINSN_un_q("vqrshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
3307 TESTINSN_un_q("vqrshrun.s64 d0, q1, #22", d0, q1, i32, -1);
3308 TESTINSN_un_q("vqrshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac);
3309 TESTINSN_un_q("vqrshrun.s64 d8, q4, #9", d8, q4, i32, 13560);
3310 TESTINSN_un_q("vqrshrun.s64 d9, q12, #11", d9, q12, i32, 98710);
3311
3312 fflush(stdout);
3313 printf("---- VRSHRN ----\n");
3314 TESTINSN_un("vrshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657);
3315 TESTINSN_un("vrshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3);
3316 TESTINSN_un("vrshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa);
3317 TESTINSN_un("vrshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713);
3318 TESTINSN_un("vrshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3);
3319 TESTINSN_un("vrshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff);
3320 TESTINSN_un("vrshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa);
3321 TESTINSN_un("vrshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc);
3322 TESTINSN_un("vrshrn.i16 d8, q12, #3", d8, q12, i32, 0x713);
3323 TESTINSN_un("vrshrn.i16 d9, q2, #7", d9, q2, i32, 0x713);
3324 TESTINSN_un("vrshrn.i32 d10, q13, #2", d10, q13, i32, 0x713);
3325 TESTINSN_un("vrshrn.i32 d15, q11, #1", d15, q11, i32, 0x3);
3326 TESTINSN_un("vrshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa);
3327 TESTINSN_un("vrshrn.i32 d12, q0, #6", d12, q0, i32, 0xf);
3328 TESTINSN_un("vrshrn.i32 d13, q13, #2", d13, q13, i32, -1);
3329
3330 fflush(stdout);
3331 printf("---- VSHL (immediate) ----\n");
3332 TESTINSN_un("vshl.i64 d0, d1, #1", d0, d1, i32, 24);
3333 TESTINSN_un("vshl.i64 d5, d2, #1", d5, d2, i32, (1 << 30));
3334 TESTINSN_un("vshl.i64 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
3335 TESTINSN_un("vshl.i64 d11, d2, #12", d11, d2, i32, -1);
3336 TESTINSN_un("vshl.i64 d15, d12, #63", d15, d12, i32, 5);
3337 TESTINSN_un("vshl.i64 d5, d12, #62", d5, d12, i32, (1 << 31) + 1);
3338 TESTINSN_un("vshl.i32 d0, d1, #1", d0, d1, i32, 24);
3339 TESTINSN_un("vshl.i32 d5, d2, #1", d5, d2, i32, (1 << 30));
3340 TESTINSN_un("vshl.i32 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
3341 TESTINSN_un("vshl.i32 d11, d2, #12", d11, d2, i32, -1);
3342 TESTINSN_un("vshl.i32 d15, d12, #20", d15, d12, i32, 5);
3343 TESTINSN_un("vshl.i32 d5, d12, #30", d5, d12, i32, (1 << 31) + 1);
3344 TESTINSN_un("vshl.i16 d0, d1, #1", d0, d1, i16, 24);
3345 TESTINSN_un("vshl.i16 d5, d2, #1", d5, d2, i32, (1 << 30));
3346 TESTINSN_un("vshl.i16 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
3347 TESTINSN_un("vshl.i16 d11, d2, #12", d11, d2, i16, -1);
3348 TESTINSN_un("vshl.i16 d15, d12, #3", d15, d12, i16, 5);
3349 TESTINSN_un("vshl.i16 d5, d12, #14", d5, d12, i32, (1 << 31) + 1);
3350 TESTINSN_un("vshl.i8 d0, d1, #1", d0, d1, i8, 24);
3351 TESTINSN_un("vshl.i8 d5, d2, #1", d5, d2, i32, (1 << 30));
3352 TESTINSN_un("vshl.i8 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
3353 TESTINSN_un("vshl.i8 d11, d2, #7", d11, d2, i8, -1);
3354 TESTINSN_un("vshl.i8 d15, d12, #3", d15, d12, i8, 5);
3355 TESTINSN_un("vshl.i8 d5, d12, #6", d5, d12, i32, (1 << 31) + 1);
3356
3357 fflush(stdout);
3358 printf("---- VNEG ----\n");
3359 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0x73);
3360 TESTINSN_un("vneg.s16 d15, d4", d15, d4, i32, 0x73);
3361 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0x73);
3362 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0xfe);
3363 TESTINSN_un("vneg.s16 d31, d4", d31, d4, i32, 0xef);
3364 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0xde);
3365 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i16, 0xfe0a);
3366 TESTINSN_un("vneg.s16 d15, d4", d15, d4, i16, 0xef0b);
3367 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i16, 0xde0c);
3368
3369 fflush(stdout);
3370 printf("---- VQNEG ----\n");
3371 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0x73);
3372 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 1 << 31);
3373 TESTINSN_un_q("vqneg.s16 d0, d1", d0, d1, i32, 1 << 31);
3374 TESTINSN_un_q("vqneg.s8 d0, d1", d0, d1, i32, 1 << 31);
3375 TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i32, 0x73);
3376 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0x73);
3377 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0xfe);
3378 TESTINSN_un_q("vqneg.s16 d31, d4", d31, d4, i32, 0xef);
3379 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0xde);
3380 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i16, 0xfe0a);
3381 TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i16, 0xef0b);
3382 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i16, 0xde0c);
3383
3384 fflush(stdout);
3385 printf("---- VREV ----\n");
3386 TESTINSN_un("vrev64.8 d0, d1", d0, d1, i32, 0xaabbccdd);
3387 TESTINSN_un("vrev64.16 d10, d31", d10, d31, i32, 0xaabbccdd);
3388 TESTINSN_un("vrev64.32 d1, d14", d1, d14, i32, 0xaabbccdd);
3389 TESTINSN_un("vrev32.8 d0, d1", d0, d1, i32, 0xaabbccdd);
3390 TESTINSN_un("vrev32.16 d30, d15", d30, d15, i32, 0xaabbccdd);
3391 TESTINSN_un("vrev16.8 d0, d1", d0, d1, i32, 0xaabbccdd);
3392
3393 fflush(stdout);
3394 printf("---- VTBL ----\n");
3395 TESTINSN_tbl_1("vtbl.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678);
3396 TESTINSN_tbl_1("vtbl.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678);
3397 TESTINSN_tbl_1("vtbl.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678);
3398 TESTINSN_tbl_1("vtbl.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678);
3399 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678);
3400 TESTINSN_tbl_1("vtbl.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678);
3401 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678);
3402 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678);
3403 TESTINSN_tbl_2("vtbl.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3404 TESTINSN_tbl_2("vtbl.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4);
3405 TESTINSN_tbl_2("vtbl.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4);
3406 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3407 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3408 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3409 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3410 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3411 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3412 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3413 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3414 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3415 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3416 TESTINSN_tbl_3("vtbl.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3417 TESTINSN_tbl_3("vtbl.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd);
3418 TESTINSN_tbl_3("vtbl.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd);
3419 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3420 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3421 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3422 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3423 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3424 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3425 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3426 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3427 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3428 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3429 TESTINSN_tbl_4("vtbl.8 d0, {d2-d5}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3430 TESTINSN_tbl_4("vtbl.8 d0, {d1-d4}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd, d4, i32, 0xfefdfcfb);
3431 TESTINSN_tbl_4("vtbl.8 d0, {d28-d31}, d1", d0, d1, i8, 0x17, d28, i32, 0x12345678, d29, i32, 0xa1a2a3a4, d30, i32, 0xcacbcccd, d31, i32, 0xfefdfcfb);
3432 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3433 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1a, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3434 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3435 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3436 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1f, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3437 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1a0315ff, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3438 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3439 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x171efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3440 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1d130f1a, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3441 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x17101c11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3442
3443 fflush(stdout);
3444 printf("---- VTBX ----\n");
3445 TESTINSN_tbl_1("vtbx.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678);
3446 TESTINSN_tbl_1("vtbx.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678);
3447 TESTINSN_tbl_1("vtbx.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678);
3448 TESTINSN_tbl_1("vtbx.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678);
3449 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678);
3450 TESTINSN_tbl_1("vtbx.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678);
3451 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678);
3452 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678);
3453 TESTINSN_tbl_2("vtbx.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3454 TESTINSN_tbl_2("vtbx.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4);
3455 TESTINSN_tbl_2("vtbx.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4);
3456 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3457 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3458 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3459 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3460 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
3461 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3462 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3463 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3464 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3465 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
3466 TESTINSN_tbl_3("vtbx.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3467 TESTINSN_tbl_3("vtbx.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd);
3468 TESTINSN_tbl_3("vtbx.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd);
3469 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3470 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3471 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3472 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3473 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
3474 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3475 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3476 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3477 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3478 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
3479 TESTINSN_tbl_4("vtbx.8 d0, {d2-d5}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3480 TESTINSN_tbl_4("vtbx.8 d0, {d1-d4}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd, d4, i32, 0xfefdfcfb);
3481 TESTINSN_tbl_4("vtbx.8 d0, {d28-d31}, d1", d0, d1, i8, 0x17, d28, i32, 0x12345678, d29, i32, 0xa1a2a3a4, d30, i32, 0xcacbcccd, d31, i32, 0xfefdfcfb);
3482 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3483 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1a, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3484 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3485 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3486 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1f, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb);
3487 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1a0315ff, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3488 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3489 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x171efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3490 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1d130f1a, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3491 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x17101c11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb);
3492
3493 fflush(stdout);
3494 printf("---- VPMAX (integer) ----\n");
3495 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
3496 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
3497 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
3498 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
3499 TESTINSN_bin("vpmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
3500 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
3501 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3502 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3503 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
3504 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3505 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3506 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
3507 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3508 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3509 TESTINSN_bin("vpmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
3510 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
3511 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
3512 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
3513 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
3514 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120);
3515 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3516 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3517 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3518 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3519 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3520 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3521 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3522 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3523 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3524 TESTINSN_bin("vpmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
3525
3526 fflush(stdout);
3527 printf("---- VPMIN (integer) ----\n");
3528 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
3529 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
3530 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
3531 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
3532 TESTINSN_bin("vpmin.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
3533 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
3534 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3535 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3536 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
3537 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3538 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3539 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
3540 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3541 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3542 TESTINSN_bin("vpmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
3543 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
3544 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
3545 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
3546 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
3547 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120);
3548 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3549 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3550 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
3551 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3552 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3553 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
3554 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3555 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3556 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
3557 TESTINSN_bin("vpmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
3558
3559 fflush(stdout);
3560 printf("---- VQRDMULH ----\n");
3561 TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
3562 TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
3563 TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
3564 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
3565 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
3566 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
3567 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
3568 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
3569 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
3570 TESTINSN_bin_q("vqrdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
3571 TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
3572 TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, (1 << 31) + 1);
3573 TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31);
3574 TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30);
3575
3576 fflush(stdout);
3577 printf("---- VQRDMULH (by scalar) ----\n");
3578 TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120);
3579 TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120);
3580 TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120);
3581 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
3582 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
3583 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
3584 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12);
3585 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
3586 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
3587 TESTINSN_bin_q("vqrdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120);
3588 TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31);
3589 TESTINSN_bin_q("vqrdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
3590 TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31);
3591 TESTINSN_bin_q("vqrdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30);
3592
3593 fflush(stdout);
3594 printf("---- VADD (fp) ----\n");
3595 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
3596 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
3597 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
3598 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
3599 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
3600 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
3601 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
3602 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
3603 TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
3604 TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
3605 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
3606 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
3607 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
3608 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
3609 TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
3610 TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
3611 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
3612 TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
3613 TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
3614 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
3615 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3616 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3617 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3618 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3619 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3620 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3621 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3622 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3623 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3624 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3625 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3626 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3627 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3628 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3629 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3630 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3631 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3632 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3633 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3634 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3635
3636 fflush(stdout);
3637 printf("---- VSUB (fp) ----\n");
3638 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
3639 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
3640 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
3641 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
3642 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
3643 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
3644 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
3645 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
3646 TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
3647 TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
3648 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
3649 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
3650 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
3651 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
3652 TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
3653 TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
3654 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
3655 TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
3656 TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
3657 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
3658 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3659 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3660 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3661 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3662 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3663 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3664 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3665 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3666 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3667 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3668 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3669 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3670 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3671 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3672 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3673 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3674 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3675 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3676 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3677 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3678
3679 fflush(stdout);
3680 printf("---- VMUL (fp) ----\n");
3681 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
3682 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
3683 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
3684 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
3685 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
3686 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
3687 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
3688 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
3689 TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
3690 TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
3691 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
3692 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
3693 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
3694 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
3695 TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
3696 TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
3697 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
3698 TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
3699 TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
3700 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
3701 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3702 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3703 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3704 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3705 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3706 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3707 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3708 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3709 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3710 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3711 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3712 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3713 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3714 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3715 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3716 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3717 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3718 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3719 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3720 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3721
3722 fflush(stdout);
3723 printf("---- VMUL (fp by scalar) ----\n");
3724 TESTINSN_bin("vmul.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120));
3725 TESTINSN_bin("vmul.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120));
3726 TESTINSN_bin("vmul.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
3727 TESTINSN_bin("vmul.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
3728 TESTINSN_bin("vmul.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
3729 TESTINSN_bin("vmul.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19));
3730 TESTINSN_bin("vmul.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11));
3731 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3732 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3733 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3734 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3735 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3736 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3737 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3738 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3739 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3740 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3741 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3742 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3743 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3744 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3745 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3746 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3747 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3748 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3749 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3750 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3751
3752 fflush(stdout);
3753 printf("---- VMLA (fp) ----\n");
3754 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
3755 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
3756 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
3757 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
3758 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
3759 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
3760 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
3761 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
3762 TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
3763 TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
3764 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
3765 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
3766 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
3767 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
3768 TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
3769 TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
3770 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
3771 TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
3772 TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
3773 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
3774 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3775 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3776 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3777 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3778 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3779 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3780 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3781 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3782 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3783 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3784 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3785 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3786 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3787 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3788 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3789 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3790 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3791 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3792 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3793 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3794
3795 fflush(stdout);
3796 printf("---- VMLA (fp by scalar) ----\n");
3797 TESTINSN_bin_f("vmla.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120));
3798 TESTINSN_bin_f("vmla.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120));
3799 TESTINSN_bin_f("vmla.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
3800 TESTINSN_bin_f("vmla.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
3801 TESTINSN_bin_f("vmla.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
3802 TESTINSN_bin_f("vmla.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19));
3803 TESTINSN_bin_f("vmla.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11));
3804 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3805 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3806 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3807 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3808 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3809 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3810 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3811 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3812 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3813 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3814 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3815 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3816 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3817 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3818 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3819 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3820 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3821 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3822 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3823 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3824
3825 fflush(stdout);
3826 printf("---- VMLS (fp) ----\n");
3827 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
3828 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
3829 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
3830 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
3831 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
3832 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
3833 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
3834 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
3835 TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
3836 TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
3837 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
3838 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
3839 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
3840 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
3841 TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
3842 TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
3843 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
3844 TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
3845 TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
3846 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
3847 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3848 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3849 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3850 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3851 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3852 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3853 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3854 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3855 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3856 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3857 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3858 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3859 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3860 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3861 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3862 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3863 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3864 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3865 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3866 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3867
3868 fflush(stdout);
3869 printf("---- VMLS (fp by scalar) ----\n");
3870 TESTINSN_bin_f("vmls.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120));
3871 TESTINSN_bin_f("vmls.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120));
3872 TESTINSN_bin_f("vmls.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
3873 TESTINSN_bin_f("vmls.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
3874 TESTINSN_bin_f("vmls.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
3875 TESTINSN_bin_f("vmls.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19));
3876 TESTINSN_bin_f("vmls.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11));
3877 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3878 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3879 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3880 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3881 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3882 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3883 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3884 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3885 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3886 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3887 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3888 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3889 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3890 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3891 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3892 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3893 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3894 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3895 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3896 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3897
3898 fflush(stdout);
3899 printf("---- VABD (fp) ----\n");
3900 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
3901 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
3902 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
3903 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
3904 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
3905 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
3906 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
3907 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
3908 TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
3909 TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
3910 TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
3911 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
3912 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
3913 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
3914 TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
3915 TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
3916 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
3917 TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
3918 TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
3919 TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
3920
3921 fflush(stdout);
3922 printf("---- VPADD (fp) ----\n");
3923 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
3924 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
3925 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
3926 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
3927 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
3928 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
3929 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
3930 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
3931 TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
3932 TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
3933 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
3934 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
3935 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
3936 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
3937 TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
3938 TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
3939 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
3940 TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
3941 TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
3942 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
3943 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
3944 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
3945 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
3946 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
3947 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
3948 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
3949 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
3950 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
3951 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
3952 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
3953 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
3954 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
3955 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
3956 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
3957 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
3958 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
3959 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
3960 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
3961 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
3962 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
3963
3964 fflush(stdout);
3965 printf("---- VCVT (integer <-> fp) ----\n");
3966 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(3.2));
3967 TESTINSN_un("vcvt.u32.f32 d10, d11", d10, d11, i32, f2u(3e22));
3968 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(3e9));
3969 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-0.5));
3970 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-7.1));
3971 TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
3972 TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
3973 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(3.2));
3974 TESTINSN_un("vcvt.s32.f32 d20, d21", d20, d21, i32, f2u(3e22));
3975 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(3e9));
3976 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-0.5));
3977 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-7.1));
3978 TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
3979 TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
3980 TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, 7);
3981 TESTINSN_un("vcvt.f32.u32 d10, d11", d10, d11, i32, 1 << 31);
3982 TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, (1U << 31) + 1);
3983 TESTINSN_un("vcvt.f32.u32 d24, d26", d24, d26, i32, (1U << 31) - 1);
3984 TESTINSN_un("vcvt.f32.u32 d0, d14", d0, d14, i32, 0x30a0bcef);
3985 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, 7);
3986 TESTINSN_un("vcvt.f32.s32 d30, d31", d30, d31, i32, 1 << 31);
3987 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) + 1);
3988 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) - 1);
3989 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(NAN));
3990 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(0.0));
3991 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
3992 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
3993 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(NAN));
3994 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(0.0));
3995 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
3996 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
3997
3998 fflush(stdout);
3999 printf("---- VCVT (fixed <-> fp) ----\n");
4000 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(3.2));
4001 TESTINSN_un("vcvt.u32.f32 d10, d11, #1", d10, d11, i32, f2u(3e22));
4002 TESTINSN_un("vcvt.u32.f32 d15, d4, #32", d15, d4, i32, f2u(3e9));
4003 TESTINSN_un("vcvt.u32.f32 d15, d4, #7", d15, d4, i32, f2u(-0.5));
4004 TESTINSN_un("vcvt.u32.f32 d15, d4, #4", d15, d4, i32, f2u(-7.1));
4005 TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
4006 TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
4007 TESTINSN_un("vcvt.s32.f32 d0, d1, #5", d0, d1, i32, f2u(3.2));
4008 TESTINSN_un("vcvt.s32.f32 d20, d21, #1", d20, d21, i32, f2u(3e22));
4009 TESTINSN_un("vcvt.s32.f32 d15, d4, #8", d15, d4, i32, f2u(3e9));
4010 TESTINSN_un("vcvt.s32.f32 d15, d4, #2", d15, d4, i32, f2u(-0.5));
4011 TESTINSN_un("vcvt.s32.f32 d15, d4, #1", d15, d4, i32, f2u(-7.1));
4012 TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
4013 TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
4014 TESTINSN_un("vcvt.f32.u32 d0, d1, #5", d0, d1, i32, 7);
4015 TESTINSN_un("vcvt.f32.u32 d10, d11, #9", d10, d11, i32, 1 << 31);
4016 TESTINSN_un("vcvt.f32.u32 d0, d1, #4", d0, d1, i32, (1U << 31) + 1);
4017 TESTINSN_un("vcvt.f32.u32 d24, d26, #6", d24, d26, i32, (1U << 31) - 1);
4018 TESTINSN_un("vcvt.f32.u32 d0, d14, #5", d0, d14, i32, 0x30a0bcef);
4019 TESTINSN_un("vcvt.f32.s32 d0, d1, #12", d0, d1, i32, 7);
4020 TESTINSN_un("vcvt.f32.s32 d30, d31, #8", d30, d31, i32, 1 << 31);
4021 TESTINSN_un("vcvt.f32.s32 d0, d1, #1", d0, d1, i32, (1U << 31) + 1);
4022 TESTINSN_un("vcvt.f32.s32 d0, d1, #6", d0, d1, i32, (1U << 31) - 1);
4023 TESTINSN_un("vcvt.f32.s32 d0, d14, #2", d0, d14, i32, 0x30a0bcef);
4024 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN));
4025 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0));
4026 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY));
4027 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY));
4028 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN));
4029 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0));
4030 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY));
4031 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY));
4032
4033 fflush(stdout);
4034 printf("---- VMAX (fp) ----\n");
4035 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4036 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4037 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4038 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4039 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4040 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4041 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4042 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4043 TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4044 TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4045 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4046 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4047 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
4048 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4049 TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4050 TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4051 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4052 TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4053 TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4054 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4055 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4056 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4057 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4058 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4059 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4060 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4061 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4062 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4063 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4064 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4065 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4066 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4067 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4068 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4069 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4070 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4071 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4072 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4073 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4074 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4075 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4076 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4077 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4078 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4079 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4080 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4081
4082 fflush(stdout);
4083 printf("---- VMIN (fp) ----\n");
4084 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4085 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4086 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4087 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4088 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4089 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4090 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4091 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4092 TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4093 TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4094 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4095 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4096 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
4097 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4098 TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4099 TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4100 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4101 TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4102 TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4103 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4104 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4105 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4106 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4107 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4108 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4109 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4110 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4111 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4112 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4113 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4114 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4115 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4116 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4117 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4118 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4119 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4120 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4121 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4122 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4123 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4124 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4125 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4126 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4127 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4128 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4129 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4130
4131 fflush(stdout);
4132 printf("---- VPMAX (fp) ----\n");
4133 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4134 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4135 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4136 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4137 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4138 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4139 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4140 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4141 TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4142 TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4143 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4144 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4145 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
4146 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4147 TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4148 TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4149 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4150 TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4151 TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4152 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4153 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4154 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4155 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4156 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4157 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4158 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4159 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4160 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4161 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4162 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4163 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4164 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4165 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4166 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4167 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4168 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4169 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4170 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4171 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4172 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4173 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4174 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4175 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4176 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4177 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4178 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4179
4180 fflush(stdout);
4181 printf("---- VPMIN (fp) ----\n");
4182 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4183 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4184 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4185 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4186 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4187 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4188 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4189 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4190 TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4191 TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4192 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4193 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4194 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
4195 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4196 TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4197 TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4198 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4199 TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4200 TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4201 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4202 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4203 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4204 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4205 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4206 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4207 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4208 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4209 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4210 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4211 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4212 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4213 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4214 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4215 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4216 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4217 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4218 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4219 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4220 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4221 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4222 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4223 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4224 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4225 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4226 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4227 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4228
4229 fflush(stdout);
4230 printf("---- VRECPE ----\n");
4231 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2));
4232 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(-653.2));
4233 TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22));
4234 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9));
4235 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-0.5));
4236 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-7.1));
4237 TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
4238 TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
4239 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2));
4240 TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22));
4241 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9));
4242 TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-0.5));
4243 TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-7.1));
4244 TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
4245 TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
4246 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7);
4247 TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31);
4248 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
4249 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
4250 TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
4251 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7);
4252 TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31);
4253 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
4254 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
4255 TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
4256 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(NAN));
4257 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(0.0));
4258 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
4259 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
4260
4261 fflush(stdout);
4262 printf("---- VRECPS ----\n");
4263 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4264 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4265 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4266 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4267 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4268 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
4269 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
4270 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4271 TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4272 TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4273 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4274 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4275 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
4276 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4277 TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4278 TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4279 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4280 TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4281 TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4282 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4283 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4284 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4285 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4286 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4287 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4288 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4289 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4290 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4291 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4292 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4293 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4294 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4295 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4296 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4297 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4298 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4299 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4300 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4301 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4302 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4303
4304 fflush(stdout);
4305 printf("---- VABS (fp) ----\n");
4306 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2));
4307 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22));
4308 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9));
4309 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5));
4310 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1));
4311 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
4312 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
4313 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2));
4314 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22));
4315 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9));
4316 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5));
4317 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1));
4318 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
4319 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
4320 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7);
4321 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31);
4322 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
4323 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
4324 TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
4325 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7);
4326 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31);
4327 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
4328 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
4329 TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
4330 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(NAN));
4331 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(0.0));
4332 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
4333 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
4334
4335 fflush(stdout);
4336 printf("---- VCGT (fp) ----\n");
4337 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
4338 TESTINSN_bin("vcgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
4339 TESTINSN_bin("vcgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
4340 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4341 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4342 TESTINSN_bin("vcgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4343 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4344 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4345 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4346 TESTINSN_bin("vcgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4347 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4348 TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4349 TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4350 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4351 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4352 TESTINSN_bin("vcgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
4353 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4354 TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4355 TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4356 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4357 TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4358 TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4359 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4360 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4361 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4362 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4363 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4364 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4365 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4366 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4367 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4368 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4369 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4370 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4371 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4372 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4373 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4374 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4375 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4376 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4377 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4378 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4379 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4380 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4381 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4382 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4383 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4384 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4385 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4386
4387 fflush(stdout);
4388 printf("---- VCGE (fp) ----\n");
4389 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
4390 TESTINSN_bin("vcge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
4391 TESTINSN_bin("vcge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
4392 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4393 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4394 TESTINSN_bin("vcge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4395 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4396 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4397 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4398 TESTINSN_bin("vcge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4399 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4400 TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4401 TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4402 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4403 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4404 TESTINSN_bin("vcge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
4405 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4406 TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4407 TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4408 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4409 TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4410 TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4411 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4412 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4413 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4414 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4415 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4416 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4417 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4418 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4419 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4420 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4421 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4422 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4423 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4424 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4425 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4426 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4427 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4428 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4429 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4430 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4431 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4432 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4433 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4434 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4435 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4436 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4437 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4438
4439 fflush(stdout);
4440 printf("---- VACGT (fp) ----\n");
4441 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
4442 TESTINSN_bin("vacgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
4443 TESTINSN_bin("vacgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
4444 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4445 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4446 TESTINSN_bin("vacgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4447 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4448 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4449 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4450 TESTINSN_bin("vacgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4451 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4452 TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4453 TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4454 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4455 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4456 TESTINSN_bin("vacgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
4457 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4458 TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4459 TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4460 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4461 TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4462 TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4463 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4464 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4465 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4466 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4467 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4468 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4469 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4470 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4471 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4472 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4473 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4474 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4475 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4476 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4477 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4478 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4479 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4480 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4481 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4482 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4483 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4484 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4485 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4486 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4487 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4488 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4489 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4490
4491 fflush(stdout);
4492 printf("---- VACGE (fp) ----\n");
4493 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
4494 TESTINSN_bin("vacge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
4495 TESTINSN_bin("vacge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
4496 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4497 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4498 TESTINSN_bin("vacge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4499 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4500 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4501 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4502 TESTINSN_bin("vacge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4503 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4504 TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4505 TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4506 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4507 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4508 TESTINSN_bin("vacge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
4509 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4510 TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4511 TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4512 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4513 TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4514 TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4515 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4516 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4517 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4518 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4519 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4520 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4521 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4522 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4523 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4524 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4525 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4526 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4527 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4528 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4529 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4530 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4531 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4532 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4533 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4534 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4535 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4536 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4537 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4538 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4539 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4540 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4541 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4542
4543 fflush(stdout);
4544 printf("---- VCEQ (fp) ----\n");
4545 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
4546 TESTINSN_bin("vceq.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
4547 TESTINSN_bin("vceq.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
4548 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4549 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4550 TESTINSN_bin("vceq.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4551 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4552 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4553 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
4554 TESTINSN_bin("vceq.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
4555 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4556 TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4557 TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4558 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4559 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4560 TESTINSN_bin("vceq.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
4561 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4562 TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4563 TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4564 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4565 TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4566 TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4567 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4568 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
4569 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
4570 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
4571 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
4572 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
4573 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
4574 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4575 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4576 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4577 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4578 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4579 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4580 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4581 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4582 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4583 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4584 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4585 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4586 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4587 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4588 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4589 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4590 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4591 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4592 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4593 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4594
4595 fflush(stdout);
4596 printf("---- VCEQ (fp) #0 ----\n");
4597 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
4598 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x1);
4599 TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
4600 TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
4601 TESTINSN_un("vceq.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
4602 TESTINSN_un("vceq.f32 d30, d15, #0", d30, d15, i32, 0x0);
4603 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
4604 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
4605 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
4606 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
4607
4608 fflush(stdout);
4609 printf("---- VCGT (fp) #0 ----\n");
4610 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
4611 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x1);
4612 TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
4613 TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
4614 TESTINSN_un("vcgt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
4615 TESTINSN_un("vcgt.f32 d30, d15, #0", d30, d15, i32, 0x0);
4616 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
4617 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
4618 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
4619 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
4620
4621 fflush(stdout);
4622 printf("---- VCLT (fp) #0 ----\n");
4623 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
4624 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x1);
4625 TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
4626 TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
4627 TESTINSN_un("vclt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
4628 TESTINSN_un("vclt.f32 d30, d15, #0", d30, d15, i32, 0x0);
4629 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
4630 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
4631 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
4632 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
4633
4634 fflush(stdout);
4635 printf("---- VCGE (fp) #0 ----\n");
4636 TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
4637 TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x1);
4638 TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
4639 TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
4640 TESTINSN_un("vcge.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
4641 TESTINSN_un("vcge.f32 d30, d15, #0", d30, d15, i32, 0x0);
4642 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
4643 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
4644 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
4645 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
4646
4647 fflush(stdout);
4648 printf("---- VCLE (fp) #0 ----\n");
4649 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
4650 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x1);
4651 TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
4652 TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
4653 TESTINSN_un("vcle.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
4654 TESTINSN_un("vcle.f32 d30, d15, #0", d30, d15, i32, 0x0);
4655 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
4656 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
4657 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
4658 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
4659
4660 fflush(stdout);
4661 printf("---- VNEG (fp) ----\n");
4662 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x01000000);
4663 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x1);
4664 TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, 1 << 31);
4665 TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, f2u(23.04));
4666 TESTINSN_un("vneg.f32 d2, d31", d2, d31, i32, f2u(-23.04));
4667 TESTINSN_un("vneg.f32 d30, d15", d30, d15, i32, 0x0);
4668 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(NAN));
4669 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(0.0));
4670 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
4671 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
4672
4673 fflush(stdout);
4674 printf("---- VRSQRTS ----\n");
4675 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
4676 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
4677 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
4678 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
4679 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
4680 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
4681 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
4682 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
4683 TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
4684 TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
4685 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
4686 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
4687 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
4688 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
4689 TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
4690 TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
4691 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
4692 TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
4693 TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
4694 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
4695 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
4696 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
4697 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
4698 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
4699 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
4700 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
4701 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
4702 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
4703 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
4704 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
4705 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
4706 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
4707 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
4708 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
4709 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
4710 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
4711 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
4712 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
4713 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
4714 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
4715
4716 fflush(stdout);
4717 printf("---- VRSQRTE (fp) ----\n");
4718 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2));
4719 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22));
4720 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9));
4721 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5));
4722 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1));
4723 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
4724 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
4725 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2));
4726 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22));
4727 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9));
4728 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5));
4729 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1));
4730 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
4731 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
4732 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7);
4733 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31);
4734 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
4735 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
4736 TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
4737 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7);
4738 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31);
4739 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
4740 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
4741 TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
4742 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(NAN));
4743 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(0.0));
4744 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
4745 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
4746
4747 return 0;
4748 }
4749