Home | History | Annotate | Download | only in arm
      1 
      2 /* Can be compiled both as ARM or Thumb using
      3    gcc -Wall -g -O0 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -m{arm,thumb} -o vfp vfp.c
      4 */
      5 
      6 #include <stdio.h>
      7 #include <string.h>
      8 #include <math.h>
      9 
     10 #ifndef __thumb__
     11 // ARM
     12 #define MOVE_to_FPSCR_from_R4 \
     13       ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t"
     14 #define MOVE_to_R4_from_FPSCR \
     15       ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t"
     16 #endif
     17 
     18 #ifdef __thumb__
     19 // Thumb
     20 #define MOVE_to_FPSCR_from_R4 \
     21       ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t"
     22 #define MOVE_to_R4_from_FPSCR \
     23       ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t"
     24 #endif
     25 
     26 static inline unsigned int f2u(float x) {
     27     union {
     28         float f;
     29         unsigned int u;
     30     } cvt;
     31     cvt.f = x;
     32     return cvt.u;
     33 }
     34 
     35 static inline unsigned int f2u0(double x) {
     36     union {
     37         double f;
     38         unsigned int u[2];
     39     } cvt;
     40     cvt.f = x;
     41     return cvt.u[0];
     42 }
     43 
     44 static inline unsigned int f2u1(double x) {
     45     union {
     46         double f;
     47         unsigned int u[2];
     48     } cvt;
     49     cvt.f = x;
     50     return cvt.u[1];
     51 }
     52 
     53 /* test macros to generate and output the result of a single instruction */
     54 
     55 const unsigned int mem[] = {
     56     0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d,
     57     0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
     58     0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
     59     0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
     60 };
     61 
     62 #define TESTINSN_vmovf32_imm(instruction, DD, imm) \
     63 { \
     64   unsigned int out[1]; \
     65 \
     66   __asm__ volatile( \
     67       instruction ", #"#imm"\n\t"\
     68       "vstmia %0, {" #DD "}\n\t" \
     69       : \
     70       : "r" (out) \
     71       : #DD, "memory" \
     72       ); \
     73   printf("%s, #" #imm " :: Sd 0x%08x\n", \
     74       instruction, out[0]); \
     75 }
     76 
     77 #define TESTINSN_vmov_core_single(instruction, RN, SD, SDval) \
     78 { \
     79   unsigned int out[1]; \
     80 \
     81   printf(#SD" 0x%08x\t",  SDval); \
     82   __asm__ volatile( \
     83       "mov " #RN ", #0\n\t" \
     84       "vmov.f32 " #SD ", %1\n\t" \
     85       instruction "\n\t" \
     86       "str " #RN ", [%0]\n\t" \
     87       : \
     88       : "r" (out), "r" (SDval) \
     89       : #SD, #RN, "memory" \
     90       ); \
     91   printf("%s :: "#RN" 0x%08x\n", \
     92       instruction, out[0]); \
     93 }
     94 
     95 #define TESTINSN_vmov_single_core(instruction, SD, RN, RNval) \
     96 { \
     97   unsigned int out[1]; \
     98 \
     99   printf(#RN" 0x%08x\t",  RNval); \
    100   __asm__ volatile( \
    101       "mov " #RN ", %1\n\t" \
    102       "vmov " #SD ", #0x40000000\n\t" \
    103       instruction "\n\t"\
    104       "vstmia %0, {" #SD "}\n\t" \
    105       : \
    106       : "r" (out), "r" (RNval) \
    107       : #SD, #RN, "memory" \
    108       ); \
    109   printf("%s :: "#SD" 0x%08x\n", \
    110       instruction, out[0]); \
    111 }
    112 
    113 #define TESTINSN_vmov_2core_2single(instruction, RD1, RD2, SN, SM, SNval, SMval) \
    114 { \
    115   unsigned int out[2]; \
    116 \
    117   printf("\t\t\t "#SN" 0x%08x "#SM" 0x%08x\n",  SNval, SMval); \
    118   __asm__ volatile( \
    119       "vmov " #SN ", %1\n\t" \
    120       "vmov " #SM ", %2\n\t" \
    121       "mov " #RD1 ", #0x4\n\t" \
    122       "mov " #RD2 ", #0x4\n\t" \
    123       instruction "\n\t"\
    124       "str " #RD1 ", [%0]\n\t" \
    125       "str " #RD2 ", [%0, #+4]\n\t" \
    126       : \
    127       : "r" (out), "r" (SNval), "r" (SMval) \
    128       : #RD1, #RD2, #SN, #SM, "memory" \
    129       ); \
    130   printf("%s :: "#RD1" 0x%08x "#RD2" 0x%08x\n", \
    131       instruction, out[0], out[1]); \
    132 }
    133 
    134 #define TESTINSN_vmov_2single_2core(instruction, SD1, SD2, RN, RM, RNval, RMval) \
    135 { \
    136   unsigned int out[2]; \
    137 \
    138   printf("\t\t\t "#RN" 0x%08x "#RM" 0x%08x\n",  RNval, RMval); \
    139   __asm__ volatile( \
    140       "mov " #RN ", %1\n\t" \
    141       "mov " #RM ", %2\n\t" \
    142       "vmov " #SD1 ", #0x40000000\n\t" \
    143       "vmov " #SD2 ", #0x40000000\n\t" \
    144       instruction "\n\t"\
    145       "vstmia %0, {" #SD1 ", " #SD2 " }\n\t" \
    146       : \
    147       : "r" (out), "r" (RNval), "r" (RMval) \
    148       : #SD1, #SD2, #RN, #RM, "memory" \
    149       ); \
    150   printf("%s :: "#SD1" 0x%08x "#SD2" 0x%08x\n", \
    151       instruction, out[0], out[1]); \
    152 }
    153 
    154 #define TESTINSN_vmov_double_2core(instruction, DD, RN, RM, RNval, RMval) \
    155 { \
    156   unsigned int out[2]; \
    157 \
    158   printf(#RN" 0x%08x "#RM" 0x%08x\t",  RNval, RMval); \
    159   __asm__ volatile( \
    160       "mov " #RN ", %1\n\t" \
    161       "mov " #RM ", %2\n\t" \
    162       "vmov.i8 " #DD ", #0x55\n\t" \
    163       instruction "\n\t"\
    164       "vstmia %0, {" #DD "}\n\t" \
    165       : \
    166       : "r" (out), "r" (RNval), "r" (RMval) \
    167       : #DD, #RN, #RM, "memory" \
    168       ); \
    169   printf("%s :: "#DD" 0x%08x 0x%08x\n", \
    170       instruction, out[0], out[1]); \
    171 }
    172 
    173 #define TESTINSN_vmov_2core_double(instruction, RD1, RD2, DN, DNval0, DNval1) \
    174 { \
    175   unsigned int out[2]; \
    176 \
    177   printf(#DN" 0x%08x 0x%08x\t",  DNval0, DNval1); \
    178   __asm__ volatile( \
    179       "mov " #RD1 ", #55\n\t" \
    180       "mov " #RD2 ", #55\n\t" \
    181       "vmov " #DN ", %1, %2\n\t" \
    182       instruction "\n\t" \
    183       "str " #RD1 ", [%0]\n\t" \
    184       "str " #RD2 ", [%0, #+4]\n\t" \
    185       : \
    186       : "r" (out), "r" (DNval0), "r" (DNval1) \
    187       : #DN, #RD1, #RD2, "memory" \
    188       ); \
    189   printf("%s :: "#RD1" 0x%08x "#RD2" 0x%08x\n", \
    190       instruction, out[0], out[1]); \
    191 }
    192 
    193 #define TESTINSN_un_f64(instruction, DD, DM, DMtype, DMval0, DMval1) \
    194 { \
    195   unsigned int out[2]; \
    196 \
    197   __asm__ volatile( \
    198       "vmov.i8 " #DD ", #0x55" "\n\t" \
    199       "vmov " #DM ", %1, %2 \n\t" \
    200       instruction "\n\t" \
    201       "vstmia %0, {" #DD "}\n\t" \
    202       : \
    203       : "r" (out), "r" (DMval0), "r" (DMval1) \
    204       : #DD, #DM, "memory" \
    205       ); \
    206   printf("%s :: Dd 0x%08x 0x%08x  Dm (" #DMtype ")0x%08x %08x\n", \
    207       instruction, out[1], out[0], DMval1, DMval0); \
    208 }
    209 
    210 #define TESTINSN_un_f32(instruction, SD, SM, SMtype, SMval) \
    211 { \
    212   unsigned int out[1]; \
    213 \
    214   __asm__ volatile( \
    215       "vmov.f32 " #SM ", %1\n\t" \
    216       "vmov.f32 " #SD ", %2\n\t" \
    217       instruction "\n\t" \
    218       "vstmia %0, {" #SD "}\n\t" \
    219       : \
    220       : "r" (out), "r" (SMval), "r" (0xffffaaaa) \
    221       : #SD, #SM, "memory" \
    222       ); \
    223   printf("%s :: Sd 0x%08x Sm (" #SMtype ")0x%08x\n", \
    224       instruction, out[0], SMval); \
    225 }
    226 
    227 #define TESTINSN_un_cvt_ds(instruction, DD, SM, SMval) \
    228 { \
    229   unsigned int out[2]; \
    230 \
    231   __asm__ volatile( \
    232       "vmov " #SM ", %1\n\t" \
    233       "vmov " #DD ", %2, %2\n\t" \
    234       instruction "\n\t" \
    235       "vstmia %0, {" #DD "}\n\t" \
    236       : \
    237       : "r" (out), "r" (SMval), "r" (0xffffaaaa) \
    238       : #DD, #SM, "memory" \
    239       ); \
    240   printf("%s :: Dd 0x%08x 0x%08x  Sm 0x%08x\n", \
    241       instruction, out[1], out[0], SMval); \
    242 }
    243 
    244 #define TESTINSN_un_cvt_sd(instruction, SD, DM, DMval0, DMval1) \
    245 { \
    246   unsigned int out[1]; \
    247 \
    248   __asm__ volatile( \
    249       "vmov " #SD ", %3\n\t" \
    250       "vmov " #DM ", %1, %2\n\t" \
    251       instruction "\n\t" \
    252       "vstmia %0, {" #SD "}\n\t" \
    253       : \
    254       : "r" (out), "r" (DMval0), "r" (DMval1), "r" (0xffffaaaa) \
    255       : #SD, #DM, "memory" \
    256       ); \
    257   printf("%s :: Sd 0x%08x  Dm 0x%08x %08x\n", \
    258       instruction, out[0], DMval1, DMval0); \
    259 }
    260 
    261 #define TESTINSN_cvt_i32_f64(instruction, SD, DM, DMval0, DMval1) \
    262 { \
    263   unsigned int out[1]; \
    264 \
    265   __asm__ volatile( \
    266       "vmov " #DM ", %1, %2\n\t" \
    267       "vmov " #SD ", %3\n\t" \
    268       instruction "\n\t" \
    269       "vstmia %0, {" #SD "}\n\t" \
    270       : \
    271       : "r" (out), "r" (DMval0), "r" (DMval1), "r" (0xffffaaaa) \
    272       : #SD, #DM, "memory" \
    273       ); \
    274  printf("%s :: Sd 0x%08x Dm 0x%08x %08x\n", \
    275       instruction, out[0], DMval1, DMval0); \
    276 }
    277 
    278 #define TESTINSN_cvt_f64_i32(instruction, DD, SM, SMval) \
    279 { \
    280   unsigned int out[2]; \
    281 \
    282   __asm__ volatile( \
    283       "vmov " #SM ", %1\n\t" \
    284       "vmov " #DD ", %2, %2\n\t" \
    285       instruction "\n\t" \
    286       "vstmia %0, {" #DD "}\n\t" \
    287       : \
    288       : "r" (out), "r" (SMval), "r" (0xfffffff0) \
    289       : #DD, #SM, "memory" \
    290       ); \
    291  printf("%s :: Dd 0x%08x %08x Sm 0x%08x\n", \
    292       instruction, out[0], out[1], SMval); \
    293 }
    294 
    295 #define TESTINSN_un_f64_q_vmrs(instruction, DD, DM, DMtype, DMval, RN) \
    296 { \
    297   unsigned int out[2]; \
    298   unsigned int fpscr; \
    299 \
    300   __asm__ volatile( \
    301       "vmov.i8 " #DD ", #0x55" "\n\t" \
    302       "mov r4, #0\n\t" \
    303       ".word 0xEEE14A10 @ vmsr FPSCR, "#RN"\n\t" \
    304       "vdup." #DMtype " " #DM ", %2\n\t" \
    305       instruction "\n\t" \
    306       "vstmia %1, {" #DD "}\n\t" \
    307       ".word 0xEEF14A10 @ vmrs "#RN", FPSCR\n\t" \
    308       "mov %0, r4" \
    309       : "=r" (fpscr) \
    310       : "r" (out), "r" (DMval) \
    311       : #DD, #DM, "memory", #RN \
    312       ); \
    313   printf("%s :: Dd 0x%08x 0x%08x  Dm (" #DMtype ")0x%08x  fpscr %08x\n", \
    314       instruction, out[1], out[0], DMval, fpscr); \
    315 }
    316 
    317 #define TESTINSN_core_to_scalar(instruction, DD, DM, DMval) \
    318 { \
    319   unsigned int out[2]; \
    320 \
    321   __asm__ volatile( \
    322       "vmov.i8 " #DD ", #0x55" "\n\t" \
    323       "mov " #DM ", %1\n\t" \
    324       instruction "\n\t" \
    325       "vstmia %0, {" #DD "}\n\t" \
    326       : \
    327       : "r" (out), "r" (DMval) \
    328       : #DD, #DM, "memory" \
    329       ); \
    330   printf("%s :: Dd 0x%08x 0x%08x  Dm 0x%08x\n", \
    331       instruction, out[1], out[0], DMval); \
    332 }
    333 
    334 #define TESTINSN_vldr_f64(instruction, DD, RN, RNval, imm) \
    335 { \
    336   unsigned int out[2]; \
    337 \
    338   __asm__ volatile( \
    339       "vmov.i8 " #DD ", #0x55" "\n\t" \
    340       "mov " #RN ", %1\n\t" \
    341       instruction "\n\t" \
    342       "vstmia %0, {" #DD "}\n\t" \
    343       : \
    344       : "r" (out), "r" (RNval) \
    345       : #DD, #RN, "memory" \
    346       ); \
    347   printf("%s :: Dd 0x%08x 0x%08x  *(int*) (Rn + shift) 0x%04x\n", \
    348       instruction, out[1], out[0], *(int*) (RNval + imm)); \
    349 }
    350 
    351 #define TESTINSN_vldr_f32(instruction, SD, RN, RNval, imm) \
    352 { \
    353   unsigned int out[1]; \
    354 \
    355   __asm__ volatile( \
    356       "vmov " #SD ", %3" "\n\t" \
    357       "mov " #RN ", %1\n\t" \
    358       instruction "\n\t" \
    359       "vstmia %0, {" #SD "}\n\t" \
    360       : \
    361       : "r" (out), "r" (RNval), "r" (imm), "r" (0xffffffaa) \
    362       : #SD, #RN, "memory" \
    363       ); \
    364   printf("%s :: Sd 0x%08x  *(int*) (Rn + shift) 0x%04x\n", \
    365       instruction, out[0], *(int*) (RNval + imm)); \
    366 }
    367 
    368 #define TESTINSN_vstr64(instruction, DD, DDval, RM, RMval, imm) \
    369 { \
    370   unsigned int out[2]; \
    371 \
    372   __asm__ volatile( \
    373       "vmov.i8 " #DD ", #" #DDval "\n\t" \
    374       "add %1, %1, #" #imm "\n\t" \
    375       "mov " #RM ", #0x55\n\t" \
    376       "str " #RM ", [%1]\n\t" \
    377       "str " #RM ", [%1, #4]\n\t" \
    378       "sub %1, %1, #" #imm "\n\t" \
    379       "mov " #RM ", %1\n\t" \
    380       instruction "\n\t" \
    381       "vstmia %0, {" #DD "}\n\t" \
    382       : \
    383       : "r" (out), "r" (RMval) \
    384       : #DD, #RM, "memory" \
    385       ); \
    386   printf("%s :: Dd 0x%08x 0x%08x  *(int*) (Rm + shift) 0x%04x\n", \
    387       instruction, out[1], out[0], *(int*) (RMval + imm)); \
    388 }
    389 
    390 #define TESTINSN_vstr32(instruction, SD, RM, RMval, imm) \
    391 { \
    392   unsigned int out[1]; \
    393 \
    394   __asm__ volatile( \
    395       "vmov " #SD ", #0xbe280000\n\t" \
    396       "mov " #RM ", #0x55\n\t" \
    397       "str " #RM ", [%1, #" #imm "]\n\t" \
    398       "mov " #RM ", %1\n\t" \
    399       instruction "\n\t" \
    400       "vstmia %0, {" #SD "}\n\t" \
    401       : \
    402       : "r" (out), "r" (RMval) \
    403       : #SD, #RM, "memory" \
    404       ); \
    405   printf("%s :: Sd 0x%08x,  *(int*) (Rm + shift) 0x%04x\n", \
    406       instruction, out[0], *(int*) (RMval + imm)); \
    407 }
    408 
    409 #define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \
    410 { \
    411   unsigned int out[2]; \
    412 \
    413   __asm__ volatile( \
    414       "mov " #QD ", #0x55" "\n\t" \
    415       "vdup." #QMtype " " #QM ", %1\n\t" \
    416       instruction "\n\t" \
    417       "str " #QD ", [%0]\n\t" \
    418       : \
    419       : "r" (out), "r" (QMval) \
    420       : #QD, #QM, "memory" \
    421       ); \
    422   printf("%s :: Rd 0x%08x  Qm (" #QMtype ")0x%08x\n", \
    423       instruction, out[0], QMval); \
    424 }
    425 
    426 #define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \
    427 { \
    428   unsigned int out[8]; \
    429 \
    430   __asm__ volatile( \
    431       "vmov.i8 " #QD1 ", #0x55" "\n\t" \
    432       "vmov.i8 " #QD2 ", #0x55" "\n\t" \
    433       "vmov.i8 " #QD3 ", #0x55" "\n\t" \
    434       "vmov.i8 " #QD4 ", #0x55" "\n\t" \
    435       instruction ", [%1]\n\t" \
    436       "mov r4, %0\n\t" \
    437       "vstmia %0!, {" #QD1 "}\n\t" \
    438       "vstmia %0!, {" #QD2 "}\n\t" \
    439       "vstmia %0!, {" #QD3 "}\n\t" \
    440       "vstmia %0!, {" #QD4 "}\n\t" \
    441       "mov %0, r4\n\t" \
    442       : \
    443       : "r" (out), "r" (mem) \
    444       : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
    445       ); \
    446   printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
    447           "0x%08x 0x%08x 0x%08x 0x%08x\n", \
    448       instruction, out[0], out[1], out[2], out[3], out[4],\
    449           out[5], out[6], out[7]); \
    450 }
    451 
    452 #define TESTINSN_VSTMIAnoWB(instruction, RN, QD, QDval) \
    453 { \
    454   unsigned int out[2]; \
    455 \
    456   __asm__ volatile( \
    457       "vmov.i8 " #QD ", " #QDval "\n\t" \
    458       "mov " #RN ", %0\n\t" \
    459       instruction "\n\t" \
    460       : \
    461       : "r" (out), "r" (mem) \
    462       : #QD, "memory", #RN \
    463       ); \
    464   printf("%s :: Result 0x%08x 0x%08x\n", \
    465       instruction, out[0], out[1]); \
    466 }
    467 
    468 #define TESTINSN_VSTMIAnoWB32(instruction, RN, SD, SDval) \
    469 { \
    470   unsigned int out[1]; \
    471 \
    472   __asm__ volatile( \
    473       "vmov " #SD ", %2\n\t" \
    474       "mov " #RN ", %0\n\t" \
    475       instruction "\n\t" \
    476       : \
    477       : "r" (out), "r" (mem), "r" (SDval) \
    478       : #SD, "memory", #RN \
    479       ); \
    480   printf("%s :: Result 0x%08x\n", \
    481       instruction, out[0]); \
    482 }
    483 
    484 #define TESTINSN_VSTMIAWB(RN, QD1, QD2) \
    485 { \
    486   unsigned int out[4]; \
    487 \
    488   __asm__ volatile( \
    489       "vmov.i8 " #QD1 ", #0xa0" "\n\t"  \
    490       "vmov.i8 " #QD2 ", #0xb1" "\n\t" \
    491       "mov " #RN ", %0\n\t" \
    492       "vstmia " #RN "!, {" #QD1 "}\n\t" \
    493       "vstmia " #RN "!, {" #QD2 "}\n\t" \
    494       : \
    495       : "r" (out), "r" (mem) \
    496       : #QD1, #QD2, "memory", #RN \
    497       ); \
    498   printf("vstmia "#RN"!, "#QD1"; vstmia "#RN"!, "#QD2" :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
    499          out[0], out[1], out[2], out[3]); \
    500 }
    501 
    502 #define TESTINSN_VSTMIAWB32(RN, SD1, SD2) \
    503 { \
    504   unsigned int out[2]; \
    505 \
    506   __asm__ volatile( \
    507       "vmov " #SD1 ", #0xbff80000" "\n\t" \
    508       "vmov " #SD2 ", #0x3fa80000" "\n\t" \
    509       "mov " #RN ", %0\n\t" \
    510       "vstmia " #RN "!, {" #SD1 "}\n\t" \
    511       "vstmia " #RN "!, {" #SD2 "}\n\t" \
    512       : \
    513       : "r" (out), "r" (mem) \
    514       : #SD1, #SD2, "memory", #RN \
    515       ); \
    516   printf("vstmia " #RN "!, "#SD1"; vstmia "#RN"!, "#SD2" :: Result 0x%08x 0x%08x\n", \
    517          out[0], out[1]); \
    518 }
    519 
    520 #define TESTINSN_VSTMDB(RN, QD1, QD2) \
    521 { \
    522     unsigned int out[4]; \
    523     long endout = (long) out + 8; \
    524 \
    525   __asm__ volatile( \
    526       "vmov.i8 " #QD1 ", #0xaa" "\n\t" \
    527       "vmov.i8 " #QD2 ", #0xbb" "\n\t" \
    528       "mov " #RN ", %0\n\t" \
    529       "vstmdb " #RN "!, {" #QD1 "}\n\t" \
    530       "vstmdb " #RN "!, {" #QD2 "}\n\t" \
    531       "mov %0, " #RN "\n\t" \
    532       : \
    533       : "r" (endout), "r" (mem) \
    534       : #QD1, #QD2, "memory", #RN \
    535       ); \
    536   printf("vstmdb " #RN "!, " #QD2 "; vstmdb " #RN "!, " #QD2 \
    537          " :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
    538          out[0], out[1], out[2], out[3]); \
    539 }
    540 
    541 #define TESTINSN_VLDMIAnoWB(instruction, RN, QD) \
    542 { \
    543   unsigned int in[2] = {0xaa0, 0xbb1}; \
    544   unsigned int out[2]; \
    545 \
    546   __asm__ volatile( \
    547       "vmov.i8 " #QD ", #0x55" "\n\t" \
    548       "mov " #RN ", %0\n\t" \
    549       instruction "\n\t" \
    550       "mov " #RN ", %1\n\t" \
    551       "vstmia " #RN ", {" #QD "}\n\t" \
    552       : \
    553       : "r" (in), "r" (out), "r" (mem) \
    554       : #QD, "memory", #RN \
    555       ); \
    556   printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
    557          instruction, out[0], out[1], out[2], out[3]); \
    558 }
    559 
    560 #define TESTINSN_VLDMIAWB(RN, QD1, QD2) \
    561 { \
    562   unsigned int in[4] = {0xaa0, 0xbb1, 0xcc2, 0xdd3}; \
    563   unsigned int out[4]; \
    564 \
    565   __asm__ volatile( \
    566       "vmov.i8 " #QD1 ", #0x55" "\n\t" \
    567       "vmov.i8 " #QD2 ", #0x55" "\n\t" \
    568       "mov " #RN ", %0\n\t" \
    569       "vldmia " #RN "!, {" #QD1 "}\n\t" \
    570       "vldmia " #RN "!, {" #QD2 "}\n\t" \
    571       "mov " #RN ", %1\n\t" \
    572       "vstmia " #RN "!, {" #QD1 "}\n\t" \
    573       "vstmia " #RN "!, {" #QD2 "}\n\t" \
    574       : \
    575       : "r" (in), "r" (out), "r" (mem) \
    576       : #QD1, #QD2, "memory", #RN \
    577       ); \
    578   printf("vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
    579          out[0], out[1], out[2], out[3]); \
    580 }
    581 
    582 #define TESTINSN_VLDMDB(RN, QD1, QD2) \
    583 { \
    584     unsigned int in[4] = {0xaa0, 0xbb1, 0xcc2, 0xdd3}; \
    585     unsigned int out[4]; \
    586     long endin = (long) in + 16; \
    587 \
    588   __asm__ volatile( \
    589       "vmov.i8 " #QD1 ", #0x55" "\n\t" \
    590       "vmov.i8 " #QD2 ", #0x55" "\n\t" \
    591       "mov " #RN ", %0\n\t" \
    592       "vldmdb " #RN "!, {" #QD1 "}\n\t" \
    593       "vldmdb " #RN "!, {" #QD2 "}\n\t" \
    594       "mov " #RN ", %1\n\t" \
    595       "vstmia " #RN "!, {" #QD1 "}\n\t" \
    596       "vstmia " #RN "!, {" #QD2 "}\n\t" \
    597       : \
    598       : "r" (endin), "r" (out), "r" (mem) \
    599       : #QD1, #QD2, "memory", #RN \
    600       ); \
    601   printf("vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
    602          out[0], out[1], out[2], out[3]); \
    603 }
    604 
    605 #define TESTINSN_VLDR(instruction, dD, rN, rNval, offset) \
    606 { \
    607   unsigned int out[2]; \
    608 \
    609   __asm__ volatile( \
    610       "vmov.i8 " #dD ", #0x55\n\t" \
    611       "mov " #rN ", %1\n\t" \
    612       instruction ", #" #offset "]\n\t" \
    613       "vstmia %0, {" #dD "}\n\t" \
    614       : \
    615       : "r" (out), "r" (rNval) \
    616       : #dD, "memory" \
    617       ); \
    618       printf("%s :: dD 0x%08x 0x%08x  rN 0x%08x\n", \
    619       instruction, out[1], out[0], rNval); \
    620 }
    621 
    622 
    623 #define TESTINSN_vpush_vpop_f32(S1, Sval1, S2, Sval2, S3, Sval3, S4, S5, S6) \
    624 { \
    625   unsigned int out[6]; \
    626 \
    627   __asm__ volatile( \
    628       "vmov "#S4", %4\n\t" \
    629       "vmov "#S5", %4\n\t" \
    630       "vmov "#S6", %4\n\t" \
    631       "vmov "#S1", %1\n\t" \
    632       "vmov "#S2", %2\n\t" \
    633       "vmov "#S3", %3\n\t" \
    634       "vpush {"#S1", "#S2"}\n\t" \
    635       "vpush {"#S3"}\n\t" \
    636       "vpop  {"#S4"}\n\t" \
    637       "vpop  {"#S5", "#S6"}\n\t" \
    638       "mov r4, %0\n\t" \
    639       "vstmia %0!, {"#S1"}\n\t" \
    640       "vstmia %0!, {"#S2"}\n\t" \
    641       "vstmia %0!, {"#S3"}\n\t" \
    642       "vstmia %0!, {"#S4"}\n\t" \
    643       "vstmia %0!, {"#S5"}\n\t" \
    644       "vstmia %0!, {"#S6"}\n\t" \
    645       "mov %0, r4\n\t" \
    646       : \
    647       : "r" (out), "r" (Sval1), "r" (Sval2), "r" (Sval3), "r" (0x55555555) \
    648       : #S1, #S2, #S3, #S4, #S5, #S6, "r4", "memory" \
    649       ); \
    650       printf(#S1" 0x%08x "#S2" 0x%08x "#S3" 0x%08x "#S4" 0x%08x "\
    651              #S5" 0x%08x "#S6" 0x%08x\n", out[0], out[1],\
    652              out[2], out[3], out[4], out[5]); \
    653 }
    654 
    655 #define TESTINSN_vpush_vpop_f64(D1, Dval10, Dval11, D2, Dval20, Dval21, D3, D4) \
    656 { \
    657   unsigned int out[8]; \
    658 \
    659   __asm__ volatile( \
    660       "vmov "#D3", %4, %4\n\t" \
    661       "vmov "#D4", %4, %4\n\t" \
    662       "vmov "#D1", %1, %2\n\t" \
    663       "vmov "#D2", %3, %4\n\t" \
    664       "vpush {"#D1", "#D2"}\n\t" \
    665       "vpop  {"#D3", "#D4"}\n\t" \
    666       "mov r4, %0\n\t" \
    667       "vstmia %0!, {"#D1"}\n\t" \
    668       "vstmia %0!, {"#D2"}\n\t" \
    669       "vstmia %0!, {"#D3"}\n\t" \
    670       "vstmia %0!, {"#D4"}\n\t" \
    671       "mov %0, r4\n\t" \
    672       : \
    673       : "r" (out), "r" (Dval10), "r" (Dval11), "r" (Dval20), "r" (Dval21), "r" (0x55555555) \
    674       : #D1, #D2, #D3, #D4, "r4", "memory" \
    675       ); \
    676       printf(#D1" 0x%08x %08x "#D2" 0x%08x %08x "#D3" 0x%08x %08x "#D4" 0x%08x %08x\n",\
    677                   out[0],out[1],    out[2],out[3],    out[4],out[5],    out[6],out[7]); \
    678 }
    679 
    680 #define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \
    681 { \
    682   unsigned int out[8]; \
    683 \
    684   memset(out, 0x55, 8 * (sizeof(unsigned int)));\
    685   __asm__ volatile( \
    686       "mov r4, %1\n\t" \
    687       "vldmia %1!, {" #QD1 "}\n\t" \
    688       "vldmia %1!, {" #QD2 "}\n\t" \
    689       "vldmia %1!, {" #QD3 "}\n\t" \
    690       "vldmia %1!, {" #QD4 "}\n\t" \
    691       "mov %1, r4\n\t" \
    692       instruction ", [%0]\n\t" \
    693       : \
    694       : "r" (out), "r" (mem) \
    695       : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
    696       ); \
    697   printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
    698           "0x%08x 0x%08x 0x%08x 0x%08x\n", \
    699       instruction, out[0], out[1], out[2], out[3], out[4],\
    700           out[5], out[6], out[7]); \
    701 }
    702 
    703 #define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
    704 { \
    705   unsigned int out[2]; \
    706 \
    707   __asm__ volatile( \
    708       "vmov.i8 " #QD ", #0x55" "\n\t" \
    709       "vdup." #QMtype " " #QM ", %1\n\t" \
    710       "vdup." #QNtype " " #QN ", %2\n\t" \
    711       instruction "\n\t" \
    712       "vstmia %0, {" #QD "}\n\t" \
    713       : \
    714       : "r" (out), "r" (QMval), "r" (QNval) \
    715       : #QD, #QM, #QN, "memory" \
    716       ); \
    717   printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
    718       "  Qn (" #QNtype ")0x%08x\n", \
    719       instruction, out[1], out[0], QMval, QNval); \
    720 }
    721 
    722 #define TESTINSN_bin_f64(instruction, QD, QM, QMtype, QMval0, QMval1, QN, QNtype, QNval0, QNval1) \
    723 { \
    724   unsigned int out[2]; \
    725 \
    726   __asm__ volatile( \
    727       "vdup.i32 " #QD ", %5\n\t" \
    728       "vmov " #QM ", %1, %2 \n\t" \
    729       "vmov " #QN ", %3, %4 \n\t" \
    730       instruction "\n\t" \
    731       "vstmia %0, {" #QD "}\n\t" \
    732       : \
    733       : "r" (out), "r" (QMval0), "r" (QMval1), "r" (QNval0), "r" (QNval1), "r"(0x3f800000) \
    734       : #QD, #QM, #QN, "memory" \
    735       ); \
    736   printf("%s :: Qd 0x%08x 0x%08x  Qm 0x%08x %08x" \
    737       "  Qn 0x%08x %08x\n", \
    738       instruction, out[1], out[0], QMval1, QMval0, QNval1, QNval0); \
    739 }
    740 
    741 #define TESTINSN_bin_f32(instruction, SD, SM, SMtype, SMval, SN, SNtype, SNval) \
    742 { \
    743   unsigned int out[1]; \
    744 \
    745   __asm__ volatile( \
    746       "vmov.f32 " #SM ", %1\n\t" \
    747       "vmov.f32 " #SN ", %2\n\t" \
    748       "vmov.f32 " #SD ", %3\n\t" \
    749       instruction "\n\t" \
    750       "vstmia %0, {" #SD "}\n\t" \
    751       : \
    752       : "r" (out), "r" (SMval), "r" (SNval), "r" (0xaaaaaaaa) \
    753       : #SD, #SM, #SN, "memory" \
    754       ); \
    755   printf("%s :: Sd 0x%08x Sm (" #SMtype ")0x%08x" \
    756       "  Sn (" #SNtype ")0x%08x\n", \
    757       instruction, out[0], SMval, SNval); \
    758 }
    759 
    760 #define TESTINSN_cmp_f64(instruction, DD, DDval0, DDval1, DM, DMval0, DMval1) \
    761 { \
    762   unsigned int out[1]; \
    763 \
    764   __asm__ volatile( \
    765       "vmov " #DD ", %1, %2\n\t" \
    766       "vmov " #DM ", %3, %4\n\t" \
    767       "mov r4, #0\n\t" \
    768       MOVE_to_FPSCR_from_R4 \
    769       instruction "\n\t" \
    770       MOVE_to_R4_from_FPSCR \
    771       "str r4, [%0]\n\t" \
    772       : \
    773       : "r" (out), "r" (DDval0), "r" (DDval1),"r" (DMval0), "r" (DMval1) \
    774       : #DD, #DM, "r4", "memory" \
    775       ); \
    776   printf("%s :: FPSCR 0x%08x  Dd 0x%08x %08x" \
    777       "  Dm 0x%08x %08x\n", \
    778       instruction, out[0] & 0xffffff60, DDval1, DDval0, DMval1, DMval0); \
    779 }
    780 
    781 #define TESTINSN_cmp_f32(instruction, SD, SDval, SM, SMval) \
    782 { \
    783   unsigned int out[1]; \
    784 \
    785   __asm__ volatile( \
    786       "vmov " #SD ", %1\n\t" \
    787       "vmov " #SM ", %2\n\t" \
    788       "mov r4, #0\n\t" \
    789       MOVE_to_FPSCR_from_R4 \
    790       instruction "\n\t" \
    791       MOVE_to_R4_from_FPSCR \
    792       "str r4, [%0]\n\t" \
    793       : \
    794       : "r" (out), "r" (SDval),"r" (SMval) \
    795       : #SD, #SM, "r4", "memory" \
    796       ); \
    797   printf("%s :: FPSCR 0x%01x  Sd 0x%08x" \
    798       "  Sm 0x%08x\n", \
    799       instruction, (out[0] & 0xf0000000) >> 28, SDval, SMval); \
    800 }
    801 
    802 #define TESTINSN_cmpz_f32(instruction, SD, SDval) \
    803 { \
    804   unsigned int out[1]; \
    805 \
    806   __asm__ volatile( \
    807       "vmov " #SD ", %1\n\t" \
    808       instruction ", #0\n\t" \
    809       MOVE_to_R4_from_FPSCR \
    810       "vmov " #SD ", r4\n\t" \
    811       "vstmia %0, {" #SD "}\n\t" \
    812       : \
    813       : "r" (out), "r" (SDval)\
    814       : #SD, "r4", "memory" \
    815       ); \
    816   printf("%s :: FPSCR 0x%08x  Sd 0x%08x\n", \
    817       instruction, out[0] & 0xffffff60, SDval); \
    818 }
    819 
    820 #define TESTINSN_cmpz_f64(instruction, DD, DDval0, DDval1) \
    821 { \
    822   unsigned int out[1]; \
    823 \
    824   __asm__ volatile( \
    825       "vmov " #DD ", %1, %2\n\t" \
    826       instruction ", #0\n\t" \
    827       MOVE_to_R4_from_FPSCR \
    828       "str r4, [%0]\n\t" \
    829       : \
    830       : "r" (out), "r" (DDval0), "r" (DDval1) \
    831       : #DD, "r4", "memory" \
    832       ); \
    833   printf("%s :: FPSCR 0x%08x  Dd 0x%08x %08x\n", \
    834       instruction, out[0] & 0xffffff60, DDval1, DDval0); \
    835 }
    836 
    837 static void do_vldm_vstm_check(void)
    838 {
    839     int i;
    840     const char *format = "\t0x%08x\n";
    841     unsigned int data[] = {
    842         0x1a1b1c1d, 0x2a2b2c2d, 0x3a3b3c3d, 0x4a4b4c4d,
    843         0x5a5b5c5d, 0x6a6b6c6d, 0x7a7b7c7d, 0x8a8b8c8d,
    844         0x9a9b9c9d, 0xaaabacad, 0xbabbbcbd, 0xcacbcccd,
    845         0xdadbdcdd, 0xeaebeced, 0xfafbfcfd, 0x0a0b0c0d
    846     };
    847     unsigned int res;
    848     printf("do_vldm_vstm_check:\n");
    849     __asm__ volatile(
    850             "mov r1, %0\n\t"
    851             "vldmia r1!, {s16, s17, s18, s19}\n\t"
    852             "mov r0, %1\n\t"
    853             "sub r1, r1, %0\n\t"
    854             "mov r3, r1\n\t"
    855             "bl printf\n\t"
    856             "mov r0, %1\n\t"
    857             "vmov r1, s18\n\t"
    858             "mov r3, r1\n\t"
    859             "bl printf\n\t"
    860             "mov r0, %1\n\t"
    861             "vmov r1, s19\n\t"
    862             "mov r3, r1\n\t"
    863             "bl printf\n\t"
    864             "mov r0, %1\n\t"
    865             "vmov r1, s16\n\t"
    866             "mov r3, r1\n\t"
    867             "bl printf\n\t"
    868 /* --- */
    869             "add r1, %0, #32\n\t"
    870             "vldmdb r1!, {s25, s26}\n\t"
    871             "mov r0, %1\n\t"
    872             "sub r1, r1, %0\n\t"
    873             "mov r3, r1\n\t"
    874             "bl printf\n\t"
    875             "mov r0, %1\n\t"
    876             "vmov r1, s25\n\t"
    877             "mov r3, r1\n\t"
    878             "bl printf\n\t"
    879             "mov r0, %1\n\t"
    880             "vmov r1, s26\n\t"
    881             "mov r3, r1\n\t"
    882             "bl printf\n\t"
    883 /* --- */
    884             "add r1, %0, #4\n\t"
    885             "vldmia r1, {s20, s21, s22, s23}\n\t"
    886             "mov r0, %1\n\t"
    887             "sub r1, r1, %0\n\t"
    888             "mov r3, r1\n\t"
    889             "bl printf\n\t"
    890             "mov r0, %1\n\t"
    891             "vmov r1, s22\n\t"
    892             "mov r3, r1\n\t"
    893             "bl printf\n\t"
    894             "mov r0, %1\n\t"
    895             "vmov r1, s23\n\t"
    896             "mov r3, r1\n\t"
    897             "bl printf\n\t"
    898             "mov r0, %1\n\t"
    899             "vmov r1, s20\n\t"
    900             "mov r3, r1\n\t"
    901             "bl printf\n\t"
    902 /* --- */
    903             "add r1, %0, #48\n\t"
    904             "vldmia r1!, {d30, d31}\n\t"
    905             "mov r0, %1\n\t"
    906             "sub r1, r1, %0\n\t"
    907             "mov r3, r1\n\t"
    908             "bl printf\n\t"
    909             "mov r0, %1\n\t"
    910             "vmov r1, r5, d30\n\t"
    911             "mov r3, r1\n\t"
    912             "bl printf\n\t"
    913             "mov r0, %1\n\t"
    914             "mov r1, r5\n\t"
    915             "mov r3, r1\n\t"
    916             "bl printf\n\t"
    917             "mov r0, %1\n\t"
    918             "vmov r1, r5, d31\n\t"
    919             "mov r3, r1\n\t"
    920             "bl printf\n\t"
    921             "mov r0, %1\n\t"
    922             "mov r1, r5\n\t"
    923             "mov r3, r1\n\t"
    924             "bl printf\n\t"
    925 /* --- */
    926             "add r1, %0, #44\n\t"
    927             "vldmia r1, {d30, d31}\n\t"
    928             "mov r0, %1\n\t"
    929             "sub r1, r1, %0\n\t"
    930             "mov r3, r1\n\t"
    931             "bl printf\n\t"
    932             "mov r0, %1\n\t"
    933             "vmov r1, r5, d30\n\t"
    934             "mov r3, r1\n\t"
    935             "bl printf\n\t"
    936             "mov r0, %1\n\t"
    937             "mov r1, r5\n\t"
    938             "mov r3, r1\n\t"
    939             "bl printf\n\t"
    940             "mov r0, %1\n\t"
    941             "vmov r1, r5, d31\n\t"
    942             "mov r3, r1\n\t"
    943             "bl printf\n\t"
    944             "mov r0, %1\n\t"
    945             "mov r1, r5\n\t"
    946             "mov r3, r1\n\t"
    947             "bl printf\n\t"
    948 /* --- */
    949             "add r1, %0, #40\n\t"
    950             "vldmdb r1!, {d30, d31}\n\t"
    951             "mov r0, %1\n\t"
    952             "sub r1, r1, %0\n\t"
    953             "mov r3, r1\n\t"
    954             "bl printf\n\t"
    955             "mov r0, %1\n\t"
    956             "vmov r1, r5, d30\n\t"
    957             "mov r3, r1\n\t"
    958             "bl printf\n\t"
    959             "mov r0, %1\n\t"
    960             "mov r1, r5\n\t"
    961             "mov r3, r1\n\t"
    962             "bl printf\n\t"
    963             "mov r0, %1\n\t"
    964             "vmov r1, r5, d31\n\t"
    965             "mov r3, r1\n\t"
    966             "bl printf\n\t"
    967             "mov r0, %1\n\t"
    968             "mov r1, r5\n\t"
    969             "mov r3, r1\n\t"
    970             "bl printf\n\t"
    971 /* --- */
    972             "mov r0, #0x55\n\t"
    973             "vmov s20, r0\n\t"
    974             "mov r0, #0x56\n\t"
    975             "vmov s21, r0\n\t"
    976             "mov r0, #0x57\n\t"
    977             "vmov s22, r0\n\t"
    978             "mov r0, #0x58\n\t"
    979             "vmov s23, r0\n\t"
    980             "add r1, %0, #0\n\t"
    981             "vstmia r1!, {s20, s21, s22, s23}\n\t"
    982             "mov r0, %1\n\t"
    983             "sub r1, r1, %0\n\t"
    984             "mov r3, r1\n\t"
    985             "bl printf\n\t"
    986 /* --- */
    987             "mov r0, #0x65\n\t"
    988             "vmov s16, r0\n\t"
    989             "mov r0, #0x66\n\t"
    990             "vmov s17, r0\n\t"
    991             "add r1, %0, #16\n\t"
    992             "vstmia r1, {s16, s17}\n\t"
    993             "mov r0, %1\n\t"
    994             "sub r1, r1, %0\n\t"
    995             "mov r3, r1\n\t"
    996             "bl printf\n\t"
    997 /* --- */
    998             "mov r0, #0x75\n\t"
    999             "vmov s16, r0\n\t"
   1000             "mov r0, #0x76\n\t"
   1001             "vmov s17, r0\n\t"
   1002             "add r1, %0, #32\n\t"
   1003             "vstmdb r1!, {s16, s17}\n\t"
   1004             "mov r0, %1\n\t"
   1005             "sub r1, r1, %0\n\t"
   1006             "mov r3, r1\n\t"
   1007             "bl printf\n\t"
   1008 /* --- */
   1009             "mov r0, #0x42\n\t"
   1010             "mov r1, #0x43\n\t"
   1011             "vmov d30, r0, r1\n\t"
   1012             "mov r0, #0x40\n\t"
   1013             "mov r1, #0x41\n\t"
   1014             "vmov d31, r0, r1\n\t"
   1015             "mov r0, #0x57\n\t"
   1016             "add r1, %0, #32\n\t"
   1017             "vstmia r1!, {d30, d31}\n\t"
   1018             "mov r0, %1\n\t"
   1019             "sub r1, r1, %0\n\t"
   1020             "mov r3, r1\n\t"
   1021             "bl printf\n\t"
   1022 /* --- */
   1023             "mov r0, #0x32\n\t"
   1024             "mov r1, #0x33\n\t"
   1025             "vmov d10, r0, r1\n\t"
   1026             "mov r0, #0x57\n\t"
   1027             "add r1, %0, #48\n\t"
   1028             "vstmia r1, {d10}\n\t"
   1029             "mov r0, %1\n\t"
   1030             "sub r1, r1, %0\n\t"
   1031             "mov r3, r1\n\t"
   1032             "bl printf\n\t"
   1033 /* --- */
   1034             "mov r0, #0x22\n\t"
   1035             "mov r1, #0x23\n\t"
   1036             "vmov d10, r0, r1\n\t"
   1037             "mov r0, #0x57\n\t"
   1038             "add r1, %0, #64\n\t"
   1039             "vstmdb r1!, {d10}\n\t"
   1040             "mov r0, %1\n\t"
   1041             "sub r1, r1, %0\n\t"
   1042             "mov r3, r1\n\t"
   1043             "bl printf\n\t"
   1044         :
   1045         : "r" (data), "r" (format), "r"(&res)
   1046         : "r0", "r1", "r2", "r3", "r5", "r12", "r14", "memory",
   1047           "s0", "s1", "s2", "s3", "s5", "s6", "s16", "s17", "s18", "s19",
   1048           "s20", "s21", "s22", "s23", "s25", "s26",
   1049           "d10", "d30", "d31"
   1050         );
   1051     printf("data:\n");
   1052     for (i = 0; i < 16; i++) {
   1053         printf("\t0x%08x\n", data[i]);
   1054     }
   1055 }
   1056 
   1057 int main(int argc, char **argv)
   1058 {
   1059     do_vldm_vstm_check();
   1060 
   1061     printf("---- VMOV (ARM core register to scalar) ----\n");
   1062     TESTINSN_core_to_scalar("vmov.32 d0[0],  r5", d0,  r5, f2u(13));
   1063     TESTINSN_core_to_scalar("vmov.32 d1[1],  r6", d1,  r6, 0x12);
   1064     TESTINSN_core_to_scalar("vmov.32 d20[0], r5", d20, r5, f2u(NAN));
   1065     TESTINSN_core_to_scalar("vmov.32 d29[1], r6", d29, r6, f2u(172));
   1066     TESTINSN_core_to_scalar("vmov.32 d30[0], r5", d30, r5, f2u(INFINITY));
   1067     TESTINSN_core_to_scalar("vmov.32 d11[1], r6", d11, r6, f2u(-INFINITY));
   1068     TESTINSN_core_to_scalar("vmov.32 d18[0], r5", d11, r5, f2u(653));
   1069     TESTINSN_core_to_scalar("vmov.32 d9[1],  r6", d9,  r6, 12);
   1070     TESTINSN_core_to_scalar("vmov.16 d0[0],  r5", d0,  r5, 13);
   1071     TESTINSN_core_to_scalar("vmov.16 d14[1], r5", d14, r5, f2u(NAN));
   1072     TESTINSN_core_to_scalar("vmov.16 d28[2], r6", d28, r6, 14);
   1073     TESTINSN_core_to_scalar("vmov.16 d30[3], r1", d30, r1, 17);
   1074     TESTINSN_core_to_scalar("vmov.16 d0[0],  r5", d0,  r5, f2u(INFINITY));
   1075     TESTINSN_core_to_scalar("vmov.16 d7[1],  r5", d7,  r5, f2u(-INFINITY));
   1076     TESTINSN_core_to_scalar("vmov.16 d21[2], r6", d21, r6, 14);
   1077     TESTINSN_core_to_scalar("vmov.16 d17[3], r1", d17, r1, 17);
   1078     TESTINSN_core_to_scalar("vmov.8  d0[0],  r5", d0,  r5, 13);
   1079     TESTINSN_core_to_scalar("vmov.8  d10[1], r5", d10, r5, f2u(NAN));
   1080     TESTINSN_core_to_scalar("vmov.8  d20[2], r5", d20, r5, f2u(INFINITY));
   1081     TESTINSN_core_to_scalar("vmov.8  d30[3], r5", d30, r5, f2u(-INFINITY));
   1082     TESTINSN_core_to_scalar("vmov.8  d13[4], r5", d13, r5, 213);
   1083     TESTINSN_core_to_scalar("vmov.8  d17[5], r5", d17, r5, 1343);
   1084     TESTINSN_core_to_scalar("vmov.8  d24[6], r5", d24, r5, 111);
   1085     TESTINSN_core_to_scalar("vmov.8  d29[7], r5", d29, r5, 173);
   1086 
   1087     printf("---- VMOV (scalar to ARM core register) ----\n");
   1088     TESTINSN_scalar_to_core("vmov.32   r5,  d0[0]",  r5,  d0,  i32, f2u(NAN));
   1089     TESTINSN_scalar_to_core("vmov.32   r6,  d5[1]",  r6,  d5,  i32, f2u(INFINITY));
   1090     TESTINSN_scalar_to_core("vmov.32   r4,  d10[0]", r4,  d10, i32, f2u(-INFINITY));
   1091     TESTINSN_scalar_to_core("vmov.32   r5,  d15[1]", r5,  d15, i32, 0x11223344);
   1092     TESTINSN_scalar_to_core("vmov.32   r9, d20[0]", r9, d20, i32, 0x11223344);
   1093     TESTINSN_scalar_to_core("vmov.32   r8,  d25[1]", r8,  d25, i32, 0x11223344);
   1094     TESTINSN_scalar_to_core("vmov.32   r0,  d30[0]", r0,  d30, i32, 0x11223344);
   1095     TESTINSN_scalar_to_core("vmov.32   r2,  d19[1]", r2,  d19, i32, 0x11223344);
   1096     TESTINSN_scalar_to_core("vmov.u16  r5,  d31[0]", r5,  d31, i32, f2u(NAN));
   1097     TESTINSN_scalar_to_core("vmov.u16  r3,  d30[1]", r3,  d30, i32, f2u(INFINITY));
   1098     TESTINSN_scalar_to_core("vmov.u16  r6,  d21[2]", r6,  d21, i32, f2u(-INFINITY));
   1099     TESTINSN_scalar_to_core("vmov.u16  r9, d26[3]", r9, d26, i32, 0x11223344);
   1100     TESTINSN_scalar_to_core("vmov.u16  r12, d11[0]", r12, d11, i32, 0x11223344);
   1101     TESTINSN_scalar_to_core("vmov.u16  r0,  d10[1]", r0,  d10, i32, 0x11223344);
   1102     TESTINSN_scalar_to_core("vmov.u16  r6,  d1[2]",  r6,  d1,  i32, 0x11223344);
   1103     TESTINSN_scalar_to_core("vmov.u16  r8,  d5[3]",  r8,  d5,  i32, 0x11223344);
   1104     TESTINSN_scalar_to_core("vmov.u8   r2,  d4[0]",  r2,  d4,  i32, f2u(NAN));
   1105     TESTINSN_scalar_to_core("vmov.u8   r6,  d14[1]", r6,  d14, i32, f2u(INFINITY));
   1106     TESTINSN_scalar_to_core("vmov.u8   r9, d24[2]", r9, d24, i32, f2u(-INFINITY));
   1107     TESTINSN_scalar_to_core("vmov.u8   r8,  d31[3]", r8,  d31, i32, 0x11223344);
   1108     TESTINSN_scalar_to_core("vmov.u8   r10, d29[4]", r10, d29, i32, 0x11223344);
   1109     TESTINSN_scalar_to_core("vmov.u8   r3,  d19[5]", r3,  d19, i32, 0x11223344);
   1110     TESTINSN_scalar_to_core("vmov.u8   r12, d12[6]", r12, d12, i32, 0x11223344);
   1111     TESTINSN_scalar_to_core("vmov.u8   r10, d18[4]", r10, d18, i32, 0x11223344);
   1112     TESTINSN_scalar_to_core("vmov.s16  r5,  d31[0]", r5,  d31, i32, f2u(NAN));
   1113     TESTINSN_scalar_to_core("vmov.s16  r3,  d30[1]", r3,  d30, i32, f2u(INFINITY));
   1114     TESTINSN_scalar_to_core("vmov.s16  r6,  d21[2]", r6,  d21, i32, f2u(-INFINITY));
   1115     TESTINSN_scalar_to_core("vmov.s16  r9, d26[3]", r9, d26, i32, 0x11223344);
   1116     TESTINSN_scalar_to_core("vmov.s16  r4,  d11[0]", r4,  d11, i32, 0x11223344);
   1117     TESTINSN_scalar_to_core("vmov.s16  r0,  d10[1]", r0,  d10, i32, 0x11223344);
   1118     TESTINSN_scalar_to_core("vmov.s16  r6,  d1[2]",  r6,  d1,  i32, 0x11223344);
   1119     TESTINSN_scalar_to_core("vmov.s16  r8,  d5[3]",  r8,  d5,  i32, 0x11223344);
   1120     TESTINSN_scalar_to_core("vmov.s8   r2,  d4[0]",  r2,  d4,  i32, f2u(NAN));
   1121     TESTINSN_scalar_to_core("vmov.s8   r6,  d14[1]", r6,  d14, i32, f2u(INFINITY));
   1122     TESTINSN_scalar_to_core("vmov.s8   r9, d24[2]", r9, d24, i32, f2u(-INFINITY));
   1123     TESTINSN_scalar_to_core("vmov.s8   r8,  d31[3]", r8,  d31, i32, 0x11223344);
   1124     TESTINSN_scalar_to_core("vmov.s8   r6,  d29[4]", r6,  d29, i32, 0x11223344);
   1125     TESTINSN_scalar_to_core("vmov.s8   r3,  d19[5]", r3,  d19, i32, 0x11223344);
   1126     TESTINSN_scalar_to_core("vmov.s8   r12, d12[6]", r12, d12, i32, 0x11223344);
   1127     TESTINSN_scalar_to_core("vmov.s8   r10, d18[7]", r10, d18, i32, 0x11223344);
   1128 
   1129     printf("---- VMLA (fp) ----\n");
   1130     TESTINSN_bin_f64("vmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
   1131     TESTINSN_bin_f64("vmla.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
   1132     TESTINSN_bin_f64("vmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
   1133     TESTINSN_bin_f64("vmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
   1134     TESTINSN_bin_f64("vmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
   1135     TESTINSN_bin_f64("vmla.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1136     TESTINSN_bin_f64("vmla.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1137     TESTINSN_bin_f64("vmla.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1138     TESTINSN_bin_f64("vmla.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1139     TESTINSN_bin_f64("vmla.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1140     TESTINSN_bin_f64("vmla.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1141     TESTINSN_bin_f64("vmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1142     TESTINSN_bin_f64("vmla.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1143     TESTINSN_bin_f64("vmla.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1144     TESTINSN_bin_f64("vmla.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1145     TESTINSN_bin_f64("vmla.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1146     TESTINSN_bin_f64("vmla.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1147     TESTINSN_bin_f64("vmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1148     TESTINSN_bin_f64("vmla.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1149     TESTINSN_bin_f64("vmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1150     TESTINSN_bin_f64("vmla.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1151     TESTINSN_bin_f64("vmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1152     TESTINSN_bin_f64("vmla.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1153     TESTINSN_bin_f64("vmla.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1154     TESTINSN_bin_f32("vmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
   1155     TESTINSN_bin_f32("vmla.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
   1156     TESTINSN_bin_f32("vmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
   1157     TESTINSN_bin_f32("vmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
   1158     TESTINSN_bin_f32("vmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
   1159     TESTINSN_bin_f32("vmla.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1160     TESTINSN_bin_f32("vmla.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1161     TESTINSN_bin_f32("vmla.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1162     TESTINSN_bin_f32("vmla.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1163     TESTINSN_bin_f32("vmla.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1164     TESTINSN_bin_f32("vmla.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1165     TESTINSN_bin_f32("vmla.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1166     TESTINSN_bin_f32("vmla.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1167     TESTINSN_bin_f32("vmla.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1168     TESTINSN_bin_f32("vmla.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1169     TESTINSN_bin_f32("vmla.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1170     TESTINSN_bin_f32("vmla.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1171     TESTINSN_bin_f32("vmla.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1172     TESTINSN_bin_f32("vmla.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
   1173     TESTINSN_bin_f32("vmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1174     TESTINSN_bin_f32("vmla.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1175     TESTINSN_bin_f32("vmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1176     TESTINSN_bin_f32("vmla.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1177     TESTINSN_bin_f32("vmla.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1178 
   1179     printf("---- VNMLA (fp) ----\n");
   1180     TESTINSN_bin_f64("vnmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
   1181     TESTINSN_bin_f64("vnmla.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
   1182     TESTINSN_bin_f64("vnmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
   1183     TESTINSN_bin_f64("vnmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
   1184     TESTINSN_bin_f64("vnmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
   1185     TESTINSN_bin_f64("vnmla.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1186     TESTINSN_bin_f64("vnmla.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1187     TESTINSN_bin_f64("vnmla.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1188     TESTINSN_bin_f64("vnmla.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1189     TESTINSN_bin_f64("vnmla.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1190     TESTINSN_bin_f64("vnmla.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1191     TESTINSN_bin_f64("vnmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1192     TESTINSN_bin_f64("vnmla.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1193     TESTINSN_bin_f64("vnmla.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1194     TESTINSN_bin_f64("vnmla.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1195     TESTINSN_bin_f64("vnmla.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1196     TESTINSN_bin_f64("vnmla.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1197     TESTINSN_bin_f64("vnmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1198     TESTINSN_bin_f64("vnmla.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1199     TESTINSN_bin_f64("vnmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1200     TESTINSN_bin_f64("vnmla.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1201     TESTINSN_bin_f64("vnmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1202     TESTINSN_bin_f64("vnmla.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1203     TESTINSN_bin_f64("vnmla.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1204     TESTINSN_bin_f32("vnmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
   1205     TESTINSN_bin_f32("vnmla.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
   1206     TESTINSN_bin_f32("vnmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
   1207     TESTINSN_bin_f32("vnmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
   1208     TESTINSN_bin_f32("vnmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
   1209     TESTINSN_bin_f32("vnmla.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1210     TESTINSN_bin_f32("vnmla.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1211     TESTINSN_bin_f32("vnmla.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1212     TESTINSN_bin_f32("vnmla.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1213     TESTINSN_bin_f32("vnmla.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1214     TESTINSN_bin_f32("vnmla.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1215     TESTINSN_bin_f32("vnmla.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1216     TESTINSN_bin_f32("vnmla.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1217     TESTINSN_bin_f32("vnmla.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1218     TESTINSN_bin_f32("vnmla.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1219     TESTINSN_bin_f32("vnmla.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1220     TESTINSN_bin_f32("vnmla.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1221     TESTINSN_bin_f32("vnmla.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1222     TESTINSN_bin_f32("vnmla.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752.));
   1223     TESTINSN_bin_f32("vnmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1224     TESTINSN_bin_f32("vnmla.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1225     TESTINSN_bin_f32("vnmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1226     TESTINSN_bin_f32("vnmla.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1227     TESTINSN_bin_f32("vnmla.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1228 
   1229     printf("---- VMLS (fp) ----\n");
   1230     TESTINSN_bin_f64("vmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
   1231     TESTINSN_bin_f64("vmls.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
   1232     TESTINSN_bin_f64("vmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
   1233     TESTINSN_bin_f64("vmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
   1234     TESTINSN_bin_f64("vmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
   1235     TESTINSN_bin_f64("vmls.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1236     TESTINSN_bin_f64("vmls.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1237     TESTINSN_bin_f64("vmls.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1238     TESTINSN_bin_f64("vmls.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1239     TESTINSN_bin_f64("vmls.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1240     TESTINSN_bin_f64("vmls.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1241     TESTINSN_bin_f64("vmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1242     TESTINSN_bin_f64("vmls.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1243     TESTINSN_bin_f64("vmls.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1244     TESTINSN_bin_f64("vmls.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1245     TESTINSN_bin_f64("vmls.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1246     TESTINSN_bin_f64("vmls.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1247     TESTINSN_bin_f64("vmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1248     TESTINSN_bin_f64("vmls.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1249     TESTINSN_bin_f64("vmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1250     TESTINSN_bin_f64("vmls.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1251     TESTINSN_bin_f64("vmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1252     TESTINSN_bin_f64("vmls.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1253     TESTINSN_bin_f64("vmls.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1254     TESTINSN_bin_f32("vmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
   1255     TESTINSN_bin_f32("vmls.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
   1256     TESTINSN_bin_f32("vmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
   1257     TESTINSN_bin_f32("vmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
   1258     TESTINSN_bin_f32("vmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
   1259     TESTINSN_bin_f32("vmls.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1260     TESTINSN_bin_f32("vmls.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1261     TESTINSN_bin_f32("vmls.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1262     TESTINSN_bin_f32("vmls.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1263     TESTINSN_bin_f32("vmls.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1264     TESTINSN_bin_f32("vmls.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1265     TESTINSN_bin_f32("vmls.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1266     TESTINSN_bin_f32("vmls.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1267     TESTINSN_bin_f32("vmls.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1268     TESTINSN_bin_f32("vmls.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1269     TESTINSN_bin_f32("vmls.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1270     TESTINSN_bin_f32("vmls.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1271     TESTINSN_bin_f32("vmls.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1272     TESTINSN_bin_f32("vmls.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
   1273     TESTINSN_bin_f32("vmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1274     TESTINSN_bin_f32("vmls.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1275     TESTINSN_bin_f32("vmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1276     TESTINSN_bin_f32("vmls.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1277     TESTINSN_bin_f32("vmls.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1278 
   1279     printf("---- VNMLS (fp) ----\n");
   1280     TESTINSN_bin_f64("vnmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
   1281     TESTINSN_bin_f64("vnmls.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
   1282     TESTINSN_bin_f64("vnmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
   1283     TESTINSN_bin_f64("vnmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
   1284     TESTINSN_bin_f64("vnmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
   1285     TESTINSN_bin_f64("vnmls.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1286     TESTINSN_bin_f64("vnmls.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1287     TESTINSN_bin_f64("vnmls.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1288     TESTINSN_bin_f64("vnmls.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1289     TESTINSN_bin_f64("vnmls.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1290     TESTINSN_bin_f64("vnmls.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1291     TESTINSN_bin_f64("vnmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1292     TESTINSN_bin_f64("vnmls.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1293     TESTINSN_bin_f64("vnmls.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1294     TESTINSN_bin_f64("vnmls.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1295     TESTINSN_bin_f64("vnmls.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1296     TESTINSN_bin_f64("vnmls.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1297     TESTINSN_bin_f64("vnmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1298     TESTINSN_bin_f64("vnmls.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1299     TESTINSN_bin_f64("vnmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1300     TESTINSN_bin_f64("vnmls.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1301     TESTINSN_bin_f64("vnmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1302     TESTINSN_bin_f64("vnmls.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1303     TESTINSN_bin_f64("vnmls.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1304     TESTINSN_bin_f32("vnmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
   1305     TESTINSN_bin_f32("vnmls.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
   1306     TESTINSN_bin_f32("vnmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
   1307     TESTINSN_bin_f32("vnmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
   1308     TESTINSN_bin_f32("vnmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
   1309     TESTINSN_bin_f32("vnmls.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1310     TESTINSN_bin_f32("vnmls.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1311     TESTINSN_bin_f32("vnmls.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1312     TESTINSN_bin_f32("vnmls.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1313     TESTINSN_bin_f32("vnmls.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1314     TESTINSN_bin_f32("vnmls.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1315     TESTINSN_bin_f32("vnmls.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1316     TESTINSN_bin_f32("vnmls.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1317     TESTINSN_bin_f32("vnmls.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1318     TESTINSN_bin_f32("vnmls.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1319     TESTINSN_bin_f32("vnmls.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1320     TESTINSN_bin_f32("vnmls.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1321     TESTINSN_bin_f32("vnmls.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1322     TESTINSN_bin_f32("vnmls.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
   1323     TESTINSN_bin_f32("vnmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1324     TESTINSN_bin_f32("vnmls.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1325     TESTINSN_bin_f32("vnmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1326     TESTINSN_bin_f32("vnmls.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1327     TESTINSN_bin_f32("vnmls.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1328 
   1329     printf("---- VMUL (fp) ----\n");
   1330     TESTINSN_bin_f64("vmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
   1331     TESTINSN_bin_f64("vmul.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
   1332     TESTINSN_bin_f64("vmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
   1333     TESTINSN_bin_f64("vmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
   1334     TESTINSN_bin_f64("vmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
   1335     TESTINSN_bin_f64("vmul.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1336     TESTINSN_bin_f64("vmul.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1337     TESTINSN_bin_f64("vmul.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1338     TESTINSN_bin_f64("vmul.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1339     TESTINSN_bin_f64("vmul.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1340     TESTINSN_bin_f64("vmul.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1341     TESTINSN_bin_f64("vmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1342     TESTINSN_bin_f64("vmul.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1343     TESTINSN_bin_f64("vmul.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1344     TESTINSN_bin_f64("vmul.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1345     TESTINSN_bin_f64("vmul.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1346     TESTINSN_bin_f64("vmul.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1347     TESTINSN_bin_f64("vmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1348     TESTINSN_bin_f64("vmul.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1349     TESTINSN_bin_f64("vmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1350     TESTINSN_bin_f64("vmul.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1351     TESTINSN_bin_f64("vmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1352     TESTINSN_bin_f64("vmul.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1353     TESTINSN_bin_f64("vmul.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1354     TESTINSN_bin_f32("vmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
   1355     TESTINSN_bin_f32("vmul.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
   1356     TESTINSN_bin_f32("vmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
   1357     TESTINSN_bin_f32("vmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
   1358     TESTINSN_bin_f32("vmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
   1359     TESTINSN_bin_f32("vmul.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1360     TESTINSN_bin_f32("vmul.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1361     TESTINSN_bin_f32("vmul.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1362     TESTINSN_bin_f32("vmul.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1363     TESTINSN_bin_f32("vmul.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1364     TESTINSN_bin_f32("vmul.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1365     TESTINSN_bin_f32("vmul.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1366     TESTINSN_bin_f32("vmul.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1367     TESTINSN_bin_f32("vmul.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1368     TESTINSN_bin_f32("vmul.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1369     TESTINSN_bin_f32("vmul.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1370     TESTINSN_bin_f32("vmul.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1371     TESTINSN_bin_f32("vmul.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1372     TESTINSN_bin_f32("vmul.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
   1373     TESTINSN_bin_f32("vmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1374     TESTINSN_bin_f32("vmul.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1375     TESTINSN_bin_f32("vmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1376     TESTINSN_bin_f32("vmul.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1377     TESTINSN_bin_f32("vmul.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1378 
   1379     printf("---- VNMUL (fp) ----\n");
   1380     TESTINSN_bin_f64("vnmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
   1381     TESTINSN_bin_f64("vnmul.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
   1382     TESTINSN_bin_f64("vnmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
   1383     TESTINSN_bin_f64("vnmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
   1384     TESTINSN_bin_f64("vnmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
   1385     TESTINSN_bin_f64("vnmul.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1386     TESTINSN_bin_f64("vnmul.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1387     TESTINSN_bin_f64("vnmul.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1388     TESTINSN_bin_f64("vnmul.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1389     TESTINSN_bin_f64("vnmul.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1390     TESTINSN_bin_f64("vnmul.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1391     TESTINSN_bin_f64("vnmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1392     TESTINSN_bin_f64("vnmul.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1393     TESTINSN_bin_f64("vnmul.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1394     TESTINSN_bin_f64("vnmul.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1395     TESTINSN_bin_f64("vnmul.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1396     TESTINSN_bin_f64("vnmul.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1397     TESTINSN_bin_f64("vnmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1398     TESTINSN_bin_f64("vnmul.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1399     TESTINSN_bin_f64("vnmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1400     TESTINSN_bin_f64("vnmul.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1401     TESTINSN_bin_f64("vnmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1402     TESTINSN_bin_f64("vnmul.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1403     TESTINSN_bin_f64("vnmul.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1404     TESTINSN_bin_f32("vnmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
   1405     TESTINSN_bin_f32("vnmul.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
   1406     TESTINSN_bin_f32("vnmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
   1407     TESTINSN_bin_f32("vnmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
   1408     TESTINSN_bin_f32("vnmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
   1409     TESTINSN_bin_f32("vnmul.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1410     TESTINSN_bin_f32("vnmul.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1411     TESTINSN_bin_f32("vnmul.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1412     TESTINSN_bin_f32("vnmul.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1413     TESTINSN_bin_f32("vnmul.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1414     TESTINSN_bin_f32("vnmul.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1415     TESTINSN_bin_f32("vnmul.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1416     TESTINSN_bin_f32("vnmul.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1417     TESTINSN_bin_f32("vnmul.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1418     TESTINSN_bin_f32("vnmul.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1419     TESTINSN_bin_f32("vnmul.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1420     TESTINSN_bin_f32("vnmul.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1421     TESTINSN_bin_f32("vnmul.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1422     TESTINSN_bin_f32("vnmul.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
   1423     TESTINSN_bin_f32("vnmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1424     TESTINSN_bin_f32("vnmul.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1425     TESTINSN_bin_f32("vnmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1426     TESTINSN_bin_f32("vnmul.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1427     TESTINSN_bin_f32("vnmul.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1428 
   1429     printf("---- VADD (fp) ----\n");
   1430     TESTINSN_bin_f64("vadd.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
   1431     TESTINSN_bin_f64("vadd.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
   1432     TESTINSN_bin_f64("vadd.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
   1433     TESTINSN_bin_f64("vadd.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
   1434     TESTINSN_bin_f64("vadd.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
   1435     TESTINSN_bin_f64("vadd.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1436     TESTINSN_bin_f64("vadd.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1437     TESTINSN_bin_f64("vadd.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1438     TESTINSN_bin_f64("vadd.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1439     TESTINSN_bin_f64("vadd.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1440     TESTINSN_bin_f64("vadd.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1441     TESTINSN_bin_f64("vadd.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1442     TESTINSN_bin_f64("vadd.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1443     TESTINSN_bin_f64("vadd.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1444     TESTINSN_bin_f64("vadd.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1445     TESTINSN_bin_f64("vadd.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1446     TESTINSN_bin_f64("vadd.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1447     TESTINSN_bin_f64("vadd.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1448     TESTINSN_bin_f64("vadd.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1449     TESTINSN_bin_f64("vadd.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1450     TESTINSN_bin_f64("vadd.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1451     TESTINSN_bin_f64("vadd.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1452     TESTINSN_bin_f64("vadd.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1453     TESTINSN_bin_f64("vadd.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1454     TESTINSN_bin_f32("vadd.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
   1455     TESTINSN_bin_f32("vadd.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
   1456     TESTINSN_bin_f32("vadd.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
   1457     TESTINSN_bin_f32("vadd.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
   1458     TESTINSN_bin_f32("vadd.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
   1459     TESTINSN_bin_f32("vadd.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1460     TESTINSN_bin_f32("vadd.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1461     TESTINSN_bin_f32("vadd.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1462     TESTINSN_bin_f32("vadd.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1463     TESTINSN_bin_f32("vadd.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1464     TESTINSN_bin_f32("vadd.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1465     TESTINSN_bin_f32("vadd.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1466     TESTINSN_bin_f32("vadd.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1467     TESTINSN_bin_f32("vadd.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1468     TESTINSN_bin_f32("vadd.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1469     TESTINSN_bin_f32("vadd.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1470     TESTINSN_bin_f32("vadd.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1471     TESTINSN_bin_f32("vadd.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1472     TESTINSN_bin_f32("vadd.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
   1473     TESTINSN_bin_f32("vadd.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1474     TESTINSN_bin_f32("vadd.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1475     TESTINSN_bin_f32("vadd.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1476     TESTINSN_bin_f32("vadd.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1477     TESTINSN_bin_f32("vadd.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1478 
   1479     printf("---- VSUB (fp) ----\n");
   1480     TESTINSN_bin_f64("vsub.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
   1481     TESTINSN_bin_f64("vsub.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
   1482     TESTINSN_bin_f64("vsub.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
   1483     TESTINSN_bin_f64("vsub.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
   1484     TESTINSN_bin_f64("vsub.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
   1485     TESTINSN_bin_f64("vsub.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1486     TESTINSN_bin_f64("vsub.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1487     TESTINSN_bin_f64("vsub.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1488     TESTINSN_bin_f64("vsub.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1489     TESTINSN_bin_f64("vsub.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1490     TESTINSN_bin_f64("vsub.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1491     TESTINSN_bin_f64("vsub.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1492     TESTINSN_bin_f64("vsub.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1493     TESTINSN_bin_f64("vsub.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1494     TESTINSN_bin_f64("vsub.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1495     TESTINSN_bin_f64("vsub.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1496     TESTINSN_bin_f64("vsub.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1497     TESTINSN_bin_f64("vsub.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1498     TESTINSN_bin_f64("vsub.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1499     TESTINSN_bin_f64("vsub.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1500     TESTINSN_bin_f64("vsub.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1501     TESTINSN_bin_f64("vsub.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1502     TESTINSN_bin_f64("vsub.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1503     TESTINSN_bin_f64("vsub.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1504     TESTINSN_bin_f32("vsub.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
   1505     TESTINSN_bin_f32("vsub.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
   1506     TESTINSN_bin_f32("vsub.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
   1507     TESTINSN_bin_f32("vsub.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
   1508     TESTINSN_bin_f32("vsub.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
   1509     TESTINSN_bin_f32("vsub.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1510     TESTINSN_bin_f32("vsub.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1511     TESTINSN_bin_f32("vsub.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1512     TESTINSN_bin_f32("vsub.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1513     TESTINSN_bin_f32("vsub.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1514     TESTINSN_bin_f32("vsub.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1515     TESTINSN_bin_f32("vsub.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1516     TESTINSN_bin_f32("vsub.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1517     TESTINSN_bin_f32("vsub.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1518     TESTINSN_bin_f32("vsub.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1519     TESTINSN_bin_f32("vsub.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1520     TESTINSN_bin_f32("vsub.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1521     TESTINSN_bin_f32("vsub.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1522     TESTINSN_bin_f32("vsub.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
   1523     TESTINSN_bin_f32("vsub.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1524     TESTINSN_bin_f32("vsub.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1525     TESTINSN_bin_f32("vsub.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1526     TESTINSN_bin_f32("vsub.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1527     TESTINSN_bin_f32("vsub.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1528 
   1529     printf("---- VDIV (fp) ----\n");
   1530     TESTINSN_bin_f64("vdiv.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
   1531     TESTINSN_bin_f64("vdiv.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
   1532     TESTINSN_bin_f64("vdiv.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
   1533     TESTINSN_bin_f64("vdiv.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
   1534     TESTINSN_bin_f64("vdiv.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
   1535     TESTINSN_bin_f64("vdiv.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
   1536     TESTINSN_bin_f64("vdiv.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
   1537     TESTINSN_bin_f64("vdiv.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
   1538     TESTINSN_bin_f64("vdiv.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
   1539     TESTINSN_bin_f64("vdiv.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
   1540     TESTINSN_bin_f64("vdiv.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
   1541     TESTINSN_bin_f64("vdiv.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
   1542     TESTINSN_bin_f64("vdiv.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
   1543     TESTINSN_bin_f64("vdiv.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
   1544     TESTINSN_bin_f64("vdiv.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
   1545     TESTINSN_bin_f64("vdiv.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
   1546     TESTINSN_bin_f64("vdiv.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1547     TESTINSN_bin_f64("vdiv.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1548     TESTINSN_bin_f64("vdiv.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
   1549     TESTINSN_bin_f32("vdiv.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
   1550     TESTINSN_bin_f32("vdiv.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
   1551     TESTINSN_bin_f32("vdiv.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
   1552     TESTINSN_bin_f32("vdiv.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
   1553     TESTINSN_bin_f32("vdiv.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
   1554     TESTINSN_bin_f32("vdiv.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
   1555     TESTINSN_bin_f32("vdiv.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
   1556     TESTINSN_bin_f32("vdiv.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
   1557     TESTINSN_bin_f32("vdiv.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
   1558     TESTINSN_bin_f32("vdiv.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
   1559     TESTINSN_bin_f32("vdiv.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
   1560     TESTINSN_bin_f32("vdiv.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
   1561     TESTINSN_bin_f32("vdiv.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
   1562     TESTINSN_bin_f32("vdiv.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
   1563     TESTINSN_bin_f32("vdiv.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
   1564     TESTINSN_bin_f32("vdiv.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
   1565     TESTINSN_bin_f32("vdiv.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
   1566     TESTINSN_bin_f32("vdiv.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
   1567     TESTINSN_bin_f32("vdiv.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
   1568 
   1569     printf("---- VABS ----\n");
   1570     TESTINSN_un_f64("vabs.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
   1571     TESTINSN_un_f64("vabs.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
   1572     TESTINSN_un_f64("vabs.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
   1573     TESTINSN_un_f64("vabs.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
   1574     TESTINSN_un_f64("vabs.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1575     TESTINSN_un_f64("vabs.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1576     TESTINSN_un_f64("vabs.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
   1577     TESTINSN_un_f64("vabs.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
   1578     TESTINSN_un_f64("vabs.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
   1579     TESTINSN_un_f64("vabs.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
   1580     TESTINSN_un_f32("vabs.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
   1581     TESTINSN_un_f32("vabs.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
   1582     TESTINSN_un_f32("vabs.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
   1583     TESTINSN_un_f32("vabs.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
   1584     TESTINSN_un_f32("vabs.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
   1585     TESTINSN_un_f32("vabs.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
   1586     TESTINSN_un_f32("vabs.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
   1587     TESTINSN_un_f32("vabs.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
   1588     TESTINSN_un_f32("vabs.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
   1589     TESTINSN_un_f32("vabs.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
   1590 
   1591     printf("---- VNEG ----\n");
   1592     TESTINSN_un_f64("vneg.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
   1593     TESTINSN_un_f64("vneg.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
   1594     TESTINSN_un_f64("vneg.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
   1595     TESTINSN_un_f64("vneg.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
   1596     TESTINSN_un_f64("vneg.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1597     TESTINSN_un_f64("vneg.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1598     TESTINSN_un_f64("vneg.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
   1599     TESTINSN_un_f64("vneg.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
   1600     TESTINSN_un_f64("vneg.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
   1601     TESTINSN_un_f64("vneg.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
   1602     TESTINSN_un_f32("vneg.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
   1603     TESTINSN_un_f32("vneg.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
   1604     TESTINSN_un_f32("vneg.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
   1605     TESTINSN_un_f32("vneg.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
   1606     TESTINSN_un_f32("vneg.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
   1607     TESTINSN_un_f32("vneg.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
   1608     TESTINSN_un_f32("vneg.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
   1609     TESTINSN_un_f32("vneg.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
   1610     TESTINSN_un_f32("vneg.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
   1611     TESTINSN_un_f32("vneg.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
   1612 
   1613     printf("---- VMOV (register) ----\n");
   1614     TESTINSN_un_f64("vmov.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
   1615     TESTINSN_un_f64("vmov.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
   1616     TESTINSN_un_f64("vmov.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
   1617     TESTINSN_un_f64("vmov.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
   1618     TESTINSN_un_f64("vmov.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1619     TESTINSN_un_f64("vmov.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1620     TESTINSN_un_f64("vmov.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
   1621     TESTINSN_un_f64("vmov.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
   1622     TESTINSN_un_f64("vmov.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
   1623     TESTINSN_un_f64("vmov.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
   1624     TESTINSN_un_f32("vmov.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
   1625     TESTINSN_un_f32("vmov.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
   1626     TESTINSN_un_f32("vmov.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
   1627     TESTINSN_un_f32("vmov.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
   1628     TESTINSN_un_f32("vmov.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
   1629     TESTINSN_un_f32("vmov.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
   1630     TESTINSN_un_f32("vmov.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
   1631     TESTINSN_un_f32("vmov.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
   1632     TESTINSN_un_f32("vmov.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
   1633     TESTINSN_un_f32("vmov.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
   1634 
   1635     printf("---- VSQRT ----\n");
   1636     TESTINSN_un_f64("vsqrt.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
   1637     TESTINSN_un_f64("vsqrt.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
   1638     TESTINSN_un_f64("vsqrt.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
   1639     TESTINSN_un_f64("vsqrt.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
   1640     TESTINSN_un_f64("vsqrt.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1641     TESTINSN_un_f64("vsqrt.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
   1642     TESTINSN_un_f64("vsqrt.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
   1643     TESTINSN_un_f64("vsqrt.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
   1644     TESTINSN_un_f64("vsqrt.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
   1645     TESTINSN_un_f64("vsqrt.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
   1646     TESTINSN_un_f32("vsqrt.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
   1647     TESTINSN_un_f32("vsqrt.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
   1648     TESTINSN_un_f32("vsqrt.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
   1649     TESTINSN_un_f32("vsqrt.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
   1650     TESTINSN_un_f32("vsqrt.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
   1651     TESTINSN_un_f32("vsqrt.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
   1652     TESTINSN_un_f32("vsqrt.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
   1653     TESTINSN_un_f32("vsqrt.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
   1654     TESTINSN_un_f32("vsqrt.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
   1655     TESTINSN_un_f32("vsqrt.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
   1656 
   1657     printf("---- VCVT (integer <-> fp) ----\n");
   1658     TESTINSN_un_f32("vcvt.u32.f32 s0,  s1",  s0,  s1,  i32, f2u(3.2));
   1659     TESTINSN_un_f32("vcvt.u32.f32 s10, s11", s10, s11, i32, f2u(3e22));
   1660     TESTINSN_un_f32("vcvt.u32.f32 s15, s4",  s15, s4,  i32, f2u(3e9));
   1661     TESTINSN_un_f32("vcvt.u32.f32 s25, s24", s25, s24, i32, f2u(-0.5));
   1662     TESTINSN_un_f32("vcvt.u32.f32 s19, s21", s19, s21, i32, f2u(-7.1));
   1663     TESTINSN_un_f32("vcvt.u32.f32 s12, s8",  s12, s8,  i32, f2u(8.0 - 1.0/1024.0));
   1664     TESTINSN_un_f32("vcvt.u32.f32 s12, s18", s12, s18, i32, f2u(-8.0 + 1.0/1024.0));
   1665     TESTINSN_un_f32("vcvt.u32.f32 s30, s1",  s30, s1, i32, f2u(0.0));
   1666     TESTINSN_un_f32("vcvt.u32.f32 s11, s1",  s11, s1, i32, f2u(INFINITY));
   1667     TESTINSN_un_f32("vcvt.u32.f32 s21, s12", s21, s12, i32, f2u(-INFINITY));
   1668     TESTINSN_un_f32("vcvt.u32.f32 s20, s11", s20, s11, i32, f2u(NAN));
   1669     TESTINSN_un_f32("vcvt.s32.f32 s29, s13", s29, s13, i32, f2u(NAN));
   1670     TESTINSN_un_f32("vcvt.s32.f32 s9,  s19", s9,  s19, i32, f2u(0.0));
   1671     TESTINSN_un_f32("vcvt.s32.f32 s0,  s17", s0,  s17, i32, f2u(INFINITY));
   1672     TESTINSN_un_f32("vcvt.s32.f32 s0,  s1",  s0,  s1, i32, f2u(-INFINITY));
   1673     TESTINSN_un_f32("vcvt.s32.f32 s30, s11", s30, s11, i32, f2u(3.2));
   1674     TESTINSN_un_f32("vcvt.s32.f32 s20, s21", s20, s21, i32, f2u(3e22));
   1675     TESTINSN_un_f32("vcvt.s32.f32 s15, s14", s15, s14, i32, f2u(3e9));
   1676     TESTINSN_un_f32("vcvt.s32.f32 s15, s24", s15, s24, i32, f2u(-0.5));
   1677     TESTINSN_un_f32("vcvt.s32.f32 s15, s29", s15, s29, i32, f2u(-7.1));
   1678     TESTINSN_un_f32("vcvt.s32.f32 s12, s31", s12, s31, i32, f2u(8.0 - 1.0/1024.0));
   1679     TESTINSN_un_f32("vcvt.s32.f32 s1,  s8",  s1,  s8, i32, f2u(-8.0 + 1.0/1024.0));
   1680 
   1681     TESTINSN_un_f32("vcvt.f32.u32 s30, s1",  s30, s1, i32, f2u(7));
   1682     TESTINSN_un_f32("vcvt.f32.u32 s10, s17", s10, s17, i32, f2u(1 << 31));
   1683     TESTINSN_un_f32("vcvt.f32.u32 s20, s1",  s20, s1, i32, f2u((1U << 31) + 1));
   1684     TESTINSN_un_f32("vcvt.f32.u32 s24, s26", s24, s26, i32, f2u((1U << 31) - 1));
   1685     TESTINSN_un_f32("vcvt.f32.u32 s0,  s14", s0,  s14, i32, f2u(0x30a0bcef));
   1686     TESTINSN_un_f32("vcvt.f32.u32 s11, s1",  s11, s1, i32, f2u(INFINITY));
   1687     TESTINSN_un_f32("vcvt.f32.u32 s21, s12", s21, s12, i32, f2u(-INFINITY));
   1688     TESTINSN_un_f32("vcvt.f32.u32 s29, s13", s29, s13, i32, f2u(NAN));
   1689     TESTINSN_un_f32("vcvt.f32.s32 s0,  s1",  s0,  s1, i32, f2u(7));
   1690     TESTINSN_un_f32("vcvt.f32.s32 s30, s31", s30, s31, i32, f2u(1 << 31));
   1691     TESTINSN_un_f32("vcvt.f32.s32 s0,  s12", s0,  s12, i32, f2u((1U << 31) + 1));
   1692     TESTINSN_un_f32("vcvt.f32.s32 s10, s16", s10, s16, i32, f2u((1U << 31) - 1));
   1693     TESTINSN_un_f32("vcvt.f32.s32 s1,  s8",  s1,  s8, i32, f2u(-8.0 + 1.0/1024.0));
   1694     TESTINSN_un_f32("vcvt.f32.s32 s29, s13", s29, s13, i32, f2u(NAN));
   1695     TESTINSN_un_f32("vcvt.f32.s32 s9,  s19", s9,  s19, i32, f2u(0.0));
   1696     TESTINSN_un_f32("vcvt.f32.s32 s0,  s17", s0,  s17, i32, f2u(INFINITY));
   1697     TESTINSN_un_f32("vcvt.f32.s32 s0,  s1",  s0,  s1, i32, f2u(-INFINITY));
   1698 
   1699     TESTINSN_cvt_i32_f64("vcvt.u32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
   1700     TESTINSN_cvt_i32_f64("vcvt.u32.f64 s13, d26", s13, d26, f2u0(234.54), f2u1(234.54));
   1701     TESTINSN_cvt_i32_f64("vcvt.u32.f64 s29, d30", s29, d30, f2u0(46245.345), f2u1(46245.345));
   1702     TESTINSN_cvt_i32_f64("vcvt.u32.f64 s30, d21", s30, d21, f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0));
   1703     TESTINSN_cvt_i32_f64("vcvt.u32.f64 s11, d8",  s11, d8,  f2u0(INFINITY), f2u1(INFINITY));
   1704     TESTINSN_cvt_i32_f64("vcvt.u32.f64 s8,  d12", s8,  d12, f2u0(-INFINITY), f2u1(-INFINITY));
   1705     TESTINSN_cvt_i32_f64("vcvt.u32.f64 s19, d7",  s19, d7,  f2u0(NAN), f2u1(NAN));
   1706     TESTINSN_cvt_i32_f64("vcvt.u32.f64 s16, d16", s16, d16, f2u0(76.67), f2u1(76.67));
   1707     TESTINSN_cvt_i32_f64("vcvt.s32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
   1708     TESTINSN_cvt_i32_f64("vcvt.s32.f64 s13, d26", s13, d26, f2u0(234.54), f2u1(234.54));
   1709     TESTINSN_cvt_i32_f64("vcvt.s32.f64 s29, d30", s29, d30, f2u0(46245.345), f2u1(46245.345));
   1710     TESTINSN_cvt_i32_f64("vcvt.s32.f64 s30, d21", s30, d21, f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0));
   1711     TESTINSN_cvt_i32_f64("vcvt.s32.f64 s11, d8",  s11, d8,  f2u0(INFINITY), f2u1(INFINITY));
   1712     TESTINSN_cvt_i32_f64("vcvt.s32.f64 s8,  d12", s8,  d12, f2u0(-INFINITY), f2u1(-INFINITY));
   1713     TESTINSN_cvt_i32_f64("vcvt.s32.f64 s19, d7",  s19, d7,  f2u0(NAN), f2u1(NAN));
   1714     TESTINSN_cvt_i32_f64("vcvt.s32.f64 s16, d16", s16, d16, f2u0(76.67), f2u1(76.67));
   1715 
   1716     TESTINSN_cvt_f64_i32("vcvt.f64.u32 d0,  s1",  d0,  s1,  f2u(3.2));
   1717     TESTINSN_cvt_f64_i32("vcvt.f64.u32 d30, s21", d30, s21, f2u(-656.42));
   1718     TESTINSN_cvt_f64_i32("vcvt.f64.u32 d16, s12", d16, s12, f2u(870.024));
   1719     TESTINSN_cvt_f64_i32("vcvt.f64.u32 d29, s7",  d29, s7,  f2u(-2543.4506));
   1720     TESTINSN_cvt_f64_i32("vcvt.f64.u32 d12, s28", d12, s28, f2u(5.00003245));
   1721     TESTINSN_cvt_f64_i32("vcvt.f64.u32 d7,  s5",  d7,  s5,  f2u(-INFINITY));
   1722     TESTINSN_cvt_f64_i32("vcvt.f64.u32 d21, s20", d21, s20, f2u(INFINITY));
   1723     TESTINSN_cvt_f64_i32("vcvt.f64.u32 d11, s11", d11, s11, f2u(NAN));
   1724     TESTINSN_cvt_f64_i32("vcvt.f64.s32 d0,  s1",  d0,  s1,  f2u(3.2));
   1725     TESTINSN_cvt_f64_i32("vcvt.f64.s32 d30, s21", d30, s21, f2u(-656.42));
   1726     TESTINSN_cvt_f64_i32("vcvt.f64.s32 d16, s12", d16, s12, f2u(870.024));
   1727     TESTINSN_cvt_f64_i32("vcvt.f64.s32 d29, s7",  d29, s7,  f2u(-2543.4506));
   1728     TESTINSN_cvt_f64_i32("vcvt.f64.s32 d12, s28", d12, s28, f2u(5.00003245));
   1729     TESTINSN_cvt_f64_i32("vcvt.f64.s32 d7,  s5",  d7,  s5,  f2u(-INFINITY));
   1730     TESTINSN_cvt_f64_i32("vcvt.f64.s32 d21, s20", d21, s20, f2u(INFINITY));
   1731     TESTINSN_cvt_f64_i32("vcvt.f64.s32 d11, s11", d11, s11, f2u(NAN));
   1732 
   1733 /*    printf("---- VCVT (fixed <-> fp) ----\n");
   1734     TESTINSN_un_f32("vcvt.u32.f32 s0,  s0,  #3",  s0,  s0, i32, f2u(3.2));
   1735     TESTINSN_un_f32("vcvt.u32.f32 s11, s11, #1",  s11, s11, i32, f2u(3e22));
   1736     TESTINSN_un_f32("vcvt.u32.f32 s15, s15, #32", s15, s15, i32, f2u(3e9));
   1737     TESTINSN_un_f32("vcvt.u32.f32 s4,  s4,  #7",  s4,  s4, i32, f2u(-0.5));
   1738     TESTINSN_un_f32("vcvt.u32.f32 s6,  s6,  #4",  s6,  s6, i32, f2u(-7.1));
   1739     TESTINSN_un_f32("vcvt.u32.f32 s12, s12, #3",  s12, s12, i32, f2u(8.0 - 1.0/1024.0));
   1740     TESTINSN_un_f32("vcvt.u32.f32 s8,  s8,  #3",  s8,  s8, i32, f2u(-8.0 + 1.0/1024.0));
   1741     TESTINSN_un_f32("vcvt.u32.f32 s30, s30, #3",  s30, s30, i32, f2u(NAN));
   1742     TESTINSN_un_f32("vcvt.u32.f32 s20, s20, #3",  s20, s20, i32, f2u(0.0));
   1743     TESTINSN_un_f32("vcvt.u32.f32 s13, s13, #6",  s13, s13, i32, f2u(INFINITY));
   1744     TESTINSN_un_f32("vcvt.u32.f32 s16, s16, #3",  s16, s16, i32, f2u(-INFINITY));
   1745     TESTINSN_un_f32("vcvt.s32.f32 s1,  s1,  #5",  s1,  s1, i32, f2u(3.2));
   1746     TESTINSN_un_f32("vcvt.s32.f32 s21, s21, #1",  s21, s21, i32, f2u(3e22));
   1747     TESTINSN_un_f32("vcvt.s32.f32 s17, s17, #8",  s17, s17, i32, f2u(3e9));
   1748     TESTINSN_un_f32("vcvt.s32.f32 s27, s27, #2",  s27, s27, i32, f2u(-0.5));
   1749     TESTINSN_un_f32("vcvt.s32.f32 s15, s15, #1",  s15, s15, i32, f2u(-7.1));
   1750     TESTINSN_un_f32("vcvt.s32.f32 s8,  s8,  #2",  s8,  s8, i32, f2u(8.0 - 1.0/1024.0));
   1751     TESTINSN_un_f32("vcvt.s32.f32 s31, s31, #2",  s31, s31, i32, f2u(-8.0 + 1.0/1024.0));
   1752     TESTINSN_un_f32("vcvt.s32.f32 s10, s10, #3",  s10, s10, i32, f2u(0.0));
   1753     TESTINSN_un_f32("vcvt.s32.f32 s13, s13, #9",  s13, s13, i32, f2u(INFINITY));
   1754     TESTINSN_un_f32("vcvt.s32.f32 s22, s22, #3",  s22, s22, i32, f2u(-INFINITY));
   1755     TESTINSN_un_f32("vcvt.s32.f32 s1,  s1,  #7",  s1,  s1, i32, f2u(NAN));
   1756 
   1757     TESTINSN_un_f32("vcvt.f32.u32 s0,  s0,  #3",  s0,  s0, i32, f2u(3.2));
   1758     TESTINSN_un_f32("vcvt.f32.u32 s11, s11, #1",  s11, s11, i32, f2u(3e22));
   1759     TESTINSN_un_f32("vcvt.f32.u32 s15, s15, #32", s15, s15, i32, f2u(3e9));
   1760     TESTINSN_un_f32("vcvt.f32.u32 s4,  s4,  #7",  s4,  s4, i32, f2u(-0.5));
   1761     TESTINSN_un_f32("vcvt.f32.u32 s6,  s6,  #4",  s6,  s6, i32, f2u(-7.1));
   1762     TESTINSN_un_f32("vcvt.f32.u32 s12, s12, #3",  s12, s12, i32, f2u(8.0 - 1.0/1024.0));
   1763     TESTINSN_un_f32("vcvt.f32.u32 s8,  s8,  #3",  s8,  s8, i32, f2u(-8.0 + 1.0/1024.0));
   1764     TESTINSN_un_f32("vcvt.f32.u32 s30, s30, #3",  s30, s30, i32, f2u(NAN));
   1765     TESTINSN_un_f32("vcvt.f32.u32 s20, s20, #3",  s20, s20, i32, f2u(0.0));
   1766     TESTINSN_un_f32("vcvt.f32.u32 s13, s13, #6",  s13, s13, i32, f2u(INFINITY));
   1767     TESTINSN_un_f32("vcvt.f32.u32 s16, s16, #3",  s16, s16, i32, f2u(-INFINITY));
   1768     TESTINSN_un_f32("vcvt.f32.s32 s1,  s1,  #5",  s1,  s1, i32, f2u(3.2));
   1769     TESTINSN_un_f32("vcvt.f32.s32 s21, s21, #1",  s21, s21, i32, f2u(3e22));
   1770     TESTINSN_un_f32("vcvt.f32.s32 s17, s17, #8",  s17, s17, i32, f2u(3e9));
   1771     TESTINSN_un_f32("vcvt.f32.s32 s27, s27, #2",  s27, s27, i32, f2u(-0.5));
   1772     TESTINSN_un_f32("vcvt.f32.s32 s15, s15, #1",  s15, s15, i32, f2u(-7.1));
   1773     TESTINSN_un_f32("vcvt.f32.s32 s8,  s8,  #2",  s8,  s8, i32, f2u(8.0 - 1.0/1024.0));
   1774     TESTINSN_un_f32("vcvt.f32.s32 s31, s31, #2",  s31, s31, i32, f2u(-8.0 + 1.0/1024.0));
   1775     TESTINSN_un_f32("vcvt.f32.s32 s10, s10, #3",  s10, s10, i32, f2u(0.0));
   1776     TESTINSN_un_f32("vcvt.f32.s32 s13, s13, #9",  s13, s13, i32, f2u(INFINITY));
   1777     TESTINSN_un_f32("vcvt.f32.s32 s22, s22, #3",  s22, s22, i32, f2u(-INFINITY));
   1778     TESTINSN_un_f32("vcvt.f32.s32 s1,  s1,  #7",  s1,  s1, i32, f2u(NAN));
   1779     */
   1780 
   1781     printf("---- VCVT (single <-> double) ----\n");
   1782     TESTINSN_un_cvt_ds("vcvt.f64.f32 d0,  s1",  d0,  s1,  f2u(3.2));
   1783     TESTINSN_un_cvt_ds("vcvt.f64.f32 d29, s21",  d29, s21, f2u(234.65));
   1784     TESTINSN_un_cvt_ds("vcvt.f64.f32 d16, s30",  d16, s30, f2u(-700.63));
   1785     TESTINSN_un_cvt_ds("vcvt.f64.f32 d11, s7",  d11, s7,  f2u(8.0 - 1.0/1024.0));
   1786     TESTINSN_un_cvt_ds("vcvt.f64.f32 d30, s3",  d30, s3,  f2u(-8.0 + 1.0/1024.0));
   1787     TESTINSN_un_cvt_ds("vcvt.f64.f32 d7,  s19", d7,  s19, f2u(12.43303));
   1788     TESTINSN_un_cvt_ds("vcvt.f64.f32 d2,  s11",  d2,  s11, f2u(65.4235));
   1789     TESTINSN_un_cvt_ds("vcvt.f64.f32 d9,  s21",  d9,  s21, f2u(NAN));
   1790     TESTINSN_un_cvt_ds("vcvt.f64.f32 d17, s29",  d17, s29, f2u(-INFINITY));
   1791     TESTINSN_un_cvt_ds("vcvt.f64.f32 d19, s0",  d19, s0,  f2u(INFINITY));
   1792     TESTINSN_un_cvt_sd("vcvt.f32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
   1793     TESTINSN_un_cvt_sd("vcvt.f32.f64 s29, d21",  s29, d21, f2u0(234.65), f2u1(234.65));
   1794     TESTINSN_un_cvt_sd("vcvt.f32.f64 s16, d30",  s16, d30, f2u0(-700.63), f2u1(-700.63));
   1795     TESTINSN_un_cvt_sd("vcvt.f32.f64 s11, d7",  s11, d7,  f2u0(8.0 - 1.0/1024.0), f2u1(8.0 - 1.0/1024.0));
   1796     TESTINSN_un_cvt_sd("vcvt.f32.f64 s30, d3",  s30, d3,  f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0));
   1797     TESTINSN_un_cvt_sd("vcvt.f32.f64 s7,  d19", s7,  d19, f2u0(12.43303), f2u1(12.43303));
   1798     TESTINSN_un_cvt_sd("vcvt.f32.f64 s2,  d11",  s2,  d11, f2u0(65.4235), f2u1(65.4235));
   1799     TESTINSN_un_cvt_sd("vcvt.f32.f64 s9,  d21",  s9,  d21, f2u0(NAN), f2u1(NAN));
   1800     TESTINSN_un_cvt_sd("vcvt.f32.f64 s17, d29",  s17, d29, f2u0(-INFINITY), f2u1(-INFINITY));
   1801     TESTINSN_un_cvt_sd("vcvt.f32.f64 s19, d0",  s19, d0,  f2u0(INFINITY), f2u1(INFINITY));
   1802 
   1803     printf("---- VCMP ----\n");
   1804     TESTINSN_cmp_f64("vcmp.f64  d0,  d19",  d0, f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
   1805     TESTINSN_cmp_f64("vcmp.f64  d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(3425.5), f2u1(3425.5));
   1806     TESTINSN_cmp_f64("vcmp.f64  d21, d30",  d21, f2u0(-4524.5), f2u1(-4524.5), d30, f2u0(-452345.5), f2u1(-452345.5));
   1807     TESTINSN_cmp_f64("vcmp.f64  d7,  d28",  d7,  f2u0(425.5), f2u1(425.5), d28, f2u0(-456.3), f2u1(-456.3));
   1808     TESTINSN_cmp_f64("vcmp.f64  d29, d3",   d29, f2u0(INFINITY), f2u1(INFINITY), d3, f2u0(34562.45), f2u1(34562.45));
   1809     TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(2.0), f2u1(2.0), d22, f2u0(2.0), f2u1(2.0));
   1810     TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(12.023), f2u1(12.023), d22, f2u0(12.023), f2u1(12.023));
   1811     TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(0.0), f2u1(0.0), d22, f2u0(0.0), f2u1(0.0));
   1812     TESTINSN_cmp_f64("vcmp.f64  d9,  d2",   d9,  f2u0(INFINITY), f2u1(INFINITY), d2, f2u0(INFINITY), f2u1(INFINITY));
   1813     TESTINSN_cmp_f64("vcmp.f64  d30, d15",  d30, f2u0(-INFINITY), f2u1(-INFINITY), d15, f2u0(-INFINITY), f2u1(-INFINITY));
   1814     TESTINSN_cmp_f64("vcmp.f64  d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
   1815     TESTINSN_cmp_f64("vcmp.f64  d11, d16",  d11, f2u0(-5463.7), f2u1(-5463.7), d16, f2u0(-INFINITY), f2u1(-INFINITY));
   1816     TESTINSN_cmp_f64("vcmp.f64  d21, d30",  d21, f2u0(-INFINITY), f2u1(-INFINITY), d30, f2u0(86.7), f2u1(86.7));
   1817     TESTINSN_cmp_f64("vcmp.f64  d7,  d28",  d7,  f2u0(INFINITY), f2u1(INFINITY), d28, f2u0(-8567.456), f2u1(-8567.456));
   1818     TESTINSN_cmp_f64("vcmp.f64  d29, d3",   d29, f2u0(-524.4), f2u1(-524.4), d3, f2u0(654.5), f2u1(654.5));
   1819     TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(NAN), f2u1(NAN), d22, f2u0(-6.46524), f2u1(-6.46524));
   1820     TESTINSN_cmp_f64("vcmp.f64  d9,  d2",   d9,  f2u0(56.563), f2u1(56.563), d2, f2u0(56.56), f2u1(56.56));
   1821     TESTINSN_cmp_f64("vcmp.f64  d30, d15",  d30, f2u0(5365.60001), f2u1(5365.60001), d15, f2u0(56763.5), f2u1(56763.5));
   1822     TESTINSN_cmp_f64("vcmpe.f64 d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
   1823     TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(3425.5), f2u1(3425.5));
   1824     TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(NAN), f2u1(NAN));
   1825     TESTINSN_cmp_f64("vcmpe.f64 d21, d30",  d21, f2u0(-4524.5), f2u1(-4524.5), d30, f2u0(-452345.5), f2u1(-452345.5));
   1826     TESTINSN_cmp_f64("vcmpe.f64 d7,  d28",  d7,  f2u0(425.5), f2u1(425.5), d28, f2u0(-456.3), f2u1(-456.3));
   1827     TESTINSN_cmp_f64("vcmpe.f64 d29, d3",   d29, f2u0(INFINITY), f2u1(INFINITY), d3, f2u0(34562.45), f2u1(34562.45));
   1828     TESTINSN_cmp_f64("vcmpe.f64 d3,  d22",  d3,  f2u0(2.0), f2u1(2.0), d22, f2u0(2.0), f2u1(2.0));
   1829     TESTINSN_cmp_f64("vcmpe.f64 d9,  d2",   d9,  f2u0(INFINITY), f2u1(INFINITY), d2, f2u0(INFINITY), f2u1(INFINITY));
   1830     TESTINSN_cmp_f64("vcmpe.f64 d30, d15",  d30, f2u0(-INFINITY), f2u1(-INFINITY), d15, f2u0(-INFINITY), f2u1(-INFINITY));
   1831     TESTINSN_cmp_f64("vcmpe.f64 d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
   1832     TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(-5463.7), f2u1(-5463.7), d16, f2u0(-INFINITY), f2u1(-INFINITY));
   1833     TESTINSN_cmp_f64("vcmpe.f64 d21, d30",  d21, f2u0(-INFINITY), f2u1(-INFINITY), d30, f2u0(86.7), f2u1(86.7));
   1834     TESTINSN_cmp_f64("vcmpe.f64 d7,  d28",  d7,  f2u0(INFINITY), f2u1(INFINITY), d28, f2u0(-8567.456), f2u1(-8567.456));
   1835     TESTINSN_cmp_f64("vcmpe.f64 d29, d3",   d29, f2u0(-524.4), f2u1(-524.4), d3, f2u0(654.5), f2u1(654.5));
   1836     TESTINSN_cmp_f64("vcmpe.f64 d3,  d22",  d3,  f2u0(4624.5), f2u1(4624.5), d22, f2u0(-6.46524), f2u1(-6.46524));
   1837     TESTINSN_cmp_f64("vcmpe.f64 d9,  d2",   d9,  f2u0(56.563), f2u1(56.563), d2, f2u0(56.56), f2u1(56.56));
   1838     TESTINSN_cmp_f64("vcmpe.f64 d30, d15",  d30, f2u0(5365.60001), f2u1(5365.60001), d15, f2u0(56763.5), f2u1(56763.5));
   1839 
   1840     TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
   1841     TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
   1842     TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(2.0),      s22, f2u(2.0));
   1843     TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
   1844     TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
   1845     TESTINSN_cmp_f32("vcmp.f32  s21, s30",  s21, f2u(-4524.5),  s30, f2u(-452345.5));
   1846     TESTINSN_cmp_f32("vcmp.f32  s7,  s28",  s7,  f2u(425.5),    s28, f2u(-456.3));
   1847     TESTINSN_cmp_f32("vcmp.f32  s29, s3",   s29, f2u(INFINITY), s3, f2u(34562.45));
   1848     TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(12.023),   s22, f2u(12.023));
   1849     TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(0.0),      s22, f2u(0.0));
   1850     TESTINSN_cmp_f32("vcmp.f32  s9,  s2",   s9,  f2u(INFINITY), s2, f2u(INFINITY));
   1851     TESTINSN_cmp_f32("vcmp.f32  s30, s15",  s30, f2u(-INFINITY),s15, f2u(-INFINITY));
   1852     TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
   1853     TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(-5463.7),  s16, f2u(-INFINITY));
   1854     TESTINSN_cmp_f32("vcmp.f32  s21, s30",  s21, f2u(-INFINITY),s30, f2u(86.7));
   1855     TESTINSN_cmp_f32("vcmp.f32  s7,  s28",  s7,  f2u(INFINITY), s28, f2u(-8567.456));
   1856     TESTINSN_cmp_f32("vcmp.f32  s29, s3",   s29, f2u(-524.4),   s3, f2u(654.5));
   1857     TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(NAN),      s22, f2u(-6.46524));
   1858     TESTINSN_cmp_f32("vcmp.f32  s9,  s2",   s9,  f2u(56.563),   s2, f2u(56.56));
   1859     TESTINSN_cmp_f32("vcmp.f32  s30, s15",  s30, f2u(5365.60001), s15, f2u(56763.5));
   1860     TESTINSN_cmp_f32("vcmpe.f32 s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
   1861     TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
   1862     TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(23475.45), s16, f2u(NAN));
   1863     TESTINSN_cmp_f32("vcmpe.f32 s21, s30",  s21, f2u(-4524.5),  s30, f2u(-452345.5));
   1864     TESTINSN_cmp_f32("vcmpe.f32 s7,  s28",  s7,  f2u(425.5),    s28, f2u(-456.3));
   1865     TESTINSN_cmp_f32("vcmpe.f32 s29, s3",   s29, f2u(INFINITY), s3, f2u(34562.45));
   1866     TESTINSN_cmp_f32("vcmpe.f32 s3,  s22",  s3,  f2u(2.0),      s22, f2u(2.0));
   1867     TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(INFINITY), s2, f2u(INFINITY));
   1868     TESTINSN_cmp_f32("vcmpe.f32 s30, s15",  s30, f2u(-INFINITY), s15, f2u(-INFINITY));
   1869     TESTINSN_cmp_f32("vcmpe.f32 s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
   1870     TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(-5463.7),  s16, f2u(-INFINITY));
   1871     TESTINSN_cmp_f32("vcmpe.f32 s21, s30",  s21, f2u(-INFINITY), s30, f2u(86.7));
   1872     TESTINSN_cmp_f32("vcmpe.f32 s7,  s28",  s7,  f2u(INFINITY), s28, f2u(-8567.456));
   1873     TESTINSN_cmp_f32("vcmpe.f32 s29, s3",   s29, f2u(-524.4),   s3, f2u(654.5));
   1874     TESTINSN_cmp_f32("vcmpe.f32 s3,  s22",  s3,  f2u(4624.5),   s22, f2u(-6.46524));
   1875     TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(56.563),   s2, f2u(56.56));
   1876     TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(56.56));
   1877     TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(10.0),   s2, f2u(0.0));
   1878     TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(0.0));
   1879     TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(0.0));
   1880 
   1881     printf("---- VCMP (zero) ----\n");
   1882     TESTINSN_cmpz_f64("vcmp.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
   1883     TESTINSN_cmpz_f64("vcmp.f64 d11", d11, f2u0(23475.45), f2u1(23475.45));
   1884     TESTINSN_cmpz_f64("vcmp.f64 d21", d21, f2u0(-4524.5), f2u1(-4524.5));
   1885     TESTINSN_cmpz_f64("vcmp.f64 d7",  d7,  f2u0(425.5), f2u1(425.5));
   1886     TESTINSN_cmpz_f64("vcmp.f64 d29", d29, f2u0(INFINITY), f2u1(INFINITY));
   1887     TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(2.0), f2u1(2.0));
   1888     TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(0.0), f2u1(0.0));
   1889     TESTINSN_cmpz_f64("vcmp.f64 d9",  d9,  f2u0(INFINITY), f2u1(INFINITY));
   1890     TESTINSN_cmpz_f64("vcmp.f64 d30", d30, f2u0(-INFINITY), f2u1(-INFINITY));
   1891     TESTINSN_cmpz_f64("vcmp.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
   1892     TESTINSN_cmpz_f64("vcmp.f64 d11", d11, f2u0(-5463.7), f2u1(-5463.7));
   1893     TESTINSN_cmpz_f64("vcmp.f64 d21", d21, f2u0(-INFINITY), f2u1(-INFINITY));
   1894     TESTINSN_cmpz_f64("vcmp.f64 d7",  d7,  f2u0(INFINITY), f2u1(INFINITY));
   1895     TESTINSN_cmpz_f64("vcmp.f64 d29", d29, f2u0(-524.4), f2u1(-524.4));
   1896     TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(4624.5), f2u1(4624.5));
   1897     TESTINSN_cmpz_f64("vcmp.f64 d9",  d9,  f2u0(NAN), f2u1(NAN));
   1898     TESTINSN_cmpz_f64("vcmp.f64 d30", d30, f2u0(5365.60001), f2u1(5365.60001));
   1899 
   1900     TESTINSN_cmpz_f64("vcmpe.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
   1901     TESTINSN_cmpz_f64("vcmpe.f64 d11", d11, f2u0(23475.45), f2u1(23475.45));
   1902     TESTINSN_cmpz_f64("vcmpe.f64 d21", d21, f2u0(-4524.5), f2u1(-4524.5));
   1903     TESTINSN_cmpz_f64("vcmpe.f64 d7",  d7,  f2u0(425.5), f2u1(425.5));
   1904     TESTINSN_cmpz_f64("vcmpe.f64 d29", d29, f2u0(INFINITY), f2u1(INFINITY));
   1905     TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(2.0), f2u1(2.0));
   1906     TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(0.0), f2u1(0.0));
   1907     TESTINSN_cmpz_f64("vcmpe.f64 d9",  d9,  f2u0(INFINITY), f2u1(INFINITY));
   1908     TESTINSN_cmpz_f64("vcmpe.f64 d30", d30, f2u0(-INFINITY), f2u1(-INFINITY));
   1909     TESTINSN_cmpz_f64("vcmpe.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
   1910     TESTINSN_cmpz_f64("vcmpe.f64 d11", d11, f2u0(-5463.7), f2u1(-5463.7));
   1911     TESTINSN_cmpz_f64("vcmpe.f64 d21", d21, f2u0(-INFINITY), f2u1(-INFINITY));
   1912     TESTINSN_cmpz_f64("vcmpe.f64 d7",  d7,  f2u0(INFINITY), f2u1(INFINITY));
   1913     TESTINSN_cmpz_f64("vcmpe.f64 d29", d29, f2u0(-524.4), f2u1(-524.4));
   1914     TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(4624.5), f2u1(4624.5));
   1915     TESTINSN_cmpz_f64("vcmpe.f64 d9",  d9,  f2u0(NAN), f2u1(NAN));
   1916     TESTINSN_cmpz_f64("vcmpe.f64 d30", d30, f2u0(5365.60001), f2u1(5365.60001));
   1917 
   1918     TESTINSN_cmpz_f32("vcmp.f32 s0",  s0,  f2u(-3.4567));
   1919     TESTINSN_cmpz_f32("vcmp.f32 s11", s11, f2u(23475.45));
   1920     TESTINSN_cmpz_f32("vcmp.f32 s21", s21, f2u(-4524.5));
   1921     TESTINSN_cmpz_f32("vcmp.f32 s7",  s7,  f2u(425.5));
   1922     TESTINSN_cmpz_f32("vcmp.f32 s29", s29, f2u(INFINITY));
   1923     TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(2.0));
   1924     TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(0.0));
   1925     TESTINSN_cmpz_f32("vcmp.f32 s9",  s9,  f2u(INFINITY));
   1926     TESTINSN_cmpz_f32("vcmp.f32 s30", s30, f2u(-INFINITY));
   1927     TESTINSN_cmpz_f32("vcmp.f32 s0",  s0,  f2u(-3.4567));
   1928     TESTINSN_cmpz_f32("vcmp.f32 s11", s11, f2u(-5463.7));
   1929     TESTINSN_cmpz_f32("vcmp.f32 s21", s21, f2u(-INFINITY));
   1930     TESTINSN_cmpz_f32("vcmp.f32 s7",  s7,  f2u(INFINITY));
   1931     TESTINSN_cmpz_f32("vcmp.f32 s29", s29, f2u(-524.4));
   1932     TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(4624.5));
   1933     TESTINSN_cmpz_f32("vcmp.f32 s9",  s9,  f2u(NAN));
   1934     TESTINSN_cmpz_f32("vcmp.f32 s30", s30, f2u(5365.60001));
   1935     TESTINSN_cmpz_f32("vcmpe.f32 s0",  s0,  f2u(-3.4567));
   1936     TESTINSN_cmpz_f32("vcmpe.f32 s11", s11, f2u(23475.45));
   1937     TESTINSN_cmpz_f32("vcmpe.f32 s21", s21, f2u(-4524.5));
   1938     TESTINSN_cmpz_f32("vcmpe.f32 s7",  s7,  f2u(425.5));
   1939     TESTINSN_cmpz_f32("vcmpe.f32 s29", s29, f2u(INFINITY));
   1940     TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(2.0));
   1941     TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(0.0));
   1942     TESTINSN_cmpz_f32("vcmpe.f32 s9",  s9,  f2u(INFINITY));
   1943     TESTINSN_cmpz_f32("vcmpe.f32 s30", s30, f2u(-INFINITY));
   1944     TESTINSN_cmpz_f32("vcmpe.f32 s0",  s0,  f2u(-3.4567));
   1945     TESTINSN_cmpz_f32("vcmpe.f32 s11", s11, f2u(-5463.7));
   1946     TESTINSN_cmpz_f32("vcmpe.f32 s21", s21, f2u(-INFINITY));
   1947     TESTINSN_cmpz_f32("vcmpe.f32 s7",  s7,  f2u(INFINITY));
   1948     TESTINSN_cmpz_f32("vcmpe.f32 s29", s29, f2u(-524.4));
   1949     TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(4624.5));
   1950     TESTINSN_cmpz_f32("vcmpe.f32 s9",  s9,  f2u(NAN));
   1951     TESTINSN_cmpz_f32("vcmpe.f32 s30", s30, f2u(5365.60001));
   1952 
   1953     int numbers[8] ={ 0xaa0, 0xbb1, 0xcc2, 0xdd3, 0x11a, 0x22b, 0x33c, 0x44d };
   1954 
   1955     printf("---- VLDR ----\n");
   1956     TESTINSN_vldr_f64("vldr d9,  [r6, #+4]",  d9,  r6,  (long) numbers + 8, 4);
   1957     TESTINSN_vldr_f64("vldr d16, [r9, #-4]",  d16, r9,  (long) numbers + 8, -4);
   1958     TESTINSN_vldr_f64("vldr d30, [r12]",      d30, r12, (long) numbers + 8, 0);
   1959     TESTINSN_vldr_f64("vldr d22, [r9, #+8]", d22, r9, (long) numbers + 8, 8);
   1960     TESTINSN_vldr_f64("vldr d29, [r2, #-8]",  d29, r2,  (long) numbers + 8, -8);
   1961     TESTINSN_vldr_f64("vldr d8,  [r8, #+8]",  d8,  r8,  (long) numbers + 8, 8);
   1962     TESTINSN_vldr_f64("vldr d11, [r12, #-4]", d11, r12, (long) numbers + 8, -4);
   1963     TESTINSN_vldr_f64("vldr d18, [r3]",       d18, r3,  (long) numbers + 8, 0);
   1964     TESTINSN_vldr_f64("vldr d5,  [r10, #+8]", d5,  r10, (long) numbers + 8, 8);
   1965     TESTINSN_vldr_f64("vldr d17, [r10]",      d17, r10, (long) numbers + 8, 0);
   1966     TESTINSN_vldr_f64("vldr d9,  [r9, #-4]", d9,  r9, (long) numbers + 8, -4);
   1967     TESTINSN_vldr_f64("vldr d29, [r4, #-8]",  d29, r4,  (long) numbers + 8, -8);
   1968     TESTINSN_vldr_f64("vldr d21, [r6, #+4]",  d21, r6,  (long) numbers + 8, 4);
   1969     TESTINSN_vldr_f64("vldr d8,  [r4]",       d8,  r4,  (long) numbers + 8, 0);
   1970     TESTINSN_vldr_f64("vldr d19, [r0, #-8]",  d19, r0,  (long) numbers + 8, -8);
   1971     TESTINSN_vldr_f64("vldr d10, [r3, #+4]",  d10, r3,  (long) numbers + 8, 4);
   1972     TESTINSN_vldr_f32("vldr s10, [r3, #+4]",  s10, r3,  (long) numbers + 8, 4);
   1973     TESTINSN_vldr_f32("vldr s9,  [r6, #+4]",  s9,  r6,  (long) numbers + 8, 4);
   1974     TESTINSN_vldr_f32("vldr s16, [r9, #-4]",  s16, r9,  (long) numbers + 8, -4);
   1975     TESTINSN_vldr_f32("vldr s30, [r12]",      s30, r12, (long) numbers + 8, 0);
   1976     TESTINSN_vldr_f32("vldr s22, [r9, #+8]", s22, r9, (long) numbers + 8, 8);
   1977     TESTINSN_vldr_f32("vldr s29, [r2, #-8]",  s29, r2,  (long) numbers + 8, -8);
   1978     TESTINSN_vldr_f32("vldr s8,  [r8, #+8]",  s8,  r8,  (long) numbers + 8, 8);
   1979     TESTINSN_vldr_f32("vldr s11, [r12, #-4]", s11, r12, (long) numbers + 8, -4);
   1980     TESTINSN_vldr_f32("vldr s18, [r3]",       s18, r3,  (long) numbers + 8, 0);
   1981     TESTINSN_vldr_f32("vldr s5,  [r10, #+8]", s5,  r10, (long) numbers + 8, 8);
   1982     TESTINSN_vldr_f32("vldr s17, [r10]",      s17, r10, (long) numbers + 8, 0);
   1983     TESTINSN_vldr_f32("vldr s9,  [r9, #-4]", s9,  r9, (long) numbers + 8, -4);
   1984     TESTINSN_vldr_f32("vldr s29, [r4, #-8]",  s29, r4,  (long) numbers + 8, -8);
   1985     TESTINSN_vldr_f32("vldr s21, [r6, #+4]",  s21, r6,  (long) numbers + 8, 4);
   1986     TESTINSN_vldr_f32("vldr s8,  [r4]",       s8,  r4,  (long) numbers + 8, 0);
   1987     TESTINSN_vldr_f32("vldr s19, [r0, #-8]",  s19, r0,  (long) numbers + 8, -8);
   1988     TESTINSN_vldr_f32("vldr s10, [r3, #+4]",  s10, r3,  (long) numbers + 8, 4);
   1989 
   1990     printf("---- VLDM (Increment After, writeback) ----\n");
   1991     TESTINSN_VLDMIAWB(r6,  d17, d7);
   1992     TESTINSN_VLDMIAWB(r4,  d11, d23);
   1993     TESTINSN_VLDMIAWB(r9, d29, d12);
   1994     TESTINSN_VLDMIAWB(r9,  d0,  d30);
   1995     TESTINSN_VLDMIAWB(r12, d8,  d24);
   1996     TESTINSN_VLDMIAWB(r3,  d27, d13);
   1997     TESTINSN_VLDMIAWB(r10, d20, d30);
   1998     TESTINSN_VLDMIAWB(r0,  d0,  d1);
   1999     TESTINSN_VLDMIAWB(r8,  d15, d19);
   2000     TESTINSN_VLDMIAWB(r3,  d31, d30);
   2001     TESTINSN_VLDMIAWB(r10, d6,  d23);
   2002     TESTINSN_VLDMIAWB(r8,  d8,  d16);
   2003     TESTINSN_VLDMIAWB(r9,  d13, d11);
   2004     TESTINSN_VLDMIAWB(r1,  d3,  d8);
   2005     TESTINSN_VLDMIAWB(r2,  d4,  d8);
   2006     TESTINSN_VLDMIAWB(r3,  d9,  d27);
   2007 
   2008     printf("---- VSTR ----\n");
   2009     TESTINSN_vstr64("vstr d9,  [r6, #+4]",  d9,  0xa0, r6,  (long) numbers + 8, 4);
   2010     TESTINSN_vstr64("vstr d16, [r9, #-4]",  d16, 0xb1, r9,  (long) numbers + 8, -4);
   2011     TESTINSN_vstr64("vstr d30, [r12]",      d30, 0xc2, r12, (long) numbers + 8, 0);
   2012     TESTINSN_vstr64("vstr d22, [r9, #+8]", d22, 0xd4, r9, (long) numbers + 8, 8);
   2013     TESTINSN_vstr64("vstr d29, [r2, #-8]",  d29, 0x00, r2,  (long) numbers + 8, -8);
   2014     TESTINSN_vstr64("vstr d8,  [r8, #+8]",  d8,  0x11, r8,  (long) numbers + 8, 8);
   2015     TESTINSN_vstr64("vstr d11, [r12, #-4]", d11, 0x22, r12, (long) numbers + 8, -4);
   2016     TESTINSN_vstr64("vstr d18, [r3]",       d18, 0x33, r3,  (long) numbers + 8, 0);
   2017     TESTINSN_vstr64("vstr d5,  [r10, #+8]", d5,  0x99, r10, (long) numbers + 8, 8);
   2018     TESTINSN_vstr64("vstr d17, [r10]",      d17, 0x77, r10, (long) numbers + 8, 0);
   2019     TESTINSN_vstr64("vstr d9,  [r9, #-4]", d9,  0xee, r9, (long) numbers + 8, -4);
   2020     TESTINSN_vstr64("vstr d29, [r4, #-8]",  d29, 0xff, r4,  (long) numbers + 8, -8);
   2021     TESTINSN_vstr64("vstr d10, [r3, #+4]",  d10, 0xbc, r3,  (long) numbers + 8, 4);
   2022     TESTINSN_vstr64("vstr d21, [r6, #+4]",  d21, 0x48, r6,  (long) numbers + 8, 4);
   2023     TESTINSN_vstr64("vstr d8,  [r4]",       d8,  0x1f, r4,  (long) numbers + 8, 0);
   2024     TESTINSN_vstr64("vstr d19, [r0, #-8]",  d19, 0xf9, r0,  (long) numbers + 8, -8);
   2025     TESTINSN_vstr32("vstr s9,  [r6,  #+4]", s9,  r6,  (long) numbers + 8, 4);
   2026     TESTINSN_vstr32("vstr s21, [r9, #-4]", s21, r9, (long) numbers + 8, -4);
   2027     TESTINSN_vstr32("vstr s4,  [r3,  #+8]", s4,  r3,  (long) numbers + 8, 8);
   2028     TESTINSN_vstr32("vstr s19, [r4,  #-8]", s19, r4,  (long) numbers + 8, -8);
   2029     TESTINSN_vstr32("vstr s29, [r8]",       s29, r8,  (long) numbers + 8, 0);
   2030     TESTINSN_vstr32("vstr s8,  [r12]",      s8,  r12, (long) numbers + 8, 0);
   2031     TESTINSN_vstr32("vstr s16, [r0,  #+4]", s16, r0,  (long) numbers + 8, 4);
   2032     TESTINSN_vstr32("vstr s0,  [r8,  #-4]", s0,  r8,  (long) numbers + 8, -4);
   2033     TESTINSN_vstr32("vstr s3,  [r9,  #+8]", s3,  r9,  (long) numbers + 8, 8);
   2034     TESTINSN_vstr32("vstr s9,  [r10, #-8]", s9,  r10, (long) numbers + 8, -8);
   2035     TESTINSN_vstr32("vstr s11, [r2]",       s11, r2,  (long) numbers + 8, 0);
   2036     TESTINSN_vstr32("vstr s30, [r0]",       s30, r0,  (long) numbers + 8, 0);
   2037 
   2038     printf("---- VSTM (Increment After, no writeback) ----\n");
   2039     TESTINSN_VSTMIAnoWB("vstmia r6,  {d21}", r6,  d21, 0xab);
   2040     TESTINSN_VSTMIAnoWB("vstmia r1,  {d1}",  r1,  d1, 0x13);
   2041     TESTINSN_VSTMIAnoWB("vstmia r9,  {d2}",  r9,  d2, 0x78);
   2042     TESTINSN_VSTMIAnoWB("vstmia r4,  {d30}", r4,  d30, 0x0);
   2043     TESTINSN_VSTMIAnoWB("vstmia r12, {d23}", r12, d23, 0xb9);
   2044     TESTINSN_VSTMIAnoWB("vstmia r6,  {d16}", r6,  d16, 0xa6);
   2045     TESTINSN_VSTMIAnoWB("vstmia r6,  {d8}",  r6,  d8, 0x7f);
   2046     TESTINSN_VSTMIAnoWB("vstmia r6,  {d27}", r6,  d27, 0xff);
   2047     TESTINSN_VSTMIAnoWB("vstmia r5,  {d11}", r5,  d11, 0x32);
   2048     TESTINSN_VSTMIAnoWB("vstmia r6,  {d4}",  r6,  d4, 0x10);
   2049     TESTINSN_VSTMIAnoWB("vstmia r10, {d9}",  r10, d9, 0x4f);
   2050     TESTINSN_VSTMIAnoWB("vstmia r9, {d29}", r9, d29, 0x97);
   2051     TESTINSN_VSTMIAnoWB("vstmia r10, {d17}", r10, d17, 0xaa);
   2052     TESTINSN_VSTMIAnoWB("vstmia r5,  {d5}",  r5,  d5, 0x2b);
   2053     TESTINSN_VSTMIAnoWB("vstmia r9,  {d7}",  r9,  d7, 0x7b);
   2054     TESTINSN_VSTMIAnoWB("vstmia r3,  {d16}", r3,  d16, 0x11);
   2055     TESTINSN_VSTMIAnoWB32("vstmia r6,  {s21}", r6,  s21, 0xab);
   2056     TESTINSN_VSTMIAnoWB32("vstmia r1,  {s1}",  r1,  s1,  0x13);
   2057     TESTINSN_VSTMIAnoWB32("vstmia r9,  {s2}",  r9,  s2,  0x78);
   2058     TESTINSN_VSTMIAnoWB32("vstmia r4,  {s30}", r4,  s30, 0x0);
   2059     TESTINSN_VSTMIAnoWB32("vstmia r12, {s23}", r12, s23, 0xb9);
   2060     TESTINSN_VSTMIAnoWB32("vstmia r6,  {s16}", r6,  s16, 0xa613451d);
   2061     TESTINSN_VSTMIAnoWB32("vstmia r6,  {s8}",  r6,  s8,  0x7f);
   2062     TESTINSN_VSTMIAnoWB32("vstmia r6,  {s27}", r6,  s27, f2u(-INFINITY));
   2063     TESTINSN_VSTMIAnoWB32("vstmia r5,  {s11}", r5,  s11, f2u(NAN));
   2064     TESTINSN_VSTMIAnoWB32("vstmia r6,  {s4}",  r6,  s4,  0x10ccb);
   2065     TESTINSN_VSTMIAnoWB32("vstmia r10, {s9}",  r10, s9,  0x4f543);
   2066     TESTINSN_VSTMIAnoWB32("vstmia r9, {s29}", r9, s29, 0x97001a);
   2067     TESTINSN_VSTMIAnoWB32("vstmia r10, {s17}", r10, s17, 0xaa45f);
   2068     TESTINSN_VSTMIAnoWB32("vstmia r5,  {s5}",  r5,  s5,  f2u(NAN));
   2069     TESTINSN_VSTMIAnoWB32("vstmia r9,  {s7}",  r9,  s7,  f2u(-INFINITY));
   2070     TESTINSN_VSTMIAnoWB32("vstmia r3,  {s16}", r3,  s16, f2u(INFINITY));
   2071 
   2072     printf("---- VSTM (Increment After, writeback) ----\n");
   2073     TESTINSN_VSTMIAWB(r6,  d21, d2);
   2074     TESTINSN_VSTMIAWB(r1,  d1, d5);
   2075     TESTINSN_VSTMIAWB(r9,  d2, d17);
   2076     TESTINSN_VSTMIAWB(r4,  d30, d21);
   2077     TESTINSN_VSTMIAWB(r12, d23, d29);
   2078     TESTINSN_VSTMIAWB(r6,  d16, d30);
   2079     TESTINSN_VSTMIAWB(r6,  d8,  d12);
   2080     TESTINSN_VSTMIAWB(r6,  d27, d24);
   2081     TESTINSN_VSTMIAWB(r5,  d11, d13);
   2082     TESTINSN_VSTMIAWB(r6,  d4,  d31);
   2083     TESTINSN_VSTMIAWB(r10, d9,  d27);
   2084     TESTINSN_VSTMIAWB(r9, d29, d17);
   2085     TESTINSN_VSTMIAWB(r10, d17, d7);
   2086     TESTINSN_VSTMIAWB(r5,  d5,  d8);
   2087     TESTINSN_VSTMIAWB(r9,  d7,  d16);
   2088     TESTINSN_VSTMIAWB(r3,  d16, d21);
   2089     TESTINSN_VSTMIAWB32(r6,  s21, s2);
   2090     TESTINSN_VSTMIAWB32(r12, s23, s21);
   2091     TESTINSN_VSTMIAWB32(r3,  s3,  s3);
   2092     TESTINSN_VSTMIAWB32(r10, s19, s5);
   2093     TESTINSN_VSTMIAWB32(r2,  s3,  s12);
   2094     TESTINSN_VSTMIAWB32(r8,  s7,  s10);
   2095     TESTINSN_VSTMIAWB32(r4,  s30, s13);
   2096     TESTINSN_VSTMIAWB32(r6,  s17, s17);
   2097     TESTINSN_VSTMIAWB32(r9, s11, s21);
   2098     TESTINSN_VSTMIAWB32(r9,  s8,  s30);
   2099     TESTINSN_VSTMIAWB32(r3,  s12, s9);
   2100     TESTINSN_VSTMIAWB32(r6,  s6,  s11);
   2101     TESTINSN_VSTMIAWB32(r8,  s17, s12);
   2102     TESTINSN_VSTMIAWB32(r9,  s12, s12);
   2103     TESTINSN_VSTMIAWB32(r4,  s11, s11);
   2104 
   2105     printf("---- VLDM (Decrement Before) ----\n");
   2106     TESTINSN_VLDMDB(r4,  d11, d23);
   2107     TESTINSN_VLDMDB(r9, d29, d12);
   2108     TESTINSN_VLDMDB(r9,  d0,  d30);
   2109     TESTINSN_VLDMDB(r12, d8,  d24);
   2110     TESTINSN_VLDMDB(r3,  d27, d13);
   2111     TESTINSN_VLDMDB(r6,  d17, d7);
   2112     TESTINSN_VLDMDB(r10, d20, d30);
   2113     TESTINSN_VLDMDB(r0,  d0,  d1);
   2114     TESTINSN_VLDMDB(r8,  d15, d19);
   2115     TESTINSN_VLDMDB(r3,  d31, d30);
   2116     TESTINSN_VLDMDB(r10, d6,  d23);
   2117     TESTINSN_VLDMDB(r8,  d8,  d16);
   2118     TESTINSN_VLDMDB(r9,  d13, d11);
   2119     TESTINSN_VLDMDB(r1,  d3,  d8);
   2120     TESTINSN_VLDMDB(r2,  d4,  d8);
   2121     TESTINSN_VLDMDB(r3,  d9,  d27);
   2122 
   2123     printf("----- VMOV (immediate) -----\n");
   2124     TESTINSN_vmovf32_imm("vmov s0",  s0,  0xbe880000);
   2125     TESTINSN_vmovf32_imm("vmov s1",  s1,  0x3fa80000);
   2126     TESTINSN_vmovf32_imm("vmov s2",  s2,  0xbf080000);
   2127     TESTINSN_vmovf32_imm("vmov s5",  s5,  0x3eb80000);
   2128     TESTINSN_vmovf32_imm("vmov s7",  s7,  0xbff80000);
   2129     TESTINSN_vmovf32_imm("vmov s10", s10, 0xbe280000);
   2130     TESTINSN_vmovf32_imm("vmov s12", s12, 0x40000000);
   2131     TESTINSN_vmovf32_imm("vmov s13", s13, 0x3e880000);
   2132     TESTINSN_vmovf32_imm("vmov s14", s14, 0xbee80000);
   2133     TESTINSN_vmovf32_imm("vmov s15", s15, 0xc0b80000);
   2134 
   2135     printf("----- VMOV (ARM core register and single register) -----\n");
   2136     TESTINSN_vmov_core_single("vmov r12, s12", r12, s12, 0x4000aad);
   2137     TESTINSN_vmov_core_single("vmov r2,  s5",  r2,  s5,  0xab45e7);
   2138     TESTINSN_vmov_core_single("vmov r5,  s15", r5,  s15, 0x00add12);
   2139     TESTINSN_vmov_core_single("vmov r8,  s11", r8,  s11, 0x876450ff);
   2140     TESTINSN_vmov_core_single("vmov r9, s5",  r9, s5,  0xffff);
   2141     TESTINSN_vmov_core_single("vmov r10, s9",  r10, s9,  0x87d34f);
   2142     TESTINSN_vmov_core_single("vmov r9,  s10", r9,  s10, 0x00ffff);
   2143     TESTINSN_vmov_core_single("vmov r6,  s8",  r6,  s8,  0xad4f8);
   2144     TESTINSN_vmov_core_single("vmov r4,  s14", r4,  s14, 0x920b8cf);
   2145     TESTINSN_vmov_core_single("vmov r3,  s7",  r3,  s7,  f2u(NAN));
   2146     TESTINSN_vmov_core_single("vmov r2,  s0",  r2,  s0,  f2u(-INFINITY));
   2147     TESTINSN_vmov_core_single("vmov r0,  s1",  r0,  s1,  f2u(INFINITY));
   2148     TESTINSN_vmov_single_core("vmov s2,  r9",  s2,  r9,  0x9465a);
   2149     TESTINSN_vmov_single_core("vmov s14, r0",  s14, r0,  0xd0b87a);
   2150     TESTINSN_vmov_single_core("vmov s4,  r2",  s4,  r2,  0x452bbc8);
   2151     TESTINSN_vmov_single_core("vmov s7,  r8",  s7,  r8,  0xa7cb3d);
   2152     TESTINSN_vmov_single_core("vmov s9,  r4",  s9,  r4,  0xdd8ec);
   2153     TESTINSN_vmov_single_core("vmov s10, r12", s10, r12, 0x8a7b6e);
   2154     TESTINSN_vmov_single_core("vmov s13, r9",  s13, r9,  0x4b00a);
   2155     TESTINSN_vmov_single_core("vmov s3,  r3",  s3,  r3,  0x0023455);
   2156     TESTINSN_vmov_single_core("vmov s5,  r5",  s5,  r5,  f2u(INFINITY));
   2157     TESTINSN_vmov_single_core("vmov s8,  r6",  s8,  r6,  f2u(-INFINITY));
   2158     TESTINSN_vmov_single_core("vmov s4,  r0",  s4,  r0,  0x000acb45);
   2159     TESTINSN_vmov_single_core("vmov s0,  r6",  s0,  r6,  f2u(NAN));
   2160 
   2161     printf("----- VMOV (ARM two core registers and two single registers) -----\n");
   2162     TESTINSN_vmov_2single_2core("vmov  s0,  s1,  r6,  r9",  s0,  s1,  r6,  r9, 0x43252acc, 0xabcc4);
   2163     TESTINSN_vmov_2single_2core("vmov  s0,  s1,  r9,  r9",  s0,  s1,  r9,  r9, 0x43252acc, 0xabcc4);
   2164     TESTINSN_vmov_2single_2core("vmov s30, s31,  r9,  r1", s30, s31,  r9,  r1, 0xaa2e2acc, 0x00337);
   2165     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(NAN));
   2166     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(INFINITY));
   2167     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(-INFINITY));
   2168     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(0));
   2169     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(NAN));
   2170     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(INFINITY));
   2171     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(-INFINITY));
   2172     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(0));
   2173     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(NAN));
   2174     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(INFINITY));
   2175     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(-INFINITY));
   2176     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(0));
   2177     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(NAN));
   2178     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(INFINITY));
   2179     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(-INFINITY));
   2180     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(0));
   2181     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN) + 1, f2u(NAN));
   2182     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN) + 1, f2u(0));
   2183     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(NAN) - 1);
   2184     TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(NAN) - 1);
   2185     TESTINSN_vmov_2core_2single("vmov r12,  r9, s12, s13", r12,  r9, s12, s13, 0x4000aad, 0xaffff);
   2186     TESTINSN_vmov_2core_2single("vmov  r0,  r9, s12, s13",  r0,  r9, s12, s13, 0x40ee56d, 0x123ff);
   2187     TESTINSN_vmov_2core_2single("vmov r12, r9, s12, s13", r12, r9, s12, s13, 0x4000aad, 0xaffff);
   2188     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(NAN));
   2189     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(INFINITY));
   2190     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(-INFINITY));
   2191     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(0));
   2192     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(NAN));
   2193     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(INFINITY));
   2194     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(-INFINITY));
   2195     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(0));
   2196     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(NAN));
   2197     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(INFINITY));
   2198     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(-INFINITY));
   2199     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(0));
   2200     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(NAN));
   2201     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(INFINITY));
   2202     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(-INFINITY));
   2203     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(0));
   2204     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN) + 1, f2u(NAN));
   2205     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN) + 1, f2u(0));
   2206     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(NAN) - 1);
   2207     TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(NAN) - 1);
   2208 
   2209     printf("----- VMOV (ARM two core registers and double register) -----\n");
   2210     TESTINSN_vmov_double_2core("vmov d3,  r6,  r9",  d3,  r6,  r9,  0x43252acc, 0x45bbd);
   2211     TESTINSN_vmov_double_2core("vmov d4,  r10, r2",  d4,  r10, r2,  0x1243b4, 0x237ffb);
   2212     TESTINSN_vmov_double_2core("vmov d21, r1,  r6",  d21, r1,  r6,  0x30cc4, 0x314c043);
   2213     TESTINSN_vmov_double_2core("vmov d30, r9, r9", d30, r9, r9, 0x08ddf, 0x87bbca);
   2214     TESTINSN_vmov_double_2core("vmov d29, r3,  r5",  d29, r3,  r5,  0xaaa0, 0xbbb1);
   2215     TESTINSN_vmov_double_2core("vmov d16, r8,  r8",  d16, r8,  r8,  0xaa455bb, 0x13434);
   2216     TESTINSN_vmov_double_2core("vmov d17, r12, r9", d17, r12, r9, 0x004003, 0x452bbc1);
   2217     TESTINSN_vmov_double_2core("vmov d9,  r9,  r0",  d9,  r9,  r0,  0x134c, 0x41ffb6);
   2218     TESTINSN_vmov_double_2core("vmov d7,  r0,  r6",  d7,  r0,  r6,  0x35425dcc, 0x0876c43);
   2219     TESTINSN_vmov_double_2core("vmov d13, r3,  r9", d13, r3,  r9, f2u0(NAN), f2u1(NAN));
   2220     TESTINSN_vmov_double_2core("vmov d19, r6,  r5",  d19, r6,  r5,  f2u0(INFINITY), f2u1(INFINITY));
   2221     TESTINSN_vmov_double_2core("vmov d0,  r2,  r6",  d0,  r2,  r6,  f2u0(-INFINITY), f2u1(-INFINITY));
   2222 
   2223     TESTINSN_vmov_2core_double("vmov r3,  r6,  d9",  r3,  r6,  d9,  0x43252acc, 0x45bbd);
   2224     TESTINSN_vmov_2core_double("vmov r4,  r10, d2",  r4,  r10, d2,  0x1243b4, 0x237ffb);
   2225     TESTINSN_vmov_2core_double("vmov r2,  r1,  d6",  r2,  r1,  d6,  0x30cc4, 0x314c043);
   2226     TESTINSN_vmov_2core_double("vmov r0,  r9, d11", r0,  r9, d11, 0x08ddf, 0x87bbca);
   2227     TESTINSN_vmov_2core_double("vmov r9,  r3,  d5",  r9,  r3,  d5,  0xaaa0, 0xbbb1);
   2228     TESTINSN_vmov_2core_double("vmov r10, r8,  d8",  r10, r8,  d8,  0xaa455bb, 0x13434);
   2229     TESTINSN_vmov_2core_double("vmov r9, r12, d11", r9, r12, d11, 0x004003, 0x452bbc1);
   2230 
   2231     // ARM ARM says this is UNDEFINED, hence we don't decode it
   2232     //TESTINSN_vmov_2core_double("vmov r9,  r9,  d0",  r9,  r9,  d0,  0x134c, 0x41ffb6);
   2233 
   2234     TESTINSN_vmov_2core_double("vmov r6,  r0,  d7",  r6,  r0,  d7,  0x35425dcc, 0x0876c43);
   2235     TESTINSN_vmov_2core_double("vmov r12, r3,  d11", r12, r3,  d11, f2u0(NAN), f2u1(NAN));
   2236     TESTINSN_vmov_2core_double("vmov r1,  r6,  d5",  r1,  r6,  d5,  f2u0(INFINITY), f2u1(INFINITY));
   2237     TESTINSN_vmov_2core_double("vmov r0,  r2,  d7",  r0,  r2,  d7,  f2u0(-INFINITY), f2u1(-INFINITY));
   2238 
   2239     TESTINSN_vmov_2core_double("vmov r2,  r9,  d0",  r2,  r9,  d0,  f2u0(INFINITY), f2u1(INFINITY));
   2240     TESTINSN_vmov_2core_double("vmov r6,  r9, d10", r6,  r9, d10, 0x14534c, 0x41ffb6);
   2241     TESTINSN_vmov_2core_double("vmov r0,  r9, d20", r0,  r9, d20, f2u0(NAN), f2u1(NAN));
   2242 
   2243     printf("----- VPUSH, VPOP -----\n");
   2244     TESTINSN_vpush_vpop_f32(s3, 0x00aaaaaa, s4, 0x00bbbbbb, s5, 0x00cccccc, s0, s1,  s2);
   2245     TESTINSN_vpush_vpop_f32(s1, 0x000134f4, s2, 0x0870ccb3, s3, 0x00aba0f1, s9, s10, s11);
   2246     TESTINSN_vpush_vpop_f32(s3, 0x00dddddd, s4, 0x00eeeeee, s5, 0x00ffffff, s0, s1,  s2);
   2247     TESTINSN_vpush_vpop_f32(s11, 0x13454c,  s12, 0x341,     s13, 0xaac45f, s6, s7,  s8);
   2248     TESTINSN_vpush_vpop_f32(s21, 0x0,       s22, f2u(NAN),  s23, f2u(INFINITY), s23, s24,  s25);
   2249     TESTINSN_vpush_vpop_f32(s12, 0xffffff,  s13, 0xf542dd4, s14, f2u(-INFINITY), s11, s12,  s13);
   2250     TESTINSN_vpush_vpop_f32(s25, 0x45cd,    s26, 0xa3ccb5,  s27, 0xbbcaf, s0, s1,  s2);
   2251     TESTINSN_vpush_vpop_f32(s1,  f2u(NAN),  s2,  0xaaca3,   s3,  0x876008, s6, s7,  s8);
   2252     TESTINSN_vpush_vpop_f32(s9,  0x2f43,    s10, f2u(INFINITY), s11, 0x3cc66a, s9, s10,  s11);
   2253     TESTINSN_vpush_vpop_f32(s10, f2u(INFINITY), s11, 0x134cc5, s12, f2u(NAN), s2, s3,  s4);
   2254     TESTINSN_vpush_vpop_f32(s7,  0xcc006d,  s8,  0x1308c,   s9,  0xabbc45, s21, s22,  s23);
   2255     TESTINSN_vpush_vpop_f32(s19, f2u(-INFINITY), s20, 0x452146, s21, 0x388bbc, s4, s5,  s6);
   2256     TESTINSN_vpush_vpop_f32(s16, 0x542aa,   s17, 0xaddcd5,  s18, 0x87acc, s18, s19,  s20);
   2257     TESTINSN_vpush_vpop_f32(s22, 0x5ccb708, s23, 0x52345c,  s24, 0x98745c, s12, s13,  s14);
   2258     TESTINSN_vpush_vpop_f32(s24, 0x99234f,  s25, 0x1aac,    s26, 0x3746c, s28, s29,  s30);
   2259     TESTINSN_vpush_vpop_f32(s13, 0x134ccc,  s14, 0x6bb43,   s15, 0x834aa, s0,  s1,   s2);
   2260     TESTINSN_vpush_vpop_f64(d3,  0x00aaaaaa, 0xaac3,     d4,  0x00bbbbbb, 0x34ccb,     d0, d1);
   2261     TESTINSN_vpush_vpop_f64(d1,  0x000134f4, 0x341531,   d2,  0x0870ccb3, 0x4576bbc,   d9, d10);
   2262     TESTINSN_vpush_vpop_f64(d3,  0x00dddddd, 0x13451cc,  d4,  0x00eeeeee, 0x123ddc8,   d0, d1);
   2263     TESTINSN_vpush_vpop_f64(d11, 0x13454c,   0x541bbc3,  d12, 0x341,      0xccb5, d6,  d7);
   2264     TESTINSN_vpush_vpop_f64(d21, 0x0,        0x123c33,   d22, f2u0(NAN),  f2u1(NAN),   d23, d24);
   2265     TESTINSN_vpush_vpop_f64(d12, 0xffffff,   0x1940c,    d13, 0xf542dd4,  0x788ffc,    d11, d12);
   2266     TESTINSN_vpush_vpop_f64(d25, 0x45cd,     0x1309c,    d26, 0xa3ccb5,   0x4588b,     d0, d1);
   2267     TESTINSN_vpush_vpop_f64(d1,  f2u0(NAN),  f2u1(NAN),  d2,  0xaaca3,    0x1120a,     d6, d7);
   2268     TESTINSN_vpush_vpop_f64(d9,  0x2f43,     0x19ff9,    d10, f2u0(INFINITY), f2u1(INFINITY), d9, d10);
   2269     TESTINSN_vpush_vpop_f64(d10, f2u0(INFINITY), f2u1(INFINITY), d11, 0x134cc5, 0x78cbbd, d2, d3);
   2270     TESTINSN_vpush_vpop_f64(d7,  0xcc006d,   0x28354,    d8,  0x1308c,    0x1993bc,    d21, d22);
   2271     TESTINSN_vpush_vpop_f64(d19, f2u0(-INFINITY), f2u1(-INFINITY), d20, 0x452146, 0x138476c,  d4, d5);
   2272     TESTINSN_vpush_vpop_f64(d16, 0x542aa,    0x12dd4,    d17, 0xaddcd5,   0x399cb,     d18, d19);
   2273     TESTINSN_vpush_vpop_f64(d22, 0x5ccb708,  0x8009c,    d23, 0x52345c,   0x29902c,    d12, d13);
   2274     TESTINSN_vpush_vpop_f64(d24, 0x99234f,   0x3457ff,   d25, 0x1aac,     0x1002cba,   d28, d29);
   2275     TESTINSN_vpush_vpop_f64(d13, 0x134ccc,   0xfaa309,   d14, 0x6bb43,    0x199cb,     d0,  d1);
   2276 
   2277     return 0;
   2278 }
   2279