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