• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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