Home | History | Annotate | Download | only in arm
      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 
     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     0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d,
     47     0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
     48     0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
     49     0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
     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   printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \
     65       instruction, out[1], out[0]); \
     66 } \
     67 { \
     68    unsigned int out[2];   \
     69    unsigned int addr = 0; \
     70    \
     71    __asm__ volatile( \
     72 	 "mov %1, %2\n\t" \
     73 	 "vldmia %1!, {" #QD "}\n\t" \
     74 	 instruction ", #" #imm "\n\t" \
     75 	 "vstmia %0, {" #QD "}\n\t" \
     76 	 : \
     77 	 : "r" (out), "r" (addr), "r" (mem) \
     78 	 : #QD, "%2", "memory" \
     79 	 ); \
     80    printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \
     81 	 instruction, out[1], out[0]); \
     82 }
     83 
     84 #define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \
     85 { \
     86   unsigned int out[2]; \
     87 \
     88   __asm__ volatile( \
     89       "vmov.i8 " #QD ", #0x55" "\n\t" \
     90       "vdup." #QMtype " " #QM ", %1\n\t" \
     91       instruction "\n\t" \
     92       "vstmia %0, {" #QD "}\n\t" \
     93       : \
     94       : "r" (out), "r" (QMval) \
     95       : #QD, #QM, "memory" \
     96       ); \
     97   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x\n", \
     98       instruction, out[1], out[0], QMval); \
     99 } \
    100 { \
    101    unsigned int out[2]; \
    102    unsigned int addr = 0; \
    103    \
    104    __asm__ volatile( \
    105 	 "mov %2, %3\n\t" \
    106 	 "vldmia %2!, {" #QD "}\n\t" \
    107 	 "vldmia %2!, {" #QM "}\n\t" \
    108 	 instruction "\n\t" \
    109 	 "vstmia %0, {" #QD "}\n\t" \
    110 	 "vstmia %0, {" #QD "}\n\t" \
    111 	 : \
    112 	 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
    113 	 : #QD, #QM, "%2", "memory" \
    114 	 ); \
    115    printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x\n", \
    116 	 instruction, out[1], out[0], QMval ); \
    117 }
    118 
    119 #define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \
    120 { \
    121   unsigned int out[2]; \
    122   unsigned int fpscr; \
    123 \
    124   __asm__ volatile( \
    125       "vmov.i8 " #QD ", #0x55" "\n\t" \
    126       "mov r4, #0\n\t" \
    127       MOVE_to_FPSCR_from_R4 \
    128       "vdup." #QMtype " " #QM ", %2\n\t" \
    129       instruction "\n\t" \
    130       "vstmia %1, {" #QD "}\n\t" \
    131       MOVE_to_R4_from_FPSCR \
    132       "mov %0, r4" \
    133       : "=r" (fpscr) \
    134       : "r" (out), "r" (QMval) \
    135       : #QD, #QM, "memory", "r4" \
    136       ); \
    137   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x  fpscr %08x\n", \
    138       instruction, out[1], out[0], QMval, fpscr); \
    139 } \
    140 { \
    141    unsigned int out[2]; \
    142    unsigned int fpscr; \
    143    unsigned int addr = 0; \
    144    \
    145    __asm__ volatile( \
    146 	 "vmov.i8 " #QD ", #0x55" "\n\t" \
    147 	 "mov r4, #0\n\t" \
    148 	 MOVE_to_FPSCR_from_R4 \
    149 	 "mov %3, %4\n\t" \
    150 	 "vldmia %3!, {" #QM "}\n\t" \
    151 	 instruction "\n\t" \
    152 	 "vstmia %1, {" #QD "}\n\t" \
    153 	 MOVE_to_R4_from_FPSCR \
    154 	 "mov %0, r4" \
    155 	 : "=r" (fpscr) \
    156 	 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
    157 	 : #QD, #QM, "memory", "r4" \
    158 	 ); \
    159    printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x  fpscr %08x\n", \
    160 	 instruction, out[1], out[0], QMval, fpscr); \
    161 }
    162 
    163 #define TESTINSN_core_to_scalar(instruction, QD, QM, QMval) \
    164 { \
    165   unsigned int out[2]; \
    166 \
    167   __asm__ volatile( \
    168       "vmov.i8 " #QD ", #0x55" "\n\t" \
    169       "mov " #QM ", %1\n\t" \
    170       instruction "\n\t" \
    171       "vstmia %0, {" #QD "}\n\t" \
    172       : \
    173       : "r" (out), "r" (QMval) \
    174       : #QD, #QM, "memory" \
    175       ); \
    176   printf("%s :: Qd 0x%08x 0x%08x  Qm 0x%08x\n", \
    177       instruction, out[1], out[0], QMval); \
    178 }
    179 
    180 #define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \
    181 { \
    182   unsigned int out[2]; \
    183 \
    184   __asm__ volatile( \
    185       "mov " #QD ", #0x55" "\n\t" \
    186       "vdup." #QMtype " " #QM ", %1\n\t" \
    187       instruction "\n\t" \
    188       "str " #QD ", [%0]\n\t" \
    189       : \
    190       : "r" (out), "r" (QMval) \
    191       : #QD, #QM, "memory" \
    192       ); \
    193   printf("%s :: Rd 0x%08x  Qm (" #QMtype ")0x%08x\n", \
    194       instruction, out[0], QMval); \
    195 }
    196 
    197 #define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \
    198 { \
    199   unsigned int out[9]; \
    200 \
    201   __asm__ volatile( \
    202       "vmov.i8 " #QD1 ", #0x55" "\n\t" \
    203       "vmov.i8 " #QD2 ", #0x55" "\n\t" \
    204       "vmov.i8 " #QD3 ", #0x55" "\n\t" \
    205       "vmov.i8 " #QD4 ", #0x55" "\n\t" \
    206       instruction ", [%1]\n\t" \
    207       "mov r4, %0\n\t" \
    208       "vstmia %0!, {" #QD1 "}\n\t" \
    209       "vstmia %0!, {" #QD2 "}\n\t" \
    210       "vstmia %0!, {" #QD3 "}\n\t" \
    211       "vstmia %0!, {" #QD4 "}\n\t" \
    212       "str %1, [%2]\n\t" \
    213       "mov %0, r4\n\t" \
    214       : \
    215       : "r" (out), "r" (mem), "r"(&out[8]) \
    216       : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
    217       ); \
    218   printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
    219           "0x%08x 0x%08x 0x%08x 0x%08x  delta %d\n", \
    220       instruction, out[0], out[1], out[2], out[3], out[4],\
    221           out[5], out[6], out[7], (int)out[8]-(int)mem); \
    222 }
    223 
    224 #define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \
    225 { \
    226   unsigned int out[9]; \
    227 \
    228   memset(out, 0x55, 8 * (sizeof(unsigned int)));\
    229   __asm__ volatile( \
    230       "mov r4, %1\n\t" \
    231       "vldmia %1!, {" #QD1 "}\n\t" \
    232       "vldmia %1!, {" #QD2 "}\n\t" \
    233       "vldmia %1!, {" #QD3 "}\n\t" \
    234       "vldmia %1!, {" #QD4 "}\n\t" \
    235       "mov %1, r4\n\t" \
    236       instruction ", [%0]\n\t" \
    237       "str %0, [%2]\n\t" \
    238       : \
    239       : "r" (out), "r" (mem), "r"(&out[8]) \
    240       : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
    241       ); \
    242   printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
    243           "0x%08x 0x%08x 0x%08x 0x%08x  delta %d\n", \
    244       instruction, out[0], out[1], out[2], out[3], out[4],\
    245           out[5], out[6], out[7], (int)out[8]-(int)out); \
    246 }
    247 
    248 #define TESTINSN_VLDn_WB(instruction, QD1, QD2, QD3, QD4) \
    249 { \
    250    unsigned int out[9]; \
    251    unsigned int addr = 0; \
    252    \
    253    __asm__ volatile( \
    254 	 "mov %0, %2\n\t" \
    255 	 "vmov.i8 " #QD1 ", #0x55" "\n\t" \
    256 	 "vmov.i8 " #QD2 ", #0x55" "\n\t" \
    257 	 "vmov.i8 " #QD3 ", #0x55" "\n\t" \
    258 	 "vmov.i8 " #QD4 ", #0x55" "\n\t" \
    259 	 instruction ", [%0]!\n\t" \
    260 	 "mov r4, %1\n\t" \
    261 	 "vstmia %1!, {" #QD1 "}\n\t" \
    262 	 "vstmia %1!, {" #QD2 "}\n\t" \
    263 	 "vstmia %1!, {" #QD3 "}\n\t" \
    264 	 "vstmia %1!, {" #QD4 "}\n\t" \
    265 	 "str %0, [%3]\n\t" \
    266 	 "mov %1, r4\n\t" \
    267 	 : "+r" (addr) \
    268 	 : "r" (out), "r" (mem), "r"(&out[8]) \
    269 	 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
    270 	 ); \
    271    printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
    272 	 "0x%08x 0x%08x 0x%08x 0x%08x  delta %d\n", \
    273 	 instruction, out[0], out[1], out[2], out[3], out[4],\
    274 	 out[5], out[6], out[7], (int)out[8]-(int)mem); \
    275 }
    276 
    277 #define TESTINSN_VSTn_WB(instruction, QD1, QD2, QD3, QD4) \
    278 { \
    279    unsigned int out[9]; \
    280    unsigned int addr = 0;    \
    281    \
    282    memset(out, 0x55, 8 * (sizeof(unsigned int)));\
    283    __asm__ volatile( \
    284 	 "mov %0, %1\n\t" \
    285 	 "mov r4, %2\n\t" \
    286 	 "vldmia r4!, {" #QD1 "}\n\t" \
    287 	 "vldmia r4!, {" #QD2 "}\n\t" \
    288 	 "vldmia r4!, {" #QD3 "}\n\t" \
    289 	 "vldmia r4!, {" #QD4 "}\n\t" \
    290 	 instruction ", [%0]!\n\t" \
    291 	 "str %0, [%3]\n\t" \
    292 	 : "+r" (addr) \
    293 	 : "r" (out), "r" (mem), "r"(&out[8]) \
    294 	 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", "0" \
    295 	 ); \
    296    printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
    297 	 "0x%08x 0x%08x 0x%08x 0x%08x  delta %d\n", \
    298 	 instruction, out[0], out[1], out[2], out[3], out[4],\
    299 	 out[5], out[6], out[7], (int)out[8]-(int)out); \
    300 }
    301 
    302 #define TESTINSN_VLDn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \
    303 { \
    304    unsigned int out[9];  \
    305    unsigned int addr = 0;    \
    306    \
    307    __asm__ volatile( \
    308 	 "mov %0, %2\n\t" \
    309 	 "vmov.i8 " #QD1 ", #0x55" "\n\t" \
    310 	 "vmov.i8 " #QD2 ", #0x55" "\n\t" \
    311 	 "vmov.i8 " #QD3 ", #0x55" "\n\t" \
    312 	 "vmov.i8 " #QD4 ", #0x55" "\n\t" \
    313 	 "mov " #RM ", %4\n\t" \
    314 	 instruction ", [%0], " #RM "\n\t" \
    315 	 "mov r4, %1\n\t" \
    316 	 "vstmia %1!, {" #QD1 "}\n\t" \
    317 	 "vstmia %1!, {" #QD2 "}\n\t" \
    318 	 "vstmia %1!, {" #QD3 "}\n\t" \
    319 	 "vstmia %1!, {" #QD4 "}\n\t" \
    320 	 "str %0, [%3]\n\t" \
    321 	 "mov %1, r4\n\t" \
    322 	 : "+r" (addr) \
    323 	 : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \
    324 	 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \
    325 	 ); \
    326    printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
    327 	 "0x%08x 0x%08x 0x%08x 0x%08x  delta %d\n", \
    328 	 instruction, out[0], out[1], out[2], out[3], out[4],\
    329 	 out[5], out[6], out[7], (int)out[8]-(int)addr); \
    330 }
    331 
    332 
    333 #define TESTINSN_VSTn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \
    334 { \
    335    unsigned int out[9]; \
    336    unsigned int addr = 0;    \
    337    \
    338    memset(out, 0x55, 8 * (sizeof(unsigned int)));\
    339    __asm__ volatile( \
    340 	 "mov %0, %1\n\t" \
    341 	 "mov r4, %2\n\t" \
    342 	 "vldmia r4!, {" #QD1 "}\n\t" \
    343 	 "vldmia r4!, {" #QD2 "}\n\t" \
    344 	 "vldmia r4!, {" #QD3 "}\n\t" \
    345 	 "vldmia r4!, {" #QD4 "}\n\t" \
    346 	 "mov " #RM ", %4\n\t" \
    347 	 instruction ", [%0], " #RM "\n\t" \
    348 	 "str %0, [%3]\n\t" \
    349 	 : "+r" (addr) \
    350 	 : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \
    351 	 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \
    352 	 ); \
    353    printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
    354 	 "0x%08x 0x%08x 0x%08x 0x%08x  delta %d\n", \
    355 	 instruction, out[0], out[1], out[2], out[3], out[4],\
    356 	 out[5], out[6], out[7], (int)out[8]-(int)out); \
    357 }
    358 
    359 #define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
    360 { \
    361   unsigned int out[2]; \
    362 \
    363   __asm__ volatile( \
    364       "vmov.i8 " #QD ", #0x55" "\n\t" \
    365       "vdup." #QMtype " " #QM ", %1\n\t" \
    366       "vdup." #QNtype " " #QN ", %2\n\t" \
    367       instruction "\n\t" \
    368       "vstmia %0, {" #QD "}\n\t" \
    369       : \
    370       : "r" (out), "r" (QMval), "r" (QNval) \
    371       : #QD, #QM, #QN, "memory" \
    372       ); \
    373   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    374       "  Qn (" #QNtype ")0x%08x\n", \
    375       instruction, out[1], out[0], QMval, QNval); \
    376 } \
    377 { \
    378    unsigned int out[2]; \
    379    unsigned int addr = 0; \
    380    \
    381    __asm__ volatile( \
    382 	 "mov %0, %4\n\t" \
    383 	 "vldmia %0!, {" #QM "}\n\t" \
    384 	 "vmov.i8 " #QD ", #0x55" "\n\t" \
    385 	 "vdup." #QNtype " " #QN ", %3\n\t" \
    386 	 instruction "\n\t" \
    387 	 "vstmia %1, {" #QD "}\n\t" \
    388 	 : "+r" (addr) \
    389 	 : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \
    390 	 : #QD, #QM, #QN, "memory" \
    391 	 ); \
    392    printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    393 	 "  Qn (" #QNtype ")0x%08x\n", \
    394 	 instruction, out[1], out[0], QMval, QNval); \
    395 }
    396 
    397 #define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
    398 { \
    399   unsigned int out[2]; \
    400 \
    401   __asm__ volatile( \
    402       "vdup.i32 " #QD ", %3\n\t" \
    403       "vdup." #QMtype " " #QM ", %1\n\t" \
    404       "vdup." #QNtype " " #QN ", %2\n\t" \
    405       instruction "\n\t" \
    406       "vstmia %0, {" #QD "}\n\t" \
    407       : \
    408       : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000) \
    409       : #QD, #QM, #QN, "memory" \
    410       ); \
    411   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    412       "  Qn (" #QNtype ")0x%08x\n", \
    413       instruction, out[1], out[0], QMval, QNval); \
    414 } \
    415 { \
    416      unsigned int out[2]; \
    417      unsigned int addr = 0; \
    418    \
    419      __asm__ volatile( \
    420 	         "vdup.i32 " #QD ", %3\n\t" \
    421 	         "mov %4, %5\n\t" \
    422 	         "vldmia %4!, {" #QM "}\n\t" \
    423 	         "vdup." #QNtype " " #QN ", %2\n\t" \
    424 	         instruction "\n\t" \
    425 	         "vstmia %0, {" #QD "}\n\t" \
    426 	         : \
    427 	         : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \
    428 	         : #QD, #QM, #QN, "memory" \
    429 	         ); \
    430      printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    431 	         "  Qn (" #QNtype ")0x%08x\n", \
    432 	         instruction, out[1], out[0], QMval, QNval); \
    433 }
    434 
    435 #define TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
    436         QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \
    437 { \
    438   unsigned int out[2]; \
    439 \
    440   __asm__ volatile( \
    441       "vmov.i8 " #QD ", #0x55" "\n\t" \
    442       "vdup." #QMtype " " #QM ", %1\n\t" \
    443       "vdup." #QN1type " " #QN1 ", %2\n\t" \
    444       "vdup." #QN2type " " #QN2 ", %3\n\t" \
    445       "vdup." #QN3type " " #QN3 ", %4\n\t" \
    446       "vdup." #QN4type " " #QN4 ", %5\n\t" \
    447       instruction "\n\t" \
    448       "vstmia %0, {" #QD "}\n\t" \
    449       : \
    450       : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \
    451         "r" (QN4val) \
    452       : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \
    453       ); \
    454   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    455       "  Qn1 (" #QN1type ")0x%08x" \
    456       "  Qn2 (" #QN2type ")0x%08x" \
    457       "  Qn3 (" #QN3type ")0x%08x" \
    458       "  Qn4 (" #QN4type ")0x%08x\n", \
    459       instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
    460 } \
    461 { \
    462    unsigned int out[2]; \
    463    unsigned int addr = 0; \
    464    \
    465    __asm__ volatile( \
    466 	 "mov %6, %7\n\t" \
    467 	 "vmov.i8 " #QD ", #0x55" "\n\t" \
    468 	 "vdup." #QMtype " " #QM ", %1\n\t" \
    469 	 "vldmia %6!, {" #QN1 "}\n\t" \
    470 	 "vdup." #QN2type " " #QN2 ", %3\n\t" \
    471 	 "vldmia %6!, {" #QN3 "}\n\t" \
    472 	 "vdup." #QN4type " " #QN4 ", %5\n\t" \
    473 	 instruction "\n\t" \
    474 	 "vstmia %0, {" #QD "}\n\t" \
    475 	 : \
    476 	 : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \
    477 	 "r" (QN4val), "r" (addr), "r" (mem) \
    478 	 : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \
    479 	 ); \
    480    printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    481 	 "  Qn1 (" #QN1type ")0x%08x" \
    482 	 "  Qn2 (" #QN2type ")0x%08x" \
    483 	 "  Qn3 (" #QN3type ")0x%08x" \
    484 	 "  Qn4 (" #QN4type ")0x%08x\n", \
    485 	 instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
    486 }
    487 
    488 #define TESTINSN_tbl_1(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val) \
    489     TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
    490             QN1, QN1type, QN1val, QN1, QN1type, QN1val, QN1, QN1type, QN1val)
    491 #define TESTINSN_tbl_2(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
    492         QN2, QN2type, QN2val) \
    493     TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
    494             QN2, QN2type, QN2val, QN1, QN1type, QN1val, QN2, QN2type, QN2val)
    495 #define TESTINSN_tbl_3(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
    496         QN2, QN2type, QN2val, QN3, QN3type, QN3val) \
    497     TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
    498             QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN2, QN2type, QN2val)
    499 #define TESTINSN_tbl_4(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
    500         QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \
    501     TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
    502             QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val)
    503 
    504 #define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
    505 { \
    506   unsigned int out[2]; \
    507   unsigned int fpscr; \
    508 \
    509   __asm__ volatile( \
    510       "vmov.i8 " #QD ", #0x55" "\n\t" \
    511       "mov r4, #0\n\t" \
    512       MOVE_to_FPSCR_from_R4 \
    513       "vdup." #QMtype " " #QM ", %2\n\t" \
    514       "vdup." #QNtype " " #QN ", %3\n\t" \
    515       instruction "\n\t" \
    516       "vstmia %1, {" #QD "}\n\t" \
    517       MOVE_to_R4_from_FPSCR \
    518       "mov %0, r4" \
    519       : "=r" (fpscr) \
    520       : "r" (out), "r" (QMval), "r" (QNval) \
    521       : #QD, #QM, #QN, "memory", "r4" \
    522       ); \
    523   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    524       "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
    525       instruction, out[1], out[0], QMval, QNval, fpscr); \
    526 } \
    527 { \
    528      unsigned int out[2]; \
    529      unsigned int fpscr; \
    530      unsigned int addr = 0; \
    531    \
    532      __asm__ volatile( \
    533 	         "vmov.i8 " #QD ", #0x55" "\n\t" \
    534 	         "mov r4, #0\n\t" \
    535 	         MOVE_to_FPSCR_from_R4 \
    536 	         "mov %4, %5\n\t" \
    537 	         "vldmia %4!, {" #QM "}\n\t" \
    538 	         "vdup." #QNtype " " #QN ", %3\n\t" \
    539 	         instruction "\n\t" \
    540 	         "vstmia %1, {" #QD "}\n\t" \
    541 	         MOVE_to_R4_from_FPSCR \
    542 	         "mov %0, r4" \
    543 	         : "=r" (fpscr) \
    544 	         : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem)  \
    545 	         : #QD, #QM, #QN, "memory", "r4" \
    546 	         ); \
    547      printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    548 	         "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
    549 	         instruction, out[1], out[0], QMval, QNval, fpscr); \
    550 }
    551 
    552 #define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \
    553 { \
    554    unsigned int out1[2]; \
    555    unsigned int out2[2]; \
    556    unsigned int addr = 0;    \
    557    \
    558    __asm__ volatile( \
    559 	 "mov %4, %5\n\t" \
    560 	 "vldmia %4!, {" #QM "}\n\t" \
    561 	 "vdup." #QNtype " " #QN ", %3\n\t" \
    562 	 instruction "\n\t" \
    563 	 "vstmia %0, {" #QM "}\n\t" \
    564 	 "vstmia %1, {" #QN "}\n\t" \
    565 	 : \
    566 	 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
    567 	 : #QM, #QN, "memory" \
    568 	 ); \
    569    printf("%s :: Qm 0x%08x 0x%08x  Qn 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    570 	 "  Qn (" #QNtype ")0x%08x\n", \
    571 	 instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
    572 } \
    573 { \
    574      unsigned int out1[2]; \
    575      unsigned int out2[2]; \
    576      unsigned int addr = 0;    \
    577    \
    578      __asm__ volatile( \
    579 	         "mov %4, %5\n\t" \
    580 	         "vldmia %4!, {" #QM "}\n\t" \
    581 	         "vdup." #QNtype " " #QN ", %3\n\t" \
    582 	         instruction "\n\t" \
    583 	         "vstmia %0, {" #QM "}\n\t" \
    584 	         "vstmia %1, {" #QN "}\n\t" \
    585 	         : \
    586 	         : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
    587 	         : #QM, #QN, "%4", "memory" \
    588 	         ); \
    589      printf("%s :: Qm 0x%08x 0x%08x  Qn 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    590 	         "  Qn (" #QNtype ")0x%08x\n", \
    591 	         instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
    592 }
    593 
    594 #if 0
    595 #define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \
    596 { \
    597   unsigned int out[2]; \
    598 \
    599   __asm__ volatile( \
    600       "vmov.i8 " #QD ", #0x55" "\n\t" \
    601       "vdup." #QMtype " " #QM ", %1\n\t" \
    602       instruction ", #" #imm "\n\t" \
    603       "vstmia %0, {" #QD "}\n\t" \
    604       : \
    605       : "r" (out), "r" (QMval) \
    606       : #QD, #QM, "memory" \
    607       ); \
    608   printf("%s, #" #imm " :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x", \
    609       instruction, out[1], out[0], QMval); \
    610 }
    611 #endif
    612 
    613 int main(int argc, char **argv)
    614 {
    615     printf("----- VMOV (immediate) -----\n");
    616     TESTINSN_imm("vmov.i32 d0", d0, 0x7);
    617     TESTINSN_imm("vmov.i16 d1", d1, 0x7);
    618     TESTINSN_imm("vmov.i8 d2", d2, 0x7);
    619     TESTINSN_imm("vmov.i32 d5", d5, 0x700);
    620     TESTINSN_imm("vmov.i16 d7", d7, 0x700);
    621     TESTINSN_imm("vmov.i32 d10", d10, 0x70000);
    622     TESTINSN_imm("vmov.i32 d12", d12, 0x7000000);
    623     TESTINSN_imm("vmov.i32 d13", d13, 0x7FF);
    624     TESTINSN_imm("vmov.i32 d14", d14, 0x7FFFF);
    625     TESTINSN_imm("vmov.i64 d15", d15, 0xFF0000FF00FFFF00);
    626     TESTINSN_imm("vmov.f32 d0", d0, 0.328125);
    627     TESTINSN_imm("vmov.f32 d0", d0, -0.328125);
    628 
    629     printf("----- VMVN (immediate) -----\n");
    630     TESTINSN_imm("vmvn.i32 d0", d0, 0x7);
    631     TESTINSN_imm("vmvn.i16 d1", d1, 0x7);
    632     TESTINSN_imm("vmvn.i8 d2", d2, 0x7);
    633     TESTINSN_imm("vmvn.i32 d5", d5, 0x700);
    634     TESTINSN_imm("vmvn.i16 d7", d7, 0x700);
    635     TESTINSN_imm("vmvn.i32 d10", d10, 0x70000);
    636     TESTINSN_imm("vmvn.i32 d13", d13, 0x7000000);
    637     TESTINSN_imm("vmvn.i32 d11", d11, 0x7FF);
    638     TESTINSN_imm("vmvn.i32 d14", d14, 0x7FFFF);
    639     TESTINSN_imm("vmvn.i64 d15", d15, 0xFF0000FF00FFFF00);
    640 
    641     printf("----- VORR (immediate) -----\n");
    642     TESTINSN_imm("vorr.i32 d0", d0, 0x7);
    643     TESTINSN_imm("vorr.i16 d2", d2, 0x7);
    644     TESTINSN_imm("vorr.i32 d8", d8, 0x700);
    645     TESTINSN_imm("vorr.i16 d6", d6, 0x700);
    646     TESTINSN_imm("vorr.i32 d14", d14, 0x70000);
    647     TESTINSN_imm("vorr.i32 d15", d15, 0x7000000);
    648 
    649     printf("----- VBIC (immediate) -----\n");
    650     TESTINSN_imm("vbic.i32 d0", d0, 0x7);
    651     TESTINSN_imm("vbic.i16 d3", d3, 0x7);
    652     TESTINSN_imm("vbic.i32 d5", d5, 0x700);
    653     TESTINSN_imm("vbic.i16 d8", d8, 0x700);
    654     TESTINSN_imm("vbic.i32 d10", d10, 0x70000);
    655     TESTINSN_imm("vbic.i32 d15", d15, 0x7000000);
    656 
    657     printf("---- VMVN (register) ----\n");
    658     TESTINSN_un("vmvn d0, d1", d0, d1, i32, 24);
    659     TESTINSN_un("vmvn d10, d15", d10, d15, i32, 24);
    660     TESTINSN_un("vmvn d0, d14", d0, d14, i32, 24);
    661 
    662     printf("---- VMOV (register) ----\n");
    663     TESTINSN_un("vmov d0, d1", d0, d1, i32, 24);
    664     TESTINSN_un("vmov d10, d15", d10, d15, i32, 24);
    665     TESTINSN_un("vmov d0, d14", d0, d14, i32, 24);
    666 
    667     printf("---- VDUP (ARM core register) (tested indirectly) ----\n");
    668     TESTINSN_un("vmov d0, d1", d0, d1, i8, 7);
    669     TESTINSN_un("vmov d10, d11", d10, d11, i16, 7);
    670     TESTINSN_un("vmov d0, d15", d0, d15, i32, 7);
    671 
    672     printf("---- VADD ----\n");
    673     TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    674     TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    675     TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    676     TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    677     TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    678     TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    679     TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    680     TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    681     TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    682     TESTINSN_bin("vadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    683     TESTINSN_bin("vadd.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120);
    684 
    685     printf("---- VSUB ----\n");
    686     TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    687     TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    688     TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    689     TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    690     TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    691     TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    692     TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    693     TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    694     TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    695     TESTINSN_bin("vsub.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    696     TESTINSN_bin("vsub.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120);
    697 
    698     printf("---- VAND ----\n");
    699     TESTINSN_bin("vand d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
    700     TESTINSN_bin("vand d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
    701     TESTINSN_bin("vand d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
    702     TESTINSN_bin("vand d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
    703 
    704     printf("---- VBIC ----\n");
    705     TESTINSN_bin("vbic d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
    706     TESTINSN_bin("vbic d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
    707     TESTINSN_bin("vbic d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
    708     TESTINSN_bin("vbic d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
    709 
    710     printf("---- VORR ----\n");
    711     TESTINSN_bin("vorr d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
    712     TESTINSN_bin("vorr d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
    713     TESTINSN_bin("vorr d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
    714     TESTINSN_bin("vorr d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
    715 
    716     printf("---- VORN ----\n");
    717     TESTINSN_bin("vorn d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
    718     TESTINSN_bin("vorn d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
    719     TESTINSN_bin("vorn d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
    720     TESTINSN_bin("vorn d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
    721 
    722     printf("---- VEOR ----\n");
    723     TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
    724     TESTINSN_bin("veor d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
    725     TESTINSN_bin("veor d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
    726     TESTINSN_bin("veor d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
    727     TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
    728     TESTINSN_bin("veor d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
    729     TESTINSN_bin("veor d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
    730     TESTINSN_bin("veor d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
    731 
    732     printf("---- VBSL ----\n");
    733     TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
    734     TESTINSN_bin("vbsl d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
    735     TESTINSN_bin("vbsl d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
    736     TESTINSN_bin("vbsl d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
    737     TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
    738     TESTINSN_bin("vbsl d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
    739     TESTINSN_bin("vbsl d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
    740     TESTINSN_bin("vbsl d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
    741 
    742     printf("---- VBIT ----\n");
    743     TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
    744     TESTINSN_bin("vbit d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
    745     TESTINSN_bin("vbit d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
    746     TESTINSN_bin("vbit d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
    747     TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
    748     TESTINSN_bin("vbit d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
    749     TESTINSN_bin("vbit d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
    750     TESTINSN_bin("vbit d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
    751 
    752     printf("---- VBIF ----\n");
    753     TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
    754     TESTINSN_bin("vbif d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
    755     TESTINSN_bin("vbif d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
    756     TESTINSN_bin("vbif d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
    757     TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
    758     TESTINSN_bin("vbif d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
    759     TESTINSN_bin("vbif d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
    760     TESTINSN_bin("vbif d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
    761 
    762     printf("---- VEXT ----\n");
    763     TESTINSN_bin("vext.8 d0, d1, d2, #0", d0, d1, i8, 0x77, d2, i8, 0xff);
    764     TESTINSN_bin("vext.8 d0, d1, d2, #1", d0, d1, i8, 0x77, d2, i8, 0xff);
    765     TESTINSN_bin("vext.8 d0, d1, d2, #7", d0, d1, i8, 0x77, d2, i8, 0xff);
    766     TESTINSN_bin("vext.8 d0, d1, d2, #6", d0, d1, i8, 0x77, d2, i8, 0xff);
    767     TESTINSN_bin("vext.8 d10, d11, d12, #4", d10, d11, i8, 0x77, d12, i8, 0xff);
    768     TESTINSN_bin("vext.8 d0, d5, d15, #5", d0, d5, i8, 0x77, d15, i8, 0xff);
    769 
    770     printf("---- VHADD ----\n");
    771     TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    772     TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    773     TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    774     TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    775     TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121);
    776     TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    777     TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    778     TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    779     TESTINSN_bin("vhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    780     TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    781     TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    782     TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    783     TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    784     TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121);
    785     TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    786     TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    787     TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    788     TESTINSN_bin("vhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    789 
    790     printf("---- VHSUB ----\n");
    791     TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    792     TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    793     TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    794     TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    795     TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    796     TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    797     TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    798     TESTINSN_bin("vhsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    799     TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    800     TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    801     TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    802     TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    803     TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    804     TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    805     TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    806     TESTINSN_bin("vhsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    807 
    808     printf("---- VQADD ----\n");
    809     TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    810     TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    811     TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    812     TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    813     TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    814     TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    815     TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    816     TESTINSN_bin_q("vqadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    817     TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    818     TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    819     TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    820     TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    821     TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    822     TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    823     TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    824     TESTINSN_bin_q("vqadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    825 
    826     printf("---- VQSUB ----\n");
    827     TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    828     TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    829     TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    830     TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    831     TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    832     TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    833     TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    834     TESTINSN_bin_q("vqsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    835     TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
    836     TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    837     TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    838     TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    839     TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    840     TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    841     TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    842     TESTINSN_bin_q("vqsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    843 
    844     printf("---- VRHADD ----\n");
    845     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
    846     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
    847     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    848     TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    849     TESTINSN_bin("vrhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    850     TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
    851     TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    852     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    853     TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
    854     TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    855     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    856     TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
    857     TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
    858     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
    859     TESTINSN_bin("vrhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    860     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
    861     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    862     TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    863     TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    864     TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    865     TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    866     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
    867     TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    868     TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    869     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    870     TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
    871     TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
    872     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
    873     TESTINSN_bin("vrhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    874 
    875     printf("---- VCGT ----\n");
    876     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
    877     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
    878     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    879     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    880     TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    881     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    882     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    883     TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    884     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
    885     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
    886     TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
    887     TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2);
    888     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    889     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    890     TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
    891     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    892     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    893     TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2);
    894     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    895     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    896     TESTINSN_bin("vcgt.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    897     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
    898     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    899     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    900     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    901     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    902     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    903     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    904     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
    905     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
    906     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
    907     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    908     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    909     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    910     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    911     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    912     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    913     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    914     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    915     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    916     TESTINSN_bin("vcgt.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    917 
    918     printf("---- VCGE ----\n");
    919     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
    920     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
    921     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    922     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    923     TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    924     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    925     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    926     TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    927     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
    928     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
    929     TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
    930     TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2);
    931     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    932     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    933     TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
    934     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    935     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    936     TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2);
    937     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    938     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    939     TESTINSN_bin("vcge.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    940     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
    941     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    942     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    943     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
    944     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    945     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    946     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
    947     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
    948     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
    949     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
    950     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    951     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    952     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
    953     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    954     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    955     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
    956     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    957     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    958     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
    959     TESTINSN_bin("vcge.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
    960 
    961     printf("---- VSHL (register) ----\n");
    962     TESTINSN_bin("vshl.s8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1);
    963     TESTINSN_bin("vshl.s8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8);
    964     TESTINSN_bin("vshl.s8 d10, d31, d7", d10, d31, i32, 24, d7, i32, 4);
    965     TESTINSN_bin("vshl.s16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2);
    966     TESTINSN_bin("vshl.s16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1);
    967     TESTINSN_bin("vshl.s16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11);
    968     TESTINSN_bin("vshl.s32 d9, d12, d19", d9, d12, i32, (1 << 31) + 2, d19, i32, 2);
    969     TESTINSN_bin("vshl.s32 d11, d22, d0", d11, d22, i32, -1, d0, i32, 12);
    970     TESTINSN_bin("vshl.s32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21);
    971     TESTINSN_bin("vshl.s64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20);
    972     TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4);
    973     TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30);
    974     TESTINSN_bin("vshl.s64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab);
    975     TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5);
    976     TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff);
    977     TESTINSN_bin("vshl.u8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1);
    978     TESTINSN_bin("vshl.u8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8);
    979     TESTINSN_bin("vshl.u8 d10, d11, d7", d10, d11, i32, 24, d7, i32, 4);
    980     TESTINSN_bin("vshl.u16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2);
    981     TESTINSN_bin("vshl.u16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1);
    982     TESTINSN_bin("vshl.u16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11);
    983     TESTINSN_bin("vshl.u32 d9, d12, d15", d9, d12, i32, (1 << 31) + 2, d15, i32, 2);
    984     TESTINSN_bin("vshl.u32 d11, d2, d0", d11, d2, i32, -1, d0, i32, 12);
    985     TESTINSN_bin("vshl.u32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21);
    986     TESTINSN_bin("vshl.u64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20);
    987     TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4);
    988     TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30);
    989     TESTINSN_bin("vshl.u64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab);
    990     TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5);
    991     TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff);
    992 
    993     printf("---- VQSHL (register) ----\n");
    994     TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
    995     TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
    996     TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
    997     TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
    998     TESTINSN_bin_q("vqshl.s64 d13, d14, d31", d13, d14, i32, -17, d31, i32, -26);
    999     TESTINSN_bin_q("vqshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   1000     TESTINSN_bin_q("vqshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   1001     TESTINSN_bin_q("vqshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   1002     TESTINSN_bin_q("vqshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   1003     TESTINSN_bin_q("vqshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   1004     TESTINSN_bin_q("vqshl.s32 d9, d30, d11", d9, d30, i32, (1 << 31) + 8, d11, i32, -1);
   1005     TESTINSN_bin_q("vqshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   1006     TESTINSN_bin_q("vqshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   1007     TESTINSN_bin_q("vqshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   1008     TESTINSN_bin_q("vqshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
   1009     TESTINSN_bin_q("vqshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   1010     TESTINSN_bin_q("vqshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   1011     TESTINSN_bin_q("vqshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   1012     TESTINSN_bin_q("vqshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   1013     TESTINSN_bin_q("vqshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   1014     TESTINSN_bin_q("vqshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   1015     TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   1016     TESTINSN_bin_q("vqshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   1017     TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1018     TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   1019     TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   1020     TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   1021     TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   1022     TESTINSN_bin_q("vqshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   1023     TESTINSN_bin_q("vqshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   1024     TESTINSN_bin_q("vqshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   1025     TESTINSN_bin_q("vqshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   1026     TESTINSN_bin_q("vqshl.u32 d12, d31, d13", d12, d31, i32, -120, d13, i32, -9);
   1027     TESTINSN_bin_q("vqshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   1028     TESTINSN_bin_q("vqshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   1029     TESTINSN_bin_q("vqshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   1030     TESTINSN_bin_q("vqshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   1031     TESTINSN_bin_q("vqshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   1032     TESTINSN_bin_q("vqshl.u16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
   1033     TESTINSN_bin_q("vqshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   1034     TESTINSN_bin_q("vqshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   1035     TESTINSN_bin_q("vqshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   1036     TESTINSN_bin_q("vqshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   1037     TESTINSN_bin_q("vqshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   1038     TESTINSN_bin_q("vqshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   1039     TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   1040     TESTINSN_bin_q("vqshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   1041     TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1042 
   1043     printf("---- VQSHL / VQSHLU (immediate) ----\n");
   1044     TESTINSN_un_q("vqshl.s64 d0, d1, #1", d0, d1, i32, 1);
   1045     TESTINSN_un_q("vqshl.s64 d31, d30, #1", d31, d30, i32, -127);
   1046     TESTINSN_un_q("vqshl.s64 d5, d4, #0", d5, d4, i32, -127);
   1047     TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, 16);
   1048     TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, 16);
   1049     TESTINSN_un_q("vqshl.s64 d5, d4, #59", d5, d4, i32, 16);
   1050     TESTINSN_un_q("vqshl.s64 d5, d4, #58", d5, d4, i32, 16);
   1051     TESTINSN_un_q("vqshl.s64 d5, d4, #17", d5, d4, i32, 16);
   1052     TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, -1);
   1053     TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, -1);
   1054     TESTINSN_un_q("vqshl.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1055     TESTINSN_un_q("vqshl.s32 d10, d11, #1", d10, d11, i32, 1);
   1056     TESTINSN_un_q("vqshl.s32 d31, d30, #1", d31, d30, i32, -127);
   1057     TESTINSN_un_q("vqshl.s32 d5, d4, #0", d5, d4, i32, -127);
   1058     TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, 16);
   1059     TESTINSN_un_q("vqshl.s32 d5, d4, #28", d5, d4, i32, 16);
   1060     TESTINSN_un_q("vqshl.s32 d5, d4, #27", d5, d4, i32, 16);
   1061     TESTINSN_un_q("vqshl.s32 d5, d4, #26", d5, d4, i32, 16);
   1062     TESTINSN_un_q("vqshl.s32 d5, d4, #17", d5, d4, i32, 16);
   1063     TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, -1);
   1064     TESTINSN_un_q("vqshl.s32 d5, d4, #29", d5, d4, i32, -1);
   1065     TESTINSN_un_q("vqshl.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1066     TESTINSN_un_q("vqshl.s16 d9, d8, #1", d9, d8, i32, 1);
   1067     TESTINSN_un_q("vqshl.s16 d31, d30, #1", d31, d30, i32, -127);
   1068     TESTINSN_un_q("vqshl.s16 d5, d4, #0", d5, d4, i32, -127);
   1069     TESTINSN_un_q("vqshl.s16 d9, d8, #15", d9, d8, i32, 16);
   1070     TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, 16);
   1071     TESTINSN_un_q("vqshl.s16 d5, d4, #11", d5, d4, i32, 16);
   1072     TESTINSN_un_q("vqshl.s16 d5, d4, #10", d5, d4, i32, 16);
   1073     TESTINSN_un_q("vqshl.s16 d5, d4, #4", d5, d4, i32, 16);
   1074     TESTINSN_un_q("vqshl.s16 d5, d4, #15", d5, d4, i32, -1);
   1075     TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, -1);
   1076     TESTINSN_un_q("vqshl.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1077     TESTINSN_un_q("vqshl.s8 d0, d1, #1", d0, d1, i32, 1);
   1078     TESTINSN_un_q("vqshl.s8 d31, d30, #1", d31, d30, i32, -127);
   1079     TESTINSN_un_q("vqshl.s8 d5, d4, #0", d5, d4, i32, -127);
   1080     TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, 16);
   1081     TESTINSN_un_q("vqshl.s8 d25, d4, #4", d25, d4, i32, 16);
   1082     TESTINSN_un_q("vqshl.s8 d5, d4, #3", d5, d4, i32, 16);
   1083     TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, 16);
   1084     TESTINSN_un_q("vqshl.s8 d5, d4, #1", d5, d4, i32, 16);
   1085     TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, -1);
   1086     TESTINSN_un_q("vqshl.s8 d5, d4, #5", d5, d4, i32, -1);
   1087     TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
   1088     TESTINSN_un_q("vqshl.u64 d0, d1, #1", d0, d1, i32, 1);
   1089     TESTINSN_un_q("vqshl.u64 d31, d30, #1", d31, d30, i32, -127);
   1090     TESTINSN_un_q("vqshl.u64 d5, d4, #0", d5, d4, i32, -127);
   1091     TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, 16);
   1092     TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, 16);
   1093     TESTINSN_un_q("vqshl.u64 d5, d4, #59", d5, d4, i32, 16);
   1094     TESTINSN_un_q("vqshl.u64 d5, d4, #58", d5, d4, i32, 16);
   1095     TESTINSN_un_q("vqshl.u64 d5, d4, #17", d5, d4, i32, 16);
   1096     TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, -1);
   1097     TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, -1);
   1098     TESTINSN_un_q("vqshl.u64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1099     TESTINSN_un_q("vqshl.u32 d10, d11, #1", d10, d11, i32, 1);
   1100     TESTINSN_un_q("vqshl.u32 d31, d30, #1", d31, d30, i32, -127);
   1101     TESTINSN_un_q("vqshl.u32 d5, d4, #0", d5, d4, i32, -127);
   1102     TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, 16);
   1103     TESTINSN_un_q("vqshl.u32 d5, d4, #28", d5, d4, i32, 16);
   1104     TESTINSN_un_q("vqshl.u32 d5, d4, #27", d5, d4, i32, 16);
   1105     TESTINSN_un_q("vqshl.u32 d5, d4, #26", d5, d4, i32, 16);
   1106     TESTINSN_un_q("vqshl.u32 d5, d4, #17", d5, d4, i32, 16);
   1107     TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, -1);
   1108     TESTINSN_un_q("vqshl.u32 d5, d4, #29", d5, d4, i32, -1);
   1109     TESTINSN_un_q("vqshl.u32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1110     TESTINSN_un_q("vqshl.u16 d9, d8, #1", d9, d8, i32, 1);
   1111     TESTINSN_un_q("vqshl.u16 d31, d30, #1", d31, d30, i32, -127);
   1112     TESTINSN_un_q("vqshl.u16 d5, d4, #0", d5, d4, i32, -127);
   1113     TESTINSN_un_q("vqshl.u16 d9, d8, #15", d9, d8, i32, 16);
   1114     TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, 16);
   1115     TESTINSN_un_q("vqshl.u16 d5, d4, #11", d5, d4, i32, 16);
   1116     TESTINSN_un_q("vqshl.u16 d5, d4, #10", d5, d4, i32, 16);
   1117     TESTINSN_un_q("vqshl.u16 d5, d4, #4", d5, d4, i32, 16);
   1118     TESTINSN_un_q("vqshl.u16 d5, d4, #15", d5, d4, i32, -1);
   1119     TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, -1);
   1120     TESTINSN_un_q("vqshl.u16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1121     TESTINSN_un_q("vqshl.u8 d0, d1, #1", d0, d1, i32, 1);
   1122     TESTINSN_un_q("vqshl.u8 d31, d30, #1", d31, d30, i32, -127);
   1123     TESTINSN_un_q("vqshl.u8 d5, d4, #0", d5, d4, i32, -127);
   1124     TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, 16);
   1125     TESTINSN_un_q("vqshl.u8 d5, d4, #4", d5, d4, i32, 16);
   1126     TESTINSN_un_q("vqshl.u8 d5, d4, #3", d5, d4, i32, 16);
   1127     TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, 16);
   1128     TESTINSN_un_q("vqshl.u8 d5, d4, #1", d5, d4, i32, 16);
   1129     TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, -1);
   1130     TESTINSN_un_q("vqshl.u8 d5, d4, #5", d5, d4, i32, -1);
   1131     TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
   1132     TESTINSN_un_q("vqshlu.s64 d0, d1, #1", d0, d1, i32, 1);
   1133     TESTINSN_un_q("vqshlu.s64 d31, d30, #1", d31, d30, i32, -127);
   1134     TESTINSN_un_q("vqshlu.s64 d5, d4, #0", d5, d4, i32, -127);
   1135     TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, 16);
   1136     TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, 16);
   1137     TESTINSN_un_q("vqshlu.s64 d5, d4, #59", d5, d4, i32, 16);
   1138     TESTINSN_un_q("vqshlu.s64 d5, d4, #58", d5, d4, i32, 16);
   1139     TESTINSN_un_q("vqshlu.s64 d5, d4, #17", d5, d4, i32, 16);
   1140     TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, -1);
   1141     TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, -1);
   1142     TESTINSN_un_q("vqshlu.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1143     TESTINSN_un_q("vqshlu.s32 d10, d11, #1", d10, d11, i32, 1);
   1144     TESTINSN_un_q("vqshlu.s32 d31, d30, #1", d31, d30, i32, -127);
   1145     TESTINSN_un_q("vqshlu.s32 d5, d4, #0", d5, d4, i32, -127);
   1146     TESTINSN_un_q("vqshlu.s32 d5, d4, #31", d5, d4, i32, 16);
   1147     TESTINSN_un_q("vqshlu.s32 d25, d24, #28", d25, d24, i32, 16);
   1148     TESTINSN_un_q("vqshlu.s32 d5, d4, #27", d5, d4, i32, 16);
   1149     TESTINSN_un_q("vqshlu.s32 d5, d4, #26", d5, d4, i32, 16);
   1150     TESTINSN_un_q("vqshlu.s32 d5, d4, #17", d5, d4, i32, 16);
   1151     TESTINSN_un_q("vqshlu.s32 d5, d24, #31", d5, d24, i32, -1);
   1152     TESTINSN_un_q("vqshlu.s32 d5, d4, #29", d5, d4, i32, -1);
   1153     TESTINSN_un_q("vqshlu.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1154     TESTINSN_un_q("vqshlu.s16 d9, d8, #1", d9, d8, i32, 1);
   1155     TESTINSN_un_q("vqshlu.s16 d31, d30, #1", d31, d30, i32, -127);
   1156     TESTINSN_un_q("vqshlu.s16 d5, d4, #0", d5, d4, i32, -127);
   1157     TESTINSN_un_q("vqshlu.s16 d9, d8, #15", d9, d8, i32, 16);
   1158     TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, 16);
   1159     TESTINSN_un_q("vqshlu.s16 d5, d4, #11", d5, d4, i32, 16);
   1160     TESTINSN_un_q("vqshlu.s16 d5, d4, #10", d5, d4, i32, 16);
   1161     TESTINSN_un_q("vqshlu.s16 d5, d4, #4", d5, d4, i32, 16);
   1162     TESTINSN_un_q("vqshlu.s16 d15, d14, #15", d15, d14, i32, -1);
   1163     TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, -1);
   1164     TESTINSN_un_q("vqshlu.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   1165     TESTINSN_un_q("vqshlu.s8 d0, d1, #1", d0, d1, i32, 1);
   1166     TESTINSN_un_q("vqshlu.s8 d31, d30, #1", d31, d30, i32, -127);
   1167     TESTINSN_un_q("vqshlu.s8 d5, d4, #0", d5, d4, i32, -127);
   1168     TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, 16);
   1169     TESTINSN_un_q("vqshlu.s8 d5, d4, #4", d5, d4, i32, 16);
   1170     TESTINSN_un_q("vqshlu.s8 d5, d4, #3", d5, d4, i32, 16);
   1171     TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, 16);
   1172     TESTINSN_un_q("vqshlu.s8 d5, d4, #1", d5, d4, i32, 16);
   1173     TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, -1);
   1174     TESTINSN_un_q("vqshlu.s8 d5, d4, #5", d5, d4, i32, -1);
   1175     TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
   1176 
   1177     printf("---- VQRSHL (register) ----\n");
   1178     TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   1179     TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   1180     TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   1181     TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   1182     TESTINSN_bin_q("vqrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   1183     TESTINSN_bin_q("vqrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   1184     TESTINSN_bin_q("vqrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   1185     TESTINSN_bin_q("vqrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   1186     TESTINSN_bin_q("vqrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   1187     TESTINSN_bin_q("vqrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   1188     TESTINSN_bin_q("vqrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   1189     TESTINSN_bin_q("vqrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   1190     TESTINSN_bin_q("vqrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   1191     TESTINSN_bin_q("vqrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   1192     TESTINSN_bin_q("vqrshl.s16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
   1193     TESTINSN_bin_q("vqrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   1194     TESTINSN_bin_q("vqrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   1195     TESTINSN_bin_q("vqrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   1196     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1197     TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1198     TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1199     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   1200     TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   1201     TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   1202     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1203     TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1204     TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1205     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   1206     TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   1207     TESTINSN_bin_q("vqrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, 0);
   1208     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   1209     TESTINSN_bin_q("vqrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   1210     TESTINSN_bin_q("vqrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   1211     TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   1212     TESTINSN_bin_q("vqrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   1213     TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1214     TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   1215     TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   1216     TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   1217     TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   1218     TESTINSN_bin_q("vqrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   1219     TESTINSN_bin_q("vqrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   1220     TESTINSN_bin_q("vqrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   1221     TESTINSN_bin_q("vqrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   1222     TESTINSN_bin_q("vqrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   1223     TESTINSN_bin_q("vqrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   1224     TESTINSN_bin_q("vqrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   1225     TESTINSN_bin_q("vqrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   1226     TESTINSN_bin_q("vqrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   1227     TESTINSN_bin_q("vqrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   1228     TESTINSN_bin_q("vqrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
   1229     TESTINSN_bin_q("vqrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   1230     TESTINSN_bin_q("vqrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   1231     TESTINSN_bin_q("vqrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   1232     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   1233     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   1234     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1235     TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1236     TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1237     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1238     TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1239     TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1240     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   1241     TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   1242     TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   1243     TESTINSN_bin_q("vqrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   1244     TESTINSN_bin_q("vqrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   1245     TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   1246     TESTINSN_bin_q("vqrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   1247     TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1248 
   1249     printf("---- VRSHL (register) ----\n");
   1250     TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   1251     TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   1252     TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   1253     TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   1254     TESTINSN_bin("vrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   1255     TESTINSN_bin("vrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   1256     TESTINSN_bin("vrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   1257     TESTINSN_bin("vrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   1258     TESTINSN_bin("vrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   1259     TESTINSN_bin("vrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   1260     TESTINSN_bin("vrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   1261     TESTINSN_bin("vrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   1262     TESTINSN_bin("vrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   1263     TESTINSN_bin("vrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   1264     TESTINSN_bin("vrshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
   1265     TESTINSN_bin("vrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   1266     TESTINSN_bin("vrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   1267     TESTINSN_bin("vrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   1268     TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1269     TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1270     TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1271     TESTINSN_bin("vrshl.s8 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
   1272     TESTINSN_bin("vrshl.s16 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
   1273     TESTINSN_bin("vrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
   1274     TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1275     TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1276     TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   1277     TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   1278     TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   1279     TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   1280     TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   1281     TESTINSN_bin("vrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   1282     TESTINSN_bin("vrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   1283     TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   1284     TESTINSN_bin("vrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   1285     TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1286     TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   1287     TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   1288     TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   1289     TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   1290     TESTINSN_bin("vrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   1291     TESTINSN_bin("vrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   1292     TESTINSN_bin("vrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   1293     TESTINSN_bin("vrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   1294     TESTINSN_bin("vrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   1295     TESTINSN_bin("vrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   1296     TESTINSN_bin("vrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   1297     TESTINSN_bin("vrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   1298     TESTINSN_bin("vrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   1299     TESTINSN_bin("vrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   1300     TESTINSN_bin("vrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
   1301     TESTINSN_bin("vrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   1302     TESTINSN_bin("vrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   1303     TESTINSN_bin("vrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   1304     TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   1305     TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   1306     TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1307     TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1308     TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   1309     TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   1310     TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   1311     TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   1312     TESTINSN_bin("vrshl.u8 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
   1313     TESTINSN_bin("vrshl.u16 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
   1314     TESTINSN_bin("vrshl.u32 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
   1315     TESTINSN_bin("vrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   1316     TESTINSN_bin("vrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   1317     TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   1318     TESTINSN_bin("vrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   1319     TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1320 
   1321     printf("---- VMAX (integer) ----\n");
   1322     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   1323     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
   1324     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   1325     TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1326     TESTINSN_bin("vmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   1327     TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   1328     TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1329     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1330     TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   1331     TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1332     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1333     TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   1334     TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1335     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1336     TESTINSN_bin("vmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1337     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   1338     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
   1339     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   1340     TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1341     TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   1342     TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1343     TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1344     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1345     TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1346     TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1347     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1348     TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1349     TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1350     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1351     TESTINSN_bin("vmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1352 
   1353     printf("---- VMIN (integer) ----\n");
   1354     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   1355     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
   1356     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1357     TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   1358     TESTINSN_bin("vmin.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   1359     TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   1360     TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1361     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1362     TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   1363     TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1364     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1365     TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   1366     TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1367     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1368     TESTINSN_bin("vmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1369     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   1370     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
   1371     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1372     TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   1373     TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   1374     TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1375     TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1376     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1377     TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1378     TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1379     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1380     TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1381     TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1382     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1383     TESTINSN_bin("vmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1384 
   1385     printf("---- VABD ----\n");
   1386     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   1387     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   1388     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120);
   1389     TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1390     TESTINSN_bin("vabd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1391     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   1392     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
   1393     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
   1394     TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1395     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1396     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   1397     TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1398     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1399     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   1400     TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1401     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1402     TESTINSN_bin("vabd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1403     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   1404     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1405     TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, -140, d2, i32, 120);
   1406     TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1407     TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
   1408     TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
   1409     TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1410     TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1411     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1412     TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1413     TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1414     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1415     TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1416     TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1417     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1418     TESTINSN_bin("vabd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1419 
   1420     printf("---- VABA ----\n");
   1421     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   1422     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   1423     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1424     TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1425     TESTINSN_bin("vaba.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1426     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   1427     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
   1428     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
   1429     TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1430     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1431     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   1432     TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1433     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1434     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   1435     TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1436     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1437     TESTINSN_bin("vaba.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1438     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   1439     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1440     TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1441     TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1442     TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
   1443     TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
   1444     TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1445     TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1446     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1447     TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1448     TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1449     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   1450     TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1451     TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1452     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   1453     TESTINSN_bin("vaba.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1454 
   1455     printf("---- VTST ----\n");
   1456     TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   1457     TESTINSN_bin("vtst.32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120);
   1458     TESTINSN_bin("vtst.16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120);
   1459     TESTINSN_bin("vtst.8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120);
   1460     TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1461     TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
   1462     TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1463     TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2);
   1464     TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
   1465     TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2);
   1466     TESTINSN_bin("vtst.32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1467 
   1468     printf("---- VCEQ ----\n");
   1469     TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   1470     TESTINSN_bin("vceq.i32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120);
   1471     TESTINSN_bin("vceq.i16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120);
   1472     TESTINSN_bin("vceq.i8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120);
   1473     TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1474     TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
   1475     TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   1476     TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2);
   1477     TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 14) + 1);
   1478     TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2);
   1479     TESTINSN_bin("vceq.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   1480 
   1481     printf("---- VMLA ----\n");
   1482     TESTINSN_bin("vmla.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120);
   1483     TESTINSN_bin("vmla.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, 120);
   1484     TESTINSN_bin("vmla.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   1485     TESTINSN_bin("vmla.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120);
   1486     TESTINSN_bin("vmla.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   1487     TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   1488     TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   1489     TESTINSN_bin("vmla.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   1490     TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   1491     TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   1492     TESTINSN_bin("vmla.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, -120);
   1493 
   1494     printf("---- VMLS ----\n");
   1495     TESTINSN_bin("vmls.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120);
   1496     TESTINSN_bin("vmls.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
   1497     TESTINSN_bin("vmls.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   1498     TESTINSN_bin("vmls.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1499     TESTINSN_bin("vmls.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   1500     TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   1501     TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   1502     TESTINSN_bin("vmls.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   1503     TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   1504     TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   1505     TESTINSN_bin("vmls.i32 d10, d11, d15", d10, d11, i32, -24, d15, i32, 120);
   1506 
   1507     printf("---- VMUL ----\n");
   1508     TESTINSN_bin("vmul.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   1509     TESTINSN_bin("vmul.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
   1510     TESTINSN_bin("vmul.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   1511     TESTINSN_bin("vmul.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   1512     TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   1513     TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   1514     TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   1515     TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 25) + 0xfeb2, d12, i32, (1 << 13) + 0xdf);
   1516     TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   1517     TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
   1518     TESTINSN_bin("vmul.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   1519     TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   1520     TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   1521     TESTINSN_bin("vmul.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
   1522     TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3);
   1523     TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f);
   1524 
   1525     printf("---- VMUL (by scalar) ----\n");
   1526     TESTINSN_bin("vmul.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120);
   1527     TESTINSN_bin("vmul.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
   1528     TESTINSN_bin("vmul.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
   1529     TESTINSN_bin("vmul.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   1530     TESTINSN_bin("vmul.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   1531     TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   1532     TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   1533     TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   1534     TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   1535 
   1536     printf("---- VMLA (by scalar) ----\n");
   1537     TESTINSN_bin("vmla.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120);
   1538     TESTINSN_bin("vmla.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
   1539     TESTINSN_bin("vmla.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
   1540     TESTINSN_bin("vmla.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   1541     TESTINSN_bin("vmla.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   1542     TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   1543     TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   1544     TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   1545     TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   1546 
   1547     printf("---- VMLS (by scalar) ----\n");
   1548     TESTINSN_bin("vmls.i32 d0, d1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
   1549     TESTINSN_bin("vmls.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
   1550     TESTINSN_bin("vmls.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
   1551     TESTINSN_bin("vmls.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   1552     TESTINSN_bin("vmls.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   1553     TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   1554     TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   1555     TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   1556     TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   1557 
   1558     printf("---- VRSHR ----\n");
   1559     TESTINSN_un("vrshr.s8 d0, d1, #0", d0, d1, i32, -1);
   1560     TESTINSN_un("vrshr.s8 d0, d1, #1", d0, d1, i32, -1);
   1561     TESTINSN_un("vrshr.s16 d3, d4, #2", d3, d4, i32, -0x7c);
   1562     TESTINSN_un("vrshr.s32 d2, d5, #31", d2, d5, i32, -1);
   1563     TESTINSN_un("vrshr.s8 d6, d7, #7", d6, d7, i32, 0xffff);
   1564     TESTINSN_un("vrshr.s16 d8, d9, #12", d8, d9, i32, -10);
   1565     TESTINSN_un("vrshr.s32 d10, d11, #5", d10, d11, i32, 10234);
   1566     TESTINSN_un("vrshr.u8 d12, d13, #1", d12, d13, i32, -1);
   1567     TESTINSN_un("vrshr.u16 d14, d15, #11", d14, d15, i32, -1);
   1568     TESTINSN_un("vrshr.u32 d10, d11, #9", d10, d11, i32, 1000);
   1569     TESTINSN_un("vrshr.u8 d7, d13, #7", d7, d13, i32, -1);
   1570     TESTINSN_un("vrshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
   1571     TESTINSN_un("vrshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
   1572     TESTINSN_un("vrshr.u64 d0, d1, #42", d0, d1, i32, -1);
   1573     TESTINSN_un("vrshr.s64 d6, d7, #12", d6, d7, i32, 0xfac);
   1574     TESTINSN_un("vrshr.u64 d8, d4, #9", d8, d4, i32, 13560);
   1575     TESTINSN_un("vrshr.s64 d9, d12, #11", d9, d12, i32, 98710);
   1576 
   1577     printf("---- VRSRA ----\n");
   1578     TESTINSN_un("vrsra.s8 d0, d1, #1", d0, d1, i32, -1);
   1579     TESTINSN_un("vrsra.s16 d3, d4, #2", d3, d4, i32, -0x7c);
   1580     TESTINSN_un("vrsra.s32 d2, d5, #31", d2, d5, i32, -1);
   1581     TESTINSN_un("vrsra.s8 d6, d7, #7", d6, d7, i32, 0xffff);
   1582     TESTINSN_un("vrsra.s16 d8, d9, #12", d8, d9, i32, -10);
   1583     TESTINSN_un("vrsra.s32 d10, d11, #5", d10, d11, i32, 10234);
   1584     TESTINSN_un("vrsra.u8 d12, d13, #1", d12, d13, i32, -1);
   1585     TESTINSN_un("vrsra.u16 d14, d15, #11", d14, d15, i32, -1);
   1586     TESTINSN_un("vrsra.u32 d10, d11, #9", d10, d11, i32, 1000);
   1587     TESTINSN_un("vrsra.u8 d7, d13, #7", d7, d13, i32, -1);
   1588     TESTINSN_un("vrsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
   1589     TESTINSN_un("vrsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
   1590     TESTINSN_un("vrsra.u64 d0, d1, #42", d0, d1, i32, -1);
   1591     TESTINSN_un("vrsra.s64 d6, d7, #12", d6, d7, i32, 0xfac);
   1592     TESTINSN_un("vrsra.u64 d8, d4, #9", d8, d4, i32, 13560);
   1593     TESTINSN_un("vrsra.s64 d9, d12, #11", d9, d12, i32, 98710);
   1594 
   1595     printf("---- VSHR ----\n");
   1596     TESTINSN_un("vshr.s8 d0, d1, #0", d0, d1, i32, -1);
   1597     TESTINSN_un("vshr.s8 d0, d1, #1", d0, d1, i32, -1);
   1598     TESTINSN_un("vshr.s16 d3, d4, #2", d3, d4, i32, -0x7c);
   1599     TESTINSN_un("vshr.s32 d2, d5, #31", d2, d5, i32, -1);
   1600     TESTINSN_un("vshr.s8 d6, d7, #7", d6, d7, i32, 0xffff);
   1601     TESTINSN_un("vshr.s16 d8, d9, #12", d8, d9, i32, -10);
   1602     TESTINSN_un("vshr.s32 d10, d11, #5", d10, d11, i32, 10234);
   1603     TESTINSN_un("vshr.u8 d12, d13, #1", d12, d13, i32, -1);
   1604     TESTINSN_un("vshr.u16 d14, d15, #11", d14, d15, i32, -1);
   1605     TESTINSN_un("vshr.u32 d10, d11, #9", d10, d11, i32, 1000);
   1606     TESTINSN_un("vshr.u8 d7, d13, #7", d7, d13, i32, -1);
   1607     TESTINSN_un("vshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
   1608     TESTINSN_un("vshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
   1609     TESTINSN_un("vshr.u64 d0, d1, #42", d0, d1, i32, -1);
   1610     TESTINSN_un("vshr.s64 d6, d7, #12", d6, d7, i32, 0xfac);
   1611     TESTINSN_un("vshr.u64 d8, d4, #9", d8, d4, i32, 13560);
   1612     TESTINSN_un("vshr.s64 d9, d12, #11", d9, d12, i32, 98710);
   1613 
   1614     printf("---- VSRA ----\n");
   1615     TESTINSN_un("vsra.s8 d0, d1, #1", d0, d1, i32, -1);
   1616     TESTINSN_un("vsra.s16 d3, d4, #2", d3, d4, i32, -0x7c);
   1617     TESTINSN_un("vsra.s32 d2, d5, #31", d2, d5, i32, -1);
   1618     TESTINSN_un("vsra.s8 d6, d7, #7", d6, d7, i32, 0xffff);
   1619     TESTINSN_un("vsra.s16 d8, d9, #12", d8, d9, i32, -10);
   1620     TESTINSN_un("vsra.s32 d10, d11, #5", d10, d11, i32, 10234);
   1621     TESTINSN_un("vsra.u8 d12, d13, #1", d12, d13, i32, -1);
   1622     TESTINSN_un("vsra.u16 d14, d15, #11", d14, d15, i32, -1);
   1623     TESTINSN_un("vsra.u32 d10, d11, #9", d10, d11, i32, 1000);
   1624     TESTINSN_un("vsra.u8 d7, d13, #7", d7, d13, i32, -1);
   1625     TESTINSN_un("vsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
   1626     TESTINSN_un("vsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
   1627     TESTINSN_un("vsra.u64 d0, d1, #42", d0, d1, i32, -1);
   1628     TESTINSN_un("vsra.s64 d6, d7, #12", d6, d7, i32, 0xfac);
   1629     TESTINSN_un("vsra.u64 d8, d4, #9", d8, d4, i32, 13560);
   1630     TESTINSN_un("vsra.s64 d9, d12, #11", d9, d12, i32, 98710);
   1631 
   1632     printf("---- VSRI ----\n");
   1633     TESTINSN_un("vsri.16 d0, d1, #1", d0, d1, i32, -1);
   1634     TESTINSN_un("vsri.16 d3, d4, #2", d3, d4, i32, -0x7c);
   1635     TESTINSN_un("vsri.32 d2, d5, #31", d2, d5, i32, -1);
   1636     TESTINSN_un("vsri.8 d6, d7, #7", d6, d7, i32, 0xffff);
   1637     TESTINSN_un("vsri.16 d8, d9, #12", d8, d9, i32, -10);
   1638     TESTINSN_un("vsri.32 d10, d11, #5", d10, d11, i32, 10234);
   1639     TESTINSN_un("vsri.8 d12, d13, #1", d12, d13, i32, -1);
   1640     TESTINSN_un("vsri.16 d14, d15, #11", d14, d15, i32, -1);
   1641     TESTINSN_un("vsri.32 d10, d11, #9", d10, d11, i32, 1000);
   1642     TESTINSN_un("vsri.8 d7, d13, #7", d7, d13, i32, -1);
   1643     TESTINSN_un("vsri.16 d8, d1, #5", d8, d1, i32, 0xabcf);
   1644     TESTINSN_un("vsri.32 d12, d3, #15", d12, d3, i32, -0x1b0);
   1645     TESTINSN_un("vsri.64 d0, d1, #42", d0, d1, i32, -1);
   1646     TESTINSN_un("vsri.64 d6, d7, #12", d6, d7, i32, 0xfac);
   1647     TESTINSN_un("vsri.64 d8, d4, #9", d8, d4, i32, 13560);
   1648     TESTINSN_un("vsri.64 d9, d12, #11", d9, d12, i32, 98710);
   1649 
   1650     printf("---- VMOV (ARM core register to scalar) ----\n");
   1651     TESTINSN_core_to_scalar("vmov.32 d0[0], r5", d0, r5, 13);
   1652     TESTINSN_core_to_scalar("vmov.32 d1[1], r3", d1, r3, 12);
   1653     TESTINSN_core_to_scalar("vmov.16 d0[0], r5", d0, r5, 13);
   1654     TESTINSN_core_to_scalar("vmov.16 d2[2], r6", d2, r6, 14);
   1655     TESTINSN_core_to_scalar("vmov.16 d3[3], r1", d3, r1, 17);
   1656     TESTINSN_core_to_scalar("vmov.8 d0[0], r5", d0, r5, 13);
   1657     TESTINSN_core_to_scalar("vmov.8 d0[1], r5", d0, r5, 13);
   1658     TESTINSN_core_to_scalar("vmov.8 d0[2], r5", d0, r5, 13);
   1659     TESTINSN_core_to_scalar("vmov.8 d0[3], r5", d0, r5, 13);
   1660     TESTINSN_core_to_scalar("vmov.8 d0[4], r5", d0, r5, 13);
   1661     TESTINSN_core_to_scalar("vmov.8 d0[5], r5", d0, r5, 13);
   1662     TESTINSN_core_to_scalar("vmov.8 d0[6], r5", d0, r5, 13);
   1663     TESTINSN_core_to_scalar("vmov.8 d31[7], r5", d31, r5, 13);
   1664 
   1665     printf("---- VMOV (scalar toARM core register) ----\n");
   1666     TESTINSN_scalar_to_core("vmov.32 r5, d0[0]", r5, d0, i32, 0x11223344);
   1667     TESTINSN_scalar_to_core("vmov.32 r6, d5[1]", r6, d5, i32, 0x11223344);
   1668     TESTINSN_scalar_to_core("vmov.u16 r5, d31[0]", r5, d31, i32, 0x11223344);
   1669     TESTINSN_scalar_to_core("vmov.u16 r5, d30[1]", r5, d30, i32, 0x11223344);
   1670     TESTINSN_scalar_to_core("vmov.u16 r5, d31[2]", r5, d31, i32, 0x11223344);
   1671     TESTINSN_scalar_to_core("vmov.u16 r5, d31[3]", r5, d31, i32, 0x11223344);
   1672     TESTINSN_scalar_to_core("vmov.u8 r2, d4[0]", r2, d4, i32, 0x11223344);
   1673     TESTINSN_scalar_to_core("vmov.u8 r2, d4[1]", r2, d4, i32, 0x11223344);
   1674     TESTINSN_scalar_to_core("vmov.u8 r2, d4[2]", r2, d4, i32, 0x11223344);
   1675     TESTINSN_scalar_to_core("vmov.u8 r2, d4[3]", r2, d4, i32, 0x11223344);
   1676     TESTINSN_scalar_to_core("vmov.u8 r2, d4[4]", r2, d4, i32, 0x11223344);
   1677     TESTINSN_scalar_to_core("vmov.u8 r2, d4[5]", r2, d4, i32, 0x11223344);
   1678     TESTINSN_scalar_to_core("vmov.u8 r2, d4[6]", r2, d4, i32, 0x11223344);
   1679     TESTINSN_scalar_to_core("vmov.u8 r2, d4[7]", r2, d4, i32, 0x11223344);
   1680     TESTINSN_scalar_to_core("vmov.s16 r5, d31[0]", r5, d31, i8, 128);
   1681     TESTINSN_scalar_to_core("vmov.s16 r5, d30[1]", r5, d30, i8, 128);
   1682     TESTINSN_scalar_to_core("vmov.s16 r5, d31[2]", r5, d31, i8, 128);
   1683     TESTINSN_scalar_to_core("vmov.s16 r5, d31[3]", r5, d31, i8, 128);
   1684     TESTINSN_scalar_to_core("vmov.s8 r2, d4[0]", r2, d4, i8, 128);
   1685     TESTINSN_scalar_to_core("vmov.s8 r2, d4[1]", r2, d4, i8, 128);
   1686     TESTINSN_scalar_to_core("vmov.s8 r2, d4[2]", r2, d4, i8, 128);
   1687     TESTINSN_scalar_to_core("vmov.s8 r2, d4[3]", r2, d4, i8, 128);
   1688     TESTINSN_scalar_to_core("vmov.s8 r2, d4[4]", r2, d4, i8, 128);
   1689     TESTINSN_scalar_to_core("vmov.s8 r2, d4[5]", r2, d4, i8, 130);
   1690     TESTINSN_scalar_to_core("vmov.s8 r2, d4[6]", r2, d4, i8, 129);
   1691     TESTINSN_scalar_to_core("vmov.s8 r2, d4[7]", r2, d4, i8, 131);
   1692 
   1693     printf("---- VLD1 (multiple single elements) ----\n");
   1694     TESTINSN_VLDn("vld1.8 {d0}", d0, d0, d0, d0);
   1695     TESTINSN_VLDn("vld1.16 {d0}", d0, d0, d0, d0);
   1696     TESTINSN_VLDn("vld1.32 {d0}", d0, d0, d0, d0);
   1697     TESTINSN_VLDn("vld1.64 {d0}", d0, d0, d0, d0);
   1698     TESTINSN_VLDn("vld1.8 {d9}", d9, d9, d9, d9);
   1699     TESTINSN_VLDn("vld1.16 {d17}", d17, d17, d17, d17);
   1700     TESTINSN_VLDn("vld1.32 {d31}", d31, d31, d31, d31);
   1701     TESTINSN_VLDn("vld1.64 {d14}", d14, d14, d14, d14);
   1702     TESTINSN_VLDn("vld1.8 {d0-d1}", d0, d1, d0, d1);
   1703     TESTINSN_VLDn("vld1.16 {d0-d1}", d0, d1, d0, d1);
   1704     TESTINSN_VLDn("vld1.32 {d5-d6}", d5, d6, d5, d6);
   1705     TESTINSN_VLDn("vld1.64 {d30-d31}", d30, d31, d30, d31);
   1706     TESTINSN_VLDn("vld1.8 {d0-d2}", d0, d1, d2, d0);
   1707     TESTINSN_VLDn("vld1.16 {d0-d2}", d0, d1, d2, d0);
   1708     TESTINSN_VLDn("vld1.32 {d0-d2}", d0, d1, d2, d0);
   1709     TESTINSN_VLDn("vld1.64 {d0-d2}", d0, d1, d2, d0);
   1710     TESTINSN_VLDn("vld1.8 {d0-d3}", d0, d1, d2, d3);
   1711     TESTINSN_VLDn("vld1.16 {d0-d3}", d0, d1, d2, d3);
   1712     TESTINSN_VLDn("vld1.32 {d0-d3}", d0, d1, d2, d3);
   1713     TESTINSN_VLDn("vld1.64 {d0-d3}", d0, d1, d2, d3);
   1714 
   1715     printf("---- VLD1 (single element to one lane) ----\n");
   1716     TESTINSN_VLDn("vld1.32 {d0[0]}", d0, d0, d0, d0);
   1717     TESTINSN_VLDn("vld1.32 {d0[1]}", d0, d0, d0, d0);
   1718     TESTINSN_VLDn("vld1.16 {d1[0]}", d1, d1, d1, d1);
   1719     TESTINSN_VLDn("vld1.16 {d1[1]}", d1, d1, d1, d1);
   1720     TESTINSN_VLDn("vld1.16 {d1[2]}", d1, d1, d1, d1);
   1721     TESTINSN_VLDn("vld1.16 {d1[3]}", d1, d1, d1, d1);
   1722     TESTINSN_VLDn("vld1.8 {d0[7]}", d0, d0, d0, d0);
   1723     TESTINSN_VLDn("vld1.8 {d1[6]}", d1, d1, d1, d1);
   1724     TESTINSN_VLDn("vld1.8 {d0[5]}", d0, d0, d0, d0);
   1725     TESTINSN_VLDn("vld1.8 {d0[4]}", d0, d0, d0, d0);
   1726     TESTINSN_VLDn("vld1.8 {d20[3]}", d20, d20, d20, d20);
   1727     TESTINSN_VLDn("vld1.8 {d0[2]}", d0, d0, d0, d0);
   1728     TESTINSN_VLDn("vld1.8 {d17[1]}", d17, d17, d17, d17);
   1729     TESTINSN_VLDn("vld1.8 {d30[0]}", d30, d30, d30, d30);
   1730 
   1731     printf("---- VLD1 (single element to all lanes) ----\n");
   1732     TESTINSN_VLDn("vld1.8 {d0[]}", d0, d0, d0, d0);
   1733     TESTINSN_VLDn("vld1.16 {d0[]}", d0, d0, d0, d0);
   1734     TESTINSN_VLDn("vld1.32 {d0[]}", d0, d0, d0, d0);
   1735     TESTINSN_VLDn("vld1.8 {d9[]}", d9, d9, d9, d9);
   1736     TESTINSN_VLDn("vld1.16 {d17[]}", d17, d17, d17, d17);
   1737     TESTINSN_VLDn("vld1.32 {d31[]}", d31, d31, d31, d31);
   1738     TESTINSN_VLDn("vld1.8 {d0[],d1[]}", d0, d1, d0, d1);
   1739     TESTINSN_VLDn("vld1.16 {d0[],d1[]}", d0, d1, d0, d1);
   1740     TESTINSN_VLDn("vld1.32 {d5[],d6[]}", d5, d6, d5, d6);
   1741 
   1742     printf("---- VLD2 (multiple 2-elements) ----\n");
   1743     TESTINSN_VLDn("vld2.8 {d30-d31}", d30, d31, d30, d31);
   1744     TESTINSN_VLDn("vld2.16 {d0-d1}", d0, d1, d0, d1);
   1745     TESTINSN_VLDn("vld2.32 {d0-d1}", d0, d1, d0, d1);
   1746     TESTINSN_VLDn("vld2.8 {d10,d12}", d10, d12, d10, d12);
   1747     TESTINSN_VLDn("vld2.16 {d20,d22}", d20, d22, d20, d22);
   1748     TESTINSN_VLDn("vld2.32 {d0,d2}", d0, d2, d0, d2);
   1749     TESTINSN_VLDn("vld2.8 {d0-d3}", d0, d1, d2, d3);
   1750     TESTINSN_VLDn("vld2.16 {d20-d23}", d20, d21, d22, d23);
   1751     TESTINSN_VLDn("vld2.32 {d0-d3}", d0, d1, d2, d3);
   1752 
   1753     printf("---- VLD2 (single 2-element structure to one lane) ----\n");
   1754     TESTINSN_VLDn("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
   1755     TESTINSN_VLDn("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
   1756     TESTINSN_VLDn("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
   1757     TESTINSN_VLDn("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
   1758     TESTINSN_VLDn("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
   1759     TESTINSN_VLDn("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
   1760     TESTINSN_VLDn("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
   1761     TESTINSN_VLDn("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
   1762     TESTINSN_VLDn("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
   1763     TESTINSN_VLDn("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
   1764     TESTINSN_VLDn("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
   1765     TESTINSN_VLDn("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
   1766     TESTINSN_VLDn("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
   1767     TESTINSN_VLDn("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
   1768     TESTINSN_VLDn("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
   1769     TESTINSN_VLDn("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
   1770     TESTINSN_VLDn("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
   1771     TESTINSN_VLDn("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
   1772     TESTINSN_VLDn("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
   1773     TESTINSN_VLDn("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
   1774 
   1775     printf("---- VLD2 (2-elements to all lanes) ----\n");
   1776     TESTINSN_VLDn("vld2.8 {d0[],d1[]}", d0, d1, d0, d1);
   1777     TESTINSN_VLDn("vld2.16 {d0[],d1[]}", d0, d1, d0, d1);
   1778     TESTINSN_VLDn("vld2.32 {d0[],d1[]}", d0, d1, d0, d1);
   1779     TESTINSN_VLDn("vld2.8 {d9[],d11[]}", d9, d11, d9, d11);
   1780     TESTINSN_VLDn("vld2.16 {d17[],d18[]}", d17, d18, d17, d18);
   1781     TESTINSN_VLDn("vld2.32 {d30[],d31[]}", d30, d31, d30, d31);
   1782     TESTINSN_VLDn("vld2.8 {d0[],d2[]}", d0, d2, d0, d2);
   1783     TESTINSN_VLDn("vld2.16 {d0[],d2[]}", d0, d2, d0, d2);
   1784     TESTINSN_VLDn("vld2.32 {d5[],d7[]}", d5, d7, d5, d7);
   1785 
   1786     printf("---- VLD3 (multiple 3-elements) ----\n");
   1787     TESTINSN_VLDn("vld3.8 {d20-d22}", d20, d21, d22, d20);
   1788     TESTINSN_VLDn("vld3.16 {d0-d2}", d0, d1, d2, d0);
   1789     TESTINSN_VLDn("vld3.32 {d0-d2}", d0, d1, d2, d0);
   1790     TESTINSN_VLDn("vld3.8 {d0,d2,d4}", d0, d2, d4, d0);
   1791     TESTINSN_VLDn("vld3.16 {d20,d22,d24}", d20, d22, d24, d20);
   1792     TESTINSN_VLDn("vld3.32 {d0,d2,d4}", d0, d2, d4, d0);
   1793 
   1794     printf("---- VLD3 (single 3-element structure to one lane) ----\n");
   1795     TESTINSN_VLDn("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
   1796     TESTINSN_VLDn("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
   1797     TESTINSN_VLDn("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
   1798     TESTINSN_VLDn("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
   1799     TESTINSN_VLDn("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
   1800     TESTINSN_VLDn("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
   1801     TESTINSN_VLDn("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
   1802     TESTINSN_VLDn("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
   1803     TESTINSN_VLDn("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
   1804     TESTINSN_VLDn("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
   1805     TESTINSN_VLDn("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
   1806     TESTINSN_VLDn("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
   1807     TESTINSN_VLDn("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
   1808     TESTINSN_VLDn("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
   1809     TESTINSN_VLDn("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
   1810     TESTINSN_VLDn("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
   1811     TESTINSN_VLDn("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
   1812     TESTINSN_VLDn("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
   1813     TESTINSN_VLDn("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
   1814     TESTINSN_VLDn("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
   1815 
   1816     printf("---- VLD3 (3-elements to all lanes) ----\n");
   1817     TESTINSN_VLDn("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   1818     TESTINSN_VLDn("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   1819     TESTINSN_VLDn("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   1820     TESTINSN_VLDn("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11);
   1821     TESTINSN_VLDn("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18);
   1822     TESTINSN_VLDn("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31);
   1823     TESTINSN_VLDn("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2);
   1824     TESTINSN_VLDn("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2);
   1825     TESTINSN_VLDn("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7);
   1826 
   1827     printf("---- VLD4 (multiple 3-elements) ----\n");
   1828     TESTINSN_VLDn("vld4.8 {d0-d3}", d0, d1, d2, d3);
   1829     TESTINSN_VLDn("vld4.16 {d20-d23}", d20, d21, d22, d23);
   1830     TESTINSN_VLDn("vld4.32 {d0-d3}", d0, d1, d2, d3);
   1831     TESTINSN_VLDn("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
   1832     TESTINSN_VLDn("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
   1833     TESTINSN_VLDn("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
   1834 
   1835     printf("---- VLD4 (single 4-element structure to one lane) ----\n");
   1836     TESTINSN_VLDn("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
   1837     TESTINSN_VLDn("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
   1838     TESTINSN_VLDn("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
   1839     TESTINSN_VLDn("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
   1840     TESTINSN_VLDn("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
   1841     TESTINSN_VLDn("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
   1842     TESTINSN_VLDn("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
   1843     TESTINSN_VLDn("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
   1844     TESTINSN_VLDn("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
   1845     TESTINSN_VLDn("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
   1846     TESTINSN_VLDn("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
   1847     TESTINSN_VLDn("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
   1848     TESTINSN_VLDn("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
   1849     TESTINSN_VLDn("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
   1850     TESTINSN_VLDn("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
   1851     TESTINSN_VLDn("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
   1852     TESTINSN_VLDn("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
   1853     TESTINSN_VLDn("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
   1854     TESTINSN_VLDn("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
   1855     TESTINSN_VLDn("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
   1856 
   1857     printf("---- VLD4 (4-elements to all lanes) ----\n");
   1858     TESTINSN_VLDn("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   1859     TESTINSN_VLDn("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   1860     TESTINSN_VLDn("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   1861     TESTINSN_VLDn("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15);
   1862     TESTINSN_VLDn("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20);
   1863     TESTINSN_VLDn("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31);
   1864     TESTINSN_VLDn("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
   1865     TESTINSN_VLDn("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
   1866     TESTINSN_VLDn("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11);
   1867 
   1868     printf("---- VST1 (multiple single elements) ----\n");
   1869     TESTINSN_VSTn("vst1.8 {d0}", d0, d0, d0, d0);
   1870     TESTINSN_VSTn("vst1.16 {d0}", d0, d0, d0, d0);
   1871     TESTINSN_VSTn("vst1.32 {d0}", d0, d0, d0, d0);
   1872     TESTINSN_VSTn("vst1.64 {d0}", d0, d0, d0, d0);
   1873     TESTINSN_VSTn("vst1.8 {d9}", d9, d9, d9, d9);
   1874     TESTINSN_VSTn("vst1.16 {d17}", d17, d17, d17, d17);
   1875     TESTINSN_VSTn("vst1.32 {d31}", d31, d31, d31, d31);
   1876     TESTINSN_VSTn("vst1.64 {d14}", d14, d14, d14, d14);
   1877     TESTINSN_VSTn("vst1.8 {d0-d1}", d0, d1, d0, d1);
   1878     TESTINSN_VSTn("vst1.16 {d0-d1}", d0, d1, d0, d1);
   1879     TESTINSN_VSTn("vst1.32 {d5-d6}", d5, d6, d5, d6);
   1880     TESTINSN_VSTn("vst1.64 {d30-d31}", d30, d31, d30, d31);
   1881     TESTINSN_VSTn("vst1.8 {d0-d2}", d0, d1, d2, d0);
   1882     TESTINSN_VSTn("vst1.16 {d0-d2}", d0, d1, d2, d0);
   1883     TESTINSN_VSTn("vst1.32 {d0-d2}", d0, d1, d2, d0);
   1884     TESTINSN_VSTn("vst1.64 {d0-d2}", d0, d1, d2, d0);
   1885     TESTINSN_VSTn("vst1.8 {d0-d3}", d0, d1, d2, d3);
   1886     TESTINSN_VSTn("vst1.16 {d0-d3}", d0, d1, d2, d3);
   1887     TESTINSN_VSTn("vst1.32 {d0-d3}", d0, d1, d2, d3);
   1888     TESTINSN_VSTn("vst1.64 {d0-d3}", d0, d1, d2, d3);
   1889 
   1890     printf("---- VST1 (single element from one lane) ----\n");
   1891     TESTINSN_VSTn("vst1.32 {d0[0]}", d0, d0, d0, d0);
   1892     TESTINSN_VSTn("vst1.32 {d0[1]}", d0, d0, d0, d0);
   1893     TESTINSN_VSTn("vst1.16 {d1[0]}", d1, d1, d1, d1);
   1894     TESTINSN_VSTn("vst1.16 {d1[1]}", d1, d1, d1, d1);
   1895     TESTINSN_VSTn("vst1.16 {d1[2]}", d1, d1, d1, d1);
   1896     TESTINSN_VSTn("vst1.16 {d1[3]}", d1, d1, d1, d1);
   1897     TESTINSN_VSTn("vst1.8 {d0[7]}", d0, d0, d0, d0);
   1898     TESTINSN_VSTn("vst1.8 {d1[6]}", d1, d1, d1, d1);
   1899     TESTINSN_VSTn("vst1.8 {d0[5]}", d0, d0, d0, d0);
   1900     TESTINSN_VSTn("vst1.8 {d0[4]}", d0, d0, d0, d0);
   1901     TESTINSN_VSTn("vst1.8 {d20[3]}", d20, d20, d20, d20);
   1902     TESTINSN_VSTn("vst1.8 {d0[2]}", d0, d0, d0, d0);
   1903     TESTINSN_VSTn("vst1.8 {d17[1]}", d17, d17, d17, d17);
   1904     TESTINSN_VSTn("vst1.8 {d30[0]}", d30, d30, d30, d30);
   1905 
   1906     printf("---- VST2 (multiple 2-elements) ----\n");
   1907     TESTINSN_VSTn("vst2.8 {d30-d31}", d30, d31, d30, d31);
   1908     TESTINSN_VSTn("vst2.16 {d0-d1}", d0, d1, d0, d1);
   1909     TESTINSN_VSTn("vst2.32 {d0-d1}", d0, d1, d0, d1);
   1910     TESTINSN_VSTn("vst2.8 {d10,d12}", d10, d12, d10, d12);
   1911     TESTINSN_VSTn("vst2.16 {d20,d22}", d20, d22, d20, d22);
   1912     TESTINSN_VSTn("vst2.32 {d0,d2}", d0, d2, d0, d2);
   1913     TESTINSN_VSTn("vst2.8 {d0-d3}", d0, d1, d2, d3);
   1914     TESTINSN_VSTn("vst2.16 {d20-d23}", d20, d21, d22, d23);
   1915     TESTINSN_VSTn("vst2.32 {d0-d3}", d0, d1, d2, d3);
   1916 
   1917     printf("---- VST2 (single 2-element structure from one lane) ----\n");
   1918     TESTINSN_VSTn("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
   1919     TESTINSN_VSTn("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
   1920     TESTINSN_VSTn("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
   1921     TESTINSN_VSTn("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
   1922     TESTINSN_VSTn("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
   1923     TESTINSN_VSTn("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
   1924     TESTINSN_VSTn("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
   1925     TESTINSN_VSTn("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
   1926     TESTINSN_VSTn("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
   1927     TESTINSN_VSTn("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
   1928     TESTINSN_VSTn("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
   1929     TESTINSN_VSTn("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
   1930     TESTINSN_VSTn("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
   1931     TESTINSN_VSTn("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
   1932     TESTINSN_VSTn("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
   1933     TESTINSN_VSTn("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
   1934     TESTINSN_VSTn("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
   1935     TESTINSN_VSTn("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
   1936     TESTINSN_VSTn("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
   1937     TESTINSN_VSTn("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
   1938 
   1939     printf("---- VST3 (multiple 3-elements) ----\n");
   1940     TESTINSN_VSTn("vst3.8 {d20-d22}", d20, d21, d22, d20);
   1941     TESTINSN_VSTn("vst3.16 {d0-d2}", d0, d1, d2, d0);
   1942     TESTINSN_VSTn("vst3.32 {d0-d2}", d0, d1, d2, d0);
   1943     TESTINSN_VSTn("vst3.8 {d0,d2,d4}", d0, d2, d4, d0);
   1944     TESTINSN_VSTn("vst3.16 {d20,d22,d24}", d20, d22, d24, d20);
   1945     TESTINSN_VSTn("vst3.32 {d0,d2,d4}", d0, d2, d4, d0);
   1946 
   1947     printf("---- VST3 (single 3-element structure from one lane) ----\n");
   1948     TESTINSN_VSTn("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
   1949     TESTINSN_VSTn("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
   1950     TESTINSN_VSTn("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
   1951     TESTINSN_VSTn("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
   1952     TESTINSN_VSTn("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
   1953     TESTINSN_VSTn("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
   1954     TESTINSN_VSTn("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
   1955     TESTINSN_VSTn("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
   1956     TESTINSN_VSTn("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
   1957     TESTINSN_VSTn("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
   1958     TESTINSN_VSTn("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
   1959     TESTINSN_VSTn("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
   1960     TESTINSN_VSTn("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
   1961     TESTINSN_VSTn("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
   1962     TESTINSN_VSTn("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
   1963     TESTINSN_VSTn("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
   1964     TESTINSN_VSTn("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
   1965     TESTINSN_VSTn("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
   1966     TESTINSN_VSTn("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
   1967     TESTINSN_VSTn("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
   1968 
   1969     printf("---- VST4 (multiple 4-elements) ----\n");
   1970     TESTINSN_VSTn("vst4.8 {d0-d3}", d0, d1, d2, d3);
   1971     TESTINSN_VSTn("vst4.16 {d20-d23}", d20, d21, d22, d23);
   1972     TESTINSN_VSTn("vst4.32 {d0-d3}", d0, d1, d2, d3);
   1973     TESTINSN_VSTn("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
   1974     TESTINSN_VSTn("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
   1975     TESTINSN_VSTn("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
   1976 
   1977     printf("---- VST4 (single 4-element structure from one lane) ----\n");
   1978     TESTINSN_VSTn("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
   1979     TESTINSN_VSTn("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
   1980     TESTINSN_VSTn("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
   1981     TESTINSN_VSTn("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
   1982     TESTINSN_VSTn("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
   1983     TESTINSN_VSTn("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
   1984     TESTINSN_VSTn("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
   1985     TESTINSN_VSTn("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
   1986     TESTINSN_VSTn("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
   1987     TESTINSN_VSTn("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
   1988     TESTINSN_VSTn("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
   1989     TESTINSN_VSTn("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
   1990     TESTINSN_VSTn("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
   1991     TESTINSN_VSTn("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
   1992     TESTINSN_VSTn("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
   1993     TESTINSN_VSTn("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
   1994     TESTINSN_VSTn("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
   1995     TESTINSN_VSTn("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
   1996     TESTINSN_VSTn("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
   1997     TESTINSN_VSTn("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
   1998 
   1999     printf("---- VLD1 (multiple single elements) ----\n");
   2000     TESTINSN_VLDn_WB("vld1.8 {d0}", d0, d0, d0, d0);
   2001     TESTINSN_VLDn_WB("vld1.16 {d0}", d0, d0, d0, d0);
   2002     TESTINSN_VLDn_WB("vld1.32 {d0}", d0, d0, d0, d0);
   2003     TESTINSN_VLDn_WB("vld1.64 {d0}", d0, d0, d0, d0);
   2004     TESTINSN_VLDn_WB("vld1.8 {d9}", d9, d9, d9, d9);
   2005     TESTINSN_VLDn_WB("vld1.16 {d17}", d17, d17, d17, d17);
   2006     TESTINSN_VLDn_WB("vld1.32 {d31}", d31, d31, d31, d31);
   2007     TESTINSN_VLDn_WB("vld1.64 {d14}", d14, d14, d14, d14);
   2008     TESTINSN_VLDn_WB("vld1.8 {d0-d1}", d0, d1, d0, d1);
   2009     TESTINSN_VLDn_WB("vld1.16 {d0-d1}", d0, d1, d0, d1);
   2010     TESTINSN_VLDn_WB("vld1.32 {d5-d6}", d5, d6, d5, d6);
   2011     TESTINSN_VLDn_WB("vld1.64 {d30-d31}", d30, d31, d30, d31);
   2012     TESTINSN_VLDn_WB("vld1.8 {d0-d2}", d0, d1, d2, d0);
   2013     TESTINSN_VLDn_WB("vld1.16 {d0-d2}", d0, d1, d2, d0);
   2014     TESTINSN_VLDn_WB("vld1.32 {d0-d2}", d0, d1, d2, d0);
   2015     TESTINSN_VLDn_WB("vld1.64 {d0-d2}", d0, d1, d2, d0);
   2016     TESTINSN_VLDn_WB("vld1.8 {d0-d3}", d0, d1, d2, d3);
   2017     TESTINSN_VLDn_WB("vld1.16 {d0-d3}", d0, d1, d2, d3);
   2018     TESTINSN_VLDn_WB("vld1.32 {d0-d3}", d0, d1, d2, d3);
   2019     TESTINSN_VLDn_WB("vld1.64 {d0-d3}", d0, d1, d2, d3);
   2020 
   2021     printf("---- VLD1 (single element to one lane) ----\n");
   2022     TESTINSN_VLDn_WB("vld1.32 {d0[0]}", d0, d0, d0, d0);
   2023     TESTINSN_VLDn_WB("vld1.32 {d0[1]}", d0, d0, d0, d0);
   2024     TESTINSN_VLDn_WB("vld1.16 {d1[0]}", d1, d1, d1, d1);
   2025     TESTINSN_VLDn_WB("vld1.16 {d1[1]}", d1, d1, d1, d1);
   2026     TESTINSN_VLDn_WB("vld1.16 {d1[2]}", d1, d1, d1, d1);
   2027     TESTINSN_VLDn_WB("vld1.16 {d1[3]}", d1, d1, d1, d1);
   2028     TESTINSN_VLDn_WB("vld1.8 {d0[7]}", d0, d0, d0, d0);
   2029     TESTINSN_VLDn_WB("vld1.8 {d1[6]}", d1, d1, d1, d1);
   2030     TESTINSN_VLDn_WB("vld1.8 {d0[5]}", d0, d0, d0, d0);
   2031     TESTINSN_VLDn_WB("vld1.8 {d0[4]}", d0, d0, d0, d0);
   2032     TESTINSN_VLDn_WB("vld1.8 {d20[3]}", d20, d20, d20, d20);
   2033     TESTINSN_VLDn_WB("vld1.8 {d0[2]}", d0, d0, d0, d0);
   2034     TESTINSN_VLDn_WB("vld1.8 {d17[1]}", d17, d17, d17, d17);
   2035     TESTINSN_VLDn_WB("vld1.8 {d30[0]}", d30, d30, d30, d30);
   2036 
   2037     printf("---- VLD1 (single element to all lanes) ----\n");
   2038     TESTINSN_VLDn_WB("vld1.8 {d0[]}", d0, d0, d0, d0);
   2039     TESTINSN_VLDn_WB("vld1.16 {d0[]}", d0, d0, d0, d0);
   2040     TESTINSN_VLDn_WB("vld1.32 {d0[]}", d0, d0, d0, d0);
   2041     TESTINSN_VLDn_WB("vld1.8 {d9[]}", d9, d9, d9, d9);
   2042     TESTINSN_VLDn_WB("vld1.16 {d17[]}", d17, d17, d17, d17);
   2043     TESTINSN_VLDn_WB("vld1.32 {d31[]}", d31, d31, d31, d31);
   2044     TESTINSN_VLDn_WB("vld1.8 {d0[],d1[]}", d0, d1, d0, d1);
   2045     TESTINSN_VLDn_WB("vld1.16 {d0[],d1[]}", d0, d1, d0, d1);
   2046     TESTINSN_VLDn_WB("vld1.32 {d5[],d6[]}", d5, d6, d5, d6);
   2047 
   2048     printf("---- VLD2 (multiple 2-elements) ----\n");
   2049     TESTINSN_VLDn_WB("vld2.8 {d30-d31}", d30, d31, d30, d31);
   2050     TESTINSN_VLDn_WB("vld2.16 {d0-d1}", d0, d1, d0, d1);
   2051     TESTINSN_VLDn_WB("vld2.32 {d0-d1}", d0, d1, d0, d1);
   2052     TESTINSN_VLDn_WB("vld2.8 {d10,d12}", d10, d12, d10, d12);
   2053     TESTINSN_VLDn_WB("vld2.16 {d20,d22}", d20, d22, d20, d22);
   2054     TESTINSN_VLDn_WB("vld2.32 {d0,d2}", d0, d2, d0, d2);
   2055     TESTINSN_VLDn_WB("vld2.8 {d0-d3}", d0, d1, d2, d3);
   2056     TESTINSN_VLDn_WB("vld2.16 {d20-d23}", d20, d21, d22, d23);
   2057     TESTINSN_VLDn_WB("vld2.32 {d0-d3}", d0, d1, d2, d3);
   2058 
   2059     printf("---- VLD2 (single 2-element structure to one lane) ----\n");
   2060     TESTINSN_VLDn_WB("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
   2061     TESTINSN_VLDn_WB("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
   2062     TESTINSN_VLDn_WB("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
   2063     TESTINSN_VLDn_WB("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
   2064     TESTINSN_VLDn_WB("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
   2065     TESTINSN_VLDn_WB("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
   2066     TESTINSN_VLDn_WB("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
   2067     TESTINSN_VLDn_WB("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
   2068     TESTINSN_VLDn_WB("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
   2069     TESTINSN_VLDn_WB("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
   2070     TESTINSN_VLDn_WB("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
   2071     TESTINSN_VLDn_WB("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
   2072     TESTINSN_VLDn_WB("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
   2073     TESTINSN_VLDn_WB("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
   2074     TESTINSN_VLDn_WB("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
   2075     TESTINSN_VLDn_WB("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
   2076     TESTINSN_VLDn_WB("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
   2077     TESTINSN_VLDn_WB("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
   2078     TESTINSN_VLDn_WB("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
   2079     TESTINSN_VLDn_WB("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
   2080 
   2081     printf("---- VLD2 (2-elements to all lanes) ----\n");
   2082     TESTINSN_VLDn_WB("vld2.8 {d0[],d1[]}", d0, d1, d0, d1);
   2083     TESTINSN_VLDn_WB("vld2.16 {d0[],d1[]}", d0, d1, d0, d1);
   2084     TESTINSN_VLDn_WB("vld2.32 {d0[],d1[]}", d0, d1, d0, d1);
   2085     TESTINSN_VLDn_WB("vld2.8 {d9[],d11[]}", d9, d11, d9, d11);
   2086     TESTINSN_VLDn_WB("vld2.16 {d17[],d18[]}", d17, d18, d17, d18);
   2087     TESTINSN_VLDn_WB("vld2.32 {d30[],d31[]}", d30, d31, d30, d31);
   2088     TESTINSN_VLDn_WB("vld2.8 {d0[],d2[]}", d0, d2, d0, d2);
   2089     TESTINSN_VLDn_WB("vld2.16 {d0[],d2[]}", d0, d2, d0, d2);
   2090     TESTINSN_VLDn_WB("vld2.32 {d5[],d7[]}", d5, d7, d5, d7);
   2091 
   2092     printf("---- VLD3 (multiple 3-elements) ----\n");
   2093     TESTINSN_VLDn_WB("vld3.8 {d20-d22}", d20, d21, d22, d20);
   2094     TESTINSN_VLDn_WB("vld3.16 {d0-d2}", d0, d1, d2, d0);
   2095     TESTINSN_VLDn_WB("vld3.32 {d0-d2}", d0, d1, d2, d0);
   2096     TESTINSN_VLDn_WB("vld3.8 {d0,d2,d4}", d0, d2, d4, d0);
   2097     TESTINSN_VLDn_WB("vld3.16 {d20,d22,d24}", d20, d22, d24, d20);
   2098     TESTINSN_VLDn_WB("vld3.32 {d0,d2,d4}", d0, d2, d4, d0);
   2099 
   2100     printf("---- VLD3 (single 3-element structure to one lane) ----\n");
   2101     TESTINSN_VLDn_WB("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
   2102     TESTINSN_VLDn_WB("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
   2103     TESTINSN_VLDn_WB("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
   2104     TESTINSN_VLDn_WB("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
   2105     TESTINSN_VLDn_WB("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
   2106     TESTINSN_VLDn_WB("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
   2107     TESTINSN_VLDn_WB("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
   2108     TESTINSN_VLDn_WB("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
   2109     TESTINSN_VLDn_WB("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
   2110     TESTINSN_VLDn_WB("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
   2111     TESTINSN_VLDn_WB("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
   2112     TESTINSN_VLDn_WB("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
   2113     TESTINSN_VLDn_WB("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
   2114     TESTINSN_VLDn_WB("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
   2115     TESTINSN_VLDn_WB("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
   2116     TESTINSN_VLDn_WB("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
   2117     TESTINSN_VLDn_WB("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
   2118     TESTINSN_VLDn_WB("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
   2119     TESTINSN_VLDn_WB("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
   2120     TESTINSN_VLDn_WB("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
   2121 
   2122     printf("---- VLD3 (3-elements to all lanes) ----\n");
   2123     TESTINSN_VLDn_WB("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   2124     TESTINSN_VLDn_WB("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   2125     TESTINSN_VLDn_WB("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   2126     TESTINSN_VLDn_WB("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11);
   2127     TESTINSN_VLDn_WB("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18);
   2128     TESTINSN_VLDn_WB("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31);
   2129     TESTINSN_VLDn_WB("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2);
   2130     TESTINSN_VLDn_WB("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2);
   2131     TESTINSN_VLDn_WB("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7);
   2132 
   2133     printf("---- VLD4 (multiple 3-elements) ----\n");
   2134     TESTINSN_VLDn_WB("vld4.8 {d0-d3}", d0, d1, d2, d3);
   2135     TESTINSN_VLDn_WB("vld4.16 {d20-d23}", d20, d21, d22, d23);
   2136     TESTINSN_VLDn_WB("vld4.32 {d0-d3}", d0, d1, d2, d3);
   2137     TESTINSN_VLDn_WB("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
   2138     TESTINSN_VLDn_WB("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
   2139     TESTINSN_VLDn_WB("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
   2140 
   2141     printf("---- VLD4 (single 4-element structure to one lane) ----\n");
   2142     TESTINSN_VLDn_WB("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
   2143     TESTINSN_VLDn_WB("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
   2144     TESTINSN_VLDn_WB("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
   2145     TESTINSN_VLDn_WB("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
   2146     TESTINSN_VLDn_WB("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
   2147     TESTINSN_VLDn_WB("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
   2148     TESTINSN_VLDn_WB("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
   2149     TESTINSN_VLDn_WB("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
   2150     TESTINSN_VLDn_WB("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
   2151     TESTINSN_VLDn_WB("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
   2152     TESTINSN_VLDn_WB("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
   2153     TESTINSN_VLDn_WB("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
   2154     TESTINSN_VLDn_WB("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
   2155     TESTINSN_VLDn_WB("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
   2156     TESTINSN_VLDn_WB("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
   2157     TESTINSN_VLDn_WB("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
   2158     TESTINSN_VLDn_WB("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
   2159     TESTINSN_VLDn_WB("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
   2160     TESTINSN_VLDn_WB("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
   2161     TESTINSN_VLDn_WB("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
   2162 
   2163     printf("---- VLD4 (4-elements to all lanes) ----\n");
   2164     TESTINSN_VLDn_WB("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   2165     TESTINSN_VLDn_WB("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   2166     TESTINSN_VLDn_WB("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   2167     TESTINSN_VLDn_WB("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15);
   2168     TESTINSN_VLDn_WB("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20);
   2169     TESTINSN_VLDn_WB("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31);
   2170     TESTINSN_VLDn_WB("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
   2171     TESTINSN_VLDn_WB("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
   2172     TESTINSN_VLDn_WB("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11);
   2173 
   2174     printf("---- VST1 (multiple single elements) ----\n");
   2175     TESTINSN_VSTn_WB("vst1.8 {d0}", d0, d0, d0, d0);
   2176     TESTINSN_VSTn_WB("vst1.16 {d0}", d0, d0, d0, d0);
   2177     TESTINSN_VSTn_WB("vst1.32 {d0}", d0, d0, d0, d0);
   2178     TESTINSN_VSTn_WB("vst1.64 {d0}", d0, d0, d0, d0);
   2179     TESTINSN_VSTn_WB("vst1.8 {d9}", d9, d9, d9, d9);
   2180     TESTINSN_VSTn_WB("vst1.16 {d17}", d17, d17, d17, d17);
   2181     TESTINSN_VSTn_WB("vst1.32 {d31}", d31, d31, d31, d31);
   2182     TESTINSN_VSTn_WB("vst1.64 {d14}", d14, d14, d14, d14);
   2183     TESTINSN_VSTn_WB("vst1.8 {d0-d1}", d0, d1, d0, d1);
   2184     TESTINSN_VSTn_WB("vst1.16 {d0-d1}", d0, d1, d0, d1);
   2185     TESTINSN_VSTn_WB("vst1.32 {d5-d6}", d5, d6, d5, d6);
   2186     TESTINSN_VSTn_WB("vst1.64 {d30-d31}", d30, d31, d30, d31);
   2187     TESTINSN_VSTn_WB("vst1.8 {d0-d2}", d0, d1, d2, d0);
   2188     TESTINSN_VSTn_WB("vst1.16 {d0-d2}", d0, d1, d2, d0);
   2189     TESTINSN_VSTn_WB("vst1.32 {d0-d2}", d0, d1, d2, d0);
   2190     TESTINSN_VSTn_WB("vst1.64 {d0-d2}", d0, d1, d2, d0);
   2191     TESTINSN_VSTn_WB("vst1.8 {d0-d3}", d0, d1, d2, d3);
   2192     TESTINSN_VSTn_WB("vst1.16 {d0-d3}", d0, d1, d2, d3);
   2193     TESTINSN_VSTn_WB("vst1.32 {d0-d3}", d0, d1, d2, d3);
   2194     TESTINSN_VSTn_WB("vst1.64 {d0-d3}", d0, d1, d2, d3);
   2195 
   2196     printf("---- VST1 (single element from one lane) ----\n");
   2197     TESTINSN_VSTn_WB("vst1.32 {d0[0]}", d0, d0, d0, d0);
   2198     TESTINSN_VSTn_WB("vst1.32 {d0[1]}", d0, d0, d0, d0);
   2199     TESTINSN_VSTn_WB("vst1.16 {d1[0]}", d1, d1, d1, d1);
   2200     TESTINSN_VSTn_WB("vst1.16 {d1[1]}", d1, d1, d1, d1);
   2201     TESTINSN_VSTn_WB("vst1.16 {d1[2]}", d1, d1, d1, d1);
   2202     TESTINSN_VSTn_WB("vst1.16 {d1[3]}", d1, d1, d1, d1);
   2203     TESTINSN_VSTn_WB("vst1.8 {d0[7]}", d0, d0, d0, d0);
   2204     TESTINSN_VSTn_WB("vst1.8 {d1[6]}", d1, d1, d1, d1);
   2205     TESTINSN_VSTn_WB("vst1.8 {d0[5]}", d0, d0, d0, d0);
   2206     TESTINSN_VSTn_WB("vst1.8 {d0[4]}", d0, d0, d0, d0);
   2207     TESTINSN_VSTn_WB("vst1.8 {d20[3]}", d20, d20, d20, d20);
   2208     TESTINSN_VSTn_WB("vst1.8 {d0[2]}", d0, d0, d0, d0);
   2209     TESTINSN_VSTn_WB("vst1.8 {d17[1]}", d17, d17, d17, d17);
   2210     TESTINSN_VSTn_WB("vst1.8 {d30[0]}", d30, d30, d30, d30);
   2211 
   2212     printf("---- VST2 (multiple 2-elements) ----\n");
   2213     TESTINSN_VSTn_WB("vst2.8 {d30-d31}", d30, d31, d30, d31);
   2214     TESTINSN_VSTn_WB("vst2.16 {d0-d1}", d0, d1, d0, d1);
   2215     TESTINSN_VSTn_WB("vst2.32 {d0-d1}", d0, d1, d0, d1);
   2216     TESTINSN_VSTn_WB("vst2.8 {d10,d12}", d10, d12, d10, d12);
   2217     TESTINSN_VSTn_WB("vst2.16 {d20,d22}", d20, d22, d20, d22);
   2218     TESTINSN_VSTn_WB("vst2.32 {d0,d2}", d0, d2, d0, d2);
   2219     TESTINSN_VSTn_WB("vst2.8 {d0-d3}", d0, d1, d2, d3);
   2220     TESTINSN_VSTn_WB("vst2.16 {d20-d23}", d20, d21, d22, d23);
   2221     TESTINSN_VSTn_WB("vst2.32 {d0-d3}", d0, d1, d2, d3);
   2222 
   2223     printf("---- VST2 (single 2-element structure from one lane) ----\n");
   2224     TESTINSN_VSTn_WB("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
   2225     TESTINSN_VSTn_WB("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
   2226     TESTINSN_VSTn_WB("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
   2227     TESTINSN_VSTn_WB("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
   2228     TESTINSN_VSTn_WB("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
   2229     TESTINSN_VSTn_WB("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
   2230     TESTINSN_VSTn_WB("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
   2231     TESTINSN_VSTn_WB("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
   2232     TESTINSN_VSTn_WB("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
   2233     TESTINSN_VSTn_WB("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
   2234     TESTINSN_VSTn_WB("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
   2235     TESTINSN_VSTn_WB("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
   2236     TESTINSN_VSTn_WB("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
   2237     TESTINSN_VSTn_WB("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
   2238     TESTINSN_VSTn_WB("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
   2239     TESTINSN_VSTn_WB("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
   2240     TESTINSN_VSTn_WB("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
   2241     TESTINSN_VSTn_WB("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
   2242     TESTINSN_VSTn_WB("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
   2243     TESTINSN_VSTn_WB("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
   2244 
   2245     printf("---- VST3 (multiple 3-elements) ----\n");
   2246     TESTINSN_VSTn_WB("vst3.8 {d20-d22}", d20, d21, d22, d20);
   2247     TESTINSN_VSTn_WB("vst3.16 {d0-d2}", d0, d1, d2, d0);
   2248     TESTINSN_VSTn_WB("vst3.32 {d0-d2}", d0, d1, d2, d0);
   2249     TESTINSN_VSTn_WB("vst3.8 {d0,d2,d4}", d0, d2, d4, d0);
   2250     TESTINSN_VSTn_WB("vst3.16 {d20,d22,d24}", d20, d22, d24, d20);
   2251     TESTINSN_VSTn_WB("vst3.32 {d0,d2,d4}", d0, d2, d4, d0);
   2252 
   2253     printf("---- VST3 (single 3-element structure from one lane) ----\n");
   2254     TESTINSN_VSTn_WB("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
   2255     TESTINSN_VSTn_WB("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
   2256     TESTINSN_VSTn_WB("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
   2257     TESTINSN_VSTn_WB("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
   2258     TESTINSN_VSTn_WB("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
   2259     TESTINSN_VSTn_WB("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
   2260     TESTINSN_VSTn_WB("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
   2261     TESTINSN_VSTn_WB("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
   2262     TESTINSN_VSTn_WB("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
   2263     TESTINSN_VSTn_WB("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
   2264     TESTINSN_VSTn_WB("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
   2265     TESTINSN_VSTn_WB("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
   2266     TESTINSN_VSTn_WB("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
   2267     TESTINSN_VSTn_WB("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
   2268     TESTINSN_VSTn_WB("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
   2269     TESTINSN_VSTn_WB("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
   2270     TESTINSN_VSTn_WB("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
   2271     TESTINSN_VSTn_WB("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
   2272     TESTINSN_VSTn_WB("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
   2273     TESTINSN_VSTn_WB("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
   2274 
   2275     printf("---- VST4 (multiple 4-elements) ----\n");
   2276     TESTINSN_VSTn_WB("vst4.8 {d0-d3}", d0, d1, d2, d3);
   2277     TESTINSN_VSTn_WB("vst4.16 {d20-d23}", d20, d21, d22, d23);
   2278     TESTINSN_VSTn_WB("vst4.32 {d0-d3}", d0, d1, d2, d3);
   2279     TESTINSN_VSTn_WB("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
   2280     TESTINSN_VSTn_WB("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
   2281     TESTINSN_VSTn_WB("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
   2282 
   2283     printf("---- VST4 (single 4-element structure from one lane) ----\n");
   2284     TESTINSN_VSTn_WB("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
   2285     TESTINSN_VSTn_WB("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
   2286     TESTINSN_VSTn_WB("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
   2287     TESTINSN_VSTn_WB("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
   2288     TESTINSN_VSTn_WB("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
   2289     TESTINSN_VSTn_WB("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
   2290     TESTINSN_VSTn_WB("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
   2291     TESTINSN_VSTn_WB("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
   2292     TESTINSN_VSTn_WB("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
   2293     TESTINSN_VSTn_WB("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
   2294     TESTINSN_VSTn_WB("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
   2295     TESTINSN_VSTn_WB("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
   2296     TESTINSN_VSTn_WB("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
   2297     TESTINSN_VSTn_WB("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
   2298     TESTINSN_VSTn_WB("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
   2299     TESTINSN_VSTn_WB("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
   2300     TESTINSN_VSTn_WB("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
   2301     TESTINSN_VSTn_WB("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
   2302     TESTINSN_VSTn_WB("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
   2303     TESTINSN_VSTn_WB("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
   2304 
   2305     printf("---- VLD1 (multiple single elements) ----\n");
   2306     TESTINSN_VLDn_RI("vld1.8 {d0}", d0, d0, d0, d0, r5, 13);
   2307     TESTINSN_VLDn_RI("vld1.16 {d0}", d0, d0, d0, d0, r8, 13);
   2308     TESTINSN_VLDn_RI("vld1.32 {d0}", d0, d0, d0, d0, r5, 42);
   2309     TESTINSN_VLDn_RI("vld1.64 {d0}", d0, d0, d0, d0, r5, 0);
   2310     TESTINSN_VLDn_RI("vld1.8 {d9}", d9, d9, d9, d9, r5, 13);
   2311     TESTINSN_VLDn_RI("vld1.16 {d17}", d17, d17, d17, d17, r6, 13);
   2312     TESTINSN_VLDn_RI("vld1.32 {d31}", d31, d31, d31, d31, r5, -3);
   2313     TESTINSN_VLDn_RI("vld1.64 {d14}", d14, d14, d14, d14, r5, 13);
   2314     TESTINSN_VLDn_RI("vld1.8 {d0-d1}", d0, d1, d0, d1, r5, 13);
   2315     TESTINSN_VLDn_RI("vld1.16 {d0-d1}", d0, d1, d0, d1, r5, 13);
   2316     TESTINSN_VLDn_RI("vld1.32 {d5-d6}", d5, d6, d5, d6, r5, 13);
   2317     TESTINSN_VLDn_RI("vld1.64 {d30-d31}", d30, d31, d30, d31, r5, 13);
   2318     TESTINSN_VLDn_RI("vld1.8 {d0-d2}", d0, d1, d2, d0, r5, 13);
   2319     TESTINSN_VLDn_RI("vld1.16 {d0-d2}", d0, d1, d2, d0, r5, 13);
   2320     TESTINSN_VLDn_RI("vld1.32 {d0-d2}", d0, d1, d2, d0, r5, 13);
   2321     TESTINSN_VLDn_RI("vld1.64 {d0-d2}", d0, d1, d2, d0, r5, 13);
   2322     TESTINSN_VLDn_RI("vld1.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2323     TESTINSN_VLDn_RI("vld1.16 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2324     TESTINSN_VLDn_RI("vld1.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2325     TESTINSN_VLDn_RI("vld1.64 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2326 
   2327     printf("---- VLD1 (single element to one lane) ----\n");
   2328     TESTINSN_VLDn_RI("vld1.32 {d0[0]}", d0, d0, d0, d0, r5, 13);
   2329     TESTINSN_VLDn_RI("vld1.32 {d0[1]}", d0, d0, d0, d0, r9, 42);
   2330     TESTINSN_VLDn_RI("vld1.16 {d1[0]}", d1, d1, d1, d1, r5, 13);
   2331     TESTINSN_VLDn_RI("vld1.16 {d1[1]}", d1, d1, d1, d1, r1, 0);
   2332     TESTINSN_VLDn_RI("vld1.16 {d1[2]}", d1, d1, d1, d1, r5, -3);
   2333     TESTINSN_VLDn_RI("vld1.16 {d1[3]}", d1, d1, d1, d1, r5, 13);
   2334     TESTINSN_VLDn_RI("vld1.8 {d0[7]}", d0, d0, d0, d0, r5, 13);
   2335     TESTINSN_VLDn_RI("vld1.8 {d1[6]}", d1, d1, d1, d1, r5, 13);
   2336     TESTINSN_VLDn_RI("vld1.8 {d0[5]}", d0, d0, d0, d0, r5, 13);
   2337     TESTINSN_VLDn_RI("vld1.8 {d0[4]}", d0, d0, d0, d0, r5, 13);
   2338     TESTINSN_VLDn_RI("vld1.8 {d20[3]}", d20, d20, d20, d20, r5, 13);
   2339     TESTINSN_VLDn_RI("vld1.8 {d0[2]}", d0, d0, d0, d0, r5, 13);
   2340     TESTINSN_VLDn_RI("vld1.8 {d17[1]}", d17, d17, d17, d17, r5, 13);
   2341     TESTINSN_VLDn_RI("vld1.8 {d30[0]}", d30, d30, d30, d30, r5, 13);
   2342 
   2343     printf("---- VLD1 (single element to all lanes) ----\n");
   2344     TESTINSN_VLDn_RI("vld1.8 {d0[]}", d0, d0, d0, d0, r5, 13);
   2345     TESTINSN_VLDn_RI("vld1.16 {d0[]}", d0, d0, d0, d0, r9, 42);
   2346     TESTINSN_VLDn_RI("vld1.32 {d0[]}", d0, d0, d0, d0, r1, 0);
   2347     TESTINSN_VLDn_RI("vld1.8 {d9[]}", d9, d9, d9, d9, r5, -3);
   2348     TESTINSN_VLDn_RI("vld1.16 {d17[]}", d17, d17, d17, d17, r5, 13);
   2349     TESTINSN_VLDn_RI("vld1.32 {d31[]}", d31, d31, d31, d31, r5, 13);
   2350     TESTINSN_VLDn_RI("vld1.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13);
   2351     TESTINSN_VLDn_RI("vld1.16 {d0[],d1[]}", d0, d1, d0, d1, r5, 13);
   2352     TESTINSN_VLDn_RI("vld1.32 {d5[],d6[]}", d5, d6, d5, d6, r5, 13);
   2353 
   2354     printf("---- VLD2 (multiple 2-elements) ----\n");
   2355     TESTINSN_VLDn_RI("vld2.8 {d30-d31}", d30, d31, d30, d31, r5, 13);
   2356     TESTINSN_VLDn_RI("vld2.16 {d0-d1}", d0, d1, d0, d1, r9, 42);
   2357     TESTINSN_VLDn_RI("vld2.32 {d0-d1}", d0, d1, d0, d1, r1, 0);
   2358     TESTINSN_VLDn_RI("vld2.8 {d10,d12}", d10, d12, d10, d12, r5, -3);
   2359     TESTINSN_VLDn_RI("vld2.16 {d20,d22}", d20, d22, d20, d22, r5, 13);
   2360     TESTINSN_VLDn_RI("vld2.32 {d0,d2}", d0, d2, d0, d2, r5, 13);
   2361     TESTINSN_VLDn_RI("vld2.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2362     TESTINSN_VLDn_RI("vld2.16 {d20-d23}", d20, d21, d22, d23, r5, 13);
   2363     TESTINSN_VLDn_RI("vld2.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2364 
   2365     printf("---- VLD2 (single 2-element structure to one lane) ----\n");
   2366     TESTINSN_VLDn_RI("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13);
   2367     TESTINSN_VLDn_RI("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42);
   2368     TESTINSN_VLDn_RI("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0);
   2369     TESTINSN_VLDn_RI("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3);
   2370     TESTINSN_VLDn_RI("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13);
   2371     TESTINSN_VLDn_RI("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13);
   2372     TESTINSN_VLDn_RI("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13);
   2373     TESTINSN_VLDn_RI("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13);
   2374     TESTINSN_VLDn_RI("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13);
   2375     TESTINSN_VLDn_RI("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13);
   2376     TESTINSN_VLDn_RI("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13);
   2377     TESTINSN_VLDn_RI("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13);
   2378     TESTINSN_VLDn_RI("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13);
   2379     TESTINSN_VLDn_RI("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13);
   2380     TESTINSN_VLDn_RI("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13);
   2381     TESTINSN_VLDn_RI("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13);
   2382     TESTINSN_VLDn_RI("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13);
   2383     TESTINSN_VLDn_RI("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13);
   2384     TESTINSN_VLDn_RI("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13);
   2385     TESTINSN_VLDn_RI("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13);
   2386 
   2387     printf("---- VLD2 (2-elements to all lanes) ----\n");
   2388     TESTINSN_VLDn_RI("vld2.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13);
   2389     TESTINSN_VLDn_RI("vld2.16 {d0[],d1[]}", d0, d1, d0, d1, r9, 42);
   2390     TESTINSN_VLDn_RI("vld2.32 {d0[],d1[]}", d0, d1, d0, d1, r1, 0);
   2391     TESTINSN_VLDn_RI("vld2.8 {d9[],d11[]}", d9, d11, d9, d11, r5, -3);
   2392     TESTINSN_VLDn_RI("vld2.16 {d17[],d18[]}", d17, d18, d17, d18, r5, 13);
   2393     TESTINSN_VLDn_RI("vld2.32 {d30[],d31[]}", d30, d31, d30, d31, r5, 13);
   2394     TESTINSN_VLDn_RI("vld2.8 {d0[],d2[]}", d0, d2, d0, d2, r5, 13);
   2395     TESTINSN_VLDn_RI("vld2.16 {d0[],d2[]}", d0, d2, d0, d2, r5, 13);
   2396     TESTINSN_VLDn_RI("vld2.32 {d5[],d7[]}", d5, d7, d5, d7, r5, 13);
   2397 
   2398     printf("---- VLD3 (multiple 3-elements) ----\n");
   2399     TESTINSN_VLDn_RI("vld3.8 {d20-d22}", d20, d21, d22, d20, r5, 13);
   2400     TESTINSN_VLDn_RI("vld3.16 {d0-d2}", d0, d1, d2, d0, r9, 42);
   2401     TESTINSN_VLDn_RI("vld3.32 {d0-d2}", d0, d1, d2, d0, r1, 0);
   2402     TESTINSN_VLDn_RI("vld3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3);
   2403     TESTINSN_VLDn_RI("vld3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13);
   2404     TESTINSN_VLDn_RI("vld3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13);
   2405 
   2406     printf("---- VLD3 (single 3-element structure to one lane) ----\n");
   2407     TESTINSN_VLDn_RI("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13);
   2408     TESTINSN_VLDn_RI("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42);
   2409     TESTINSN_VLDn_RI("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0);
   2410     TESTINSN_VLDn_RI("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3);
   2411     TESTINSN_VLDn_RI("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13);
   2412     TESTINSN_VLDn_RI("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13);
   2413     TESTINSN_VLDn_RI("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13);
   2414     TESTINSN_VLDn_RI("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13);
   2415     TESTINSN_VLDn_RI("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13);
   2416     TESTINSN_VLDn_RI("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13);
   2417     TESTINSN_VLDn_RI("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13);
   2418     TESTINSN_VLDn_RI("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13);
   2419     TESTINSN_VLDn_RI("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13);
   2420     TESTINSN_VLDn_RI("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13);
   2421     TESTINSN_VLDn_RI("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13);
   2422     TESTINSN_VLDn_RI("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13);
   2423     TESTINSN_VLDn_RI("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13);
   2424     TESTINSN_VLDn_RI("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13);
   2425     TESTINSN_VLDn_RI("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13);
   2426     TESTINSN_VLDn_RI("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13);
   2427 
   2428     printf("---- VLD3 (3-elements to all lanes) ----\n");
   2429     TESTINSN_VLDn_RI("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1, r5, 13);
   2430     TESTINSN_VLDn_RI("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1, r9, 42);
   2431     TESTINSN_VLDn_RI("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1, r1, 0);
   2432     TESTINSN_VLDn_RI("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11, r5, -3);
   2433     TESTINSN_VLDn_RI("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18, r5, 13);
   2434     TESTINSN_VLDn_RI("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31, r5, 13);
   2435     TESTINSN_VLDn_RI("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13);
   2436     TESTINSN_VLDn_RI("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13);
   2437     TESTINSN_VLDn_RI("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7, r5, 13);
   2438 
   2439     printf("---- VLD4 (multiple 3-elements) ----\n");
   2440     TESTINSN_VLDn_RI("vld4.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2441     TESTINSN_VLDn_RI("vld4.16 {d20-d23}", d20, d21, d22, d23, r9, 0);
   2442     TESTINSN_VLDn_RI("vld4.32 {d0-d3}", d0, d1, d2, d3, r0, 42);
   2443     TESTINSN_VLDn_RI("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3);
   2444     TESTINSN_VLDn_RI("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13);
   2445     TESTINSN_VLDn_RI("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13);
   2446 
   2447     printf("---- VLD4 (single 4-element structure to one lane) ----\n");
   2448     TESTINSN_VLDn_RI("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13);
   2449     TESTINSN_VLDn_RI("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42);
   2450     TESTINSN_VLDn_RI("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0);
   2451     TESTINSN_VLDn_RI("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3);
   2452     TESTINSN_VLDn_RI("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13);
   2453     TESTINSN_VLDn_RI("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13);
   2454     TESTINSN_VLDn_RI("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13);
   2455     TESTINSN_VLDn_RI("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13);
   2456     TESTINSN_VLDn_RI("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13);
   2457     TESTINSN_VLDn_RI("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13);
   2458     TESTINSN_VLDn_RI("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13);
   2459     TESTINSN_VLDn_RI("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13);
   2460     TESTINSN_VLDn_RI("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13);
   2461     TESTINSN_VLDn_RI("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13);
   2462     TESTINSN_VLDn_RI("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13);
   2463     TESTINSN_VLDn_RI("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13);
   2464     TESTINSN_VLDn_RI("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13);
   2465     TESTINSN_VLDn_RI("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13);
   2466     TESTINSN_VLDn_RI("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13);
   2467     TESTINSN_VLDn_RI("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13);
   2468 
   2469     printf("---- VLD4 (4-elements to all lanes) ----\n");
   2470     TESTINSN_VLDn_RI("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r5, 13);
   2471     TESTINSN_VLDn_RI("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r9, 42);
   2472     TESTINSN_VLDn_RI("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r1, 0);
   2473     TESTINSN_VLDn_RI("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15, r5, -3);
   2474     TESTINSN_VLDn_RI("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20, r5, 13);
   2475     TESTINSN_VLDn_RI("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31, r5, 13);
   2476     TESTINSN_VLDn_RI("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13);
   2477     TESTINSN_VLDn_RI("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13);
   2478     TESTINSN_VLDn_RI("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11, r5, 13);
   2479 
   2480     printf("---- VST1 (multiple single elements) ----\n");
   2481     TESTINSN_VSTn_RI("vst1.8 {d0}", d0, d0, d0, d0, r5, 13);
   2482     TESTINSN_VSTn_RI("vst1.16 {d0}", d0, d0, d0, d0, r9, 42);
   2483     TESTINSN_VSTn_RI("vst1.32 {d0}", d0, d0, d0, d0, r5, 0);
   2484     TESTINSN_VSTn_RI("vst1.64 {d0}", d0, d0, d0, d0, r5, -3);
   2485     TESTINSN_VSTn_RI("vst1.8 {d9}", d9, d9, d9, d9, r5, 13);
   2486     TESTINSN_VSTn_RI("vst1.16 {d17}", d17, d17, d17, d17, r5, 13);
   2487     TESTINSN_VSTn_RI("vst1.32 {d31}", d31, d31, d31, d31, r5, 13);
   2488     TESTINSN_VSTn_RI("vst1.64 {d14}", d14, d14, d14, d14, r5, 13);
   2489     TESTINSN_VSTn_RI("vst1.8 {d0-d1}", d0, d1, d0, d1, r5, 13);
   2490     TESTINSN_VSTn_RI("vst1.16 {d0-d1}", d0, d1, d0, d1, r5, 13);
   2491     TESTINSN_VSTn_RI("vst1.32 {d5-d6}", d5, d6, d5, d6, r5, 13);
   2492     TESTINSN_VSTn_RI("vst1.64 {d30-d31}", d30, d31, d30, d31, r5, 13);
   2493     TESTINSN_VSTn_RI("vst1.8 {d0-d2}", d0, d1, d2, d0, r5, 13);
   2494     TESTINSN_VSTn_RI("vst1.16 {d0-d2}", d0, d1, d2, d0, r5, 13);
   2495     TESTINSN_VSTn_RI("vst1.32 {d0-d2}", d0, d1, d2, d0, r5, 13);
   2496     TESTINSN_VSTn_RI("vst1.64 {d0-d2}", d0, d1, d2, d0, r5, 13);
   2497     TESTINSN_VSTn_RI("vst1.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2498     TESTINSN_VSTn_RI("vst1.16 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2499     TESTINSN_VSTn_RI("vst1.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2500     TESTINSN_VSTn_RI("vst1.64 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2501 
   2502     printf("---- VST1 (single element from one lane) ----\n");
   2503     TESTINSN_VSTn_RI("vst1.32 {d0[0]}", d0, d0, d0, d0, r5, 13);
   2504     TESTINSN_VSTn_RI("vst1.32 {d0[1]}", d0, d0, d0, d0, r9, 42);
   2505     TESTINSN_VSTn_RI("vst1.16 {d1[0]}", d1, d1, d1, d1, r1, 0);
   2506     TESTINSN_VSTn_RI("vst1.16 {d1[1]}", d1, d1, d1, d1, r5, -3);
   2507     TESTINSN_VSTn_RI("vst1.16 {d1[2]}", d1, d1, d1, d1, r5, 13);
   2508     TESTINSN_VSTn_RI("vst1.16 {d1[3]}", d1, d1, d1, d1, r5, 13);
   2509     TESTINSN_VSTn_RI("vst1.8 {d0[7]}", d0, d0, d0, d0, r5, 13);
   2510     TESTINSN_VSTn_RI("vst1.8 {d1[6]}", d1, d1, d1, d1, r5, 13);
   2511     TESTINSN_VSTn_RI("vst1.8 {d0[5]}", d0, d0, d0, d0, r5, 13);
   2512     TESTINSN_VSTn_RI("vst1.8 {d0[4]}", d0, d0, d0, d0, r5, 13);
   2513     TESTINSN_VSTn_RI("vst1.8 {d20[3]}", d20, d20, d20, d20, r5, 13);
   2514     TESTINSN_VSTn_RI("vst1.8 {d0[2]}", d0, d0, d0, d0, r5, 13);
   2515     TESTINSN_VSTn_RI("vst1.8 {d17[1]}", d17, d17, d17, d17, r5, 13);
   2516     TESTINSN_VSTn_RI("vst1.8 {d30[0]}", d30, d30, d30, d30, r5, 13);
   2517 
   2518     printf("---- VST2 (multiple 2-elements) ----\n");
   2519     TESTINSN_VSTn_RI("vst2.8 {d30-d31}", d30, d31, d30, d31, r5, 13);
   2520     TESTINSN_VSTn_RI("vst2.16 {d0-d1}", d0, d1, d0, d1, r9, 42);
   2521     TESTINSN_VSTn_RI("vst2.32 {d0-d1}", d0, d1, d0, d1, r1, 0);
   2522     TESTINSN_VSTn_RI("vst2.8 {d10,d12}", d10, d12, d10, d12, r5, -3);
   2523     TESTINSN_VSTn_RI("vst2.16 {d20,d22}", d20, d22, d20, d22, r5, 13);
   2524     TESTINSN_VSTn_RI("vst2.32 {d0,d2}", d0, d2, d0, d2, r5, 13);
   2525     TESTINSN_VSTn_RI("vst2.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2526     TESTINSN_VSTn_RI("vst2.16 {d20-d23}", d20, d21, d22, d23, r5, 13);
   2527     TESTINSN_VSTn_RI("vst2.32 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2528 
   2529     printf("---- VST2 (single 2-element structure from one lane) ----\n");
   2530     TESTINSN_VSTn_RI("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13);
   2531     TESTINSN_VSTn_RI("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42);
   2532     TESTINSN_VSTn_RI("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0);
   2533     TESTINSN_VSTn_RI("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3);
   2534     TESTINSN_VSTn_RI("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13);
   2535     TESTINSN_VSTn_RI("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13);
   2536     TESTINSN_VSTn_RI("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13);
   2537     TESTINSN_VSTn_RI("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13);
   2538     TESTINSN_VSTn_RI("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13);
   2539     TESTINSN_VSTn_RI("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13);
   2540     TESTINSN_VSTn_RI("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13);
   2541     TESTINSN_VSTn_RI("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13);
   2542     TESTINSN_VSTn_RI("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13);
   2543     TESTINSN_VSTn_RI("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13);
   2544     TESTINSN_VSTn_RI("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13);
   2545     TESTINSN_VSTn_RI("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13);
   2546     TESTINSN_VSTn_RI("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13);
   2547     TESTINSN_VSTn_RI("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13);
   2548     TESTINSN_VSTn_RI("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13);
   2549     TESTINSN_VSTn_RI("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13);
   2550 
   2551     printf("---- VST3 (multiple 3-elements) ----\n");
   2552     TESTINSN_VSTn_RI("vst3.8 {d20-d22}", d20, d21, d22, d20, r5, 13);
   2553     TESTINSN_VSTn_RI("vst3.16 {d0-d2}", d0, d1, d2, d0, r9, 42);
   2554     TESTINSN_VSTn_RI("vst3.32 {d0-d2}", d0, d1, d2, d0, r1, 0);
   2555     TESTINSN_VSTn_RI("vst3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3);
   2556     TESTINSN_VSTn_RI("vst3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13);
   2557     TESTINSN_VSTn_RI("vst3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13);
   2558 
   2559     printf("---- VST3 (single 3-element structure from one lane) ----\n");
   2560     TESTINSN_VSTn_RI("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13);
   2561     TESTINSN_VSTn_RI("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42);
   2562     TESTINSN_VSTn_RI("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0);
   2563     TESTINSN_VSTn_RI("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3);
   2564     TESTINSN_VSTn_RI("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13);
   2565     TESTINSN_VSTn_RI("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13);
   2566     TESTINSN_VSTn_RI("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13);
   2567     TESTINSN_VSTn_RI("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13);
   2568     TESTINSN_VSTn_RI("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13);
   2569     TESTINSN_VSTn_RI("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13);
   2570     TESTINSN_VSTn_RI("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13);
   2571     TESTINSN_VSTn_RI("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13);
   2572     TESTINSN_VSTn_RI("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13);
   2573     TESTINSN_VSTn_RI("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13);
   2574     TESTINSN_VSTn_RI("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13);
   2575     TESTINSN_VSTn_RI("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13);
   2576     TESTINSN_VSTn_RI("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13);
   2577     TESTINSN_VSTn_RI("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13);
   2578     TESTINSN_VSTn_RI("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13);
   2579     TESTINSN_VSTn_RI("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13);
   2580 
   2581     printf("---- VST4 (multiple 4-elements) ----\n");
   2582     TESTINSN_VSTn_RI("vst4.8 {d0-d3}", d0, d1, d2, d3, r5, 13);
   2583     TESTINSN_VSTn_RI("vst4.16 {d20-d23}", d20, d21, d22, d23, r9, 42);
   2584     TESTINSN_VSTn_RI("vst4.32 {d0-d3}", d0, d1, d2, d3, r1, 0);
   2585     TESTINSN_VSTn_RI("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3);
   2586     TESTINSN_VSTn_RI("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13);
   2587     TESTINSN_VSTn_RI("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13);
   2588 
   2589     printf("---- VST4 (single 4-element structure from one lane) ----\n");
   2590     TESTINSN_VSTn_RI("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13);
   2591     TESTINSN_VSTn_RI("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42);
   2592     TESTINSN_VSTn_RI("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0);
   2593     TESTINSN_VSTn_RI("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3);
   2594     TESTINSN_VSTn_RI("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13);
   2595     TESTINSN_VSTn_RI("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13);
   2596     TESTINSN_VSTn_RI("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13);
   2597     TESTINSN_VSTn_RI("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13);
   2598     TESTINSN_VSTn_RI("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13);
   2599     TESTINSN_VSTn_RI("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13);
   2600     TESTINSN_VSTn_RI("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13);
   2601     TESTINSN_VSTn_RI("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13);
   2602     TESTINSN_VSTn_RI("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13);
   2603     TESTINSN_VSTn_RI("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13);
   2604     TESTINSN_VSTn_RI("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13);
   2605     TESTINSN_VSTn_RI("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13);
   2606     TESTINSN_VSTn_RI("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13);
   2607     TESTINSN_VSTn_RI("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13);
   2608     TESTINSN_VSTn_RI("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13);
   2609     TESTINSN_VSTn_RI("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13);
   2610 
   2611     printf("---- VMOVN ----\n");
   2612     TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
   2613     TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
   2614     TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
   2615     TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
   2616     TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
   2617     TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
   2618 
   2619     printf("---- VQMOVN ----\n");
   2620     TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
   2621     TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
   2622     TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
   2623     TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
   2624     TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
   2625     TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
   2626     TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
   2627     TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
   2628     TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
   2629     TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
   2630     TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
   2631     TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
   2632     TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff);
   2633     TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff);
   2634     TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff);
   2635 
   2636     printf("---- VQMOVN ----\n");
   2637     TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
   2638     TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
   2639     TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
   2640     TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
   2641     TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
   2642     TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
   2643     TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff);
   2644     TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff);
   2645     TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff);
   2646 
   2647     printf("---- VABS ----\n");
   2648     TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0x73);
   2649     TESTINSN_un("vabs.s16 d15, d4", d15, d4, i32, 0x73);
   2650     TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0x73);
   2651     TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0xfe);
   2652     TESTINSN_un("vabs.s16 d31, d4", d31, d4, i32, 0xef);
   2653     TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0xde);
   2654     TESTINSN_un("vabs.s32 d0, d1", d0, d1, i16, 0xfe0a);
   2655     TESTINSN_un("vabs.s16 d15, d4", d15, d4, i16, 0xef0b);
   2656     TESTINSN_un("vabs.s8 d8, d7", d8, d7, i16, 0xde0c);
   2657 
   2658     printf("---- VQABS ----\n");
   2659     TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0x73);
   2660     TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 1 << 31);
   2661     TESTINSN_un_q("vqabs.s16 d0, d1", d0, d1, i32, 1 << 31);
   2662     TESTINSN_un_q("vqabs.s8 d0, d1", d0, d1, i32, 1 << 31);
   2663     TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i32, 0x73);
   2664     TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0x73);
   2665     TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0xfe);
   2666     TESTINSN_un_q("vqabs.s16 d31, d4", d31, d4, i32, 0xef);
   2667     TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0xde);
   2668     TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i16, 0xfe0a);
   2669     TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i16, 0xef0b);
   2670     TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i16, 0xde0c);
   2671 
   2672     printf("---- VADDHN ----\n");
   2673     TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
   2674     TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2675     TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2676     TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2677     TESTINSN_bin("vaddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
   2678     TESTINSN_bin("vaddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
   2679     TESTINSN_bin("vaddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
   2680     TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
   2681     TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2682     TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2683     TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2684 
   2685     printf("---- VRADDHN ----\n");
   2686     TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
   2687     TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2688     TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2689     TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2690     TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
   2691     TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
   2692     TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
   2693     TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
   2694     TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2695     TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2696     TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2697     TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0102);
   2698     TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0102);
   2699     TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0102);
   2700     TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x02);
   2701     TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
   2702     TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
   2703     TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
   2704 
   2705     printf("---- VSUBHN ----\n");
   2706     TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
   2707     TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2708     TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2709     TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2710     TESTINSN_bin("vsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
   2711     TESTINSN_bin("vsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
   2712     TESTINSN_bin("vsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
   2713     TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
   2714     TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2715     TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2716     TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2717 
   2718     printf("---- VRSUBHN ----\n");
   2719     TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
   2720     TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2721     TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2722     TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   2723     TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
   2724     TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
   2725     TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
   2726     TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
   2727     TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2728     TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2729     TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   2730     TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef93, q2, i32, 0x0102);
   2731     TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef93, q2, i32, 0x0102);
   2732     TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef93, q8, i32, 0x0102);
   2733     TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x93, q1, i32, 0x02);
   2734     TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
   2735     TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
   2736     TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
   2737 
   2738     printf("---- VCEQ #0 ----\n");
   2739     TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x21);
   2740     TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x21);
   2741     TESTINSN_un("vceq.i8 d10, d11, #0", d10, d11, i32, 0x21);
   2742     TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x0);
   2743     TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x0);
   2744     TESTINSN_un("vceq.i8 d10, d31, #0", d10, d31, i32, 0x0);
   2745 
   2746     printf("---- VCGT #0 ----\n");
   2747     TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x21);
   2748     TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x21);
   2749     TESTINSN_un("vcgt.s8 d10, d31, #0", d10, d31, i32, 0x21);
   2750     TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x0);
   2751     TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x0);
   2752     TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i32, 0x0);
   2753     TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i8, 0xef);
   2754     TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i8, 0xed);
   2755     TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i8, 0xae);
   2756 
   2757     printf("---- VCGE #0 ----\n");
   2758     TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x21);
   2759     TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x21);
   2760     TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0x21);
   2761     TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x0);
   2762     TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x0);
   2763     TESTINSN_un("vcge.s8 d10, d31, #0", d10, d31, i32, 0x0);
   2764     TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i8, 0xef);
   2765     TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i8, 0xed);
   2766     TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i8, 0xae);
   2767     TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0xef);
   2768     TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0xed);
   2769     TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0xae);
   2770 
   2771     printf("---- VCLE #0 ----\n");
   2772     TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x21);
   2773     TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x21);
   2774     TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i32, 0x21);
   2775     TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x0);
   2776     TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x0);
   2777     TESTINSN_un("vcle.s8 d10, d31, #0", d10, d31, i32, 0x0);
   2778     TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i8, 0xef);
   2779     TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i8, 0xed);
   2780     TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i8, 0xae);
   2781 
   2782     printf("---- VCLT #0 ----\n");
   2783     TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x21);
   2784     TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x21);
   2785     TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x21);
   2786     TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x0);
   2787     TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x0);
   2788     TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x0);
   2789     TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i8, 0xef);
   2790     TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i8, 0xed);
   2791     TESTINSN_un("vclt.s8 d10, d31, #0", d10, d31, i8, 0xae);
   2792     TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0xef);
   2793     TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0xed);
   2794     TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0xae);
   2795 
   2796     printf("---- VCNT ----\n");
   2797     TESTINSN_un("vcnt.8 d0, d1", d0, d1, i32, 0xac3d25eb);
   2798     TESTINSN_un("vcnt.8 d11, d14", d11, d14, i32, 0xac3d25eb);
   2799     TESTINSN_un("vcnt.8 d6, d2", d6, d2, i32, 0xad0eb);
   2800 
   2801     printf("---- VCLS ----\n");
   2802     TESTINSN_un("vcls.s8 d0, d1", d0, d1, i32, 0x21);
   2803     TESTINSN_un("vcls.s8 d30, d31", d30, d31, i8, 0x82);
   2804     TESTINSN_un("vcls.s16 d0, d1", d0, d1, i32, 0x21);
   2805     TESTINSN_un("vcls.s16 d31, d30", d31, d30, i8, 0x82);
   2806     TESTINSN_un("vcls.s32 d6, d1", d6, d1, i32, 0x21);
   2807     TESTINSN_un("vcls.s32 d30, d5", d30, d5, i8, 0x82);
   2808     TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0xff);
   2809     TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0xff);
   2810     TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0xff);
   2811     TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0xffef);
   2812     TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0xffef);
   2813     TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0xffef);
   2814     TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0x00);
   2815     TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0x00);
   2816     TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0x00);
   2817     TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0x00ef);
   2818     TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0x00ef);
   2819     TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0x00ef);
   2820 
   2821     printf("---- VCLZ ----\n");
   2822     TESTINSN_un("vclz.i8 d0, d1", d0, d1, i32, 0x21);
   2823     TESTINSN_un("vclz.i8 d30, d31", d30, d31, i8, 0x82);
   2824     TESTINSN_un("vclz.i16 d0, d1", d0, d1, i32, 0x21);
   2825     TESTINSN_un("vclz.i16 d31, d30", d31, d30, i8, 0x82);
   2826     TESTINSN_un("vclz.i32 d6, d1", d6, d1, i32, 0x21);
   2827     TESTINSN_un("vclz.i32 d30, d5", d30, d5, i8, 0x82);
   2828     TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0xff);
   2829     TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0xff);
   2830     TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0xff);
   2831     TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0xffef);
   2832     TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0xffef);
   2833     TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0xffef);
   2834     TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0x00);
   2835     TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0x00);
   2836     TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0x00);
   2837     TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0x00ef);
   2838     TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0x00ef);
   2839     TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0x00ef);
   2840 
   2841     printf("---- VSLI ----\n");
   2842     TESTINSN_un("vsli.16 d0, d1, #1", d0, d1, i32, 7);
   2843     TESTINSN_un("vsli.16 d3, d4, #2", d3, d4, i32, -0x7c);
   2844     TESTINSN_un("vsli.32 d2, d5, #31", d2, d5, i32, -1);
   2845     TESTINSN_un("vsli.8 d6, d7, #7", d6, d7, i32, 0xffff);
   2846     TESTINSN_un("vsli.16 d8, d9, #12", d8, d9, i32, -10);
   2847     TESTINSN_un("vsli.32 d10, d11, #5", d10, d11, i32, 10234);
   2848     TESTINSN_un("vsli.8 d12, d13, #1", d12, d13, i32, -1);
   2849     TESTINSN_un("vsli.16 d14, d15, #11", d14, d15, i32, -1);
   2850     TESTINSN_un("vsli.32 d10, d11, #9", d10, d11, i32, 1000);
   2851     TESTINSN_un("vsli.8 d7, d13, #7", d7, d13, i32, -1);
   2852     TESTINSN_un("vsli.16 d8, d1, #1", d8, d1, i32, 0xabcf);
   2853     TESTINSN_un("vsli.32 d12, d3, #15", d12, d3, i32, -0x1b0);
   2854     TESTINSN_un("vsli.64 d0, d1, #42", d0, d1, i32, -1);
   2855     TESTINSN_un("vsli.64 d6, d7, #12", d6, d7, i32, 0xfac);
   2856     TESTINSN_un("vsli.64 d8, d4, #9", d8, d4, i32, 13560);
   2857     TESTINSN_un("vsli.64 d9, d12, #11", d9, d12, i32, 98710);
   2858 
   2859     printf("---- VPADD ----\n");
   2860     TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   2861     TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   2862     TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   2863     TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   2864     TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   2865     TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   2866     TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   2867     TESTINSN_bin("vpadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   2868 
   2869     printf("---- VPADDL ----\n");
   2870     TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 24);
   2871     TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 140);
   2872     TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, 140);
   2873     TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, 140);
   2874     TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2875     TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2876     TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2877     TESTINSN_un("vpaddl.u32 d10, d11", d10, d11, i32, 24);
   2878     TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 24);
   2879     TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 140);
   2880     TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, 140);
   2881     TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, 140);
   2882     TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2883     TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2884     TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2885     TESTINSN_un("vpaddl.s32 d10, d11", d10, d11, i32, 24);
   2886 
   2887     printf("---- VPADAL ----\n");
   2888     TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 24);
   2889     TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 140);
   2890     TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, 140);
   2891     TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i8, 140);
   2892     TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2893     TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2894     TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2895     TESTINSN_un("vpadal.u32 d10, d11", d10, d11, i32, 24);
   2896     TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 24);
   2897     TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 140);
   2898     TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, 140);
   2899     TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i8, 140);
   2900     TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2901     TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2902     TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, (1 << 31) + 1);
   2903     TESTINSN_un("vpadal.s32 d10, d11", d10, d11, i32, 24);
   2904 
   2905     printf("---- VZIP ----\n");
   2906     TESTINSN_dual("vzip.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
   2907     TESTINSN_dual("vzip.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
   2908     TESTINSN_dual("vzip.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
   2909     TESTINSN_dual("vzip.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   2910     TESTINSN_dual("vzip.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   2911     TESTINSN_dual("vzip.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
   2912 
   2913     printf("---- VUZP ----\n");
   2914     TESTINSN_dual("vuzp.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
   2915     TESTINSN_dual("vuzp.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
   2916     TESTINSN_dual("vuzp.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
   2917     TESTINSN_dual("vuzp.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   2918     TESTINSN_dual("vuzp.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   2919     TESTINSN_dual("vuzp.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
   2920 
   2921     printf("---- VTRN ----\n");
   2922     TESTINSN_dual("vtrn.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
   2923     TESTINSN_dual("vtrn.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
   2924     TESTINSN_dual("vtrn.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
   2925     TESTINSN_dual("vtrn.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   2926     TESTINSN_dual("vtrn.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   2927     TESTINSN_dual("vtrn.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
   2928 
   2929     printf("---- VSWP ----\n");
   2930     TESTINSN_dual("vswp d0, d1", d0, i8, 0x12, d1, i8, 0x34);
   2931     TESTINSN_dual("vswp d1, d0", d0, i8, 0x12, d1, i8, 0x34);
   2932     TESTINSN_dual("vswp d10, d11", d10, i8, 0x12, d11, i8, 0x34);
   2933     TESTINSN_dual("vswp d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   2934     TESTINSN_dual("vswp d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   2935     TESTINSN_dual("vswp d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
   2936 
   2937     printf("---- VSHRN ----\n");
   2938     TESTINSN_un("vshrn.i16 d0, q1, #1", d0, q1, i32, -1);
   2939     TESTINSN_un("vshrn.i16 d3, q4, #2", d3, q4, i32, -0x7c);
   2940     TESTINSN_un("vshrn.i32 d2, q5, #10", d2, q5, i32, -1);
   2941     TESTINSN_un("vshrn.i32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   2942     TESTINSN_un("vshrn.i64 d6, q7, #7", d6, q7, i32, 0xffff);
   2943     TESTINSN_un("vshrn.i16 d8, q9, #8", d8, q9, i32, -10);
   2944     TESTINSN_un("vshrn.i32 d10, q11, #5", d10, q11, i32, 10234);
   2945     TESTINSN_un("vshrn.i64 d12, q13, #1", d12, q13, i32, -1);
   2946     TESTINSN_un("vshrn.i16 d14, q15, #6", d14, q15, i32, -1);
   2947     TESTINSN_un("vshrn.i32 d10, q11, #9", d10, q11, i32, 1000);
   2948     TESTINSN_un("vshrn.i64 d7, q13, #7", d7, q13, i32, -1);
   2949     TESTINSN_un("vshrn.i16 d8, q1, #1", d8, q1, i32, 0xabcf);
   2950     TESTINSN_un("vshrn.i32 d12, q3, #15", d12, q3, i32, -0x1b0);
   2951     TESTINSN_un("vshrn.i64 d0, q1, #22", d0, q1, i32, -1);
   2952     TESTINSN_un("vshrn.i64 d6, q7, #12", d6, q7, i32, 0xfac);
   2953     TESTINSN_un("vshrn.i64 d8, q4, #9", d8, q4, i32, 13560);
   2954     TESTINSN_un("vshrn.i64 d9, q12, #11", d9, q12, i32, 98710);
   2955 
   2956     printf("---- VDUP ----\n");
   2957     TESTINSN_un("vdup.8 d12, d2[0]", d12, d2, i32, 0xabc4657);
   2958     TESTINSN_un("vdup.8 d0, d3[2]", d0, d3, i32, 0x7a1b3);
   2959     TESTINSN_un("vdup.8 d1, d0[7]", d1, d0, i32, 0x713aaa);
   2960     TESTINSN_un("vdup.8 d10, d4[3]", d10, d4, i32, 0xaa713);
   2961     TESTINSN_un("vdup.8 d4, d28[4]", d4, d28, i32, 0x7b1c3);
   2962     TESTINSN_un("vdup.16 d17, d19[1]", d17, d19, i32, 0x713ffff);
   2963     TESTINSN_un("vdup.16 d15, d31[2]", d15, d31, i32, 0x7f00fa);
   2964     TESTINSN_un("vdup.16 d6, d2[0]", d6, d2, i32, 0xffabcde);
   2965     TESTINSN_un("vdup.16 d8, d22[3]", d8, d22, i32, 0x713);
   2966     TESTINSN_un("vdup.16 d9, d2[0]", d9, d2, i32, 0x713);
   2967     TESTINSN_un("vdup.32 d10, d17[1]", d10, d17, i32, 0x713);
   2968     TESTINSN_un("vdup.32 d15, d11[0]", d15, d11, i32, 0x3);
   2969     TESTINSN_un("vdup.32 d30, d29[1]", d30, d29, i32, 0xf00000aa);
   2970     TESTINSN_un("vdup.32 d22, d0[1]", d22, d0, i32, 0xf);
   2971     TESTINSN_un("vdup.32 d13, d13[0]", d13, d13, i32, -1);
   2972 
   2973     printf("---- VQDMULH ----\n");
   2974     TESTINSN_bin_q("vqdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   2975     TESTINSN_bin_q("vqdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
   2976     TESTINSN_bin_q("vqdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   2977     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   2978     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   2979     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   2980     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
   2981     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   2982     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   2983     TESTINSN_bin_q("vqdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
   2984     TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
   2985     TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
   2986     TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31);
   2987     TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30);
   2988 
   2989     printf("---- VQDMULH (by scalar) ----\n");
   2990     TESTINSN_bin_q("vqdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120);
   2991     TESTINSN_bin_q("vqdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120);
   2992     TESTINSN_bin_q("vqdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120);
   2993     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   2994     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   2995     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
   2996     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12);
   2997     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   2998     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   2999     TESTINSN_bin_q("vqdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120);
   3000     TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31);
   3001     TESTINSN_bin_q("vqdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, 1 << 31);
   3002     TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31);
   3003     TESTINSN_bin_q("vqdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30);
   3004 
   3005     printf("---- VSHRN ----\n");
   3006     TESTINSN_un("vshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657);
   3007     TESTINSN_un("vshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3);
   3008     TESTINSN_un("vshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa);
   3009     TESTINSN_un("vshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713);
   3010     TESTINSN_un("vshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3);
   3011     TESTINSN_un("vshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff);
   3012     TESTINSN_un("vshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa);
   3013     TESTINSN_un("vshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc);
   3014     TESTINSN_un("vshrn.i16 d8, q12, #3", d8, q12, i32, 0x713);
   3015     TESTINSN_un("vshrn.i16 d9, q2, #7", d9, q2, i32, 0x713);
   3016     TESTINSN_un("vshrn.i32 d10, q13, #2", d10, q13, i32, 0x713);
   3017     TESTINSN_un("vshrn.i32 d15, q11, #1", d15, q11, i32, 0x3);
   3018     TESTINSN_un("vshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa);
   3019     TESTINSN_un("vshrn.i32 d12, q0, #6", d12, q0, i32, 0xf);
   3020     TESTINSN_un("vshrn.i32 d13, q13, #2", d13, q13, i32, -1);
   3021 
   3022     printf("---- VQSHRN ----\n");
   3023     TESTINSN_un_q("vqshrn.s16 d0, q1, #1", d0, q1, i32, -1);
   3024     TESTINSN_un_q("vqshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c);
   3025     TESTINSN_un_q("vqshrn.s32 d2, q5, #10", d2, q5, i32, -1);
   3026     TESTINSN_un_q("vqshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   3027     TESTINSN_un_q("vqshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
   3028     TESTINSN_un_q("vqshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff);
   3029     TESTINSN_un_q("vqshrn.s16 d8, q9, #8", d8, q9, i32, -10);
   3030     TESTINSN_un_q("vqshrn.s32 d10, q11, #5", d10, q11, i32, 10234);
   3031     TESTINSN_un_q("vqshrn.s64 d12, q13, #1", d12, q13, i32, -1);
   3032     TESTINSN_un_q("vqshrn.s16 d14, q15, #6", d14, q15, i32, -1);
   3033     TESTINSN_un_q("vqshrn.s32 d10, q11, #9", d10, q11, i32, 1000);
   3034     TESTINSN_un_q("vqshrn.s64 d7, q13, #7", d7, q13, i32, -1);
   3035     TESTINSN_un_q("vqshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
   3036     TESTINSN_un_q("vqshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
   3037     TESTINSN_un_q("vqshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
   3038     TESTINSN_un_q("vqshrn.s64 d0, q1, #22", d0, q1, i32, -1);
   3039     TESTINSN_un_q("vqshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac);
   3040     TESTINSN_un_q("vqshrn.s64 d8, q4, #9", d8, q4, i32, 13560);
   3041     TESTINSN_un_q("vqshrn.s64 d9, q12, #11", d9, q12, i32, 98710);
   3042     TESTINSN_un_q("vqshrn.u16 d0, q1, #1", d0, q1, i32, -1);
   3043     TESTINSN_un_q("vqshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c);
   3044     TESTINSN_un_q("vqshrn.u32 d2, q5, #10", d2, q5, i32, -1);
   3045     TESTINSN_un_q("vqshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   3046     TESTINSN_un_q("vqshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff);
   3047     TESTINSN_un_q("vqshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff);
   3048     TESTINSN_un_q("vqshrn.u16 d8, q9, #8", d8, q9, i32, -10);
   3049     TESTINSN_un_q("vqshrn.u32 d10, q11, #5", d10, q11, i32, 10234);
   3050     TESTINSN_un_q("vqshrn.u64 d12, q13, #1", d12, q13, i32, -1);
   3051     TESTINSN_un_q("vqshrn.u16 d14, q15, #6", d14, q15, i32, -1);
   3052     TESTINSN_un_q("vqshrn.u32 d10, q11, #9", d10, q11, i32, 1000);
   3053     TESTINSN_un_q("vqshrn.u64 d7, q13, #7", d7, q13, i32, -1);
   3054     TESTINSN_un_q("vqshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf);
   3055     TESTINSN_un_q("vqshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf);
   3056     TESTINSN_un_q("vqshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0);
   3057     TESTINSN_un_q("vqshrn.u64 d0, q1, #22", d0, q1, i32, -1);
   3058     TESTINSN_un_q("vqshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac);
   3059     TESTINSN_un_q("vqshrn.u64 d8, q4, #9", d8, q4, i32, 13560);
   3060     TESTINSN_un_q("vqshrn.u64 d9, q12, #11", d9, q12, i32, 98710);
   3061 
   3062     printf("---- VQSHRUN ----\n");
   3063     TESTINSN_un_q("vqshrun.s16 d0, q1, #1", d0, q1, i32, -1);
   3064     TESTINSN_un_q("vqshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c);
   3065     TESTINSN_un_q("vqshrun.s32 d2, q5, #10", d2, q5, i32, -1);
   3066     TESTINSN_un_q("vqshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   3067     TESTINSN_un_q("vqshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
   3068     TESTINSN_un_q("vqshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff);
   3069     TESTINSN_un_q("vqshrun.s16 d8, q9, #8", d8, q9, i32, -10);
   3070     TESTINSN_un_q("vqshrun.s32 d10, q11, #5", d10, q11, i32, 10234);
   3071     TESTINSN_un_q("vqshrun.s64 d12, q13, #1", d12, q13, i32, -1);
   3072     TESTINSN_un_q("vqshrun.s16 d14, q15, #6", d14, q15, i32, -1);
   3073     TESTINSN_un_q("vqshrun.s32 d10, q11, #9", d10, q11, i32, 1000);
   3074     TESTINSN_un_q("vqshrun.s64 d7, q13, #7", d7, q13, i32, -1);
   3075     TESTINSN_un_q("vqshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
   3076     TESTINSN_un_q("vqshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
   3077     TESTINSN_un_q("vqshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
   3078     TESTINSN_un_q("vqshrun.s64 d0, q1, #22", d0, q1, i32, -1);
   3079     TESTINSN_un_q("vqshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac);
   3080     TESTINSN_un_q("vqshrun.s64 d8, q4, #9", d8, q4, i32, 13560);
   3081     TESTINSN_un_q("vqshrun.s64 d9, q12, #11", d9, q12, i32, 98710);
   3082 
   3083     printf("---- VQRSHRN ----\n");
   3084     TESTINSN_un_q("vqrshrn.s16 d0, q1, #1", d0, q1, i32, -1);
   3085     TESTINSN_un_q("vqrshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c);
   3086     TESTINSN_un_q("vqrshrn.s32 d2, q5, #10", d2, q5, i32, -1);
   3087     TESTINSN_un_q("vqrshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   3088     TESTINSN_un_q("vqrshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
   3089     TESTINSN_un_q("vqrshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff);
   3090     TESTINSN_un_q("vqrshrn.s16 d8, q9, #8", d8, q9, i32, -10);
   3091     TESTINSN_un_q("vqrshrn.s32 d10, q11, #5", d10, q11, i32, 10234);
   3092     TESTINSN_un_q("vqrshrn.s64 d12, q13, #1", d12, q13, i32, -1);
   3093     TESTINSN_un_q("vqrshrn.s16 d14, q15, #6", d14, q15, i32, -1);
   3094     TESTINSN_un_q("vqrshrn.s32 d10, q11, #9", d10, q11, i32, 1000);
   3095     TESTINSN_un_q("vqrshrn.s64 d7, q13, #7", d7, q13, i32, -1);
   3096     TESTINSN_un_q("vqrshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
   3097     TESTINSN_un_q("vqrshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
   3098     TESTINSN_un_q("vqrshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
   3099     TESTINSN_un_q("vqrshrn.s64 d0, q1, #22", d0, q1, i32, -1);
   3100     TESTINSN_un_q("vqrshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac);
   3101     TESTINSN_un_q("vqrshrn.s64 d8, q4, #9", d8, q4, i32, 13560);
   3102     TESTINSN_un_q("vqrshrn.s64 d9, q12, #11", d9, q12, i32, 98710);
   3103     TESTINSN_un_q("vqrshrn.u16 d0, q1, #1", d0, q1, i32, -1);
   3104     TESTINSN_un_q("vqrshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c);
   3105     TESTINSN_un_q("vqrshrn.u32 d2, q5, #10", d2, q5, i32, -1);
   3106     TESTINSN_un_q("vqrshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   3107     TESTINSN_un_q("vqrshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff);
   3108     TESTINSN_un_q("vqrshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff);
   3109     TESTINSN_un_q("vqrshrn.u16 d8, q9, #8", d8, q9, i32, -10);
   3110     TESTINSN_un_q("vqrshrn.u32 d10, q11, #5", d10, q11, i32, 10234);
   3111     TESTINSN_un_q("vqrshrn.u64 d12, q13, #1", d12, q13, i32, -1);
   3112     TESTINSN_un_q("vqrshrn.u16 d14, q15, #6", d14, q15, i32, -1);
   3113     TESTINSN_un_q("vqrshrn.u32 d10, q11, #9", d10, q11, i32, 1000);
   3114     TESTINSN_un_q("vqrshrn.u64 d7, q13, #7", d7, q13, i32, -1);
   3115     TESTINSN_un_q("vqrshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf);
   3116     TESTINSN_un_q("vqrshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf);
   3117     TESTINSN_un_q("vqrshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0);
   3118     TESTINSN_un_q("vqrshrn.u64 d0, q1, #22", d0, q1, i32, -1);
   3119     TESTINSN_un_q("vqrshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac);
   3120     TESTINSN_un_q("vqrshrn.u64 d8, q4, #9", d8, q4, i32, 13560);
   3121     TESTINSN_un_q("vqrshrn.u64 d9, q12, #11", d9, q12, i32, 98710);
   3122 
   3123     printf("---- VQRSHRUN ----\n");
   3124     TESTINSN_un_q("vqrshrun.s16 d0, q1, #1", d0, q1, i32, -1);
   3125     TESTINSN_un_q("vqrshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c);
   3126     TESTINSN_un_q("vqrshrun.s32 d2, q5, #10", d2, q5, i32, -1);
   3127     TESTINSN_un_q("vqrshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   3128     TESTINSN_un_q("vqrshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
   3129     TESTINSN_un_q("vqrshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff);
   3130     TESTINSN_un_q("vqrshrun.s16 d8, q9, #8", d8, q9, i32, -10);
   3131     TESTINSN_un_q("vqrshrun.s32 d10, q11, #5", d10, q11, i32, 10234);
   3132     TESTINSN_un_q("vqrshrun.s64 d12, q13, #1", d12, q13, i32, -1);
   3133     TESTINSN_un_q("vqrshrun.s16 d14, q15, #6", d14, q15, i32, -1);
   3134     TESTINSN_un_q("vqrshrun.s32 d10, q11, #9", d10, q11, i32, 1000);
   3135     TESTINSN_un_q("vqrshrun.s64 d7, q13, #7", d7, q13, i32, -1);
   3136     TESTINSN_un_q("vqrshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
   3137     TESTINSN_un_q("vqrshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
   3138     TESTINSN_un_q("vqrshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
   3139     TESTINSN_un_q("vqrshrun.s64 d0, q1, #22", d0, q1, i32, -1);
   3140     TESTINSN_un_q("vqrshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac);
   3141     TESTINSN_un_q("vqrshrun.s64 d8, q4, #9", d8, q4, i32, 13560);
   3142     TESTINSN_un_q("vqrshrun.s64 d9, q12, #11", d9, q12, i32, 98710);
   3143 
   3144     printf("---- VRSHRN ----\n");
   3145     TESTINSN_un("vrshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657);
   3146     TESTINSN_un("vrshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3);
   3147     TESTINSN_un("vrshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa);
   3148     TESTINSN_un("vrshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713);
   3149     TESTINSN_un("vrshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3);
   3150     TESTINSN_un("vrshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff);
   3151     TESTINSN_un("vrshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa);
   3152     TESTINSN_un("vrshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc);
   3153     TESTINSN_un("vrshrn.i16 d8, q12, #3", d8, q12, i32, 0x713);
   3154     TESTINSN_un("vrshrn.i16 d9, q2, #7", d9, q2, i32, 0x713);
   3155     TESTINSN_un("vrshrn.i32 d10, q13, #2", d10, q13, i32, 0x713);
   3156     TESTINSN_un("vrshrn.i32 d15, q11, #1", d15, q11, i32, 0x3);
   3157     TESTINSN_un("vrshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa);
   3158     TESTINSN_un("vrshrn.i32 d12, q0, #6", d12, q0, i32, 0xf);
   3159     TESTINSN_un("vrshrn.i32 d13, q13, #2", d13, q13, i32, -1);
   3160 
   3161     printf("---- VSHL (immediate) ----\n");
   3162     TESTINSN_un("vshl.i64 d0, d1, #1", d0, d1, i32, 24);
   3163     TESTINSN_un("vshl.i64 d5, d2, #1", d5, d2, i32, (1 << 30));
   3164     TESTINSN_un("vshl.i64 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
   3165     TESTINSN_un("vshl.i64 d11, d2, #12", d11, d2, i32, -1);
   3166     TESTINSN_un("vshl.i64 d15, d12, #63", d15, d12, i32, 5);
   3167     TESTINSN_un("vshl.i64 d5, d12, #62", d5, d12, i32, (1 << 31) + 1);
   3168     TESTINSN_un("vshl.i32 d0, d1, #1", d0, d1, i32, 24);
   3169     TESTINSN_un("vshl.i32 d5, d2, #1", d5, d2, i32, (1 << 30));
   3170     TESTINSN_un("vshl.i32 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
   3171     TESTINSN_un("vshl.i32 d11, d2, #12", d11, d2, i32, -1);
   3172     TESTINSN_un("vshl.i32 d15, d12, #20", d15, d12, i32, 5);
   3173     TESTINSN_un("vshl.i32 d5, d12, #30", d5, d12, i32, (1 << 31) + 1);
   3174     TESTINSN_un("vshl.i16 d0, d1, #1", d0, d1, i16, 24);
   3175     TESTINSN_un("vshl.i16 d5, d2, #1", d5, d2, i32, (1 << 30));
   3176     TESTINSN_un("vshl.i16 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
   3177     TESTINSN_un("vshl.i16 d11, d2, #12", d11, d2, i16, -1);
   3178     TESTINSN_un("vshl.i16 d15, d12, #3", d15, d12, i16, 5);
   3179     TESTINSN_un("vshl.i16 d5, d12, #14", d5, d12, i32, (1 << 31) + 1);
   3180     TESTINSN_un("vshl.i8 d0, d1, #1", d0, d1, i8, 24);
   3181     TESTINSN_un("vshl.i8 d5, d2, #1", d5, d2, i32, (1 << 30));
   3182     TESTINSN_un("vshl.i8 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
   3183     TESTINSN_un("vshl.i8 d11, d2, #7", d11, d2, i8, -1);
   3184     TESTINSN_un("vshl.i8 d15, d12, #3", d15, d12, i8, 5);
   3185     TESTINSN_un("vshl.i8 d5, d12, #6", d5, d12, i32, (1 << 31) + 1);
   3186 
   3187     printf("---- VNEG ----\n");
   3188     TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0x73);
   3189     TESTINSN_un("vneg.s16 d15, d4", d15, d4, i32, 0x73);
   3190     TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0x73);
   3191     TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0xfe);
   3192     TESTINSN_un("vneg.s16 d31, d4", d31, d4, i32, 0xef);
   3193     TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0xde);
   3194     TESTINSN_un("vneg.s32 d0, d1", d0, d1, i16, 0xfe0a);
   3195     TESTINSN_un("vneg.s16 d15, d4", d15, d4, i16, 0xef0b);
   3196     TESTINSN_un("vneg.s8 d8, d7", d8, d7, i16, 0xde0c);
   3197 
   3198     printf("---- VQNEG ----\n");
   3199     TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0x73);
   3200     TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 1 << 31);
   3201     TESTINSN_un_q("vqneg.s16 d0, d1", d0, d1, i32, 1 << 31);
   3202     TESTINSN_un_q("vqneg.s8 d0, d1", d0, d1, i32, 1 << 31);
   3203     TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i32, 0x73);
   3204     TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0x73);
   3205     TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0xfe);
   3206     TESTINSN_un_q("vqneg.s16 d31, d4", d31, d4, i32, 0xef);
   3207     TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0xde);
   3208     TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i16, 0xfe0a);
   3209     TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i16, 0xef0b);
   3210     TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i16, 0xde0c);
   3211 
   3212     printf("---- VREV ----\n");
   3213     TESTINSN_un("vrev64.8 d0, d1", d0, d1, i32, 0xaabbccdd);
   3214     TESTINSN_un("vrev64.16 d10, d31", d10, d31, i32, 0xaabbccdd);
   3215     TESTINSN_un("vrev64.32 d1, d14", d1, d14, i32, 0xaabbccdd);
   3216     TESTINSN_un("vrev32.8 d0, d1", d0, d1, i32, 0xaabbccdd);
   3217     TESTINSN_un("vrev32.16 d30, d15", d30, d15, i32, 0xaabbccdd);
   3218     TESTINSN_un("vrev16.8 d0, d1", d0, d1, i32, 0xaabbccdd);
   3219 
   3220     printf("---- VTBL ----\n");
   3221     TESTINSN_tbl_1("vtbl.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678);
   3222     TESTINSN_tbl_1("vtbl.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678);
   3223     TESTINSN_tbl_1("vtbl.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678);
   3224     TESTINSN_tbl_1("vtbl.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678);
   3225     TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678);
   3226     TESTINSN_tbl_1("vtbl.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678);
   3227     TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678);
   3228     TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678);
   3229     TESTINSN_tbl_2("vtbl.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3230     TESTINSN_tbl_2("vtbl.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4);
   3231     TESTINSN_tbl_2("vtbl.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4);
   3232     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3233     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3234     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3235     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3236     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3237     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3238     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3239     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3240     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3241     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3242     TESTINSN_tbl_3("vtbl.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3243     TESTINSN_tbl_3("vtbl.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd);
   3244     TESTINSN_tbl_3("vtbl.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd);
   3245     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3246     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3247     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3248     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3249     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3250     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3251     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3252     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3253     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3254     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3255     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);
   3256     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);
   3257     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);
   3258     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);
   3259     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);
   3260     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);
   3261     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);
   3262     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);
   3263     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);
   3264     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);
   3265     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);
   3266     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);
   3267     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);
   3268 
   3269     printf("---- VTBX ----\n");
   3270     TESTINSN_tbl_1("vtbx.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678);
   3271     TESTINSN_tbl_1("vtbx.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678);
   3272     TESTINSN_tbl_1("vtbx.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678);
   3273     TESTINSN_tbl_1("vtbx.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678);
   3274     TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678);
   3275     TESTINSN_tbl_1("vtbx.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678);
   3276     TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678);
   3277     TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678);
   3278     TESTINSN_tbl_2("vtbx.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3279     TESTINSN_tbl_2("vtbx.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4);
   3280     TESTINSN_tbl_2("vtbx.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4);
   3281     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3282     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3283     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3284     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3285     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   3286     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3287     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3288     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3289     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3290     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   3291     TESTINSN_tbl_3("vtbx.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3292     TESTINSN_tbl_3("vtbx.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd);
   3293     TESTINSN_tbl_3("vtbx.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd);
   3294     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3295     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3296     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3297     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3298     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   3299     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3300     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3301     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3302     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3303     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   3304     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);
   3305     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);
   3306     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);
   3307     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);
   3308     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);
   3309     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);
   3310     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);
   3311     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);
   3312     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);
   3313     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);
   3314     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);
   3315     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);
   3316     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);
   3317 
   3318     printf("---- VPMAX (integer) ----\n");
   3319     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   3320     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
   3321     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   3322     TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
   3323     TESTINSN_bin("vpmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   3324     TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   3325     TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3326     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3327     TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   3328     TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3329     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3330     TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   3331     TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3332     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3333     TESTINSN_bin("vpmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   3334     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   3335     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
   3336     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   3337     TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
   3338     TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120);
   3339     TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3340     TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3341     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3342     TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3343     TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3344     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3345     TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3346     TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3347     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3348     TESTINSN_bin("vpmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   3349 
   3350     printf("---- VPMIN (integer) ----\n");
   3351     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   3352     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
   3353     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   3354     TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
   3355     TESTINSN_bin("vpmin.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   3356     TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   3357     TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3358     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3359     TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   3360     TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3361     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3362     TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   3363     TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3364     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3365     TESTINSN_bin("vpmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   3366     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   3367     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
   3368     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   3369     TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
   3370     TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120);
   3371     TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3372     TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3373     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   3374     TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3375     TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3376     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   3377     TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3378     TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3379     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   3380     TESTINSN_bin("vpmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   3381 
   3382     printf("---- VQRDMULH ----\n");
   3383     TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   3384     TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
   3385     TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   3386     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   3387     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   3388     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   3389     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
   3390     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   3391     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   3392     TESTINSN_bin_q("vqrdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
   3393     TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
   3394     TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, (1 << 31) + 1);
   3395     TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31);
   3396     TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30);
   3397 
   3398     printf("---- VQRDMULH (by scalar) ----\n");
   3399     TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120);
   3400     TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120);
   3401     TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120);
   3402     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   3403     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   3404     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
   3405     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12);
   3406     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   3407     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   3408     TESTINSN_bin_q("vqrdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120);
   3409     TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31);
   3410     TESTINSN_bin_q("vqrdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
   3411     TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31);
   3412     TESTINSN_bin_q("vqrdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30);
   3413 
   3414     printf("---- VADD (fp) ----\n");
   3415     TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3416     TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3417     TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3418     TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3419     TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3420     TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   3421     TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   3422     TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3423     TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3424     TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3425     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3426     TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3427     TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3428     TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3429     TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3430     TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3431     TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3432     TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3433     TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3434     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3435     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3436     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3437     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3438     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3439     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3440     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3441     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3442     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3443     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3444     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3445     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3446     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3447     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3448     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3449     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3450     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3451     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3452     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3453     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3454     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3455 
   3456     printf("---- VSUB (fp) ----\n");
   3457     TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3458     TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3459     TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3460     TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3461     TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3462     TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   3463     TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   3464     TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3465     TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3466     TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3467     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3468     TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3469     TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3470     TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3471     TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3472     TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3473     TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3474     TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3475     TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3476     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3477     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3478     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3479     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3480     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3481     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3482     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3483     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3484     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3485     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3486     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3487     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3488     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3489     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3490     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3491     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3492     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3493     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3494     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3495     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3496     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3497 
   3498     printf("---- VMUL (fp) ----\n");
   3499     TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3500     TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3501     TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3502     TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3503     TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3504     TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   3505     TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   3506     TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3507     TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3508     TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3509     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3510     TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3511     TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3512     TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3513     TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3514     TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3515     TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3516     TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3517     TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3518     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3519     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3520     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3521     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3522     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3523     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3524     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3525     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3526     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3527     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3528     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3529     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3530     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3531     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3532     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3533     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3534     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3535     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3536     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3537     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3538     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3539 
   3540     printf("---- VMUL (fp by scalar) ----\n");
   3541     TESTINSN_bin("vmul.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120));
   3542     TESTINSN_bin("vmul.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120));
   3543     TESTINSN_bin("vmul.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   3544     TESTINSN_bin("vmul.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   3545     TESTINSN_bin("vmul.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   3546     TESTINSN_bin("vmul.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19));
   3547     TESTINSN_bin("vmul.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11));
   3548     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3549     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3550     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3551     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3552     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3553     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3554     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3555     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3556     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3557     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3558     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3559     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3560     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3561     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3562     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3563     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3564     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3565     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3566     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3567     TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3568 
   3569     printf("---- VMLA (fp) ----\n");
   3570     TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3571     TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3572     TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3573     TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3574     TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3575     TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   3576     TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   3577     TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3578     TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3579     TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3580     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3581     TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3582     TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3583     TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3584     TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3585     TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3586     TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3587     TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3588     TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3589     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3590     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3591     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3592     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3593     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3594     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3595     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3596     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3597     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3598     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3599     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3600     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3601     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3602     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3603     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3604     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3605     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3606     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3607     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3608     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3609     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3610 
   3611     printf("---- VMLA (fp by scalar) ----\n");
   3612     TESTINSN_bin_f("vmla.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120));
   3613     TESTINSN_bin_f("vmla.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120));
   3614     TESTINSN_bin_f("vmla.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   3615     TESTINSN_bin_f("vmla.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   3616     TESTINSN_bin_f("vmla.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   3617     TESTINSN_bin_f("vmla.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19));
   3618     TESTINSN_bin_f("vmla.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11));
   3619     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3620     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3621     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3622     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3623     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3624     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3625     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3626     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3627     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3628     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3629     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3630     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3631     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3632     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3633     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3634     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3635     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3636     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3637     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3638     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3639 
   3640     printf("---- VMLS (fp) ----\n");
   3641     TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3642     TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3643     TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3644     TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3645     TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3646     TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   3647     TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   3648     TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3649     TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3650     TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3651     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3652     TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3653     TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3654     TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3655     TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3656     TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3657     TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3658     TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3659     TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3660     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3661     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3662     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3663     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3664     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3665     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3666     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3667     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3668     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3669     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3670     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3671     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3672     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3673     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3674     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3675     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3676     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3677     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3678     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3679     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3680     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3681 
   3682     printf("---- VMLS (fp by scalar) ----\n");
   3683     TESTINSN_bin_f("vmls.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120));
   3684     TESTINSN_bin_f("vmls.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120));
   3685     TESTINSN_bin_f("vmls.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   3686     TESTINSN_bin_f("vmls.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   3687     TESTINSN_bin_f("vmls.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   3688     TESTINSN_bin_f("vmls.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19));
   3689     TESTINSN_bin_f("vmls.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11));
   3690     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3691     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3692     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3693     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3694     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3695     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3696     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3697     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3698     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3699     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3700     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3701     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3702     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3703     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3704     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3705     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3706     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3707     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3708     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3709     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3710 
   3711     printf("---- VABD (fp) ----\n");
   3712     TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3713     TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3714     TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3715     TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3716     TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3717     TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   3718     TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   3719     TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3720     TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3721     TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3722     TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3723     TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3724     TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3725     TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3726     TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3727     TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3728     TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3729     TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3730     TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3731     TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3732 
   3733     printf("---- VPADD (fp) ----\n");
   3734     TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3735     TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3736     TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3737     TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3738     TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3739     TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   3740     TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   3741     TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3742     TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3743     TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3744     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3745     TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3746     TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3747     TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3748     TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3749     TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3750     TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3751     TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3752     TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3753     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3754     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3755     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3756     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3757     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3758     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3759     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3760     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3761     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3762     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3763     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3764     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3765     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3766     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3767     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3768     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3769     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3770     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3771     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3772     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3773     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3774 
   3775     printf("---- VCVT (integer <-> fp) ----\n");
   3776     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(3.2));
   3777     TESTINSN_un("vcvt.u32.f32 d10, d11", d10, d11, i32, f2u(3e22));
   3778     TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(3e9));
   3779     TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   3780     TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   3781     TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   3782     TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   3783     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(3.2));
   3784     TESTINSN_un("vcvt.s32.f32 d20, d21", d20, d21, i32, f2u(3e22));
   3785     TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(3e9));
   3786     TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   3787     TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   3788     TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   3789     TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   3790     TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, 7);
   3791     TESTINSN_un("vcvt.f32.u32 d10, d11", d10, d11, i32, 1 << 31);
   3792     TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   3793     TESTINSN_un("vcvt.f32.u32 d24, d26", d24, d26, i32, (1U << 31) - 1);
   3794     TESTINSN_un("vcvt.f32.u32 d0, d14", d0, d14, i32, 0x30a0bcef);
   3795     TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, 7);
   3796     TESTINSN_un("vcvt.f32.s32 d30, d31", d30, d31, i32, 1 << 31);
   3797     TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   3798     TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   3799     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(NAN));
   3800     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(0.0));
   3801     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   3802     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   3803     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(NAN));
   3804     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(0.0));
   3805     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   3806     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   3807 
   3808     printf("---- VCVT (fixed <-> fp) ----\n");
   3809     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(3.2));
   3810     TESTINSN_un("vcvt.u32.f32 d10, d11, #1", d10, d11, i32, f2u(3e22));
   3811     TESTINSN_un("vcvt.u32.f32 d15, d4, #32", d15, d4, i32, f2u(3e9));
   3812     TESTINSN_un("vcvt.u32.f32 d15, d4, #7", d15, d4, i32, f2u(-0.5));
   3813     TESTINSN_un("vcvt.u32.f32 d15, d4, #4", d15, d4, i32, f2u(-7.1));
   3814     TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   3815     TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   3816     TESTINSN_un("vcvt.s32.f32 d0, d1, #5", d0, d1, i32, f2u(3.2));
   3817     TESTINSN_un("vcvt.s32.f32 d20, d21, #1", d20, d21, i32, f2u(3e22));
   3818     TESTINSN_un("vcvt.s32.f32 d15, d4, #8", d15, d4, i32, f2u(3e9));
   3819     TESTINSN_un("vcvt.s32.f32 d15, d4, #2", d15, d4, i32, f2u(-0.5));
   3820     TESTINSN_un("vcvt.s32.f32 d15, d4, #1", d15, d4, i32, f2u(-7.1));
   3821     TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   3822     TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   3823     TESTINSN_un("vcvt.f32.u32 d0, d1, #5", d0, d1, i32, 7);
   3824     TESTINSN_un("vcvt.f32.u32 d10, d11, #9", d10, d11, i32, 1 << 31);
   3825     TESTINSN_un("vcvt.f32.u32 d0, d1, #4", d0, d1, i32, (1U << 31) + 1);
   3826     TESTINSN_un("vcvt.f32.u32 d24, d26, #6", d24, d26, i32, (1U << 31) - 1);
   3827     TESTINSN_un("vcvt.f32.u32 d0, d14, #5", d0, d14, i32, 0x30a0bcef);
   3828     TESTINSN_un("vcvt.f32.s32 d0, d1, #12", d0, d1, i32, 7);
   3829     TESTINSN_un("vcvt.f32.s32 d30, d31, #8", d30, d31, i32, 1 << 31);
   3830     TESTINSN_un("vcvt.f32.s32 d0, d1, #1", d0, d1, i32, (1U << 31) + 1);
   3831     TESTINSN_un("vcvt.f32.s32 d0, d1, #6", d0, d1, i32, (1U << 31) - 1);
   3832     TESTINSN_un("vcvt.f32.s32 d0, d14, #2", d0, d14, i32, 0x30a0bcef);
   3833     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN));
   3834     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0));
   3835     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY));
   3836     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY));
   3837     TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN));
   3838     TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0));
   3839     TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY));
   3840     TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY));
   3841 
   3842     printf("---- VMAX (fp) ----\n");
   3843     TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3844     TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3845     TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3846     TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3847     TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3848     TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   3849     TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   3850     TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3851     TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3852     TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3853     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3854     TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3855     TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3856     TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3857     TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3858     TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3859     TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3860     TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3861     TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3862     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3863     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   3864     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   3865     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   3866     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   3867     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   3868     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   3869     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3870     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3871     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3872     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3873     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3874     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3875     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3876     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3877     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3878     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3879     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3880     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3881     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3882     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3883     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3884     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3885     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3886     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3887     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3888     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3889 
   3890     printf("---- VMIN (fp) ----\n");
   3891     TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3892     TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3893     TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3894     TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3895     TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3896     TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   3897     TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   3898     TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3899     TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3900     TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3901     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3902     TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3903     TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3904     TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3905     TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3906     TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3907     TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3908     TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3909     TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3910     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3911     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   3912     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   3913     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   3914     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   3915     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   3916     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   3917     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3918     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3919     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3920     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3921     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3922     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3923     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3924     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3925     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3926     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3927     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3928     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3929     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3930     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3931     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3932     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3933     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3934     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3935     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3936     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3937 
   3938     printf("---- VPMAX (fp) ----\n");
   3939     TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3940     TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3941     TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3942     TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3943     TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3944     TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   3945     TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   3946     TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3947     TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3948     TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3949     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3950     TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3951     TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   3952     TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   3953     TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   3954     TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   3955     TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   3956     TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   3957     TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   3958     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   3959     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   3960     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   3961     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   3962     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   3963     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   3964     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   3965     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   3966     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   3967     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   3968     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   3969     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   3970     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   3971     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   3972     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   3973     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   3974     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   3975     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   3976     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   3977     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   3978     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   3979     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   3980     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   3981     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   3982     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   3983     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   3984     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   3985 
   3986     printf("---- VPMIN (fp) ----\n");
   3987     TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   3988     TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   3989     TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   3990     TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   3991     TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   3992     TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   3993     TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   3994     TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   3995     TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   3996     TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   3997     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   3998     TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   3999     TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   4000     TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   4001     TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   4002     TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   4003     TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   4004     TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   4005     TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   4006     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   4007     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   4008     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   4009     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   4010     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   4011     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   4012     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   4013     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   4014     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   4015     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   4016     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   4017     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   4018     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   4019     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   4020     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   4021     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   4022     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   4023     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   4024     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   4025     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   4026     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   4027     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   4028     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   4029     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   4030     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   4031     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   4032     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   4033 
   4034     printf("---- VRECPE ----\n");
   4035     TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2));
   4036     TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(-653.2));
   4037     TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22));
   4038     TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9));
   4039     TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-0.5));
   4040     TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-7.1));
   4041     TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   4042     TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   4043     TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2));
   4044     TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22));
   4045     TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9));
   4046     TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   4047     TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   4048     TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   4049     TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   4050     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7);
   4051     TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31);
   4052     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   4053     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   4054     TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   4055     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7);
   4056     TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31);
   4057     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   4058     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   4059     TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   4060     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(NAN));
   4061     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(0.0));
   4062     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   4063     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   4064 
   4065     printf("---- VRECPS ----\n");
   4066     TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   4067     TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   4068     TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   4069     TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   4070     TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   4071     TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   4072     TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   4073     TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   4074     TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   4075     TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   4076     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   4077     TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   4078     TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   4079     TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   4080     TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   4081     TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   4082     TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   4083     TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   4084     TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   4085     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   4086     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   4087     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   4088     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   4089     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   4090     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   4091     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   4092     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   4093     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   4094     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   4095     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   4096     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   4097     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   4098     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   4099     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   4100     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   4101     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   4102     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   4103     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   4104     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   4105     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   4106 
   4107     printf("---- VABS (fp) ----\n");
   4108     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2));
   4109     TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22));
   4110     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9));
   4111     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   4112     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   4113     TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   4114     TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   4115     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2));
   4116     TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22));
   4117     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9));
   4118     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   4119     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   4120     TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   4121     TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   4122     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7);
   4123     TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31);
   4124     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   4125     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   4126     TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   4127     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7);
   4128     TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31);
   4129     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   4130     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   4131     TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   4132     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(NAN));
   4133     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(0.0));
   4134     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   4135     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   4136 
   4137     printf("---- VCGT (fp) ----\n");
   4138     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   4139     TESTINSN_bin("vcgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   4140     TESTINSN_bin("vcgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   4141     TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   4142     TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   4143     TESTINSN_bin("vcgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   4144     TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   4145     TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   4146     TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   4147     TESTINSN_bin("vcgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   4148     TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   4149     TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   4150     TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   4151     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   4152     TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   4153     TESTINSN_bin("vcgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   4154     TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   4155     TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   4156     TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   4157     TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   4158     TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   4159     TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   4160     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   4161     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   4162     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   4163     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   4164     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   4165     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   4166     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   4167     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   4168     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   4169     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   4170     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   4171     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   4172     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   4173     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   4174     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   4175     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   4176     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   4177     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   4178     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   4179     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   4180     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   4181     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   4182     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   4183     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   4184     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   4185     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   4186     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   4187 
   4188     printf("---- VCGE (fp) ----\n");
   4189     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   4190     TESTINSN_bin("vcge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   4191     TESTINSN_bin("vcge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   4192     TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   4193     TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   4194     TESTINSN_bin("vcge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   4195     TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   4196     TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   4197     TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   4198     TESTINSN_bin("vcge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   4199     TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   4200     TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   4201     TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   4202     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   4203     TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   4204     TESTINSN_bin("vcge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   4205     TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   4206     TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   4207     TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   4208     TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   4209     TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   4210     TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   4211     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   4212     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   4213     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   4214     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   4215     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   4216     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   4217     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   4218     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   4219     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   4220     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   4221     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   4222     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   4223     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   4224     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   4225     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   4226     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   4227     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   4228     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   4229     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   4230     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   4231     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   4232     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   4233     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   4234     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   4235     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   4236     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   4237     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   4238 
   4239     printf("---- VACGT (fp) ----\n");
   4240     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   4241     TESTINSN_bin("vacgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   4242     TESTINSN_bin("vacgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   4243     TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   4244     TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   4245     TESTINSN_bin("vacgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   4246     TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   4247     TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   4248     TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   4249     TESTINSN_bin("vacgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   4250     TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   4251     TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   4252     TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   4253     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   4254     TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   4255     TESTINSN_bin("vacgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   4256     TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   4257     TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   4258     TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   4259     TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   4260     TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   4261     TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   4262     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   4263     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   4264     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   4265     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   4266     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   4267     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   4268     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   4269     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   4270     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   4271     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   4272     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   4273     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   4274     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   4275     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   4276     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   4277     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   4278     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   4279     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   4280     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   4281     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   4282     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   4283     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   4284     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   4285     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   4286     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   4287     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   4288     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   4289 
   4290     printf("---- VACGE (fp) ----\n");
   4291     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   4292     TESTINSN_bin("vacge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   4293     TESTINSN_bin("vacge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   4294     TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   4295     TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   4296     TESTINSN_bin("vacge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   4297     TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   4298     TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   4299     TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   4300     TESTINSN_bin("vacge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   4301     TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   4302     TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   4303     TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   4304     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   4305     TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   4306     TESTINSN_bin("vacge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   4307     TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   4308     TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   4309     TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   4310     TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   4311     TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   4312     TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   4313     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   4314     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   4315     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   4316     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   4317     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   4318     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   4319     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   4320     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   4321     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   4322     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   4323     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   4324     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   4325     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   4326     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   4327     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   4328     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   4329     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   4330     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   4331     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   4332     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   4333     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   4334     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   4335     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   4336     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   4337     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   4338     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   4339     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   4340 
   4341     printf("---- VCEQ (fp) ----\n");
   4342     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   4343     TESTINSN_bin("vceq.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   4344     TESTINSN_bin("vceq.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   4345     TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   4346     TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   4347     TESTINSN_bin("vceq.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   4348     TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   4349     TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   4350     TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   4351     TESTINSN_bin("vceq.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   4352     TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   4353     TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   4354     TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   4355     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   4356     TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   4357     TESTINSN_bin("vceq.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   4358     TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   4359     TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   4360     TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   4361     TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   4362     TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   4363     TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   4364     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   4365     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   4366     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   4367     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   4368     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   4369     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   4370     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   4371     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   4372     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   4373     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   4374     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   4375     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   4376     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   4377     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   4378     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   4379     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   4380     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   4381     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   4382     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   4383     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   4384     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   4385     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   4386     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   4387     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   4388     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   4389     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   4390     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   4391 
   4392     printf("---- VCEQ (fp) #0 ----\n");
   4393     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   4394     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x1);
   4395     TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   4396     TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   4397     TESTINSN_un("vceq.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   4398     TESTINSN_un("vceq.f32 d30, d15, #0", d30, d15, i32, 0x0);
   4399     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   4400     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   4401     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   4402     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   4403 
   4404     printf("---- VCGT (fp) #0 ----\n");
   4405     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   4406     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x1);
   4407     TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   4408     TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   4409     TESTINSN_un("vcgt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   4410     TESTINSN_un("vcgt.f32 d30, d15, #0", d30, d15, i32, 0x0);
   4411     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   4412     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   4413     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   4414     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   4415 
   4416     printf("---- VCLT (fp) #0 ----\n");
   4417     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   4418     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x1);
   4419     TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   4420     TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   4421     TESTINSN_un("vclt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   4422     TESTINSN_un("vclt.f32 d30, d15, #0", d30, d15, i32, 0x0);
   4423     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   4424     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   4425     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   4426     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   4427 
   4428     printf("---- VCGE (fp) #0 ----\n");
   4429     TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   4430     TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x1);
   4431     TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   4432     TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   4433     TESTINSN_un("vcge.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   4434     TESTINSN_un("vcge.f32 d30, d15, #0", d30, d15, i32, 0x0);
   4435     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   4436     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   4437     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   4438     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   4439 
   4440     printf("---- VCLE (fp) #0 ----\n");
   4441     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   4442     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x1);
   4443     TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   4444     TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   4445     TESTINSN_un("vcle.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   4446     TESTINSN_un("vcle.f32 d30, d15, #0", d30, d15, i32, 0x0);
   4447     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   4448     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   4449     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   4450     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   4451 
   4452     printf("---- VNEG (fp) ----\n");
   4453     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x01000000);
   4454     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x1);
   4455     TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, 1 << 31);
   4456     TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, f2u(23.04));
   4457     TESTINSN_un("vneg.f32 d2, d31", d2, d31, i32, f2u(-23.04));
   4458     TESTINSN_un("vneg.f32 d30, d15", d30, d15, i32, 0x0);
   4459     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(NAN));
   4460     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(0.0));
   4461     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   4462     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   4463 
   4464     printf("---- VRSQRTS ----\n");
   4465     TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   4466     TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   4467     TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   4468     TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   4469     TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   4470     TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   4471     TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   4472     TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   4473     TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   4474     TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   4475     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   4476     TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   4477     TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   4478     TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   4479     TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   4480     TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   4481     TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   4482     TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   4483     TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   4484     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   4485     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   4486     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   4487     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   4488     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   4489     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   4490     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   4491     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   4492     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   4493     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   4494     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   4495     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   4496     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   4497     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   4498     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   4499     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   4500     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   4501     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   4502     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   4503     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   4504     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   4505 
   4506     printf("---- VRSQRTE (fp) ----\n");
   4507     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2));
   4508     TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22));
   4509     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9));
   4510     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   4511     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   4512     TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   4513     TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   4514     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2));
   4515     TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22));
   4516     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9));
   4517     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   4518     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   4519     TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   4520     TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   4521     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7);
   4522     TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31);
   4523     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   4524     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   4525     TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   4526     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7);
   4527     TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31);
   4528     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   4529     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   4530     TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   4531     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(NAN));
   4532     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(0.0));
   4533     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   4534     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   4535 
   4536     return 0;
   4537 }
   4538 
   4539 /* How to compile:
   4540 
   4541    gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
   4542        -marm -o neon64-a neon64.c
   4543 
   4544    or
   4545 
   4546    gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
   4547        -mthumb -o neon64-t neon64.c
   4548 
   4549 */
   4550 
   4551 #include <stdio.h>
   4552 #include <string.h>
   4553 #include <math.h>
   4554 
   4555 #ifndef __thumb__
   4556 // ARM
   4557 #define MOVE_to_FPSCR_from_R4 \
   4558       ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t"
   4559 #define MOVE_to_R4_from_FPSCR \
   4560       ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t"
   4561 #endif
   4562 
   4563 #ifdef __thumb__
   4564 // Thumb
   4565 #define MOVE_to_FPSCR_from_R4 \
   4566       ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t"
   4567 #define MOVE_to_R4_from_FPSCR \
   4568       ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t"
   4569 #endif
   4570 
   4571 static inline unsigned int f2u(float x) {
   4572     union {
   4573         float f;
   4574         unsigned int u;
   4575     } cvt;
   4576     cvt.f = x;
   4577     return cvt.u;
   4578 }
   4579 
   4580 /* test macros to generate and output the result of a single instruction */
   4581 
   4582 const unsigned int mem[] = {
   4583     0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d,
   4584     0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
   4585     0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
   4586     0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
   4587 };
   4588 
   4589 #define TESTINSN_imm(instruction, QD, imm) \
   4590 { \
   4591   unsigned int out[2]; \
   4592 \
   4593   __asm__ volatile( \
   4594       "vmov.i8 " #QD ", #0x55" "\n\t" \
   4595       instruction ", #" #imm "\n\t" \
   4596       "vstmia %0, {" #QD "}\n\t" \
   4597       : \
   4598       : "r" (out) \
   4599       : #QD, "memory" \
   4600       ); \
   4601   printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \
   4602       instruction, out[1], out[0]); \
   4603 }
   4604 
   4605 #define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \
   4606 { \
   4607   unsigned int out[2]; \
   4608 \
   4609   __asm__ volatile( \
   4610       "vmov.i8 " #QD ", #0x55" "\n\t" \
   4611       "vdup." #QMtype " " #QM ", %1\n\t" \
   4612       instruction "\n\t" \
   4613       "vstmia %0, {" #QD "}\n\t" \
   4614       : \
   4615       : "r" (out), "r" (QMval) \
   4616       : #QD, #QM, "memory" \
   4617       ); \
   4618   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x\n", \
   4619       instruction, out[1], out[0], QMval); \
   4620 }
   4621 
   4622 #define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \
   4623 { \
   4624   unsigned int out[2]; \
   4625   unsigned int fpscr; \
   4626 \
   4627   __asm__ volatile( \
   4628       "vmov.i8 " #QD ", #0x55" "\n\t" \
   4629       "mov r4, #0\n\t" \
   4630       MOVE_to_FPSCR_from_R4 \
   4631       "vdup." #QMtype " " #QM ", %2\n\t" \
   4632       instruction "\n\t" \
   4633       "vstmia %1, {" #QD "}\n\t" \
   4634       MOVE_to_R4_from_FPSCR \
   4635       "mov %0, r4" \
   4636       : "=r" (fpscr) \
   4637       : "r" (out), "r" (QMval) \
   4638       : #QD, #QM, "memory", "r4" \
   4639       ); \
   4640   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x  fpscr %08x\n", \
   4641       instruction, out[1], out[0], QMval, fpscr); \
   4642 }
   4643 
   4644 #define TESTINSN_core_to_scalar(instruction, QD, QM, QMval) \
   4645 { \
   4646   unsigned int out[2]; \
   4647 \
   4648   __asm__ volatile( \
   4649       "vmov.i8 " #QD ", #0x55" "\n\t" \
   4650       "mov " #QM ", %1\n\t" \
   4651       instruction "\n\t" \
   4652       "vstmia %0, {" #QD "}\n\t" \
   4653       : \
   4654       : "r" (out), "r" (QMval) \
   4655       : #QD, #QM, "memory" \
   4656       ); \
   4657   printf("%s :: Qd 0x%08x 0x%08x  Qm 0x%08x\n", \
   4658       instruction, out[1], out[0], QMval); \
   4659 }
   4660 
   4661 #define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \
   4662 { \
   4663   unsigned int out[2]; \
   4664 \
   4665   __asm__ volatile( \
   4666       "mov " #QD ", #0x55" "\n\t" \
   4667       "vdup." #QMtype " " #QM ", %1\n\t" \
   4668       instruction "\n\t" \
   4669       "str " #QD ", [%0]\n\t" \
   4670       : \
   4671       : "r" (out), "r" (QMval) \
   4672       : #QD, #QM, "memory" \
   4673       ); \
   4674   printf("%s :: Rd 0x%08x  Qm (" #QMtype ")0x%08x\n", \
   4675       instruction, out[0], QMval); \
   4676 }
   4677 
   4678 #define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \
   4679 { \
   4680   unsigned int out[8]; \
   4681 \
   4682   __asm__ volatile( \
   4683       "vmov.i8 " #QD1 ", #0x55" "\n\t" \
   4684       "vmov.i8 " #QD2 ", #0x55" "\n\t" \
   4685       "vmov.i8 " #QD3 ", #0x55" "\n\t" \
   4686       "vmov.i8 " #QD4 ", #0x55" "\n\t" \
   4687       instruction ", [%1]\n\t" \
   4688       "mov r4, %0\n\t" \
   4689       "vstmia %0!, {" #QD1 "}\n\t" \
   4690       "vstmia %0!, {" #QD2 "}\n\t" \
   4691       "vstmia %0!, {" #QD3 "}\n\t" \
   4692       "vstmia %0!, {" #QD4 "}\n\t" \
   4693       "mov %0, r4\n\t" \
   4694       : \
   4695       : "r" (out), "r" (mem) \
   4696       : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
   4697       ); \
   4698   printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
   4699           "0x%08x 0x%08x 0x%08x 0x%08x\n", \
   4700       instruction, out[0], out[1], out[2], out[3], out[4],\
   4701           out[5], out[6], out[7]); \
   4702 }
   4703 
   4704 #define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \
   4705 { \
   4706   unsigned int out[8]; \
   4707 \
   4708   memset(out, 0x55, 8 * (sizeof(unsigned int)));\
   4709   __asm__ volatile( \
   4710       "mov r4, %1\n\t" \
   4711       "vldmia %1!, {" #QD1 "}\n\t" \
   4712       "vldmia %1!, {" #QD2 "}\n\t" \
   4713       "vldmia %1!, {" #QD3 "}\n\t" \
   4714       "vldmia %1!, {" #QD4 "}\n\t" \
   4715       "mov %1, r4\n\t" \
   4716       instruction ", [%0]\n\t" \
   4717       : \
   4718       : "r" (out), "r" (mem) \
   4719       : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
   4720       ); \
   4721   printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
   4722           "0x%08x 0x%08x 0x%08x 0x%08x\n", \
   4723       instruction, out[0], out[1], out[2], out[3], out[4],\
   4724           out[5], out[6], out[7]); \
   4725 }
   4726 
   4727 #define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
   4728 { \
   4729   unsigned int out[2]; \
   4730 \
   4731   __asm__ volatile( \
   4732       "vmov.i8 " #QD ", #0x55" "\n\t" \
   4733       "vdup." #QMtype " " #QM ", %1\n\t" \
   4734       "vdup." #QNtype " " #QN ", %2\n\t" \
   4735       instruction "\n\t" \
   4736       "vstmia %0, {" #QD "}\n\t" \
   4737       : \
   4738       : "r" (out), "r" (QMval), "r" (QNval) \
   4739       : #QD, #QM, #QN, "memory" \
   4740       ); \
   4741   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
   4742       "  Qn (" #QNtype ")0x%08x\n", \
   4743       instruction, out[1], out[0], QMval, QNval); \
   4744 }
   4745 
   4746 #define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
   4747 { \
   4748   unsigned int out[2]; \
   4749 \
   4750   __asm__ volatile( \
   4751       "vdup.i32 " #QD ", %3\n\t" \
   4752       "vdup." #QMtype " " #QM ", %1\n\t" \
   4753       "vdup." #QNtype " " #QN ", %2\n\t" \
   4754       instruction "\n\t" \
   4755       "vstmia %0, {" #QD "}\n\t" \
   4756       : \
   4757       : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000) \
   4758       : #QD, #QM, #QN, "memory" \
   4759       ); \
   4760   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
   4761       "  Qn (" #QNtype ")0x%08x\n", \
   4762       instruction, out[1], out[0], QMval, QNval); \
   4763 }
   4764 
   4765 #define TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
   4766         QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \
   4767 { \
   4768   unsigned int out[2]; \
   4769 \
   4770   __asm__ volatile( \
   4771       "vmov.i8 " #QD ", #0x55" "\n\t" \
   4772       "vdup." #QMtype " " #QM ", %1\n\t" \
   4773       "vdup." #QN1type " " #QN1 ", %2\n\t" \
   4774       "vdup." #QN2type " " #QN2 ", %3\n\t" \
   4775       "vdup." #QN3type " " #QN3 ", %4\n\t" \
   4776       "vdup." #QN4type " " #QN4 ", %5\n\t" \
   4777       instruction "\n\t" \
   4778       "vstmia %0, {" #QD "}\n\t" \
   4779       : \
   4780       : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \
   4781         "r" (QN4val) \
   4782       : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \
   4783       ); \
   4784   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
   4785       "  Qn1 (" #QN1type ")0x%08x" \
   4786       "  Qn2 (" #QN2type ")0x%08x" \
   4787       "  Qn3 (" #QN3type ")0x%08x" \
   4788       "  Qn4 (" #QN4type ")0x%08x\n", \
   4789       instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \
   4790 }
   4791 #define TESTINSN_tbl_1(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val) \
   4792     TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
   4793             QN1, QN1type, QN1val, QN1, QN1type, QN1val, QN1, QN1type, QN1val)
   4794 #define TESTINSN_tbl_2(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
   4795         QN2, QN2type, QN2val) \
   4796     TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
   4797             QN2, QN2type, QN2val, QN1, QN1type, QN1val, QN2, QN2type, QN2val)
   4798 #define TESTINSN_tbl_3(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
   4799         QN2, QN2type, QN2val, QN3, QN3type, QN3val) \
   4800     TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
   4801             QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN2, QN2type, QN2val)
   4802 #define TESTINSN_tbl_4(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
   4803         QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \
   4804     TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \
   4805             QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val)
   4806 
   4807 #define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
   4808 { \
   4809   unsigned int out[2]; \
   4810   unsigned int fpscr; \
   4811 \
   4812   __asm__ volatile( \
   4813       "vmov.i8 " #QD ", #0x55" "\n\t" \
   4814       "mov r4, #0\n\t" \
   4815       MOVE_to_FPSCR_from_R4 \
   4816       "vdup." #QMtype " " #QM ", %2\n\t" \
   4817       "vdup." #QNtype " " #QN ", %3\n\t" \
   4818       instruction "\n\t" \
   4819       "vstmia %1, {" #QD "}\n\t" \
   4820       MOVE_to_R4_from_FPSCR \
   4821       "mov %0, r4" \
   4822       : "=r" (fpscr) \
   4823       : "r" (out), "r" (QMval), "r" (QNval) \
   4824       : #QD, #QM, #QN, "memory", "r4" \
   4825       ); \
   4826   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
   4827       "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
   4828       instruction, out[1], out[0], QMval, QNval, fpscr); \
   4829 }
   4830 
   4831 #define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \
   4832 { \
   4833   unsigned int out1[2]; \
   4834   unsigned int out2[2]; \
   4835 \
   4836   __asm__ volatile( \
   4837       "vdup." #QMtype " " #QM ", %2\n\t" \
   4838       "vdup." #QNtype " " #QN ", %3\n\t" \
   4839       instruction "\n\t" \
   4840       "vstmia %0, {" #QM "}\n\t" \
   4841       "vstmia %1, {" #QN "}\n\t" \
   4842       : \
   4843       : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval) \
   4844       : #QM, #QN, "memory" \
   4845       ); \
   4846   printf("%s :: Qm 0x%08x 0x%08x  Qn 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
   4847       "  Qn (" #QNtype ")0x%08x\n", \
   4848       instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \
   4849 }
   4850 
   4851 // Ditto TESTING_bin(), but in QD all zeros
   4852 #define TESTINSN_bin_0s(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
   4853 { \
   4854   unsigned int out[2]; \
   4855 \
   4856   __asm__ volatile( \
   4857       "vmov.i8 " #QD ", #0x00" "\n\t" \
   4858       "vdup." #QMtype " " #QM ", %1\n\t" \
   4859       "vdup." #QNtype " " #QN ", %2\n\t" \
   4860       instruction "\n\t" \
   4861       "vstmia %0, {" #QD "}\n\t" \
   4862       : \
   4863       : "r" (out), "r" (QMval), "r" (QNval) \
   4864       : #QD, #QM, #QN, "memory" \
   4865       ); \
   4866   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
   4867       "  Qn (" #QNtype ")0x%08x\n", \
   4868       instruction, out[1], out[0], QMval, QNval); \
   4869 }
   4870 
   4871 #if 0
   4872 #define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \
   4873 { \
   4874   unsigned int out[2]; \
   4875 \
   4876   __asm__ volatile( \
   4877       "vmov.i8 " #QD ", #0x55" "\n\t" \
   4878       "vdup." #QMtype " " #QM ", %1\n\t" \
   4879       instruction ", #" #imm "\n\t" \
   4880       "vstmia %0, {" #QD "}\n\t" \
   4881       : \
   4882       : "r" (out), "r" (QMval) \
   4883       : #QD, #QM, "memory" \
   4884       ); \
   4885   printf("%s, #" #imm " :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x", \
   4886       instruction, out[1], out[0], QMval); \
   4887 }
   4888 #endif
   4889 
   4890 int main(int argc, char **argv)
   4891 {
   4892     printf("----- VMOV (immediate) -----\n");
   4893     TESTINSN_imm("vmov.i32 d0", d0, 0x7);
   4894     TESTINSN_imm("vmov.i16 d1", d1, 0x7);
   4895     TESTINSN_imm("vmov.i8 d2", d2, 0x7);
   4896     TESTINSN_imm("vmov.i32 d5", d5, 0x700);
   4897     TESTINSN_imm("vmov.i16 d7", d7, 0x700);
   4898     TESTINSN_imm("vmov.i32 d10", d10, 0x70000);
   4899     TESTINSN_imm("vmov.i32 d12", d12, 0x7000000);
   4900     TESTINSN_imm("vmov.i32 d13", d13, 0x7FF);
   4901     TESTINSN_imm("vmov.i32 d14", d14, 0x7FFFF);
   4902     TESTINSN_imm("vmov.i64 d15", d15, 0xFF0000FF00FFFF00);
   4903 
   4904     printf("----- VMVN (immediate) -----\n");
   4905     TESTINSN_imm("vmvn.i32 d0", d0, 0x7);
   4906     TESTINSN_imm("vmvn.i16 d1", d1, 0x7);
   4907     TESTINSN_imm("vmvn.i8 d2", d2, 0x7);
   4908     TESTINSN_imm("vmvn.i32 d5", d5, 0x700);
   4909     TESTINSN_imm("vmvn.i16 d7", d7, 0x700);
   4910     TESTINSN_imm("vmvn.i32 d10", d10, 0x70000);
   4911     TESTINSN_imm("vmvn.i32 d13", d13, 0x7000000);
   4912     TESTINSN_imm("vmvn.i32 d11", d11, 0x7FF);
   4913     TESTINSN_imm("vmvn.i32 d14", d14, 0x7FFFF);
   4914     TESTINSN_imm("vmvn.i64 d15", d15, 0xFF0000FF00FFFF00);
   4915 
   4916     printf("----- VORR (immediate) -----\n");
   4917     TESTINSN_imm("vorr.i32 d0", d0, 0x7);
   4918     TESTINSN_imm("vorr.i16 d2", d2, 0x7);
   4919     TESTINSN_imm("vorr.i32 d8", d8, 0x700);
   4920     TESTINSN_imm("vorr.i16 d6", d6, 0x700);
   4921     TESTINSN_imm("vorr.i32 d14", d14, 0x70000);
   4922     TESTINSN_imm("vorr.i32 d15", d15, 0x7000000);
   4923 
   4924     printf("----- VBIC (immediate) -----\n");
   4925     TESTINSN_imm("vbic.i32 d0", d0, 0x7);
   4926     TESTINSN_imm("vbic.i16 d3", d3, 0x7);
   4927     TESTINSN_imm("vbic.i32 d5", d5, 0x700);
   4928     TESTINSN_imm("vbic.i16 d8", d8, 0x700);
   4929     TESTINSN_imm("vbic.i32 d10", d10, 0x70000);
   4930     TESTINSN_imm("vbic.i32 d15", d15, 0x7000000);
   4931 
   4932     printf("---- VMVN (register) ----\n");
   4933     TESTINSN_un("vmvn d0, d1", d0, d1, i32, 24);
   4934     TESTINSN_un("vmvn d10, d15", d10, d15, i32, 24);
   4935     TESTINSN_un("vmvn d0, d14", d0, d14, i32, 24);
   4936 
   4937     printf("---- VMOV (register) ----\n");
   4938     TESTINSN_un("vmov d0, d1", d0, d1, i32, 24);
   4939     TESTINSN_un("vmov d10, d15", d10, d15, i32, 24);
   4940     TESTINSN_un("vmov d0, d14", d0, d14, i32, 24);
   4941 
   4942     printf("---- VDUP (ARM core register) (tested indirectly) ----\n");
   4943     TESTINSN_un("vmov d0, d1", d0, d1, i8, 7);
   4944     TESTINSN_un("vmov d10, d11", d10, d11, i16, 7);
   4945     TESTINSN_un("vmov d0, d15", d0, d15, i32, 7);
   4946 
   4947     printf("---- VADD ----\n");
   4948     TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   4949     TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   4950     TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   4951     TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   4952     TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   4953     TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   4954     TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   4955     TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   4956     TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   4957     TESTINSN_bin("vadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   4958     TESTINSN_bin("vadd.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120);
   4959 
   4960     printf("---- VSUB ----\n");
   4961     TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   4962     TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   4963     TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   4964     TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   4965     TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   4966     TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   4967     TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   4968     TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   4969     TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   4970     TESTINSN_bin("vsub.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   4971     TESTINSN_bin("vsub.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120);
   4972 
   4973     printf("---- VAND ----\n");
   4974     TESTINSN_bin("vand d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
   4975     TESTINSN_bin("vand d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
   4976     TESTINSN_bin("vand d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
   4977     TESTINSN_bin("vand d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
   4978 
   4979     printf("---- VBIC ----\n");
   4980     TESTINSN_bin("vbic d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
   4981     TESTINSN_bin("vbic d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
   4982     TESTINSN_bin("vbic d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
   4983     TESTINSN_bin("vbic d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
   4984 
   4985     printf("---- VORR ----\n");
   4986     TESTINSN_bin("vorr d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
   4987     TESTINSN_bin("vorr d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
   4988     TESTINSN_bin("vorr d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
   4989     TESTINSN_bin("vorr d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
   4990 
   4991     printf("---- VORN ----\n");
   4992     TESTINSN_bin("vorn d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
   4993     TESTINSN_bin("vorn d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
   4994     TESTINSN_bin("vorn d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
   4995     TESTINSN_bin("vorn d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
   4996 
   4997     printf("---- VEOR ----\n");
   4998     TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
   4999     TESTINSN_bin("veor d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
   5000     TESTINSN_bin("veor d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
   5001     TESTINSN_bin("veor d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
   5002     TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
   5003     TESTINSN_bin("veor d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
   5004     TESTINSN_bin("veor d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
   5005     TESTINSN_bin("veor d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
   5006 
   5007     printf("---- VBSL ----\n");
   5008     TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
   5009     TESTINSN_bin("vbsl d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
   5010     TESTINSN_bin("vbsl d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
   5011     TESTINSN_bin("vbsl d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
   5012     TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
   5013     TESTINSN_bin("vbsl d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
   5014     TESTINSN_bin("vbsl d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
   5015     TESTINSN_bin("vbsl d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
   5016 
   5017     printf("---- VBIT ----\n");
   5018     TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
   5019     TESTINSN_bin("vbit d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
   5020     TESTINSN_bin("vbit d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
   5021     TESTINSN_bin("vbit d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
   5022     TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
   5023     TESTINSN_bin("vbit d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
   5024     TESTINSN_bin("vbit d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
   5025     TESTINSN_bin("vbit d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
   5026 
   5027     printf("---- VBIF ----\n");
   5028     TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77);
   5029     TESTINSN_bin("vbif d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57);
   5030     TESTINSN_bin("vbif d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed);
   5031     TESTINSN_bin("vbif d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff);
   5032     TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73);
   5033     TESTINSN_bin("vbif d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff);
   5034     TESTINSN_bin("vbif d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff);
   5035     TESTINSN_bin("vbif d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f);
   5036 
   5037     printf("---- VEXT ----\n");
   5038     TESTINSN_bin("vext.8 d0, d1, d2, #0", d0, d1, i8, 0x77, d2, i8, 0xff);
   5039     TESTINSN_bin("vext.8 d0, d1, d2, #1", d0, d1, i8, 0x77, d2, i8, 0xff);
   5040     TESTINSN_bin("vext.8 d0, d1, d2, #7", d0, d1, i8, 0x77, d2, i8, 0xff);
   5041     TESTINSN_bin("vext.8 d0, d1, d2, #6", d0, d1, i8, 0x77, d2, i8, 0xff);
   5042     TESTINSN_bin("vext.8 d10, d11, d12, #4", d10, d11, i8, 0x77, d12, i8, 0xff);
   5043     TESTINSN_bin("vext.8 d0, d5, d15, #5", d0, d5, i8, 0x77, d15, i8, 0xff);
   5044 
   5045     printf("---- VHADD ----\n");
   5046     TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5047     TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5048     TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5049     TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5050     TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121);
   5051     TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5052     TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5053     TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5054     TESTINSN_bin("vhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5055     TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5056     TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5057     TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5058     TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5059     TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121);
   5060     TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5061     TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5062     TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5063     TESTINSN_bin("vhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5064 
   5065     printf("---- VHSUB ----\n");
   5066     TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5067     TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5068     TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5069     TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5070     TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5071     TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5072     TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5073     TESTINSN_bin("vhsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5074     TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5075     TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5076     TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5077     TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5078     TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5079     TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5080     TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5081     TESTINSN_bin("vhsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5082 
   5083     printf("---- VQADD ----\n");
   5084     TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5085     TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5086     TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5087     TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5088     TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5089     TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5090     TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5091     TESTINSN_bin_q("vqadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5092     TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5093     TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5094     TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5095     TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5096     TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5097     TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5098     TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5099     TESTINSN_bin_q("vqadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5100 
   5101     printf("---- VQSUB ----\n");
   5102     TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5103     TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5104     TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5105     TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5106     TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5107     TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5108     TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5109     TESTINSN_bin_q("vqsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5110     TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5111     TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5112     TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5113     TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5114     TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5115     TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5116     TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5117     TESTINSN_bin_q("vqsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5118 
   5119     printf("---- VRHADD ----\n");
   5120     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5121     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   5122     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5123     TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5124     TESTINSN_bin("vrhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5125     TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   5126     TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5127     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5128     TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   5129     TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5130     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5131     TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   5132     TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5133     TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5134     TESTINSN_bin("vrhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5135     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5136     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5137     TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5138     TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5139     TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5140     TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5141     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5142     TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5143     TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5144     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5145     TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5146     TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5147     TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5148     TESTINSN_bin("vrhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5149 
   5150     printf("---- VCGT ----\n");
   5151     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5152     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   5153     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5154     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5155     TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5156     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5157     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5158     TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5159     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
   5160     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
   5161     TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
   5162     TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2);
   5163     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5164     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5165     TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   5166     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5167     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5168     TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2);
   5169     TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5170     TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5171     TESTINSN_bin("vcgt.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5172     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5173     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5174     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5175     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5176     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5177     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5178     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5179     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5180     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5181     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5182     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5183     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5184     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5185     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5186     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5187     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5188     TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5189     TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5190     TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5191     TESTINSN_bin("vcgt.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5192 
   5193     printf("---- VCGE ----\n");
   5194     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5195     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   5196     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5197     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5198     TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5199     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5200     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5201     TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5202     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
   5203     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
   5204     TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140);
   5205     TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2);
   5206     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5207     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5208     TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   5209     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5210     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5211     TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2);
   5212     TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5213     TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5214     TESTINSN_bin("vcge.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5215     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5216     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5217     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5218     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5219     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5220     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5221     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5222     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5223     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5224     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5225     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5226     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5227     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2);
   5228     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5229     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5230     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5231     TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5232     TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5233     TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2);
   5234     TESTINSN_bin("vcge.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5235 
   5236     printf("---- VSHL (register) ----\n");
   5237     TESTINSN_bin("vshl.s8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1);
   5238     TESTINSN_bin("vshl.s8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8);
   5239     TESTINSN_bin("vshl.s8 d10, d31, d7", d10, d31, i32, 24, d7, i32, 4);
   5240     TESTINSN_bin("vshl.s16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2);
   5241     TESTINSN_bin("vshl.s16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1);
   5242     TESTINSN_bin("vshl.s16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11);
   5243     TESTINSN_bin("vshl.s32 d9, d12, d19", d9, d12, i32, (1 << 31) + 2, d19, i32, 2);
   5244     TESTINSN_bin("vshl.s32 d11, d22, d0", d11, d22, i32, -1, d0, i32, 12);
   5245     TESTINSN_bin("vshl.s32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21);
   5246     TESTINSN_bin("vshl.s64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20);
   5247     TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4);
   5248     TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30);
   5249     TESTINSN_bin("vshl.s64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab);
   5250     TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5);
   5251     TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff);
   5252     TESTINSN_bin("vshl.u8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1);
   5253     TESTINSN_bin("vshl.u8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8);
   5254     TESTINSN_bin("vshl.u8 d10, d11, d7", d10, d11, i32, 24, d7, i32, 4);
   5255     TESTINSN_bin("vshl.u16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2);
   5256     TESTINSN_bin("vshl.u16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1);
   5257     TESTINSN_bin("vshl.u16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11);
   5258     TESTINSN_bin("vshl.u32 d9, d12, d15", d9, d12, i32, (1 << 31) + 2, d15, i32, 2);
   5259     TESTINSN_bin("vshl.u32 d11, d2, d0", d11, d2, i32, -1, d0, i32, 12);
   5260     TESTINSN_bin("vshl.u32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21);
   5261     TESTINSN_bin("vshl.u64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20);
   5262     TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4);
   5263     TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30);
   5264     TESTINSN_bin("vshl.u64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab);
   5265     TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5);
   5266     TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff);
   5267 
   5268     printf("---- VQSHL (register) ----\n");
   5269     TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   5270     TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   5271     TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   5272     TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   5273     TESTINSN_bin_q("vqshl.s64 d13, d14, d31", d13, d14, i32, -17, d31, i32, -26);
   5274     TESTINSN_bin_q("vqshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   5275     TESTINSN_bin_q("vqshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   5276     TESTINSN_bin_q("vqshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   5277     TESTINSN_bin_q("vqshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   5278     TESTINSN_bin_q("vqshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   5279     TESTINSN_bin_q("vqshl.s32 d9, d30, d11", d9, d30, i32, (1 << 31) + 8, d11, i32, -1);
   5280     TESTINSN_bin_q("vqshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   5281     TESTINSN_bin_q("vqshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   5282     TESTINSN_bin_q("vqshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   5283     TESTINSN_bin_q("vqshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
   5284     TESTINSN_bin_q("vqshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   5285     TESTINSN_bin_q("vqshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   5286     TESTINSN_bin_q("vqshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   5287     TESTINSN_bin_q("vqshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   5288     TESTINSN_bin_q("vqshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   5289     TESTINSN_bin_q("vqshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   5290     TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   5291     TESTINSN_bin_q("vqshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   5292     TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5293     TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   5294     TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   5295     TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   5296     TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   5297     TESTINSN_bin_q("vqshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   5298     TESTINSN_bin_q("vqshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   5299     TESTINSN_bin_q("vqshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   5300     TESTINSN_bin_q("vqshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   5301     TESTINSN_bin_q("vqshl.u32 d12, d31, d13", d12, d31, i32, -120, d13, i32, -9);
   5302     TESTINSN_bin_q("vqshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   5303     TESTINSN_bin_q("vqshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   5304     TESTINSN_bin_q("vqshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   5305     TESTINSN_bin_q("vqshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   5306     TESTINSN_bin_q("vqshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   5307     TESTINSN_bin_q("vqshl.u16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
   5308     TESTINSN_bin_q("vqshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   5309     TESTINSN_bin_q("vqshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   5310     TESTINSN_bin_q("vqshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   5311     TESTINSN_bin_q("vqshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   5312     TESTINSN_bin_q("vqshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   5313     TESTINSN_bin_q("vqshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   5314     TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   5315     TESTINSN_bin_q("vqshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   5316     TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5317 
   5318     printf("---- VQSHL / VQSHLU (immediate) ----\n");
   5319     TESTINSN_un_q("vqshl.s64 d0, d1, #1", d0, d1, i32, 1);
   5320     TESTINSN_un_q("vqshl.s64 d31, d30, #1", d31, d30, i32, -127);
   5321     TESTINSN_un_q("vqshl.s64 d5, d4, #0", d5, d4, i32, -127);
   5322     TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, 16);
   5323     TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, 16);
   5324     TESTINSN_un_q("vqshl.s64 d5, d4, #59", d5, d4, i32, 16);
   5325     TESTINSN_un_q("vqshl.s64 d5, d4, #58", d5, d4, i32, 16);
   5326     TESTINSN_un_q("vqshl.s64 d5, d4, #17", d5, d4, i32, 16);
   5327     TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, -1);
   5328     TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, -1);
   5329     TESTINSN_un_q("vqshl.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5330     TESTINSN_un_q("vqshl.s32 d10, d11, #1", d10, d11, i32, 1);
   5331     TESTINSN_un_q("vqshl.s32 d31, d30, #1", d31, d30, i32, -127);
   5332     TESTINSN_un_q("vqshl.s32 d5, d4, #0", d5, d4, i32, -127);
   5333     TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, 16);
   5334     TESTINSN_un_q("vqshl.s32 d5, d4, #28", d5, d4, i32, 16);
   5335     TESTINSN_un_q("vqshl.s32 d5, d4, #27", d5, d4, i32, 16);
   5336     TESTINSN_un_q("vqshl.s32 d5, d4, #26", d5, d4, i32, 16);
   5337     TESTINSN_un_q("vqshl.s32 d5, d4, #17", d5, d4, i32, 16);
   5338     TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, -1);
   5339     TESTINSN_un_q("vqshl.s32 d5, d4, #29", d5, d4, i32, -1);
   5340     TESTINSN_un_q("vqshl.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5341     TESTINSN_un_q("vqshl.s16 d9, d8, #1", d9, d8, i32, 1);
   5342     TESTINSN_un_q("vqshl.s16 d31, d30, #1", d31, d30, i32, -127);
   5343     TESTINSN_un_q("vqshl.s16 d5, d4, #0", d5, d4, i32, -127);
   5344     TESTINSN_un_q("vqshl.s16 d9, d8, #15", d9, d8, i32, 16);
   5345     TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, 16);
   5346     TESTINSN_un_q("vqshl.s16 d5, d4, #11", d5, d4, i32, 16);
   5347     TESTINSN_un_q("vqshl.s16 d5, d4, #10", d5, d4, i32, 16);
   5348     TESTINSN_un_q("vqshl.s16 d5, d4, #4", d5, d4, i32, 16);
   5349     TESTINSN_un_q("vqshl.s16 d5, d4, #15", d5, d4, i32, -1);
   5350     TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, -1);
   5351     TESTINSN_un_q("vqshl.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5352     TESTINSN_un_q("vqshl.s8 d0, d1, #1", d0, d1, i32, 1);
   5353     TESTINSN_un_q("vqshl.s8 d31, d30, #1", d31, d30, i32, -127);
   5354     TESTINSN_un_q("vqshl.s8 d5, d4, #0", d5, d4, i32, -127);
   5355     TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, 16);
   5356     TESTINSN_un_q("vqshl.s8 d25, d4, #4", d25, d4, i32, 16);
   5357     TESTINSN_un_q("vqshl.s8 d5, d4, #3", d5, d4, i32, 16);
   5358     TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, 16);
   5359     TESTINSN_un_q("vqshl.s8 d5, d4, #1", d5, d4, i32, 16);
   5360     TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, -1);
   5361     TESTINSN_un_q("vqshl.s8 d5, d4, #5", d5, d4, i32, -1);
   5362     TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
   5363     TESTINSN_un_q("vqshl.u64 d0, d1, #1", d0, d1, i32, 1);
   5364     TESTINSN_un_q("vqshl.u64 d31, d30, #1", d31, d30, i32, -127);
   5365     TESTINSN_un_q("vqshl.u64 d5, d4, #0", d5, d4, i32, -127);
   5366     TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, 16);
   5367     TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, 16);
   5368     TESTINSN_un_q("vqshl.u64 d5, d4, #59", d5, d4, i32, 16);
   5369     TESTINSN_un_q("vqshl.u64 d5, d4, #58", d5, d4, i32, 16);
   5370     TESTINSN_un_q("vqshl.u64 d5, d4, #17", d5, d4, i32, 16);
   5371     TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, -1);
   5372     TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, -1);
   5373     TESTINSN_un_q("vqshl.u64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5374     TESTINSN_un_q("vqshl.u32 d10, d11, #1", d10, d11, i32, 1);
   5375     TESTINSN_un_q("vqshl.u32 d31, d30, #1", d31, d30, i32, -127);
   5376     TESTINSN_un_q("vqshl.u32 d5, d4, #0", d5, d4, i32, -127);
   5377     TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, 16);
   5378     TESTINSN_un_q("vqshl.u32 d5, d4, #28", d5, d4, i32, 16);
   5379     TESTINSN_un_q("vqshl.u32 d5, d4, #27", d5, d4, i32, 16);
   5380     TESTINSN_un_q("vqshl.u32 d5, d4, #26", d5, d4, i32, 16);
   5381     TESTINSN_un_q("vqshl.u32 d5, d4, #17", d5, d4, i32, 16);
   5382     TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, -1);
   5383     TESTINSN_un_q("vqshl.u32 d5, d4, #29", d5, d4, i32, -1);
   5384     TESTINSN_un_q("vqshl.u32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5385     TESTINSN_un_q("vqshl.u16 d9, d8, #1", d9, d8, i32, 1);
   5386     TESTINSN_un_q("vqshl.u16 d31, d30, #1", d31, d30, i32, -127);
   5387     TESTINSN_un_q("vqshl.u16 d5, d4, #0", d5, d4, i32, -127);
   5388     TESTINSN_un_q("vqshl.u16 d9, d8, #15", d9, d8, i32, 16);
   5389     TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, 16);
   5390     TESTINSN_un_q("vqshl.u16 d5, d4, #11", d5, d4, i32, 16);
   5391     TESTINSN_un_q("vqshl.u16 d5, d4, #10", d5, d4, i32, 16);
   5392     TESTINSN_un_q("vqshl.u16 d5, d4, #4", d5, d4, i32, 16);
   5393     TESTINSN_un_q("vqshl.u16 d5, d4, #15", d5, d4, i32, -1);
   5394     TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, -1);
   5395     TESTINSN_un_q("vqshl.u16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5396     TESTINSN_un_q("vqshl.u8 d0, d1, #1", d0, d1, i32, 1);
   5397     TESTINSN_un_q("vqshl.u8 d31, d30, #1", d31, d30, i32, -127);
   5398     TESTINSN_un_q("vqshl.u8 d5, d4, #0", d5, d4, i32, -127);
   5399     TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, 16);
   5400     TESTINSN_un_q("vqshl.u8 d5, d4, #4", d5, d4, i32, 16);
   5401     TESTINSN_un_q("vqshl.u8 d5, d4, #3", d5, d4, i32, 16);
   5402     TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, 16);
   5403     TESTINSN_un_q("vqshl.u8 d5, d4, #1", d5, d4, i32, 16);
   5404     TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, -1);
   5405     TESTINSN_un_q("vqshl.u8 d5, d4, #5", d5, d4, i32, -1);
   5406     TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
   5407     TESTINSN_un_q("vqshlu.s64 d0, d1, #1", d0, d1, i32, 1);
   5408     TESTINSN_un_q("vqshlu.s64 d31, d30, #1", d31, d30, i32, -127);
   5409     TESTINSN_un_q("vqshlu.s64 d5, d4, #0", d5, d4, i32, -127);
   5410     TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, 16);
   5411     TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, 16);
   5412     TESTINSN_un_q("vqshlu.s64 d5, d4, #59", d5, d4, i32, 16);
   5413     TESTINSN_un_q("vqshlu.s64 d5, d4, #58", d5, d4, i32, 16);
   5414     TESTINSN_un_q("vqshlu.s64 d5, d4, #17", d5, d4, i32, 16);
   5415     TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, -1);
   5416     TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, -1);
   5417     TESTINSN_un_q("vqshlu.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5418     TESTINSN_un_q("vqshlu.s32 d10, d11, #1", d10, d11, i32, 1);
   5419     TESTINSN_un_q("vqshlu.s32 d31, d30, #1", d31, d30, i32, -127);
   5420     TESTINSN_un_q("vqshlu.s32 d5, d4, #0", d5, d4, i32, -127);
   5421     TESTINSN_un_q("vqshlu.s32 d5, d4, #31", d5, d4, i32, 16);
   5422     TESTINSN_un_q("vqshlu.s32 d25, d24, #28", d25, d24, i32, 16);
   5423     TESTINSN_un_q("vqshlu.s32 d5, d4, #27", d5, d4, i32, 16);
   5424     TESTINSN_un_q("vqshlu.s32 d5, d4, #26", d5, d4, i32, 16);
   5425     TESTINSN_un_q("vqshlu.s32 d5, d4, #17", d5, d4, i32, 16);
   5426     TESTINSN_un_q("vqshlu.s32 d5, d24, #31", d5, d24, i32, -1);
   5427     TESTINSN_un_q("vqshlu.s32 d5, d4, #29", d5, d4, i32, -1);
   5428     TESTINSN_un_q("vqshlu.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5429     TESTINSN_un_q("vqshlu.s16 d9, d8, #1", d9, d8, i32, 1);
   5430     TESTINSN_un_q("vqshlu.s16 d31, d30, #1", d31, d30, i32, -127);
   5431     TESTINSN_un_q("vqshlu.s16 d5, d4, #0", d5, d4, i32, -127);
   5432     TESTINSN_un_q("vqshlu.s16 d9, d8, #15", d9, d8, i32, 16);
   5433     TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, 16);
   5434     TESTINSN_un_q("vqshlu.s16 d5, d4, #11", d5, d4, i32, 16);
   5435     TESTINSN_un_q("vqshlu.s16 d5, d4, #10", d5, d4, i32, 16);
   5436     TESTINSN_un_q("vqshlu.s16 d5, d4, #4", d5, d4, i32, 16);
   5437     TESTINSN_un_q("vqshlu.s16 d15, d14, #15", d15, d14, i32, -1);
   5438     TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, -1);
   5439     TESTINSN_un_q("vqshlu.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2);
   5440     TESTINSN_un_q("vqshlu.s8 d0, d1, #1", d0, d1, i32, 1);
   5441     TESTINSN_un_q("vqshlu.s8 d31, d30, #1", d31, d30, i32, -127);
   5442     TESTINSN_un_q("vqshlu.s8 d5, d4, #0", d5, d4, i32, -127);
   5443     TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, 16);
   5444     TESTINSN_un_q("vqshlu.s8 d5, d4, #4", d5, d4, i32, 16);
   5445     TESTINSN_un_q("vqshlu.s8 d5, d4, #3", d5, d4, i32, 16);
   5446     TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, 16);
   5447     TESTINSN_un_q("vqshlu.s8 d5, d4, #1", d5, d4, i32, 16);
   5448     TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, -1);
   5449     TESTINSN_un_q("vqshlu.s8 d5, d4, #5", d5, d4, i32, -1);
   5450     TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2);
   5451 
   5452     printf("---- VQRSHL (register) ----\n");
   5453     TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   5454     TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   5455     TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   5456     TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   5457     TESTINSN_bin_q("vqrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   5458     TESTINSN_bin_q("vqrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   5459     TESTINSN_bin_q("vqrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   5460     TESTINSN_bin_q("vqrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   5461     TESTINSN_bin_q("vqrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   5462     TESTINSN_bin_q("vqrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   5463     TESTINSN_bin_q("vqrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   5464     TESTINSN_bin_q("vqrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   5465     TESTINSN_bin_q("vqrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   5466     TESTINSN_bin_q("vqrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   5467     TESTINSN_bin_q("vqrshl.s16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
   5468     TESTINSN_bin_q("vqrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   5469     TESTINSN_bin_q("vqrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   5470     TESTINSN_bin_q("vqrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   5471     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5472     TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5473     TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5474     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   5475     TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   5476     TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   5477     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5478     TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5479     TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5480     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   5481     TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   5482     TESTINSN_bin_q("vqrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, 0);
   5483     TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   5484     TESTINSN_bin_q("vqrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   5485     TESTINSN_bin_q("vqrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   5486     TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   5487     TESTINSN_bin_q("vqrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   5488     TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5489     TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   5490     TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   5491     TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   5492     TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   5493     TESTINSN_bin_q("vqrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   5494     TESTINSN_bin_q("vqrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   5495     TESTINSN_bin_q("vqrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   5496     TESTINSN_bin_q("vqrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   5497     TESTINSN_bin_q("vqrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   5498     TESTINSN_bin_q("vqrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   5499     TESTINSN_bin_q("vqrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   5500     TESTINSN_bin_q("vqrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   5501     TESTINSN_bin_q("vqrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   5502     TESTINSN_bin_q("vqrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   5503     TESTINSN_bin_q("vqrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
   5504     TESTINSN_bin_q("vqrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   5505     TESTINSN_bin_q("vqrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   5506     TESTINSN_bin_q("vqrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   5507     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   5508     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   5509     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5510     TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5511     TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5512     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5513     TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5514     TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5515     TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   5516     TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   5517     TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   5518     TESTINSN_bin_q("vqrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   5519     TESTINSN_bin_q("vqrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   5520     TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   5521     TESTINSN_bin_q("vqrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   5522     TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5523 
   5524     printf("---- VRSHL (register) ----\n");
   5525     TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   5526     TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   5527     TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   5528     TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   5529     TESTINSN_bin("vrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   5530     TESTINSN_bin("vrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   5531     TESTINSN_bin("vrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   5532     TESTINSN_bin("vrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   5533     TESTINSN_bin("vrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   5534     TESTINSN_bin("vrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   5535     TESTINSN_bin("vrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   5536     TESTINSN_bin("vrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   5537     TESTINSN_bin("vrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   5538     TESTINSN_bin("vrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   5539     TESTINSN_bin("vrshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1);
   5540     TESTINSN_bin("vrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   5541     TESTINSN_bin("vrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   5542     TESTINSN_bin("vrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   5543     TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5544     TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5545     TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5546     TESTINSN_bin("vrshl.s8 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
   5547     TESTINSN_bin("vrshl.s16 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
   5548     TESTINSN_bin("vrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1);
   5549     TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5550     TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5551     TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1);
   5552     TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   5553     TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   5554     TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0);
   5555     TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   5556     TESTINSN_bin("vrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   5557     TESTINSN_bin("vrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   5558     TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   5559     TESTINSN_bin("vrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   5560     TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5561     TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1);
   5562     TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1);
   5563     TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3);
   5564     TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14);
   5565     TESTINSN_bin("vrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26);
   5566     TESTINSN_bin("vrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60);
   5567     TESTINSN_bin("vrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30);
   5568     TESTINSN_bin("vrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4);
   5569     TESTINSN_bin("vrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9);
   5570     TESTINSN_bin("vrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7);
   5571     TESTINSN_bin("vrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1);
   5572     TESTINSN_bin("vrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3);
   5573     TESTINSN_bin("vrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31);
   5574     TESTINSN_bin("vrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3);
   5575     TESTINSN_bin("vrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1);
   5576     TESTINSN_bin("vrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31);
   5577     TESTINSN_bin("vrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13);
   5578     TESTINSN_bin("vrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30);
   5579     TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40);
   5580     TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   5581     TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5582     TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5583     TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1);
   5584     TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   5585     TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   5586     TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1);
   5587     TESTINSN_bin("vrshl.u8 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
   5588     TESTINSN_bin("vrshl.u16 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
   5589     TESTINSN_bin("vrshl.u32 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1);
   5590     TESTINSN_bin("vrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30);
   5591     TESTINSN_bin("vrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3);
   5592     TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16);
   5593     TESTINSN_bin("vrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2);
   5594     TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5595 
   5596     printf("---- VMAX (integer) ----\n");
   5597     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   5598     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
   5599     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5600     TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5601     TESTINSN_bin("vmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5602     TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   5603     TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5604     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5605     TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   5606     TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5607     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5608     TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   5609     TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5610     TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5611     TESTINSN_bin("vmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5612     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5613     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
   5614     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5615     TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5616     TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5617     TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5618     TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5619     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5620     TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5621     TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5622     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5623     TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5624     TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5625     TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5626     TESTINSN_bin("vmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5627 
   5628     printf("---- VMIN (integer) ----\n");
   5629     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   5630     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
   5631     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5632     TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5633     TESTINSN_bin("vmin.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5634     TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   5635     TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5636     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5637     TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   5638     TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5639     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5640     TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   5641     TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5642     TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5643     TESTINSN_bin("vmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5644     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5645     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
   5646     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5647     TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   5648     TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   5649     TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5650     TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5651     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5652     TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5653     TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5654     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5655     TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5656     TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5657     TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5658     TESTINSN_bin("vmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5659 
   5660     printf("---- VABD ----\n");
   5661     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5662     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   5663     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120);
   5664     TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5665     TESTINSN_bin("vabd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5666     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   5667     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
   5668     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
   5669     TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5670     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5671     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   5672     TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5673     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5674     TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   5675     TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5676     TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5677     TESTINSN_bin("vabd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5678     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5679     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5680     TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, -140, d2, i32, 120);
   5681     TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5682     TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
   5683     TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
   5684     TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5685     TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5686     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5687     TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5688     TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5689     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5690     TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5691     TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5692     TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5693     TESTINSN_bin("vabd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5694 
   5695     printf("---- VABA ----\n");
   5696     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5697     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   5698     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5699     TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5700     TESTINSN_bin("vaba.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5701     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   5702     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
   5703     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
   5704     TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5705     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5706     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   5707     TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5708     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5709     TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   5710     TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5711     TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5712     TESTINSN_bin("vaba.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5713     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   5714     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5715     TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5716     TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5717     TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2);
   5718     TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200);
   5719     TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5720     TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5721     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5722     TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5723     TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5724     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   5725     TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5726     TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5727     TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   5728     TESTINSN_bin("vaba.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5729 
   5730     printf("---- VTST ----\n");
   5731     TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5732     TESTINSN_bin("vtst.32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120);
   5733     TESTINSN_bin("vtst.16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120);
   5734     TESTINSN_bin("vtst.8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120);
   5735     TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5736     TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
   5737     TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5738     TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2);
   5739     TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
   5740     TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2);
   5741     TESTINSN_bin("vtst.32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5742 
   5743     printf("---- VCEQ ----\n");
   5744     TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5745     TESTINSN_bin("vceq.i32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120);
   5746     TESTINSN_bin("vceq.i16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120);
   5747     TESTINSN_bin("vceq.i8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120);
   5748     TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5749     TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1);
   5750     TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   5751     TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2);
   5752     TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 14) + 1);
   5753     TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2);
   5754     TESTINSN_bin("vceq.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   5755 
   5756     printf("---- VMLA ----\n");
   5757     TESTINSN_bin("vmla.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120);
   5758     TESTINSN_bin("vmla.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, 120);
   5759     TESTINSN_bin("vmla.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   5760     TESTINSN_bin("vmla.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120);
   5761     TESTINSN_bin("vmla.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   5762     TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   5763     TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   5764     TESTINSN_bin("vmla.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   5765     TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   5766     TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   5767     TESTINSN_bin("vmla.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, -120);
   5768 
   5769     printf("---- VMLS ----\n");
   5770     TESTINSN_bin("vmls.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120);
   5771     TESTINSN_bin("vmls.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
   5772     TESTINSN_bin("vmls.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   5773     TESTINSN_bin("vmls.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5774     TESTINSN_bin("vmls.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   5775     TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   5776     TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   5777     TESTINSN_bin("vmls.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   5778     TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   5779     TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   5780     TESTINSN_bin("vmls.i32 d10, d11, d15", d10, d11, i32, -24, d15, i32, 120);
   5781 
   5782     printf("---- VMUL ----\n");
   5783     TESTINSN_bin("vmul.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   5784     TESTINSN_bin("vmul.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
   5785     TESTINSN_bin("vmul.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   5786     TESTINSN_bin("vmul.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   5787     TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   5788     TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   5789     TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   5790     TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 25) + 0xfeb2, d12, i32, (1 << 13) + 0xdf);
   5791     TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   5792     TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
   5793     TESTINSN_bin("vmul.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2);
   5794     TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   5795     TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   5796     TESTINSN_bin("vmul.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
   5797     TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3);
   5798     TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f);
   5799 
   5800     printf("---- VMUL (by scalar) ----\n");
   5801     TESTINSN_bin("vmul.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120);
   5802     TESTINSN_bin("vmul.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
   5803     TESTINSN_bin("vmul.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
   5804     TESTINSN_bin("vmul.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   5805     TESTINSN_bin("vmul.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   5806     TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   5807     TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   5808     TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   5809     TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   5810 
   5811     printf("---- VMLA (by scalar) ----\n");
   5812     TESTINSN_bin("vmla.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120);
   5813     TESTINSN_bin("vmla.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
   5814     TESTINSN_bin("vmla.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
   5815     TESTINSN_bin("vmla.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   5816     TESTINSN_bin("vmla.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   5817     TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   5818     TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   5819     TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   5820     TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   5821 
   5822     printf("---- VMLS (by scalar) ----\n");
   5823     TESTINSN_bin("vmls.i32 d0, d1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
   5824     TESTINSN_bin("vmls.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120);
   5825     TESTINSN_bin("vmls.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120);
   5826     TESTINSN_bin("vmls.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   5827     TESTINSN_bin("vmls.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   5828     TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   5829     TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   5830     TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   5831     TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   5832 
   5833     printf("---- VRSHR ----\n");
   5834     TESTINSN_un("vrshr.s8 d0, d1, #0", d0, d1, i32, -1);
   5835     TESTINSN_un("vrshr.s8 d0, d1, #1", d0, d1, i32, -1);
   5836     TESTINSN_un("vrshr.s16 d3, d4, #2", d3, d4, i32, -0x7c);
   5837     TESTINSN_un("vrshr.s32 d2, d5, #31", d2, d5, i32, -1);
   5838     TESTINSN_un("vrshr.s8 d6, d7, #7", d6, d7, i32, 0xffff);
   5839     TESTINSN_un("vrshr.s16 d8, d9, #12", d8, d9, i32, -10);
   5840     TESTINSN_un("vrshr.s32 d10, d11, #5", d10, d11, i32, 10234);
   5841     TESTINSN_un("vrshr.u8 d12, d13, #1", d12, d13, i32, -1);
   5842     TESTINSN_un("vrshr.u16 d14, d15, #11", d14, d15, i32, -1);
   5843     TESTINSN_un("vrshr.u32 d10, d11, #9", d10, d11, i32, 1000);
   5844     TESTINSN_un("vrshr.u8 d7, d13, #7", d7, d13, i32, -1);
   5845     TESTINSN_un("vrshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
   5846     TESTINSN_un("vrshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
   5847     TESTINSN_un("vrshr.u64 d0, d1, #42", d0, d1, i32, -1);
   5848     TESTINSN_un("vrshr.s64 d6, d7, #12", d6, d7, i32, 0xfac);
   5849     TESTINSN_un("vrshr.u64 d8, d4, #9", d8, d4, i32, 13560);
   5850     TESTINSN_un("vrshr.s64 d9, d12, #11", d9, d12, i32, 98710);
   5851 
   5852     printf("---- VRSRA ----\n");
   5853     TESTINSN_un("vrsra.s8 d0, d1, #1", d0, d1, i32, -1);
   5854     TESTINSN_un("vrsra.s16 d3, d4, #2", d3, d4, i32, -0x7c);
   5855     TESTINSN_un("vrsra.s32 d2, d5, #31", d2, d5, i32, -1);
   5856     TESTINSN_un("vrsra.s8 d6, d7, #7", d6, d7, i32, 0xffff);
   5857     TESTINSN_un("vrsra.s16 d8, d9, #12", d8, d9, i32, -10);
   5858     TESTINSN_un("vrsra.s32 d10, d11, #5", d10, d11, i32, 10234);
   5859     TESTINSN_un("vrsra.u8 d12, d13, #1", d12, d13, i32, -1);
   5860     TESTINSN_un("vrsra.u16 d14, d15, #11", d14, d15, i32, -1);
   5861     TESTINSN_un("vrsra.u32 d10, d11, #9", d10, d11, i32, 1000);
   5862     TESTINSN_un("vrsra.u8 d7, d13, #7", d7, d13, i32, -1);
   5863     TESTINSN_un("vrsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
   5864     TESTINSN_un("vrsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
   5865     TESTINSN_un("vrsra.u64 d0, d1, #42", d0, d1, i32, -1);
   5866     TESTINSN_un("vrsra.s64 d6, d7, #12", d6, d7, i32, 0xfac);
   5867     TESTINSN_un("vrsra.u64 d8, d4, #9", d8, d4, i32, 13560);
   5868     TESTINSN_un("vrsra.s64 d9, d12, #11", d9, d12, i32, 98710);
   5869 
   5870     printf("---- VSHR ----\n");
   5871     TESTINSN_un("vshr.s8 d0, d1, #0", d0, d1, i32, -1);
   5872     TESTINSN_un("vshr.s8 d0, d1, #1", d0, d1, i32, -1);
   5873     TESTINSN_un("vshr.s16 d3, d4, #2", d3, d4, i32, -0x7c);
   5874     TESTINSN_un("vshr.s32 d2, d5, #31", d2, d5, i32, -1);
   5875     TESTINSN_un("vshr.s8 d6, d7, #7", d6, d7, i32, 0xffff);
   5876     TESTINSN_un("vshr.s16 d8, d9, #12", d8, d9, i32, -10);
   5877     TESTINSN_un("vshr.s32 d10, d11, #5", d10, d11, i32, 10234);
   5878     TESTINSN_un("vshr.u8 d12, d13, #1", d12, d13, i32, -1);
   5879     TESTINSN_un("vshr.u16 d14, d15, #11", d14, d15, i32, -1);
   5880     TESTINSN_un("vshr.u32 d10, d11, #9", d10, d11, i32, 1000);
   5881     TESTINSN_un("vshr.u8 d7, d13, #7", d7, d13, i32, -1);
   5882     TESTINSN_un("vshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
   5883     TESTINSN_un("vshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
   5884     TESTINSN_un("vshr.u64 d0, d1, #42", d0, d1, i32, -1);
   5885     TESTINSN_un("vshr.s64 d6, d7, #12", d6, d7, i32, 0xfac);
   5886     TESTINSN_un("vshr.u64 d8, d4, #9", d8, d4, i32, 13560);
   5887     TESTINSN_un("vshr.s64 d9, d12, #11", d9, d12, i32, 98710);
   5888 
   5889     printf("---- VSRA ----\n");
   5890     TESTINSN_un("vsra.s8 d0, d1, #1", d0, d1, i32, -1);
   5891     TESTINSN_un("vsra.s16 d3, d4, #2", d3, d4, i32, -0x7c);
   5892     TESTINSN_un("vsra.s32 d2, d5, #31", d2, d5, i32, -1);
   5893     TESTINSN_un("vsra.s8 d6, d7, #7", d6, d7, i32, 0xffff);
   5894     TESTINSN_un("vsra.s16 d8, d9, #12", d8, d9, i32, -10);
   5895     TESTINSN_un("vsra.s32 d10, d11, #5", d10, d11, i32, 10234);
   5896     TESTINSN_un("vsra.u8 d12, d13, #1", d12, d13, i32, -1);
   5897     TESTINSN_un("vsra.u16 d14, d15, #11", d14, d15, i32, -1);
   5898     TESTINSN_un("vsra.u32 d10, d11, #9", d10, d11, i32, 1000);
   5899     TESTINSN_un("vsra.u8 d7, d13, #7", d7, d13, i32, -1);
   5900     TESTINSN_un("vsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf);
   5901     TESTINSN_un("vsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0);
   5902     TESTINSN_un("vsra.u64 d0, d1, #42", d0, d1, i32, -1);
   5903     TESTINSN_un("vsra.s64 d6, d7, #12", d6, d7, i32, 0xfac);
   5904     TESTINSN_un("vsra.u64 d8, d4, #9", d8, d4, i32, 13560);
   5905     TESTINSN_un("vsra.s64 d9, d12, #11", d9, d12, i32, 98710);
   5906 
   5907     printf("---- VSRI ----\n");
   5908     TESTINSN_un("vsri.16 d0, d1, #1", d0, d1, i32, -1);
   5909     TESTINSN_un("vsri.16 d3, d4, #2", d3, d4, i32, -0x7c);
   5910     TESTINSN_un("vsri.32 d2, d5, #31", d2, d5, i32, -1);
   5911     TESTINSN_un("vsri.8 d6, d7, #7", d6, d7, i32, 0xffff);
   5912     TESTINSN_un("vsri.16 d8, d9, #12", d8, d9, i32, -10);
   5913     TESTINSN_un("vsri.32 d10, d11, #5", d10, d11, i32, 10234);
   5914     TESTINSN_un("vsri.8 d12, d13, #1", d12, d13, i32, -1);
   5915     TESTINSN_un("vsri.16 d14, d15, #11", d14, d15, i32, -1);
   5916     TESTINSN_un("vsri.32 d10, d11, #9", d10, d11, i32, 1000);
   5917     TESTINSN_un("vsri.8 d7, d13, #7", d7, d13, i32, -1);
   5918     TESTINSN_un("vsri.16 d8, d1, #5", d8, d1, i32, 0xabcf);
   5919     TESTINSN_un("vsri.32 d12, d3, #15", d12, d3, i32, -0x1b0);
   5920     TESTINSN_un("vsri.64 d0, d1, #42", d0, d1, i32, -1);
   5921     TESTINSN_un("vsri.64 d6, d7, #12", d6, d7, i32, 0xfac);
   5922     TESTINSN_un("vsri.64 d8, d4, #9", d8, d4, i32, 13560);
   5923     TESTINSN_un("vsri.64 d9, d12, #11", d9, d12, i32, 98710);
   5924 
   5925     printf("---- VMOV (ARM core register to scalar) ----\n");
   5926     TESTINSN_core_to_scalar("vmov.32 d0[0], r5", d0, r5, 13);
   5927     TESTINSN_core_to_scalar("vmov.32 d1[1], r3", d1, r3, 12);
   5928     TESTINSN_core_to_scalar("vmov.16 d0[0], r5", d0, r5, 13);
   5929     TESTINSN_core_to_scalar("vmov.16 d2[2], r6", d2, r6, 14);
   5930     TESTINSN_core_to_scalar("vmov.16 d3[3], r1", d3, r1, 17);
   5931     TESTINSN_core_to_scalar("vmov.8 d0[0], r5", d0, r5, 13);
   5932     TESTINSN_core_to_scalar("vmov.8 d0[1], r5", d0, r5, 13);
   5933     TESTINSN_core_to_scalar("vmov.8 d0[2], r5", d0, r5, 13);
   5934     TESTINSN_core_to_scalar("vmov.8 d0[3], r5", d0, r5, 13);
   5935     TESTINSN_core_to_scalar("vmov.8 d0[4], r5", d0, r5, 13);
   5936     TESTINSN_core_to_scalar("vmov.8 d0[5], r5", d0, r5, 13);
   5937     TESTINSN_core_to_scalar("vmov.8 d0[6], r5", d0, r5, 13);
   5938     TESTINSN_core_to_scalar("vmov.8 d31[7], r5", d31, r5, 13);
   5939 
   5940     printf("---- VMOV (scalar toARM core register) ----\n");
   5941     TESTINSN_scalar_to_core("vmov.32 r5, d0[0]", r5, d0, i32, 0x11223344);
   5942     TESTINSN_scalar_to_core("vmov.32 r6, d5[1]", r6, d5, i32, 0x11223344);
   5943     TESTINSN_scalar_to_core("vmov.u16 r5, d31[0]", r5, d31, i32, 0x11223344);
   5944     TESTINSN_scalar_to_core("vmov.u16 r5, d30[1]", r5, d30, i32, 0x11223344);
   5945     TESTINSN_scalar_to_core("vmov.u16 r5, d31[2]", r5, d31, i32, 0x11223344);
   5946     TESTINSN_scalar_to_core("vmov.u16 r5, d31[3]", r5, d31, i32, 0x11223344);
   5947     TESTINSN_scalar_to_core("vmov.u8 r2, d4[0]", r2, d4, i32, 0x11223344);
   5948     TESTINSN_scalar_to_core("vmov.u8 r2, d4[1]", r2, d4, i32, 0x11223344);
   5949     TESTINSN_scalar_to_core("vmov.u8 r2, d4[2]", r2, d4, i32, 0x11223344);
   5950     TESTINSN_scalar_to_core("vmov.u8 r2, d4[3]", r2, d4, i32, 0x11223344);
   5951     TESTINSN_scalar_to_core("vmov.u8 r2, d4[4]", r2, d4, i32, 0x11223344);
   5952     TESTINSN_scalar_to_core("vmov.u8 r2, d4[5]", r2, d4, i32, 0x11223344);
   5953     TESTINSN_scalar_to_core("vmov.u8 r2, d4[6]", r2, d4, i32, 0x11223344);
   5954     TESTINSN_scalar_to_core("vmov.u8 r2, d4[7]", r2, d4, i32, 0x11223344);
   5955     TESTINSN_scalar_to_core("vmov.s16 r5, d31[0]", r5, d31, i8, 128);
   5956     TESTINSN_scalar_to_core("vmov.s16 r5, d30[1]", r5, d30, i8, 128);
   5957     TESTINSN_scalar_to_core("vmov.s16 r5, d31[2]", r5, d31, i8, 128);
   5958     TESTINSN_scalar_to_core("vmov.s16 r5, d31[3]", r5, d31, i8, 128);
   5959     TESTINSN_scalar_to_core("vmov.s8 r2, d4[0]", r2, d4, i8, 128);
   5960     TESTINSN_scalar_to_core("vmov.s8 r2, d4[1]", r2, d4, i8, 128);
   5961     TESTINSN_scalar_to_core("vmov.s8 r2, d4[2]", r2, d4, i8, 128);
   5962     TESTINSN_scalar_to_core("vmov.s8 r2, d4[3]", r2, d4, i8, 128);
   5963     TESTINSN_scalar_to_core("vmov.s8 r2, d4[4]", r2, d4, i8, 128);
   5964     TESTINSN_scalar_to_core("vmov.s8 r2, d4[5]", r2, d4, i8, 130);
   5965     TESTINSN_scalar_to_core("vmov.s8 r2, d4[6]", r2, d4, i8, 129);
   5966     TESTINSN_scalar_to_core("vmov.s8 r2, d4[7]", r2, d4, i8, 131);
   5967 
   5968     printf("---- VLD1 (multiple single elements) ----\n");
   5969     TESTINSN_VLDn("vld1.8 {d0}", d0, d0, d0, d0);
   5970     TESTINSN_VLDn("vld1.16 {d0}", d0, d0, d0, d0);
   5971     TESTINSN_VLDn("vld1.32 {d0}", d0, d0, d0, d0);
   5972     TESTINSN_VLDn("vld1.64 {d0}", d0, d0, d0, d0);
   5973     TESTINSN_VLDn("vld1.8 {d9}", d9, d9, d9, d9);
   5974     TESTINSN_VLDn("vld1.16 {d17}", d17, d17, d17, d17);
   5975     TESTINSN_VLDn("vld1.32 {d31}", d31, d31, d31, d31);
   5976     TESTINSN_VLDn("vld1.64 {d14}", d14, d14, d14, d14);
   5977     TESTINSN_VLDn("vld1.8 {d0-d1}", d0, d1, d0, d1);
   5978     TESTINSN_VLDn("vld1.16 {d0-d1}", d0, d1, d0, d1);
   5979     TESTINSN_VLDn("vld1.32 {d5-d6}", d5, d6, d5, d6);
   5980     TESTINSN_VLDn("vld1.64 {d30-d31}", d30, d31, d30, d31);
   5981     TESTINSN_VLDn("vld1.8 {d0-d2}", d0, d1, d2, d0);
   5982     TESTINSN_VLDn("vld1.16 {d0-d2}", d0, d1, d2, d0);
   5983     TESTINSN_VLDn("vld1.32 {d0-d2}", d0, d1, d2, d0);
   5984     TESTINSN_VLDn("vld1.64 {d0-d2}", d0, d1, d2, d0);
   5985     TESTINSN_VLDn("vld1.8 {d0-d3}", d0, d1, d2, d3);
   5986     TESTINSN_VLDn("vld1.16 {d0-d3}", d0, d1, d2, d3);
   5987     TESTINSN_VLDn("vld1.32 {d0-d3}", d0, d1, d2, d3);
   5988     TESTINSN_VLDn("vld1.64 {d0-d3}", d0, d1, d2, d3);
   5989 
   5990     printf("---- VLD1 (single element to one lane) ----\n");
   5991     TESTINSN_VLDn("vld1.32 {d0[0]}", d0, d0, d0, d0);
   5992     TESTINSN_VLDn("vld1.32 {d0[1]}", d0, d0, d0, d0);
   5993     TESTINSN_VLDn("vld1.16 {d1[0]}", d1, d1, d1, d1);
   5994     TESTINSN_VLDn("vld1.16 {d1[1]}", d1, d1, d1, d1);
   5995     TESTINSN_VLDn("vld1.16 {d1[2]}", d1, d1, d1, d1);
   5996     TESTINSN_VLDn("vld1.16 {d1[3]}", d1, d1, d1, d1);
   5997     TESTINSN_VLDn("vld1.8 {d0[7]}", d0, d0, d0, d0);
   5998     TESTINSN_VLDn("vld1.8 {d1[6]}", d1, d1, d1, d1);
   5999     TESTINSN_VLDn("vld1.8 {d0[5]}", d0, d0, d0, d0);
   6000     TESTINSN_VLDn("vld1.8 {d0[4]}", d0, d0, d0, d0);
   6001     TESTINSN_VLDn("vld1.8 {d20[3]}", d20, d20, d20, d20);
   6002     TESTINSN_VLDn("vld1.8 {d0[2]}", d0, d0, d0, d0);
   6003     TESTINSN_VLDn("vld1.8 {d17[1]}", d17, d17, d17, d17);
   6004     TESTINSN_VLDn("vld1.8 {d30[0]}", d30, d30, d30, d30);
   6005 
   6006     printf("---- VLD1 (single element to all lanes) ----\n");
   6007     TESTINSN_VLDn("vld1.8 {d0[]}", d0, d0, d0, d0);
   6008     TESTINSN_VLDn("vld1.16 {d0[]}", d0, d0, d0, d0);
   6009     TESTINSN_VLDn("vld1.32 {d0[]}", d0, d0, d0, d0);
   6010     TESTINSN_VLDn("vld1.8 {d9[]}", d9, d9, d9, d9);
   6011     TESTINSN_VLDn("vld1.16 {d17[]}", d17, d17, d17, d17);
   6012     TESTINSN_VLDn("vld1.32 {d31[]}", d31, d31, d31, d31);
   6013     TESTINSN_VLDn("vld1.8 {d0[],d1[]}", d0, d1, d0, d1);
   6014     TESTINSN_VLDn("vld1.16 {d0[],d1[]}", d0, d1, d0, d1);
   6015     TESTINSN_VLDn("vld1.32 {d5[],d6[]}", d5, d6, d5, d6);
   6016 
   6017     printf("---- VLD2 (multiple 2-elements) ----\n");
   6018     TESTINSN_VLDn("vld2.8 {d30-d31}", d30, d31, d30, d31);
   6019     TESTINSN_VLDn("vld2.16 {d0-d1}", d0, d1, d0, d1);
   6020     TESTINSN_VLDn("vld2.32 {d0-d1}", d0, d1, d0, d1);
   6021     TESTINSN_VLDn("vld2.8 {d10,d12}", d10, d12, d10, d12);
   6022     TESTINSN_VLDn("vld2.16 {d20,d22}", d20, d22, d20, d22);
   6023     TESTINSN_VLDn("vld2.32 {d0,d2}", d0, d2, d0, d2);
   6024     TESTINSN_VLDn("vld2.8 {d0-d3}", d0, d1, d2, d3);
   6025     TESTINSN_VLDn("vld2.16 {d20-d23}", d20, d21, d22, d23);
   6026     TESTINSN_VLDn("vld2.32 {d0-d3}", d0, d1, d2, d3);
   6027 
   6028     printf("---- VLD2 (single 2-element structure to one lane) ----\n");
   6029     TESTINSN_VLDn("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
   6030     TESTINSN_VLDn("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
   6031     TESTINSN_VLDn("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
   6032     TESTINSN_VLDn("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
   6033     TESTINSN_VLDn("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
   6034     TESTINSN_VLDn("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
   6035     TESTINSN_VLDn("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
   6036     TESTINSN_VLDn("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
   6037     TESTINSN_VLDn("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
   6038     TESTINSN_VLDn("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
   6039     TESTINSN_VLDn("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
   6040     TESTINSN_VLDn("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
   6041     TESTINSN_VLDn("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
   6042     TESTINSN_VLDn("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
   6043     TESTINSN_VLDn("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
   6044     TESTINSN_VLDn("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
   6045     TESTINSN_VLDn("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
   6046     TESTINSN_VLDn("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
   6047     TESTINSN_VLDn("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
   6048     TESTINSN_VLDn("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
   6049 
   6050     printf("---- VLD2 (2-elements to all lanes) ----\n");
   6051     TESTINSN_VLDn("vld2.8 {d0[],d1[]}", d0, d1, d0, d1);
   6052     TESTINSN_VLDn("vld2.16 {d0[],d1[]}", d0, d1, d0, d1);
   6053     TESTINSN_VLDn("vld2.32 {d0[],d1[]}", d0, d1, d0, d1);
   6054     TESTINSN_VLDn("vld2.8 {d9[],d11[]}", d9, d11, d9, d11);
   6055     TESTINSN_VLDn("vld2.16 {d17[],d18[]}", d17, d18, d17, d18);
   6056     TESTINSN_VLDn("vld2.32 {d30[],d31[]}", d30, d31, d30, d31);
   6057     TESTINSN_VLDn("vld2.8 {d0[],d2[]}", d0, d2, d0, d2);
   6058     TESTINSN_VLDn("vld2.16 {d0[],d2[]}", d0, d2, d0, d2);
   6059     TESTINSN_VLDn("vld2.32 {d5[],d7[]}", d5, d7, d5, d7);
   6060 
   6061     printf("---- VLD3 (multiple 3-elements) ----\n");
   6062     TESTINSN_VLDn("vld3.8 {d20-d22}", d20, d21, d22, d20);
   6063     TESTINSN_VLDn("vld3.16 {d0-d2}", d0, d1, d2, d0);
   6064     TESTINSN_VLDn("vld3.32 {d0-d2}", d0, d1, d2, d0);
   6065     TESTINSN_VLDn("vld3.8 {d0,d2,d4}", d0, d2, d4, d0);
   6066     TESTINSN_VLDn("vld3.16 {d20,d22,d24}", d20, d22, d24, d20);
   6067     TESTINSN_VLDn("vld3.32 {d0,d2,d4}", d0, d2, d4, d0);
   6068 
   6069     printf("---- VLD3 (single 3-element structure to one lane) ----\n");
   6070     TESTINSN_VLDn("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
   6071     TESTINSN_VLDn("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
   6072     TESTINSN_VLDn("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
   6073     TESTINSN_VLDn("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
   6074     TESTINSN_VLDn("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
   6075     TESTINSN_VLDn("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
   6076     TESTINSN_VLDn("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
   6077     TESTINSN_VLDn("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
   6078     TESTINSN_VLDn("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
   6079     TESTINSN_VLDn("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
   6080     TESTINSN_VLDn("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
   6081     TESTINSN_VLDn("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
   6082     TESTINSN_VLDn("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
   6083     TESTINSN_VLDn("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
   6084     TESTINSN_VLDn("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
   6085     TESTINSN_VLDn("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
   6086     TESTINSN_VLDn("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
   6087     TESTINSN_VLDn("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
   6088     TESTINSN_VLDn("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
   6089     TESTINSN_VLDn("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
   6090 
   6091     printf("---- VLD3 (3-elements to all lanes) ----\n");
   6092     TESTINSN_VLDn("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   6093     TESTINSN_VLDn("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   6094     TESTINSN_VLDn("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1);
   6095     TESTINSN_VLDn("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11);
   6096     TESTINSN_VLDn("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18);
   6097     TESTINSN_VLDn("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31);
   6098     TESTINSN_VLDn("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2);
   6099     TESTINSN_VLDn("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2);
   6100     TESTINSN_VLDn("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7);
   6101 
   6102     printf("---- VLD4 (multiple 3-elements) ----\n");
   6103     TESTINSN_VLDn("vld4.8 {d0-d3}", d0, d1, d2, d3);
   6104     TESTINSN_VLDn("vld4.16 {d20-d23}", d20, d21, d22, d23);
   6105     TESTINSN_VLDn("vld4.32 {d0-d3}", d0, d1, d2, d3);
   6106     TESTINSN_VLDn("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
   6107     TESTINSN_VLDn("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
   6108     TESTINSN_VLDn("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
   6109 
   6110     printf("---- VLD4 (single 4-element structure to one lane) ----\n");
   6111     TESTINSN_VLDn("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
   6112     TESTINSN_VLDn("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
   6113     TESTINSN_VLDn("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
   6114     TESTINSN_VLDn("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
   6115     TESTINSN_VLDn("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
   6116     TESTINSN_VLDn("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
   6117     TESTINSN_VLDn("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
   6118     TESTINSN_VLDn("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
   6119     TESTINSN_VLDn("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
   6120     TESTINSN_VLDn("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
   6121     TESTINSN_VLDn("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
   6122     TESTINSN_VLDn("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
   6123     TESTINSN_VLDn("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
   6124     TESTINSN_VLDn("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
   6125     TESTINSN_VLDn("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
   6126     TESTINSN_VLDn("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
   6127     TESTINSN_VLDn("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
   6128     TESTINSN_VLDn("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
   6129     TESTINSN_VLDn("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
   6130     TESTINSN_VLDn("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
   6131 
   6132     printf("---- VLD4 (4-elements to all lanes) ----\n");
   6133     TESTINSN_VLDn("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   6134     TESTINSN_VLDn("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   6135     TESTINSN_VLDn("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3);
   6136     TESTINSN_VLDn("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15);
   6137     TESTINSN_VLDn("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20);
   6138     TESTINSN_VLDn("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31);
   6139     TESTINSN_VLDn("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
   6140     TESTINSN_VLDn("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6);
   6141     TESTINSN_VLDn("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11);
   6142 
   6143     printf("---- VST1 (multiple single elements) ----\n");
   6144     TESTINSN_VSTn("vst1.8 {d0}", d0, d0, d0, d0);
   6145     TESTINSN_VSTn("vst1.16 {d0}", d0, d0, d0, d0);
   6146     TESTINSN_VSTn("vst1.32 {d0}", d0, d0, d0, d0);
   6147     TESTINSN_VSTn("vst1.64 {d0}", d0, d0, d0, d0);
   6148     TESTINSN_VSTn("vst1.8 {d9}", d9, d9, d9, d9);
   6149     TESTINSN_VSTn("vst1.16 {d17}", d17, d17, d17, d17);
   6150     TESTINSN_VSTn("vst1.32 {d31}", d31, d31, d31, d31);
   6151     TESTINSN_VSTn("vst1.64 {d14}", d14, d14, d14, d14);
   6152     TESTINSN_VSTn("vst1.8 {d0-d1}", d0, d1, d0, d1);
   6153     TESTINSN_VSTn("vst1.16 {d0-d1}", d0, d1, d0, d1);
   6154     TESTINSN_VSTn("vst1.32 {d5-d6}", d5, d6, d5, d6);
   6155     TESTINSN_VSTn("vst1.64 {d30-d31}", d30, d31, d30, d31);
   6156     TESTINSN_VSTn("vst1.8 {d0-d2}", d0, d1, d2, d0);
   6157     TESTINSN_VSTn("vst1.16 {d0-d2}", d0, d1, d2, d0);
   6158     TESTINSN_VSTn("vst1.32 {d0-d2}", d0, d1, d2, d0);
   6159     TESTINSN_VSTn("vst1.64 {d0-d2}", d0, d1, d2, d0);
   6160     TESTINSN_VSTn("vst1.8 {d0-d3}", d0, d1, d2, d3);
   6161     TESTINSN_VSTn("vst1.16 {d0-d3}", d0, d1, d2, d3);
   6162     TESTINSN_VSTn("vst1.32 {d0-d3}", d0, d1, d2, d3);
   6163     TESTINSN_VSTn("vst1.64 {d0-d3}", d0, d1, d2, d3);
   6164 
   6165     printf("---- VST1 (single element from one lane) ----\n");
   6166     TESTINSN_VSTn("vst1.32 {d0[0]}", d0, d0, d0, d0);
   6167     TESTINSN_VSTn("vst1.32 {d0[1]}", d0, d0, d0, d0);
   6168     TESTINSN_VSTn("vst1.16 {d1[0]}", d1, d1, d1, d1);
   6169     TESTINSN_VSTn("vst1.16 {d1[1]}", d1, d1, d1, d1);
   6170     TESTINSN_VSTn("vst1.16 {d1[2]}", d1, d1, d1, d1);
   6171     TESTINSN_VSTn("vst1.16 {d1[3]}", d1, d1, d1, d1);
   6172     TESTINSN_VSTn("vst1.8 {d0[7]}", d0, d0, d0, d0);
   6173     TESTINSN_VSTn("vst1.8 {d1[6]}", d1, d1, d1, d1);
   6174     TESTINSN_VSTn("vst1.8 {d0[5]}", d0, d0, d0, d0);
   6175     TESTINSN_VSTn("vst1.8 {d0[4]}", d0, d0, d0, d0);
   6176     TESTINSN_VSTn("vst1.8 {d20[3]}", d20, d20, d20, d20);
   6177     TESTINSN_VSTn("vst1.8 {d0[2]}", d0, d0, d0, d0);
   6178     TESTINSN_VSTn("vst1.8 {d17[1]}", d17, d17, d17, d17);
   6179     TESTINSN_VSTn("vst1.8 {d30[0]}", d30, d30, d30, d30);
   6180 
   6181     printf("---- VST2 (multiple 2-elements) ----\n");
   6182     TESTINSN_VSTn("vst2.8 {d30-d31}", d30, d31, d30, d31);
   6183     TESTINSN_VSTn("vst2.16 {d0-d1}", d0, d1, d0, d1);
   6184     TESTINSN_VSTn("vst2.32 {d0-d1}", d0, d1, d0, d1);
   6185     TESTINSN_VSTn("vst2.8 {d10,d12}", d10, d12, d10, d12);
   6186     TESTINSN_VSTn("vst2.16 {d20,d22}", d20, d22, d20, d22);
   6187     TESTINSN_VSTn("vst2.32 {d0,d2}", d0, d2, d0, d2);
   6188     TESTINSN_VSTn("vst2.8 {d0-d3}", d0, d1, d2, d3);
   6189     TESTINSN_VSTn("vst2.16 {d20-d23}", d20, d21, d22, d23);
   6190     TESTINSN_VSTn("vst2.32 {d0-d3}", d0, d1, d2, d3);
   6191 
   6192     printf("---- VST2 (single 2-element structure from one lane) ----\n");
   6193     TESTINSN_VSTn("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1);
   6194     TESTINSN_VSTn("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1);
   6195     TESTINSN_VSTn("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2);
   6196     TESTINSN_VSTn("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2);
   6197     TESTINSN_VSTn("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2);
   6198     TESTINSN_VSTn("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2);
   6199     TESTINSN_VSTn("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2);
   6200     TESTINSN_VSTn("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2);
   6201     TESTINSN_VSTn("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3);
   6202     TESTINSN_VSTn("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3);
   6203     TESTINSN_VSTn("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3);
   6204     TESTINSN_VSTn("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3);
   6205     TESTINSN_VSTn("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1);
   6206     TESTINSN_VSTn("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2);
   6207     TESTINSN_VSTn("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1);
   6208     TESTINSN_VSTn("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1);
   6209     TESTINSN_VSTn("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21);
   6210     TESTINSN_VSTn("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1);
   6211     TESTINSN_VSTn("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18);
   6212     TESTINSN_VSTn("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31);
   6213 
   6214     printf("---- VST3 (multiple 3-elements) ----\n");
   6215     TESTINSN_VSTn("vst3.8 {d20-d22}", d20, d21, d22, d20);
   6216     TESTINSN_VSTn("vst3.16 {d0-d2}", d0, d1, d2, d0);
   6217     TESTINSN_VSTn("vst3.32 {d0-d2}", d0, d1, d2, d0);
   6218     TESTINSN_VSTn("vst3.8 {d0,d2,d4}", d0, d2, d4, d0);
   6219     TESTINSN_VSTn("vst3.16 {d20,d22,d24}", d20, d22, d24, d20);
   6220     TESTINSN_VSTn("vst3.32 {d0,d2,d4}", d0, d2, d4, d0);
   6221 
   6222     printf("---- VST3 (single 3-element structure from one lane) ----\n");
   6223     TESTINSN_VSTn("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1);
   6224     TESTINSN_VSTn("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1);
   6225     TESTINSN_VSTn("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2);
   6226     TESTINSN_VSTn("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2);
   6227     TESTINSN_VSTn("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2);
   6228     TESTINSN_VSTn("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2);
   6229     TESTINSN_VSTn("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2);
   6230     TESTINSN_VSTn("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2);
   6231     TESTINSN_VSTn("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5);
   6232     TESTINSN_VSTn("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5);
   6233     TESTINSN_VSTn("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5);
   6234     TESTINSN_VSTn("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5);
   6235     TESTINSN_VSTn("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1);
   6236     TESTINSN_VSTn("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2);
   6237     TESTINSN_VSTn("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1);
   6238     TESTINSN_VSTn("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1);
   6239     TESTINSN_VSTn("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21);
   6240     TESTINSN_VSTn("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1);
   6241     TESTINSN_VSTn("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18);
   6242     TESTINSN_VSTn("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31);
   6243 
   6244     printf("---- VST4 (multiple 4-elements) ----\n");
   6245     TESTINSN_VSTn("vst4.8 {d0-d3}", d0, d1, d2, d3);
   6246     TESTINSN_VSTn("vst4.16 {d20-d23}", d20, d21, d22, d23);
   6247     TESTINSN_VSTn("vst4.32 {d0-d3}", d0, d1, d2, d3);
   6248     TESTINSN_VSTn("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6);
   6249     TESTINSN_VSTn("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7);
   6250     TESTINSN_VSTn("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26);
   6251 
   6252     printf("---- VST4 (single 4-element structure from one lane) ----\n");
   6253     TESTINSN_VSTn("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3);
   6254     TESTINSN_VSTn("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4);
   6255     TESTINSN_VSTn("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6);
   6256     TESTINSN_VSTn("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6);
   6257     TESTINSN_VSTn("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4);
   6258     TESTINSN_VSTn("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4);
   6259     TESTINSN_VSTn("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4);
   6260     TESTINSN_VSTn("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4);
   6261     TESTINSN_VSTn("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7);
   6262     TESTINSN_VSTn("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7);
   6263     TESTINSN_VSTn("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7);
   6264     TESTINSN_VSTn("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7);
   6265     TESTINSN_VSTn("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3);
   6266     TESTINSN_VSTn("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4);
   6267     TESTINSN_VSTn("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3);
   6268     TESTINSN_VSTn("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3);
   6269     TESTINSN_VSTn("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23);
   6270     TESTINSN_VSTn("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3);
   6271     TESTINSN_VSTn("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20);
   6272     TESTINSN_VSTn("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31);
   6273 
   6274     printf("---- VMOVN ----\n");
   6275     TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
   6276     TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
   6277     TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
   6278     TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
   6279     TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
   6280     TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
   6281 
   6282     printf("---- VQMOVN ----\n");
   6283     TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
   6284     TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
   6285     TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
   6286     TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
   6287     TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
   6288     TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
   6289     TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
   6290     TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
   6291     TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
   6292     TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
   6293     TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
   6294     TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
   6295     TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff);
   6296     TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff);
   6297     TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff);
   6298 
   6299     printf("---- VQMOVN ----\n");
   6300     TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24);
   6301     TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24);
   6302     TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24);
   6303     TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0);
   6304     TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef);
   6305     TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24);
   6306     TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff);
   6307     TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff);
   6308     TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff);
   6309 
   6310     printf("---- VABS ----\n");
   6311     TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0x73);
   6312     TESTINSN_un("vabs.s16 d15, d4", d15, d4, i32, 0x73);
   6313     TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0x73);
   6314     TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0xfe);
   6315     TESTINSN_un("vabs.s16 d31, d4", d31, d4, i32, 0xef);
   6316     TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0xde);
   6317     TESTINSN_un("vabs.s32 d0, d1", d0, d1, i16, 0xfe0a);
   6318     TESTINSN_un("vabs.s16 d15, d4", d15, d4, i16, 0xef0b);
   6319     TESTINSN_un("vabs.s8 d8, d7", d8, d7, i16, 0xde0c);
   6320 
   6321     printf("---- VQABS ----\n");
   6322     TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0x73);
   6323     TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 1 << 31);
   6324     TESTINSN_un_q("vqabs.s16 d0, d1", d0, d1, i32, 1 << 31);
   6325     TESTINSN_un_q("vqabs.s8 d0, d1", d0, d1, i32, 1 << 31);
   6326     TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i32, 0x73);
   6327     TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0x73);
   6328     TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0xfe);
   6329     TESTINSN_un_q("vqabs.s16 d31, d4", d31, d4, i32, 0xef);
   6330     TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0xde);
   6331     TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i16, 0xfe0a);
   6332     TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i16, 0xef0b);
   6333     TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i16, 0xde0c);
   6334 
   6335     printf("---- VADDHN ----\n");
   6336     TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
   6337     TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6338     TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6339     TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6340     TESTINSN_bin("vaddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
   6341     TESTINSN_bin("vaddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
   6342     TESTINSN_bin("vaddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
   6343     TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
   6344     TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6345     TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6346     TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6347 
   6348     printf("---- VRADDHN ----\n");
   6349     TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
   6350     TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6351     TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6352     TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6353     TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
   6354     TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
   6355     TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
   6356     TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
   6357     TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6358     TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6359     TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6360     TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0102);
   6361     TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0102);
   6362     TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0102);
   6363     TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x02);
   6364     TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
   6365     TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
   6366     TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02);
   6367 
   6368     printf("---- VSUBHN ----\n");
   6369     TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
   6370     TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6371     TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6372     TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6373     TESTINSN_bin("vsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
   6374     TESTINSN_bin("vsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
   6375     TESTINSN_bin("vsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
   6376     TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
   6377     TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6378     TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6379     TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6380 
   6381     printf("---- VRSUBHN ----\n");
   6382     TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72);
   6383     TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6384     TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6385     TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72);
   6386     TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172);
   6387     TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172);
   6388     TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172);
   6389     TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72);
   6390     TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6391     TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6392     TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72);
   6393     TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef93, q2, i32, 0x0102);
   6394     TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef93, q2, i32, 0x0102);
   6395     TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef93, q8, i32, 0x0102);
   6396     TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x93, q1, i32, 0x02);
   6397     TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
   6398     TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
   6399     TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02);
   6400 
   6401     printf("---- VCEQ #0 ----\n");
   6402     TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x21);
   6403     TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x21);
   6404     TESTINSN_un("vceq.i8 d10, d11, #0", d10, d11, i32, 0x21);
   6405     TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x0);
   6406     TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x0);
   6407     TESTINSN_un("vceq.i8 d10, d31, #0", d10, d31, i32, 0x0);
   6408 
   6409     printf("---- VCGT #0 ----\n");
   6410     TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x21);
   6411     TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x21);
   6412     TESTINSN_un("vcgt.s8 d10, d31, #0", d10, d31, i32, 0x21);
   6413     TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x0);
   6414     TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x0);
   6415     TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i32, 0x0);
   6416     TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i8, 0xef);
   6417     TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i8, 0xed);
   6418     TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i8, 0xae);
   6419 
   6420     printf("---- VCGE #0 ----\n");
   6421     TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x21);
   6422     TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x21);
   6423     TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0x21);
   6424     TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x0);
   6425     TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x0);
   6426     TESTINSN_un("vcge.s8 d10, d31, #0", d10, d31, i32, 0x0);
   6427     TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i8, 0xef);
   6428     TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i8, 0xed);
   6429     TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i8, 0xae);
   6430     TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0xef);
   6431     TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0xed);
   6432     TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0xae);
   6433 
   6434     printf("---- VCLE #0 ----\n");
   6435     TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x21);
   6436     TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x21);
   6437     TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i32, 0x21);
   6438     TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x0);
   6439     TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x0);
   6440     TESTINSN_un("vcle.s8 d10, d31, #0", d10, d31, i32, 0x0);
   6441     TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i8, 0xef);
   6442     TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i8, 0xed);
   6443     TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i8, 0xae);
   6444 
   6445     printf("---- VCLT #0 ----\n");
   6446     TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x21);
   6447     TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x21);
   6448     TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x21);
   6449     TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x0);
   6450     TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x0);
   6451     TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x0);
   6452     TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i8, 0xef);
   6453     TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i8, 0xed);
   6454     TESTINSN_un("vclt.s8 d10, d31, #0", d10, d31, i8, 0xae);
   6455     TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0xef);
   6456     TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0xed);
   6457     TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0xae);
   6458 
   6459     printf("---- VCNT ----\n");
   6460     TESTINSN_un("vcnt.8 d0, d1", d0, d1, i32, 0xac3d25eb);
   6461     TESTINSN_un("vcnt.8 d11, d14", d11, d14, i32, 0xac3d25eb);
   6462     TESTINSN_un("vcnt.8 d6, d2", d6, d2, i32, 0xad0eb);
   6463 
   6464     printf("---- VCLS ----\n");
   6465     TESTINSN_un("vcls.s8 d0, d1", d0, d1, i32, 0x21);
   6466     TESTINSN_un("vcls.s8 d30, d31", d30, d31, i8, 0x82);
   6467     TESTINSN_un("vcls.s16 d0, d1", d0, d1, i32, 0x21);
   6468     TESTINSN_un("vcls.s16 d31, d30", d31, d30, i8, 0x82);
   6469     TESTINSN_un("vcls.s32 d6, d1", d6, d1, i32, 0x21);
   6470     TESTINSN_un("vcls.s32 d30, d5", d30, d5, i8, 0x82);
   6471     TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0xff);
   6472     TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0xff);
   6473     TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0xff);
   6474     TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0xffef);
   6475     TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0xffef);
   6476     TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0xffef);
   6477     TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0x00);
   6478     TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0x00);
   6479     TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0x00);
   6480     TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0x00ef);
   6481     TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0x00ef);
   6482     TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0x00ef);
   6483 
   6484     printf("---- VCLZ ----\n");
   6485     TESTINSN_un("vclz.i8 d0, d1", d0, d1, i32, 0x21);
   6486     TESTINSN_un("vclz.i8 d30, d31", d30, d31, i8, 0x82);
   6487     TESTINSN_un("vclz.i16 d0, d1", d0, d1, i32, 0x21);
   6488     TESTINSN_un("vclz.i16 d31, d30", d31, d30, i8, 0x82);
   6489     TESTINSN_un("vclz.i32 d6, d1", d6, d1, i32, 0x21);
   6490     TESTINSN_un("vclz.i32 d30, d5", d30, d5, i8, 0x82);
   6491     TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0xff);
   6492     TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0xff);
   6493     TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0xff);
   6494     TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0xffef);
   6495     TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0xffef);
   6496     TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0xffef);
   6497     TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0x00);
   6498     TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0x00);
   6499     TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0x00);
   6500     TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0x00ef);
   6501     TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0x00ef);
   6502     TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0x00ef);
   6503 
   6504     printf("---- VSLI ----\n");
   6505     TESTINSN_un("vsli.16 d0, d1, #1", d0, d1, i32, 7);
   6506     TESTINSN_un("vsli.16 d3, d4, #2", d3, d4, i32, -0x7c);
   6507     TESTINSN_un("vsli.32 d2, d5, #31", d2, d5, i32, -1);
   6508     TESTINSN_un("vsli.8 d6, d7, #7", d6, d7, i32, 0xffff);
   6509     TESTINSN_un("vsli.16 d8, d9, #12", d8, d9, i32, -10);
   6510     TESTINSN_un("vsli.32 d10, d11, #5", d10, d11, i32, 10234);
   6511     TESTINSN_un("vsli.8 d12, d13, #1", d12, d13, i32, -1);
   6512     TESTINSN_un("vsli.16 d14, d15, #11", d14, d15, i32, -1);
   6513     TESTINSN_un("vsli.32 d10, d11, #9", d10, d11, i32, 1000);
   6514     TESTINSN_un("vsli.8 d7, d13, #7", d7, d13, i32, -1);
   6515     TESTINSN_un("vsli.16 d8, d1, #1", d8, d1, i32, 0xabcf);
   6516     TESTINSN_un("vsli.32 d12, d3, #15", d12, d3, i32, -0x1b0);
   6517     TESTINSN_un("vsli.64 d0, d1, #42", d0, d1, i32, -1);
   6518     TESTINSN_un("vsli.64 d6, d7, #12", d6, d7, i32, 0xfac);
   6519     TESTINSN_un("vsli.64 d8, d4, #9", d8, d4, i32, 13560);
   6520     TESTINSN_un("vsli.64 d9, d12, #11", d9, d12, i32, 98710);
   6521 
   6522     printf("---- VPADD ----\n");
   6523     TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   6524     TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   6525     TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   6526     TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120);
   6527     TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   6528     TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   6529     TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   6530     TESTINSN_bin("vpadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   6531 
   6532     printf("---- VPADDL ----\n");
   6533     TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 24);
   6534     TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 140);
   6535     TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, 140);
   6536     TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, 140);
   6537     TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6538     TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6539     TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6540     TESTINSN_un("vpaddl.u32 d10, d11", d10, d11, i32, 24);
   6541     TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 24);
   6542     TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 140);
   6543     TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, 140);
   6544     TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, 140);
   6545     TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6546     TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6547     TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6548     TESTINSN_un("vpaddl.s32 d10, d11", d10, d11, i32, 24);
   6549 
   6550     printf("---- VPADAL ----\n");
   6551     TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 24);
   6552     TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 140);
   6553     TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, 140);
   6554     TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i8, 140);
   6555     TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6556     TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6557     TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6558     TESTINSN_un("vpadal.u32 d10, d11", d10, d11, i32, 24);
   6559     TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 24);
   6560     TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 140);
   6561     TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, 140);
   6562     TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i8, 140);
   6563     TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6564     TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6565     TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, (1 << 31) + 1);
   6566     TESTINSN_un("vpadal.s32 d10, d11", d10, d11, i32, 24);
   6567 
   6568     printf("---- VZIP ----\n");
   6569     TESTINSN_dual("vzip.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
   6570     TESTINSN_dual("vzip.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
   6571     TESTINSN_dual("vzip.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
   6572     TESTINSN_dual("vzip.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   6573     TESTINSN_dual("vzip.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   6574     TESTINSN_dual("vzip.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
   6575 
   6576     printf("---- VUZP ----\n");
   6577     TESTINSN_dual("vuzp.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
   6578     TESTINSN_dual("vuzp.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
   6579     TESTINSN_dual("vuzp.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
   6580     TESTINSN_dual("vuzp.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   6581     TESTINSN_dual("vuzp.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   6582     TESTINSN_dual("vuzp.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
   6583 
   6584     printf("---- VTRN ----\n");
   6585     TESTINSN_dual("vtrn.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34);
   6586     TESTINSN_dual("vtrn.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34);
   6587     TESTINSN_dual("vtrn.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34);
   6588     TESTINSN_dual("vtrn.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   6589     TESTINSN_dual("vtrn.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   6590     TESTINSN_dual("vtrn.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
   6591 
   6592     printf("---- VSWP ----\n");
   6593     TESTINSN_dual("vswp d0, d1", d0, i8, 0x12, d1, i8, 0x34);
   6594     TESTINSN_dual("vswp d1, d0", d0, i8, 0x12, d1, i8, 0x34);
   6595     TESTINSN_dual("vswp d10, d11", d10, i8, 0x12, d11, i8, 0x34);
   6596     TESTINSN_dual("vswp d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   6597     TESTINSN_dual("vswp d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d);
   6598     TESTINSN_dual("vswp d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d);
   6599 
   6600     printf("---- VSHRN ----\n");
   6601     TESTINSN_un("vshrn.i16 d0, q1, #1", d0, q1, i32, -1);
   6602     TESTINSN_un("vshrn.i16 d3, q4, #2", d3, q4, i32, -0x7c);
   6603     TESTINSN_un("vshrn.i32 d2, q5, #10", d2, q5, i32, -1);
   6604     TESTINSN_un("vshrn.i32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   6605     TESTINSN_un("vshrn.i64 d6, q7, #7", d6, q7, i32, 0xffff);
   6606     TESTINSN_un("vshrn.i16 d8, q9, #8", d8, q9, i32, -10);
   6607     TESTINSN_un("vshrn.i32 d10, q11, #5", d10, q11, i32, 10234);
   6608     TESTINSN_un("vshrn.i64 d12, q13, #1", d12, q13, i32, -1);
   6609     TESTINSN_un("vshrn.i16 d14, q15, #6", d14, q15, i32, -1);
   6610     TESTINSN_un("vshrn.i32 d10, q11, #9", d10, q11, i32, 1000);
   6611     TESTINSN_un("vshrn.i64 d7, q13, #7", d7, q13, i32, -1);
   6612     TESTINSN_un("vshrn.i16 d8, q1, #1", d8, q1, i32, 0xabcf);
   6613     TESTINSN_un("vshrn.i32 d12, q3, #15", d12, q3, i32, -0x1b0);
   6614     TESTINSN_un("vshrn.i64 d0, q1, #22", d0, q1, i32, -1);
   6615     TESTINSN_un("vshrn.i64 d6, q7, #12", d6, q7, i32, 0xfac);
   6616     TESTINSN_un("vshrn.i64 d8, q4, #9", d8, q4, i32, 13560);
   6617     TESTINSN_un("vshrn.i64 d9, q12, #11", d9, q12, i32, 98710);
   6618 
   6619     printf("---- VDUP ----\n");
   6620     TESTINSN_un("vdup.8 d12, d2[0]", d12, d2, i32, 0xabc4657);
   6621     TESTINSN_un("vdup.8 d0, d3[2]", d0, d3, i32, 0x7a1b3);
   6622     TESTINSN_un("vdup.8 d1, d0[7]", d1, d0, i32, 0x713aaa);
   6623     TESTINSN_un("vdup.8 d10, d4[3]", d10, d4, i32, 0xaa713);
   6624     TESTINSN_un("vdup.8 d4, d28[4]", d4, d28, i32, 0x7b1c3);
   6625     TESTINSN_un("vdup.16 d17, d19[1]", d17, d19, i32, 0x713ffff);
   6626     TESTINSN_un("vdup.16 d15, d31[2]", d15, d31, i32, 0x7f00fa);
   6627     TESTINSN_un("vdup.16 d6, d2[0]", d6, d2, i32, 0xffabcde);
   6628     TESTINSN_un("vdup.16 d8, d22[3]", d8, d22, i32, 0x713);
   6629     TESTINSN_un("vdup.16 d9, d2[0]", d9, d2, i32, 0x713);
   6630     TESTINSN_un("vdup.32 d10, d17[1]", d10, d17, i32, 0x713);
   6631     TESTINSN_un("vdup.32 d15, d11[0]", d15, d11, i32, 0x3);
   6632     TESTINSN_un("vdup.32 d30, d29[1]", d30, d29, i32, 0xf00000aa);
   6633     TESTINSN_un("vdup.32 d22, d0[1]", d22, d0, i32, 0xf);
   6634     TESTINSN_un("vdup.32 d13, d13[0]", d13, d13, i32, -1);
   6635 
   6636     printf("---- VQDMULH ----\n");
   6637     TESTINSN_bin_q("vqdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   6638     TESTINSN_bin_q("vqdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
   6639     TESTINSN_bin_q("vqdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   6640     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   6641     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   6642     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   6643     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
   6644     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   6645     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   6646     TESTINSN_bin_q("vqdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
   6647     TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
   6648     TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
   6649     TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31);
   6650     TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30);
   6651 
   6652     printf("---- VQDMULH (by scalar) ----\n");
   6653     TESTINSN_bin_q("vqdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120);
   6654     TESTINSN_bin_q("vqdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120);
   6655     TESTINSN_bin_q("vqdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120);
   6656     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   6657     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   6658     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
   6659     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12);
   6660     TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   6661     TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   6662     TESTINSN_bin_q("vqdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120);
   6663     TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31);
   6664     TESTINSN_bin_q("vqdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, 1 << 31);
   6665     TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31);
   6666     TESTINSN_bin_q("vqdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30);
   6667 
   6668     printf("---- VSHRN ----\n");
   6669     TESTINSN_un("vshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657);
   6670     TESTINSN_un("vshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3);
   6671     TESTINSN_un("vshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa);
   6672     TESTINSN_un("vshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713);
   6673     TESTINSN_un("vshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3);
   6674     TESTINSN_un("vshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff);
   6675     TESTINSN_un("vshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa);
   6676     TESTINSN_un("vshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc);
   6677     TESTINSN_un("vshrn.i16 d8, q12, #3", d8, q12, i32, 0x713);
   6678     TESTINSN_un("vshrn.i16 d9, q2, #7", d9, q2, i32, 0x713);
   6679     TESTINSN_un("vshrn.i32 d10, q13, #2", d10, q13, i32, 0x713);
   6680     TESTINSN_un("vshrn.i32 d15, q11, #1", d15, q11, i32, 0x3);
   6681     TESTINSN_un("vshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa);
   6682     TESTINSN_un("vshrn.i32 d12, q0, #6", d12, q0, i32, 0xf);
   6683     TESTINSN_un("vshrn.i32 d13, q13, #2", d13, q13, i32, -1);
   6684 
   6685     printf("---- VQSHRN ----\n");
   6686     TESTINSN_un_q("vqshrn.s16 d0, q1, #1", d0, q1, i32, -1);
   6687     TESTINSN_un_q("vqshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c);
   6688     TESTINSN_un_q("vqshrn.s32 d2, q5, #10", d2, q5, i32, -1);
   6689     TESTINSN_un_q("vqshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   6690     TESTINSN_un_q("vqshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
   6691     TESTINSN_un_q("vqshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff);
   6692     TESTINSN_un_q("vqshrn.s16 d8, q9, #8", d8, q9, i32, -10);
   6693     TESTINSN_un_q("vqshrn.s32 d10, q11, #5", d10, q11, i32, 10234);
   6694     TESTINSN_un_q("vqshrn.s64 d12, q13, #1", d12, q13, i32, -1);
   6695     TESTINSN_un_q("vqshrn.s16 d14, q15, #6", d14, q15, i32, -1);
   6696     TESTINSN_un_q("vqshrn.s32 d10, q11, #9", d10, q11, i32, 1000);
   6697     TESTINSN_un_q("vqshrn.s64 d7, q13, #7", d7, q13, i32, -1);
   6698     TESTINSN_un_q("vqshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
   6699     TESTINSN_un_q("vqshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
   6700     TESTINSN_un_q("vqshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
   6701     TESTINSN_un_q("vqshrn.s64 d0, q1, #22", d0, q1, i32, -1);
   6702     TESTINSN_un_q("vqshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac);
   6703     TESTINSN_un_q("vqshrn.s64 d8, q4, #9", d8, q4, i32, 13560);
   6704     TESTINSN_un_q("vqshrn.s64 d9, q12, #11", d9, q12, i32, 98710);
   6705     TESTINSN_un_q("vqshrn.u16 d0, q1, #1", d0, q1, i32, -1);
   6706     TESTINSN_un_q("vqshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c);
   6707     TESTINSN_un_q("vqshrn.u32 d2, q5, #10", d2, q5, i32, -1);
   6708     TESTINSN_un_q("vqshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   6709     TESTINSN_un_q("vqshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff);
   6710     TESTINSN_un_q("vqshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff);
   6711     TESTINSN_un_q("vqshrn.u16 d8, q9, #8", d8, q9, i32, -10);
   6712     TESTINSN_un_q("vqshrn.u32 d10, q11, #5", d10, q11, i32, 10234);
   6713     TESTINSN_un_q("vqshrn.u64 d12, q13, #1", d12, q13, i32, -1);
   6714     TESTINSN_un_q("vqshrn.u16 d14, q15, #6", d14, q15, i32, -1);
   6715     TESTINSN_un_q("vqshrn.u32 d10, q11, #9", d10, q11, i32, 1000);
   6716     TESTINSN_un_q("vqshrn.u64 d7, q13, #7", d7, q13, i32, -1);
   6717     TESTINSN_un_q("vqshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf);
   6718     TESTINSN_un_q("vqshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf);
   6719     TESTINSN_un_q("vqshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0);
   6720     TESTINSN_un_q("vqshrn.u64 d0, q1, #22", d0, q1, i32, -1);
   6721     TESTINSN_un_q("vqshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac);
   6722     TESTINSN_un_q("vqshrn.u64 d8, q4, #9", d8, q4, i32, 13560);
   6723     TESTINSN_un_q("vqshrn.u64 d9, q12, #11", d9, q12, i32, 98710);
   6724 
   6725     printf("---- VQSHRUN ----\n");
   6726     TESTINSN_un_q("vqshrun.s16 d0, q1, #1", d0, q1, i32, -1);
   6727     TESTINSN_un_q("vqshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c);
   6728     TESTINSN_un_q("vqshrun.s32 d2, q5, #10", d2, q5, i32, -1);
   6729     TESTINSN_un_q("vqshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   6730     TESTINSN_un_q("vqshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
   6731     TESTINSN_un_q("vqshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff);
   6732     TESTINSN_un_q("vqshrun.s16 d8, q9, #8", d8, q9, i32, -10);
   6733     TESTINSN_un_q("vqshrun.s32 d10, q11, #5", d10, q11, i32, 10234);
   6734     TESTINSN_un_q("vqshrun.s64 d12, q13, #1", d12, q13, i32, -1);
   6735     TESTINSN_un_q("vqshrun.s16 d14, q15, #6", d14, q15, i32, -1);
   6736     TESTINSN_un_q("vqshrun.s32 d10, q11, #9", d10, q11, i32, 1000);
   6737     TESTINSN_un_q("vqshrun.s64 d7, q13, #7", d7, q13, i32, -1);
   6738     TESTINSN_un_q("vqshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
   6739     TESTINSN_un_q("vqshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
   6740     TESTINSN_un_q("vqshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
   6741     TESTINSN_un_q("vqshrun.s64 d0, q1, #22", d0, q1, i32, -1);
   6742     TESTINSN_un_q("vqshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac);
   6743     TESTINSN_un_q("vqshrun.s64 d8, q4, #9", d8, q4, i32, 13560);
   6744     TESTINSN_un_q("vqshrun.s64 d9, q12, #11", d9, q12, i32, 98710);
   6745 
   6746     printf("---- VQRSHRN ----\n");
   6747     TESTINSN_un_q("vqrshrn.s16 d0, q1, #1", d0, q1, i32, -1);
   6748     TESTINSN_un_q("vqrshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c);
   6749     TESTINSN_un_q("vqrshrn.s32 d2, q5, #10", d2, q5, i32, -1);
   6750     TESTINSN_un_q("vqrshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   6751     TESTINSN_un_q("vqrshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
   6752     TESTINSN_un_q("vqrshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff);
   6753     TESTINSN_un_q("vqrshrn.s16 d8, q9, #8", d8, q9, i32, -10);
   6754     TESTINSN_un_q("vqrshrn.s32 d10, q11, #5", d10, q11, i32, 10234);
   6755     TESTINSN_un_q("vqrshrn.s64 d12, q13, #1", d12, q13, i32, -1);
   6756     TESTINSN_un_q("vqrshrn.s16 d14, q15, #6", d14, q15, i32, -1);
   6757     TESTINSN_un_q("vqrshrn.s32 d10, q11, #9", d10, q11, i32, 1000);
   6758     TESTINSN_un_q("vqrshrn.s64 d7, q13, #7", d7, q13, i32, -1);
   6759     TESTINSN_un_q("vqrshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
   6760     TESTINSN_un_q("vqrshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
   6761     TESTINSN_un_q("vqrshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
   6762     TESTINSN_un_q("vqrshrn.s64 d0, q1, #22", d0, q1, i32, -1);
   6763     TESTINSN_un_q("vqrshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac);
   6764     TESTINSN_un_q("vqrshrn.s64 d8, q4, #9", d8, q4, i32, 13560);
   6765     TESTINSN_un_q("vqrshrn.s64 d9, q12, #11", d9, q12, i32, 98710);
   6766     TESTINSN_un_q("vqrshrn.u16 d0, q1, #1", d0, q1, i32, -1);
   6767     TESTINSN_un_q("vqrshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c);
   6768     TESTINSN_un_q("vqrshrn.u32 d2, q5, #10", d2, q5, i32, -1);
   6769     TESTINSN_un_q("vqrshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   6770     TESTINSN_un_q("vqrshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff);
   6771     TESTINSN_un_q("vqrshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff);
   6772     TESTINSN_un_q("vqrshrn.u16 d8, q9, #8", d8, q9, i32, -10);
   6773     TESTINSN_un_q("vqrshrn.u32 d10, q11, #5", d10, q11, i32, 10234);
   6774     TESTINSN_un_q("vqrshrn.u64 d12, q13, #1", d12, q13, i32, -1);
   6775     TESTINSN_un_q("vqrshrn.u16 d14, q15, #6", d14, q15, i32, -1);
   6776     TESTINSN_un_q("vqrshrn.u32 d10, q11, #9", d10, q11, i32, 1000);
   6777     TESTINSN_un_q("vqrshrn.u64 d7, q13, #7", d7, q13, i32, -1);
   6778     TESTINSN_un_q("vqrshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf);
   6779     TESTINSN_un_q("vqrshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf);
   6780     TESTINSN_un_q("vqrshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0);
   6781     TESTINSN_un_q("vqrshrn.u64 d0, q1, #22", d0, q1, i32, -1);
   6782     TESTINSN_un_q("vqrshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac);
   6783     TESTINSN_un_q("vqrshrn.u64 d8, q4, #9", d8, q4, i32, 13560);
   6784     TESTINSN_un_q("vqrshrn.u64 d9, q12, #11", d9, q12, i32, 98710);
   6785 
   6786     printf("---- VQRSHRUN ----\n");
   6787     TESTINSN_un_q("vqrshrun.s16 d0, q1, #1", d0, q1, i32, -1);
   6788     TESTINSN_un_q("vqrshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c);
   6789     TESTINSN_un_q("vqrshrun.s32 d2, q5, #10", d2, q5, i32, -1);
   6790     TESTINSN_un_q("vqrshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff);
   6791     TESTINSN_un_q("vqrshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff);
   6792     TESTINSN_un_q("vqrshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff);
   6793     TESTINSN_un_q("vqrshrun.s16 d8, q9, #8", d8, q9, i32, -10);
   6794     TESTINSN_un_q("vqrshrun.s32 d10, q11, #5", d10, q11, i32, 10234);
   6795     TESTINSN_un_q("vqrshrun.s64 d12, q13, #1", d12, q13, i32, -1);
   6796     TESTINSN_un_q("vqrshrun.s16 d14, q15, #6", d14, q15, i32, -1);
   6797     TESTINSN_un_q("vqrshrun.s32 d10, q11, #9", d10, q11, i32, 1000);
   6798     TESTINSN_un_q("vqrshrun.s64 d7, q13, #7", d7, q13, i32, -1);
   6799     TESTINSN_un_q("vqrshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf);
   6800     TESTINSN_un_q("vqrshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf);
   6801     TESTINSN_un_q("vqrshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0);
   6802     TESTINSN_un_q("vqrshrun.s64 d0, q1, #22", d0, q1, i32, -1);
   6803     TESTINSN_un_q("vqrshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac);
   6804     TESTINSN_un_q("vqrshrun.s64 d8, q4, #9", d8, q4, i32, 13560);
   6805     TESTINSN_un_q("vqrshrun.s64 d9, q12, #11", d9, q12, i32, 98710);
   6806 
   6807     printf("---- VRSHRN ----\n");
   6808     TESTINSN_un("vrshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657);
   6809     TESTINSN_un("vrshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3);
   6810     TESTINSN_un("vrshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa);
   6811     TESTINSN_un("vrshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713);
   6812     TESTINSN_un("vrshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3);
   6813     TESTINSN_un("vrshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff);
   6814     TESTINSN_un("vrshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa);
   6815     TESTINSN_un("vrshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc);
   6816     TESTINSN_un("vrshrn.i16 d8, q12, #3", d8, q12, i32, 0x713);
   6817     TESTINSN_un("vrshrn.i16 d9, q2, #7", d9, q2, i32, 0x713);
   6818     TESTINSN_un("vrshrn.i32 d10, q13, #2", d10, q13, i32, 0x713);
   6819     TESTINSN_un("vrshrn.i32 d15, q11, #1", d15, q11, i32, 0x3);
   6820     TESTINSN_un("vrshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa);
   6821     TESTINSN_un("vrshrn.i32 d12, q0, #6", d12, q0, i32, 0xf);
   6822     TESTINSN_un("vrshrn.i32 d13, q13, #2", d13, q13, i32, -1);
   6823 
   6824     printf("---- VSHL (immediate) ----\n");
   6825     TESTINSN_un("vshl.i64 d0, d1, #1", d0, d1, i32, 24);
   6826     TESTINSN_un("vshl.i64 d5, d2, #1", d5, d2, i32, (1 << 30));
   6827     TESTINSN_un("vshl.i64 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
   6828     TESTINSN_un("vshl.i64 d11, d2, #12", d11, d2, i32, -1);
   6829     TESTINSN_un("vshl.i64 d15, d12, #63", d15, d12, i32, 5);
   6830     TESTINSN_un("vshl.i64 d5, d12, #62", d5, d12, i32, (1 << 31) + 1);
   6831     TESTINSN_un("vshl.i32 d0, d1, #1", d0, d1, i32, 24);
   6832     TESTINSN_un("vshl.i32 d5, d2, #1", d5, d2, i32, (1 << 30));
   6833     TESTINSN_un("vshl.i32 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
   6834     TESTINSN_un("vshl.i32 d11, d2, #12", d11, d2, i32, -1);
   6835     TESTINSN_un("vshl.i32 d15, d12, #20", d15, d12, i32, 5);
   6836     TESTINSN_un("vshl.i32 d5, d12, #30", d5, d12, i32, (1 << 31) + 1);
   6837     TESTINSN_un("vshl.i16 d0, d1, #1", d0, d1, i16, 24);
   6838     TESTINSN_un("vshl.i16 d5, d2, #1", d5, d2, i32, (1 << 30));
   6839     TESTINSN_un("vshl.i16 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
   6840     TESTINSN_un("vshl.i16 d11, d2, #12", d11, d2, i16, -1);
   6841     TESTINSN_un("vshl.i16 d15, d12, #3", d15, d12, i16, 5);
   6842     TESTINSN_un("vshl.i16 d5, d12, #14", d5, d12, i32, (1 << 31) + 1);
   6843     TESTINSN_un("vshl.i8 d0, d1, #1", d0, d1, i8, 24);
   6844     TESTINSN_un("vshl.i8 d5, d2, #1", d5, d2, i32, (1 << 30));
   6845     TESTINSN_un("vshl.i8 d9, d12, #2", d9, d12, i32, (1 << 31) + 2);
   6846     TESTINSN_un("vshl.i8 d11, d2, #7", d11, d2, i8, -1);
   6847     TESTINSN_un("vshl.i8 d15, d12, #3", d15, d12, i8, 5);
   6848     TESTINSN_un("vshl.i8 d5, d12, #6", d5, d12, i32, (1 << 31) + 1);
   6849 
   6850     printf("---- VNEG ----\n");
   6851     TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0x73);
   6852     TESTINSN_un("vneg.s16 d15, d4", d15, d4, i32, 0x73);
   6853     TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0x73);
   6854     TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0xfe);
   6855     TESTINSN_un("vneg.s16 d31, d4", d31, d4, i32, 0xef);
   6856     TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0xde);
   6857     TESTINSN_un("vneg.s32 d0, d1", d0, d1, i16, 0xfe0a);
   6858     TESTINSN_un("vneg.s16 d15, d4", d15, d4, i16, 0xef0b);
   6859     TESTINSN_un("vneg.s8 d8, d7", d8, d7, i16, 0xde0c);
   6860 
   6861     printf("---- VQNEG ----\n");
   6862     TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0x73);
   6863     TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 1 << 31);
   6864     TESTINSN_un_q("vqneg.s16 d0, d1", d0, d1, i32, 1 << 31);
   6865     TESTINSN_un_q("vqneg.s8 d0, d1", d0, d1, i32, 1 << 31);
   6866     TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i32, 0x73);
   6867     TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0x73);
   6868     TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0xfe);
   6869     TESTINSN_un_q("vqneg.s16 d31, d4", d31, d4, i32, 0xef);
   6870     TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0xde);
   6871     TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i16, 0xfe0a);
   6872     TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i16, 0xef0b);
   6873     TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i16, 0xde0c);
   6874 
   6875     printf("---- VREV ----\n");
   6876     TESTINSN_un("vrev64.8 d0, d1", d0, d1, i32, 0xaabbccdd);
   6877     TESTINSN_un("vrev64.16 d10, d31", d10, d31, i32, 0xaabbccdd);
   6878     TESTINSN_un("vrev64.32 d1, d14", d1, d14, i32, 0xaabbccdd);
   6879     TESTINSN_un("vrev32.8 d0, d1", d0, d1, i32, 0xaabbccdd);
   6880     TESTINSN_un("vrev32.16 d30, d15", d30, d15, i32, 0xaabbccdd);
   6881     TESTINSN_un("vrev16.8 d0, d1", d0, d1, i32, 0xaabbccdd);
   6882 
   6883     printf("---- VTBL ----\n");
   6884     TESTINSN_tbl_1("vtbl.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678);
   6885     TESTINSN_tbl_1("vtbl.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678);
   6886     TESTINSN_tbl_1("vtbl.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678);
   6887     TESTINSN_tbl_1("vtbl.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678);
   6888     TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678);
   6889     TESTINSN_tbl_1("vtbl.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678);
   6890     TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678);
   6891     TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678);
   6892     TESTINSN_tbl_2("vtbl.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6893     TESTINSN_tbl_2("vtbl.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4);
   6894     TESTINSN_tbl_2("vtbl.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4);
   6895     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6896     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6897     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6898     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6899     TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6900     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6901     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6902     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6903     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6904     TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6905     TESTINSN_tbl_3("vtbl.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6906     TESTINSN_tbl_3("vtbl.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd);
   6907     TESTINSN_tbl_3("vtbl.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd);
   6908     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6909     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6910     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6911     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6912     TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6913     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6914     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6915     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6916     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6917     TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6918     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);
   6919     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);
   6920     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);
   6921     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);
   6922     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);
   6923     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);
   6924     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);
   6925     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);
   6926     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);
   6927     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);
   6928     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);
   6929     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);
   6930     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);
   6931 
   6932     printf("---- VTBX ----\n");
   6933     TESTINSN_tbl_1("vtbx.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678);
   6934     TESTINSN_tbl_1("vtbx.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678);
   6935     TESTINSN_tbl_1("vtbx.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678);
   6936     TESTINSN_tbl_1("vtbx.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678);
   6937     TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678);
   6938     TESTINSN_tbl_1("vtbx.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678);
   6939     TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678);
   6940     TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678);
   6941     TESTINSN_tbl_2("vtbx.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6942     TESTINSN_tbl_2("vtbx.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4);
   6943     TESTINSN_tbl_2("vtbx.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4);
   6944     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6945     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6946     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6947     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6948     TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4);
   6949     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6950     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6951     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6952     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6953     TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4);
   6954     TESTINSN_tbl_3("vtbx.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6955     TESTINSN_tbl_3("vtbx.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd);
   6956     TESTINSN_tbl_3("vtbx.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd);
   6957     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6958     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6959     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6960     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6961     TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd);
   6962     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6963     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6964     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6965     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6966     TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd);
   6967     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);
   6968     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);
   6969     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);
   6970     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);
   6971     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);
   6972     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);
   6973     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);
   6974     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);
   6975     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);
   6976     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);
   6977     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);
   6978     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);
   6979     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);
   6980 
   6981     printf("---- VPMAX (integer) ----\n");
   6982     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   6983     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
   6984     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   6985     TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
   6986     TESTINSN_bin("vpmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   6987     TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   6988     TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   6989     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   6990     TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   6991     TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   6992     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   6993     TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   6994     TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   6995     TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   6996     TESTINSN_bin("vpmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   6997     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   6998     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
   6999     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   7000     TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
   7001     TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120);
   7002     TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   7003     TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   7004     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   7005     TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   7006     TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   7007     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   7008     TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   7009     TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   7010     TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   7011     TESTINSN_bin("vpmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   7012 
   7013     printf("---- VPMIN (integer) ----\n");
   7014     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121);
   7015     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121);
   7016     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   7017     TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
   7018     TESTINSN_bin("vpmin.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120);
   7019     TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
   7020     TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   7021     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   7022     TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
   7023     TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   7024     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   7025     TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
   7026     TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   7027     TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   7028     TESTINSN_bin("vpmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   7029     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120);
   7030     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120);
   7031     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140);
   7032     TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120);
   7033     TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120);
   7034     TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   7035     TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   7036     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
   7037     TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   7038     TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   7039     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
   7040     TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   7041     TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   7042     TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
   7043     TESTINSN_bin("vpmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120);
   7044 
   7045     printf("---- VQRDMULH ----\n");
   7046     TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120);
   7047     TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120);
   7048     TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120);
   7049     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   7050     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   7051     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
   7052     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12);
   7053     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   7054     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   7055     TESTINSN_bin_q("vqrdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120);
   7056     TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31);
   7057     TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, (1 << 31) + 1);
   7058     TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31);
   7059     TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30);
   7060 
   7061     printf("---- VQRDMULH (by scalar) ----\n");
   7062     TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120);
   7063     TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120);
   7064     TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120);
   7065     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
   7066     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   7067     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
   7068     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12);
   7069     TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
   7070     TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
   7071     TESTINSN_bin_q("vqrdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120);
   7072     TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31);
   7073     TESTINSN_bin_q("vqrdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
   7074     TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31);
   7075     TESTINSN_bin_q("vqrdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30);
   7076 
   7077     printf("---- VADD (fp) ----\n");
   7078     TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7079     TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7080     TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7081     TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7082     TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7083     TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7084     TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7085     TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7086     TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7087     TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7088     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7089     TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7090     TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7091     TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7092     TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7093     TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7094     TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7095     TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7096     TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7097     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7098     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7099     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7100     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7101     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7102     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7103     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7104     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7105     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7106     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7107     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7108     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7109     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7110     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7111     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7112     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7113     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7114     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7115     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7116     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7117     TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7118 
   7119     printf("---- VSUB (fp) ----\n");
   7120     TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7121     TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7122     TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7123     TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7124     TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7125     TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   7126     TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   7127     TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7128     TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7129     TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7130     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7131     TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7132     TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7133     TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7134     TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7135     TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7136     TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7137     TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7138     TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7139     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7140     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7141     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7142     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7143     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7144     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7145     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7146     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7147     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7148     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7149     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7150     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7151     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7152     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7153     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7154     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7155     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7156     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7157     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7158     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7159     TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7160 
   7161     printf("---- VMUL (fp) ----\n");
   7162     TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7163     TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7164     TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7165     TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7166     TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7167     TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   7168     TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   7169     TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7170     TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7171     TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7172     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7173     TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7174     TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7175     TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7176     TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7177     TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7178     TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7179     TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7180     TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7181     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7182     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7183     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7184     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7185     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7186     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7187     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7188     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7189     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7190     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7191     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7192     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7193     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7194     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7195     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7196     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7197     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7198     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7199     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7200     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7201     TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7202 
   7203     printf("---- VMLA (fp) ----\n");
   7204     TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7205     TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7206     TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7207     TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7208     TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7209     TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   7210     TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   7211     TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7212     TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7213     TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7214     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7215     TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7216     TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7217     TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7218     TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7219     TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7220     TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7221     TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7222     TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7223     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7224     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7225     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7226     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7227     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7228     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7229     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7230     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7231     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7232     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7233     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7234     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7235     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7236     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7237     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7238     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7239     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7240     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7241     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7242     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7243     TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7244 
   7245     printf("---- VMLA (fp by scalar) ----\n");
   7246     TESTINSN_bin_f("vmla.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120));
   7247     TESTINSN_bin_f("vmla.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120));
   7248     TESTINSN_bin_f("vmla.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   7249     TESTINSN_bin_f("vmla.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   7250     TESTINSN_bin_f("vmla.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   7251     TESTINSN_bin_f("vmla.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19));
   7252     TESTINSN_bin_f("vmla.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11));
   7253     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7254     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7255     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7256     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7257     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7258     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7259     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7260     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7261     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7262     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7263     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7264     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7265     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7266     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7267     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7268     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7269     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7270     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7271     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7272     TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7273 
   7274     printf("---- VMLS (fp) ----\n");
   7275     TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7276     TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7277     TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7278     TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7279     TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7280     TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   7281     TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   7282     TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7283     TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7284     TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7285     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7286     TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7287     TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7288     TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7289     TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7290     TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7291     TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7292     TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7293     TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7294     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7295     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7296     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7297     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7298     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7299     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7300     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7301     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7302     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7303     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7304     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7305     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7306     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7307     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7308     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7309     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7310     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7311     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7312     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7313     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7314     TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7315 
   7316     printf("---- VMLS (fp by scalar) ----\n");
   7317     TESTINSN_bin_f("vmls.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120));
   7318     TESTINSN_bin_f("vmls.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120));
   7319     TESTINSN_bin_f("vmls.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
   7320     TESTINSN_bin_f("vmls.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12);
   7321     TESTINSN_bin_f("vmls.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
   7322     TESTINSN_bin_f("vmls.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19));
   7323     TESTINSN_bin_f("vmls.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11));
   7324     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7325     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7326     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7327     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7328     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7329     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7330     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7331     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7332     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7333     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7334     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7335     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7336     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7337     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7338     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7339     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7340     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7341     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7342     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7343     TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7344 
   7345     printf("---- VABD (fp) ----\n");
   7346     TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7347     TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7348     TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7349     TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7350     TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7351     TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   7352     TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   7353     TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7354     TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7355     TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7356     TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7357     TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7358     TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7359     TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7360     TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7361     TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7362     TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7363     TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7364     TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7365     TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7366 
   7367     printf("---- VPADD (fp) ----\n");
   7368     TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7369     TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7370     TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7371     TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7372     TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7373     TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   7374     TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   7375     TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7376     TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7377     TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7378     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7379     TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7380     TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7381     TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7382     TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7383     TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7384     TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7385     TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7386     TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7387     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7388     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7389     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7390     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7391     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7392     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7393     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7394     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7395     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7396     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7397     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7398     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7399     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7400     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7401     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7402     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7403     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7404     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7405     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7406     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7407     TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7408 
   7409     printf("---- VCVT (integer <-> fp) ----\n");
   7410     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(3.2));
   7411     TESTINSN_un("vcvt.u32.f32 d10, d11", d10, d11, i32, f2u(3e22));
   7412     TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(3e9));
   7413     TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   7414     TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   7415     TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   7416     TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   7417     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(3.2));
   7418     TESTINSN_un("vcvt.s32.f32 d20, d21", d20, d21, i32, f2u(3e22));
   7419     TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(3e9));
   7420     TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   7421     TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   7422     TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   7423     TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   7424     TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, 7);
   7425     TESTINSN_un("vcvt.f32.u32 d10, d11", d10, d11, i32, 1 << 31);
   7426     TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   7427     TESTINSN_un("vcvt.f32.u32 d24, d26", d24, d26, i32, (1U << 31) - 1);
   7428     TESTINSN_un("vcvt.f32.u32 d0, d14", d0, d14, i32, 0x30a0bcef);
   7429     TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, 7);
   7430     TESTINSN_un("vcvt.f32.s32 d30, d31", d30, d31, i32, 1 << 31);
   7431     TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   7432     TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   7433     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(NAN));
   7434     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(0.0));
   7435     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   7436     TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   7437     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(NAN));
   7438     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(0.0));
   7439     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   7440     TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   7441 
   7442     printf("---- VCVT (fixed <-> fp) ----\n");
   7443     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(3.2));
   7444     TESTINSN_un("vcvt.u32.f32 d10, d11, #1", d10, d11, i32, f2u(3e22));
   7445     TESTINSN_un("vcvt.u32.f32 d15, d4, #32", d15, d4, i32, f2u(3e9));
   7446     TESTINSN_un("vcvt.u32.f32 d15, d4, #7", d15, d4, i32, f2u(-0.5));
   7447     TESTINSN_un("vcvt.u32.f32 d15, d4, #4", d15, d4, i32, f2u(-7.1));
   7448     TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   7449     TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   7450     TESTINSN_un("vcvt.s32.f32 d0, d1, #5", d0, d1, i32, f2u(3.2));
   7451     TESTINSN_un("vcvt.s32.f32 d20, d21, #1", d20, d21, i32, f2u(3e22));
   7452     TESTINSN_un("vcvt.s32.f32 d15, d4, #8", d15, d4, i32, f2u(3e9));
   7453     TESTINSN_un("vcvt.s32.f32 d15, d4, #2", d15, d4, i32, f2u(-0.5));
   7454     TESTINSN_un("vcvt.s32.f32 d15, d4, #1", d15, d4, i32, f2u(-7.1));
   7455     TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   7456     TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   7457     TESTINSN_un("vcvt.f32.u32 d0, d1, #5", d0, d1, i32, 7);
   7458     TESTINSN_un("vcvt.f32.u32 d10, d11, #9", d10, d11, i32, 1 << 31);
   7459     TESTINSN_un("vcvt.f32.u32 d0, d1, #4", d0, d1, i32, (1U << 31) + 1);
   7460     TESTINSN_un("vcvt.f32.u32 d24, d26, #6", d24, d26, i32, (1U << 31) - 1);
   7461     TESTINSN_un("vcvt.f32.u32 d0, d14, #5", d0, d14, i32, 0x30a0bcef);
   7462     TESTINSN_un("vcvt.f32.s32 d0, d1, #12", d0, d1, i32, 7);
   7463     TESTINSN_un("vcvt.f32.s32 d30, d31, #8", d30, d31, i32, 1 << 31);
   7464     TESTINSN_un("vcvt.f32.s32 d0, d1, #1", d0, d1, i32, (1U << 31) + 1);
   7465     TESTINSN_un("vcvt.f32.s32 d0, d1, #6", d0, d1, i32, (1U << 31) - 1);
   7466     TESTINSN_un("vcvt.f32.s32 d0, d14, #2", d0, d14, i32, 0x30a0bcef);
   7467     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN));
   7468     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0));
   7469     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY));
   7470     TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY));
   7471     TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN));
   7472     TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0));
   7473     TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY));
   7474     TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY));
   7475 
   7476     printf("---- VMAX (fp) ----\n");
   7477     TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7478     TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7479     TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7480     TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7481     TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7482     TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7483     TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7484     TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7485     TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7486     TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7487     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7488     TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7489     TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7490     TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7491     TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7492     TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7493     TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7494     TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7495     TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7496     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7497     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   7498     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   7499     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   7500     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   7501     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   7502     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   7503     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7504     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7505     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7506     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7507     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7508     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7509     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7510     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7511     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7512     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7513     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7514     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7515     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7516     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7517     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7518     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7519     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7520     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7521     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7522     TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7523 
   7524     printf("---- VMIN (fp) ----\n");
   7525     TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7526     TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7527     TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7528     TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7529     TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7530     TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7531     TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7532     TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7533     TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7534     TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7535     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7536     TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7537     TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7538     TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7539     TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7540     TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7541     TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7542     TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7543     TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7544     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7545     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   7546     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   7547     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   7548     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   7549     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   7550     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   7551     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7552     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7553     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7554     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7555     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7556     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7557     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7558     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7559     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7560     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7561     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7562     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7563     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7564     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7565     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7566     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7567     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7568     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7569     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7570     TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7571 
   7572     printf("---- VPMAX (fp) ----\n");
   7573     TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7574     TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7575     TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7576     TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7577     TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7578     TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7579     TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7580     TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7581     TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7582     TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7583     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7584     TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7585     TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7586     TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7587     TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7588     TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7589     TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7590     TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7591     TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7592     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7593     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   7594     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   7595     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   7596     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   7597     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   7598     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   7599     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7600     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7601     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7602     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7603     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7604     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7605     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7606     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7607     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7608     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7609     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7610     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7611     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7612     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7613     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7614     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7615     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7616     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7617     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7618     TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7619 
   7620     printf("---- VPMIN (fp) ----\n");
   7621     TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7622     TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7623     TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7624     TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7625     TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7626     TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7627     TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7628     TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7629     TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7630     TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7631     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7632     TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7633     TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7634     TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7635     TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7636     TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7637     TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7638     TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7639     TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7640     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7641     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   7642     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   7643     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   7644     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   7645     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   7646     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   7647     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7648     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7649     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7650     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7651     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7652     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7653     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7654     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7655     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7656     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7657     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7658     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7659     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7660     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7661     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7662     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7663     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7664     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7665     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7666     TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7667 
   7668     printf("---- VRECPE ----\n");
   7669     TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2));
   7670     TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(-653.2));
   7671     TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22));
   7672     TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9));
   7673     TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-0.5));
   7674     TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-7.1));
   7675     TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   7676     TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   7677     TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2));
   7678     TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22));
   7679     TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9));
   7680     TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   7681     TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   7682     TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   7683     TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   7684     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7);
   7685     TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31);
   7686     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   7687     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   7688     TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   7689     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7);
   7690     TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31);
   7691     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   7692     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   7693     TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   7694     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(NAN));
   7695     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(0.0));
   7696     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   7697     TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   7698 
   7699     printf("---- VRECPS ----\n");
   7700     TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7701     TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7702     TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7703     TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7704     TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7705     TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   7706     TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   7707     TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7708     TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7709     TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7710     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7711     TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7712     TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   7713     TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7714     TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7715     TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7716     TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7717     TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7718     TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7719     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7720     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7721     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7722     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7723     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7724     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7725     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7726     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7727     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7728     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7729     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7730     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7731     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7732     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7733     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7734     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7735     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7736     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7737     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7738     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7739     TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7740 
   7741     printf("---- VABS (fp) ----\n");
   7742     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2));
   7743     TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22));
   7744     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9));
   7745     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   7746     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   7747     TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   7748     TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   7749     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2));
   7750     TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22));
   7751     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9));
   7752     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   7753     TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   7754     TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   7755     TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   7756     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7);
   7757     TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31);
   7758     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   7759     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   7760     TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   7761     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7);
   7762     TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31);
   7763     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   7764     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   7765     TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   7766     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(NAN));
   7767     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(0.0));
   7768     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   7769     TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   7770 
   7771     printf("---- VCGT (fp) ----\n");
   7772     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   7773     TESTINSN_bin("vcgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   7774     TESTINSN_bin("vcgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   7775     TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7776     TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7777     TESTINSN_bin("vcgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7778     TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7779     TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7780     TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7781     TESTINSN_bin("vcgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7782     TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7783     TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7784     TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7785     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7786     TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7787     TESTINSN_bin("vcgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   7788     TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7789     TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7790     TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7791     TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7792     TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7793     TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7794     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7795     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   7796     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   7797     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   7798     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   7799     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   7800     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   7801     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7802     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7803     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7804     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7805     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7806     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7807     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7808     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7809     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7810     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7811     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7812     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7813     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7814     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7815     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7816     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7817     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7818     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7819     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7820     TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7821 
   7822     printf("---- VCGE (fp) ----\n");
   7823     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   7824     TESTINSN_bin("vcge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   7825     TESTINSN_bin("vcge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   7826     TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7827     TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7828     TESTINSN_bin("vcge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7829     TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7830     TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7831     TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7832     TESTINSN_bin("vcge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7833     TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7834     TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7835     TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7836     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7837     TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7838     TESTINSN_bin("vcge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   7839     TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7840     TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7841     TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7842     TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7843     TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7844     TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7845     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7846     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   7847     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   7848     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   7849     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   7850     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   7851     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   7852     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7853     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7854     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7855     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7856     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7857     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7858     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7859     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7860     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7861     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7862     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7863     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7864     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7865     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7866     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7867     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7868     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7869     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7870     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7871     TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7872 
   7873     printf("---- VACGT (fp) ----\n");
   7874     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   7875     TESTINSN_bin("vacgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   7876     TESTINSN_bin("vacgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   7877     TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7878     TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7879     TESTINSN_bin("vacgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7880     TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7881     TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7882     TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7883     TESTINSN_bin("vacgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7884     TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7885     TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7886     TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7887     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7888     TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7889     TESTINSN_bin("vacgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   7890     TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7891     TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7892     TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7893     TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7894     TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7895     TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7896     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7897     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   7898     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   7899     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   7900     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   7901     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   7902     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   7903     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7904     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7905     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7906     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7907     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7908     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7909     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7910     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7911     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7912     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7913     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7914     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7915     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7916     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7917     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7918     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7919     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7920     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7921     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7922     TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7923 
   7924     printf("---- VACGE (fp) ----\n");
   7925     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   7926     TESTINSN_bin("vacge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   7927     TESTINSN_bin("vacge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   7928     TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7929     TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7930     TESTINSN_bin("vacge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7931     TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7932     TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7933     TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7934     TESTINSN_bin("vacge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7935     TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7936     TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7937     TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7938     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7939     TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7940     TESTINSN_bin("vacge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   7941     TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7942     TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7943     TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7944     TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7945     TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7946     TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7947     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7948     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   7949     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   7950     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   7951     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   7952     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   7953     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   7954     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   7955     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   7956     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   7957     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   7958     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   7959     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   7960     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   7961     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   7962     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   7963     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   7964     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   7965     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   7966     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   7967     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   7968     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   7969     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   7970     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   7971     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   7972     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   7973     TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   7974 
   7975     printf("---- VCEQ (fp) ----\n");
   7976     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5));
   7977     TESTINSN_bin("vceq.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52));
   7978     TESTINSN_bin("vceq.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45));
   7979     TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   7980     TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   7981     TESTINSN_bin("vceq.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   7982     TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   7983     TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   7984     TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004));
   7985     TESTINSN_bin("vceq.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2));
   7986     TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   7987     TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   7988     TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   7989     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   7990     TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   7991     TESTINSN_bin("vceq.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109));
   7992     TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   7993     TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   7994     TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   7995     TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   7996     TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   7997     TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   7998     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   7999     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0));
   8000     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0));
   8001     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0));
   8002     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0));
   8003     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0));
   8004     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0));
   8005     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   8006     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   8007     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   8008     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   8009     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   8010     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   8011     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   8012     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   8013     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   8014     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   8015     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   8016     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   8017     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   8018     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   8019     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   8020     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   8021     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   8022     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   8023     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   8024     TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   8025 
   8026     printf("---- VCEQ (fp) #0 ----\n");
   8027     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   8028     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x1);
   8029     TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   8030     TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   8031     TESTINSN_un("vceq.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   8032     TESTINSN_un("vceq.f32 d30, d15, #0", d30, d15, i32, 0x0);
   8033     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   8034     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   8035     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   8036     TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   8037 
   8038     printf("---- VCGT (fp) #0 ----\n");
   8039     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   8040     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x1);
   8041     TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   8042     TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   8043     TESTINSN_un("vcgt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   8044     TESTINSN_un("vcgt.f32 d30, d15, #0", d30, d15, i32, 0x0);
   8045     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   8046     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   8047     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   8048     TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   8049 
   8050     printf("---- VCLT (fp) #0 ----\n");
   8051     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   8052     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x1);
   8053     TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   8054     TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   8055     TESTINSN_un("vclt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   8056     TESTINSN_un("vclt.f32 d30, d15, #0", d30, d15, i32, 0x0);
   8057     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   8058     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   8059     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   8060     TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   8061 
   8062     printf("---- VCGE (fp) #0 ----\n");
   8063     TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   8064     TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x1);
   8065     TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   8066     TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   8067     TESTINSN_un("vcge.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   8068     TESTINSN_un("vcge.f32 d30, d15, #0", d30, d15, i32, 0x0);
   8069     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   8070     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   8071     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   8072     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   8073 
   8074     printf("---- VCLE (fp) #0 ----\n");
   8075     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x01000000);
   8076     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x1);
   8077     TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, 1 << 31);
   8078     TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, f2u(23.04));
   8079     TESTINSN_un("vcle.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04));
   8080     TESTINSN_un("vcle.f32 d30, d15, #0", d30, d15, i32, 0x0);
   8081     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN));
   8082     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0));
   8083     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY));
   8084     TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY));
   8085 
   8086     printf("---- VNEG (fp) ----\n");
   8087     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x01000000);
   8088     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x1);
   8089     TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, 1 << 31);
   8090     TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, f2u(23.04));
   8091     TESTINSN_un("vneg.f32 d2, d31", d2, d31, i32, f2u(-23.04));
   8092     TESTINSN_un("vneg.f32 d30, d15", d30, d15, i32, 0x0);
   8093     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(NAN));
   8094     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(0.0));
   8095     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   8096     TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   8097 
   8098     printf("---- VRSQRTS ----\n");
   8099     TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687));
   8100     TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346));
   8101     TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476));
   8102     TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065));
   8103     TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76));
   8104     TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346));
   8105     TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089));
   8106     TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065));
   8107     TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009));
   8108     TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575));
   8109     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107));
   8110     TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6));
   8111     TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109));
   8112     TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752));
   8113     TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47));
   8114     TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676));
   8115     TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876));
   8116     TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245));
   8117     TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076));
   8118     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797));
   8119     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN));
   8120     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0));
   8121     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0));
   8122     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
   8123     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
   8124     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN));
   8125     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0));
   8126     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0));
   8127     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
   8128     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
   8129     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
   8130     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
   8131     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
   8132     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
   8133     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
   8134     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
   8135     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
   8136     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
   8137     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
   8138     TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
   8139 
   8140     printf("---- VRSQRTE (fp) ----\n");
   8141     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2));
   8142     TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22));
   8143     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9));
   8144     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   8145     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   8146     TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   8147     TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   8148     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2));
   8149     TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22));
   8150     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9));
   8151     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5));
   8152     TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1));
   8153     TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0));
   8154     TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0));
   8155     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7);
   8156     TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31);
   8157     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   8158     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   8159     TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   8160     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7);
   8161     TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31);
   8162     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1);
   8163     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1);
   8164     TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef);
   8165     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(NAN));
   8166     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(0.0));
   8167     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(INFINITY));
   8168     TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(-INFINITY));
   8169 
   8170     return 0;
   8171 }
   8172