Home | History | Annotate | Download | only in arm64
      1 
      2 #include <stdio.h>
      3 #include <assert.h>
      4 #include <malloc.h>  // memalign
      5 #include <string.h>  // memset
      6 #include <math.h>    // isnormal
      7 
      8 typedef  unsigned char           UChar;
      9 typedef  unsigned short int      UShort;
     10 typedef  unsigned int            UInt;
     11 typedef  signed int              Int;
     12 typedef  unsigned char           UChar;
     13 typedef  unsigned long long int  ULong;
     14 
     15 typedef  unsigned char           Bool;
     16 #define False ((Bool)0)
     17 #define True  ((Bool)1)
     18 
     19 
     20 #define ITERS 1
     21 
     22 typedef
     23   enum { TySF=1234, TyDF, TyB, TyH, TyS, TyD, TyNONE }
     24   LaneTy;
     25 
     26 union _V128 {
     27    UChar  u8[16];
     28    UShort u16[8];
     29    UInt   u32[4];
     30    ULong  u64[2];
     31    float  f32[4];
     32    double f64[2];
     33 };
     34 typedef  union _V128   V128;
     35 
     36 static inline UChar randUChar ( void )
     37 {
     38    static UInt seed = 80021;
     39    seed = 1103515245 * seed + 12345;
     40    return (seed >> 17) & 0xFF;
     41 }
     42 
     43 static ULong randULong ( LaneTy ty )
     44 {
     45    Int i;
     46    ULong r = 0;
     47    for (i = 0; i < 8; i++) {
     48       r = (r << 8) | (ULong)(0xFF & randUChar());
     49    }
     50    return r;
     51 }
     52 
     53 /* Generates a random V128.  Ensures that that it contains normalised
     54    FP numbers when viewed as either F32x4 or F64x2, so that it is
     55    reasonable to use in FP test cases. */
     56 static void randV128 ( /*OUT*/V128* v, LaneTy ty )
     57 {
     58    static UInt nCalls = 0, nIters = 0;
     59    Int i;
     60    nCalls++;
     61    while (1) {
     62       nIters++;
     63       for (i = 0; i < 16; i++) {
     64          v->u8[i] = randUChar();
     65       }
     66       if (isnormal(v->f32[0]) && isnormal(v->f32[1]) && isnormal(v->f32[2])
     67           && isnormal(v->f32[3]) && isnormal(v->f64[0]) && isnormal(v->f64[1]))
     68         break;
     69    }
     70    if (0 == (nCalls & 0xFF))
     71       printf("randV128: %u calls, %u iters\n", nCalls, nIters);
     72 }
     73 
     74 static void showV128 ( V128* v )
     75 {
     76    Int i;
     77    for (i = 15; i >= 0; i--)
     78       printf("%02x", (Int)v->u8[i]);
     79 }
     80 
     81 __attribute__((unused))
     82 static void* memalign16(size_t szB)
     83 {
     84    void* x;
     85    x = memalign(16, szB);
     86    assert(x);
     87    assert(0 == ((16-1) & (unsigned long)x));
     88    return x;
     89 }
     90 
     91 
     92 /* ---------------------------------------------------------------- */
     93 /* -- Test functions                                             -- */
     94 /* ---------------------------------------------------------------- */
     95 
     96 /* Note this also sets the destination register to a known value (0x55..55)
     97    since it can sometimes be an input to the instruction too. */
     98 #define GEN_UNARY_TEST(INSN,SUFFIXD,SUFFIXN) \
     99   __attribute__((noinline)) \
    100   static void test_##INSN##_##SUFFIXD##_##SUFFIXN ( LaneTy ty ) { \
    101      Int i; \
    102      for (i = 0; i < ITERS; i++) { \
    103         V128 block[2]; \
    104         memset(block, 0x55, sizeof(block)); \
    105         randV128(&block[0], ty); \
    106         randV128(&block[1], ty); \
    107         __asm__ __volatile__( \
    108            "ldr   q7, [%0, #0]   ; " \
    109            "ldr   q8, [%0, #16]   ; " \
    110            #INSN " v8." #SUFFIXD ", v7." #SUFFIXN " ; " \
    111            "str   q8, [%0, #16] " \
    112            : : "r"(&block[0]) : "memory", "v7", "v8" \
    113         ); \
    114         printf(#INSN   " v8." #SUFFIXD ", v7." #SUFFIXN); \
    115         showV128(&block[0]); printf("  "); \
    116         showV128(&block[1]); printf("\n"); \
    117      } \
    118   }
    119 
    120 
    121 /* Note this also sets the destination register to a known value (0x55..55)
    122    since it can sometimes be an input to the instruction too. */
    123 #define GEN_BINARY_TEST(INSN,SUFFIXD,SUFFIXN,SUFFIXM)  \
    124   __attribute__((noinline)) \
    125   static void test_##INSN##_##SUFFIXD##_##SUFFIXN##_##SUFFIXM ( LaneTy ty ) { \
    126      Int i; \
    127      for (i = 0; i < ITERS; i++) { \
    128         V128 block[3]; \
    129         memset(block, 0x55, sizeof(block)); \
    130         randV128(&block[0], ty); \
    131         randV128(&block[1], ty); \
    132         randV128(&block[2], ty); \
    133         __asm__ __volatile__( \
    134            "ldr   q7, [%0, #0]   ; " \
    135            "ldr   q8, [%0, #16]   ; " \
    136            "ldr   q9, [%0, #32]   ; " \
    137            #INSN " v9." #SUFFIXD ", v7." #SUFFIXN ", v8." #SUFFIXM " ; " \
    138            "str   q9, [%0, #32] " \
    139            : : "r"(&block[0]) : "memory", "v7", "v8", "v9" \
    140         ); \
    141         printf(#INSN   " v9." #SUFFIXD \
    142                ", v7." #SUFFIXN ", v8." #SUFFIXM "  ");   \
    143         showV128(&block[0]); printf("  "); \
    144         showV128(&block[1]); printf("  "); \
    145         showV128(&block[2]); printf("\n"); \
    146      } \
    147   }
    148 
    149 
    150 /* Note this also sets the destination register to a known value (0x55..55)
    151    since it can sometimes be an input to the instruction too. */
    152 #define GEN_SHIFT_TEST(INSN,SUFFIXD,SUFFIXN,AMOUNT) \
    153   __attribute__((noinline)) \
    154   static void test_##INSN##_##SUFFIXD##_##SUFFIXN##_##AMOUNT ( LaneTy ty ) { \
    155      Int i; \
    156      for (i = 0; i < ITERS; i++) { \
    157         V128 block[2]; \
    158         memset(block, 0x55, sizeof(block)); \
    159         randV128(&block[0], ty); \
    160         randV128(&block[1], ty); \
    161         __asm__ __volatile__( \
    162            "ldr   q7, [%0, #0]   ; " \
    163            "ldr   q8, [%0, #16]   ; " \
    164            #INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " ; " \
    165            "str   q8, [%0, #16] " \
    166            : : "r"(&block[0]) : "memory", "v7", "v8" \
    167         ); \
    168         printf(#INSN   " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT "  "); \
    169         showV128(&block[0]); printf("  "); \
    170         showV128(&block[1]); printf("\n"); \
    171      } \
    172   }
    173 
    174 
    175 /* Generate a test that involves one integer reg and one vector reg,
    176    with no bias as towards which is input or output. */
    177 #define GEN_ONEINT_ONEVEC_TEST(TESTNAME,INSN,INTREGNO,VECREGNO) \
    178   __attribute__((noinline)) \
    179   static void test_##TESTNAME ( LaneTy ty ) { \
    180      Int i; \
    181      for (i = 0; i < ITERS; i++) { \
    182         V128 block[4]; \
    183         memset(block, 0x55, sizeof(block)); \
    184         randV128(&block[0], ty); \
    185         randV128(&block[1], ty); \
    186         randV128(&block[2], ty); \
    187         randV128(&block[3], ty); \
    188         __asm__ __volatile__( \
    189            "ldr   q"#VECREGNO", [%0, #0]  ; " \
    190            "ldr   x"#INTREGNO", [%0, #16] ; " \
    191            INSN " ; " \
    192            "str   q"#VECREGNO", [%0, #32] ; " \
    193            "str   x"#INTREGNO", [%0, #48] ; " \
    194            : : "r"(&block[0]) : "memory", "v"#VECREGNO, "x"#INTREGNO \
    195         ); \
    196         printf(INSN   "   "); \
    197         showV128(&block[0]); printf("  "); \
    198         showV128(&block[1]); printf("  "); \
    199         showV128(&block[2]); printf("  "); \
    200         showV128(&block[3]); printf("\n"); \
    201      } \
    202   }
    203 
    204 
    205 /* Generate a test that involves two vector regs,
    206    with no bias as towards which is input or output.
    207    It's OK to use x10 as scratch.*/
    208 #define GEN_TWOVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO) \
    209   __attribute__((noinline)) \
    210   static void test_##TESTNAME ( LaneTy ty ) { \
    211      Int i; \
    212      for (i = 0; i < ITERS; i++) { \
    213         V128 block[4]; \
    214         memset(block, 0x55, sizeof(block)); \
    215         randV128(&block[0], ty); \
    216         randV128(&block[1], ty); \
    217         randV128(&block[2], ty); \
    218         randV128(&block[3], ty); \
    219         __asm__ __volatile__( \
    220            "ldr   q"#VECREG1NO", [%0, #0]  ; " \
    221            "ldr   q"#VECREG2NO", [%0, #16] ; " \
    222            INSN " ; " \
    223            "str   q"#VECREG1NO", [%0, #32] ; " \
    224            "str   q"#VECREG2NO", [%0, #48] ; " \
    225            : : "r"(&block[0]) \
    226              : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "x10" \
    227         ); \
    228         printf(INSN   "   "); \
    229         showV128(&block[0]); printf("  "); \
    230         showV128(&block[1]); printf("  "); \
    231         showV128(&block[2]); printf("  "); \
    232         showV128(&block[3]); printf("\n"); \
    233      } \
    234   }
    235 
    236 
    237 /* Generate a test that involves three vector regs,
    238    with no bias as towards which is input or output.  It's also OK
    239    to use v16, v17, v18 as scratch. */
    240 #define GEN_THREEVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO,VECREG3NO)  \
    241   __attribute__((noinline)) \
    242   static void test_##TESTNAME ( LaneTy ty ) { \
    243      Int i; \
    244      for (i = 0; i < ITERS; i++) { \
    245         V128 block[6]; \
    246         memset(block, 0x55, sizeof(block)); \
    247         randV128(&block[0], ty); \
    248         randV128(&block[1], ty); \
    249         randV128(&block[2], ty); \
    250         randV128(&block[3], ty); \
    251         randV128(&block[4], ty); \
    252         randV128(&block[5], ty); \
    253         __asm__ __volatile__( \
    254            "ldr   q"#VECREG1NO", [%0, #0]  ; " \
    255            "ldr   q"#VECREG2NO", [%0, #16] ; " \
    256            "ldr   q"#VECREG3NO", [%0, #32] ; " \
    257            INSN " ; " \
    258            "str   q"#VECREG1NO", [%0, #48] ; " \
    259            "str   q"#VECREG2NO", [%0, #64] ; " \
    260            "str   q"#VECREG3NO", [%0, #80] ; " \
    261            : : "r"(&block[0]) \
    262            : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "v"#VECREG3NO, \
    263              "v16", "v17", "v18" \
    264         ); \
    265         printf(INSN   "   "); \
    266         showV128(&block[0]); printf("  "); \
    267         showV128(&block[1]); printf("  "); \
    268         showV128(&block[2]); printf("  "); \
    269         showV128(&block[3]); printf("  "); \
    270         showV128(&block[4]); printf("  "); \
    271         showV128(&block[5]); printf("\n"); \
    272      } \
    273   }
    274 
    275 
    276 void test_UMINV ( void )
    277 {
    278   int i;
    279   V128 block[2];
    280 
    281   /* -- 4s -- */
    282 
    283   for (i = 0; i < 10; i++) {
    284     memset(&block, 0x55, sizeof(block));
    285     randV128(&block[0], TyS);
    286     randV128(&block[1], TyS);
    287     __asm__ __volatile__(
    288        "ldr   q7, [%0, #0]   ; "
    289        "uminv s8, v7.4s   ; "
    290        "str   q8, [%0, #16] "
    291        : : "r"(&block[0]) : "memory", "v7", "v8"
    292                          );
    293     printf("UMINV v8, v7.4s  ");
    294     showV128(&block[0]); printf("  ");
    295     showV128(&block[1]); printf("\n");
    296   }
    297 
    298   /* -- 8h -- */
    299 
    300   for (i = 0; i < 10; i++) {
    301     memset(&block, 0x55, sizeof(block));
    302     randV128(&block[0], TyH);
    303     randV128(&block[1], TyH);
    304     __asm__ __volatile__(
    305        "ldr   q7, [%0, #0]   ; "
    306        "uminv h8, v7.8h   ; "
    307        "str   q8, [%0, #16] "
    308        : : "r"(&block[0]) : "memory", "v7", "v8"
    309                          );
    310     printf("UMINV h8, v7.8h  ");
    311     showV128(&block[0]); printf("  ");
    312     showV128(&block[1]); printf("\n");
    313   }
    314 
    315   /* -- 4h -- */
    316 
    317   for (i = 0; i < 10; i++) {
    318     memset(&block, 0x55, sizeof(block));
    319     randV128(&block[0], TyH);
    320     randV128(&block[1], TyH);
    321     __asm__ __volatile__(
    322        "ldr   q7, [%0, #0]   ; "
    323        "uminv h8, v7.4h   ; "
    324        "str   q8, [%0, #16] "
    325        : : "r"(&block[0]) : "memory", "v7", "v8"
    326                          );
    327     printf("UMINV h8, v7.4h  ");
    328     showV128(&block[0]); printf("  ");
    329     showV128(&block[1]); printf("\n");
    330   }
    331 
    332   /* -- 16b -- */
    333 
    334   for (i = 0; i < 10; i++) {
    335     memset(&block, 0x55, sizeof(block));
    336     randV128(&block[0], TyB);
    337     randV128(&block[1], TyB);
    338     __asm__ __volatile__(
    339        "ldr   q7, [%0, #0]   ; "
    340        "uminv b8, v7.16b   ; "
    341        "str   q8, [%0, #16] "
    342        : : "r"(&block[0]) : "memory", "v7", "v8"
    343                          );
    344     printf("UMINV b8, v7.16b  ");
    345     showV128(&block[0]); printf("  ");
    346     showV128(&block[1]); printf("\n");
    347   }
    348 
    349   /* -- 8b -- */
    350 
    351   for (i = 0; i < 10; i++) {
    352     memset(&block, 0x55, sizeof(block));
    353     randV128(&block[0], TyB);
    354     randV128(&block[1], TyB);
    355     __asm__ __volatile__(
    356        "ldr   q7, [%0, #0]   ; "
    357        "uminv b8, v7.8b   ; "
    358        "str   q8, [%0, #16] "
    359        : : "r"(&block[0]) : "memory", "v7", "v8"
    360                          );
    361     printf("UMINV b8, v7.8b  ");
    362     showV128(&block[0]); printf("  ");
    363     showV128(&block[1]); printf("\n");
    364   }
    365 
    366 }
    367 
    368 
    369 void test_UMAXV ( void )
    370 {
    371   int i;
    372   V128 block[2];
    373 
    374   /* -- 4s -- */
    375 
    376   for (i = 0; i < 10; i++) {
    377     memset(&block, 0x55, sizeof(block));
    378     randV128(&block[0], TyS);
    379     randV128(&block[1], TyS);
    380     __asm__ __volatile__(
    381        "ldr   q7, [%0, #0]   ; "
    382        "umaxv s8, v7.4s   ; "
    383        "str   q8, [%0, #16] "
    384        : : "r"(&block[0]) : "memory", "v7", "v8"
    385                          );
    386     printf("UMAXV v8, v7.4s  ");
    387     showV128(&block[0]); printf("  ");
    388     showV128(&block[1]); printf("\n");
    389   }
    390 
    391   /* -- 8h -- */
    392 
    393   for (i = 0; i < 10; i++) {
    394     memset(&block, 0x55, sizeof(block));
    395     randV128(&block[0], TyH);
    396     randV128(&block[1], TyH);
    397     __asm__ __volatile__(
    398        "ldr   q7, [%0, #0]   ; "
    399        "umaxv h8, v7.8h   ; "
    400        "str   q8, [%0, #16] "
    401        : : "r"(&block[0]) : "memory", "v7", "v8"
    402                          );
    403     printf("UMAXV h8, v7.8h  ");
    404     showV128(&block[0]); printf("  ");
    405     showV128(&block[1]); printf("\n");
    406   }
    407 
    408   /* -- 4h -- */
    409 
    410   for (i = 0; i < 10; i++) {
    411     memset(&block, 0x55, sizeof(block));
    412     randV128(&block[0], TyH);
    413     randV128(&block[1], TyH);
    414     __asm__ __volatile__(
    415        "ldr   q7, [%0, #0]   ; "
    416        "umaxv h8, v7.4h   ; "
    417        "str   q8, [%0, #16] "
    418        : : "r"(&block[0]) : "memory", "v7", "v8"
    419                          );
    420     printf("UMAXV h8, v7.4h  ");
    421     showV128(&block[0]); printf("  ");
    422     showV128(&block[1]); printf("\n");
    423   }
    424 
    425   /* -- 16b -- */
    426 
    427   for (i = 0; i < 10; i++) {
    428     memset(&block, 0x55, sizeof(block));
    429     randV128(&block[0], TyB);
    430     randV128(&block[1], TyB);
    431     __asm__ __volatile__(
    432        "ldr   q7, [%0, #0]   ; "
    433        "umaxv b8, v7.16b   ; "
    434        "str   q8, [%0, #16] "
    435        : : "r"(&block[0]) : "memory", "v7", "v8"
    436                          );
    437     printf("UMAXV b8, v7.16b  ");
    438     showV128(&block[0]); printf("  ");
    439     showV128(&block[1]); printf("\n");
    440   }
    441 
    442   /* -- 8b -- */
    443 
    444   for (i = 0; i < 10; i++) {
    445     memset(&block, 0x55, sizeof(block));
    446     randV128(&block[0], TyB);
    447     randV128(&block[1], TyB);
    448     __asm__ __volatile__(
    449        "ldr   q7, [%0, #0]   ; "
    450        "umaxv b8, v7.8b   ; "
    451        "str   q8, [%0, #16] "
    452        : : "r"(&block[0]) : "memory", "v7", "v8"
    453                          );
    454     printf("UMAXV b8, v7.8b  ");
    455     showV128(&block[0]); printf("  ");
    456     showV128(&block[1]); printf("\n");
    457   }
    458 
    459 }
    460 
    461 
    462 void test_INS_general ( void )
    463 {
    464   V128 block[3];
    465 
    466   /* -- D[0..1] -- */
    467 
    468   memset(&block, 0x55, sizeof(block));
    469   block[1].u64[0] = randULong(TyD);
    470   __asm__ __volatile__(
    471      "ldr q7, [%0, #0]   ; "
    472      "ldr x19, [%0, #16] ; "
    473      "ins v7.d[0], x19   ; "
    474      "str q7, [%0, #32] "
    475      : : "r"(&block[0]) : "memory", "x19", "v7"
    476   );
    477   printf("INS v7.u64[0],x19  ");
    478   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    479   showV128(&block[2]); printf("\n");
    480 
    481   memset(&block, 0x55, sizeof(block));
    482   block[1].u64[0] = randULong(TyD);
    483   __asm__ __volatile__(
    484      "ldr q7, [%0, #0]   ; "
    485      "ldr x19, [%0, #16] ; "
    486      "ins v7.d[1], x19   ; "
    487      "str q7, [%0, #32] "
    488      : : "r"(&block[0]) : "memory", "x19", "v7"
    489   );
    490   printf("INS v7.d[1],x19  ");
    491   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    492   showV128(&block[2]); printf("\n");
    493 
    494   /* -- S[0..3] -- */
    495 
    496   memset(&block, 0x55, sizeof(block));
    497   block[1].u64[0] = randULong(TyS);
    498   __asm__ __volatile__(
    499      "ldr q7, [%0, #0]   ; "
    500      "ldr x19, [%0, #16] ; "
    501      "ins v7.s[0], w19   ; "
    502      "str q7, [%0, #32] "
    503      : : "r"(&block[0]) : "memory", "x19", "v7"
    504   );
    505   printf("INS v7.s[0],x19  ");
    506   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    507   showV128(&block[2]); printf("\n");
    508 
    509   memset(&block, 0x55, sizeof(block));
    510   block[1].u64[0] = randULong(TyS);
    511   __asm__ __volatile__(
    512      "ldr q7, [%0, #0]   ; "
    513      "ldr x19, [%0, #16] ; "
    514      "ins v7.s[1], w19   ; "
    515      "str q7, [%0, #32] "
    516      : : "r"(&block[0]) : "memory", "x19", "v7"
    517   );
    518   printf("INS v7.s[1],x19  ");
    519   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    520   showV128(&block[2]); printf("\n");
    521 
    522   memset(&block, 0x55, sizeof(block));
    523   block[1].u64[0] = randULong(TyS);
    524   __asm__ __volatile__(
    525      "ldr q7, [%0, #0]   ; "
    526      "ldr x19, [%0, #16] ; "
    527      "ins v7.s[2], w19   ; "
    528      "str q7, [%0, #32] "
    529      : : "r"(&block[0]) : "memory", "x19", "v7"
    530   );
    531   printf("INS v7.s[2],x19  ");
    532   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    533   showV128(&block[2]); printf("\n");
    534 
    535   memset(&block, 0x55, sizeof(block));
    536   block[1].u64[0] = randULong(TyS);
    537   __asm__ __volatile__(
    538      "ldr q7, [%0, #0]   ; "
    539      "ldr x19, [%0, #16] ; "
    540      "ins v7.s[3], w19   ; "
    541      "str q7, [%0, #32] "
    542      : : "r"(&block[0]) : "memory", "x19", "v7"
    543   );
    544   printf("INS v7.s[3],x19  ");
    545   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    546   showV128(&block[2]); printf("\n");
    547 
    548   /* -- H[0..7] -- */
    549 
    550   memset(&block, 0x55, sizeof(block));
    551   block[1].u64[0] = randULong(TyH);
    552   __asm__ __volatile__(
    553      "ldr q7, [%0, #0]   ; "
    554      "ldr x19, [%0, #16] ; "
    555      "ins v7.h[0], w19   ; "
    556      "str q7, [%0, #32] "
    557      : : "r"(&block[0]) : "memory", "x19", "v7"
    558   );
    559   printf("INS v7.h[0],x19  ");
    560   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    561   showV128(&block[2]); printf("\n");
    562 
    563   memset(&block, 0x55, sizeof(block));
    564   block[1].u64[0] = randULong(TyH);
    565   __asm__ __volatile__(
    566      "ldr q7, [%0, #0]   ; "
    567      "ldr x19, [%0, #16] ; "
    568      "ins v7.h[1], w19   ; "
    569      "str q7, [%0, #32] "
    570      : : "r"(&block[0]) : "memory", "x19", "v7"
    571   );
    572   printf("INS v7.h[1],x19  ");
    573   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    574   showV128(&block[2]); printf("\n");
    575 
    576   memset(&block, 0x55, sizeof(block));
    577   block[1].u64[0] = randULong(TyH);
    578   __asm__ __volatile__(
    579      "ldr q7, [%0, #0]   ; "
    580      "ldr x19, [%0, #16] ; "
    581      "ins v7.h[2], w19   ; "
    582      "str q7, [%0, #32] "
    583      : : "r"(&block[0]) : "memory", "x19", "v7"
    584   );
    585   printf("INS v7.h[2],x19  ");
    586   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    587   showV128(&block[2]); printf("\n");
    588 
    589   memset(&block, 0x55, sizeof(block));
    590   block[1].u64[0] = randULong(TyH);
    591   __asm__ __volatile__(
    592      "ldr q7, [%0, #0]   ; "
    593      "ldr x19, [%0, #16] ; "
    594      "ins v7.h[3], w19   ; "
    595      "str q7, [%0, #32] "
    596      : : "r"(&block[0]) : "memory", "x19", "v7"
    597   );
    598   printf("INS v7.h[3],x19  ");
    599   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    600   showV128(&block[2]); printf("\n");
    601 
    602   memset(&block, 0x55, sizeof(block));
    603   block[1].u64[0] = randULong(TyH);
    604   __asm__ __volatile__(
    605      "ldr q7, [%0, #0]   ; "
    606      "ldr x19, [%0, #16] ; "
    607      "ins v7.h[4], w19   ; "
    608      "str q7, [%0, #32] "
    609      : : "r"(&block[0]) : "memory", "x19", "v7"
    610   );
    611   printf("INS v7.h[4],x19  ");
    612   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    613   showV128(&block[2]); printf("\n");
    614 
    615   memset(&block, 0x55, sizeof(block));
    616   block[1].u64[0] = randULong(TyH);
    617   __asm__ __volatile__(
    618      "ldr q7, [%0, #0]   ; "
    619      "ldr x19, [%0, #16] ; "
    620      "ins v7.h[5], w19   ; "
    621      "str q7, [%0, #32] "
    622      : : "r"(&block[0]) : "memory", "x19", "v7"
    623   );
    624   printf("INS v7.h[5],x19  ");
    625   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    626   showV128(&block[2]); printf("\n");
    627 
    628   memset(&block, 0x55, sizeof(block));
    629   block[1].u64[0] = randULong(TyH);
    630   __asm__ __volatile__(
    631      "ldr q7, [%0, #0]   ; "
    632      "ldr x19, [%0, #16] ; "
    633      "ins v7.h[6], w19   ; "
    634      "str q7, [%0, #32] "
    635      : : "r"(&block[0]) : "memory", "x19", "v7"
    636   );
    637   printf("INS v7.h[6],x19  ");
    638   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    639   showV128(&block[2]); printf("\n");
    640 
    641   memset(&block, 0x55, sizeof(block));
    642   block[1].u64[0] = randULong(TyH);
    643   __asm__ __volatile__(
    644      "ldr q7, [%0, #0]   ; "
    645      "ldr x19, [%0, #16] ; "
    646      "ins v7.h[7], w19   ; "
    647      "str q7, [%0, #32] "
    648      : : "r"(&block[0]) : "memory", "x19", "v7"
    649   );
    650   printf("INS v7.h[7],x19  ");
    651   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    652   showV128(&block[2]); printf("\n");
    653 
    654   /* -- B[0,15] -- */
    655 
    656   memset(&block, 0x55, sizeof(block));
    657   block[1].u64[0] = randULong(TyB);
    658   __asm__ __volatile__(
    659      "ldr q7, [%0, #0]   ; "
    660      "ldr x19, [%0, #16] ; "
    661      "ins v7.b[0], w19   ; "
    662      "str q7, [%0, #32] "
    663      : : "r"(&block[0]) : "memory", "x19", "v7"
    664   );
    665   printf("INS v7.b[0],x19  ");
    666   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    667   showV128(&block[2]); printf("\n");
    668 
    669   memset(&block, 0x55, sizeof(block));
    670   block[1].u64[0] = randULong(TyB);
    671   __asm__ __volatile__(
    672      "ldr q7, [%0, #0]   ; "
    673      "ldr x19, [%0, #16] ; "
    674      "ins v7.b[15], w19   ; "
    675      "str q7, [%0, #32] "
    676      : : "r"(&block[0]) : "memory", "x19", "v7"
    677   );
    678   printf("INS v7.b[15],x19 ");
    679   showV128(&block[0]); printf("  %016llx  ", block[1].u64[0]);
    680   showV128(&block[2]); printf("\n");
    681 }
    682 
    683 
    684 
    685 void test_SMINV ( void )
    686 {
    687   int i;
    688   V128 block[2];
    689 
    690   /* -- 4s -- */
    691 
    692   for (i = 0; i < 10; i++) {
    693     memset(&block, 0x55, sizeof(block));
    694     randV128(&block[0], TyS);
    695     randV128(&block[1], TyS);
    696     __asm__ __volatile__(
    697        "ldr   q7, [%0, #0]   ; "
    698        "sminv s8, v7.4s   ; "
    699        "str   q8, [%0, #16] "
    700        : : "r"(&block[0]) : "memory", "v7", "v8"
    701                          );
    702     printf("SMINV v8, v7.4s  ");
    703     showV128(&block[0]); printf("  ");
    704     showV128(&block[1]); printf("\n");
    705   }
    706 
    707   /* -- 8h -- */
    708 
    709   for (i = 0; i < 10; i++) {
    710     memset(&block, 0x55, sizeof(block));
    711     randV128(&block[0], TyH);
    712     randV128(&block[1], TyH);
    713     __asm__ __volatile__(
    714        "ldr   q7, [%0, #0]   ; "
    715        "sminv h8, v7.8h   ; "
    716        "str   q8, [%0, #16] "
    717        : : "r"(&block[0]) : "memory", "v7", "v8"
    718                          );
    719     printf("SMINV h8, v7.8h  ");
    720     showV128(&block[0]); printf("  ");
    721     showV128(&block[1]); printf("\n");
    722   }
    723 
    724   /* -- 4h -- */
    725 
    726   for (i = 0; i < 10; i++) {
    727     memset(&block, 0x55, sizeof(block));
    728     randV128(&block[0], TyH);
    729     randV128(&block[1], TyH);
    730     __asm__ __volatile__(
    731        "ldr   q7, [%0, #0]   ; "
    732        "sminv h8, v7.4h   ; "
    733        "str   q8, [%0, #16] "
    734        : : "r"(&block[0]) : "memory", "v7", "v8"
    735                          );
    736     printf("SMINV h8, v7.4h  ");
    737     showV128(&block[0]); printf("  ");
    738     showV128(&block[1]); printf("\n");
    739   }
    740 
    741   /* -- 16b -- */
    742 
    743   for (i = 0; i < 10; i++) {
    744     memset(&block, 0x55, sizeof(block));
    745     randV128(&block[0], TyB);
    746     randV128(&block[1], TyB);
    747     __asm__ __volatile__(
    748        "ldr   q7, [%0, #0]   ; "
    749        "sminv b8, v7.16b   ; "
    750        "str   q8, [%0, #16] "
    751        : : "r"(&block[0]) : "memory", "v7", "v8"
    752                          );
    753     printf("SMINV b8, v7.16b  ");
    754     showV128(&block[0]); printf("  ");
    755     showV128(&block[1]); printf("\n");
    756   }
    757 
    758   /* -- 8b -- */
    759 
    760   for (i = 0; i < 10; i++) {
    761     memset(&block, 0x55, sizeof(block));
    762     randV128(&block[0], TyB);
    763     randV128(&block[1], TyB);
    764     __asm__ __volatile__(
    765        "ldr   q7, [%0, #0]   ; "
    766        "sminv b8, v7.8b   ; "
    767        "str   q8, [%0, #16] "
    768        : : "r"(&block[0]) : "memory", "v7", "v8"
    769                          );
    770     printf("SMINV b8, v7.8b  ");
    771     showV128(&block[0]); printf("  ");
    772     showV128(&block[1]); printf("\n");
    773   }
    774 
    775 }
    776 
    777 
    778 void test_SMAXV ( void )
    779 {
    780   int i;
    781   V128 block[2];
    782 
    783   /* -- 4s -- */
    784 
    785   for (i = 0; i < 10; i++) {
    786     memset(&block, 0x55, sizeof(block));
    787     randV128(&block[0], TyS);
    788     randV128(&block[1], TyS);
    789     __asm__ __volatile__(
    790        "ldr   q7, [%0, #0]   ; "
    791        "smaxv s8, v7.4s   ; "
    792        "str   q8, [%0, #16] "
    793        : : "r"(&block[0]) : "memory", "v7", "v8"
    794                          );
    795     printf("SMAXV v8, v7.4s  ");
    796     showV128(&block[0]); printf("  ");
    797     showV128(&block[1]); printf("\n");
    798   }
    799 
    800   /* -- 8h -- */
    801 
    802   for (i = 0; i < 10; i++) {
    803     memset(&block, 0x55, sizeof(block));
    804     randV128(&block[0], TyH);
    805     randV128(&block[1], TyH);
    806     __asm__ __volatile__(
    807        "ldr   q7, [%0, #0]   ; "
    808        "smaxv h8, v7.8h   ; "
    809        "str   q8, [%0, #16] "
    810        : : "r"(&block[0]) : "memory", "v7", "v8"
    811                          );
    812     printf("SMAXV h8, v7.8h  ");
    813     showV128(&block[0]); printf("  ");
    814     showV128(&block[1]); printf("\n");
    815   }
    816 
    817   /* -- 4h -- */
    818 
    819   for (i = 0; i < 10; i++) {
    820     memset(&block, 0x55, sizeof(block));
    821     randV128(&block[0], TyH);
    822     randV128(&block[1], TyH);
    823     __asm__ __volatile__(
    824        "ldr   q7, [%0, #0]   ; "
    825        "smaxv h8, v7.4h   ; "
    826        "str   q8, [%0, #16] "
    827        : : "r"(&block[0]) : "memory", "v7", "v8"
    828                          );
    829     printf("SMAXV h8, v7.4h  ");
    830     showV128(&block[0]); printf("  ");
    831     showV128(&block[1]); printf("\n");
    832   }
    833 
    834   /* -- 16b -- */
    835 
    836   for (i = 0; i < 10; i++) {
    837     memset(&block, 0x55, sizeof(block));
    838     randV128(&block[0], TyB);
    839     randV128(&block[1], TyB);
    840     __asm__ __volatile__(
    841        "ldr   q7, [%0, #0]   ; "
    842        "smaxv b8, v7.16b   ; "
    843        "str   q8, [%0, #16] "
    844        : : "r"(&block[0]) : "memory", "v7", "v8"
    845                          );
    846     printf("SMAXV b8, v7.16b  ");
    847     showV128(&block[0]); printf("  ");
    848     showV128(&block[1]); printf("\n");
    849   }
    850 
    851   /* -- 8b -- */
    852 
    853   for (i = 0; i < 10; i++) {
    854     memset(&block, 0x55, sizeof(block));
    855     randV128(&block[0], TyB);
    856     randV128(&block[1], TyB);
    857     __asm__ __volatile__(
    858        "ldr   q7, [%0, #0]   ; "
    859        "smaxv b8, v7.8b   ; "
    860        "str   q8, [%0, #16] "
    861        : : "r"(&block[0]) : "memory", "v7", "v8"
    862                          );
    863     printf("SMAXV b8, v7.8b  ");
    864     showV128(&block[0]); printf("  ");
    865     showV128(&block[1]); printf("\n");
    866   }
    867 
    868 }
    869 
    870 
    871 GEN_BINARY_TEST(umax, 4s, 4s, 4s)
    872 GEN_BINARY_TEST(umax, 2s, 2s, 2s)
    873 GEN_BINARY_TEST(umax, 8h, 8h, 8h)
    874 GEN_BINARY_TEST(umax, 4h, 4h, 4h)
    875 GEN_BINARY_TEST(umax, 16b, 16b, 16b)
    876 GEN_BINARY_TEST(umax, 8b, 8b, 8b)
    877 
    878 GEN_BINARY_TEST(umin, 4s, 4s, 4s)
    879 GEN_BINARY_TEST(umin, 2s, 2s, 2s)
    880 GEN_BINARY_TEST(umin, 8h, 8h, 8h)
    881 GEN_BINARY_TEST(umin, 4h, 4h, 4h)
    882 GEN_BINARY_TEST(umin, 16b, 16b, 16b)
    883 GEN_BINARY_TEST(umin, 8b, 8b, 8b)
    884 
    885 GEN_BINARY_TEST(smax, 4s, 4s, 4s)
    886 GEN_BINARY_TEST(smax, 2s, 2s, 2s)
    887 GEN_BINARY_TEST(smax, 8h, 8h, 8h)
    888 GEN_BINARY_TEST(smax, 4h, 4h, 4h)
    889 GEN_BINARY_TEST(smax, 16b, 16b, 16b)
    890 GEN_BINARY_TEST(smax, 8b, 8b, 8b)
    891 
    892 GEN_BINARY_TEST(smin, 4s, 4s, 4s)
    893 GEN_BINARY_TEST(smin, 2s, 2s, 2s)
    894 GEN_BINARY_TEST(smin, 8h, 8h, 8h)
    895 GEN_BINARY_TEST(smin, 4h, 4h, 4h)
    896 GEN_BINARY_TEST(smin, 16b, 16b, 16b)
    897 GEN_BINARY_TEST(smin, 8b, 8b, 8b)
    898 
    899 GEN_BINARY_TEST(add, 2d, 2d, 2d)
    900 GEN_BINARY_TEST(add, 4s, 4s, 4s)
    901 GEN_BINARY_TEST(add, 2s, 2s, 2s)
    902 GEN_BINARY_TEST(add, 8h, 8h, 8h)
    903 GEN_BINARY_TEST(add, 4h, 4h, 4h)
    904 GEN_BINARY_TEST(add, 16b, 16b, 16b)
    905 GEN_BINARY_TEST(add, 8b, 8b, 8b)
    906 
    907 GEN_BINARY_TEST(sub, 2d, 2d, 2d)
    908 GEN_BINARY_TEST(sub, 4s, 4s, 4s)
    909 GEN_BINARY_TEST(sub, 2s, 2s, 2s)
    910 GEN_BINARY_TEST(sub, 8h, 8h, 8h)
    911 GEN_BINARY_TEST(sub, 4h, 4h, 4h)
    912 GEN_BINARY_TEST(sub, 16b, 16b, 16b)
    913 GEN_BINARY_TEST(sub, 8b, 8b, 8b)
    914 
    915 GEN_BINARY_TEST(mul, 4s, 4s, 4s)
    916 GEN_BINARY_TEST(mul, 2s, 2s, 2s)
    917 GEN_BINARY_TEST(mul, 8h, 8h, 8h)
    918 GEN_BINARY_TEST(mul, 4h, 4h, 4h)
    919 GEN_BINARY_TEST(mul, 16b, 16b, 16b)
    920 GEN_BINARY_TEST(mul, 8b, 8b, 8b)
    921 
    922 GEN_BINARY_TEST(mla, 4s, 4s, 4s)
    923 GEN_BINARY_TEST(mla, 2s, 2s, 2s)
    924 GEN_BINARY_TEST(mla, 8h, 8h, 8h)
    925 GEN_BINARY_TEST(mla, 4h, 4h, 4h)
    926 GEN_BINARY_TEST(mla, 16b, 16b, 16b)
    927 GEN_BINARY_TEST(mla, 8b, 8b, 8b)
    928 
    929 GEN_BINARY_TEST(mls, 4s, 4s, 4s)
    930 GEN_BINARY_TEST(mls, 2s, 2s, 2s)
    931 GEN_BINARY_TEST(mls, 8h, 8h, 8h)
    932 GEN_BINARY_TEST(mls, 4h, 4h, 4h)
    933 GEN_BINARY_TEST(mls, 16b, 16b, 16b)
    934 GEN_BINARY_TEST(mls, 8b, 8b, 8b)
    935 
    936 GEN_BINARY_TEST(and, 16b, 16b, 16b)
    937 GEN_BINARY_TEST(and, 8b, 8b, 8b)
    938 
    939 GEN_BINARY_TEST(bic, 16b, 16b, 16b)
    940 GEN_BINARY_TEST(bic, 8b, 8b, 8b)
    941 
    942 GEN_BINARY_TEST(orr, 16b, 16b, 16b)
    943 GEN_BINARY_TEST(orr, 8b, 8b, 8b)
    944 
    945 GEN_BINARY_TEST(orn, 16b, 16b, 16b)
    946 GEN_BINARY_TEST(orn, 8b, 8b, 8b)
    947 
    948 GEN_BINARY_TEST(eor, 16b, 16b, 16b)
    949 GEN_BINARY_TEST(eor, 8b, 8b, 8b)
    950 
    951 GEN_BINARY_TEST(bsl, 16b, 16b, 16b)
    952 GEN_BINARY_TEST(bsl, 8b, 8b, 8b)
    953 
    954 GEN_BINARY_TEST(bit, 16b, 16b, 16b)
    955 GEN_BINARY_TEST(bit, 8b, 8b, 8b)
    956 
    957 GEN_BINARY_TEST(bif, 16b, 16b, 16b)
    958 GEN_BINARY_TEST(bif, 8b, 8b, 8b)
    959 
    960 GEN_BINARY_TEST(cmeq, 2d, 2d, 2d)
    961 GEN_BINARY_TEST(cmeq, 4s, 4s, 4s)
    962 GEN_BINARY_TEST(cmeq, 2s, 2s, 2s)
    963 GEN_BINARY_TEST(cmeq, 8h, 8h, 8h)
    964 GEN_BINARY_TEST(cmeq, 4h, 4h, 4h)
    965 GEN_BINARY_TEST(cmeq, 16b, 16b, 16b)
    966 GEN_BINARY_TEST(cmeq, 8b, 8b, 8b)
    967 
    968 GEN_BINARY_TEST(cmtst, 2d, 2d, 2d)
    969 GEN_BINARY_TEST(cmtst, 4s, 4s, 4s)
    970 GEN_BINARY_TEST(cmtst, 2s, 2s, 2s)
    971 GEN_BINARY_TEST(cmtst, 8h, 8h, 8h)
    972 GEN_BINARY_TEST(cmtst, 4h, 4h, 4h)
    973 GEN_BINARY_TEST(cmtst, 16b, 16b, 16b)
    974 GEN_BINARY_TEST(cmtst, 8b, 8b, 8b)
    975 
    976 GEN_BINARY_TEST(cmhi, 2d, 2d, 2d)
    977 GEN_BINARY_TEST(cmhi, 4s, 4s, 4s)
    978 GEN_BINARY_TEST(cmhi, 2s, 2s, 2s)
    979 GEN_BINARY_TEST(cmhi, 8h, 8h, 8h)
    980 GEN_BINARY_TEST(cmhi, 4h, 4h, 4h)
    981 GEN_BINARY_TEST(cmhi, 16b, 16b, 16b)
    982 GEN_BINARY_TEST(cmhi, 8b, 8b, 8b)
    983 
    984 GEN_BINARY_TEST(cmgt, 2d, 2d, 2d)
    985 GEN_BINARY_TEST(cmgt, 4s, 4s, 4s)
    986 GEN_BINARY_TEST(cmgt, 2s, 2s, 2s)
    987 GEN_BINARY_TEST(cmgt, 8h, 8h, 8h)
    988 GEN_BINARY_TEST(cmgt, 4h, 4h, 4h)
    989 GEN_BINARY_TEST(cmgt, 16b, 16b, 16b)
    990 GEN_BINARY_TEST(cmgt, 8b, 8b, 8b)
    991 
    992 GEN_BINARY_TEST(cmhs, 2d, 2d, 2d)
    993 GEN_BINARY_TEST(cmhs, 4s, 4s, 4s)
    994 GEN_BINARY_TEST(cmhs, 2s, 2s, 2s)
    995 GEN_BINARY_TEST(cmhs, 8h, 8h, 8h)
    996 GEN_BINARY_TEST(cmhs, 4h, 4h, 4h)
    997 GEN_BINARY_TEST(cmhs, 16b, 16b, 16b)
    998 GEN_BINARY_TEST(cmhs, 8b, 8b, 8b)
    999 
   1000 GEN_BINARY_TEST(cmge, 2d, 2d, 2d)
   1001 GEN_BINARY_TEST(cmge, 4s, 4s, 4s)
   1002 GEN_BINARY_TEST(cmge, 2s, 2s, 2s)
   1003 GEN_BINARY_TEST(cmge, 8h, 8h, 8h)
   1004 GEN_BINARY_TEST(cmge, 4h, 4h, 4h)
   1005 GEN_BINARY_TEST(cmge, 16b, 16b, 16b)
   1006 GEN_BINARY_TEST(cmge, 8b, 8b, 8b)
   1007 
   1008 GEN_SHIFT_TEST(ushr, 2d, 2d, 1)
   1009 GEN_SHIFT_TEST(ushr, 2d, 2d, 13)
   1010 GEN_SHIFT_TEST(ushr, 2d, 2d, 64)
   1011 GEN_SHIFT_TEST(sshr, 2d, 2d, 1)
   1012 GEN_SHIFT_TEST(sshr, 2d, 2d, 13)
   1013 GEN_SHIFT_TEST(sshr, 2d, 2d, 64)
   1014 GEN_SHIFT_TEST(shl,  2d, 2d, 0)
   1015 GEN_SHIFT_TEST(shl,  2d, 2d, 13)
   1016 GEN_SHIFT_TEST(shl,  2d, 2d, 63)
   1017 
   1018 GEN_SHIFT_TEST(ushr, 4s, 4s, 1)
   1019 GEN_SHIFT_TEST(ushr, 4s, 4s, 13)
   1020 GEN_SHIFT_TEST(ushr, 4s, 4s, 32)
   1021 GEN_SHIFT_TEST(sshr, 4s, 4s, 1)
   1022 GEN_SHIFT_TEST(sshr, 4s, 4s, 13)
   1023 GEN_SHIFT_TEST(sshr, 4s, 4s, 32)
   1024 GEN_SHIFT_TEST(shl,  4s, 4s, 0)
   1025 GEN_SHIFT_TEST(shl,  4s, 4s, 13)
   1026 GEN_SHIFT_TEST(shl,  4s, 4s, 31)
   1027 
   1028 GEN_SHIFT_TEST(ushr, 2s, 2s, 1)
   1029 GEN_SHIFT_TEST(ushr, 2s, 2s, 13)
   1030 GEN_SHIFT_TEST(ushr, 2s, 2s, 32)
   1031 GEN_SHIFT_TEST(sshr, 2s, 2s, 1)
   1032 GEN_SHIFT_TEST(sshr, 2s, 2s, 13)
   1033 GEN_SHIFT_TEST(sshr, 2s, 2s, 32)
   1034 GEN_SHIFT_TEST(shl,  2s, 2s, 0)
   1035 GEN_SHIFT_TEST(shl,  2s, 2s, 13)
   1036 GEN_SHIFT_TEST(shl,  2s, 2s, 31)
   1037 
   1038 GEN_SHIFT_TEST(ushr, 8h, 8h, 1)
   1039 GEN_SHIFT_TEST(ushr, 8h, 8h, 13)
   1040 GEN_SHIFT_TEST(ushr, 8h, 8h, 16)
   1041 GEN_SHIFT_TEST(sshr, 8h, 8h, 1)
   1042 GEN_SHIFT_TEST(sshr, 8h, 8h, 13)
   1043 GEN_SHIFT_TEST(sshr, 8h, 8h, 16)
   1044 GEN_SHIFT_TEST(shl,  8h, 8h, 0)
   1045 GEN_SHIFT_TEST(shl,  8h, 8h, 13)
   1046 GEN_SHIFT_TEST(shl,  8h, 8h, 15)
   1047 
   1048 GEN_SHIFT_TEST(ushr, 4h, 4h, 1)
   1049 GEN_SHIFT_TEST(ushr, 4h, 4h, 13)
   1050 GEN_SHIFT_TEST(ushr, 4h, 4h, 16)
   1051 GEN_SHIFT_TEST(sshr, 4h, 4h, 1)
   1052 GEN_SHIFT_TEST(sshr, 4h, 4h, 13)
   1053 GEN_SHIFT_TEST(sshr, 4h, 4h, 16)
   1054 GEN_SHIFT_TEST(shl,  4h, 4h, 0)
   1055 GEN_SHIFT_TEST(shl,  4h, 4h, 13)
   1056 GEN_SHIFT_TEST(shl,  4h, 4h, 15)
   1057 
   1058 GEN_SHIFT_TEST(ushr, 16b, 16b, 1)
   1059 GEN_SHIFT_TEST(ushr, 16b, 16b, 8)
   1060 GEN_SHIFT_TEST(sshr, 16b, 16b, 1)
   1061 GEN_SHIFT_TEST(sshr, 16b, 16b, 8)
   1062 GEN_SHIFT_TEST(shl,  16b, 16b, 0)
   1063 GEN_SHIFT_TEST(shl,  16b, 16b, 7)
   1064 
   1065 GEN_SHIFT_TEST(ushr, 8b, 8b, 1)
   1066 GEN_SHIFT_TEST(ushr, 8b, 8b, 8)
   1067 GEN_SHIFT_TEST(sshr, 8b, 8b, 1)
   1068 GEN_SHIFT_TEST(sshr, 8b, 8b, 8)
   1069 GEN_SHIFT_TEST(shl,  8b, 8b, 0)
   1070 GEN_SHIFT_TEST(shl,  8b, 8b, 7)
   1071 
   1072 GEN_SHIFT_TEST(ushll,  2d, 2s, 0)
   1073 GEN_SHIFT_TEST(ushll,  2d, 2s, 15)
   1074 GEN_SHIFT_TEST(ushll,  2d, 2s, 31)
   1075 GEN_SHIFT_TEST(ushll2, 2d, 4s, 0)
   1076 GEN_SHIFT_TEST(ushll2, 2d, 4s, 15)
   1077 GEN_SHIFT_TEST(ushll2, 2d, 4s, 31)
   1078 GEN_SHIFT_TEST(ushll,  4s, 4h,  0)
   1079 GEN_SHIFT_TEST(ushll,  4s, 4h,  7)
   1080 GEN_SHIFT_TEST(ushll,  4s, 4h,  15)
   1081 GEN_SHIFT_TEST(ushll2, 4s, 8h,  0)
   1082 GEN_SHIFT_TEST(ushll2, 4s, 8h,  7)
   1083 GEN_SHIFT_TEST(ushll2, 4s, 8h,  15)
   1084 GEN_SHIFT_TEST(ushll,  8h, 8b,  0)
   1085 GEN_SHIFT_TEST(ushll,  8h, 8b,  3)
   1086 GEN_SHIFT_TEST(ushll,  8h, 8b,  7)
   1087 GEN_SHIFT_TEST(ushll2, 8h, 16b, 0)
   1088 GEN_SHIFT_TEST(ushll2, 8h, 16b, 3)
   1089 GEN_SHIFT_TEST(ushll2, 8h, 16b, 7)
   1090 
   1091 GEN_SHIFT_TEST(sshll,  2d, 2s,  0)
   1092 GEN_SHIFT_TEST(sshll,  2d, 2s,  15)
   1093 GEN_SHIFT_TEST(sshll,  2d, 2s,  31)
   1094 GEN_SHIFT_TEST(sshll2, 2d, 4s,  0)
   1095 GEN_SHIFT_TEST(sshll2, 2d, 4s,  15)
   1096 GEN_SHIFT_TEST(sshll2, 2d, 4s,  31)
   1097 GEN_SHIFT_TEST(sshll,  4s, 4h,  0)
   1098 GEN_SHIFT_TEST(sshll,  4s, 4h,  7)
   1099 GEN_SHIFT_TEST(sshll,  4s, 4h,  15)
   1100 GEN_SHIFT_TEST(sshll2, 4s, 8h,  0)
   1101 GEN_SHIFT_TEST(sshll2, 4s, 8h,  7)
   1102 GEN_SHIFT_TEST(sshll2, 4s, 8h,  15)
   1103 GEN_SHIFT_TEST(sshll,  8h, 8b,  0)
   1104 GEN_SHIFT_TEST(sshll,  8h, 8b,  3)
   1105 GEN_SHIFT_TEST(sshll,  8h, 8b,  7)
   1106 GEN_SHIFT_TEST(sshll2, 8h, 16b, 0)
   1107 GEN_SHIFT_TEST(sshll2, 8h, 16b, 3)
   1108 GEN_SHIFT_TEST(sshll2, 8h, 16b, 7)
   1109 
   1110 
   1111 GEN_UNARY_TEST(xtn,  2s, 2d)
   1112 GEN_UNARY_TEST(xtn2, 4s, 2d)
   1113 GEN_UNARY_TEST(xtn,  4h, 4s)
   1114 GEN_UNARY_TEST(xtn2, 8h, 4s)
   1115 GEN_UNARY_TEST(xtn,  8b, 8h)
   1116 GEN_UNARY_TEST(xtn2, 16b, 8h)
   1117 
   1118 GEN_ONEINT_ONEVEC_TEST(umov_x_d0,  "umov x9, v10.d[0]", 9, 10)
   1119 GEN_ONEINT_ONEVEC_TEST(umov_x_d1,  "umov x9, v10.d[1]", 9, 10)
   1120 GEN_ONEINT_ONEVEC_TEST(umov_w_s0,  "umov w9, v10.s[0]", 9, 10)
   1121 GEN_ONEINT_ONEVEC_TEST(umov_w_s3,  "umov w9, v10.s[3]", 9, 10)
   1122 GEN_ONEINT_ONEVEC_TEST(umov_w_h0,  "umov w9, v10.h[0]", 9, 10)
   1123 GEN_ONEINT_ONEVEC_TEST(umov_w_h7,  "umov w9, v10.h[7]", 9, 10)
   1124 GEN_ONEINT_ONEVEC_TEST(umov_w_b0,  "umov w9, v10.b[0]", 9, 10)
   1125 GEN_ONEINT_ONEVEC_TEST(umov_w_b15, "umov w9, v10.b[15]", 9, 10)
   1126 
   1127 GEN_ONEINT_ONEVEC_TEST(smov_x_s0,  "smov x9, v10.s[0]", 9, 10)
   1128 GEN_ONEINT_ONEVEC_TEST(smov_x_s3,  "smov x9, v10.s[3]", 9, 10)
   1129 GEN_ONEINT_ONEVEC_TEST(smov_x_h0,  "smov x9, v10.h[0]", 9, 10)
   1130 GEN_ONEINT_ONEVEC_TEST(smov_x_h7,  "smov x9, v10.h[7]", 9, 10)
   1131 GEN_ONEINT_ONEVEC_TEST(smov_w_h0,  "smov w9, v10.h[0]", 9, 10)
   1132 GEN_ONEINT_ONEVEC_TEST(smov_w_h7,  "smov w9, v10.h[7]", 9, 10)
   1133 GEN_ONEINT_ONEVEC_TEST(smov_x_b0,  "smov x9, v10.b[0]", 9, 10)
   1134 GEN_ONEINT_ONEVEC_TEST(smov_x_b15, "smov x9, v10.b[15]", 9, 10)
   1135 GEN_ONEINT_ONEVEC_TEST(smov_w_b0,  "smov w9, v10.b[0]", 9, 10)
   1136 GEN_ONEINT_ONEVEC_TEST(smov_w_b15, "smov w9, v10.b[15]", 9, 10)
   1137 
   1138 GEN_TWOVEC_TEST(fcvtn_2s_2d, "fcvtn  v22.2s, v23.2d", 22, 23)
   1139 GEN_TWOVEC_TEST(fcvtn_4s_2d, "fcvtn2 v22.4s, v23.2d", 22, 23)
   1140 
   1141 GEN_UNARY_TEST(neg, 2d, 2d)
   1142 GEN_UNARY_TEST(neg, 4s, 4s)
   1143 GEN_UNARY_TEST(neg, 2s, 2s)
   1144 GEN_UNARY_TEST(neg, 8h, 8h)
   1145 GEN_UNARY_TEST(neg, 4h, 4h)
   1146 GEN_UNARY_TEST(neg, 16b, 16b)
   1147 GEN_UNARY_TEST(neg, 8b,  8b)
   1148 
   1149 GEN_BINARY_TEST(fadd, 2d, 2d, 2d)
   1150 GEN_BINARY_TEST(fadd, 4s, 4s, 4s)
   1151 GEN_BINARY_TEST(fadd, 2s, 2s, 2s)
   1152 GEN_BINARY_TEST(fsub, 2d, 2d, 2d)
   1153 GEN_BINARY_TEST(fsub, 4s, 4s, 4s)
   1154 GEN_BINARY_TEST(fsub, 2s, 2s, 2s)
   1155 GEN_BINARY_TEST(fmul, 2d, 2d, 2d)
   1156 GEN_BINARY_TEST(fmul, 4s, 4s, 4s)
   1157 GEN_BINARY_TEST(fmul, 2s, 2s, 2s)
   1158 GEN_BINARY_TEST(fdiv, 2d, 2d, 2d)
   1159 GEN_BINARY_TEST(fdiv, 4s, 4s, 4s)
   1160 GEN_BINARY_TEST(fdiv, 2s, 2s, 2s)
   1161 GEN_BINARY_TEST(fmla, 2d, 2d, 2d)
   1162 GEN_BINARY_TEST(fmla, 4s, 4s, 4s)
   1163 GEN_BINARY_TEST(fmla, 2s, 2s, 2s)
   1164 GEN_BINARY_TEST(fmls, 2d, 2d, 2d)
   1165 GEN_BINARY_TEST(fmls, 4s, 4s, 4s)
   1166 GEN_BINARY_TEST(fmls, 2s, 2s, 2s)
   1167 GEN_BINARY_TEST(fabd, 2d, 2d, 2d)
   1168 GEN_BINARY_TEST(fabd, 4s, 4s, 4s)
   1169 GEN_BINARY_TEST(fabd, 2s, 2s, 2s)
   1170 
   1171 GEN_THREEVEC_TEST(add_d_d_d, "add d21, d22, d23", 21, 22, 23)
   1172 GEN_THREEVEC_TEST(sub_d_d_d, "sub d21, d22, d23", 21, 22, 23)
   1173 
   1174 /* overkill -- don't need two vecs, only one */
   1175 GEN_TWOVEC_TEST(fmov_d_imm_01, "fmov d22, #0.125", 22, 23)
   1176 GEN_TWOVEC_TEST(fmov_d_imm_02, "fmov d22, #-4.0",  22, 23)
   1177 GEN_TWOVEC_TEST(fmov_d_imm_03, "fmov d22, #1.0",   22, 23)
   1178 GEN_TWOVEC_TEST(fmov_s_imm_01, "fmov s22, #0.125", 22, 23)
   1179 GEN_TWOVEC_TEST(fmov_s_imm_02, "fmov s22, #-4.0",  22, 23)
   1180 GEN_TWOVEC_TEST(fmov_s_imm_03, "fmov s22, #-1.0",   22, 23)
   1181 
   1182 GEN_ONEINT_ONEVEC_TEST(fmov_s_w,  "fmov s7,      w15", 15, 7)
   1183 GEN_ONEINT_ONEVEC_TEST(fmov_d_x,  "fmov d7,      x15", 15, 7)
   1184 GEN_ONEINT_ONEVEC_TEST(fmov_d1_x, "fmov v7.d[1], x15", 15, 7)
   1185 GEN_ONEINT_ONEVEC_TEST(fmov_w_s,  "fmov w15,      s7", 15, 7)
   1186 GEN_ONEINT_ONEVEC_TEST(fmov_x_d,  "fmov x15,      d7", 15, 7)
   1187 GEN_ONEINT_ONEVEC_TEST(fmov_x_d1, "fmov x15, v7.d[1]", 15, 7)
   1188 
   1189 GEN_TWOVEC_TEST(fmov_2d_imm_01, "fmov v22.2d, #0.125", 22, 23)
   1190 GEN_TWOVEC_TEST(fmov_2d_imm_02, "fmov v22.2d, #-4.0",  22, 23)
   1191 GEN_TWOVEC_TEST(fmov_2d_imm_03, "fmov v22.2d, #1.0",   22, 23)
   1192 GEN_TWOVEC_TEST(fmov_4s_imm_01, "fmov v22.4s, #0.125", 22, 23)
   1193 GEN_TWOVEC_TEST(fmov_4s_imm_02, "fmov v22.4s, #-4.0",  22, 23)
   1194 GEN_TWOVEC_TEST(fmov_4s_imm_03, "fmov v22.4s, #1.0",   22, 23)
   1195 GEN_TWOVEC_TEST(fmov_2s_imm_01, "fmov v22.2s, #0.125", 22, 23)
   1196 GEN_TWOVEC_TEST(fmov_2s_imm_02, "fmov v22.2s, #-4.0",  22, 23)
   1197 GEN_TWOVEC_TEST(fmov_2s_imm_03, "fmov v22.2s, #1.0",   22, 23)
   1198 
   1199 GEN_TWOVEC_TEST(scvtf_s_s, "scvtf s7, s8", 7, 8)
   1200 GEN_TWOVEC_TEST(scvtf_d_d, "scvtf d7, d8", 7, 8)
   1201 GEN_TWOVEC_TEST(ucvtf_s_s, "ucvtf s7, s8", 7, 8)
   1202 GEN_TWOVEC_TEST(ucvtf_d_d, "ucvtf d7, d8", 7, 8)
   1203 
   1204 GEN_ONEINT_ONEVEC_TEST(scvtf_s_w, "scvtf s7, w15", 15, 7)
   1205 GEN_ONEINT_ONEVEC_TEST(scvtf_d_w, "scvtf d7, w15", 15, 7)
   1206 GEN_ONEINT_ONEVEC_TEST(scvtf_s_x, "scvtf s7, x15", 15, 7)
   1207 GEN_ONEINT_ONEVEC_TEST(scvtf_d_x, "scvtf d7, x15", 15, 7)
   1208 GEN_ONEINT_ONEVEC_TEST(ucvtf_s_w, "ucvtf s7, w15", 15, 7)
   1209 GEN_ONEINT_ONEVEC_TEST(ucvtf_d_w, "ucvtf d7, w15", 15, 7)
   1210 GEN_ONEINT_ONEVEC_TEST(ucvtf_s_x, "ucvtf s7, x15", 15, 7)
   1211 GEN_ONEINT_ONEVEC_TEST(ucvtf_d_x, "ucvtf d7, x15", 15, 7)
   1212 
   1213 GEN_THREEVEC_TEST(fadd_d_d_d,  "fadd d2, d11, d29", 2, 11, 29)
   1214 GEN_THREEVEC_TEST(fadd_s_s_s,  "fadd s2, s11, s29", 2, 11, 29)
   1215 GEN_THREEVEC_TEST(fsub_d_d_d,  "fsub d2, d11, d29", 2, 11, 29)
   1216 GEN_THREEVEC_TEST(fsub_s_s_s,  "fsub s2, s11, s29", 2, 11, 29)
   1217 GEN_THREEVEC_TEST(fmul_d_d_d,  "fmul d2, d11, d29", 2, 11, 29)
   1218 GEN_THREEVEC_TEST(fmul_s_s_s,  "fmul s2, s11, s29", 2, 11, 29)
   1219 GEN_THREEVEC_TEST(fdiv_d_d_d,  "fdiv d2, d11, d29", 2, 11, 29)
   1220 GEN_THREEVEC_TEST(fdiv_s_s_s,  "fdiv s2, s11, s29", 2, 11, 29)
   1221 GEN_THREEVEC_TEST(fnmul_d_d_d, "fnmul d2, d11, d29", 2, 11, 29)
   1222 GEN_THREEVEC_TEST(fnmul_s_s_s, "fnmul s2, s11, s29", 2, 11, 29)
   1223 
   1224 GEN_THREEVEC_TEST(fabd_d_d_d,  "fabd d2, d11, d29", 2, 11, 29)
   1225 GEN_THREEVEC_TEST(fabd_s_s_s,  "fabd s2, s11, s29", 2, 11, 29)
   1226 
   1227 GEN_TWOVEC_TEST(fmov_d_d,  "fmov d22, d23",   22, 23)
   1228 GEN_TWOVEC_TEST(fmov_s_s,  "fmov s22, s23",   22, 23)
   1229 GEN_TWOVEC_TEST(fabs_d_d,  "fabs d22, d23",   22, 23)
   1230 GEN_TWOVEC_TEST(fabs_s_s,  "fabs s22, s23",   22, 23)
   1231 GEN_TWOVEC_TEST(fneg_d_d,  "fneg d22, d23",   22, 23)
   1232 GEN_TWOVEC_TEST(fneg_s_s,  "fneg s22, s23",   22, 23)
   1233 GEN_TWOVEC_TEST(fsqrt_d_d, "fsqrt d22, d23",   22, 23)
   1234 GEN_TWOVEC_TEST(fsqrt_s_s, "fsqrt s22, s23",   22, 23)
   1235 
   1236 GEN_UNARY_TEST(fneg, 2d, 2d)
   1237 GEN_UNARY_TEST(fneg, 4s, 4s)
   1238 GEN_UNARY_TEST(fneg, 2s, 2s)
   1239 GEN_UNARY_TEST(fabs, 2d, 2d)
   1240 GEN_UNARY_TEST(fabs, 4s, 4s)
   1241 GEN_UNARY_TEST(fabs, 2s, 2s)
   1242 
   1243 GEN_BINARY_TEST(fcmeq, 2d, 2d, 2d)
   1244 GEN_BINARY_TEST(fcmeq, 4s, 4s, 4s)
   1245 GEN_BINARY_TEST(fcmeq, 2s, 2s, 2s)
   1246 GEN_BINARY_TEST(fcmge, 2d, 2d, 2d)
   1247 GEN_BINARY_TEST(fcmge, 4s, 4s, 4s)
   1248 GEN_BINARY_TEST(fcmge, 2s, 2s, 2s)
   1249 GEN_BINARY_TEST(fcmgt, 2d, 2d, 2d)
   1250 GEN_BINARY_TEST(fcmgt, 4s, 4s, 4s)
   1251 GEN_BINARY_TEST(fcmgt, 2s, 2s, 2s)
   1252 GEN_BINARY_TEST(facge, 2d, 2d, 2d)
   1253 GEN_BINARY_TEST(facge, 4s, 4s, 4s)
   1254 GEN_BINARY_TEST(facge, 2s, 2s, 2s)
   1255 GEN_BINARY_TEST(facgt, 2d, 2d, 2d)
   1256 GEN_BINARY_TEST(facgt, 4s, 4s, 4s)
   1257 GEN_BINARY_TEST(facgt, 2s, 2s, 2s)
   1258 
   1259 // Uses v15 as the first table entry
   1260 GEN_THREEVEC_TEST(
   1261    tbl_16b_1reg, "tbl v21.16b, {v15.16b}, v23.16b", 21, 15, 23)
   1262 // and v15 ^ v21 as the second table entry
   1263 GEN_THREEVEC_TEST(
   1264    tbl_16b_2reg, "eor v16.16b, v15.16b, v21.16b ; "
   1265                  "tbl v21.16b, {v15.16b, v16.16b}, v23.16b", 21, 15, 23)
   1266 // and v15 ^ v23 as the third table entry
   1267 GEN_THREEVEC_TEST(
   1268    tbl_16b_3reg, "eor v16.16b, v15.16b, v21.16b ; "
   1269                  "eor v17.16b, v15.16b, v23.16b ; "
   1270                  "tbl v21.16b, {v15.16b, v16.16b, v17.16b}, v23.16b",
   1271                  21, 15, 23)
   1272 // and v21 ^ v23 as the fourth table entry
   1273 GEN_THREEVEC_TEST(
   1274    tbl_16b_4reg, "eor v16.16b, v15.16b, v21.16b ; "
   1275                  "eor v17.16b, v15.16b, v23.16b ; "
   1276                  "eor v18.16b, v21.16b, v23.16b ; "
   1277                  "tbl v21.16b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.16b",
   1278                  21, 15, 23)
   1279 
   1280 // Same register scheme for tbl .8b, tbx .16b, tbx.8b
   1281 GEN_THREEVEC_TEST(
   1282    tbl_8b_1reg, "tbl v21.8b, {v15.16b}, v23.8b", 21, 15, 23)
   1283 GEN_THREEVEC_TEST(
   1284    tbl_8b_2reg, "eor v16.16b, v15.16b, v21.16b ; "
   1285                 "tbl v21.8b, {v15.16b, v16.16b}, v23.8b", 21, 15, 23)
   1286 GEN_THREEVEC_TEST(
   1287    tbl_8b_3reg, "eor v16.16b, v15.16b, v21.16b ; "
   1288                 "eor v17.16b, v15.16b, v23.16b ; "
   1289                 "tbl v21.8b, {v15.16b, v16.16b, v17.16b}, v23.8b",
   1290                 21, 15, 23)
   1291 GEN_THREEVEC_TEST(
   1292    tbl_8b_4reg, "eor v16.16b, v15.16b, v21.16b ; "
   1293                 "eor v17.16b, v15.16b, v23.16b ; "
   1294                 "eor v18.16b, v21.16b, v23.16b ; "
   1295                 "tbl v21.8b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.8b",
   1296                 21, 15, 23)
   1297 
   1298 GEN_THREEVEC_TEST(
   1299    tbx_16b_1reg, "tbx v21.16b, {v15.16b}, v23.16b", 21, 15, 23)
   1300 GEN_THREEVEC_TEST(
   1301    tbx_16b_2reg, "eor v16.16b, v15.16b, v21.16b ; "
   1302                  "tbx v21.16b, {v15.16b, v16.16b}, v23.16b", 21, 15, 23)
   1303 GEN_THREEVEC_TEST(
   1304    tbx_16b_3reg, "eor v16.16b, v15.16b, v21.16b ; "
   1305                  "eor v17.16b, v15.16b, v23.16b ; "
   1306                  "tbx v21.16b, {v15.16b, v16.16b, v17.16b}, v23.16b",
   1307                  21, 15, 23)
   1308 GEN_THREEVEC_TEST(
   1309    tbx_16b_4reg, "eor v16.16b, v15.16b, v21.16b ; "
   1310                  "eor v17.16b, v15.16b, v23.16b ; "
   1311                  "eor v18.16b, v21.16b, v23.16b ; "
   1312                  "tbx v21.16b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.16b",
   1313                  21, 15, 23)
   1314 
   1315 // Same register scheme for tbx .8b, tbx .16b, tbx.8b
   1316 GEN_THREEVEC_TEST(
   1317    tbx_8b_1reg, "tbx v21.8b, {v15.16b}, v23.8b", 21, 15, 23)
   1318 GEN_THREEVEC_TEST(
   1319    tbx_8b_2reg, "eor v16.16b, v15.16b, v21.16b ; "
   1320                 "tbx v21.8b, {v15.16b, v16.16b}, v23.8b", 21, 15, 23)
   1321 GEN_THREEVEC_TEST(
   1322    tbx_8b_3reg, "eor v16.16b, v15.16b, v21.16b ; "
   1323                 "eor v17.16b, v15.16b, v23.16b ; "
   1324                 "tbx v21.8b, {v15.16b, v16.16b, v17.16b}, v23.8b",
   1325                 21, 15, 23)
   1326 GEN_THREEVEC_TEST(
   1327    tbx_8b_4reg, "eor v16.16b, v15.16b, v21.16b ; "
   1328                 "eor v17.16b, v15.16b, v23.16b ; "
   1329                 "eor v18.16b, v21.16b, v23.16b ; "
   1330                 "tbx v21.8b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.8b",
   1331                 21, 15, 23)
   1332 
   1333 GEN_TWOVEC_TEST(cmge_zero_2d_2d,   "cmge v5.2d,  v22.2d,  #0", 5, 22)
   1334 GEN_TWOVEC_TEST(cmge_zero_4s_4s,   "cmge v5.4s,  v22.4s,  #0", 5, 22)
   1335 GEN_TWOVEC_TEST(cmge_zero_2s_2s,   "cmge v5.2s,  v22.2s,  #0", 5, 22)
   1336 GEN_TWOVEC_TEST(cmge_zero_8h_8h,   "cmge v5.8h,  v22.8h,  #0", 5, 22)
   1337 GEN_TWOVEC_TEST(cmge_zero_4h_4h,   "cmge v5.4h,  v22.4h,  #0", 5, 22)
   1338 GEN_TWOVEC_TEST(cmge_zero_16b_16b, "cmge v5.16b, v22.16b, #0", 5, 22)
   1339 GEN_TWOVEC_TEST(cmge_zero_8b_8b,   "cmge v5.8b,  v22.8b,  #0", 5, 22)
   1340 
   1341 GEN_TWOVEC_TEST(cmgt_zero_2d_2d,   "cmgt v5.2d,  v22.2d,  #0", 5, 22)
   1342 GEN_TWOVEC_TEST(cmgt_zero_4s_4s,   "cmgt v5.4s,  v22.4s,  #0", 5, 22)
   1343 GEN_TWOVEC_TEST(cmgt_zero_2s_2s,   "cmgt v5.2s,  v22.2s,  #0", 5, 22)
   1344 GEN_TWOVEC_TEST(cmgt_zero_8h_8h,   "cmgt v5.8h,  v22.8h,  #0", 5, 22)
   1345 GEN_TWOVEC_TEST(cmgt_zero_4h_4h,   "cmgt v5.4h,  v22.4h,  #0", 5, 22)
   1346 GEN_TWOVEC_TEST(cmgt_zero_16b_16b, "cmgt v5.16b, v22.16b, #0", 5, 22)
   1347 GEN_TWOVEC_TEST(cmgt_zero_8b_8b,   "cmgt v5.8b,  v22.8b,  #0", 5, 22)
   1348 
   1349 GEN_TWOVEC_TEST(cmle_zero_2d_2d,   "cmle v5.2d,  v22.2d,  #0", 5, 22)
   1350 GEN_TWOVEC_TEST(cmle_zero_4s_4s,   "cmle v5.4s,  v22.4s,  #0", 5, 22)
   1351 GEN_TWOVEC_TEST(cmle_zero_2s_2s,   "cmle v5.2s,  v22.2s,  #0", 5, 22)
   1352 GEN_TWOVEC_TEST(cmle_zero_8h_8h,   "cmle v5.8h,  v22.8h,  #0", 5, 22)
   1353 GEN_TWOVEC_TEST(cmle_zero_4h_4h,   "cmle v5.4h,  v22.4h,  #0", 5, 22)
   1354 GEN_TWOVEC_TEST(cmle_zero_16b_16b, "cmle v5.16b, v22.16b, #0", 5, 22)
   1355 GEN_TWOVEC_TEST(cmle_zero_8b_8b,   "cmle v5.8b,  v22.8b,  #0", 5, 22)
   1356 
   1357 GEN_TWOVEC_TEST(cmeq_zero_2d_2d,   "cmeq v5.2d,  v22.2d,  #0", 5, 22)
   1358 GEN_TWOVEC_TEST(cmeq_zero_4s_4s,   "cmeq v5.4s,  v22.4s,  #0", 5, 22)
   1359 GEN_TWOVEC_TEST(cmeq_zero_2s_2s,   "cmeq v5.2s,  v22.2s,  #0", 5, 22)
   1360 GEN_TWOVEC_TEST(cmeq_zero_8h_8h,   "cmeq v5.8h,  v22.8h,  #0", 5, 22)
   1361 GEN_TWOVEC_TEST(cmeq_zero_4h_4h,   "cmeq v5.4h,  v22.4h,  #0", 5, 22)
   1362 GEN_TWOVEC_TEST(cmeq_zero_16b_16b, "cmeq v5.16b, v22.16b, #0", 5, 22)
   1363 GEN_TWOVEC_TEST(cmeq_zero_8b_8b,   "cmeq v5.8b,  v22.8b,  #0", 5, 22)
   1364 
   1365 GEN_TWOVEC_TEST(cmlt_zero_2d_2d,   "cmlt v5.2d,  v22.2d,  #0", 5, 22)
   1366 GEN_TWOVEC_TEST(cmlt_zero_4s_4s,   "cmlt v5.4s,  v22.4s,  #0", 5, 22)
   1367 GEN_TWOVEC_TEST(cmlt_zero_2s_2s,   "cmlt v5.2s,  v22.2s,  #0", 5, 22)
   1368 GEN_TWOVEC_TEST(cmlt_zero_8h_8h,   "cmlt v5.8h,  v22.8h,  #0", 5, 22)
   1369 GEN_TWOVEC_TEST(cmlt_zero_4h_4h,   "cmlt v5.4h,  v22.4h,  #0", 5, 22)
   1370 GEN_TWOVEC_TEST(cmlt_zero_16b_16b, "cmlt v5.16b, v22.16b, #0", 5, 22)
   1371 GEN_TWOVEC_TEST(cmlt_zero_8b_8b,   "cmlt v5.8b,  v22.8b,  #0", 5, 22)
   1372 
   1373 GEN_TWOVEC_TEST(abs_d_d,  "abs d22, d23",   22, 23)
   1374 GEN_TWOVEC_TEST(neg_d_d,  "neg d22, d23",   22, 23)
   1375 
   1376 GEN_UNARY_TEST(abs, 2d, 2d)
   1377 GEN_UNARY_TEST(abs, 4s, 4s)
   1378 GEN_UNARY_TEST(abs, 2s, 2s)
   1379 GEN_UNARY_TEST(abs, 8h, 8h)
   1380 GEN_UNARY_TEST(abs, 4h, 4h)
   1381 GEN_UNARY_TEST(abs, 16b, 16b)
   1382 GEN_UNARY_TEST(abs, 8b, 8b)
   1383 
   1384 GEN_BINARY_TEST(addhn,   2s, 2d, 2d)
   1385 GEN_BINARY_TEST(addhn2,  4s, 2d, 2d)
   1386 GEN_BINARY_TEST(addhn,   4h, 4s, 4s)
   1387 GEN_BINARY_TEST(addhn2,  8h, 4s, 4s)
   1388 GEN_BINARY_TEST(addhn,   8b, 8h, 8h)
   1389 GEN_BINARY_TEST(addhn2,  16b, 8h, 8h)
   1390 GEN_BINARY_TEST(subhn,   2s, 2d, 2d)
   1391 GEN_BINARY_TEST(subhn2,  4s, 2d, 2d)
   1392 GEN_BINARY_TEST(subhn,   4h, 4s, 4s)
   1393 GEN_BINARY_TEST(subhn2,  8h, 4s, 4s)
   1394 GEN_BINARY_TEST(subhn,   8b, 8h, 8h)
   1395 GEN_BINARY_TEST(subhn2,  16b, 8h, 8h)
   1396 GEN_BINARY_TEST(raddhn,  2s, 2d, 2d)
   1397 GEN_BINARY_TEST(raddhn2, 4s, 2d, 2d)
   1398 GEN_BINARY_TEST(raddhn,  4h, 4s, 4s)
   1399 GEN_BINARY_TEST(raddhn2, 8h, 4s, 4s)
   1400 GEN_BINARY_TEST(raddhn,  8b, 8h, 8h)
   1401 GEN_BINARY_TEST(raddhn2, 16b, 8h, 8h)
   1402 GEN_BINARY_TEST(rsubhn,  2s, 2d, 2d)
   1403 GEN_BINARY_TEST(rsubhn2, 4s, 2d, 2d)
   1404 GEN_BINARY_TEST(rsubhn,  4h, 4s, 4s)
   1405 GEN_BINARY_TEST(rsubhn2, 8h, 4s, 4s)
   1406 GEN_BINARY_TEST(rsubhn,  8b, 8h, 8h)
   1407 GEN_BINARY_TEST(rsubhn2, 16b, 8h, 8h)
   1408 
   1409 GEN_TWOVEC_TEST(addp_d_2d,  "addp d22, v23.2d",   22, 23)
   1410 
   1411 GEN_BINARY_TEST(addp, 2d, 2d, 2d)
   1412 GEN_BINARY_TEST(addp, 4s, 4s, 4s)
   1413 GEN_BINARY_TEST(addp, 2s, 2s, 2s)
   1414 GEN_BINARY_TEST(addp, 8h, 8h, 8h)
   1415 GEN_BINARY_TEST(addp, 4h, 4h, 4h)
   1416 GEN_BINARY_TEST(addp, 16b, 16b, 16b)
   1417 GEN_BINARY_TEST(addp, 8b, 8b, 8b)
   1418 
   1419 GEN_TWOVEC_TEST(addv_s_4s,  "addv s22, v23.4s",  22, 23)
   1420 GEN_TWOVEC_TEST(addv_h_8h,  "addv h22, v23.8h",  22, 23)
   1421 GEN_TWOVEC_TEST(addv_h_4h,  "addv h22, v23.4h",  22, 23)
   1422 GEN_TWOVEC_TEST(addv_b_16b, "addv b22, v23.16b", 22, 23)
   1423 GEN_TWOVEC_TEST(addv_b_8b,  "addv b22, v23.8b",  22, 23)
   1424 
   1425 /* overkill -- don't need two vecs, only one */
   1426 GEN_TWOVEC_TEST(orr_8h_0x5A_lsl0, "orr v22.8h, #0x5A, LSL #0", 22, 23)
   1427 GEN_TWOVEC_TEST(orr_8h_0xA5_lsl8, "orr v22.8h, #0xA5, LSL #8", 22, 23)
   1428 GEN_TWOVEC_TEST(orr_4h_0x5A_lsl0, "orr v22.4h, #0x5A, LSL #0", 22, 23)
   1429 GEN_TWOVEC_TEST(orr_4h_0xA5_lsl8, "orr v22.4h, #0xA5, LSL #8", 22, 23)
   1430 GEN_TWOVEC_TEST(orr_4s_0x5A_lsl0,  "orr v22.4s, #0x5A, LSL #0",  22, 23)
   1431 GEN_TWOVEC_TEST(orr_4s_0x6B_lsl8,  "orr v22.4s, #0x6B, LSL #8",  22, 23)
   1432 GEN_TWOVEC_TEST(orr_4s_0x49_lsl16, "orr v22.4s, #0x49, LSL #16", 22, 23)
   1433 GEN_TWOVEC_TEST(orr_4s_0x3D_lsl24, "orr v22.4s, #0x3D, LSL #24", 22, 23)
   1434 GEN_TWOVEC_TEST(orr_2s_0x5A_lsl0,  "orr v22.2s, #0x5A, LSL #0",  22, 23)
   1435 GEN_TWOVEC_TEST(orr_2s_0x6B_lsl8,  "orr v22.2s, #0x6B, LSL #8",  22, 23)
   1436 GEN_TWOVEC_TEST(orr_2s_0x49_lsl16, "orr v22.2s, #0x49, LSL #16", 22, 23)
   1437 GEN_TWOVEC_TEST(orr_2s_0x3D_lsl24, "orr v22.2s, #0x3D, LSL #24", 22, 23)
   1438 GEN_TWOVEC_TEST(bic_8h_0x5A_lsl0, "bic v22.8h, #0x5A, LSL #0", 22, 23)
   1439 GEN_TWOVEC_TEST(bic_8h_0xA5_lsl8, "bic v22.8h, #0xA5, LSL #8", 22, 23)
   1440 GEN_TWOVEC_TEST(bic_4h_0x5A_lsl0, "bic v22.4h, #0x5A, LSL #0", 22, 23)
   1441 GEN_TWOVEC_TEST(bic_4h_0xA5_lsl8, "bic v22.4h, #0xA5, LSL #8", 22, 23)
   1442 GEN_TWOVEC_TEST(bic_4s_0x5A_lsl0,  "bic v22.4s, #0x5A, LSL #0",  22, 23)
   1443 GEN_TWOVEC_TEST(bic_4s_0x6B_lsl8,  "bic v22.4s, #0x6B, LSL #8",  22, 23)
   1444 GEN_TWOVEC_TEST(bic_4s_0x49_lsl16, "bic v22.4s, #0x49, LSL #16", 22, 23)
   1445 GEN_TWOVEC_TEST(bic_4s_0x3D_lsl24, "bic v22.4s, #0x3D, LSL #24", 22, 23)
   1446 GEN_TWOVEC_TEST(bic_2s_0x5A_lsl0,  "bic v22.2s, #0x5A, LSL #0",  22, 23)
   1447 GEN_TWOVEC_TEST(bic_2s_0x6B_lsl8,  "bic v22.2s, #0x6B, LSL #8",  22, 23)
   1448 GEN_TWOVEC_TEST(bic_2s_0x49_lsl16, "bic v22.2s, #0x49, LSL #16", 22, 23)
   1449 GEN_TWOVEC_TEST(bic_2s_0x3D_lsl24, "bic v22.2s, #0x3D, LSL #24", 22, 23)
   1450 
   1451 GEN_UNARY_TEST(cls, 4s, 4s)
   1452 GEN_UNARY_TEST(cls, 2s, 2s)
   1453 GEN_UNARY_TEST(cls, 8h, 8h)
   1454 GEN_UNARY_TEST(cls, 4h, 4h)
   1455 GEN_UNARY_TEST(cls, 16b, 16b)
   1456 GEN_UNARY_TEST(cls, 8b, 8b)
   1457 
   1458 GEN_UNARY_TEST(clz, 4s, 4s)
   1459 GEN_UNARY_TEST(clz, 2s, 2s)
   1460 GEN_UNARY_TEST(clz, 8h, 8h)
   1461 GEN_UNARY_TEST(clz, 4h, 4h)
   1462 GEN_UNARY_TEST(clz, 16b, 16b)
   1463 GEN_UNARY_TEST(clz, 8b, 8b)
   1464 
   1465 GEN_THREEVEC_TEST(cmeq_d_d_d,  "cmeq  d2, d11, d29", 2, 11, 29)
   1466 GEN_THREEVEC_TEST(cmge_d_d_d,  "cmge  d2, d11, d29", 2, 11, 29)
   1467 GEN_THREEVEC_TEST(cmgt_d_d_d,  "cmgt  d2, d11, d29", 2, 11, 29)
   1468 GEN_THREEVEC_TEST(cmhi_d_d_d,  "cmhi  d2, d11, d29", 2, 11, 29)
   1469 GEN_THREEVEC_TEST(cmhs_d_d_d,  "cmhs  d2, d11, d29", 2, 11, 29)
   1470 GEN_THREEVEC_TEST(cmtst_d_d_d, "cmtst d2, d11, d29", 2, 11, 29)
   1471 
   1472 GEN_TWOVEC_TEST(cmeq_zero_d_d,  "cmeq  d2, d11, #0", 2, 11)
   1473 GEN_TWOVEC_TEST(cmge_zero_d_d,  "cmge  d2, d11, #0", 2, 11)
   1474 GEN_TWOVEC_TEST(cmgt_zero_d_d,  "cmgt  d2, d11, #0", 2, 11)
   1475 GEN_TWOVEC_TEST(cmle_zero_d_d,  "cmle  d2, d11, #0", 2, 11)
   1476 GEN_TWOVEC_TEST(cmlt_zero_d_d,  "cmlt  d2, d11, #0", 2, 11)
   1477 
   1478 GEN_UNARY_TEST(cnt, 16b, 16b)
   1479 GEN_UNARY_TEST(cnt, 8b, 8b)
   1480 
   1481 GEN_TWOVEC_TEST(dup_d_d0,  "dup d22, v23.d[0]", 22, 23)
   1482 GEN_TWOVEC_TEST(dup_d_d1,  "dup d22, v23.d[1]", 22, 23)
   1483 GEN_TWOVEC_TEST(dup_s_s0,  "dup s22, v23.s[0]", 22, 23)
   1484 GEN_TWOVEC_TEST(dup_s_s3,  "dup s22, v23.s[3]", 22, 23)
   1485 GEN_TWOVEC_TEST(dup_h_h0,  "dup h22, v23.h[0]", 22, 23)
   1486 GEN_TWOVEC_TEST(dup_h_h6,  "dup h22, v23.h[6]", 22, 23)
   1487 GEN_TWOVEC_TEST(dup_b_b0,  "dup b0,  v23.b[0]",  22, 23)
   1488 GEN_TWOVEC_TEST(dup_b_b13, "dup b13, v23.b[13]", 22, 23)
   1489 
   1490 GEN_TWOVEC_TEST(dup_2d_d0,  "dup v9.2d, v17.d[0]", 9, 17)
   1491 GEN_TWOVEC_TEST(dup_2d_d1,  "dup v9.2d, v17.d[1]", 9, 17)
   1492 GEN_TWOVEC_TEST(dup_4s_s0,  "dup v9.4s, v17.s[0]", 9, 17)
   1493 GEN_TWOVEC_TEST(dup_4s_s3,  "dup v9.4s, v17.s[3]", 9, 17)
   1494 GEN_TWOVEC_TEST(dup_2s_s0,  "dup v9.2s, v17.s[0]", 9, 17)
   1495 GEN_TWOVEC_TEST(dup_2s_s2,  "dup v9.2s, v17.s[2]", 9, 17)
   1496 GEN_TWOVEC_TEST(dup_8h_h0,  "dup v9.8h, v17.h[0]", 9, 17)
   1497 GEN_TWOVEC_TEST(dup_8h_h6,  "dup v9.8h, v17.h[6]", 9, 17)
   1498 GEN_TWOVEC_TEST(dup_4h_h1,  "dup v9.4h, v17.h[1]", 9, 17)
   1499 GEN_TWOVEC_TEST(dup_4h_h5,  "dup v9.4h, v17.h[5]", 9, 17)
   1500 GEN_TWOVEC_TEST(dup_16b_b2,  "dup v9.16b, v17.b[2]", 9, 17)
   1501 GEN_TWOVEC_TEST(dup_16b_b12, "dup v9.16b, v17.b[12]", 9, 17)
   1502 GEN_TWOVEC_TEST(dup_8b_b3,  "dup v9.8b, v17.b[3]", 9, 17)
   1503 GEN_TWOVEC_TEST(dup_8b_b13, "dup v9.8b, v17.b[13]", 9, 17)
   1504 
   1505 GEN_TWOVEC_TEST(dup_2d_x,  "mov x10, v17.d[0];  dup v9.2d,  x10", 9, 17)
   1506 GEN_TWOVEC_TEST(dup_4s_w,  "mov x10, v17.d[0];  dup v9.4s,  w10", 9, 17)
   1507 GEN_TWOVEC_TEST(dup_2s_w,  "mov x10, v17.d[0];  dup v9.2s,  w10", 9, 17)
   1508 GEN_TWOVEC_TEST(dup_8h_w,  "mov x10, v17.d[0];  dup v9.8h,  w10",  9, 17)
   1509 GEN_TWOVEC_TEST(dup_4h_w,  "mov x10, v17.d[0];  dup v9.4h,  w10",  9, 17)
   1510 GEN_TWOVEC_TEST(dup_16b_w, "mov x10, v17.d[0];  dup v9.16b, w10", 9, 17)
   1511 GEN_TWOVEC_TEST(dup_8b_w,  "mov x10, v17.d[0];  dup v9.8b,  w10",  9, 17)
   1512 
   1513 GEN_THREEVEC_TEST(ext_16b_16b_16b_0x0,
   1514                   "ext  v2.16b, v11.16b, v29.16b, #0", 2, 11, 29)
   1515 GEN_THREEVEC_TEST(ext_16b_16b_16b_0x7,
   1516                   "ext  v2.16b, v11.16b, v29.16b, #7", 2, 11, 29)
   1517 GEN_THREEVEC_TEST(ext_16b_16b_16b_0x8,
   1518                   "ext  v2.16b, v11.16b, v29.16b, #8", 2, 11, 29)
   1519 GEN_THREEVEC_TEST(ext_16b_16b_16b_0x9,
   1520                   "ext  v2.16b, v11.16b, v29.16b, #9", 2, 11, 29)
   1521 GEN_THREEVEC_TEST(ext_16b_16b_16b_0xF,
   1522                   "ext  v2.16b, v11.16b, v29.16b, #15", 2, 11, 29)
   1523 
   1524 GEN_THREEVEC_TEST(ext_8b_8b_8b_0x0,
   1525                   "ext  v2.8b, v11.8b, v29.8b, #0", 2, 11, 29)
   1526 GEN_THREEVEC_TEST(ext_8b_8b_8b_0x1,
   1527                   "ext  v2.8b, v11.8b, v29.8b, #1", 2, 11, 29)
   1528 GEN_THREEVEC_TEST(ext_8b_8b_8b_0x6,
   1529                   "ext  v2.8b, v11.8b, v29.8b, #6", 2, 11, 29)
   1530 GEN_THREEVEC_TEST(ext_8b_8b_8b_0x7,
   1531                   "ext  v2.8b, v11.8b, v29.8b, #7", 2, 11, 29)
   1532 
   1533 
   1534 GEN_TWOVEC_TEST(ins_d0_d0, "ins v3.d[0], v24.d[0]", 3, 24)
   1535 GEN_TWOVEC_TEST(ins_d0_d1, "ins v3.d[0], v24.d[1]", 3, 24)
   1536 GEN_TWOVEC_TEST(ins_d1_d0, "ins v3.d[1], v24.d[0]", 3, 24)
   1537 GEN_TWOVEC_TEST(ins_d1_d1, "ins v3.d[1], v24.d[1]", 3, 24)
   1538 
   1539 GEN_TWOVEC_TEST(ins_s0_s2, "ins v3.s[0], v24.s[2]", 3, 24)
   1540 GEN_TWOVEC_TEST(ins_s3_s0, "ins v3.s[3], v24.s[0]", 3, 24)
   1541 GEN_TWOVEC_TEST(ins_s2_s1, "ins v3.s[2], v24.s[1]", 3, 24)
   1542 GEN_TWOVEC_TEST(ins_s1_s3, "ins v3.s[1], v24.s[3]", 3, 24)
   1543 
   1544 GEN_TWOVEC_TEST(ins_h0_h6, "ins v3.h[0], v24.h[6]", 3, 24)
   1545 GEN_TWOVEC_TEST(ins_h7_h0, "ins v3.h[7], v24.h[0]", 3, 24)
   1546 GEN_TWOVEC_TEST(ins_h6_h1, "ins v3.h[6], v24.h[1]", 3, 24)
   1547 GEN_TWOVEC_TEST(ins_h1_h7, "ins v3.h[1], v24.h[7]", 3, 24)
   1548 
   1549 GEN_TWOVEC_TEST(ins_b0_b14, "ins v3.b[0],  v24.b[14]", 3, 24)
   1550 GEN_TWOVEC_TEST(ins_b15_b8, "ins v3.b[15], v24.b[8]",  3, 24)
   1551 GEN_TWOVEC_TEST(ins_b13_b9, "ins v3.b[13], v24.b[9]",  3, 24)
   1552 GEN_TWOVEC_TEST(ins_b5_b12, "ins v3.b[5],  v24.b[12]", 3, 24)
   1553 
   1554 GEN_THREEVEC_TEST(mla_4s_4s_s0, "mla v2.4s, v11.4s, v29.s[0]", 2, 11, 29)
   1555 GEN_THREEVEC_TEST(mla_4s_4s_s3, "mla v2.4s, v11.4s, v29.s[3]", 2, 11, 29)
   1556 GEN_THREEVEC_TEST(mla_2s_2s_s0, "mla v2.2s, v11.2s, v29.s[0]", 2, 11, 29)
   1557 GEN_THREEVEC_TEST(mla_2s_2s_s3, "mla v2.2s, v11.2s, v29.s[3]", 2, 11, 29)
   1558 // For the 'h' version of these, Rm can only be <= 15 (!)
   1559 GEN_THREEVEC_TEST(mla_8h_8h_h1, "mla v2.8h, v11.8h, v2.h[1]", 2, 11, 9)
   1560 GEN_THREEVEC_TEST(mla_8h_8h_h5, "mla v2.8h, v11.8h, v2.h[5]", 2, 11, 9)
   1561 GEN_THREEVEC_TEST(mla_4h_4h_h2, "mla v2.4h, v11.4h, v2.h[2]", 2, 11, 9)
   1562 GEN_THREEVEC_TEST(mla_4h_4h_h7, "mla v2.4h, v11.4h, v2.h[7]", 2, 11, 9)
   1563 
   1564 GEN_THREEVEC_TEST(mls_4s_4s_s0, "mls v2.4s, v11.4s, v29.s[0]", 2, 11, 29)
   1565 GEN_THREEVEC_TEST(mls_4s_4s_s3, "mls v2.4s, v11.4s, v29.s[3]", 2, 11, 29)
   1566 GEN_THREEVEC_TEST(mls_2s_2s_s0, "mls v2.2s, v11.2s, v29.s[0]", 2, 11, 29)
   1567 GEN_THREEVEC_TEST(mls_2s_2s_s3, "mls v2.2s, v11.2s, v29.s[3]", 2, 11, 29)
   1568 // For the 'h' version of these, Rm can only be <= 15 (!)
   1569 GEN_THREEVEC_TEST(mls_8h_8h_h1, "mls v2.8h, v11.8h, v2.h[1]", 2, 11, 9)
   1570 GEN_THREEVEC_TEST(mls_8h_8h_h5, "mls v2.8h, v11.8h, v2.h[5]", 2, 11, 9)
   1571 GEN_THREEVEC_TEST(mls_4h_4h_h2, "mls v2.4h, v11.4h, v2.h[2]", 2, 11, 9)
   1572 GEN_THREEVEC_TEST(mls_4h_4h_h7, "mls v2.4h, v11.4h, v2.h[7]", 2, 11, 9)
   1573 
   1574 GEN_THREEVEC_TEST(mul_4s_4s_s0, "mul v2.4s, v11.4s, v29.s[0]", 2, 11, 29)
   1575 GEN_THREEVEC_TEST(mul_4s_4s_s3, "mul v2.4s, v11.4s, v29.s[3]", 2, 11, 29)
   1576 GEN_THREEVEC_TEST(mul_2s_2s_s0, "mul v2.2s, v11.2s, v29.s[0]", 2, 11, 29)
   1577 GEN_THREEVEC_TEST(mul_2s_2s_s3, "mul v2.2s, v11.2s, v29.s[3]", 2, 11, 29)
   1578 // For the 'h' version of these, Rm can only be <= 15 (!)
   1579 GEN_THREEVEC_TEST(mul_8h_8h_h1, "mul v2.8h, v11.8h, v2.h[1]", 2, 11, 9)
   1580 GEN_THREEVEC_TEST(mul_8h_8h_h5, "mul v2.8h, v11.8h, v2.h[5]", 2, 11, 9)
   1581 GEN_THREEVEC_TEST(mul_4h_4h_h2, "mul v2.4h, v11.4h, v2.h[2]", 2, 11, 9)
   1582 GEN_THREEVEC_TEST(mul_4h_4h_h7, "mul v2.4h, v11.4h, v2.h[7]", 2, 11, 9)
   1583 
   1584 /* overkill -- don't need two vecs, only one */
   1585 GEN_TWOVEC_TEST(movi_16b_0x9C_lsl0, "movi v22.16b, #0x9C, LSL #0", 22, 23)
   1586 GEN_TWOVEC_TEST(movi_8b_0x8B_lsl0,  "movi v22.8b,  #0x8B, LSL #0", 22, 23)
   1587 GEN_TWOVEC_TEST(movi_8h_0x5A_lsl0,  "movi v22.8h,  #0x5A, LSL #0", 22, 23)
   1588 GEN_TWOVEC_TEST(movi_8h_0xA5_lsl8,  "movi v22.8h,  #0xA5, LSL #8", 22, 23)
   1589 GEN_TWOVEC_TEST(movi_4h_0x5A_lsl0,  "movi v22.4h,  #0x5A, LSL #0", 22, 23)
   1590 GEN_TWOVEC_TEST(movi_4h_0xA5_lsl8,  "movi v22.4h,  #0xA5, LSL #8", 22, 23)
   1591 GEN_TWOVEC_TEST(movi_4s_0x5A_lsl0,  "movi v22.4s,  #0x5A, LSL #0",  22, 23)
   1592 GEN_TWOVEC_TEST(movi_4s_0x6B_lsl8,  "movi v22.4s,  #0x6B, LSL #8",  22, 23)
   1593 GEN_TWOVEC_TEST(movi_4s_0x49_lsl16, "movi v22.4s,  #0x49, LSL #16", 22, 23)
   1594 GEN_TWOVEC_TEST(movi_4s_0x3D_lsl24, "movi v22.4s,  #0x3D, LSL #24", 22, 23)
   1595 GEN_TWOVEC_TEST(movi_2s_0x5A_lsl0,  "movi v22.2s,  #0x5A, LSL #0",  22, 23)
   1596 GEN_TWOVEC_TEST(movi_2s_0x6B_lsl8,  "movi v22.2s,  #0x6B, LSL #8",  22, 23)
   1597 GEN_TWOVEC_TEST(movi_2s_0x49_lsl16, "movi v22.2s,  #0x49, LSL #16", 22, 23)
   1598 GEN_TWOVEC_TEST(movi_2s_0x3D_lsl24, "movi v22.2s,  #0x3D, LSL #24", 22, 23)
   1599 GEN_TWOVEC_TEST(movi_4s_0x6B_msl8,  "movi v22.4s,  #0x6B, MSL #8", 22, 23)
   1600 GEN_TWOVEC_TEST(movi_4s_0x94_msl16, "movi v22.4s,  #0x94, MSL #16", 22, 23)
   1601 GEN_TWOVEC_TEST(movi_2s_0x7A_msl8,  "movi v22.2s,  #0x7A, MSL #8", 22, 23)
   1602 GEN_TWOVEC_TEST(movi_2s_0xA5_msl16, "movi v22.2s,  #0xA5, MSL #16", 22, 23)
   1603 
   1604 GEN_TWOVEC_TEST(movi_d_0xA5,  "movi d22,    #0xFF00FF0000FF00FF", 22, 23)
   1605 GEN_TWOVEC_TEST(movi_2d_0xB4, "movi v22.2d, #0xFF00FFFF00FF0000", 22, 23)
   1606 
   1607 /* overkill -- don't need two vecs, only one */
   1608 GEN_TWOVEC_TEST(mvni_8h_0x5A_lsl0,  "mvni v22.8h,  #0x5A, LSL #0", 22, 23)
   1609 GEN_TWOVEC_TEST(mvni_8h_0xA5_lsl8,  "mvni v22.8h,  #0xA5, LSL #8", 22, 23)
   1610 GEN_TWOVEC_TEST(mvni_4h_0x5A_lsl0,  "mvni v22.4h,  #0x5A, LSL #0", 22, 23)
   1611 GEN_TWOVEC_TEST(mvni_4h_0xA5_lsl8,  "mvni v22.4h,  #0xA5, LSL #8", 22, 23)
   1612 GEN_TWOVEC_TEST(mvni_4s_0x5A_lsl0,  "mvni v22.4s,  #0x5A, LSL #0",  22, 23)
   1613 GEN_TWOVEC_TEST(mvni_4s_0x6B_lsl8,  "mvni v22.4s,  #0x6B, LSL #8",  22, 23)
   1614 GEN_TWOVEC_TEST(mvni_4s_0x49_lsl16, "mvni v22.4s,  #0x49, LSL #16", 22, 23)
   1615 GEN_TWOVEC_TEST(mvni_4s_0x3D_lsl24, "mvni v22.4s,  #0x3D, LSL #24", 22, 23)
   1616 GEN_TWOVEC_TEST(mvni_2s_0x5A_lsl0,  "mvni v22.2s,  #0x5A, LSL #0",  22, 23)
   1617 GEN_TWOVEC_TEST(mvni_2s_0x6B_lsl8,  "mvni v22.2s,  #0x6B, LSL #8",  22, 23)
   1618 GEN_TWOVEC_TEST(mvni_2s_0x49_lsl16, "mvni v22.2s,  #0x49, LSL #16", 22, 23)
   1619 GEN_TWOVEC_TEST(mvni_2s_0x3D_lsl24, "mvni v22.2s,  #0x3D, LSL #24", 22, 23)
   1620 GEN_TWOVEC_TEST(mvni_4s_0x6B_msl8,  "mvni v22.4s,  #0x6B, MSL #8", 22, 23)
   1621 GEN_TWOVEC_TEST(mvni_4s_0x94_msl16, "mvni v22.4s,  #0x94, MSL #16", 22, 23)
   1622 GEN_TWOVEC_TEST(mvni_2s_0x7A_msl8,  "mvni v22.2s,  #0x7A, MSL #8", 22, 23)
   1623 GEN_TWOVEC_TEST(mvni_2s_0xA5_msl16, "mvni v22.2s,  #0xA5, MSL #16", 22, 23)
   1624 
   1625 GEN_UNARY_TEST(not, 16b, 16b)
   1626 GEN_UNARY_TEST(not, 8b,  8b)
   1627 
   1628 GEN_BINARY_TEST(pmul, 16b, 16b, 16b)
   1629 GEN_BINARY_TEST(pmul, 8b, 8b, 8b)
   1630 
   1631 GEN_BINARY_TEST(pmull,  8h, 8b,  8b)
   1632 GEN_BINARY_TEST(pmull2, 8h, 16b, 16b)
   1633 //GEN_BINARY_TEST(pmull,  1q, 1d,  1d)
   1634 //GEN_BINARY_TEST(pmull,  1q, 2d,  2d)
   1635 
   1636 GEN_UNARY_TEST(rbit, 16b, 16b)
   1637 GEN_UNARY_TEST(rbit, 8b, 8b)
   1638 GEN_UNARY_TEST(rev16, 16b, 16b)
   1639 GEN_UNARY_TEST(rev16, 8b, 8b)
   1640 GEN_UNARY_TEST(rev32, 16b, 16b)
   1641 GEN_UNARY_TEST(rev32, 8b, 8b)
   1642 GEN_UNARY_TEST(rev32, 8h, 8h)
   1643 GEN_UNARY_TEST(rev32, 4h, 4h)
   1644 GEN_UNARY_TEST(rev64, 16b, 16b)
   1645 GEN_UNARY_TEST(rev64, 8b, 8b)
   1646 GEN_UNARY_TEST(rev64, 8h, 8h)
   1647 GEN_UNARY_TEST(rev64, 4h, 4h)
   1648 GEN_UNARY_TEST(rev64, 4s, 4s)
   1649 GEN_UNARY_TEST(rev64, 2s, 2s)
   1650 
   1651 GEN_BINARY_TEST(saba, 4s, 4s, 4s)
   1652 GEN_BINARY_TEST(saba, 2s, 2s, 2s)
   1653 GEN_BINARY_TEST(saba, 8h, 8h, 8h)
   1654 GEN_BINARY_TEST(saba, 4h, 4h, 4h)
   1655 GEN_BINARY_TEST(saba, 16b, 16b, 16b)
   1656 GEN_BINARY_TEST(saba, 8b, 8b, 8b)
   1657 
   1658 GEN_BINARY_TEST(uaba, 4s, 4s, 4s)
   1659 GEN_BINARY_TEST(uaba, 2s, 2s, 2s)
   1660 GEN_BINARY_TEST(uaba, 8h, 8h, 8h)
   1661 GEN_BINARY_TEST(uaba, 4h, 4h, 4h)
   1662 GEN_BINARY_TEST(uaba, 16b, 16b, 16b)
   1663 GEN_BINARY_TEST(uaba, 8b, 8b, 8b)
   1664 
   1665 GEN_THREEVEC_TEST(sabal_2d_2s_2s,  "sabal  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   1666 GEN_THREEVEC_TEST(sabal2_2d_4s_4s, "sabal2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   1667 
   1668 GEN_THREEVEC_TEST(sabal_4s_4h_4h,  "sabal  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   1669 GEN_THREEVEC_TEST(sabal2_4s_8h_8h, "sabal2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   1670 
   1671 GEN_THREEVEC_TEST(sabal_8h_8b_8b,  "sabal  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   1672 GEN_THREEVEC_TEST(sabal2_8h_16b_16b,
   1673                                    "sabal2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   1674 
   1675 GEN_THREEVEC_TEST(uabal_2d_2s_2s,  "uabal  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   1676 GEN_THREEVEC_TEST(uabal2_2d_4s_4s, "uabal2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   1677 
   1678 GEN_THREEVEC_TEST(uabal_4s_4h_4h,  "uabal  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   1679 GEN_THREEVEC_TEST(uabal2_4s_8h_8h, "uabal2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   1680 
   1681 GEN_THREEVEC_TEST(uabal_8h_8b_8b,  "uabal  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   1682 GEN_THREEVEC_TEST(uabal2_8h_16b_16b,
   1683                                    "uabal2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   1684 
   1685 GEN_THREEVEC_TEST(sabd_4s_4s_4s,    "sabd v2.4s, v11.4s, v29.4s", 2, 11, 29)
   1686 GEN_THREEVEC_TEST(sabd_2s_2s_2s,    "sabd v2.2s, v11.2s, v29.2s", 2, 11, 29)
   1687 GEN_THREEVEC_TEST(sabd_8h_8h_8h,    "sabd v2.8h, v11.8h, v29.8h", 2, 11, 29)
   1688 GEN_THREEVEC_TEST(sabd_4h_4h_4h,    "sabd v2.4h, v11.4h, v29.4h", 2, 11, 29)
   1689 GEN_THREEVEC_TEST(sabd_16b_16b_16b, "sabd v2.16b, v11.16b, v29.16b", 2, 11, 29)
   1690 GEN_THREEVEC_TEST(sabd_8b_8b_8b,    "sabd v2.8b, v11.8b, v29.8b", 2, 11, 29)
   1691 
   1692 GEN_THREEVEC_TEST(uabd_4s_4s_4s,    "uabd v2.4s, v11.4s, v29.4s", 2, 11, 29)
   1693 GEN_THREEVEC_TEST(uabd_2s_2s_2s,    "uabd v2.2s, v11.2s, v29.2s", 2, 11, 29)
   1694 GEN_THREEVEC_TEST(uabd_8h_8h_8h,    "uabd v2.8h, v11.8h, v29.8h", 2, 11, 29)
   1695 GEN_THREEVEC_TEST(uabd_4h_4h_4h,    "uabd v2.4h, v11.4h, v29.4h", 2, 11, 29)
   1696 GEN_THREEVEC_TEST(uabd_16b_16b_16b, "uabd v2.16b, v11.16b, v29.16b", 2, 11, 29)
   1697 GEN_THREEVEC_TEST(uabd_8b_8b_8b,    "uabd v2.8b, v11.8b, v29.8b", 2, 11, 29)
   1698 
   1699 GEN_THREEVEC_TEST(sabdl_2d_2s_2s,  "sabdl  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   1700 GEN_THREEVEC_TEST(sabdl2_2d_4s_4s, "sabdl2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   1701 
   1702 GEN_THREEVEC_TEST(sabdl_4s_4h_4h,  "sabdl  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   1703 GEN_THREEVEC_TEST(sabdl2_4s_8h_8h, "sabdl2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   1704 
   1705 GEN_THREEVEC_TEST(sabdl_8h_8b_8b,  "sabdl  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   1706 GEN_THREEVEC_TEST(sabdl2_8h_16b_16b,
   1707                                    "sabdl2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   1708 
   1709 GEN_THREEVEC_TEST(uabdl_2d_2s_2s,  "uabdl  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   1710 GEN_THREEVEC_TEST(uabdl2_2d_4s_4s, "uabdl2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   1711 
   1712 GEN_THREEVEC_TEST(uabdl_4s_4h_4h,  "uabdl  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   1713 GEN_THREEVEC_TEST(uabdl2_4s_8h_8h, "uabdl2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   1714 
   1715 GEN_THREEVEC_TEST(uabdl_8h_8b_8b,  "uabdl  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   1716 GEN_THREEVEC_TEST(uabdl2_8h_16b_16b,
   1717                                    "uabdl2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   1718 
   1719 GEN_TWOVEC_TEST(sadalp_4h_8b,  "sadalp v3.4h, v19.8b",  3, 19)
   1720 GEN_TWOVEC_TEST(sadalp_8h_16b, "sadalp v3.8h, v19.16b", 3, 19)
   1721 GEN_TWOVEC_TEST(sadalp_2s_4h,  "sadalp v3.2s, v19.4h",  3, 19)
   1722 GEN_TWOVEC_TEST(sadalp_4s_8h,  "sadalp v3.4s, v19.8h",  3, 19)
   1723 GEN_TWOVEC_TEST(sadalp_1d_2s,  "sadalp v3.1d, v19.2s",  3, 19)
   1724 GEN_TWOVEC_TEST(sadalp_2d_4s,  "sadalp v3.2d, v19.4s",  3, 19)
   1725 
   1726 GEN_TWOVEC_TEST(uadalp_4h_8b,  "uadalp v3.4h, v19.8b",  3, 19)
   1727 GEN_TWOVEC_TEST(uadalp_8h_16b, "uadalp v3.8h, v19.16b", 3, 19)
   1728 GEN_TWOVEC_TEST(uadalp_2s_4h,  "uadalp v3.2s, v19.4h",  3, 19)
   1729 GEN_TWOVEC_TEST(uadalp_4s_8h,  "uadalp v3.4s, v19.8h",  3, 19)
   1730 GEN_TWOVEC_TEST(uadalp_1d_2s,  "uadalp v3.1d, v19.2s",  3, 19)
   1731 GEN_TWOVEC_TEST(uadalp_2d_4s,  "uadalp v3.2d, v19.4s",  3, 19)
   1732 
   1733 GEN_THREEVEC_TEST(saddl_2d_2s_2s,  "saddl  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   1734 GEN_THREEVEC_TEST(saddl2_2d_4s_4s, "saddl2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   1735 
   1736 GEN_THREEVEC_TEST(saddl_4s_4h_4h,  "saddl  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   1737 GEN_THREEVEC_TEST(saddl2_4s_8h_8h, "saddl2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   1738 
   1739 GEN_THREEVEC_TEST(saddl_8h_8b_8b,  "saddl  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   1740 GEN_THREEVEC_TEST(saddl2_8h_16b_16b,
   1741                                    "saddl2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   1742 
   1743 GEN_THREEVEC_TEST(uaddl_2d_2s_2s,  "uaddl  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   1744 GEN_THREEVEC_TEST(uaddl2_2d_4s_4s, "uaddl2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   1745 
   1746 GEN_THREEVEC_TEST(uaddl_4s_4h_4h,  "uaddl  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   1747 GEN_THREEVEC_TEST(uaddl2_4s_8h_8h, "uaddl2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   1748 
   1749 GEN_THREEVEC_TEST(uaddl_8h_8b_8b,  "uaddl  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   1750 GEN_THREEVEC_TEST(uaddl2_8h_16b_16b,
   1751                                    "uaddl2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   1752 
   1753 GEN_THREEVEC_TEST(ssubl_2d_2s_2s,  "ssubl  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   1754 GEN_THREEVEC_TEST(ssubl2_2d_4s_4s, "ssubl2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   1755 
   1756 GEN_THREEVEC_TEST(ssubl_4s_4h_4h,  "ssubl  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   1757 GEN_THREEVEC_TEST(ssubl2_4s_8h_8h, "ssubl2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   1758 
   1759 GEN_THREEVEC_TEST(ssubl_8h_8b_8b,  "ssubl  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   1760 GEN_THREEVEC_TEST(ssubl2_8h_16b_16b,
   1761                                    "ssubl2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   1762 
   1763 GEN_THREEVEC_TEST(usubl_2d_2s_2s,  "usubl  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   1764 GEN_THREEVEC_TEST(usubl2_2d_4s_4s, "usubl2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   1765 
   1766 GEN_THREEVEC_TEST(usubl_4s_4h_4h,  "usubl  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   1767 GEN_THREEVEC_TEST(usubl2_4s_8h_8h, "usubl2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   1768 
   1769 GEN_THREEVEC_TEST(usubl_8h_8b_8b,  "usubl  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   1770 GEN_THREEVEC_TEST(usubl2_8h_16b_16b,
   1771                                    "usubl2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   1772 
   1773 GEN_TWOVEC_TEST(saddlp_4h_8b,  "saddlp v3.4h, v19.8b",  3, 19)
   1774 GEN_TWOVEC_TEST(saddlp_8h_16b, "saddlp v3.8h, v19.16b", 3, 19)
   1775 GEN_TWOVEC_TEST(saddlp_2s_4h,  "saddlp v3.2s, v19.4h",  3, 19)
   1776 GEN_TWOVEC_TEST(saddlp_4s_8h,  "saddlp v3.4s, v19.8h",  3, 19)
   1777 GEN_TWOVEC_TEST(saddlp_1d_2s,  "saddlp v3.1d, v19.2s",  3, 19)
   1778 GEN_TWOVEC_TEST(saddlp_2d_4s,  "saddlp v3.2d, v19.4s",  3, 19)
   1779 
   1780 GEN_TWOVEC_TEST(uaddlp_4h_8b,  "uaddlp v3.4h, v19.8b",  3, 19)
   1781 GEN_TWOVEC_TEST(uaddlp_8h_16b, "uaddlp v3.8h, v19.16b", 3, 19)
   1782 GEN_TWOVEC_TEST(uaddlp_2s_4h,  "uaddlp v3.2s, v19.4h",  3, 19)
   1783 GEN_TWOVEC_TEST(uaddlp_4s_8h,  "uaddlp v3.4s, v19.8h",  3, 19)
   1784 GEN_TWOVEC_TEST(uaddlp_1d_2s,  "uaddlp v3.1d, v19.2s",  3, 19)
   1785 GEN_TWOVEC_TEST(uaddlp_2d_4s,  "uaddlp v3.2d, v19.4s",  3, 19)
   1786 
   1787 GEN_TWOVEC_TEST(saddlv_h_16b, "saddlv h3, v19.16b",  3, 19)
   1788 GEN_TWOVEC_TEST(saddlv_h_8b,  "saddlv h3, v19.8b",   3, 19)
   1789 GEN_TWOVEC_TEST(saddlv_s_8h,  "saddlv s3, v19.8h",   3, 19)
   1790 GEN_TWOVEC_TEST(saddlv_s_4h,  "saddlv s3, v19.4h",   3, 19)
   1791 GEN_TWOVEC_TEST(saddlv_d_4s,  "saddlv d3, v19.4s",   3, 19)
   1792 
   1793 GEN_TWOVEC_TEST(uaddlv_h_16b, "uaddlv h3, v19.16b",  3, 19)
   1794 GEN_TWOVEC_TEST(uaddlv_h_8b,  "uaddlv h3, v19.8b",   3, 19)
   1795 GEN_TWOVEC_TEST(uaddlv_s_8h,  "uaddlv s3, v19.8h",   3, 19)
   1796 GEN_TWOVEC_TEST(uaddlv_s_4h,  "uaddlv s3, v19.4h",   3, 19)
   1797 GEN_TWOVEC_TEST(uaddlv_d_4s,  "uaddlv d3, v19.4s",   3, 19)
   1798 
   1799 GEN_THREEVEC_TEST(saddw2_8h_8h_16b, "saddw2 v5.8h, v13.8h, v31.16b", 5, 13, 31)
   1800 GEN_THREEVEC_TEST(saddw_8h_8h_8b,   "saddw  v5.8h, v13.8h, v31.8b",  5, 13, 31)
   1801 GEN_THREEVEC_TEST(saddw2_4s_4s_8h,  "saddw2 v5.4s, v13.4s, v31.8h",  5, 13, 31)
   1802 GEN_THREEVEC_TEST(saddw_4s_4s_4h,   "saddw  v5.4s, v13.4s, v31.4h",  5, 13, 31)
   1803 GEN_THREEVEC_TEST(saddw2_2d_2d_4s,  "saddw2 v5.2d, v13.2d, v31.4s",  5, 13, 31)
   1804 GEN_THREEVEC_TEST(saddw_2d_2d_2s,   "saddw  v5.2d, v13.2d, v31.2s",  5, 13, 31)
   1805 
   1806 GEN_THREEVEC_TEST(uaddw2_8h_8h_16b, "uaddw2 v5.8h, v13.8h, v31.16b", 5, 13, 31)
   1807 GEN_THREEVEC_TEST(uaddw_8h_8h_8b,   "uaddw  v5.8h, v13.8h, v31.8b",  5, 13, 31)
   1808 GEN_THREEVEC_TEST(uaddw2_4s_4s_8h,  "uaddw2 v5.4s, v13.4s, v31.8h",  5, 13, 31)
   1809 GEN_THREEVEC_TEST(uaddw_4s_4s_4h,   "uaddw  v5.4s, v13.4s, v31.4h",  5, 13, 31)
   1810 GEN_THREEVEC_TEST(uaddw2_2d_2d_4s,  "uaddw2 v5.2d, v13.2d, v31.4s",  5, 13, 31)
   1811 GEN_THREEVEC_TEST(uaddw_2d_2d_2s,   "uaddw  v5.2d, v13.2d, v31.2s",  5, 13, 31)
   1812 
   1813 GEN_THREEVEC_TEST(ssubw2_8h_8h_16b, "ssubw2 v5.8h, v13.8h, v31.16b", 5, 13, 31)
   1814 GEN_THREEVEC_TEST(ssubw_8h_8h_8b,   "ssubw  v5.8h, v13.8h, v31.8b",  5, 13, 31)
   1815 GEN_THREEVEC_TEST(ssubw2_4s_4s_8h,  "ssubw2 v5.4s, v13.4s, v31.8h",  5, 13, 31)
   1816 GEN_THREEVEC_TEST(ssubw_4s_4s_4h,   "ssubw  v5.4s, v13.4s, v31.4h",  5, 13, 31)
   1817 GEN_THREEVEC_TEST(ssubw2_2d_2d_4s,  "ssubw2 v5.2d, v13.2d, v31.4s",  5, 13, 31)
   1818 GEN_THREEVEC_TEST(ssubw_2d_2d_2s,   "ssubw  v5.2d, v13.2d, v31.2s",  5, 13, 31)
   1819 
   1820 GEN_THREEVEC_TEST(usubw2_8h_8h_16b, "usubw2 v5.8h, v13.8h, v31.16b", 5, 13, 31)
   1821 GEN_THREEVEC_TEST(usubw_8h_8h_8b,   "usubw  v5.8h, v13.8h, v31.8b",  5, 13, 31)
   1822 GEN_THREEVEC_TEST(usubw2_4s_4s_8h,  "usubw2 v5.4s, v13.4s, v31.8h",  5, 13, 31)
   1823 GEN_THREEVEC_TEST(usubw_4s_4s_4h,   "usubw  v5.4s, v13.4s, v31.4h",  5, 13, 31)
   1824 GEN_THREEVEC_TEST(usubw2_2d_2d_4s,  "usubw2 v5.2d, v13.2d, v31.4s",  5, 13, 31)
   1825 GEN_THREEVEC_TEST(usubw_2d_2d_2s,   "usubw  v5.2d, v13.2d, v31.2s",  5, 13, 31)
   1826 
   1827 GEN_THREEVEC_TEST(shadd_4s_4s_4s,   "shadd v2.4s,  v11.4s,  v29.4s", 2, 11, 29)
   1828 GEN_THREEVEC_TEST(shadd_2s_2s_2s,   "shadd v2.2s,  v11.2s,  v29.2s", 2, 11, 29)
   1829 GEN_THREEVEC_TEST(shadd_8h_8h_8h,   "shadd v2.8h,  v11.8h,  v29.8h", 2, 11, 29)
   1830 GEN_THREEVEC_TEST(shadd_4h_4h_4h,   "shadd v2.4h,  v11.4h,  v29.4h", 2, 11, 29)
   1831 GEN_THREEVEC_TEST(shadd_16b_16b_16b,"shadd v2.16b, v11.16b, v29.16b", 2, 11, 29)
   1832 GEN_THREEVEC_TEST(shadd_8b_8b_8b,   "shadd v2.8b,  v11.8b,  v29.8b", 2, 11, 29)
   1833 
   1834 GEN_THREEVEC_TEST(uhadd_4s_4s_4s,   "uhadd v2.4s,  v11.4s,  v29.4s", 2, 11, 29)
   1835 GEN_THREEVEC_TEST(uhadd_2s_2s_2s,   "uhadd v2.2s,  v11.2s,  v29.2s", 2, 11, 29)
   1836 GEN_THREEVEC_TEST(uhadd_8h_8h_8h,   "uhadd v2.8h,  v11.8h,  v29.8h", 2, 11, 29)
   1837 GEN_THREEVEC_TEST(uhadd_4h_4h_4h,   "uhadd v2.4h,  v11.4h,  v29.4h", 2, 11, 29)
   1838 GEN_THREEVEC_TEST(uhadd_16b_16b_16b,"uhadd v2.16b, v11.16b, v29.16b", 2, 11, 29)
   1839 GEN_THREEVEC_TEST(uhadd_8b_8b_8b,   "uhadd v2.8b,  v11.8b,  v29.8b", 2, 11, 29)
   1840 
   1841 GEN_THREEVEC_TEST(shsub_4s_4s_4s,   "shsub v2.4s,  v11.4s,  v29.4s", 2, 11, 29)
   1842 GEN_THREEVEC_TEST(shsub_2s_2s_2s,   "shsub v2.2s,  v11.2s,  v29.2s", 2, 11, 29)
   1843 GEN_THREEVEC_TEST(shsub_8h_8h_8h,   "shsub v2.8h,  v11.8h,  v29.8h", 2, 11, 29)
   1844 GEN_THREEVEC_TEST(shsub_4h_4h_4h,   "shsub v2.4h,  v11.4h,  v29.4h", 2, 11, 29)
   1845 GEN_THREEVEC_TEST(shsub_16b_16b_16b,"shsub v2.16b, v11.16b, v29.16b", 2, 11, 29)
   1846 GEN_THREEVEC_TEST(shsub_8b_8b_8b,   "shsub v2.8b,  v11.8b,  v29.8b", 2, 11, 29)
   1847 
   1848 GEN_THREEVEC_TEST(uhsub_4s_4s_4s,   "uhsub v2.4s,  v11.4s,  v29.4s", 2, 11, 29)
   1849 GEN_THREEVEC_TEST(uhsub_2s_2s_2s,   "uhsub v2.2s,  v11.2s,  v29.2s", 2, 11, 29)
   1850 GEN_THREEVEC_TEST(uhsub_8h_8h_8h,   "uhsub v2.8h,  v11.8h,  v29.8h", 2, 11, 29)
   1851 GEN_THREEVEC_TEST(uhsub_4h_4h_4h,   "uhsub v2.4h,  v11.4h,  v29.4h", 2, 11, 29)
   1852 GEN_THREEVEC_TEST(uhsub_16b_16b_16b,"uhsub v2.16b, v11.16b, v29.16b", 2, 11, 29)
   1853 GEN_THREEVEC_TEST(uhsub_8b_8b_8b,   "uhsub v2.8b,  v11.8b,  v29.8b", 2, 11, 29)
   1854 
   1855 GEN_TWOVEC_TEST(shll_8h_8b_8,   "shll  v3.8h, v24.8b,  #8", 3, 24)
   1856 GEN_TWOVEC_TEST(shll2_8h_16b_8, "shll2 v3.8h, v24.16b, #8", 3, 24)
   1857 GEN_TWOVEC_TEST(shll_4s_4h_16,  "shll  v3.4s, v24.4h, #16", 3, 24)
   1858 GEN_TWOVEC_TEST(shll2_4s_8h_16, "shll2 v3.4s, v24.8h, #16", 3, 24)
   1859 GEN_TWOVEC_TEST(shll_2d_2s_32,  "shll  v3.2d, v24.2s, #32", 3, 24)
   1860 GEN_TWOVEC_TEST(shll2_2d_4s_32, "shll2 v3.2d, v24.4s, #32", 3, 24)
   1861 
   1862 GEN_TWOVEC_TEST(shrn_2s_2d_1,   "shrn  v4.2s,  v29.2d, #1",  4, 29)
   1863 GEN_TWOVEC_TEST(shrn_2s_2d_32,  "shrn  v4.2s,  v29.2d, #32", 4, 29)
   1864 GEN_TWOVEC_TEST(shrn2_4s_2d_1,  "shrn2 v4.4s,  v29.2d, #1",  4, 29)
   1865 GEN_TWOVEC_TEST(shrn2_4s_2d_32, "shrn2 v4.4s,  v29.2d, #32", 4, 29)
   1866 GEN_TWOVEC_TEST(shrn_4h_4s_1,   "shrn  v4.4h,  v29.4s, #1",  4, 29)
   1867 GEN_TWOVEC_TEST(shrn_4h_4s_16,  "shrn  v4.4h,  v29.4s, #16", 4, 29)
   1868 GEN_TWOVEC_TEST(shrn2_8h_4s_1,  "shrn2 v4.8h,  v29.4s, #1",  4, 29)
   1869 GEN_TWOVEC_TEST(shrn2_8h_4s_16, "shrn2 v4.8h,  v29.4s, #16", 4, 29)
   1870 GEN_TWOVEC_TEST(shrn_8b_8h_1,   "shrn  v4.8b,  v29.8h, #1",  4, 29)
   1871 GEN_TWOVEC_TEST(shrn_8b_8h_8,   "shrn  v4.8b,  v29.8h, #8",  4, 29)
   1872 GEN_TWOVEC_TEST(shrn2_16b_8h_1, "shrn2 v4.16b, v29.8h, #1",  4, 29)
   1873 GEN_TWOVEC_TEST(shrn2_16b_8h_8, "shrn2 v4.16b, v29.8h, #8",  4, 29)
   1874 
   1875 GEN_TWOVEC_TEST(rshrn_2s_2d_1,   "rshrn  v4.2s,  v29.2d, #1",  4, 29)
   1876 GEN_TWOVEC_TEST(rshrn_2s_2d_32,  "rshrn  v4.2s,  v29.2d, #32", 4, 29)
   1877 GEN_TWOVEC_TEST(rshrn2_4s_2d_1,  "rshrn2 v4.4s,  v29.2d, #1",  4, 29)
   1878 GEN_TWOVEC_TEST(rshrn2_4s_2d_32, "rshrn2 v4.4s,  v29.2d, #32", 4, 29)
   1879 GEN_TWOVEC_TEST(rshrn_4h_4s_1,   "rshrn  v4.4h,  v29.4s, #1",  4, 29)
   1880 GEN_TWOVEC_TEST(rshrn_4h_4s_16,  "rshrn  v4.4h,  v29.4s, #16", 4, 29)
   1881 GEN_TWOVEC_TEST(rshrn2_8h_4s_1,  "rshrn2 v4.8h,  v29.4s, #1",  4, 29)
   1882 GEN_TWOVEC_TEST(rshrn2_8h_4s_16, "rshrn2 v4.8h,  v29.4s, #16", 4, 29)
   1883 GEN_TWOVEC_TEST(rshrn_8b_8h_1,   "rshrn  v4.8b,  v29.8h, #1",  4, 29)
   1884 GEN_TWOVEC_TEST(rshrn_8b_8h_8,   "rshrn  v4.8b,  v29.8h, #8",  4, 29)
   1885 GEN_TWOVEC_TEST(rshrn2_16b_8h_1, "rshrn2 v4.16b, v29.8h, #1",  4, 29)
   1886 GEN_TWOVEC_TEST(rshrn2_16b_8h_8, "rshrn2 v4.16b, v29.8h, #8",  4, 29)
   1887 
   1888 GEN_TWOVEC_TEST(sli_d_d_0,  "sli d5, d28, #0",  5, 28)
   1889 GEN_TWOVEC_TEST(sli_d_d_32, "sli d5, d28, #32", 5, 28)
   1890 GEN_TWOVEC_TEST(sli_d_d_63, "sli d5, d28, #63", 5, 28)
   1891 GEN_TWOVEC_TEST(sri_d_d_1,  "sri d5, d28, #1",  5, 28)
   1892 GEN_TWOVEC_TEST(sri_d_d_33, "sri d5, d28, #33", 5, 28)
   1893 GEN_TWOVEC_TEST(sri_d_d_64, "sri d5, d28, #64", 5, 28)
   1894 
   1895 GEN_TWOVEC_TEST(sli_2d_2d_0,   "sli v6.2d,  v27.2d, #0",  6, 27)
   1896 GEN_TWOVEC_TEST(sli_2d_2d_32,  "sli v6.2d,  v27.2d, #32", 6, 27)
   1897 GEN_TWOVEC_TEST(sli_2d_2d_63,  "sli v6.2d,  v27.2d, #63", 6, 27)
   1898 GEN_TWOVEC_TEST(sli_4s_4s_0,   "sli v6.4s,  v27.4s, #0",  6, 27)
   1899 GEN_TWOVEC_TEST(sli_4s_4s_16,  "sli v6.4s,  v27.4s, #16", 6, 27)
   1900 GEN_TWOVEC_TEST(sli_4s_4s_31,  "sli v6.4s,  v27.4s, #31", 6, 27)
   1901 GEN_TWOVEC_TEST(sli_2s_2s_0,   "sli v6.2s,  v27.2s, #0",  6, 27)
   1902 GEN_TWOVEC_TEST(sli_2s_2s_16,  "sli v6.2s,  v27.2s, #16", 6, 27)
   1903 GEN_TWOVEC_TEST(sli_2s_2s_31,  "sli v6.2s,  v27.2s, #31", 6, 27)
   1904 GEN_TWOVEC_TEST(sli_8h_8h_0,   "sli v6.8h,  v27.8h, #0",  6, 27)
   1905 GEN_TWOVEC_TEST(sli_8h_8h_8,   "sli v6.8h,  v27.8h, #8",  6, 27)
   1906 GEN_TWOVEC_TEST(sli_8h_8h_15,  "sli v6.8h,  v27.8h, #15", 6, 27)
   1907 GEN_TWOVEC_TEST(sli_4h_4h_0,   "sli v6.4h,  v27.4h, #0",  6, 27)
   1908 GEN_TWOVEC_TEST(sli_4h_4h_8,   "sli v6.4h,  v27.4h, #8",  6, 27)
   1909 GEN_TWOVEC_TEST(sli_4h_4h_15,  "sli v6.4h,  v27.4h, #15", 6, 27)
   1910 GEN_TWOVEC_TEST(sli_16b_16b_0, "sli v6.16b, v27.16b, #0", 6, 27)
   1911 GEN_TWOVEC_TEST(sli_16b_16b_3, "sli v6.16b, v27.16b, #3", 6, 27)
   1912 GEN_TWOVEC_TEST(sli_16b_16b_7, "sli v6.16b, v27.16b, #7", 6, 27)
   1913 GEN_TWOVEC_TEST(sli_8b_8b_0,   "sli v6.8b,  v27.8b, #0",  6, 27)
   1914 GEN_TWOVEC_TEST(sli_8b_8b_3,   "sli v6.8b,  v27.8b, #3",  6, 27)
   1915 GEN_TWOVEC_TEST(sli_8b_8b_7,   "sli v6.8b,  v27.8b, #7",  6, 27)
   1916 
   1917 GEN_TWOVEC_TEST(sri_2d_2d_1,   "sri v6.2d,  v27.2d,  #1",  6, 27)
   1918 GEN_TWOVEC_TEST(sri_2d_2d_33,  "sri v6.2d,  v27.2d,  #33", 6, 27)
   1919 GEN_TWOVEC_TEST(sri_2d_2d_64,  "sri v6.2d,  v27.2d,  #64", 6, 27)
   1920 GEN_TWOVEC_TEST(sri_4s_4s_1,   "sri v6.4s,  v27.4s,  #1",  6, 27)
   1921 GEN_TWOVEC_TEST(sri_4s_4s_17,  "sri v6.4s,  v27.4s,  #17", 6, 27)
   1922 GEN_TWOVEC_TEST(sri_4s_4s_32,  "sri v6.4s,  v27.4s,  #32", 6, 27)
   1923 GEN_TWOVEC_TEST(sri_2s_2s_1,   "sri v6.2s,  v27.2s,  #1",  6, 27)
   1924 GEN_TWOVEC_TEST(sri_2s_2s_17,  "sri v6.2s,  v27.2s,  #17", 6, 27)
   1925 GEN_TWOVEC_TEST(sri_2s_2s_32,  "sri v6.2s,  v27.2s,  #32", 6, 27)
   1926 GEN_TWOVEC_TEST(sri_8h_8h_1,   "sri v6.8h,  v27.8h,  #1",  6, 27)
   1927 GEN_TWOVEC_TEST(sri_8h_8h_8,   "sri v6.8h,  v27.8h,  #8",  6, 27)
   1928 GEN_TWOVEC_TEST(sri_8h_8h_16,  "sri v6.8h,  v27.8h,  #16", 6, 27)
   1929 GEN_TWOVEC_TEST(sri_4h_4h_1,   "sri v6.4h,  v27.4h,  #1",  6, 27)
   1930 GEN_TWOVEC_TEST(sri_4h_4h_8,   "sri v6.4h,  v27.4h,  #8",  6, 27)
   1931 GEN_TWOVEC_TEST(sri_4h_4h_16,  "sri v6.4h,  v27.4h,  #16", 6, 27)
   1932 GEN_TWOVEC_TEST(sri_16b_16b_1, "sri v6.16b, v27.16b, #1", 6, 27)
   1933 GEN_TWOVEC_TEST(sri_16b_16b_4, "sri v6.16b, v27.16b, #4", 6, 27)
   1934 GEN_TWOVEC_TEST(sri_16b_16b_8, "sri v6.16b, v27.16b, #8", 6, 27)
   1935 GEN_TWOVEC_TEST(sri_8b_8b_1,   "sri v6.8b,  v27.8b,  #1",  6, 27)
   1936 GEN_TWOVEC_TEST(sri_8b_8b_4,   "sri v6.8b,  v27.8b,  #4",  6, 27)
   1937 GEN_TWOVEC_TEST(sri_8b_8b_8,   "sri v6.8b,  v27.8b,  #8",  6, 27)
   1938 
   1939 GEN_BINARY_TEST(smaxp, 4s, 4s, 4s)
   1940 GEN_BINARY_TEST(smaxp, 2s, 2s, 2s)
   1941 GEN_BINARY_TEST(smaxp, 8h, 8h, 8h)
   1942 GEN_BINARY_TEST(smaxp, 4h, 4h, 4h)
   1943 GEN_BINARY_TEST(smaxp, 16b, 16b, 16b)
   1944 GEN_BINARY_TEST(smaxp, 8b, 8b, 8b)
   1945 
   1946 GEN_BINARY_TEST(umaxp, 4s, 4s, 4s)
   1947 GEN_BINARY_TEST(umaxp, 2s, 2s, 2s)
   1948 GEN_BINARY_TEST(umaxp, 8h, 8h, 8h)
   1949 GEN_BINARY_TEST(umaxp, 4h, 4h, 4h)
   1950 GEN_BINARY_TEST(umaxp, 16b, 16b, 16b)
   1951 GEN_BINARY_TEST(umaxp, 8b, 8b, 8b)
   1952 
   1953 GEN_BINARY_TEST(sminp, 4s, 4s, 4s)
   1954 GEN_BINARY_TEST(sminp, 2s, 2s, 2s)
   1955 GEN_BINARY_TEST(sminp, 8h, 8h, 8h)
   1956 GEN_BINARY_TEST(sminp, 4h, 4h, 4h)
   1957 GEN_BINARY_TEST(sminp, 16b, 16b, 16b)
   1958 GEN_BINARY_TEST(sminp, 8b, 8b, 8b)
   1959 
   1960 GEN_BINARY_TEST(uminp, 4s, 4s, 4s)
   1961 GEN_BINARY_TEST(uminp, 2s, 2s, 2s)
   1962 GEN_BINARY_TEST(uminp, 8h, 8h, 8h)
   1963 GEN_BINARY_TEST(uminp, 4h, 4h, 4h)
   1964 GEN_BINARY_TEST(uminp, 16b, 16b, 16b)
   1965 GEN_BINARY_TEST(uminp, 8b, 8b, 8b)
   1966 
   1967 GEN_THREEVEC_TEST(smlal_2d_2s_s0,  "smlal  v29.2d, v20.2s, v3.s[0]", 29, 20, 3)
   1968 GEN_THREEVEC_TEST(smlal_2d_2s_s3,  "smlal  v29.2d, v20.2s, v3.s[3]", 29, 20, 3)
   1969 GEN_THREEVEC_TEST(smlal2_2d_4s_s1, "smlal2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3)
   1970 GEN_THREEVEC_TEST(smlal2_2d_4s_s2, "smlal2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3)
   1971 GEN_THREEVEC_TEST(smlal_4s_4h_h0,  "smlal  v29.4s, v20.4h, v3.h[0]", 29, 20, 3)
   1972 GEN_THREEVEC_TEST(smlal_4s_4h_h7,  "smlal  v29.4s, v20.4h, v3.h[7]", 29, 20, 3)
   1973 GEN_THREEVEC_TEST(smlal2_4s_8h_h1, "smlal2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   1974 GEN_THREEVEC_TEST(smlal2_4s_8h_h4, "smlal2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   1975 
   1976 GEN_THREEVEC_TEST(umlal_2d_2s_s0,  "umlal  v29.2d, v20.2s, v3.s[0]", 29, 20, 3)
   1977 GEN_THREEVEC_TEST(umlal_2d_2s_s3,  "umlal  v29.2d, v20.2s, v3.s[3]", 29, 20, 3)
   1978 GEN_THREEVEC_TEST(umlal2_2d_4s_s1, "umlal2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3)
   1979 GEN_THREEVEC_TEST(umlal2_2d_4s_s2, "umlal2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3)
   1980 GEN_THREEVEC_TEST(umlal_4s_4h_h0,  "umlal  v29.4s, v20.4h, v3.h[0]", 29, 20, 3)
   1981 GEN_THREEVEC_TEST(umlal_4s_4h_h7,  "umlal  v29.4s, v20.4h, v3.h[7]", 29, 20, 3)
   1982 GEN_THREEVEC_TEST(umlal2_4s_8h_h1, "umlal2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   1983 GEN_THREEVEC_TEST(umlal2_4s_8h_h4, "umlal2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   1984 
   1985 GEN_THREEVEC_TEST(smlsl_2d_2s_s0,  "smlsl  v29.2d, v20.2s, v3.s[0]", 29, 20, 3)
   1986 GEN_THREEVEC_TEST(smlsl_2d_2s_s3,  "smlsl  v29.2d, v20.2s, v3.s[3]", 29, 20, 3)
   1987 GEN_THREEVEC_TEST(smlsl2_2d_4s_s1, "smlsl2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3)
   1988 GEN_THREEVEC_TEST(smlsl2_2d_4s_s2, "smlsl2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3)
   1989 GEN_THREEVEC_TEST(smlsl_4s_4h_h0,  "smlsl  v29.4s, v20.4h, v3.h[0]", 29, 20, 3)
   1990 GEN_THREEVEC_TEST(smlsl_4s_4h_h7,  "smlsl  v29.4s, v20.4h, v3.h[7]", 29, 20, 3)
   1991 GEN_THREEVEC_TEST(smlsl2_4s_8h_h1, "smlsl2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   1992 GEN_THREEVEC_TEST(smlsl2_4s_8h_h4, "smlsl2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   1993 
   1994 GEN_THREEVEC_TEST(umlsl_2d_2s_s0,  "umlsl  v29.2d, v20.2s, v3.s[0]", 29, 20, 3)
   1995 GEN_THREEVEC_TEST(umlsl_2d_2s_s3,  "umlsl  v29.2d, v20.2s, v3.s[3]", 29, 20, 3)
   1996 GEN_THREEVEC_TEST(umlsl2_2d_4s_s1, "umlsl2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3)
   1997 GEN_THREEVEC_TEST(umlsl2_2d_4s_s2, "umlsl2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3)
   1998 GEN_THREEVEC_TEST(umlsl_4s_4h_h0,  "umlsl  v29.4s, v20.4h, v3.h[0]", 29, 20, 3)
   1999 GEN_THREEVEC_TEST(umlsl_4s_4h_h7,  "umlsl  v29.4s, v20.4h, v3.h[7]", 29, 20, 3)
   2000 GEN_THREEVEC_TEST(umlsl2_4s_8h_h1, "umlsl2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   2001 GEN_THREEVEC_TEST(umlsl2_4s_8h_h4, "umlsl2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   2002 
   2003 GEN_THREEVEC_TEST(smull_2d_2s_s0,  "smull  v29.2d, v20.2s, v3.s[0]", 29, 20, 3)
   2004 GEN_THREEVEC_TEST(smull_2d_2s_s3,  "smull  v29.2d, v20.2s, v3.s[3]", 29, 20, 3)
   2005 GEN_THREEVEC_TEST(smull2_2d_4s_s1, "smull2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3)
   2006 GEN_THREEVEC_TEST(smull2_2d_4s_s2, "smull2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3)
   2007 GEN_THREEVEC_TEST(smull_4s_4h_h0,  "smull  v29.4s, v20.4h, v3.h[0]", 29, 20, 3)
   2008 GEN_THREEVEC_TEST(smull_4s_4h_h7,  "smull  v29.4s, v20.4h, v3.h[7]", 29, 20, 3)
   2009 GEN_THREEVEC_TEST(smull2_4s_8h_h1, "smull2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   2010 GEN_THREEVEC_TEST(smull2_4s_8h_h4, "smull2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   2011 
   2012 GEN_THREEVEC_TEST(umull_2d_2s_s0,  "umull  v29.2d, v20.2s, v3.s[0]", 29, 20, 3)
   2013 GEN_THREEVEC_TEST(umull_2d_2s_s3,  "umull  v29.2d, v20.2s, v3.s[3]", 29, 20, 3)
   2014 GEN_THREEVEC_TEST(umull2_2d_4s_s1, "umull2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3)
   2015 GEN_THREEVEC_TEST(umull2_2d_4s_s2, "umull2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3)
   2016 GEN_THREEVEC_TEST(umull_4s_4h_h0,  "umull  v29.4s, v20.4h, v3.h[0]", 29, 20, 3)
   2017 GEN_THREEVEC_TEST(umull_4s_4h_h7,  "umull  v29.4s, v20.4h, v3.h[7]", 29, 20, 3)
   2018 GEN_THREEVEC_TEST(umull2_4s_8h_h1, "umull2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   2019 GEN_THREEVEC_TEST(umull2_4s_8h_h4, "umull2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3)
   2020 
   2021 GEN_THREEVEC_TEST(smlal_2d_2s_2s,  "smlal  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   2022 GEN_THREEVEC_TEST(smlal2_2d_4s_4s, "smlal2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   2023 
   2024 GEN_THREEVEC_TEST(smlal_4s_4h_4h,  "smlal  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   2025 GEN_THREEVEC_TEST(smlal2_4s_8h_8h, "smlal2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   2026 
   2027 GEN_THREEVEC_TEST(smlal_8h_8b_8b,  "smlal  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   2028 GEN_THREEVEC_TEST(smlal2_8h_16b_16b,
   2029                                    "smlal2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   2030 
   2031 GEN_THREEVEC_TEST(umlal_2d_2s_2s,  "umlal  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   2032 GEN_THREEVEC_TEST(umlal2_2d_4s_4s, "umlal2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   2033 
   2034 GEN_THREEVEC_TEST(umlal_4s_4h_4h,  "umlal  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   2035 GEN_THREEVEC_TEST(umlal2_4s_8h_8h, "umlal2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   2036 
   2037 GEN_THREEVEC_TEST(umlal_8h_8b_8b,  "umlal  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   2038 GEN_THREEVEC_TEST(umlal2_8h_16b_16b,
   2039                                    "umlal2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   2040 
   2041 GEN_THREEVEC_TEST(smlsl_2d_2s_2s,  "smlsl  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   2042 GEN_THREEVEC_TEST(smlsl2_2d_4s_4s, "smlsl2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   2043 
   2044 GEN_THREEVEC_TEST(smlsl_4s_4h_4h,  "smlsl  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   2045 GEN_THREEVEC_TEST(smlsl2_4s_8h_8h, "smlsl2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   2046 
   2047 GEN_THREEVEC_TEST(smlsl_8h_8b_8b,  "smlsl  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   2048 GEN_THREEVEC_TEST(smlsl2_8h_16b_16b,
   2049                                    "smlsl2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   2050 
   2051 GEN_THREEVEC_TEST(umlsl_2d_2s_2s,  "umlsl  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   2052 GEN_THREEVEC_TEST(umlsl2_2d_4s_4s, "umlsl2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   2053 
   2054 GEN_THREEVEC_TEST(umlsl_4s_4h_4h,  "umlsl  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   2055 GEN_THREEVEC_TEST(umlsl2_4s_8h_8h, "umlsl2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   2056 
   2057 GEN_THREEVEC_TEST(umlsl_8h_8b_8b,  "umlsl  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   2058 GEN_THREEVEC_TEST(umlsl2_8h_16b_16b,
   2059                                    "umlsl2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   2060 
   2061 GEN_THREEVEC_TEST(smull_2d_2s_2s,  "smull  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   2062 GEN_THREEVEC_TEST(smull2_2d_4s_4s, "smull2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   2063 
   2064 GEN_THREEVEC_TEST(smull_4s_4h_4h,  "smull  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   2065 GEN_THREEVEC_TEST(smull2_4s_8h_8h, "smull2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   2066 
   2067 GEN_THREEVEC_TEST(smull_8h_8b_8b,  "smull  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   2068 GEN_THREEVEC_TEST(smull2_8h_16b_16b,
   2069                                    "smull2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   2070 
   2071 GEN_THREEVEC_TEST(umull_2d_2s_2s,  "umull  v2.2d, v11.2s, v29.2s", 2, 11, 29)
   2072 GEN_THREEVEC_TEST(umull2_2d_4s_4s, "umull2 v2.2d, v11.4s, v29.4s", 2, 11, 29)
   2073 
   2074 GEN_THREEVEC_TEST(umull_4s_4h_4h,  "umull  v2.4s, v11.4h, v29.4h", 2, 11, 29)
   2075 GEN_THREEVEC_TEST(umull2_4s_8h_8h, "umull2 v2.4s, v11.8h, v29.8h", 2, 11, 29)
   2076 
   2077 GEN_THREEVEC_TEST(umull_8h_8b_8b,  "umull  v2.8h, v11.8b, v29.8b", 2, 11, 29)
   2078 GEN_THREEVEC_TEST(umull2_8h_16b_16b,
   2079                                    "umull2 v2.8h, v11.16b, v29.16b", 2, 11, 29)
   2080 
   2081 GEN_TWOVEC_TEST(sqabs_d_d, "sqabs d7, d30", 7, 30)
   2082 GEN_TWOVEC_TEST(sqabs_s_s, "sqabs s7, s30", 7, 30)
   2083 GEN_TWOVEC_TEST(sqabs_h_h, "sqabs h7, h30", 7, 30)
   2084 GEN_TWOVEC_TEST(sqabs_b_b, "sqabs b7, b30", 7, 30)
   2085 
   2086 GEN_TWOVEC_TEST(sqneg_d_d, "sqneg d7, d30", 7, 30)
   2087 GEN_TWOVEC_TEST(sqneg_s_s, "sqneg s7, s30", 7, 30)
   2088 GEN_TWOVEC_TEST(sqneg_h_h, "sqneg h7, h30", 7, 30)
   2089 GEN_TWOVEC_TEST(sqneg_b_b, "sqneg b7, b30", 7, 30)
   2090 
   2091 GEN_UNARY_TEST(sqabs, 2d, 2d)
   2092 GEN_UNARY_TEST(sqabs, 4s, 4s)
   2093 GEN_UNARY_TEST(sqabs, 2s, 2s)
   2094 GEN_UNARY_TEST(sqabs, 8h, 8h)
   2095 GEN_UNARY_TEST(sqabs, 4h, 4h)
   2096 GEN_UNARY_TEST(sqabs, 16b, 16b)
   2097 GEN_UNARY_TEST(sqabs, 8b, 8b)
   2098 
   2099 GEN_UNARY_TEST(sqneg, 2d, 2d)
   2100 GEN_UNARY_TEST(sqneg, 4s, 4s)
   2101 GEN_UNARY_TEST(sqneg, 2s, 2s)
   2102 GEN_UNARY_TEST(sqneg, 8h, 8h)
   2103 GEN_UNARY_TEST(sqneg, 4h, 4h)
   2104 GEN_UNARY_TEST(sqneg, 16b, 16b)
   2105 GEN_UNARY_TEST(sqneg, 8b, 8b)
   2106 
   2107 GEN_THREEVEC_TEST(sqadd_d_d_d, "sqadd d1, d2, d4", 1, 2, 4)
   2108 GEN_THREEVEC_TEST(sqadd_s_s_s, "sqadd s1, s2, s4", 1, 2, 4)
   2109 GEN_THREEVEC_TEST(sqadd_h_h_h, "sqadd h1, h2, h4", 1, 2, 4)
   2110 GEN_THREEVEC_TEST(sqadd_b_b_b, "sqadd b1, b2, b4", 1, 2, 4)
   2111 GEN_THREEVEC_TEST(sqadd_2d_2d_2d,    "sqadd v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2112 GEN_THREEVEC_TEST(sqadd_4s_4s_4s,    "sqadd v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2113 GEN_THREEVEC_TEST(sqadd_2s_2s_2s,    "sqadd v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2114 GEN_THREEVEC_TEST(sqadd_8h_8h_8h,    "sqadd v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2115 GEN_THREEVEC_TEST(sqadd_4h_4h_4h,    "sqadd v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2116 GEN_THREEVEC_TEST(sqadd_16b_16b_16b, "sqadd v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2117 GEN_THREEVEC_TEST(sqadd_8b_8b_8b,    "sqadd v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2118 
   2119 GEN_THREEVEC_TEST(uqadd_d_d_d, "uqadd d1, d2, d4", 1, 2, 4)
   2120 GEN_THREEVEC_TEST(uqadd_s_s_s, "uqadd s1, s2, s4", 1, 2, 4)
   2121 GEN_THREEVEC_TEST(uqadd_h_h_h, "uqadd h1, h2, h4", 1, 2, 4)
   2122 GEN_THREEVEC_TEST(uqadd_b_b_b, "uqadd b1, b2, b4", 1, 2, 4)
   2123 GEN_THREEVEC_TEST(uqadd_2d_2d_2d,    "uqadd v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2124 GEN_THREEVEC_TEST(uqadd_4s_4s_4s,    "uqadd v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2125 GEN_THREEVEC_TEST(uqadd_2s_2s_2s,    "uqadd v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2126 GEN_THREEVEC_TEST(uqadd_8h_8h_8h,    "uqadd v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2127 GEN_THREEVEC_TEST(uqadd_4h_4h_4h,    "uqadd v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2128 GEN_THREEVEC_TEST(uqadd_16b_16b_16b, "uqadd v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2129 GEN_THREEVEC_TEST(uqadd_8b_8b_8b,    "uqadd v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2130 
   2131 GEN_THREEVEC_TEST(sqsub_d_d_d, "sqsub d1, d2, d4", 1, 2, 4)
   2132 GEN_THREEVEC_TEST(sqsub_s_s_s, "sqsub s1, s2, s4", 1, 2, 4)
   2133 GEN_THREEVEC_TEST(sqsub_h_h_h, "sqsub h1, h2, h4", 1, 2, 4)
   2134 GEN_THREEVEC_TEST(sqsub_b_b_b, "sqsub b1, b2, b4", 1, 2, 4)
   2135 GEN_THREEVEC_TEST(sqsub_2d_2d_2d,    "sqsub v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2136 GEN_THREEVEC_TEST(sqsub_4s_4s_4s,    "sqsub v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2137 GEN_THREEVEC_TEST(sqsub_2s_2s_2s,    "sqsub v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2138 GEN_THREEVEC_TEST(sqsub_8h_8h_8h,    "sqsub v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2139 GEN_THREEVEC_TEST(sqsub_4h_4h_4h,    "sqsub v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2140 GEN_THREEVEC_TEST(sqsub_16b_16b_16b, "sqsub v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2141 GEN_THREEVEC_TEST(sqsub_8b_8b_8b,    "sqsub v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2142 
   2143 GEN_THREEVEC_TEST(uqsub_d_d_d, "uqsub d1, d2, d4", 1, 2, 4)
   2144 GEN_THREEVEC_TEST(uqsub_s_s_s, "uqsub s1, s2, s4", 1, 2, 4)
   2145 GEN_THREEVEC_TEST(uqsub_h_h_h, "uqsub h1, h2, h4", 1, 2, 4)
   2146 GEN_THREEVEC_TEST(uqsub_b_b_b, "uqsub b1, b2, b4", 1, 2, 4)
   2147 GEN_THREEVEC_TEST(uqsub_2d_2d_2d,    "uqsub v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2148 GEN_THREEVEC_TEST(uqsub_4s_4s_4s,    "uqsub v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2149 GEN_THREEVEC_TEST(uqsub_2s_2s_2s,    "uqsub v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2150 GEN_THREEVEC_TEST(uqsub_8h_8h_8h,    "uqsub v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2151 GEN_THREEVEC_TEST(uqsub_4h_4h_4h,    "uqsub v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2152 GEN_THREEVEC_TEST(uqsub_16b_16b_16b, "uqsub v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2153 GEN_THREEVEC_TEST(uqsub_8b_8b_8b,    "uqsub v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2154 
   2155 GEN_THREEVEC_TEST(sqdmlal_d_s_s0, "sqdmlal d31, s30, v29.s[0]", 31,30,29)
   2156 GEN_THREEVEC_TEST(sqdmlal_d_s_s3, "sqdmlal d31, s30, v29.s[3]", 31,30,29)
   2157 GEN_THREEVEC_TEST(sqdmlal_s_h_h1, "sqdmlal s31, h30, v13.h[1]", 31,30,13)
   2158 GEN_THREEVEC_TEST(sqdmlal_s_h_h5, "sqdmlal s31, h30, v13.h[5]", 31,30,13)
   2159 
   2160 GEN_THREEVEC_TEST(sqdmlsl_d_s_s0, "sqdmlsl d31, s30, v29.s[0]", 31,30,29)
   2161 GEN_THREEVEC_TEST(sqdmlsl_d_s_s3, "sqdmlsl d31, s30, v29.s[3]", 31,30,29)
   2162 GEN_THREEVEC_TEST(sqdmlsl_s_h_h1, "sqdmlsl s31, h30, v13.h[1]", 31,30,13)
   2163 GEN_THREEVEC_TEST(sqdmlsl_s_h_h5, "sqdmlsl s31, h30, v13.h[5]", 31,30,13)
   2164 
   2165 GEN_THREEVEC_TEST(sqdmull_d_s_s0, "sqdmull d31, s30, v29.s[0]", 31,30,29)
   2166 GEN_THREEVEC_TEST(sqdmull_d_s_s3, "sqdmull d31, s30, v29.s[3]", 31,30,29)
   2167 GEN_THREEVEC_TEST(sqdmull_s_h_h1, "sqdmull s31, h30, v13.h[1]", 31,30,13)
   2168 GEN_THREEVEC_TEST(sqdmull_s_h_h5, "sqdmull s31, h30, v13.h[5]", 31,30,13)
   2169 
   2170 GEN_THREEVEC_TEST(sqdmlal_2d_2s_s0, "sqdmlal  v29.2d, v20.2s, v3.s[0]",29,20,3)
   2171 GEN_THREEVEC_TEST(sqdmlal_2d_2s_s3, "sqdmlal  v29.2d, v20.2s, v3.s[3]",29,20,3)
   2172 GEN_THREEVEC_TEST(sqdmlal2_2d_4s_s1,"sqdmlal2 v29.2d, v20.4s, v3.s[1]",29,20,3)
   2173 GEN_THREEVEC_TEST(sqdmlal2_2d_4s_s2,"sqdmlal2 v29.2d, v20.4s, v3.s[2]",29,20,3)
   2174 GEN_THREEVEC_TEST(sqdmlal_4s_4h_h0, "sqdmlal  v29.4s, v20.4h, v3.h[0]",29,20,3)
   2175 GEN_THREEVEC_TEST(sqdmlal_4s_4h_h7, "sqdmlal  v29.4s, v20.4h, v3.h[7]",29,20,3)
   2176 GEN_THREEVEC_TEST(sqdmlal2_4s_8h_h1,"sqdmlal2 v29.4s, v20.8h, v3.h[1]",29,20,3)
   2177 GEN_THREEVEC_TEST(sqdmlal2_4s_8h_h4,"sqdmlal2 v29.4s, v20.8h, v3.h[1]",29,20,3)
   2178 
   2179 GEN_THREEVEC_TEST(sqdmlsl_2d_2s_s0, "sqdmlsl  v29.2d, v20.2s, v3.s[0]",29,20,3)
   2180 GEN_THREEVEC_TEST(sqdmlsl_2d_2s_s3, "sqdmlsl  v29.2d, v20.2s, v3.s[3]",29,20,3)
   2181 GEN_THREEVEC_TEST(sqdmlsl2_2d_4s_s1,"sqdmlsl2 v29.2d, v20.4s, v3.s[1]",29,20,3)
   2182 GEN_THREEVEC_TEST(sqdmlsl2_2d_4s_s2,"sqdmlsl2 v29.2d, v20.4s, v3.s[2]",29,20,3)
   2183 GEN_THREEVEC_TEST(sqdmlsl_4s_4h_h0, "sqdmlsl  v29.4s, v20.4h, v3.h[0]",29,20,3)
   2184 GEN_THREEVEC_TEST(sqdmlsl_4s_4h_h7, "sqdmlsl  v29.4s, v20.4h, v3.h[7]",29,20,3)
   2185 GEN_THREEVEC_TEST(sqdmlsl2_4s_8h_h1,"sqdmlsl2 v29.4s, v20.8h, v3.h[1]",29,20,3)
   2186 GEN_THREEVEC_TEST(sqdmlsl2_4s_8h_h4,"sqdmlsl2 v29.4s, v20.8h, v3.h[1]",29,20,3)
   2187 
   2188 GEN_THREEVEC_TEST(sqdmull_2d_2s_s0, "sqdmull  v29.2d, v20.2s, v3.s[0]",29,20,3)
   2189 GEN_THREEVEC_TEST(sqdmull_2d_2s_s3, "sqdmull  v29.2d, v20.2s, v3.s[3]",29,20,3)
   2190 GEN_THREEVEC_TEST(sqdmull2_2d_4s_s1,"sqdmull2 v29.2d, v20.4s, v3.s[1]",29,20,3)
   2191 GEN_THREEVEC_TEST(sqdmull2_2d_4s_s2,"sqdmull2 v29.2d, v20.4s, v3.s[2]",29,20,3)
   2192 GEN_THREEVEC_TEST(sqdmull_4s_4h_h0, "sqdmull  v29.4s, v20.4h, v3.h[0]",29,20,3)
   2193 GEN_THREEVEC_TEST(sqdmull_4s_4h_h7, "sqdmull  v29.4s, v20.4h, v3.h[7]",29,20,3)
   2194 GEN_THREEVEC_TEST(sqdmull2_4s_8h_h1,"sqdmull2 v29.4s, v20.8h, v3.h[1]",29,20,3)
   2195 GEN_THREEVEC_TEST(sqdmull2_4s_8h_h4,"sqdmull2 v29.4s, v20.8h, v3.h[1]",29,20,3)
   2196 
   2197 GEN_THREEVEC_TEST(sqdmlal_d_s_s, "sqdmlal d0, s8, s16", 0, 8, 16)
   2198 GEN_THREEVEC_TEST(sqdmlal_s_h_h, "sqdmlal s0, h8, h16", 0, 8, 16)
   2199 GEN_THREEVEC_TEST(sqdmlsl_d_s_s, "sqdmlsl d0, s8, s16", 0, 8, 16)
   2200 GEN_THREEVEC_TEST(sqdmlsl_s_h_h, "sqdmlsl s0, h8, h16", 0, 8, 16)
   2201 GEN_THREEVEC_TEST(sqdmull_d_s_s, "sqdmull d0, s8, s16", 0, 8, 16)
   2202 GEN_THREEVEC_TEST(sqdmull_s_h_h, "sqdmull s0, h8, h16", 0, 8, 16)
   2203 
   2204 GEN_THREEVEC_TEST(sqdmlal_2d_2s_2s,  "sqdmlal  v2.2d, v11.2s, v29.2s", 2,11,29)
   2205 GEN_THREEVEC_TEST(sqdmlal2_2d_4s_4s, "sqdmlal2 v2.2d, v11.4s, v29.4s", 2,11,29)
   2206 GEN_THREEVEC_TEST(sqdmlal_4s_4h_4h,  "sqdmlal  v2.4s, v11.4h, v29.4h", 2,11,29)
   2207 GEN_THREEVEC_TEST(sqdmlal2_4s_8h_8h, "sqdmlal2 v2.4s, v11.8h, v29.8h", 2,11,29)
   2208 
   2209 GEN_THREEVEC_TEST(sqdmlsl_2d_2s_2s,  "sqdmlsl  v2.2d, v11.2s, v29.2s", 2,11,29)
   2210 GEN_THREEVEC_TEST(sqdmlsl2_2d_4s_4s, "sqdmlsl2 v2.2d, v11.4s, v29.4s", 2,11,29)
   2211 GEN_THREEVEC_TEST(sqdmlsl_4s_4h_4h,  "sqdmlsl  v2.4s, v11.4h, v29.4h", 2,11,29)
   2212 GEN_THREEVEC_TEST(sqdmlsl2_4s_8h_8h, "sqdmlsl2 v2.4s, v11.8h, v29.8h", 2,11,29)
   2213 
   2214 GEN_THREEVEC_TEST(sqdmull_2d_2s_2s,  "sqdmull  v2.2d, v11.2s, v29.2s", 2,11,29)
   2215 GEN_THREEVEC_TEST(sqdmull2_2d_4s_4s, "sqdmull2 v2.2d, v11.4s, v29.4s", 2,11,29)
   2216 GEN_THREEVEC_TEST(sqdmull_4s_4h_4h,  "sqdmull  v2.4s, v11.4h, v29.4h", 2,11,29)
   2217 GEN_THREEVEC_TEST(sqdmull2_4s_8h_8h, "sqdmull2 v2.4s, v11.8h, v29.8h", 2,11,29)
   2218 
   2219 GEN_THREEVEC_TEST(sqdmulh_s_s_s1, "sqdmulh s0, s1, v2.s[1]", 0,1,2)
   2220 GEN_THREEVEC_TEST(sqdmulh_s_s_s3, "sqdmulh s0, s1, v2.s[3]", 0,1,2)
   2221 GEN_THREEVEC_TEST(sqdmulh_h_h_h2, "sqdmulh h0, h1, v2.h[2]", 0,1,2)
   2222 GEN_THREEVEC_TEST(sqdmulh_h_h_h7, "sqdmulh h0, h1, v2.h[7]", 0,1,2)
   2223 
   2224 GEN_THREEVEC_TEST(sqrdmulh_s_s_s1, "sqrdmulh s0, s1, v2.s[1]", 0,1,2)
   2225 GEN_THREEVEC_TEST(sqrdmulh_s_s_s3, "sqrdmulh s0, s1, v2.s[3]", 0,1,2)
   2226 GEN_THREEVEC_TEST(sqrdmulh_h_h_h2, "sqrdmulh h0, h1, v2.h[2]", 0,1,2)
   2227 GEN_THREEVEC_TEST(sqrdmulh_h_h_h7, "sqrdmulh h0, h1, v2.h[7]", 0,1,2)
   2228 
   2229 GEN_THREEVEC_TEST(sqdmulh_4s_4s_s1, "sqdmulh v0.4s, v1.4s, v2.s[1]", 0,1,2)
   2230 GEN_THREEVEC_TEST(sqdmulh_4s_4s_s3, "sqdmulh v0.4s, v1.4s, v2.s[3]", 0,1,2)
   2231 GEN_THREEVEC_TEST(sqdmulh_2s_2s_s1, "sqdmulh v0.2s, v1.2s, v2.s[1]", 0,1,2)
   2232 GEN_THREEVEC_TEST(sqdmulh_2s_2s_s3, "sqdmulh v0.2s, v1.2s, v2.s[3]", 0,1,2)
   2233 GEN_THREEVEC_TEST(sqdmulh_8h_8h_h2, "sqdmulh v0.8h, v1.8h, v2.h[2]", 0,1,2)
   2234 GEN_THREEVEC_TEST(sqdmulh_8h_8h_h7, "sqdmulh v0.8h, v1.8h, v2.h[7]", 0,1,2)
   2235 GEN_THREEVEC_TEST(sqdmulh_4h_4h_h2, "sqdmulh v0.4h, v1.4h, v2.h[2]", 0,1,2)
   2236 GEN_THREEVEC_TEST(sqdmulh_4h_4h_h7, "sqdmulh v0.4h, v1.4h, v2.h[7]", 0,1,2)
   2237 
   2238 GEN_THREEVEC_TEST(sqrdmulh_4s_4s_s1, "sqrdmulh v0.4s, v1.4s, v2.s[1]", 0,1,2)
   2239 GEN_THREEVEC_TEST(sqrdmulh_4s_4s_s3, "sqrdmulh v0.4s, v1.4s, v2.s[3]", 0,1,2)
   2240 GEN_THREEVEC_TEST(sqrdmulh_2s_2s_s1, "sqrdmulh v0.2s, v1.2s, v2.s[1]", 0,1,2)
   2241 GEN_THREEVEC_TEST(sqrdmulh_2s_2s_s3, "sqrdmulh v0.2s, v1.2s, v2.s[3]", 0,1,2)
   2242 GEN_THREEVEC_TEST(sqrdmulh_8h_8h_h2, "sqrdmulh v0.8h, v1.8h, v2.h[2]", 0,1,2)
   2243 GEN_THREEVEC_TEST(sqrdmulh_8h_8h_h7, "sqrdmulh v0.8h, v1.8h, v2.h[7]", 0,1,2)
   2244 GEN_THREEVEC_TEST(sqrdmulh_4h_4h_h2, "sqrdmulh v0.4h, v1.4h, v2.h[2]", 0,1,2)
   2245 GEN_THREEVEC_TEST(sqrdmulh_4h_4h_h7, "sqrdmulh v0.4h, v1.4h, v2.h[7]", 0,1,2)
   2246 
   2247 GEN_THREEVEC_TEST(sqdmulh_s_s_s,  "sqdmulh  s1, s2, s4", 1, 2, 4)
   2248 GEN_THREEVEC_TEST(sqdmulh_h_h_h,  "sqdmulh  h1, h2, h4", 1, 2, 4)
   2249 GEN_THREEVEC_TEST(sqrdmulh_s_s_s, "sqrdmulh s1, s2, s4", 1, 2, 4)
   2250 GEN_THREEVEC_TEST(sqrdmulh_h_h_h, "sqrdmulh h1, h2, h4", 1, 2, 4)
   2251 
   2252 GEN_THREEVEC_TEST(sqdmulh_4s_4s_4s, "sqdmulh v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2253 GEN_THREEVEC_TEST(sqdmulh_2s_2s_2s, "sqdmulh v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2254 GEN_THREEVEC_TEST(sqdmulh_8h_8h_8h, "sqdmulh v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2255 GEN_THREEVEC_TEST(sqdmulh_4h_4h_4h, "sqdmulh v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2256 GEN_THREEVEC_TEST(sqrdmulh_4s_4s_4s, "sqrdmulh v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2257 GEN_THREEVEC_TEST(sqrdmulh_2s_2s_2s, "sqrdmulh v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2258 GEN_THREEVEC_TEST(sqrdmulh_8h_8h_8h, "sqrdmulh v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2259 GEN_THREEVEC_TEST(sqrdmulh_4h_4h_4h, "sqrdmulh v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2260 
   2261 GEN_THREEVEC_TEST(sqshl_d_d_d, "sqshl d1, d2, d4", 1, 2, 4)
   2262 GEN_THREEVEC_TEST(sqshl_s_s_s, "sqshl s1, s2, s4", 1, 2, 4)
   2263 GEN_THREEVEC_TEST(sqshl_h_h_h, "sqshl h1, h2, h4", 1, 2, 4)
   2264 GEN_THREEVEC_TEST(sqshl_b_b_b, "sqshl b1, b2, b4", 1, 2, 4)
   2265 GEN_THREEVEC_TEST(sqshl_2d_2d_2d,    "sqshl v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2266 GEN_THREEVEC_TEST(sqshl_4s_4s_4s,    "sqshl v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2267 GEN_THREEVEC_TEST(sqshl_2s_2s_2s,    "sqshl v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2268 GEN_THREEVEC_TEST(sqshl_8h_8h_8h,    "sqshl v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2269 GEN_THREEVEC_TEST(sqshl_4h_4h_4h,    "sqshl v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2270 GEN_THREEVEC_TEST(sqshl_16b_16b_16b, "sqshl v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2271 GEN_THREEVEC_TEST(sqshl_8b_8b_8b,    "sqshl v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2272 
   2273 GEN_THREEVEC_TEST(uqshl_d_d_d, "uqshl d1, d2, d4", 1, 2, 4)
   2274 GEN_THREEVEC_TEST(uqshl_s_s_s, "uqshl s1, s2, s4", 1, 2, 4)
   2275 GEN_THREEVEC_TEST(uqshl_h_h_h, "uqshl h1, h2, h4", 1, 2, 4)
   2276 GEN_THREEVEC_TEST(uqshl_b_b_b, "uqshl b1, b2, b4", 1, 2, 4)
   2277 GEN_THREEVEC_TEST(uqshl_2d_2d_2d,    "uqshl v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2278 GEN_THREEVEC_TEST(uqshl_4s_4s_4s,    "uqshl v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2279 GEN_THREEVEC_TEST(uqshl_2s_2s_2s,    "uqshl v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2280 GEN_THREEVEC_TEST(uqshl_8h_8h_8h,    "uqshl v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2281 GEN_THREEVEC_TEST(uqshl_4h_4h_4h,    "uqshl v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2282 GEN_THREEVEC_TEST(uqshl_16b_16b_16b, "uqshl v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2283 GEN_THREEVEC_TEST(uqshl_8b_8b_8b,    "uqshl v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2284 
   2285 GEN_THREEVEC_TEST(sqrshl_d_d_d, "sqrshl d1, d2, d4", 1, 2, 4)
   2286 GEN_THREEVEC_TEST(sqrshl_s_s_s, "sqrshl s1, s2, s4", 1, 2, 4)
   2287 GEN_THREEVEC_TEST(sqrshl_h_h_h, "sqrshl h1, h2, h4", 1, 2, 4)
   2288 GEN_THREEVEC_TEST(sqrshl_b_b_b, "sqrshl b1, b2, b4", 1, 2, 4)
   2289 GEN_THREEVEC_TEST(sqrshl_2d_2d_2d,    "sqrshl v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2290 GEN_THREEVEC_TEST(sqrshl_4s_4s_4s,    "sqrshl v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2291 GEN_THREEVEC_TEST(sqrshl_2s_2s_2s,    "sqrshl v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2292 GEN_THREEVEC_TEST(sqrshl_8h_8h_8h,    "sqrshl v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2293 GEN_THREEVEC_TEST(sqrshl_4h_4h_4h,    "sqrshl v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2294 GEN_THREEVEC_TEST(sqrshl_16b_16b_16b, "sqrshl v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2295 GEN_THREEVEC_TEST(sqrshl_8b_8b_8b,    "sqrshl v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2296 
   2297 GEN_THREEVEC_TEST(uqrshl_d_d_d, "uqrshl d1, d2, d4", 1, 2, 4)
   2298 GEN_THREEVEC_TEST(uqrshl_s_s_s, "uqrshl s1, s2, s4", 1, 2, 4)
   2299 GEN_THREEVEC_TEST(uqrshl_h_h_h, "uqrshl h1, h2, h4", 1, 2, 4)
   2300 GEN_THREEVEC_TEST(uqrshl_b_b_b, "uqrshl b1, b2, b4", 1, 2, 4)
   2301 GEN_THREEVEC_TEST(uqrshl_2d_2d_2d,    "uqrshl v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2302 GEN_THREEVEC_TEST(uqrshl_4s_4s_4s,    "uqrshl v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2303 GEN_THREEVEC_TEST(uqrshl_2s_2s_2s,    "uqrshl v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2304 GEN_THREEVEC_TEST(uqrshl_8h_8h_8h,    "uqrshl v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2305 GEN_THREEVEC_TEST(uqrshl_4h_4h_4h,    "uqrshl v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2306 GEN_THREEVEC_TEST(uqrshl_16b_16b_16b, "uqrshl v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2307 GEN_THREEVEC_TEST(uqrshl_8b_8b_8b,    "uqrshl v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2308 
   2309 GEN_TWOVEC_TEST(sqrshrn_s_d_1,  "sqrshrn s2, d5, #1",  2, 5)
   2310 GEN_TWOVEC_TEST(sqrshrn_s_d_17, "sqrshrn s2, d5, #17", 2, 5)
   2311 GEN_TWOVEC_TEST(sqrshrn_s_d_32, "sqrshrn s2, d5, #32", 2, 5)
   2312 GEN_TWOVEC_TEST(sqrshrn_h_s_1,  "sqrshrn h2, s5, #1",  2, 5)
   2313 GEN_TWOVEC_TEST(sqrshrn_h_s_9,  "sqrshrn h2, s5, #9",  2, 5)
   2314 GEN_TWOVEC_TEST(sqrshrn_h_s_16, "sqrshrn h2, s5, #16", 2, 5)
   2315 GEN_TWOVEC_TEST(sqrshrn_b_h_1,  "sqrshrn b2, h5, #1",  2, 5)
   2316 GEN_TWOVEC_TEST(sqrshrn_b_h_4,  "sqrshrn b2, h5, #4",  2, 5)
   2317 GEN_TWOVEC_TEST(sqrshrn_b_h_8,  "sqrshrn b2, h5, #8",  2, 5)
   2318 
   2319 GEN_TWOVEC_TEST(uqrshrn_s_d_1,  "uqrshrn s2, d5, #1",  2, 5)
   2320 GEN_TWOVEC_TEST(uqrshrn_s_d_17, "uqrshrn s2, d5, #17", 2, 5)
   2321 GEN_TWOVEC_TEST(uqrshrn_s_d_32, "uqrshrn s2, d5, #32", 2, 5)
   2322 GEN_TWOVEC_TEST(uqrshrn_h_s_1,  "uqrshrn h2, s5, #1",  2, 5)
   2323 GEN_TWOVEC_TEST(uqrshrn_h_s_9,  "uqrshrn h2, s5, #9",  2, 5)
   2324 GEN_TWOVEC_TEST(uqrshrn_h_s_16, "uqrshrn h2, s5, #16", 2, 5)
   2325 GEN_TWOVEC_TEST(uqrshrn_b_h_1,  "uqrshrn b2, h5, #1",  2, 5)
   2326 GEN_TWOVEC_TEST(uqrshrn_b_h_4,  "uqrshrn b2, h5, #4",  2, 5)
   2327 GEN_TWOVEC_TEST(uqrshrn_b_h_8,  "uqrshrn b2, h5, #8",  2, 5)
   2328 
   2329 GEN_TWOVEC_TEST(sqshrn_s_d_1,  "sqshrn s2, d5, #1",  2, 5)
   2330 GEN_TWOVEC_TEST(sqshrn_s_d_17, "sqshrn s2, d5, #17", 2, 5)
   2331 GEN_TWOVEC_TEST(sqshrn_s_d_32, "sqshrn s2, d5, #32", 2, 5)
   2332 GEN_TWOVEC_TEST(sqshrn_h_s_1,  "sqshrn h2, s5, #1",  2, 5)
   2333 GEN_TWOVEC_TEST(sqshrn_h_s_9,  "sqshrn h2, s5, #9",  2, 5)
   2334 GEN_TWOVEC_TEST(sqshrn_h_s_16, "sqshrn h2, s5, #16", 2, 5)
   2335 GEN_TWOVEC_TEST(sqshrn_b_h_1,  "sqshrn b2, h5, #1",  2, 5)
   2336 GEN_TWOVEC_TEST(sqshrn_b_h_4,  "sqshrn b2, h5, #4",  2, 5)
   2337 GEN_TWOVEC_TEST(sqshrn_b_h_8,  "sqshrn b2, h5, #8",  2, 5)
   2338 
   2339 GEN_TWOVEC_TEST(uqshrn_s_d_1,  "uqshrn s2, d5, #1",  2, 5)
   2340 GEN_TWOVEC_TEST(uqshrn_s_d_17, "uqshrn s2, d5, #17", 2, 5)
   2341 GEN_TWOVEC_TEST(uqshrn_s_d_32, "uqshrn s2, d5, #32", 2, 5)
   2342 GEN_TWOVEC_TEST(uqshrn_h_s_1,  "uqshrn h2, s5, #1",  2, 5)
   2343 GEN_TWOVEC_TEST(uqshrn_h_s_9,  "uqshrn h2, s5, #9",  2, 5)
   2344 GEN_TWOVEC_TEST(uqshrn_h_s_16, "uqshrn h2, s5, #16", 2, 5)
   2345 GEN_TWOVEC_TEST(uqshrn_b_h_1,  "uqshrn b2, h5, #1",  2, 5)
   2346 GEN_TWOVEC_TEST(uqshrn_b_h_4,  "uqshrn b2, h5, #4",  2, 5)
   2347 GEN_TWOVEC_TEST(uqshrn_b_h_8,  "uqshrn b2, h5, #8",  2, 5)
   2348 
   2349 GEN_TWOVEC_TEST(sqrshrun_s_d_1,  "sqrshrun s2, d5, #1",  2, 5)
   2350 GEN_TWOVEC_TEST(sqrshrun_s_d_17, "sqrshrun s2, d5, #17", 2, 5)
   2351 GEN_TWOVEC_TEST(sqrshrun_s_d_32, "sqrshrun s2, d5, #32", 2, 5)
   2352 GEN_TWOVEC_TEST(sqrshrun_h_s_1,  "sqrshrun h2, s5, #1",  2, 5)
   2353 GEN_TWOVEC_TEST(sqrshrun_h_s_9,  "sqrshrun h2, s5, #9",  2, 5)
   2354 GEN_TWOVEC_TEST(sqrshrun_h_s_16, "sqrshrun h2, s5, #16", 2, 5)
   2355 GEN_TWOVEC_TEST(sqrshrun_b_h_1,  "sqrshrun b2, h5, #1",  2, 5)
   2356 GEN_TWOVEC_TEST(sqrshrun_b_h_4,  "sqrshrun b2, h5, #4",  2, 5)
   2357 GEN_TWOVEC_TEST(sqrshrun_b_h_8,  "sqrshrun b2, h5, #8",  2, 5)
   2358 
   2359 GEN_TWOVEC_TEST(sqshrun_s_d_1,  "sqshrun s2, d5, #1",  2, 5)
   2360 GEN_TWOVEC_TEST(sqshrun_s_d_17, "sqshrun s2, d5, #17", 2, 5)
   2361 GEN_TWOVEC_TEST(sqshrun_s_d_32, "sqshrun s2, d5, #32", 2, 5)
   2362 GEN_TWOVEC_TEST(sqshrun_h_s_1,  "sqshrun h2, s5, #1",  2, 5)
   2363 GEN_TWOVEC_TEST(sqshrun_h_s_9,  "sqshrun h2, s5, #9",  2, 5)
   2364 GEN_TWOVEC_TEST(sqshrun_h_s_16, "sqshrun h2, s5, #16", 2, 5)
   2365 GEN_TWOVEC_TEST(sqshrun_b_h_1,  "sqshrun b2, h5, #1",  2, 5)
   2366 GEN_TWOVEC_TEST(sqshrun_b_h_4,  "sqshrun b2, h5, #4",  2, 5)
   2367 GEN_TWOVEC_TEST(sqshrun_b_h_8,  "sqshrun b2, h5, #8",  2, 5)
   2368 
   2369 GEN_TWOVEC_TEST(sqrshrn_2s_2d_1,   "sqrshrn  v4.2s,  v29.2d, #1",  4, 29)
   2370 GEN_TWOVEC_TEST(sqrshrn_2s_2d_17,  "sqrshrn  v4.2s,  v29.2d, #17", 4, 29)
   2371 GEN_TWOVEC_TEST(sqrshrn_2s_2d_32,  "sqrshrn  v4.2s,  v29.2d, #32", 4, 29)
   2372 GEN_TWOVEC_TEST(sqrshrn2_4s_2d_1,  "sqrshrn2 v4.4s,  v29.2d, #1",  4, 29)
   2373 GEN_TWOVEC_TEST(sqrshrn2_4s_2d_17, "sqrshrn2 v4.4s,  v29.2d, #17", 4, 29)
   2374 GEN_TWOVEC_TEST(sqrshrn2_4s_2d_32, "sqrshrn2 v4.4s,  v29.2d, #32", 4, 29)
   2375 GEN_TWOVEC_TEST(sqrshrn_4h_4s_1,   "sqrshrn  v4.4h,  v29.4s, #1",  4, 29)
   2376 GEN_TWOVEC_TEST(sqrshrn_4h_4s_9,   "sqrshrn  v4.4h,  v29.4s, #9",  4, 29)
   2377 GEN_TWOVEC_TEST(sqrshrn_4h_4s_16,  "sqrshrn  v4.4h,  v29.4s, #16", 4, 29)
   2378 GEN_TWOVEC_TEST(sqrshrn2_8h_4s_1,  "sqrshrn2 v4.8h,  v29.4s, #1",  4, 29)
   2379 GEN_TWOVEC_TEST(sqrshrn2_8h_4s_9,  "sqrshrn2 v4.8h,  v29.4s, #9",  4, 29)
   2380 GEN_TWOVEC_TEST(sqrshrn2_8h_4s_16, "sqrshrn2 v4.8h,  v29.4s, #16", 4, 29)
   2381 GEN_TWOVEC_TEST(sqrshrn_8b_8h_1,   "sqrshrn  v4.8b,  v29.8h, #1",  4, 29)
   2382 GEN_TWOVEC_TEST(sqrshrn_8b_8h_4,   "sqrshrn  v4.8b,  v29.8h, #4",  4, 29)
   2383 GEN_TWOVEC_TEST(sqrshrn_8b_8h_8,   "sqrshrn  v4.8b,  v29.8h, #8",  4, 29)
   2384 GEN_TWOVEC_TEST(sqrshrn2_16b_8h_1, "sqrshrn2 v4.16b, v29.8h, #1",  4, 29)
   2385 GEN_TWOVEC_TEST(sqrshrn2_16b_8h_4, "sqrshrn2 v4.16b, v29.8h, #4",  4, 29)
   2386 GEN_TWOVEC_TEST(sqrshrn2_16b_8h_8, "sqrshrn2 v4.16b, v29.8h, #8",  4, 29)
   2387 
   2388 GEN_TWOVEC_TEST(uqrshrn_2s_2d_1,   "uqrshrn  v4.2s,  v29.2d, #1",  4, 29)
   2389 GEN_TWOVEC_TEST(uqrshrn_2s_2d_17,  "uqrshrn  v4.2s,  v29.2d, #17", 4, 29)
   2390 GEN_TWOVEC_TEST(uqrshrn_2s_2d_32,  "uqrshrn  v4.2s,  v29.2d, #32", 4, 29)
   2391 GEN_TWOVEC_TEST(uqrshrn2_4s_2d_1,  "uqrshrn2 v4.4s,  v29.2d, #1",  4, 29)
   2392 GEN_TWOVEC_TEST(uqrshrn2_4s_2d_17, "uqrshrn2 v4.4s,  v29.2d, #17", 4, 29)
   2393 GEN_TWOVEC_TEST(uqrshrn2_4s_2d_32, "uqrshrn2 v4.4s,  v29.2d, #32", 4, 29)
   2394 GEN_TWOVEC_TEST(uqrshrn_4h_4s_1,   "uqrshrn  v4.4h,  v29.4s, #1",  4, 29)
   2395 GEN_TWOVEC_TEST(uqrshrn_4h_4s_9,   "uqrshrn  v4.4h,  v29.4s, #9",  4, 29)
   2396 GEN_TWOVEC_TEST(uqrshrn_4h_4s_16,  "uqrshrn  v4.4h,  v29.4s, #16", 4, 29)
   2397 GEN_TWOVEC_TEST(uqrshrn2_8h_4s_1,  "uqrshrn2 v4.8h,  v29.4s, #1",  4, 29)
   2398 GEN_TWOVEC_TEST(uqrshrn2_8h_4s_9,  "uqrshrn2 v4.8h,  v29.4s, #9",  4, 29)
   2399 GEN_TWOVEC_TEST(uqrshrn2_8h_4s_16, "uqrshrn2 v4.8h,  v29.4s, #16", 4, 29)
   2400 GEN_TWOVEC_TEST(uqrshrn_8b_8h_1,   "uqrshrn  v4.8b,  v29.8h, #1",  4, 29)
   2401 GEN_TWOVEC_TEST(uqrshrn_8b_8h_4,   "uqrshrn  v4.8b,  v29.8h, #4",  4, 29)
   2402 GEN_TWOVEC_TEST(uqrshrn_8b_8h_8,   "uqrshrn  v4.8b,  v29.8h, #8",  4, 29)
   2403 GEN_TWOVEC_TEST(uqrshrn2_16b_8h_1, "uqrshrn2 v4.16b, v29.8h, #1",  4, 29)
   2404 GEN_TWOVEC_TEST(uqrshrn2_16b_8h_4, "uqrshrn2 v4.16b, v29.8h, #4",  4, 29)
   2405 GEN_TWOVEC_TEST(uqrshrn2_16b_8h_8, "uqrshrn2 v4.16b, v29.8h, #8",  4, 29)
   2406 
   2407 GEN_TWOVEC_TEST(sqshrn_2s_2d_1,   "sqshrn  v4.2s,  v29.2d, #1",  4, 29)
   2408 GEN_TWOVEC_TEST(sqshrn_2s_2d_17,  "sqshrn  v4.2s,  v29.2d, #17", 4, 29)
   2409 GEN_TWOVEC_TEST(sqshrn_2s_2d_32,  "sqshrn  v4.2s,  v29.2d, #32", 4, 29)
   2410 GEN_TWOVEC_TEST(sqshrn2_4s_2d_1,  "sqshrn2 v4.4s,  v29.2d, #1",  4, 29)
   2411 GEN_TWOVEC_TEST(sqshrn2_4s_2d_17, "sqshrn2 v4.4s,  v29.2d, #17", 4, 29)
   2412 GEN_TWOVEC_TEST(sqshrn2_4s_2d_32, "sqshrn2 v4.4s,  v29.2d, #32", 4, 29)
   2413 GEN_TWOVEC_TEST(sqshrn_4h_4s_1,   "sqshrn  v4.4h,  v29.4s, #1",  4, 29)
   2414 GEN_TWOVEC_TEST(sqshrn_4h_4s_9,   "sqshrn  v4.4h,  v29.4s, #9",  4, 29)
   2415 GEN_TWOVEC_TEST(sqshrn_4h_4s_16,  "sqshrn  v4.4h,  v29.4s, #16", 4, 29)
   2416 GEN_TWOVEC_TEST(sqshrn2_8h_4s_1,  "sqshrn2 v4.8h,  v29.4s, #1",  4, 29)
   2417 GEN_TWOVEC_TEST(sqshrn2_8h_4s_9,  "sqshrn2 v4.8h,  v29.4s, #9",  4, 29)
   2418 GEN_TWOVEC_TEST(sqshrn2_8h_4s_16, "sqshrn2 v4.8h,  v29.4s, #16", 4, 29)
   2419 GEN_TWOVEC_TEST(sqshrn_8b_8h_1,   "sqshrn  v4.8b,  v29.8h, #1",  4, 29)
   2420 GEN_TWOVEC_TEST(sqshrn_8b_8h_4,   "sqshrn  v4.8b,  v29.8h, #4",  4, 29)
   2421 GEN_TWOVEC_TEST(sqshrn_8b_8h_8,   "sqshrn  v4.8b,  v29.8h, #8",  4, 29)
   2422 GEN_TWOVEC_TEST(sqshrn2_16b_8h_1, "sqshrn2 v4.16b, v29.8h, #1",  4, 29)
   2423 GEN_TWOVEC_TEST(sqshrn2_16b_8h_4, "sqshrn2 v4.16b, v29.8h, #4",  4, 29)
   2424 GEN_TWOVEC_TEST(sqshrn2_16b_8h_8, "sqshrn2 v4.16b, v29.8h, #8",  4, 29)
   2425 
   2426 GEN_TWOVEC_TEST(uqshrn_2s_2d_1,   "uqshrn  v4.2s,  v29.2d, #1",  4, 29)
   2427 GEN_TWOVEC_TEST(uqshrn_2s_2d_17,  "uqshrn  v4.2s,  v29.2d, #17", 4, 29)
   2428 GEN_TWOVEC_TEST(uqshrn_2s_2d_32,  "uqshrn  v4.2s,  v29.2d, #32", 4, 29)
   2429 GEN_TWOVEC_TEST(uqshrn2_4s_2d_1,  "uqshrn2 v4.4s,  v29.2d, #1",  4, 29)
   2430 GEN_TWOVEC_TEST(uqshrn2_4s_2d_17, "uqshrn2 v4.4s,  v29.2d, #17", 4, 29)
   2431 GEN_TWOVEC_TEST(uqshrn2_4s_2d_32, "uqshrn2 v4.4s,  v29.2d, #32", 4, 29)
   2432 GEN_TWOVEC_TEST(uqshrn_4h_4s_1,   "uqshrn  v4.4h,  v29.4s, #1",  4, 29)
   2433 GEN_TWOVEC_TEST(uqshrn_4h_4s_9,   "uqshrn  v4.4h,  v29.4s, #9",  4, 29)
   2434 GEN_TWOVEC_TEST(uqshrn_4h_4s_16,  "uqshrn  v4.4h,  v29.4s, #16", 4, 29)
   2435 GEN_TWOVEC_TEST(uqshrn2_8h_4s_1,  "uqshrn2 v4.8h,  v29.4s, #1",  4, 29)
   2436 GEN_TWOVEC_TEST(uqshrn2_8h_4s_9,  "uqshrn2 v4.8h,  v29.4s, #9",  4, 29)
   2437 GEN_TWOVEC_TEST(uqshrn2_8h_4s_16, "uqshrn2 v4.8h,  v29.4s, #16", 4, 29)
   2438 GEN_TWOVEC_TEST(uqshrn_8b_8h_1,   "uqshrn  v4.8b,  v29.8h, #1",  4, 29)
   2439 GEN_TWOVEC_TEST(uqshrn_8b_8h_4,   "uqshrn  v4.8b,  v29.8h, #4",  4, 29)
   2440 GEN_TWOVEC_TEST(uqshrn_8b_8h_8,   "uqshrn  v4.8b,  v29.8h, #8",  4, 29)
   2441 GEN_TWOVEC_TEST(uqshrn2_16b_8h_1, "uqshrn2 v4.16b, v29.8h, #1",  4, 29)
   2442 GEN_TWOVEC_TEST(uqshrn2_16b_8h_4, "uqshrn2 v4.16b, v29.8h, #4",  4, 29)
   2443 GEN_TWOVEC_TEST(uqshrn2_16b_8h_8, "uqshrn2 v4.16b, v29.8h, #8",  4, 29)
   2444 
   2445 GEN_TWOVEC_TEST(sqrshrun_2s_2d_1,   "sqrshrun  v4.2s,  v29.2d, #1",  4, 29)
   2446 GEN_TWOVEC_TEST(sqrshrun_2s_2d_17,  "sqrshrun  v4.2s,  v29.2d, #17", 4, 29)
   2447 GEN_TWOVEC_TEST(sqrshrun_2s_2d_32,  "sqrshrun  v4.2s,  v29.2d, #32", 4, 29)
   2448 GEN_TWOVEC_TEST(sqrshrun2_4s_2d_1,  "sqrshrun2 v4.4s,  v29.2d, #1",  4, 29)
   2449 GEN_TWOVEC_TEST(sqrshrun2_4s_2d_17, "sqrshrun2 v4.4s,  v29.2d, #17", 4, 29)
   2450 GEN_TWOVEC_TEST(sqrshrun2_4s_2d_32, "sqrshrun2 v4.4s,  v29.2d, #32", 4, 29)
   2451 GEN_TWOVEC_TEST(sqrshrun_4h_4s_1,   "sqrshrun  v4.4h,  v29.4s, #1",  4, 29)
   2452 GEN_TWOVEC_TEST(sqrshrun_4h_4s_9,   "sqrshrun  v4.4h,  v29.4s, #9",  4, 29)
   2453 GEN_TWOVEC_TEST(sqrshrun_4h_4s_16,  "sqrshrun  v4.4h,  v29.4s, #16", 4, 29)
   2454 GEN_TWOVEC_TEST(sqrshrun2_8h_4s_1,  "sqrshrun2 v4.8h,  v29.4s, #1",  4, 29)
   2455 GEN_TWOVEC_TEST(sqrshrun2_8h_4s_9,  "sqrshrun2 v4.8h,  v29.4s, #9",  4, 29)
   2456 GEN_TWOVEC_TEST(sqrshrun2_8h_4s_16, "sqrshrun2 v4.8h,  v29.4s, #16", 4, 29)
   2457 GEN_TWOVEC_TEST(sqrshrun_8b_8h_1,   "sqrshrun  v4.8b,  v29.8h, #1",  4, 29)
   2458 GEN_TWOVEC_TEST(sqrshrun_8b_8h_4,   "sqrshrun  v4.8b,  v29.8h, #4",  4, 29)
   2459 GEN_TWOVEC_TEST(sqrshrun_8b_8h_8,   "sqrshrun  v4.8b,  v29.8h, #8",  4, 29)
   2460 GEN_TWOVEC_TEST(sqrshrun2_16b_8h_1, "sqrshrun2 v4.16b, v29.8h, #1",  4, 29)
   2461 GEN_TWOVEC_TEST(sqrshrun2_16b_8h_4, "sqrshrun2 v4.16b, v29.8h, #4",  4, 29)
   2462 GEN_TWOVEC_TEST(sqrshrun2_16b_8h_8, "sqrshrun2 v4.16b, v29.8h, #8",  4, 29)
   2463 
   2464 GEN_TWOVEC_TEST(sqshrun_2s_2d_1,   "sqshrun  v4.2s,  v29.2d, #1",  4, 29)
   2465 GEN_TWOVEC_TEST(sqshrun_2s_2d_17,  "sqshrun  v4.2s,  v29.2d, #17", 4, 29)
   2466 GEN_TWOVEC_TEST(sqshrun_2s_2d_32,  "sqshrun  v4.2s,  v29.2d, #32", 4, 29)
   2467 GEN_TWOVEC_TEST(sqshrun2_4s_2d_1,  "sqshrun2 v4.4s,  v29.2d, #1",  4, 29)
   2468 GEN_TWOVEC_TEST(sqshrun2_4s_2d_17, "sqshrun2 v4.4s,  v29.2d, #17", 4, 29)
   2469 GEN_TWOVEC_TEST(sqshrun2_4s_2d_32, "sqshrun2 v4.4s,  v29.2d, #32", 4, 29)
   2470 GEN_TWOVEC_TEST(sqshrun_4h_4s_1,   "sqshrun  v4.4h,  v29.4s, #1",  4, 29)
   2471 GEN_TWOVEC_TEST(sqshrun_4h_4s_9,   "sqshrun  v4.4h,  v29.4s, #9",  4, 29)
   2472 GEN_TWOVEC_TEST(sqshrun_4h_4s_16,  "sqshrun  v4.4h,  v29.4s, #16", 4, 29)
   2473 GEN_TWOVEC_TEST(sqshrun2_8h_4s_1,  "sqshrun2 v4.8h,  v29.4s, #1",  4, 29)
   2474 GEN_TWOVEC_TEST(sqshrun2_8h_4s_9,  "sqshrun2 v4.8h,  v29.4s, #9",  4, 29)
   2475 GEN_TWOVEC_TEST(sqshrun2_8h_4s_16, "sqshrun2 v4.8h,  v29.4s, #16", 4, 29)
   2476 GEN_TWOVEC_TEST(sqshrun_8b_8h_1,   "sqshrun  v4.8b,  v29.8h, #1",  4, 29)
   2477 GEN_TWOVEC_TEST(sqshrun_8b_8h_4,   "sqshrun  v4.8b,  v29.8h, #4",  4, 29)
   2478 GEN_TWOVEC_TEST(sqshrun_8b_8h_8,   "sqshrun  v4.8b,  v29.8h, #8",  4, 29)
   2479 GEN_TWOVEC_TEST(sqshrun2_16b_8h_1, "sqshrun2 v4.16b, v29.8h, #1",  4, 29)
   2480 GEN_TWOVEC_TEST(sqshrun2_16b_8h_4, "sqshrun2 v4.16b, v29.8h, #4",  4, 29)
   2481 GEN_TWOVEC_TEST(sqshrun2_16b_8h_8, "sqshrun2 v4.16b, v29.8h, #8",  4, 29)
   2482 
   2483 GEN_TWOVEC_TEST(sqshl_d_d_0,  "sqshl d5, d28, #0",  5, 28)
   2484 GEN_TWOVEC_TEST(sqshl_d_d_32, "sqshl d5, d28, #32", 5, 28)
   2485 GEN_TWOVEC_TEST(sqshl_d_d_63, "sqshl d5, d28, #63", 5, 28)
   2486 GEN_TWOVEC_TEST(sqshl_s_s_0,  "sqshl s5, s28, #0",  5, 28)
   2487 GEN_TWOVEC_TEST(sqshl_s_s_16, "sqshl s5, s28, #16", 5, 28)
   2488 GEN_TWOVEC_TEST(sqshl_s_s_31, "sqshl s5, s28, #31", 5, 28)
   2489 GEN_TWOVEC_TEST(sqshl_h_h_0,  "sqshl h5, h28, #0",  5, 28)
   2490 GEN_TWOVEC_TEST(sqshl_h_h_8,  "sqshl h5, h28, #8",  5, 28)
   2491 GEN_TWOVEC_TEST(sqshl_h_h_15, "sqshl h5, h28, #15", 5, 28)
   2492 GEN_TWOVEC_TEST(sqshl_b_b_0,  "sqshl b5, b28, #0",  5, 28)
   2493 GEN_TWOVEC_TEST(sqshl_b_b_4,  "sqshl b5, b28, #4",  5, 28)
   2494 GEN_TWOVEC_TEST(sqshl_b_b_7,  "sqshl b5, b28, #7",  5, 28)
   2495 
   2496 GEN_TWOVEC_TEST(uqshl_d_d_0,  "uqshl d5, d28, #0",  5, 28)
   2497 GEN_TWOVEC_TEST(uqshl_d_d_32, "uqshl d5, d28, #32", 5, 28)
   2498 GEN_TWOVEC_TEST(uqshl_d_d_63, "uqshl d5, d28, #63", 5, 28)
   2499 GEN_TWOVEC_TEST(uqshl_s_s_0,  "uqshl s5, s28, #0",  5, 28)
   2500 GEN_TWOVEC_TEST(uqshl_s_s_16, "uqshl s5, s28, #16", 5, 28)
   2501 GEN_TWOVEC_TEST(uqshl_s_s_31, "uqshl s5, s28, #31", 5, 28)
   2502 GEN_TWOVEC_TEST(uqshl_h_h_0,  "uqshl h5, h28, #0",  5, 28)
   2503 GEN_TWOVEC_TEST(uqshl_h_h_8,  "uqshl h5, h28, #8",  5, 28)
   2504 GEN_TWOVEC_TEST(uqshl_h_h_15, "uqshl h5, h28, #15", 5, 28)
   2505 GEN_TWOVEC_TEST(uqshl_b_b_0,  "uqshl b5, b28, #0",  5, 28)
   2506 GEN_TWOVEC_TEST(uqshl_b_b_4,  "uqshl b5, b28, #4",  5, 28)
   2507 GEN_TWOVEC_TEST(uqshl_b_b_7,  "uqshl b5, b28, #7",  5, 28)
   2508 
   2509 GEN_TWOVEC_TEST(sqshlu_d_d_0,  "sqshlu d5, d28, #0",  5, 28)
   2510 GEN_TWOVEC_TEST(sqshlu_d_d_32, "sqshlu d5, d28, #32", 5, 28)
   2511 GEN_TWOVEC_TEST(sqshlu_d_d_63, "sqshlu d5, d28, #63", 5, 28)
   2512 GEN_TWOVEC_TEST(sqshlu_s_s_0,  "sqshlu s5, s28, #0",  5, 28)
   2513 GEN_TWOVEC_TEST(sqshlu_s_s_16, "sqshlu s5, s28, #16", 5, 28)
   2514 GEN_TWOVEC_TEST(sqshlu_s_s_31, "sqshlu s5, s28, #31", 5, 28)
   2515 GEN_TWOVEC_TEST(sqshlu_h_h_0,  "sqshlu h5, h28, #0",  5, 28)
   2516 GEN_TWOVEC_TEST(sqshlu_h_h_8,  "sqshlu h5, h28, #8",  5, 28)
   2517 GEN_TWOVEC_TEST(sqshlu_h_h_15, "sqshlu h5, h28, #15", 5, 28)
   2518 GEN_TWOVEC_TEST(sqshlu_b_b_0,  "sqshlu b5, b28, #0",  5, 28)
   2519 GEN_TWOVEC_TEST(sqshlu_b_b_4,  "sqshlu b5, b28, #4",  5, 28)
   2520 GEN_TWOVEC_TEST(sqshlu_b_b_7,  "sqshlu b5, b28, #7",  5, 28)
   2521 
   2522 GEN_TWOVEC_TEST(sqshl_2d_2d_0,   "sqshl v6.2d,  v27.2d, #0",  6, 27)
   2523 GEN_TWOVEC_TEST(sqshl_2d_2d_32,  "sqshl v6.2d,  v27.2d, #32", 6, 27)
   2524 GEN_TWOVEC_TEST(sqshl_2d_2d_63,  "sqshl v6.2d,  v27.2d, #63", 6, 27)
   2525 GEN_TWOVEC_TEST(sqshl_4s_4s_0,   "sqshl v6.4s,  v27.4s, #0",  6, 27)
   2526 GEN_TWOVEC_TEST(sqshl_4s_4s_16,  "sqshl v6.4s,  v27.4s, #16", 6, 27)
   2527 GEN_TWOVEC_TEST(sqshl_4s_4s_31,  "sqshl v6.4s,  v27.4s, #31", 6, 27)
   2528 GEN_TWOVEC_TEST(sqshl_2s_2s_0,   "sqshl v6.2s,  v27.2s, #0",  6, 27)
   2529 GEN_TWOVEC_TEST(sqshl_2s_2s_16,  "sqshl v6.2s,  v27.2s, #16", 6, 27)
   2530 GEN_TWOVEC_TEST(sqshl_2s_2s_31,  "sqshl v6.2s,  v27.2s, #31", 6, 27)
   2531 GEN_TWOVEC_TEST(sqshl_8h_8h_0,   "sqshl v6.8h,  v27.8h, #0",  6, 27)
   2532 GEN_TWOVEC_TEST(sqshl_8h_8h_8,   "sqshl v6.8h,  v27.8h, #8",  6, 27)
   2533 GEN_TWOVEC_TEST(sqshl_8h_8h_15,  "sqshl v6.8h,  v27.8h, #15", 6, 27)
   2534 GEN_TWOVEC_TEST(sqshl_4h_4h_0,   "sqshl v6.4h,  v27.4h, #0",  6, 27)
   2535 GEN_TWOVEC_TEST(sqshl_4h_4h_8,   "sqshl v6.4h,  v27.4h, #8",  6, 27)
   2536 GEN_TWOVEC_TEST(sqshl_4h_4h_15,  "sqshl v6.4h,  v27.4h, #15", 6, 27)
   2537 GEN_TWOVEC_TEST(sqshl_16b_16b_0, "sqshl v6.16b, v27.16b, #0", 6, 27)
   2538 GEN_TWOVEC_TEST(sqshl_16b_16b_3, "sqshl v6.16b, v27.16b, #3", 6, 27)
   2539 GEN_TWOVEC_TEST(sqshl_16b_16b_7, "sqshl v6.16b, v27.16b, #7", 6, 27)
   2540 GEN_TWOVEC_TEST(sqshl_8b_8b_0,   "sqshl v6.8b,  v27.8b, #0",  6, 27)
   2541 GEN_TWOVEC_TEST(sqshl_8b_8b_3,   "sqshl v6.8b,  v27.8b, #3",  6, 27)
   2542 GEN_TWOVEC_TEST(sqshl_8b_8b_7,   "sqshl v6.8b,  v27.8b, #7",  6, 27)
   2543 
   2544 GEN_TWOVEC_TEST(uqshl_2d_2d_0,   "uqshl v6.2d,  v27.2d, #0",  6, 27)
   2545 GEN_TWOVEC_TEST(uqshl_2d_2d_32,  "uqshl v6.2d,  v27.2d, #32", 6, 27)
   2546 GEN_TWOVEC_TEST(uqshl_2d_2d_63,  "uqshl v6.2d,  v27.2d, #63", 6, 27)
   2547 GEN_TWOVEC_TEST(uqshl_4s_4s_0,   "uqshl v6.4s,  v27.4s, #0",  6, 27)
   2548 GEN_TWOVEC_TEST(uqshl_4s_4s_16,  "uqshl v6.4s,  v27.4s, #16", 6, 27)
   2549 GEN_TWOVEC_TEST(uqshl_4s_4s_31,  "uqshl v6.4s,  v27.4s, #31", 6, 27)
   2550 GEN_TWOVEC_TEST(uqshl_2s_2s_0,   "uqshl v6.2s,  v27.2s, #0",  6, 27)
   2551 GEN_TWOVEC_TEST(uqshl_2s_2s_16,  "uqshl v6.2s,  v27.2s, #16", 6, 27)
   2552 GEN_TWOVEC_TEST(uqshl_2s_2s_31,  "uqshl v6.2s,  v27.2s, #31", 6, 27)
   2553 GEN_TWOVEC_TEST(uqshl_8h_8h_0,   "uqshl v6.8h,  v27.8h, #0",  6, 27)
   2554 GEN_TWOVEC_TEST(uqshl_8h_8h_8,   "uqshl v6.8h,  v27.8h, #8",  6, 27)
   2555 GEN_TWOVEC_TEST(uqshl_8h_8h_15,  "uqshl v6.8h,  v27.8h, #15", 6, 27)
   2556 GEN_TWOVEC_TEST(uqshl_4h_4h_0,   "uqshl v6.4h,  v27.4h, #0",  6, 27)
   2557 GEN_TWOVEC_TEST(uqshl_4h_4h_8,   "uqshl v6.4h,  v27.4h, #8",  6, 27)
   2558 GEN_TWOVEC_TEST(uqshl_4h_4h_15,  "uqshl v6.4h,  v27.4h, #15", 6, 27)
   2559 GEN_TWOVEC_TEST(uqshl_16b_16b_0, "uqshl v6.16b, v27.16b, #0", 6, 27)
   2560 GEN_TWOVEC_TEST(uqshl_16b_16b_3, "uqshl v6.16b, v27.16b, #3", 6, 27)
   2561 GEN_TWOVEC_TEST(uqshl_16b_16b_7, "uqshl v6.16b, v27.16b, #7", 6, 27)
   2562 GEN_TWOVEC_TEST(uqshl_8b_8b_0,   "uqshl v6.8b,  v27.8b, #0",  6, 27)
   2563 GEN_TWOVEC_TEST(uqshl_8b_8b_3,   "uqshl v6.8b,  v27.8b, #3",  6, 27)
   2564 GEN_TWOVEC_TEST(uqshl_8b_8b_7,   "uqshl v6.8b,  v27.8b, #7",  6, 27)
   2565 
   2566 GEN_TWOVEC_TEST(sqshlu_2d_2d_0,   "sqshlu v6.2d,  v27.2d, #0",  6, 27)
   2567 GEN_TWOVEC_TEST(sqshlu_2d_2d_32,  "sqshlu v6.2d,  v27.2d, #32", 6, 27)
   2568 GEN_TWOVEC_TEST(sqshlu_2d_2d_63,  "sqshlu v6.2d,  v27.2d, #63", 6, 27)
   2569 GEN_TWOVEC_TEST(sqshlu_4s_4s_0,   "sqshlu v6.4s,  v27.4s, #0",  6, 27)
   2570 GEN_TWOVEC_TEST(sqshlu_4s_4s_16,  "sqshlu v6.4s,  v27.4s, #16", 6, 27)
   2571 GEN_TWOVEC_TEST(sqshlu_4s_4s_31,  "sqshlu v6.4s,  v27.4s, #31", 6, 27)
   2572 GEN_TWOVEC_TEST(sqshlu_2s_2s_0,   "sqshlu v6.2s,  v27.2s, #0",  6, 27)
   2573 GEN_TWOVEC_TEST(sqshlu_2s_2s_16,  "sqshlu v6.2s,  v27.2s, #16", 6, 27)
   2574 GEN_TWOVEC_TEST(sqshlu_2s_2s_31,  "sqshlu v6.2s,  v27.2s, #31", 6, 27)
   2575 GEN_TWOVEC_TEST(sqshlu_8h_8h_0,   "sqshlu v6.8h,  v27.8h, #0",  6, 27)
   2576 GEN_TWOVEC_TEST(sqshlu_8h_8h_8,   "sqshlu v6.8h,  v27.8h, #8",  6, 27)
   2577 GEN_TWOVEC_TEST(sqshlu_8h_8h_15,  "sqshlu v6.8h,  v27.8h, #15", 6, 27)
   2578 GEN_TWOVEC_TEST(sqshlu_4h_4h_0,   "sqshlu v6.4h,  v27.4h, #0",  6, 27)
   2579 GEN_TWOVEC_TEST(sqshlu_4h_4h_8,   "sqshlu v6.4h,  v27.4h, #8",  6, 27)
   2580 GEN_TWOVEC_TEST(sqshlu_4h_4h_15,  "sqshlu v6.4h,  v27.4h, #15", 6, 27)
   2581 GEN_TWOVEC_TEST(sqshlu_16b_16b_0, "sqshlu v6.16b, v27.16b, #0", 6, 27)
   2582 GEN_TWOVEC_TEST(sqshlu_16b_16b_3, "sqshlu v6.16b, v27.16b, #3", 6, 27)
   2583 GEN_TWOVEC_TEST(sqshlu_16b_16b_7, "sqshlu v6.16b, v27.16b, #7", 6, 27)
   2584 GEN_TWOVEC_TEST(sqshlu_8b_8b_0,   "sqshlu v6.8b,  v27.8b, #0",  6, 27)
   2585 GEN_TWOVEC_TEST(sqshlu_8b_8b_3,   "sqshlu v6.8b,  v27.8b, #3",  6, 27)
   2586 GEN_TWOVEC_TEST(sqshlu_8b_8b_7,   "sqshlu v6.8b,  v27.8b, #7",  6, 27)
   2587 
   2588 GEN_TWOVEC_TEST(sqxtn_s_d,  "sqxtn s31,  d0", 31, 0)
   2589 GEN_TWOVEC_TEST(sqxtn_h_s,  "sqxtn h31,  s0", 31, 0)
   2590 GEN_TWOVEC_TEST(sqxtn_b_h,  "sqxtn b31,  h0", 31, 0)
   2591 GEN_TWOVEC_TEST(uqxtn_s_d,  "uqxtn s31,  d0", 31, 0)
   2592 GEN_TWOVEC_TEST(uqxtn_h_s,  "uqxtn h31,  s0", 31, 0)
   2593 GEN_TWOVEC_TEST(uqxtn_b_h,  "uqxtn b31,  h0", 31, 0)
   2594 GEN_TWOVEC_TEST(sqxtun_s_d, "sqxtun s31, d0", 31, 0)
   2595 GEN_TWOVEC_TEST(sqxtun_h_s, "sqxtun h31, s0", 31, 0)
   2596 GEN_TWOVEC_TEST(sqxtun_b_h, "sqxtun b31, h0", 31, 0)
   2597 
   2598 GEN_UNARY_TEST(sqxtn,   2s, 2d)
   2599 GEN_UNARY_TEST(sqxtn2,  4s, 2d)
   2600 GEN_UNARY_TEST(sqxtn,   4h, 4s)
   2601 GEN_UNARY_TEST(sqxtn2,  8h, 4s)
   2602 GEN_UNARY_TEST(sqxtn,   8b, 8h)
   2603 GEN_UNARY_TEST(sqxtn2, 16b, 8h)
   2604 
   2605 GEN_UNARY_TEST(uqxtn,   2s, 2d)
   2606 GEN_UNARY_TEST(uqxtn2,  4s, 2d)
   2607 GEN_UNARY_TEST(uqxtn,   4h, 4s)
   2608 GEN_UNARY_TEST(uqxtn2,  8h, 4s)
   2609 GEN_UNARY_TEST(uqxtn,   8b, 8h)
   2610 GEN_UNARY_TEST(uqxtn2, 16b, 8h)
   2611 
   2612 GEN_UNARY_TEST(sqxtun,   2s, 2d)
   2613 GEN_UNARY_TEST(sqxtun2,  4s, 2d)
   2614 GEN_UNARY_TEST(sqxtun,   4h, 4s)
   2615 GEN_UNARY_TEST(sqxtun2,  8h, 4s)
   2616 GEN_UNARY_TEST(sqxtun,   8b, 8h)
   2617 GEN_UNARY_TEST(sqxtun2, 16b, 8h)
   2618 
   2619 GEN_THREEVEC_TEST(srhadd_4s_4s_4s,"srhadd v2.4s,  v11.4s,  v29.4s", 2, 11, 29)
   2620 GEN_THREEVEC_TEST(srhadd_2s_2s_2s,"srhadd v2.2s,  v11.2s,  v29.2s", 2, 11, 29)
   2621 GEN_THREEVEC_TEST(srhadd_8h_8h_8h,"srhadd v2.8h,  v11.8h,  v29.8h", 2, 11, 29)
   2622 GEN_THREEVEC_TEST(srhadd_4h_4h_4h,"srhadd v2.4h,  v11.4h,  v29.4h", 2, 11, 29)
   2623 GEN_THREEVEC_TEST(srhadd_16b_16b_16b,
   2624                                   "srhadd v2.16b, v11.16b, v29.16b", 2, 11, 29)
   2625 GEN_THREEVEC_TEST(srhadd_8b_8b_8b,"srhadd v2.8b,  v11.8b,  v29.8b", 2, 11, 29)
   2626 
   2627 GEN_THREEVEC_TEST(urhadd_4s_4s_4s,"urhadd v2.4s,  v11.4s,  v29.4s", 2, 11, 29)
   2628 GEN_THREEVEC_TEST(urhadd_2s_2s_2s,"urhadd v2.2s,  v11.2s,  v29.2s", 2, 11, 29)
   2629 GEN_THREEVEC_TEST(urhadd_8h_8h_8h,"urhadd v2.8h,  v11.8h,  v29.8h", 2, 11, 29)
   2630 GEN_THREEVEC_TEST(urhadd_4h_4h_4h,"urhadd v2.4h,  v11.4h,  v29.4h", 2, 11, 29)
   2631 GEN_THREEVEC_TEST(urhadd_16b_16b_16b,
   2632                                   "urhadd v2.16b, v11.16b, v29.16b", 2, 11, 29)
   2633 GEN_THREEVEC_TEST(urhadd_8b_8b_8b,"urhadd v2.8b,  v11.8b,  v29.8b", 2, 11, 29)
   2634 
   2635 GEN_THREEVEC_TEST(sshl_d_d_d, "sshl d29, d28, d27", 29, 28, 27)
   2636 GEN_THREEVEC_TEST(ushl_d_d_d, "ushl d29, d28, d27", 29, 28, 27)
   2637 
   2638 GEN_THREEVEC_TEST(sshl_2d_2d_2d,    "sshl v29.2d, v28.2d, v27.2d", 29,28,27)
   2639 GEN_THREEVEC_TEST(sshl_4s_4s_4s,    "sshl v29.4s, v28.4s, v27.4s", 29,28,27)
   2640 GEN_THREEVEC_TEST(sshl_2s_2s_2s,    "sshl v29.2s, v28.2s, v27.2s", 29,28,27)
   2641 GEN_THREEVEC_TEST(sshl_8h_8h_8h,    "sshl v29.8h, v28.8h, v27.8h", 29,28,27)
   2642 GEN_THREEVEC_TEST(sshl_4h_4h_4h,    "sshl v29.4h, v28.4h, v27.4h", 29,28,27)
   2643 GEN_THREEVEC_TEST(sshl_16b_16b_16b, "sshl v29.16b, v28.16b, v27.16b", 29,28,27)
   2644 GEN_THREEVEC_TEST(sshl_8b_8b_8b,    "sshl v29.8b, v28.8b, v27.8b", 29,28,27)
   2645 
   2646 GEN_THREEVEC_TEST(ushl_2d_2d_2d,    "ushl v29.2d, v28.2d, v27.2d", 29,28,27)
   2647 GEN_THREEVEC_TEST(ushl_4s_4s_4s,    "ushl v29.4s, v28.4s, v27.4s", 29,28,27)
   2648 GEN_THREEVEC_TEST(ushl_2s_2s_2s,    "ushl v29.2s, v28.2s, v27.2s", 29,28,27)
   2649 GEN_THREEVEC_TEST(ushl_8h_8h_8h,    "ushl v29.8h, v28.8h, v27.8h", 29,28,27)
   2650 GEN_THREEVEC_TEST(ushl_4h_4h_4h,    "ushl v29.4h, v28.4h, v27.4h", 29,28,27)
   2651 GEN_THREEVEC_TEST(ushl_16b_16b_16b, "ushl v29.16b, v28.16b, v27.16b", 29,28,27)
   2652 GEN_THREEVEC_TEST(ushl_8b_8b_8b,    "ushl v29.8b, v28.8b, v27.8b", 29,28,27)
   2653 
   2654 GEN_TWOVEC_TEST(shl_d_d_0,  "shl d5, d28, #0",  5, 28)
   2655 GEN_TWOVEC_TEST(shl_d_d_32, "shl d5, d28, #32", 5, 28)
   2656 GEN_TWOVEC_TEST(shl_d_d_63, "shl d5, d28, #63", 5, 28)
   2657 
   2658 GEN_TWOVEC_TEST(sshr_d_d_1,  "sshr d5, d28, #1",  5, 28)
   2659 GEN_TWOVEC_TEST(sshr_d_d_32, "sshr d5, d28, #32", 5, 28)
   2660 GEN_TWOVEC_TEST(sshr_d_d_64, "sshr d5, d28, #64", 5, 28)
   2661 
   2662 GEN_TWOVEC_TEST(ushr_d_d_1,  "ushr d5, d28, #1",  5, 28)
   2663 GEN_TWOVEC_TEST(ushr_d_d_32, "ushr d5, d28, #32", 5, 28)
   2664 GEN_TWOVEC_TEST(ushr_d_d_64, "ushr d5, d28, #64", 5, 28)
   2665 
   2666 GEN_TWOVEC_TEST(ssra_d_d_1,  "ssra d5, d28, #1",  5, 28)
   2667 GEN_TWOVEC_TEST(ssra_d_d_32, "ssra d5, d28, #32", 5, 28)
   2668 GEN_TWOVEC_TEST(ssra_d_d_64, "ssra d5, d28, #64", 5, 28)
   2669 
   2670 GEN_TWOVEC_TEST(usra_d_d_1,  "usra d5, d28, #1",  5, 28)
   2671 GEN_TWOVEC_TEST(usra_d_d_32, "usra d5, d28, #32", 5, 28)
   2672 GEN_TWOVEC_TEST(usra_d_d_64, "usra d5, d28, #64", 5, 28)
   2673 
   2674 GEN_TWOVEC_TEST(ssra_2d_2d_1,   "ssra v6.2d,  v27.2d, #1",  6, 27)
   2675 GEN_TWOVEC_TEST(ssra_2d_2d_32,  "ssra v6.2d,  v27.2d, #32", 6, 27)
   2676 GEN_TWOVEC_TEST(ssra_2d_2d_64,  "ssra v6.2d,  v27.2d, #64", 6, 27)
   2677 GEN_TWOVEC_TEST(ssra_4s_4s_1,   "ssra v6.4s,  v27.4s, #1",  6, 27)
   2678 GEN_TWOVEC_TEST(ssra_4s_4s_16,  "ssra v6.4s,  v27.4s, #16", 6, 27)
   2679 GEN_TWOVEC_TEST(ssra_4s_4s_32,  "ssra v6.4s,  v27.4s, #32", 6, 27)
   2680 GEN_TWOVEC_TEST(ssra_2s_2s_1,   "ssra v6.2s,  v27.2s, #1",  6, 27)
   2681 GEN_TWOVEC_TEST(ssra_2s_2s_16,  "ssra v6.2s,  v27.2s, #16", 6, 27)
   2682 GEN_TWOVEC_TEST(ssra_2s_2s_32,  "ssra v6.2s,  v27.2s, #32", 6, 27)
   2683 GEN_TWOVEC_TEST(ssra_8h_8h_1,   "ssra v6.8h,  v27.8h, #1",  6, 27)
   2684 GEN_TWOVEC_TEST(ssra_8h_8h_8,   "ssra v6.8h,  v27.8h, #8",  6, 27)
   2685 GEN_TWOVEC_TEST(ssra_8h_8h_16,  "ssra v6.8h,  v27.8h, #16", 6, 27)
   2686 GEN_TWOVEC_TEST(ssra_4h_4h_1,   "ssra v6.4h,  v27.4h, #1",  6, 27)
   2687 GEN_TWOVEC_TEST(ssra_4h_4h_8,   "ssra v6.4h,  v27.4h, #8",  6, 27)
   2688 GEN_TWOVEC_TEST(ssra_4h_4h_16,  "ssra v6.4h,  v27.4h, #16", 6, 27)
   2689 GEN_TWOVEC_TEST(ssra_16b_16b_1, "ssra v6.16b, v27.16b, #1", 6, 27)
   2690 GEN_TWOVEC_TEST(ssra_16b_16b_3, "ssra v6.16b, v27.16b, #3", 6, 27)
   2691 GEN_TWOVEC_TEST(ssra_16b_16b_8, "ssra v6.16b, v27.16b, #8", 6, 27)
   2692 GEN_TWOVEC_TEST(ssra_8b_8b_1,   "ssra v6.8b,  v27.8b, #1",  6, 27)
   2693 GEN_TWOVEC_TEST(ssra_8b_8b_3,   "ssra v6.8b,  v27.8b, #3",  6, 27)
   2694 GEN_TWOVEC_TEST(ssra_8b_8b_8,   "ssra v6.8b,  v27.8b, #8",  6, 27)
   2695 
   2696 GEN_TWOVEC_TEST(usra_2d_2d_1,   "usra v6.2d,  v27.2d, #1",  6, 27)
   2697 GEN_TWOVEC_TEST(usra_2d_2d_32,  "usra v6.2d,  v27.2d, #32", 6, 27)
   2698 GEN_TWOVEC_TEST(usra_2d_2d_64,  "usra v6.2d,  v27.2d, #64", 6, 27)
   2699 GEN_TWOVEC_TEST(usra_4s_4s_1,   "usra v6.4s,  v27.4s, #1",  6, 27)
   2700 GEN_TWOVEC_TEST(usra_4s_4s_16,  "usra v6.4s,  v27.4s, #16", 6, 27)
   2701 GEN_TWOVEC_TEST(usra_4s_4s_32,  "usra v6.4s,  v27.4s, #32", 6, 27)
   2702 GEN_TWOVEC_TEST(usra_2s_2s_1,   "usra v6.2s,  v27.2s, #1",  6, 27)
   2703 GEN_TWOVEC_TEST(usra_2s_2s_16,  "usra v6.2s,  v27.2s, #16", 6, 27)
   2704 GEN_TWOVEC_TEST(usra_2s_2s_32,  "usra v6.2s,  v27.2s, #32", 6, 27)
   2705 GEN_TWOVEC_TEST(usra_8h_8h_1,   "usra v6.8h,  v27.8h, #1",  6, 27)
   2706 GEN_TWOVEC_TEST(usra_8h_8h_8,   "usra v6.8h,  v27.8h, #8",  6, 27)
   2707 GEN_TWOVEC_TEST(usra_8h_8h_16,  "usra v6.8h,  v27.8h, #16", 6, 27)
   2708 GEN_TWOVEC_TEST(usra_4h_4h_1,   "usra v6.4h,  v27.4h, #1",  6, 27)
   2709 GEN_TWOVEC_TEST(usra_4h_4h_8,   "usra v6.4h,  v27.4h, #8",  6, 27)
   2710 GEN_TWOVEC_TEST(usra_4h_4h_16,  "usra v6.4h,  v27.4h, #16", 6, 27)
   2711 GEN_TWOVEC_TEST(usra_16b_16b_1, "usra v6.16b, v27.16b, #1", 6, 27)
   2712 GEN_TWOVEC_TEST(usra_16b_16b_3, "usra v6.16b, v27.16b, #3", 6, 27)
   2713 GEN_TWOVEC_TEST(usra_16b_16b_8, "usra v6.16b, v27.16b, #8", 6, 27)
   2714 GEN_TWOVEC_TEST(usra_8b_8b_1,   "usra v6.8b,  v27.8b, #1",  6, 27)
   2715 GEN_TWOVEC_TEST(usra_8b_8b_3,   "usra v6.8b,  v27.8b, #3",  6, 27)
   2716 GEN_TWOVEC_TEST(usra_8b_8b_8,   "usra v6.8b,  v27.8b, #8",  6, 27)
   2717 
   2718 GEN_THREEVEC_TEST(srshl_d_d_d, "srshl d29, d28, d27", 29, 28, 27)
   2719 GEN_THREEVEC_TEST(urshl_d_d_d, "urshl d29, d28, d27", 29, 28, 27)
   2720 
   2721 GEN_THREEVEC_TEST(srshl_2d_2d_2d,   "srshl v29.2d, v28.2d, v27.2d", 29,28,27)
   2722 GEN_THREEVEC_TEST(srshl_4s_4s_4s,   "srshl v29.4s, v28.4s, v27.4s", 29,28,27)
   2723 GEN_THREEVEC_TEST(srshl_2s_2s_2s,   "srshl v29.2s, v28.2s, v27.2s", 29,28,27)
   2724 GEN_THREEVEC_TEST(srshl_8h_8h_8h,   "srshl v29.8h, v28.8h, v27.8h", 29,28,27)
   2725 GEN_THREEVEC_TEST(srshl_4h_4h_4h,   "srshl v29.4h, v28.4h, v27.4h", 29,28,27)
   2726 GEN_THREEVEC_TEST(srshl_16b_16b_16b,"srshl v29.16b, v28.16b, v27.16b", 29,28,27)
   2727 GEN_THREEVEC_TEST(srshl_8b_8b_8b,   "srshl v29.8b, v28.8b, v27.8b", 29,28,27)
   2728 
   2729 GEN_THREEVEC_TEST(urshl_2d_2d_2d,   "urshl v29.2d, v28.2d, v27.2d", 29,28,27)
   2730 GEN_THREEVEC_TEST(urshl_4s_4s_4s,   "urshl v29.4s, v28.4s, v27.4s", 29,28,27)
   2731 GEN_THREEVEC_TEST(urshl_2s_2s_2s,   "urshl v29.2s, v28.2s, v27.2s", 29,28,27)
   2732 GEN_THREEVEC_TEST(urshl_8h_8h_8h,   "urshl v29.8h, v28.8h, v27.8h", 29,28,27)
   2733 GEN_THREEVEC_TEST(urshl_4h_4h_4h,   "urshl v29.4h, v28.4h, v27.4h", 29,28,27)
   2734 GEN_THREEVEC_TEST(urshl_16b_16b_16b,"urshl v29.16b, v28.16b, v27.16b", 29,28,27)
   2735 GEN_THREEVEC_TEST(urshl_8b_8b_8b,   "urshl v29.8b, v28.8b, v27.8b", 29,28,27)
   2736 
   2737 GEN_TWOVEC_TEST(srshr_d_d_1,  "srshr d5, d28, #1",  5, 28)
   2738 GEN_TWOVEC_TEST(srshr_d_d_32, "srshr d5, d28, #32", 5, 28)
   2739 GEN_TWOVEC_TEST(srshr_d_d_64, "srshr d5, d28, #64", 5, 28)
   2740 
   2741 GEN_TWOVEC_TEST(urshr_d_d_1,  "urshr d5, d28, #1",  5, 28)
   2742 GEN_TWOVEC_TEST(urshr_d_d_32, "urshr d5, d28, #32", 5, 28)
   2743 GEN_TWOVEC_TEST(urshr_d_d_64, "urshr d5, d28, #64", 5, 28)
   2744 
   2745 GEN_TWOVEC_TEST(srshr_2d_2d_1,   "srshr v6.2d,  v27.2d, #1",  6, 27)
   2746 GEN_TWOVEC_TEST(srshr_2d_2d_32,  "srshr v6.2d,  v27.2d, #32", 6, 27)
   2747 GEN_TWOVEC_TEST(srshr_2d_2d_64,  "srshr v6.2d,  v27.2d, #64", 6, 27)
   2748 GEN_TWOVEC_TEST(srshr_4s_4s_1,   "srshr v6.4s,  v27.4s, #1",  6, 27)
   2749 GEN_TWOVEC_TEST(srshr_4s_4s_16,  "srshr v6.4s,  v27.4s, #16", 6, 27)
   2750 GEN_TWOVEC_TEST(srshr_4s_4s_32,  "srshr v6.4s,  v27.4s, #32", 6, 27)
   2751 GEN_TWOVEC_TEST(srshr_2s_2s_1,   "srshr v6.2s,  v27.2s, #1",  6, 27)
   2752 GEN_TWOVEC_TEST(srshr_2s_2s_16,  "srshr v6.2s,  v27.2s, #16", 6, 27)
   2753 GEN_TWOVEC_TEST(srshr_2s_2s_32,  "srshr v6.2s,  v27.2s, #32", 6, 27)
   2754 GEN_TWOVEC_TEST(srshr_8h_8h_1,   "srshr v6.8h,  v27.8h, #1",  6, 27)
   2755 GEN_TWOVEC_TEST(srshr_8h_8h_8,   "srshr v6.8h,  v27.8h, #8",  6, 27)
   2756 GEN_TWOVEC_TEST(srshr_8h_8h_16,  "srshr v6.8h,  v27.8h, #16", 6, 27)
   2757 GEN_TWOVEC_TEST(srshr_4h_4h_1,   "srshr v6.4h,  v27.4h, #1",  6, 27)
   2758 GEN_TWOVEC_TEST(srshr_4h_4h_8,   "srshr v6.4h,  v27.4h, #8",  6, 27)
   2759 GEN_TWOVEC_TEST(srshr_4h_4h_16,  "srshr v6.4h,  v27.4h, #16", 6, 27)
   2760 GEN_TWOVEC_TEST(srshr_16b_16b_1, "srshr v6.16b, v27.16b, #1", 6, 27)
   2761 GEN_TWOVEC_TEST(srshr_16b_16b_3, "srshr v6.16b, v27.16b, #3", 6, 27)
   2762 GEN_TWOVEC_TEST(srshr_16b_16b_8, "srshr v6.16b, v27.16b, #8", 6, 27)
   2763 GEN_TWOVEC_TEST(srshr_8b_8b_1,   "srshr v6.8b,  v27.8b, #1",  6, 27)
   2764 GEN_TWOVEC_TEST(srshr_8b_8b_3,   "srshr v6.8b,  v27.8b, #3",  6, 27)
   2765 GEN_TWOVEC_TEST(srshr_8b_8b_8,   "srshr v6.8b,  v27.8b, #8",  6, 27)
   2766 
   2767 GEN_TWOVEC_TEST(urshr_2d_2d_1,   "urshr v6.2d,  v27.2d, #1",  6, 27)
   2768 GEN_TWOVEC_TEST(urshr_2d_2d_32,  "urshr v6.2d,  v27.2d, #32", 6, 27)
   2769 GEN_TWOVEC_TEST(urshr_2d_2d_64,  "urshr v6.2d,  v27.2d, #64", 6, 27)
   2770 GEN_TWOVEC_TEST(urshr_4s_4s_1,   "urshr v6.4s,  v27.4s, #1",  6, 27)
   2771 GEN_TWOVEC_TEST(urshr_4s_4s_16,  "urshr v6.4s,  v27.4s, #16", 6, 27)
   2772 GEN_TWOVEC_TEST(urshr_4s_4s_32,  "urshr v6.4s,  v27.4s, #32", 6, 27)
   2773 GEN_TWOVEC_TEST(urshr_2s_2s_1,   "urshr v6.2s,  v27.2s, #1",  6, 27)
   2774 GEN_TWOVEC_TEST(urshr_2s_2s_16,  "urshr v6.2s,  v27.2s, #16", 6, 27)
   2775 GEN_TWOVEC_TEST(urshr_2s_2s_32,  "urshr v6.2s,  v27.2s, #32", 6, 27)
   2776 GEN_TWOVEC_TEST(urshr_8h_8h_1,   "urshr v6.8h,  v27.8h, #1",  6, 27)
   2777 GEN_TWOVEC_TEST(urshr_8h_8h_8,   "urshr v6.8h,  v27.8h, #8",  6, 27)
   2778 GEN_TWOVEC_TEST(urshr_8h_8h_16,  "urshr v6.8h,  v27.8h, #16", 6, 27)
   2779 GEN_TWOVEC_TEST(urshr_4h_4h_1,   "urshr v6.4h,  v27.4h, #1",  6, 27)
   2780 GEN_TWOVEC_TEST(urshr_4h_4h_8,   "urshr v6.4h,  v27.4h, #8",  6, 27)
   2781 GEN_TWOVEC_TEST(urshr_4h_4h_16,  "urshr v6.4h,  v27.4h, #16", 6, 27)
   2782 GEN_TWOVEC_TEST(urshr_16b_16b_1, "urshr v6.16b, v27.16b, #1", 6, 27)
   2783 GEN_TWOVEC_TEST(urshr_16b_16b_3, "urshr v6.16b, v27.16b, #3", 6, 27)
   2784 GEN_TWOVEC_TEST(urshr_16b_16b_8, "urshr v6.16b, v27.16b, #8", 6, 27)
   2785 GEN_TWOVEC_TEST(urshr_8b_8b_1,   "urshr v6.8b,  v27.8b, #1",  6, 27)
   2786 GEN_TWOVEC_TEST(urshr_8b_8b_3,   "urshr v6.8b,  v27.8b, #3",  6, 27)
   2787 GEN_TWOVEC_TEST(urshr_8b_8b_8,   "urshr v6.8b,  v27.8b, #8",  6, 27)
   2788 
   2789 GEN_TWOVEC_TEST(srsra_d_d_1,  "srsra d5, d28, #1",  5, 28)
   2790 GEN_TWOVEC_TEST(srsra_d_d_32, "srsra d5, d28, #32", 5, 28)
   2791 GEN_TWOVEC_TEST(srsra_d_d_64, "srsra d5, d28, #64", 5, 28)
   2792 
   2793 GEN_TWOVEC_TEST(ursra_d_d_1,  "ursra d5, d28, #1",  5, 28)
   2794 GEN_TWOVEC_TEST(ursra_d_d_32, "ursra d5, d28, #32", 5, 28)
   2795 GEN_TWOVEC_TEST(ursra_d_d_64, "ursra d5, d28, #64", 5, 28)
   2796 
   2797 GEN_TWOVEC_TEST(srsra_2d_2d_1,   "srsra v6.2d,  v27.2d, #1",  6, 27)
   2798 GEN_TWOVEC_TEST(srsra_2d_2d_32,  "srsra v6.2d,  v27.2d, #32", 6, 27)
   2799 GEN_TWOVEC_TEST(srsra_2d_2d_64,  "srsra v6.2d,  v27.2d, #64", 6, 27)
   2800 GEN_TWOVEC_TEST(srsra_4s_4s_1,   "srsra v6.4s,  v27.4s, #1",  6, 27)
   2801 GEN_TWOVEC_TEST(srsra_4s_4s_16,  "srsra v6.4s,  v27.4s, #16", 6, 27)
   2802 GEN_TWOVEC_TEST(srsra_4s_4s_32,  "srsra v6.4s,  v27.4s, #32", 6, 27)
   2803 GEN_TWOVEC_TEST(srsra_2s_2s_1,   "srsra v6.2s,  v27.2s, #1",  6, 27)
   2804 GEN_TWOVEC_TEST(srsra_2s_2s_16,  "srsra v6.2s,  v27.2s, #16", 6, 27)
   2805 GEN_TWOVEC_TEST(srsra_2s_2s_32,  "srsra v6.2s,  v27.2s, #32", 6, 27)
   2806 GEN_TWOVEC_TEST(srsra_8h_8h_1,   "srsra v6.8h,  v27.8h, #1",  6, 27)
   2807 GEN_TWOVEC_TEST(srsra_8h_8h_8,   "srsra v6.8h,  v27.8h, #8",  6, 27)
   2808 GEN_TWOVEC_TEST(srsra_8h_8h_16,  "srsra v6.8h,  v27.8h, #16", 6, 27)
   2809 GEN_TWOVEC_TEST(srsra_4h_4h_1,   "srsra v6.4h,  v27.4h, #1",  6, 27)
   2810 GEN_TWOVEC_TEST(srsra_4h_4h_8,   "srsra v6.4h,  v27.4h, #8",  6, 27)
   2811 GEN_TWOVEC_TEST(srsra_4h_4h_16,  "srsra v6.4h,  v27.4h, #16", 6, 27)
   2812 GEN_TWOVEC_TEST(srsra_16b_16b_1, "srsra v6.16b, v27.16b, #1", 6, 27)
   2813 GEN_TWOVEC_TEST(srsra_16b_16b_3, "srsra v6.16b, v27.16b, #3", 6, 27)
   2814 GEN_TWOVEC_TEST(srsra_16b_16b_8, "srsra v6.16b, v27.16b, #8", 6, 27)
   2815 GEN_TWOVEC_TEST(srsra_8b_8b_1,   "srsra v6.8b,  v27.8b, #1",  6, 27)
   2816 GEN_TWOVEC_TEST(srsra_8b_8b_3,   "srsra v6.8b,  v27.8b, #3",  6, 27)
   2817 GEN_TWOVEC_TEST(srsra_8b_8b_8,   "srsra v6.8b,  v27.8b, #8",  6, 27)
   2818 
   2819 GEN_TWOVEC_TEST(ursra_2d_2d_1,   "ursra v6.2d,  v27.2d, #1",  6, 27)
   2820 GEN_TWOVEC_TEST(ursra_2d_2d_32,  "ursra v6.2d,  v27.2d, #32", 6, 27)
   2821 GEN_TWOVEC_TEST(ursra_2d_2d_64,  "ursra v6.2d,  v27.2d, #64", 6, 27)
   2822 GEN_TWOVEC_TEST(ursra_4s_4s_1,   "ursra v6.4s,  v27.4s, #1",  6, 27)
   2823 GEN_TWOVEC_TEST(ursra_4s_4s_16,  "ursra v6.4s,  v27.4s, #16", 6, 27)
   2824 GEN_TWOVEC_TEST(ursra_4s_4s_32,  "ursra v6.4s,  v27.4s, #32", 6, 27)
   2825 GEN_TWOVEC_TEST(ursra_2s_2s_1,   "ursra v6.2s,  v27.2s, #1",  6, 27)
   2826 GEN_TWOVEC_TEST(ursra_2s_2s_16,  "ursra v6.2s,  v27.2s, #16", 6, 27)
   2827 GEN_TWOVEC_TEST(ursra_2s_2s_32,  "ursra v6.2s,  v27.2s, #32", 6, 27)
   2828 GEN_TWOVEC_TEST(ursra_8h_8h_1,   "ursra v6.8h,  v27.8h, #1",  6, 27)
   2829 GEN_TWOVEC_TEST(ursra_8h_8h_8,   "ursra v6.8h,  v27.8h, #8",  6, 27)
   2830 GEN_TWOVEC_TEST(ursra_8h_8h_16,  "ursra v6.8h,  v27.8h, #16", 6, 27)
   2831 GEN_TWOVEC_TEST(ursra_4h_4h_1,   "ursra v6.4h,  v27.4h, #1",  6, 27)
   2832 GEN_TWOVEC_TEST(ursra_4h_4h_8,   "ursra v6.4h,  v27.4h, #8",  6, 27)
   2833 GEN_TWOVEC_TEST(ursra_4h_4h_16,  "ursra v6.4h,  v27.4h, #16", 6, 27)
   2834 GEN_TWOVEC_TEST(ursra_16b_16b_1, "ursra v6.16b, v27.16b, #1", 6, 27)
   2835 GEN_TWOVEC_TEST(ursra_16b_16b_3, "ursra v6.16b, v27.16b, #3", 6, 27)
   2836 GEN_TWOVEC_TEST(ursra_16b_16b_8, "ursra v6.16b, v27.16b, #8", 6, 27)
   2837 GEN_TWOVEC_TEST(ursra_8b_8b_1,   "ursra v6.8b,  v27.8b, #1",  6, 27)
   2838 GEN_TWOVEC_TEST(ursra_8b_8b_3,   "ursra v6.8b,  v27.8b, #3",  6, 27)
   2839 GEN_TWOVEC_TEST(ursra_8b_8b_8,   "ursra v6.8b,  v27.8b, #8",  6, 27)
   2840 
   2841 GEN_TWOVEC_TEST(suqadd_d_d,  "suqadd d22, d23",   22, 23)
   2842 GEN_TWOVEC_TEST(suqadd_s_s,  "suqadd s22, s23",   22, 23)
   2843 GEN_TWOVEC_TEST(suqadd_h_h,  "suqadd h22, h23",   22, 23)
   2844 GEN_TWOVEC_TEST(suqadd_b_b,  "suqadd b22, b23",   22, 23)
   2845 
   2846 GEN_TWOVEC_TEST(suqadd_2d_2d,   "suqadd v6.2d,  v27.2d",  6, 27)
   2847 GEN_TWOVEC_TEST(suqadd_4s_4s,   "suqadd v6.4s,  v27.4s",  6, 27)
   2848 GEN_TWOVEC_TEST(suqadd_2s_2s,   "suqadd v6.2s,  v27.2s",  6, 27)
   2849 GEN_TWOVEC_TEST(suqadd_8h_8h,   "suqadd v6.8h,  v27.8h",  6, 27)
   2850 GEN_TWOVEC_TEST(suqadd_4h_4h,   "suqadd v6.4h,  v27.4h",  6, 27)
   2851 GEN_TWOVEC_TEST(suqadd_16b_16b, "suqadd v6.16b, v27.16b", 6, 27)
   2852 GEN_TWOVEC_TEST(suqadd_8b_8b,   "suqadd v6.8b,  v27.8b",  6, 27)
   2853 
   2854 GEN_TWOVEC_TEST(usqadd_d_d,  "usqadd d22, d23",   22, 23)
   2855 GEN_TWOVEC_TEST(usqadd_s_s,  "usqadd s22, s23",   22, 23)
   2856 GEN_TWOVEC_TEST(usqadd_h_h,  "usqadd h22, h23",   22, 23)
   2857 GEN_TWOVEC_TEST(usqadd_b_b,  "usqadd b22, b23",   22, 23)
   2858 
   2859 GEN_TWOVEC_TEST(usqadd_2d_2d,   "usqadd v6.2d,  v27.2d",  6, 27)
   2860 GEN_TWOVEC_TEST(usqadd_4s_4s,   "usqadd v6.4s,  v27.4s",  6, 27)
   2861 GEN_TWOVEC_TEST(usqadd_2s_2s,   "usqadd v6.2s,  v27.2s",  6, 27)
   2862 GEN_TWOVEC_TEST(usqadd_8h_8h,   "usqadd v6.8h,  v27.8h",  6, 27)
   2863 GEN_TWOVEC_TEST(usqadd_4h_4h,   "usqadd v6.4h,  v27.4h",  6, 27)
   2864 GEN_TWOVEC_TEST(usqadd_16b_16b, "usqadd v6.16b, v27.16b", 6, 27)
   2865 GEN_TWOVEC_TEST(usqadd_8b_8b,   "usqadd v6.8b,  v27.8b",  6, 27)
   2866 
   2867 GEN_THREEVEC_TEST(trn1_2d_2d_2d,    "trn1 v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2868 GEN_THREEVEC_TEST(trn1_4s_4s_4s,    "trn1 v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2869 GEN_THREEVEC_TEST(trn1_2s_2s_2s,    "trn1 v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2870 GEN_THREEVEC_TEST(trn1_8h_8h_8h,    "trn1 v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2871 GEN_THREEVEC_TEST(trn1_4h_4h_4h,    "trn1 v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2872 GEN_THREEVEC_TEST(trn1_16b_16b_16b, "trn1 v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2873 GEN_THREEVEC_TEST(trn1_8b_8b_8b,    "trn1 v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2874 
   2875 GEN_THREEVEC_TEST(trn2_2d_2d_2d,    "trn2 v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2876 GEN_THREEVEC_TEST(trn2_4s_4s_4s,    "trn2 v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2877 GEN_THREEVEC_TEST(trn2_2s_2s_2s,    "trn2 v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2878 GEN_THREEVEC_TEST(trn2_8h_8h_8h,    "trn2 v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2879 GEN_THREEVEC_TEST(trn2_4h_4h_4h,    "trn2 v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2880 GEN_THREEVEC_TEST(trn2_16b_16b_16b, "trn2 v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2881 GEN_THREEVEC_TEST(trn2_8b_8b_8b,    "trn2 v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2882 
   2883 GEN_THREEVEC_TEST(uzp1_2d_2d_2d,    "uzp1 v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2884 GEN_THREEVEC_TEST(uzp1_4s_4s_4s,    "uzp1 v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2885 GEN_THREEVEC_TEST(uzp1_2s_2s_2s,    "uzp1 v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2886 GEN_THREEVEC_TEST(uzp1_8h_8h_8h,    "uzp1 v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2887 GEN_THREEVEC_TEST(uzp1_4h_4h_4h,    "uzp1 v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2888 GEN_THREEVEC_TEST(uzp1_16b_16b_16b, "uzp1 v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2889 GEN_THREEVEC_TEST(uzp1_8b_8b_8b,    "uzp1 v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2890 
   2891 GEN_THREEVEC_TEST(uzp2_2d_2d_2d,    "uzp2 v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2892 GEN_THREEVEC_TEST(uzp2_4s_4s_4s,    "uzp2 v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2893 GEN_THREEVEC_TEST(uzp2_2s_2s_2s,    "uzp2 v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2894 GEN_THREEVEC_TEST(uzp2_8h_8h_8h,    "uzp2 v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2895 GEN_THREEVEC_TEST(uzp2_4h_4h_4h,    "uzp2 v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2896 GEN_THREEVEC_TEST(uzp2_16b_16b_16b, "uzp2 v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2897 GEN_THREEVEC_TEST(uzp2_8b_8b_8b,    "uzp2 v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2898 
   2899 GEN_THREEVEC_TEST(zip1_2d_2d_2d,    "zip1 v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2900 GEN_THREEVEC_TEST(zip1_4s_4s_4s,    "zip1 v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2901 GEN_THREEVEC_TEST(zip1_2s_2s_2s,    "zip1 v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2902 GEN_THREEVEC_TEST(zip1_8h_8h_8h,    "zip1 v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2903 GEN_THREEVEC_TEST(zip1_4h_4h_4h,    "zip1 v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2904 GEN_THREEVEC_TEST(zip1_16b_16b_16b, "zip1 v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2905 GEN_THREEVEC_TEST(zip1_8b_8b_8b,    "zip1 v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2906 
   2907 GEN_THREEVEC_TEST(zip2_2d_2d_2d,    "zip2 v1.2d,  v2.2d,  v4.2d",  1, 2, 4)
   2908 GEN_THREEVEC_TEST(zip2_4s_4s_4s,    "zip2 v1.4s,  v2.4s,  v4.4s",  1, 2, 4)
   2909 GEN_THREEVEC_TEST(zip2_2s_2s_2s,    "zip2 v1.2s,  v2.2s,  v4.2s",  1, 2, 4)
   2910 GEN_THREEVEC_TEST(zip2_8h_8h_8h,    "zip2 v1.8h,  v2.8h,  v4.8h",  1, 2, 4)
   2911 GEN_THREEVEC_TEST(zip2_4h_4h_4h,    "zip2 v1.4h,  v2.4h,  v4.4h",  1, 2, 4)
   2912 GEN_THREEVEC_TEST(zip2_16b_16b_16b, "zip2 v1.16b, v2.16b, v4.16b", 1, 2, 4)
   2913 GEN_THREEVEC_TEST(zip2_8b_8b_8b,    "zip2 v1.8b,  v2.8b,  v4.8b",  1, 2, 4)
   2914 
   2915 GEN_TWOVEC_TEST(urecpe_4s_4s,   "urecpe v6.4s,  v27.4s",  6, 27)
   2916 GEN_TWOVEC_TEST(urecpe_2s_2s,   "urecpe v6.2s,  v27.2s",  6, 27)
   2917 
   2918 GEN_TWOVEC_TEST(ursqrte_4s_4s,   "ursqrte v6.4s,  v27.4s",  6, 27)
   2919 GEN_TWOVEC_TEST(ursqrte_2s_2s,   "ursqrte v6.2s,  v27.2s",  6, 27)
   2920 
   2921 
   2922 /* ---------------------------------------------------------------- */
   2923 /* -- main()                                                     -- */
   2924 /* ---------------------------------------------------------------- */
   2925 
   2926 int main ( void )
   2927 {
   2928    assert(sizeof(V128) == 16);
   2929 
   2930    // ======================== FP ========================
   2931 
   2932    // fabs      d,s
   2933    // fabs      2d,4s,2s
   2934    if (1) test_fabs_d_d(TyDF);
   2935    if (1) test_fabs_s_s(TySF);
   2936    if (1) test_fabs_2d_2d(TyDF);
   2937    if (1) test_fabs_4s_4s(TySF);
   2938    if (1) test_fabs_2s_2s(TyDF);
   2939    if (1) test_fneg_2d_2d(TySF);
   2940    if (1) test_fneg_4s_4s(TyDF);
   2941    if (1) test_fneg_2s_2s(TySF);
   2942 
   2943    // fneg      d,s
   2944    // fneg      2d,4s,2s
   2945    if (1) test_fneg_d_d(TyDF);
   2946    if (1) test_fneg_s_s(TySF);
   2947 
   2948    // fsqrt     d,s
   2949    // fsqrt     2d,4s,2s
   2950    if (1) test_fsqrt_d_d(TyDF);
   2951    if (1) test_fsqrt_s_s(TySF);
   2952 
   2953    // fadd      d,s
   2954    // fsub      d,s
   2955    if (1) test_fadd_d_d_d(TyDF);
   2956    if (1) test_fadd_s_s_s(TySF);
   2957    if (1) test_fsub_d_d_d(TyDF);
   2958    if (1) test_fsub_s_s_s(TySF);
   2959 
   2960    // fadd      2d,4s,2s
   2961    // fsub      2d,4s,2s
   2962    if (1) test_fadd_2d_2d_2d(TyDF);
   2963    if (1) test_fadd_4s_4s_4s(TySF);
   2964    if (1) test_fadd_2s_2s_2s(TySF);
   2965    if (1) test_fsub_2d_2d_2d(TyDF);
   2966    if (1) test_fsub_4s_4s_4s(TySF);
   2967    if (1) test_fsub_2s_2s_2s(TySF);
   2968 
   2969    // fabd      d,s
   2970    // fabd      2d,4s,2s
   2971    if (1) test_fabd_d_d_d(TyDF);
   2972    if (1) test_fabd_s_s_s(TySF);
   2973    if (1) test_fabd_2d_2d_2d(TyDF);
   2974    if (1) test_fabd_4s_4s_4s(TySF);
   2975    if (1) test_fabd_2s_2s_2s(TySF);
   2976 
   2977    // faddp     d,s (floating add pair)
   2978    // faddp     2d,4s,2s
   2979 
   2980    // fccmp     d,s (floating point conditional quiet compare)
   2981    // fccmpe    d,s (floating point conditional signaling compare)
   2982 
   2983    // fcmeq     d,s
   2984    // fcmge     d,s
   2985    // fcmgt     d,s
   2986    // facgt     d,s  (floating abs compare GE)
   2987    // facge     d,s  (floating abs compare GE)
   2988 
   2989    // fcmeq     2d,4s,2s
   2990    // fcmge     2d,4s,2s
   2991    // fcmgt     2d,4s,2s
   2992    // facge     2d,4s,2s
   2993    // facgt     2d,4s,2s
   2994    if (1) test_fcmeq_2d_2d_2d(TyDF);
   2995    if (1) test_fcmeq_4s_4s_4s(TySF);
   2996    if (1) test_fcmeq_2s_2s_2s(TySF);
   2997    if (1) test_fcmge_2d_2d_2d(TyDF);
   2998    if (1) test_fcmge_4s_4s_4s(TySF);
   2999    if (1) test_fcmge_2s_2s_2s(TySF);
   3000    if (1) test_fcmgt_2d_2d_2d(TyDF);
   3001    if (1) test_fcmgt_4s_4s_4s(TySF);
   3002    if (1) test_fcmgt_2s_2s_2s(TySF);
   3003    if (1) test_facge_2d_2d_2d(TyDF);
   3004    if (1) test_facge_4s_4s_4s(TySF);
   3005    if (1) test_facge_2s_2s_2s(TySF);
   3006    if (1) test_facgt_2d_2d_2d(TyDF);
   3007    if (1) test_facgt_4s_4s_4s(TySF);
   3008    if (1) test_facgt_2s_2s_2s(TySF);
   3009 
   3010    // fcmeq_z   d,s
   3011    // fcmge_z   d,s
   3012    // fcmgt_z   d,s
   3013    // fcmle_z   d,s
   3014    // fcmlt_z   d,s
   3015 
   3016    // fcmeq_z   2d,4s,2s
   3017    // fcmge_z   2d,4s,2s
   3018    // fcmgt_z   2d,4s,2s
   3019    // fcmle_z   2d,4s,2s
   3020    // fcmlt_z   2d,4s,2s
   3021 
   3022    // fcmp_z    d,s
   3023    // fcmpe_z   d,s
   3024    // fcmp      d,s (floating point quiet, set flags)
   3025    // fcmpe     d,s (floating point signaling, set flags)
   3026 
   3027    // fcsel     d,s (fp cond select)
   3028 
   3029    // fdiv      d,s
   3030    // fdiv      2d,4s,2s
   3031    if (1) test_fdiv_d_d_d(TyDF);
   3032    if (1) test_fdiv_s_s_s(TySF);
   3033    if (1) test_fdiv_2d_2d_2d(TyDF);
   3034    if (1) test_fdiv_4s_4s_4s(TySF);
   3035    if (1) test_fdiv_2s_2s_2s(TySF);
   3036 
   3037    // fmadd     d,s
   3038    // fnmadd    d,s
   3039    // fmsub     d,s
   3040    // fnmsub    d,s
   3041 
   3042    // fnmul     d,s
   3043    if (1) test_fnmul_d_d_d(TyDF);
   3044    if (1) test_fnmul_s_s_s(TySF);
   3045 
   3046    // fmax      d,s
   3047    // fmin      d,s
   3048    // fmaxnm    d,s ("max number")
   3049    // fminnm    d,s
   3050 
   3051    // fmax      2d,4s,2s
   3052    // fmin      2d,4s,2s
   3053    // fmaxnm    2d,4s,2s
   3054    // fminnm    2d,4s,2s
   3055 
   3056    // fmaxnmp   d_2d,s_2s ("max number pairwise")
   3057    // fminnmp   d_2d,s_2s
   3058 
   3059    // fmaxnmp   2d,4s,2s
   3060    // fminnmp   2d,4s,2s
   3061 
   3062    // fmaxnmv   s_4s (maxnum across vector)
   3063    // fminnmv   s_4s
   3064 
   3065    // fmaxp     d_2d,s_2s (max of a pair)
   3066    // fminp     d_2d,s_2s (max of a pair)
   3067 
   3068    // fmaxp     2d,4s,2s  (max pairwise)
   3069    // fminp     2d,4s,2s
   3070 
   3071    // fmaxv     s_4s (max across vector)
   3072    // fminv     s_4s
   3073 
   3074    // fmla      2d,4s,2s
   3075    // fmls      2d,4s,2s
   3076    if (1) test_fmla_2d_2d_2d(TyDF);
   3077    if (1) test_fmla_4s_4s_4s(TySF);
   3078    if (1) test_fmla_2s_2s_2s(TySF);
   3079    if (1) test_fmls_2d_2d_2d(TyDF);
   3080    if (1) test_fmls_4s_4s_4s(TySF);
   3081    if (1) test_fmls_2s_2s_2s(TySF);
   3082 
   3083    // fmla      d_d_d[],s_s_s[] (by element)
   3084    // fmls      d_d_d[],s_s_s[] (by element)
   3085 
   3086    // fmla      2d_2d_d[],4s_4s_s[],2s_2s_s[]
   3087    // fmls      2d_2d_d[],4s_4s_s[],2s_2s_s[]
   3088 
   3089    // fmov      2d,4s,2s #imm (part of the MOVI/MVNI/ORR/BIC imm group)
   3090    // INCOMPLETE
   3091    if (1) test_fmov_2d_imm_01(TyD);
   3092    if (1) test_fmov_2d_imm_02(TyD);
   3093    if (1) test_fmov_2d_imm_03(TyD);
   3094    if (0) test_fmov_4s_imm_01(TyS);
   3095    if (0) test_fmov_4s_imm_02(TyS);
   3096    if (0) test_fmov_4s_imm_03(TyS);
   3097    if (0) test_fmov_2s_imm_01(TyS);
   3098    if (0) test_fmov_2s_imm_02(TyS);
   3099    if (0) test_fmov_2s_imm_03(TyS);
   3100 
   3101    // fmov      d_d,s_s
   3102    if (1) test_fmov_d_d(TyDF);
   3103    if (1) test_fmov_s_s(TySF);
   3104 
   3105    // fmov      s_w,w_s,d_x,d[1]_x,x_d,x_d[1]
   3106    if (1) test_fmov_s_w(TyS);
   3107    if (1) test_fmov_d_x(TyD);
   3108    if (1) test_fmov_d1_x(TyD);
   3109    if (1) test_fmov_w_s(TyS);
   3110    if (1) test_fmov_x_d(TyD);
   3111    if (1) test_fmov_x_d1(TyD);
   3112 
   3113    // fmov      d,s #imm
   3114    if (1) test_fmov_d_imm_01(TyNONE);
   3115    if (1) test_fmov_d_imm_02(TyNONE);
   3116    if (1) test_fmov_d_imm_03(TyNONE);
   3117    if (1) test_fmov_s_imm_01(TyNONE);
   3118    if (1) test_fmov_s_imm_02(TyNONE);
   3119    if (1) test_fmov_s_imm_03(TyNONE);
   3120 
   3121    // fmul      d_d_d[],s_s_s[]
   3122    // fmul      2d_2d_d[],4s_4s_s[],2s_2s_s[]
   3123 
   3124    // fmul      2d,4s,2s
   3125    // fmul      d,s
   3126    if (1) test_fmul_d_d_d(TyDF);
   3127    if (1) test_fmul_s_s_s(TySF);
   3128    if (1) test_fmul_2d_2d_2d(TyDF);
   3129    if (1) test_fmul_4s_4s_4s(TySF);
   3130    if (1) test_fmul_2s_2s_2s(TySF);
   3131 
   3132    // fmulx     d_d_d[],s_s_s[]
   3133    // fmulx     2d_2d_d[],4s_4s_s[],2s_2s_s[]
   3134 
   3135    // fmulx     d,s
   3136    // fmulx     2d,4s,2s
   3137 
   3138    // frecpe    d,s (recip estimate)
   3139    // frecpe    2d,4s,2s
   3140 
   3141    // frecps    d,s (recip step)
   3142    // frecps    2d,4s,2s
   3143 
   3144    // frecpx    d,s (recip exponent)
   3145 
   3146    // frinta    d,s
   3147    // frinti    d,s
   3148    // frintm    d,s
   3149    // frintn    d,s
   3150    // frintp    d,s
   3151    // frintx    d,s
   3152    // frintz    d,s
   3153 
   3154    // frinta    2d,4s,2s (round to integral, nearest away)
   3155    // frinti    2d,4s,2s (round to integral, per FPCR)
   3156    // frintm    2d,4s,2s (round to integral, minus inf)
   3157    // frintn    2d,4s,2s (round to integral, nearest, to even)
   3158    // frintp    2d,4s,2s (round to integral, plus inf)
   3159    // frintx    2d,4s,2s (round to integral exact, per FPCR)
   3160    // frintz    2d,4s,2s (round to integral, zero)
   3161 
   3162    // frsqrte   d,s (est)
   3163    // frsqrte   2d,4s,2s
   3164 
   3165    // frsqrts   d,s (step)
   3166    // frsqrts   2d,4s,2s
   3167 
   3168    // ======================== CONV ========================
   3169 
   3170    // fcvt      s_h,d_h,h_s,d_s,h_d,s_d (fp convert, scalar)
   3171 
   3172    // fcvtl{2}  4s/4h, 4s/8h, 2d/2s, 2d/4s (float convert to longer form)
   3173 
   3174    // fcvtn{2}  4h/4s, 8h/4s, 2s/2d, 4s/2d (float convert to narrower form)
   3175    // INCOMPLETE
   3176    if (1) test_fcvtn_2s_2d(TyDF);
   3177    if (1) test_fcvtn_4s_2d(TyDF);
   3178 
   3179    // fcvtas    d,s  (fcvt to signed int,   nearest, ties away)
   3180    // fcvtau    d,s  (fcvt to unsigned int, nearest, ties away)
   3181    // fcvtas    2d,4s,2s
   3182    // fcvtau    2d,4s,2s
   3183    // fcvtas    w_s,x_s,w_d,x_d
   3184    // fcvtau    w_s,x_s,w_d,x_d
   3185 
   3186    // fcvtms    d,s  (fcvt to signed int,   minus inf)
   3187    // fcvtmu    d,s  (fcvt to unsigned int, minus inf)
   3188    // fcvtms    2d,4s,2s
   3189    // fcvtmu    2d,4s,2s
   3190    // fcvtms    w_s,x_s,w_d,x_d
   3191    // fcvtmu    w_s,x_s,w_d,x_d
   3192 
   3193    // fcvtns    d,s  (fcvt to signed int,   nearest)
   3194    // fcvtnu    d,s  (fcvt to unsigned int, nearest)
   3195    // fcvtns    2d,4s,2s
   3196    // fcvtnu    2d,4s,2s
   3197    // fcvtns    w_s,x_s,w_d,x_d
   3198    // fcvtnu    w_s,x_s,w_d,x_d
   3199 
   3200    // fcvtps    d,s  (fcvt to signed int,   plus inf)
   3201    // fcvtpu    d,s  (fcvt to unsigned int, plus inf)
   3202    // fcvtps    2d,4s,2s
   3203    // fcvtpu    2d,4s,2s
   3204    // fcvtps    w_s,x_s,w_d,x_d
   3205    // fcvtpu    w_s,x_s,w_d,x_d
   3206 
   3207    // fcvtzs    d,s (fcvt to signed integer,   to zero)
   3208    // fcvtzu    d,s (fcvt to unsigned integer, to zero)
   3209    // fcvtzs    2d,4s,2s
   3210    // fcvtzu    2d,4s,2s
   3211    // fcvtzs    w_s,x_s,w_d,x_d
   3212    // fcvtzu    w_s,x_s,w_d,x_d
   3213 
   3214    // fcvtzs    d,s (fcvt to signed fixedpt,   to zero) (w/ #fbits)
   3215    // fcvtzu    d,s (fcvt to unsigned fixedpt, to zero) (w/ #fbits)
   3216    // fcvtzs    2d,4s,2s
   3217    // fcvtzu    2d,4s,2s
   3218    // fcvtzs    w_s,x_s,w_d,x_d (fcvt to signed fixedpt,   to zero) (w/ #fbits)
   3219    // fcvtzu    w_s,x_s,w_d,x_d (fcvt to unsigned fixedpt, to zero) (w/ #fbits)
   3220 
   3221    // fcvtxn    s_d (fcvt to lower prec narrow, rounding to odd)
   3222    // fcvtxn    2s_2d,4s_2d
   3223 
   3224    // scvtf     d,s        _#fbits
   3225    // ucvtf     d,s        _#fbits
   3226 
   3227    // scvtf     2d,4s,2s   _#fbits
   3228    // ucvtf     2d,4s,2s   _#fbits
   3229 
   3230    // scvtf     d,s
   3231    // ucvtf     d,s
   3232    if (1) test_scvtf_s_s(TyS);
   3233    if (1) test_scvtf_d_d(TyD);
   3234    if (1) test_ucvtf_s_s(TyS);
   3235    if (1) test_ucvtf_d_d(TyD);
   3236 
   3237    // scvtf     2d,4s,2s
   3238    // ucvtf     2d,4s,2s
   3239 
   3240    // scvtf     s_w, d_w, s_x, d_x,   _#fbits
   3241    // ucvtf     s_w, d_w, s_x, d_x,   _#fbits
   3242 
   3243    // scvtf     s_w, d_w, s_x, d_x
   3244    // ucvtf     s_w, d_w, s_x, d_x
   3245    if (1) test_scvtf_s_w(TyS);
   3246    if (1) test_scvtf_d_w(TyS);
   3247    if (1) test_scvtf_s_x(TyD);
   3248    if (1) test_scvtf_d_x(TyD);
   3249    if (1) test_ucvtf_s_w(TyS);
   3250    if (1) test_ucvtf_d_w(TyS);
   3251    if (1) test_ucvtf_s_x(TyD);
   3252    if (1) test_ucvtf_d_x(TyD);
   3253 
   3254    // ======================== INT ========================
   3255 
   3256    // abs       d
   3257    // neg       d
   3258    if (0) test_abs_d_d(TyD);
   3259    if (0) test_neg_d_d(TyD);
   3260 
   3261    // abs       2d,4s,2s,8h,4h,16b,8b
   3262    // neg       2d,4s,2s,8h,4h,16b,8b
   3263    if (0) test_abs_2d_2d(TyD);
   3264    if (0) test_abs_4s_4s(TyS);
   3265    if (0) test_abs_2s_2s(TyS);
   3266    if (0) test_abs_8h_8h(TyH);
   3267    if (0) test_abs_4h_4h(TyH);
   3268    if (0) test_abs_16b_16b(TyB);
   3269    if (0) test_abs_8b_8b(TyB);
   3270    if (1) test_neg_2d_2d(TyD);
   3271    if (1) test_neg_4s_4s(TyS);
   3272    if (1) test_neg_2s_2s(TyS);
   3273    if (1) test_neg_8h_8h(TyH);
   3274    if (1) test_neg_4h_4h(TyH);
   3275    if (1) test_neg_16b_16b(TyB);
   3276    if (1) test_neg_8b_8b(TyB);
   3277 
   3278    // add       d
   3279    // sub       d
   3280    if (1) test_add_d_d_d(TyD);
   3281    if (1) test_sub_d_d_d(TyD);
   3282 
   3283    // add       2d,4s,2s,8h,4h,16b,8b
   3284    // sub       2d,4s,2s,8h,4h,16b,8b
   3285    if (1) test_add_2d_2d_2d(TyD);
   3286    if (1) test_add_4s_4s_4s(TyS);
   3287    if (1) test_add_2s_2s_2s(TyS);
   3288    if (1) test_add_8h_8h_8h(TyH);
   3289    if (1) test_add_4h_4h_4h(TyH);
   3290    if (1) test_add_16b_16b_16b(TyB);
   3291    if (1) test_add_8b_8b_8b(TyB);
   3292    if (1) test_sub_2d_2d_2d(TyD);
   3293    if (1) test_sub_4s_4s_4s(TyS);
   3294    if (1) test_sub_2s_2s_2s(TyS);
   3295    if (1) test_sub_8h_8h_8h(TyH);
   3296    if (1) test_sub_4h_4h_4h(TyH);
   3297    if (1) test_sub_16b_16b_16b(TyB);
   3298    if (1) test_sub_8b_8b_8b(TyB);
   3299 
   3300    // addhn{2}   2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   3301    // subhn{2}   2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   3302    // raddhn{2}  2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   3303    // rsubhn{2}  2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   3304    if (0) test_addhn_2s_2d_2d(TyD);
   3305    if (0) test_addhn2_4s_2d_2d(TyD);
   3306    if (0) test_addhn_4h_4s_4s(TyS);
   3307    if (0) test_addhn2_8h_4s_4s(TyS);
   3308    if (0) test_addhn_8b_8h_8h(TyH);
   3309    if (0) test_addhn2_16b_8h_8h(TyH);
   3310    if (0) test_subhn_2s_2d_2d(TyD);
   3311    if (0) test_subhn2_4s_2d_2d(TyD);
   3312    if (0) test_subhn_4h_4s_4s(TyS);
   3313    if (0) test_subhn2_8h_4s_4s(TyS);
   3314    if (0) test_subhn_8b_8h_8h(TyH);
   3315    if (0) test_subhn2_16b_8h_8h(TyH);
   3316    if (0) test_raddhn_2s_2d_2d(TyD);
   3317    if (0) test_raddhn2_4s_2d_2d(TyD);
   3318    if (0) test_raddhn_4h_4s_4s(TyS);
   3319    if (0) test_raddhn2_8h_4s_4s(TyS);
   3320    if (0) test_raddhn_8b_8h_8h(TyH);
   3321    if (0) test_raddhn2_16b_8h_8h(TyH);
   3322    if (0) test_rsubhn_2s_2d_2d(TyD);
   3323    if (0) test_rsubhn2_4s_2d_2d(TyD);
   3324    if (0) test_rsubhn_4h_4s_4s(TyS);
   3325    if (0) test_rsubhn2_8h_4s_4s(TyS);
   3326    if (0) test_rsubhn_8b_8h_8h(TyH);
   3327    if (0) test_rsubhn2_16b_8h_8h(TyH);
   3328 
   3329    // addp     d (add pairs, across)
   3330    if (0) test_addp_d_2d(TyD);
   3331 
   3332    // addp     2d,4s,2s,8h,4h,16b,8b
   3333    if (0) test_addp_2d_2d_2d(TyD);
   3334    if (0) test_addp_4s_4s_4s(TyS);
   3335    if (0) test_addp_2s_2s_2s(TyS);
   3336    if (0) test_addp_8h_8h_8h(TyH);
   3337    if (0) test_addp_4h_4h_4h(TyH);
   3338    if (0) test_addp_16b_16b_16b(TyB);
   3339    if (0) test_addp_8b_8b_8b(TyB);
   3340 
   3341    // addv     4s,8h,4h,16b,18b (reduce across vector)
   3342    if (0) test_addv_s_4s(TyS);
   3343    if (0) test_addv_h_8h(TyH);
   3344    if (0) test_addv_h_4h(TyH);
   3345    if (0) test_addv_b_16b(TyB);
   3346    if (0) test_addv_b_8b(TyB);
   3347 
   3348    // and      16b,8b
   3349    // bic      16b,8b
   3350    // orn      16b,8b
   3351    // orr      16b,8b
   3352    if (1) test_and_16b_16b_16b(TyB);
   3353    if (1) test_and_8b_8b_8b(TyB);
   3354    if (1) test_bic_16b_16b_16b(TyB);
   3355    if (1) test_bic_8b_8b_8b(TyB);
   3356    if (1) test_orr_16b_16b_16b(TyB);
   3357    if (1) test_orr_8b_8b_8b(TyB);
   3358    if (1) test_orn_16b_16b_16b(TyB);
   3359    if (1) test_orn_8b_8b_8b(TyB);
   3360 
   3361    // orr      8h,4h   #imm8, LSL #0 or 8
   3362    // orr      4s,2s   #imm8, LSL #0, 8, 16 or 24
   3363    // bic      8h,4h   #imm8, LSL #0 or 8
   3364    // bic      4s,2s   #imm8, LSL #0, 8, 16 or 24
   3365    // movi and mvni are very similar, a superset of these.
   3366    // Cases are below.
   3367    if (0) test_orr_8h_0x5A_lsl0(TyH);
   3368    if (0) test_orr_8h_0xA5_lsl8(TyH);
   3369    if (0) test_orr_4h_0x5A_lsl0(TyH);
   3370    if (0) test_orr_4h_0xA5_lsl8(TyH);
   3371    if (0) test_orr_4s_0x5A_lsl0(TyS);
   3372    if (0) test_orr_4s_0x6B_lsl8(TyS);
   3373    if (0) test_orr_4s_0x49_lsl16(TyS);
   3374    if (0) test_orr_4s_0x3D_lsl24(TyS);
   3375    if (0) test_orr_2s_0x5A_lsl0(TyS);
   3376    if (0) test_orr_2s_0x6B_lsl8(TyS);
   3377    if (0) test_orr_2s_0x49_lsl16(TyS);
   3378    if (0) test_orr_2s_0x3D_lsl24(TyS);
   3379    if (0) test_bic_8h_0x5A_lsl0(TyH);
   3380    if (0) test_bic_8h_0xA5_lsl8(TyH);
   3381    if (0) test_bic_4h_0x5A_lsl0(TyH);
   3382    if (0) test_bic_4h_0xA5_lsl8(TyH);
   3383    if (0) test_bic_4s_0x5A_lsl0(TyS);
   3384    if (0) test_bic_4s_0x6B_lsl8(TyS);
   3385    if (0) test_bic_4s_0x49_lsl16(TyS);
   3386    if (0) test_bic_4s_0x3D_lsl24(TyS);
   3387    if (0) test_bic_2s_0x5A_lsl0(TyS);
   3388    if (0) test_bic_2s_0x6B_lsl8(TyS);
   3389    if (0) test_bic_2s_0x49_lsl16(TyS);
   3390    if (0) test_bic_2s_0x3D_lsl24(TyS);
   3391 
   3392    // bif      16b,8b (vector) (bit insert if false)
   3393    // bit      16b,8b (vector) (bit insert if true)
   3394    // bsl      16b,8b (vector) (bit select)
   3395    // eor      16b,8b (vector)
   3396    if (1) test_bif_16b_16b_16b(TyB);
   3397    if (1) test_bif_8b_8b_8b(TyB);
   3398    if (1) test_bit_16b_16b_16b(TyB);
   3399    if (1) test_bit_8b_8b_8b(TyB);
   3400    if (1) test_bsl_16b_16b_16b(TyB);
   3401    if (1) test_bsl_8b_8b_8b(TyB);
   3402    if (1) test_eor_16b_16b_16b(TyB);
   3403    if (1) test_eor_8b_8b_8b(TyB);
   3404 
   3405    // cls      4s,2s,8h,4h,16b,8b (count leading sign bits)
   3406    // clz      4s,2s,8h,4h,16b,8b (count leading zero bits)
   3407    if (0) test_cls_4s_4s(TyS);
   3408    if (0) test_cls_2s_2s(TyS);
   3409    if (0) test_cls_8h_8h(TyH);
   3410    if (0) test_cls_4h_4h(TyH);
   3411    if (0) test_cls_16b_16b(TyB);
   3412    if (0) test_cls_8b_8b(TyB);
   3413    if (0) test_clz_4s_4s(TyS);
   3414    if (0) test_clz_2s_2s(TyS);
   3415    if (0) test_clz_8h_8h(TyH);
   3416    if (0) test_clz_4h_4h(TyH);
   3417    if (0) test_clz_16b_16b(TyB);
   3418    if (0) test_clz_8b_8b(TyB);
   3419 
   3420    // cmeq     d
   3421    // cmge     d
   3422    // cmgt     d
   3423    // cmhi     d
   3424    // cmhs     d
   3425    // cmtst    d
   3426    if (0) test_cmeq_d_d_d(TyD);
   3427    if (0) test_cmge_d_d_d(TyD);
   3428    if (0) test_cmgt_d_d_d(TyD);
   3429    if (0) test_cmhi_d_d_d(TyD);
   3430    if (0) test_cmhs_d_d_d(TyD);
   3431    if (0) test_cmtst_d_d_d(TyD);
   3432 
   3433    // cmeq     2d,4s,2s,8h,4h,16b,8b
   3434    // cmge     2d,4s,2s,8h,4h,16b,8b
   3435    // cmgt     2d,4s,2s,8h,4h,16b,8b
   3436    // cmhi     2d,4s,2s,8h,4h,16b,8b
   3437    // cmhs     2d,4s,2s,8h,4h,16b,8b
   3438    // cmtst    2d,4s,2s,8h,4h,16b,8b
   3439    if (1) test_cmeq_2d_2d_2d(TyD);
   3440    if (1) test_cmeq_4s_4s_4s(TyS);
   3441    if (1) test_cmeq_2s_2s_2s(TyS);
   3442    if (1) test_cmeq_8h_8h_8h(TyH);
   3443    if (1) test_cmeq_4h_4h_4h(TyH);
   3444    if (1) test_cmeq_16b_16b_16b(TyB);
   3445    if (1) test_cmeq_8b_8b_8b(TyB);
   3446    if (1) test_cmge_2d_2d_2d(TyD);
   3447    if (1) test_cmge_4s_4s_4s(TyS);
   3448    if (1) test_cmge_2s_2s_2s(TyS);
   3449    if (1) test_cmge_8h_8h_8h(TyH);
   3450    if (1) test_cmge_4h_4h_4h(TyH);
   3451    if (1) test_cmge_16b_16b_16b(TyB);
   3452    if (1) test_cmge_8b_8b_8b(TyB);
   3453    if (1) test_cmgt_2d_2d_2d(TyD);
   3454    if (1) test_cmgt_4s_4s_4s(TyS);
   3455    if (1) test_cmgt_2s_2s_2s(TyS);
   3456    if (1) test_cmgt_8h_8h_8h(TyH);
   3457    if (1) test_cmgt_4h_4h_4h(TyH);
   3458    if (1) test_cmgt_16b_16b_16b(TyB);
   3459    if (1) test_cmgt_8b_8b_8b(TyB);
   3460    if (1) test_cmhi_2d_2d_2d(TyD);
   3461    if (1) test_cmhi_4s_4s_4s(TyS);
   3462    if (1) test_cmhi_2s_2s_2s(TyS);
   3463    if (1) test_cmhi_8h_8h_8h(TyH);
   3464    if (1) test_cmhi_4h_4h_4h(TyH);
   3465    if (1) test_cmhi_16b_16b_16b(TyB);
   3466    if (1) test_cmhi_8b_8b_8b(TyB);
   3467    if (1) test_cmhs_2d_2d_2d(TyD);
   3468    if (1) test_cmhs_4s_4s_4s(TyS);
   3469    if (1) test_cmhs_2s_2s_2s(TyS);
   3470    if (1) test_cmhs_8h_8h_8h(TyH);
   3471    if (1) test_cmhs_4h_4h_4h(TyH);
   3472    if (1) test_cmhs_16b_16b_16b(TyB);
   3473    if (1) test_cmhs_8b_8b_8b(TyB);
   3474    if (1) test_cmtst_2d_2d_2d(TyD);
   3475    if (1) test_cmtst_4s_4s_4s(TyS);
   3476    if (1) test_cmtst_2s_2s_2s(TyS);
   3477    if (1) test_cmtst_8h_8h_8h(TyH);
   3478    if (1) test_cmtst_4h_4h_4h(TyH);
   3479    if (1) test_cmtst_16b_16b_16b(TyB);
   3480    if (1) test_cmtst_8b_8b_8b(TyB);
   3481 
   3482    // cmeq_z   d
   3483    // cmge_z   d
   3484    // cmgt_z   d
   3485    // cmle_z   d
   3486    // cmlt_z   d
   3487    if (1) test_cmeq_zero_d_d(TyD);
   3488    if (0) test_cmge_zero_d_d(TyD);
   3489    if (0) test_cmgt_zero_d_d(TyD);
   3490    if (0) test_cmle_zero_d_d(TyD);
   3491    if (0) test_cmlt_zero_d_d(TyD);
   3492 
   3493    // cmeq_z   2d,4s,2s,8h,4h,16b,8b
   3494    // cmge_z   2d,4s,2s,8h,4h,16b,8b
   3495    // cmgt_z   2d,4s,2s,8h,4h,16b,8b
   3496    // cmle_z   2d,4s,2s,8h,4h,16b,8b
   3497    // cmlt_z   2d,4s,2s,8h,4h,16b,8b
   3498    if (1) test_cmeq_zero_2d_2d(TyD);
   3499    if (1) test_cmeq_zero_4s_4s(TyS);
   3500    if (1) test_cmeq_zero_2s_2s(TyS);
   3501    if (1) test_cmeq_zero_8h_8h(TyH);
   3502    if (1) test_cmeq_zero_4h_4h(TyH);
   3503    if (1) test_cmeq_zero_16b_16b(TyB);
   3504    if (1) test_cmeq_zero_8b_8b(TyB);
   3505    if (1) test_cmge_zero_2d_2d(TyD);
   3506    if (1) test_cmge_zero_4s_4s(TyS);
   3507    if (1) test_cmge_zero_2s_2s(TyS);
   3508    if (1) test_cmge_zero_8h_8h(TyH);
   3509    if (1) test_cmge_zero_4h_4h(TyH);
   3510    if (1) test_cmge_zero_16b_16b(TyB);
   3511    if (1) test_cmge_zero_8b_8b(TyB);
   3512    if (1) test_cmgt_zero_2d_2d(TyD);
   3513    if (1) test_cmgt_zero_4s_4s(TyS);
   3514    if (1) test_cmgt_zero_2s_2s(TyS);
   3515    if (1) test_cmgt_zero_8h_8h(TyH);
   3516    if (1) test_cmgt_zero_4h_4h(TyH);
   3517    if (1) test_cmgt_zero_16b_16b(TyB);
   3518    if (1) test_cmgt_zero_8b_8b(TyB);
   3519    if (1) test_cmle_zero_2d_2d(TyD);
   3520    if (1) test_cmle_zero_4s_4s(TyS);
   3521    if (1) test_cmle_zero_2s_2s(TyS);
   3522    if (1) test_cmle_zero_8h_8h(TyH);
   3523    if (1) test_cmle_zero_4h_4h(TyH);
   3524    if (1) test_cmle_zero_16b_16b(TyB);
   3525    if (1) test_cmle_zero_8b_8b(TyB);
   3526    if (1) test_cmlt_zero_2d_2d(TyD);
   3527    if (1) test_cmlt_zero_4s_4s(TyS);
   3528    if (1) test_cmlt_zero_2s_2s(TyS);
   3529    if (1) test_cmlt_zero_8h_8h(TyH);
   3530    if (1) test_cmlt_zero_4h_4h(TyH);
   3531    if (1) test_cmlt_zero_16b_16b(TyB);
   3532    if (1) test_cmlt_zero_8b_8b(TyB);
   3533 
   3534    // cnt      16b,8b (population count per byte)
   3535    if (0) test_cnt_16b_16b(TyB);
   3536    if (0) test_cnt_8b_8b(TyB);
   3537 
   3538    // dup      d,s,h,b (vec elem to scalar)
   3539    if (0) test_dup_d_d0(TyD);
   3540    if (0) test_dup_d_d1(TyD);
   3541    if (0) test_dup_s_s0(TyS);
   3542    if (0) test_dup_s_s3(TyS);
   3543    if (0) test_dup_h_h0(TyH);
   3544    if (0) test_dup_h_h6(TyH);
   3545    if (0) test_dup_b_b0(TyB);
   3546    if (0) test_dup_b_b13(TyB);
   3547 
   3548    // dup      2d,4s,2s,8h,4h,16b,8b (vec elem to vector)
   3549    if (1) test_dup_2d_d0(TyD);
   3550    if (1) test_dup_2d_d1(TyD);
   3551    if (1) test_dup_4s_s0(TyS);
   3552    if (1) test_dup_4s_s3(TyS);
   3553    if (1) test_dup_2s_s0(TyS);
   3554    if (1) test_dup_2s_s2(TyS);
   3555    if (1) test_dup_8h_h0(TyH);
   3556    if (1) test_dup_8h_h6(TyH);
   3557    if (1) test_dup_4h_h1(TyH);
   3558    if (1) test_dup_4h_h5(TyH);
   3559    if (1) test_dup_16b_b2(TyB);
   3560    if (1) test_dup_16b_b12(TyB);
   3561    if (1) test_dup_8b_b3(TyB);
   3562    if (1) test_dup_8b_b13(TyB);
   3563 
   3564    // dup      2d,4s,2s,8h,4h,16b,8b (general reg to vector)
   3565    if (1) test_dup_2d_x(TyD);
   3566    if (1) test_dup_4s_w(TyS);
   3567    if (1) test_dup_2s_w(TyS);
   3568    if (1) test_dup_8h_w(TyH);
   3569    if (1) test_dup_4h_w(TyH);
   3570    if (1) test_dup_16b_w(TyB);
   3571    if (1) test_dup_8b_w(TyB);
   3572 
   3573    // ext      16b,8b,#imm4 (concat 2 vectors, then slice)
   3574    if (0) test_ext_16b_16b_16b_0x0(TyB);
   3575    if (0) test_ext_16b_16b_16b_0x7(TyB);
   3576    if (0) test_ext_16b_16b_16b_0x8(TyB);
   3577    if (0) test_ext_16b_16b_16b_0x9(TyB);
   3578    if (0) test_ext_16b_16b_16b_0xF(TyB);
   3579    if (0) test_ext_8b_8b_8b_0x0(TyB);
   3580    if (0) test_ext_8b_8b_8b_0x1(TyB);
   3581    if (0) test_ext_8b_8b_8b_0x6(TyB);
   3582    if (0) test_ext_8b_8b_8b_0x7(TyB);
   3583 
   3584    // ins      d[]_d[],s[]_s[],h[]_h[],b[]_b[]
   3585    if (0) test_ins_d0_d0(TyD);
   3586    if (0) test_ins_d0_d1(TyD);
   3587    if (0) test_ins_d1_d0(TyD);
   3588    if (0) test_ins_d1_d1(TyD);
   3589    if (0) test_ins_s0_s2(TyS);
   3590    if (0) test_ins_s3_s0(TyS);
   3591    if (0) test_ins_s2_s1(TyS);
   3592    if (0) test_ins_s1_s3(TyS);
   3593    if (0) test_ins_h0_h6(TyH);
   3594    if (0) test_ins_h7_h0(TyH);
   3595    if (0) test_ins_h6_h1(TyH);
   3596    if (0) test_ins_h1_h7(TyH);
   3597    if (1) test_ins_b0_b14(TyB);
   3598    if (1) test_ins_b15_b8(TyB);
   3599    if (1) test_ins_b13_b9(TyB);
   3600    if (1) test_ins_b5_b12(TyB);
   3601 
   3602    // ins      d[]_x, s[]_w, h[]_w, b[]_w
   3603    if (1) test_INS_general();
   3604 
   3605    // mla   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   3606    // mls   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   3607    // mul   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   3608    if (0) test_mla_4s_4s_s0(TyS);
   3609    if (0) test_mla_4s_4s_s3(TyS);
   3610    if (0) test_mla_2s_2s_s0(TyS);
   3611    if (0) test_mla_2s_2s_s3(TyS);
   3612    if (0) test_mla_8h_8h_h1(TyH);
   3613    if (0) test_mla_8h_8h_h5(TyH);
   3614    if (0) test_mla_4h_4h_h2(TyH);
   3615    if (0) test_mla_4h_4h_h7(TyH);
   3616    if (0) test_mls_4s_4s_s0(TyS);
   3617    if (0) test_mls_4s_4s_s3(TyS);
   3618    if (0) test_mls_2s_2s_s0(TyS);
   3619    if (0) test_mls_2s_2s_s3(TyS);
   3620    if (0) test_mls_8h_8h_h1(TyH);
   3621    if (0) test_mls_8h_8h_h5(TyH);
   3622    if (0) test_mls_4h_4h_h2(TyH);
   3623    if (0) test_mls_4h_4h_h7(TyH);
   3624    if (0) test_mul_4s_4s_s0(TyS);
   3625    if (0) test_mul_4s_4s_s3(TyS);
   3626    if (0) test_mul_2s_2s_s0(TyS);
   3627    if (0) test_mul_2s_2s_s3(TyS);
   3628    if (0) test_mul_8h_8h_h1(TyH);
   3629    if (0) test_mul_8h_8h_h5(TyH);
   3630    if (0) test_mul_4h_4h_h2(TyH);
   3631    if (0) test_mul_4h_4h_h7(TyH);
   3632 
   3633    // mla   4s,2s,8h,4h,16b,8b
   3634    // mls   4s,2s,8h,4h,16b,8b
   3635    // mul   4s,2s,8h,4h,16b,8b
   3636    if (1) test_mla_4s_4s_4s(TyS);
   3637    if (1) test_mla_2s_2s_2s(TyS);
   3638    if (1) test_mla_8h_8h_8h(TyH);
   3639    if (1) test_mla_4h_4h_4h(TyH);
   3640    if (1) test_mla_16b_16b_16b(TyB);
   3641    if (1) test_mla_8b_8b_8b(TyB);
   3642    if (1) test_mls_4s_4s_4s(TyS);
   3643    if (1) test_mls_2s_2s_2s(TyS);
   3644    if (1) test_mls_8h_8h_8h(TyH);
   3645    if (1) test_mls_4h_4h_4h(TyH);
   3646    if (1) test_mls_16b_16b_16b(TyB);
   3647    if (1) test_mls_8b_8b_8b(TyB);
   3648    if (1) test_mul_4s_4s_4s(TyS);
   3649    if (1) test_mul_2s_2s_2s(TyS);
   3650    if (1) test_mul_8h_8h_8h(TyH);
   3651    if (1) test_mul_4h_4h_4h(TyH);
   3652    if (1) test_mul_16b_16b_16b(TyB);
   3653    if (1) test_mul_8b_8b_8b(TyB);
   3654 
   3655    // Some of these movi and mvni cases are similar to orr and bic
   3656    // cases with immediates.  Maybe they should be moved together.
   3657    // movi  16b,8b   #imm8, LSL #0
   3658    if (0) test_movi_16b_0x9C_lsl0(TyB);
   3659    if (0) test_movi_8b_0x8B_lsl0(TyB);
   3660 
   3661    // movi  8h,4h    #imm8, LSL #0 or 8
   3662    // mvni  8h,4h    #imm8, LSL #0 or 8
   3663    if (0) test_movi_8h_0x5A_lsl0(TyH);
   3664    if (0) test_movi_8h_0xA5_lsl8(TyH);
   3665    if (0) test_movi_4h_0x5A_lsl0(TyH);
   3666    if (0) test_movi_4h_0xA5_lsl8(TyH);
   3667    if (0) test_mvni_8h_0x5A_lsl0(TyH);
   3668    if (0) test_mvni_8h_0xA5_lsl8(TyH);
   3669    if (0) test_mvni_4h_0x5A_lsl0(TyH);
   3670    if (0) test_mvni_4h_0xA5_lsl8(TyH);
   3671 
   3672    // movi  4s,2s    #imm8, LSL #0, 8, 16, 24
   3673    // mvni  4s,2s    #imm8, LSL #0, 8, 16, 24
   3674    if (1) test_movi_4s_0x5A_lsl0(TyS);
   3675    if (0) test_movi_4s_0x6B_lsl8(TyS);
   3676    if (0) test_movi_4s_0x49_lsl16(TyS);
   3677    if (0) test_movi_4s_0x3D_lsl24(TyS);
   3678    if (0) test_movi_2s_0x5A_lsl0(TyS);
   3679    if (0) test_movi_2s_0x6B_lsl8(TyS);
   3680    if (0) test_movi_2s_0x49_lsl16(TyS);
   3681    if (0) test_movi_2s_0x3D_lsl24(TyS);
   3682    if (0) test_mvni_4s_0x5A_lsl0(TyS);
   3683    if (0) test_mvni_4s_0x6B_lsl8(TyS);
   3684    if (0) test_mvni_4s_0x49_lsl16(TyS);
   3685    if (0) test_mvni_4s_0x3D_lsl24(TyS);
   3686    if (0) test_mvni_2s_0x5A_lsl0(TyS);
   3687    if (0) test_mvni_2s_0x6B_lsl8(TyS);
   3688    if (0) test_mvni_2s_0x49_lsl16(TyS);
   3689    if (0) test_mvni_2s_0x3D_lsl24(TyS);
   3690 
   3691    // movi  4s,2s    #imm8, MSL #8 or 16
   3692    // mvni  4s,2s    #imm8, MSL #8 or 16
   3693    if (0) test_movi_4s_0x6B_msl8(TyS);
   3694    if (0) test_movi_4s_0x94_msl16(TyS);
   3695    if (0) test_movi_2s_0x7A_msl8(TyS);
   3696    if (0) test_movi_2s_0xA5_msl16(TyS);
   3697    if (0) test_mvni_4s_0x6B_msl8(TyS);
   3698    if (0) test_mvni_4s_0x94_msl16(TyS);
   3699    if (0) test_mvni_2s_0x7A_msl8(TyS);
   3700    if (0) test_mvni_2s_0xA5_msl16(TyS);
   3701 
   3702    // movi  d,       #imm64
   3703    // movi  2d,      #imm64
   3704    if (0) test_movi_d_0xA5(TyD);
   3705    if (0) test_movi_2d_0xB4(TyD);
   3706 
   3707    // not   16b,8b
   3708    if (0) test_not_16b_16b(TyB);
   3709    if (0) test_not_8b_8b(TyB);
   3710 
   3711    // pmul  16b,8b
   3712    if (0) test_pmul_16b_16b_16b(TyB);
   3713    if (0) test_pmul_8b_8b_8b(TyB);
   3714 
   3715    // pmull{2}  8h_8b_8b,8h_16b_16b,1q_1d_1d,1q_2d_2d
   3716    if (0) test_pmull_8h_8b_8b(TyB);
   3717    if (0) test_pmull2_8h_16b_16b(TyB);
   3718    //if (0) test_pmull_1q_1d_1d(TyD);
   3719    //if (0) test_pmull_1q_2d_2d(TyD);
   3720 
   3721    // rbit    16b,8b
   3722    // rev16   16b,8b
   3723    // rev32   16b,8b,8h,4h
   3724    // rev64   16b,8b,8h,4h,4s,2s
   3725    if (0) test_rbit_16b_16b(TyB);
   3726    if (0) test_rbit_8b_8b(TyB);
   3727    if (0) test_rev16_16b_16b(TyB);
   3728    if (0) test_rev16_8b_8b(TyB);
   3729    if (0) test_rev32_16b_16b(TyB);
   3730    if (0) test_rev32_8b_8b(TyB);
   3731    if (0) test_rev32_8h_8h(TyH);
   3732    if (0) test_rev32_4h_4h(TyH);
   3733    if (0) test_rev64_16b_16b(TyB);
   3734    if (0) test_rev64_8b_8b(TyB);
   3735    if (0) test_rev64_8h_8h(TyH);
   3736    if (0) test_rev64_4h_4h(TyH);
   3737    if (0) test_rev64_4s_4s(TyS);
   3738    if (0) test_rev64_2s_2s(TyS);
   3739 
   3740    // saba      16b,8b,8h,4h,4s,2s
   3741    // uaba      16b,8b,8h,4h,4s,2s
   3742    if (0) test_saba_4s_4s_4s(TyS);
   3743    if (0) test_saba_2s_2s_2s(TyS);
   3744    if (0) test_saba_8h_8h_8h(TyH);
   3745    if (0) test_saba_4h_4h_4h(TyH);
   3746    if (0) test_saba_16b_16b_16b(TyB);
   3747    if (0) test_saba_8b_8b_8b(TyB);
   3748    if (0) test_uaba_4s_4s_4s(TyS);
   3749    if (0) test_uaba_2s_2s_2s(TyS);
   3750    if (0) test_uaba_8h_8h_8h(TyH);
   3751    if (0) test_uaba_4h_4h_4h(TyH);
   3752    if (0) test_uaba_16b_16b_16b(TyB);
   3753    if (0) test_uaba_8b_8b_8b(TyB);
   3754 
   3755    // sabal{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   3756    // uabal{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   3757    if (0) test_sabal_2d_2s_2s(TyS);
   3758    if (0) test_sabal2_2d_4s_4s(TyS);
   3759    if (0) test_sabal_4s_4h_4h(TyH);
   3760    if (0) test_sabal2_4s_8h_8h(TyH);
   3761    if (0) test_sabal_8h_8b_8b(TyB);
   3762    if (0) test_sabal2_8h_16b_16b(TyB);
   3763    if (0) test_uabal_2d_2s_2s(TyS);
   3764    if (0) test_uabal2_2d_4s_4s(TyS);
   3765    if (0) test_uabal_4s_4h_4h(TyH);
   3766    if (0) test_uabal2_4s_8h_8h(TyH);
   3767    if (0) test_uabal_8h_8b_8b(TyB);
   3768    if (0) test_uabal2_8h_16b_16b(TyB);
   3769 
   3770    // sabd      16b,8b,8h,4h,4s,2s
   3771    // uabd      16b,8b,8h,4h,4s,2s
   3772    if (0) test_sabd_4s_4s_4s(TyS);
   3773    if (0) test_sabd_2s_2s_2s(TyS);
   3774    if (0) test_sabd_8h_8h_8h(TyH);
   3775    if (0) test_sabd_4h_4h_4h(TyH);
   3776    if (0) test_sabd_16b_16b_16b(TyB);
   3777    if (0) test_sabd_8b_8b_8b(TyB);
   3778    if (0) test_uabd_4s_4s_4s(TyS);
   3779    if (0) test_uabd_2s_2s_2s(TyS);
   3780    if (0) test_uabd_8h_8h_8h(TyH);
   3781    if (0) test_uabd_4h_4h_4h(TyH);
   3782    if (0) test_uabd_16b_16b_16b(TyB);
   3783    if (0) test_uabd_8b_8b_8b(TyB);
   3784 
   3785    // sabdl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   3786    // uabdl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   3787    if (0) test_sabdl_2d_2s_2s(TyS);
   3788    if (0) test_sabdl2_2d_4s_4s(TyS);
   3789    if (0) test_sabdl_4s_4h_4h(TyH);
   3790    if (0) test_sabdl2_4s_8h_8h(TyH);
   3791    if (0) test_sabdl_8h_8b_8b(TyB);
   3792    if (0) test_sabdl2_8h_16b_16b(TyB);
   3793    if (0) test_uabdl_2d_2s_2s(TyS);
   3794    if (0) test_uabdl2_2d_4s_4s(TyS);
   3795    if (0) test_uabdl_4s_4h_4h(TyH);
   3796    if (0) test_uabdl2_4s_8h_8h(TyH);
   3797    if (0) test_uabdl_8h_8b_8b(TyB);
   3798    if (0) test_uabdl2_8h_16b_16b(TyB);
   3799 
   3800    // sadalp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   3801    // uadalp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   3802    if (0) test_sadalp_1d_2s(TyS);
   3803    if (0) test_sadalp_2d_4s(TyS);
   3804    if (0) test_sadalp_2s_4h(TyH);
   3805    if (0) test_sadalp_4s_8h(TyH);
   3806    if (0) test_sadalp_4h_8b(TyB);
   3807    if (0) test_sadalp_8h_16b(TyB);
   3808    if (0) test_uadalp_1d_2s(TyS);
   3809    if (0) test_uadalp_2d_4s(TyS);
   3810    if (0) test_uadalp_2s_4h(TyH);
   3811    if (0) test_uadalp_4s_8h(TyH);
   3812    if (0) test_uadalp_4h_8b(TyB);
   3813    if (0) test_uadalp_8h_16b(TyB);
   3814 
   3815    // saddl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   3816    // uaddl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   3817    // ssubl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   3818    // usubl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   3819    if (0) test_saddl_2d_2s_2s(TyS);
   3820    if (0) test_saddl2_2d_4s_4s(TyS);
   3821    if (0) test_saddl_4s_4h_4h(TyH);
   3822    if (0) test_saddl2_4s_8h_8h(TyH);
   3823    if (0) test_saddl_8h_8b_8b(TyB);
   3824    if (0) test_saddl2_8h_16b_16b(TyB);
   3825    if (0) test_uaddl_2d_2s_2s(TyS);
   3826    if (0) test_uaddl2_2d_4s_4s(TyS);
   3827    if (0) test_uaddl_4s_4h_4h(TyH);
   3828    if (0) test_uaddl2_4s_8h_8h(TyH);
   3829    if (0) test_uaddl_8h_8b_8b(TyB);
   3830    if (0) test_uaddl2_8h_16b_16b(TyB);
   3831    if (0) test_ssubl_2d_2s_2s(TyS);
   3832    if (0) test_ssubl2_2d_4s_4s(TyS);
   3833    if (0) test_ssubl_4s_4h_4h(TyH);
   3834    if (0) test_ssubl2_4s_8h_8h(TyH);
   3835    if (0) test_ssubl_8h_8b_8b(TyB);
   3836    if (0) test_ssubl2_8h_16b_16b(TyB);
   3837    if (0) test_usubl_2d_2s_2s(TyS);
   3838    if (0) test_usubl2_2d_4s_4s(TyS);
   3839    if (0) test_usubl_4s_4h_4h(TyH);
   3840    if (0) test_usubl2_4s_8h_8h(TyH);
   3841    if (0) test_usubl_8h_8b_8b(TyB);
   3842    if (0) test_usubl2_8h_16b_16b(TyB);
   3843 
   3844    // saddlp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   3845    // uaddlp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   3846    if (0) test_saddlp_1d_2s(TyS);
   3847    if (0) test_saddlp_2d_4s(TyS);
   3848    if (0) test_saddlp_2s_4h(TyH);
   3849    if (0) test_saddlp_4s_8h(TyH);
   3850    if (0) test_saddlp_4h_8b(TyB);
   3851    if (0) test_saddlp_8h_16b(TyB);
   3852    if (0) test_uaddlp_1d_2s(TyS);
   3853    if (0) test_uaddlp_2d_4s(TyS);
   3854    if (0) test_uaddlp_2s_4h(TyH);
   3855    if (0) test_uaddlp_4s_8h(TyH);
   3856    if (0) test_uaddlp_4h_8b(TyB);
   3857    if (0) test_uaddlp_8h_16b(TyB);
   3858 
   3859    // saddlv    h_16b/8b, s_8h/4h, d_4s
   3860    // uaddlv    h_16b/8b, s_8h/4h, d_4s
   3861    if (0) test_saddlv_h_16b(TyB);
   3862    if (0) test_saddlv_h_8b(TyB);
   3863    if (0) test_saddlv_s_8h(TyH);
   3864    if (0) test_saddlv_s_4h(TyH);
   3865    if (0) test_saddlv_d_4s(TyH);
   3866    if (0) test_uaddlv_h_16b(TyB);
   3867    if (0) test_uaddlv_h_8b(TyB);
   3868    if (0) test_uaddlv_s_8h(TyH);
   3869    if (0) test_uaddlv_s_4h(TyH);
   3870    if (0) test_uaddlv_d_4s(TyH);
   3871 
   3872    // saddw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_4s/2s
   3873    // uaddw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_4s/2s
   3874    // ssubw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_4s/2s
   3875    // usubw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_4s/2s
   3876    if (0) test_saddw2_8h_8h_16b(TyB);
   3877    if (0) test_saddw_8h_8h_8b(TyB);
   3878    if (0) test_saddw2_4s_4s_8h(TyH);
   3879    if (0) test_saddw_4s_4s_4h(TyH);
   3880    if (0) test_saddw2_2d_2d_4s(TyS);
   3881    if (0) test_saddw_2d_2d_2s(TyS);
   3882    if (0) test_uaddw2_8h_8h_16b(TyB);
   3883    if (0) test_uaddw_8h_8h_8b(TyB);
   3884    if (0) test_uaddw2_4s_4s_8h(TyH);
   3885    if (0) test_uaddw_4s_4s_4h(TyH);
   3886    if (0) test_uaddw2_2d_2d_4s(TyS);
   3887    if (0) test_uaddw_2d_2d_2s(TyS);
   3888    if (0) test_ssubw2_8h_8h_16b(TyB);
   3889    if (0) test_ssubw_8h_8h_8b(TyB);
   3890    if (0) test_ssubw2_4s_4s_8h(TyH);
   3891    if (0) test_ssubw_4s_4s_4h(TyH);
   3892    if (0) test_ssubw2_2d_2d_4s(TyS);
   3893    if (0) test_ssubw_2d_2d_2s(TyS);
   3894    if (0) test_usubw2_8h_8h_16b(TyB);
   3895    if (0) test_usubw_8h_8h_8b(TyB);
   3896    if (0) test_usubw2_4s_4s_8h(TyH);
   3897    if (0) test_usubw_4s_4s_4h(TyH);
   3898    if (0) test_usubw2_2d_2d_4s(TyS);
   3899    if (0) test_usubw_2d_2d_2s(TyS);
   3900 
   3901    // shadd        16b,8b,8h,4h,4s,2s
   3902    // uhadd        16b,8b,8h,4h,4s,2s
   3903    // shsub        16b,8b,8h,4h,4s,2s
   3904    // uhsub        16b,8b,8h,4h,4s,2s
   3905    if (0) test_shadd_4s_4s_4s(TyS);
   3906    if (0) test_shadd_2s_2s_2s(TyS);
   3907    if (0) test_shadd_8h_8h_8h(TyH);
   3908    if (0) test_shadd_4h_4h_4h(TyH);
   3909    if (0) test_shadd_16b_16b_16b(TyB);
   3910    if (0) test_shadd_8b_8b_8b(TyB);
   3911    if (0) test_uhadd_4s_4s_4s(TyS);
   3912    if (0) test_uhadd_2s_2s_2s(TyS);
   3913    if (0) test_uhadd_8h_8h_8h(TyH);
   3914    if (0) test_uhadd_4h_4h_4h(TyH);
   3915    if (0) test_uhadd_16b_16b_16b(TyB);
   3916    if (0) test_uhadd_8b_8b_8b(TyB);
   3917    if (0) test_shsub_4s_4s_4s(TyS);
   3918    if (0) test_shsub_2s_2s_2s(TyS);
   3919    if (0) test_shsub_8h_8h_8h(TyH);
   3920    if (0) test_shsub_4h_4h_4h(TyH);
   3921    if (0) test_shsub_16b_16b_16b(TyB);
   3922    if (0) test_shsub_8b_8b_8b(TyB);
   3923    if (0) test_uhsub_4s_4s_4s(TyS);
   3924    if (0) test_uhsub_2s_2s_2s(TyS);
   3925    if (0) test_uhsub_8h_8h_8h(TyH);
   3926    if (0) test_uhsub_4h_4h_4h(TyH);
   3927    if (0) test_uhsub_16b_16b_16b(TyB);
   3928    if (0) test_uhsub_8b_8b_8b(TyB);
   3929 
   3930    // shll{2}      8h_8b/16b_#8, 4s_4h/8h_#16, 2d_2s/4s_#32
   3931    if (0) test_shll_8h_8b_8(TyB);
   3932    if (0) test_shll2_8h_16b_8(TyB);
   3933    if (0) test_shll_4s_4h_16(TyH);
   3934    if (0) test_shll2_4s_8h_16(TyH);
   3935    if (0) test_shll_2d_2s_32(TyS);
   3936    if (0) test_shll2_2d_4s_32(TyS);
   3937 
   3938    // shrn{2}      2s/4s_2d, 8h/4h_4s, 8b/16b_8h,   #imm in 1 .. elem_bits
   3939    // rshrn{2}     2s/4s_2d, 8h/4h_4s, 8b/16b_8h,   #imm in 1 .. elem_bits
   3940    if (1) test_shrn_2s_2d_1(TyD);
   3941    if (0) test_shrn_2s_2d_32(TyD);
   3942    if (1) test_shrn2_4s_2d_1(TyD);
   3943    if (0) test_shrn2_4s_2d_32(TyD);
   3944    if (1) test_shrn_4h_4s_1(TyS);
   3945    if (0) test_shrn_4h_4s_16(TyS);
   3946    if (1) test_shrn2_8h_4s_1(TyS);
   3947    if (0) test_shrn2_8h_4s_16(TyS);
   3948    if (1) test_shrn_8b_8h_1(TyH);
   3949    if (0) test_shrn_8b_8h_8(TyH);
   3950    if (1) test_shrn2_16b_8h_1(TyH);
   3951    if (0) test_shrn2_16b_8h_8(TyH);
   3952    if (0) test_rshrn_2s_2d_1(TyD);
   3953    if (0) test_rshrn_2s_2d_32(TyD);
   3954    if (0) test_rshrn2_4s_2d_1(TyD);
   3955    if (0) test_rshrn2_4s_2d_32(TyD);
   3956    if (0) test_rshrn_4h_4s_1(TyS);
   3957    if (0) test_rshrn_4h_4s_16(TyS);
   3958    if (0) test_rshrn2_8h_4s_1(TyS);
   3959    if (0) test_rshrn2_8h_4s_16(TyS);
   3960    if (0) test_rshrn_8b_8h_1(TyH);
   3961    if (0) test_rshrn_8b_8h_8(TyH);
   3962    if (0) test_rshrn2_16b_8h_1(TyH);
   3963    if (0) test_rshrn2_16b_8h_8(TyH);
   3964 
   3965    // sli          d_#imm
   3966    // sri          d_#imm
   3967    if (0) test_sli_d_d_0(TyD);
   3968    if (0) test_sli_d_d_32(TyD);
   3969    if (0) test_sli_d_d_63(TyD);
   3970    if (0) test_sri_d_d_1(TyD);
   3971    if (0) test_sri_d_d_33(TyD);
   3972    if (0) test_sri_d_d_64(TyD);
   3973 
   3974    // sli          2d,4s,2s,8h,4h,16b,8b  _#imm
   3975    // sri          2d,4s,2s,8h,4h,16b,8b  _#imm
   3976    if (0) test_sli_2d_2d_0(TyD);
   3977    if (1) test_sli_2d_2d_32(TyD);
   3978    if (1) test_sli_2d_2d_63(TyD);
   3979    if (0) test_sli_4s_4s_0(TyS);
   3980    if (1) test_sli_4s_4s_16(TyS);
   3981    if (1) test_sli_4s_4s_31(TyS);
   3982    if (0) test_sli_2s_2s_0(TyS);
   3983    if (1) test_sli_2s_2s_16(TyS);
   3984    if (1) test_sli_2s_2s_31(TyS);
   3985    if (0) test_sli_8h_8h_0(TyH);
   3986    if (1) test_sli_8h_8h_8(TyH);
   3987    if (1) test_sli_8h_8h_15(TyH);
   3988    if (0) test_sli_4h_4h_0(TyH);
   3989    if (1) test_sli_4h_4h_8(TyH);
   3990    if (1) test_sli_4h_4h_15(TyH);
   3991    if (0) test_sli_16b_16b_0(TyB);
   3992    if (1) test_sli_16b_16b_3(TyB);
   3993    if (1) test_sli_16b_16b_7(TyB);
   3994    if (0) test_sli_8b_8b_0(TyB);
   3995    if (1) test_sli_8b_8b_3(TyB);
   3996    if (1) test_sli_8b_8b_7(TyB);
   3997    if (1) test_sri_2d_2d_1(TyD);
   3998    if (1) test_sri_2d_2d_33(TyD);
   3999    if (0) test_sri_2d_2d_64(TyD);
   4000    if (1) test_sri_4s_4s_1(TyS);
   4001    if (1) test_sri_4s_4s_17(TyS);
   4002    if (0) test_sri_4s_4s_32(TyS);
   4003    if (1) test_sri_2s_2s_1(TyS);
   4004    if (1) test_sri_2s_2s_17(TyS);
   4005    if (0) test_sri_2s_2s_32(TyS);
   4006    if (1) test_sri_8h_8h_1(TyH);
   4007    if (1) test_sri_8h_8h_8(TyH);
   4008    if (0) test_sri_8h_8h_16(TyH);
   4009    if (1) test_sri_4h_4h_1(TyH);
   4010    if (1) test_sri_4h_4h_8(TyH);
   4011    if (0) test_sri_4h_4h_16(TyH);
   4012    if (1) test_sri_16b_16b_1(TyB);
   4013    if (1) test_sri_16b_16b_4(TyB);
   4014    if (0) test_sri_16b_16b_8(TyB);
   4015    if (1) test_sri_8b_8b_1(TyB);
   4016    if (1) test_sri_8b_8b_4(TyB);
   4017    if (0) test_sri_8b_8b_8(TyB);
   4018 
   4019    // smax         4s,2s,8h,4h,16b,8b
   4020    // umax         4s,2s,8h,4h,16b,8b
   4021    // smin         4s,2s,8h,4h,16b,8b
   4022    // umin         4s,2s,8h,4h,16b,8b
   4023    if (1) test_smax_4s_4s_4s(TyS);
   4024    if (1) test_smax_2s_2s_2s(TyS);
   4025    if (1) test_smax_8h_8h_8h(TyH);
   4026    if (1) test_smax_4h_4h_4h(TyH);
   4027    if (1) test_smax_16b_16b_16b(TyB);
   4028    if (1) test_smax_8b_8b_8b(TyB);
   4029    if (1) test_umax_4s_4s_4s(TyS);
   4030    if (1) test_umax_2s_2s_2s(TyS);
   4031    if (1) test_umax_8h_8h_8h(TyH);
   4032    if (1) test_umax_4h_4h_4h(TyH);
   4033    if (1) test_umax_16b_16b_16b(TyB);
   4034    if (1) test_umax_8b_8b_8b(TyB);
   4035    if (1) test_smin_4s_4s_4s(TyS);
   4036    if (1) test_smin_2s_2s_2s(TyS);
   4037    if (1) test_smin_8h_8h_8h(TyH);
   4038    if (1) test_smin_4h_4h_4h(TyH);
   4039    if (1) test_smin_16b_16b_16b(TyB);
   4040    if (1) test_smin_8b_8b_8b(TyB);
   4041    if (1) test_umin_4s_4s_4s(TyS);
   4042    if (1) test_umin_2s_2s_2s(TyS);
   4043    if (1) test_umin_8h_8h_8h(TyH);
   4044    if (1) test_umin_4h_4h_4h(TyH);
   4045    if (1) test_umin_16b_16b_16b(TyB);
   4046    if (1) test_umin_8b_8b_8b(TyB);
   4047 
   4048    // smaxp        4s,2s,8h,4h,16b,8b
   4049    // umaxp        4s,2s,8h,4h,16b,8b
   4050    // sminp        4s,2s,8h,4h,16b,8b
   4051    // uminp        4s,2s,8h,4h,16b,8b
   4052    if (0) test_smaxp_4s_4s_4s(TyS);
   4053    if (0) test_smaxp_2s_2s_2s(TyS);
   4054    if (0) test_smaxp_8h_8h_8h(TyH);
   4055    if (0) test_smaxp_4h_4h_4h(TyH);
   4056    if (0) test_smaxp_16b_16b_16b(TyB);
   4057    if (0) test_smaxp_8b_8b_8b(TyB);
   4058    if (0) test_umaxp_4s_4s_4s(TyS);
   4059    if (0) test_umaxp_2s_2s_2s(TyS);
   4060    if (0) test_umaxp_8h_8h_8h(TyH);
   4061    if (0) test_umaxp_4h_4h_4h(TyH);
   4062    if (0) test_umaxp_16b_16b_16b(TyB);
   4063    if (0) test_umaxp_8b_8b_8b(TyB);
   4064    if (0) test_sminp_4s_4s_4s(TyS);
   4065    if (0) test_sminp_2s_2s_2s(TyS);
   4066    if (0) test_sminp_8h_8h_8h(TyH);
   4067    if (0) test_sminp_4h_4h_4h(TyH);
   4068    if (0) test_sminp_16b_16b_16b(TyB);
   4069    if (0) test_sminp_8b_8b_8b(TyB);
   4070    if (0) test_uminp_4s_4s_4s(TyS);
   4071    if (0) test_uminp_2s_2s_2s(TyS);
   4072    if (0) test_uminp_8h_8h_8h(TyH);
   4073    if (0) test_uminp_4h_4h_4h(TyH);
   4074    if (0) test_uminp_16b_16b_16b(TyB);
   4075    if (0) test_uminp_8b_8b_8b(TyB);
   4076 
   4077    // smaxv        s_4s,h_8h,h_4h,b_16b,b_8b
   4078    // umaxv        s_4s,h_8h,h_4h,b_16b,b_8b
   4079    // sminv        s_4s,h_8h,h_4h,b_16b,b_8b
   4080    // uminv        s_4s,h_8h,h_4h,b_16b,b_8b
   4081    if (1) test_SMAXV();
   4082    if (1) test_UMAXV();
   4083    if (1) test_SMINV();
   4084    if (1) test_UMINV();
   4085 
   4086    // smlal{2}     2d_2s/4s_s[], 4s_4h/8h_h[]
   4087    // umlal{2}     2d_2s/4s_s[], 4s_4h/8h_h[]
   4088    // smlsl{2}     2d_2s/4s_s[], 4s_4h/8h_h[]
   4089    // umlsl{2}     2d_2s/4s_s[], 4s_4h/8h_h[]
   4090    // smull{2}     2d_2s/4s_s[]. 4s_4h/8h_h[]
   4091    // umull{2}     2d_2s/4s_s[]. 4s_4h/8h_h[]
   4092    if (0) test_smlal_2d_2s_s0(TyS);
   4093    if (0) test_smlal_2d_2s_s3(TyS);
   4094    if (0) test_smlal2_2d_4s_s1(TyS);
   4095    if (0) test_smlal2_2d_4s_s2(TyS);
   4096    if (0) test_smlal_4s_4h_h0(TyH);
   4097    if (0) test_smlal_4s_4h_h7(TyH);
   4098    if (0) test_smlal2_4s_8h_h1(TyH);
   4099    if (0) test_smlal2_4s_8h_h4(TyH);
   4100    if (0) test_umlal_2d_2s_s0(TyS);
   4101    if (0) test_umlal_2d_2s_s3(TyS);
   4102    if (0) test_umlal2_2d_4s_s1(TyS);
   4103    if (0) test_umlal2_2d_4s_s2(TyS);
   4104    if (0) test_umlal_4s_4h_h0(TyH);
   4105    if (0) test_umlal_4s_4h_h7(TyH);
   4106    if (0) test_umlal2_4s_8h_h1(TyH);
   4107    if (0) test_umlal2_4s_8h_h4(TyH);
   4108    if (0) test_smlsl_2d_2s_s0(TyS);
   4109    if (0) test_smlsl_2d_2s_s3(TyS);
   4110    if (0) test_smlsl2_2d_4s_s1(TyS);
   4111    if (0) test_smlsl2_2d_4s_s2(TyS);
   4112    if (0) test_smlsl_4s_4h_h0(TyH);
   4113    if (0) test_smlsl_4s_4h_h7(TyH);
   4114    if (0) test_smlsl2_4s_8h_h1(TyH);
   4115    if (0) test_smlsl2_4s_8h_h4(TyH);
   4116    if (0) test_umlsl_2d_2s_s0(TyS);
   4117    if (0) test_umlsl_2d_2s_s3(TyS);
   4118    if (0) test_umlsl2_2d_4s_s1(TyS);
   4119    if (0) test_umlsl2_2d_4s_s2(TyS);
   4120    if (0) test_umlsl_4s_4h_h0(TyH);
   4121    if (0) test_umlsl_4s_4h_h7(TyH);
   4122    if (0) test_umlsl2_4s_8h_h1(TyH);
   4123    if (0) test_umlsl2_4s_8h_h4(TyH);
   4124    if (0) test_smull_2d_2s_s0(TyS);
   4125    if (0) test_smull_2d_2s_s3(TyS);
   4126    if (0) test_smull2_2d_4s_s1(TyS);
   4127    if (0) test_smull2_2d_4s_s2(TyS);
   4128    if (0) test_smull_4s_4h_h0(TyH);
   4129    if (0) test_smull_4s_4h_h7(TyH);
   4130    if (0) test_smull2_4s_8h_h1(TyH);
   4131    if (0) test_smull2_4s_8h_h4(TyH);
   4132    if (0) test_umull_2d_2s_s0(TyS);
   4133    if (0) test_umull_2d_2s_s3(TyS);
   4134    if (0) test_umull2_2d_4s_s1(TyS);
   4135    if (0) test_umull2_2d_4s_s2(TyS);
   4136    if (0) test_umull_4s_4h_h0(TyH);
   4137    if (0) test_umull_4s_4h_h7(TyH);
   4138    if (0) test_umull2_4s_8h_h1(TyH);
   4139    if (0) test_umull2_4s_8h_h4(TyH);
   4140 
   4141    // smlal{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   4142    // umlal{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   4143    // smlsl{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   4144    // umlsl{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   4145    // smull{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   4146    // umull{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   4147    if (0) test_smlal_2d_2s_2s(TyS);
   4148    if (0) test_smlal2_2d_4s_4s(TyS);
   4149    if (0) test_smlal_4s_4h_4h(TyH);
   4150    if (0) test_smlal2_4s_8h_8h(TyH);
   4151    if (0) test_smlal_8h_8b_8b(TyB);
   4152    if (0) test_smlal2_8h_16b_16b(TyB);
   4153    if (0) test_umlal_2d_2s_2s(TyS);
   4154    if (0) test_umlal2_2d_4s_4s(TyS);
   4155    if (0) test_umlal_4s_4h_4h(TyH);
   4156    if (0) test_umlal2_4s_8h_8h(TyH);
   4157    if (0) test_umlal_8h_8b_8b(TyB);
   4158    if (0) test_umlal2_8h_16b_16b(TyB);
   4159    if (0) test_smlsl_2d_2s_2s(TyS);
   4160    if (0) test_smlsl2_2d_4s_4s(TyS);
   4161    if (0) test_smlsl_4s_4h_4h(TyH);
   4162    if (0) test_smlsl2_4s_8h_8h(TyH);
   4163    if (0) test_smlsl_8h_8b_8b(TyB);
   4164    if (0) test_smlsl2_8h_16b_16b(TyB);
   4165    if (0) test_umlsl_2d_2s_2s(TyS);
   4166    if (0) test_umlsl2_2d_4s_4s(TyS);
   4167    if (0) test_umlsl_4s_4h_4h(TyH);
   4168    if (0) test_umlsl2_4s_8h_8h(TyH);
   4169    if (0) test_umlsl_8h_8b_8b(TyB);
   4170    if (0) test_umlsl2_8h_16b_16b(TyB);
   4171    if (0) test_smull_2d_2s_2s(TyS);
   4172    if (0) test_smull2_2d_4s_4s(TyS);
   4173    if (0) test_smull_4s_4h_4h(TyH);
   4174    if (0) test_smull2_4s_8h_8h(TyH);
   4175    if (0) test_smull_8h_8b_8b(TyB);
   4176    if (0) test_smull2_8h_16b_16b(TyB);
   4177    if (1) test_umull_2d_2s_2s(TyS);
   4178    if (0) test_umull2_2d_4s_4s(TyS);
   4179    if (1) test_umull_4s_4h_4h(TyH);
   4180    if (0) test_umull2_4s_8h_8h(TyH);
   4181    if (1) test_umull_8h_8b_8b(TyB);
   4182    if (0) test_umull2_8h_16b_16b(TyB);
   4183 
   4184    // smov         w_b[], w_h[], x_b[], x_h[], x_s[]
   4185    // umov         w_b[], w_h[],               w_s[], x_d[]
   4186    if (1) test_umov_x_d0(TyD);
   4187    if (1) test_umov_x_d1(TyD);
   4188    if (1) test_umov_w_s0(TyS);
   4189    if (1) test_umov_w_s3(TyS);
   4190    if (1) test_umov_w_h0(TyH);
   4191    if (1) test_umov_w_h7(TyH);
   4192    if (1) test_umov_w_b0(TyB);
   4193    if (1) test_umov_w_b15(TyB);
   4194    if (1) test_smov_x_s0(TyS);
   4195    if (1) test_smov_x_s3(TyS);
   4196    if (1) test_smov_x_h0(TyH);
   4197    if (1) test_smov_x_h7(TyH);
   4198    if (1) test_smov_w_h0(TyH);
   4199    if (1) test_smov_w_h7(TyH);
   4200    if (1) test_smov_x_b0(TyB);
   4201    if (1) test_smov_x_b15(TyB);
   4202    if (1) test_smov_w_b0(TyB);
   4203    if (1) test_smov_w_b15(TyB);
   4204 
   4205    // sqabs        d,s,h,b
   4206    // sqneg        d,s,h,b
   4207    if (0) test_sqabs_d_d(TyD);
   4208    if (0) test_sqabs_s_s(TyS);
   4209    if (0) test_sqabs_h_h(TyH);
   4210    if (0) test_sqabs_b_b(TyB);
   4211    if (0) test_sqneg_d_d(TyD);
   4212    if (0) test_sqneg_s_s(TyS);
   4213    if (0) test_sqneg_h_h(TyH);
   4214    if (0) test_sqneg_b_b(TyB);
   4215 
   4216    // sqabs        2d,4s,2s,8h,4h,16b,8b
   4217    // sqneg        2d,4s,2s,8h,4h,16b,8b
   4218    if (0) test_sqabs_2d_2d(TyD);
   4219    if (0) test_sqabs_4s_4s(TyS);
   4220    if (0) test_sqabs_2s_2s(TyS);
   4221    if (0) test_sqabs_8h_8h(TyH);
   4222    if (0) test_sqabs_4h_4h(TyH);
   4223    if (0) test_sqabs_16b_16b(TyB);
   4224    if (0) test_sqabs_8b_8b(TyB);
   4225    if (0) test_sqneg_2d_2d(TyD);
   4226    if (0) test_sqneg_4s_4s(TyS);
   4227    if (0) test_sqneg_2s_2s(TyS);
   4228    if (0) test_sqneg_8h_8h(TyH);
   4229    if (0) test_sqneg_4h_4h(TyH);
   4230    if (0) test_sqneg_16b_16b(TyB);
   4231    if (0) test_sqneg_8b_8b(TyB);
   4232 
   4233    // sqadd        d,s,h,b
   4234    // uqadd        d,s,h,b
   4235    // sqsub        d,s,h,b
   4236    // uqsub        d,s,h,b
   4237    if (0) test_sqadd_d_d_d(TyD);
   4238    if (0) test_sqadd_s_s_s(TyS);
   4239    if (0) test_sqadd_h_h_h(TyH);
   4240    if (0) test_sqadd_b_b_b(TyB);
   4241    if (0) test_uqadd_d_d_d(TyD);
   4242    if (0) test_uqadd_s_s_s(TyS);
   4243    if (0) test_uqadd_h_h_h(TyH);
   4244    if (0) test_uqadd_b_b_b(TyB);
   4245    if (0) test_sqsub_d_d_d(TyD);
   4246    if (0) test_sqsub_s_s_s(TyS);
   4247    if (0) test_sqsub_h_h_h(TyH);
   4248    if (0) test_sqsub_b_b_b(TyB);
   4249    if (0) test_uqsub_d_d_d(TyD);
   4250    if (0) test_uqsub_s_s_s(TyS);
   4251    if (0) test_uqsub_h_h_h(TyH);
   4252    if (0) test_uqsub_b_b_b(TyB);
   4253 
   4254    // sqadd        2d,4s,2s,8h,4h,16b,8b
   4255    // uqadd        2d,4s,2s,8h,4h,16b,8b
   4256    // sqsub        2d,4s,2s,8h,4h,16b,8b
   4257    // uqsub        2d,4s,2s,8h,4h,16b,8b
   4258    if (0) test_sqadd_2d_2d_2d(TyD);
   4259    if (0) test_sqadd_4s_4s_4s(TyS);
   4260    if (0) test_sqadd_2s_2s_2s(TyS);
   4261    if (0) test_sqadd_8h_8h_8h(TyH);
   4262    if (0) test_sqadd_4h_4h_4h(TyH);
   4263    if (0) test_sqadd_16b_16b_16b(TyB);
   4264    if (0) test_sqadd_8b_8b_8b(TyB);
   4265    if (0) test_uqadd_2d_2d_2d(TyD);
   4266    if (0) test_uqadd_4s_4s_4s(TyS);
   4267    if (0) test_uqadd_2s_2s_2s(TyS);
   4268    if (0) test_uqadd_8h_8h_8h(TyH);
   4269    if (0) test_uqadd_4h_4h_4h(TyH);
   4270    if (0) test_uqadd_16b_16b_16b(TyB);
   4271    if (0) test_uqadd_8b_8b_8b(TyB);
   4272    if (0) test_sqsub_2d_2d_2d(TyD);
   4273    if (0) test_sqsub_4s_4s_4s(TyS);
   4274    if (0) test_sqsub_2s_2s_2s(TyS);
   4275    if (0) test_sqsub_8h_8h_8h(TyH);
   4276    if (0) test_sqsub_4h_4h_4h(TyH);
   4277    if (0) test_sqsub_16b_16b_16b(TyB);
   4278    if (0) test_sqsub_8b_8b_8b(TyB);
   4279    if (0) test_uqsub_2d_2d_2d(TyD);
   4280    if (0) test_uqsub_4s_4s_4s(TyS);
   4281    if (0) test_uqsub_2s_2s_2s(TyS);
   4282    if (0) test_uqsub_8h_8h_8h(TyH);
   4283    if (0) test_uqsub_4h_4h_4h(TyH);
   4284    if (0) test_uqsub_16b_16b_16b(TyB);
   4285    if (0) test_uqsub_8b_8b_8b(TyB);
   4286 
   4287    // sqdmlal      d_s_s[], s_h_h[]
   4288    // sqdmlsl      d_s_s[], s_h_h[]
   4289    // sqdmull      d_s_s[], s_h_h[]
   4290    if (0) test_sqdmlal_d_s_s0(TyS);
   4291    if (0) test_sqdmlal_d_s_s3(TyS);
   4292    if (0) test_sqdmlal_s_h_h1(TyH);
   4293    if (0) test_sqdmlal_s_h_h5(TyH);
   4294    if (0) test_sqdmlsl_d_s_s0(TyS);
   4295    if (0) test_sqdmlsl_d_s_s3(TyS);
   4296    if (0) test_sqdmlsl_s_h_h1(TyH);
   4297    if (0) test_sqdmlsl_s_h_h5(TyH);
   4298    if (0) test_sqdmull_d_s_s0(TyS);
   4299    if (0) test_sqdmull_d_s_s3(TyS);
   4300    if (0) test_sqdmull_s_h_h1(TyH);
   4301    if (0) test_sqdmull_s_h_h5(TyH);
   4302 
   4303    // sqdmlal{2}   2d_2s/4s_s[], 4s_4h/8h_h[]
   4304    // sqdmlsl{2}   2d_2s/4s_s[], 4s_4h/8h_h[]
   4305    // sqdmull{2}   2d_2s/4s_s[], 4s_4h/2h_h[]
   4306    if (0) test_sqdmlal_2d_2s_s0(TyS);
   4307    if (0) test_sqdmlal_2d_2s_s3(TyS);
   4308    if (0) test_sqdmlal2_2d_4s_s1(TyS);
   4309    if (0) test_sqdmlal2_2d_4s_s2(TyS);
   4310    if (0) test_sqdmlal_4s_4h_h0(TyH);
   4311    if (0) test_sqdmlal_4s_4h_h7(TyH);
   4312    if (0) test_sqdmlal2_4s_8h_h1(TyH);
   4313    if (0) test_sqdmlal2_4s_8h_h4(TyH);
   4314    if (0) test_sqdmlsl_2d_2s_s0(TyS);
   4315    if (0) test_sqdmlsl_2d_2s_s3(TyS);
   4316    if (0) test_sqdmlsl2_2d_4s_s1(TyS);
   4317    if (0) test_sqdmlsl2_2d_4s_s2(TyS);
   4318    if (0) test_sqdmlsl_4s_4h_h0(TyH);
   4319    if (0) test_sqdmlsl_4s_4h_h7(TyH);
   4320    if (0) test_sqdmlsl2_4s_8h_h1(TyH);
   4321    if (0) test_sqdmlsl2_4s_8h_h4(TyH);
   4322    if (0) test_sqdmull_2d_2s_s0(TyS);
   4323    if (0) test_sqdmull_2d_2s_s3(TyS);
   4324    if (0) test_sqdmull2_2d_4s_s1(TyS);
   4325    if (0) test_sqdmull2_2d_4s_s2(TyS);
   4326    if (0) test_sqdmull_4s_4h_h0(TyH);
   4327    if (0) test_sqdmull_4s_4h_h7(TyH);
   4328    if (0) test_sqdmull2_4s_8h_h1(TyH);
   4329    if (0) test_sqdmull2_4s_8h_h4(TyH);
   4330 
   4331    // sqdmlal      d_s_s, s_h_h
   4332    // sqdmlsl      d_s_s, s_h_h
   4333    // sqdmull      d_s_s, s_h_h
   4334    if (0) test_sqdmlal_d_s_s(TyS);
   4335    if (0) test_sqdmlal_s_h_h(TyH);
   4336    if (0) test_sqdmlsl_d_s_s(TyS);
   4337    if (0) test_sqdmlsl_s_h_h(TyH);
   4338    if (0) test_sqdmull_d_s_s(TyS);
   4339    if (0) test_sqdmull_s_h_h(TyH);
   4340 
   4341    // sqdmlal{2}   2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   4342    // sqdmlsl{2}   2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   4343    // sqdmull{2}   2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   4344    if (0) test_sqdmlal_2d_2s_2s(TyS);
   4345    if (0) test_sqdmlal2_2d_4s_4s(TyS);
   4346    if (0) test_sqdmlal_4s_4h_4h(TyH);
   4347    if (0) test_sqdmlal2_4s_8h_8h(TyH);
   4348    if (0) test_sqdmlsl_2d_2s_2s(TyS);
   4349    if (0) test_sqdmlsl2_2d_4s_4s(TyS);
   4350    if (0) test_sqdmlsl_4s_4h_4h(TyH);
   4351    if (0) test_sqdmlsl2_4s_8h_8h(TyH);
   4352    if (0) test_sqdmull_2d_2s_2s(TyS);
   4353    if (0) test_sqdmull2_2d_4s_4s(TyS);
   4354    if (0) test_sqdmull_4s_4h_4h(TyH);
   4355    if (0) test_sqdmull2_4s_8h_8h(TyH);
   4356 
   4357    // sqdmulh      s_s_s[], h_h_h[]
   4358    // sqrdmulh     s_s_s[], h_h_h[]
   4359    if (0) test_sqdmulh_s_s_s1(TyS);
   4360    if (0) test_sqdmulh_s_s_s3(TyS);
   4361    if (0) test_sqdmulh_h_h_h2(TyH);
   4362    if (0) test_sqdmulh_h_h_h7(TyH);
   4363    if (0) test_sqrdmulh_s_s_s1(TyS);
   4364    if (0) test_sqrdmulh_s_s_s3(TyS);
   4365    if (0) test_sqrdmulh_h_h_h2(TyH);
   4366    if (0) test_sqrdmulh_h_h_h7(TyH);
   4367 
   4368    // sqdmulh      4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[]
   4369    // sqrdmulh     4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[]
   4370    if (0) test_sqdmulh_4s_4s_s1(TyS);
   4371    if (0) test_sqdmulh_4s_4s_s3(TyS);
   4372    if (0) test_sqdmulh_2s_2s_s1(TyS);
   4373    if (0) test_sqdmulh_2s_2s_s3(TyS);
   4374    if (0) test_sqdmulh_8h_8h_h2(TyH);
   4375    if (0) test_sqdmulh_8h_8h_h7(TyH);
   4376    if (0) test_sqdmulh_4h_4h_h2(TyH);
   4377    if (0) test_sqdmulh_4h_4h_h7(TyH);
   4378    if (0) test_sqrdmulh_4s_4s_s1(TyS);
   4379    if (0) test_sqrdmulh_4s_4s_s3(TyS);
   4380    if (0) test_sqrdmulh_2s_2s_s1(TyS);
   4381    if (0) test_sqrdmulh_2s_2s_s3(TyS);
   4382    if (0) test_sqrdmulh_8h_8h_h2(TyH);
   4383    if (0) test_sqrdmulh_8h_8h_h7(TyH);
   4384    if (0) test_sqrdmulh_4h_4h_h2(TyH);
   4385    if (0) test_sqrdmulh_4h_4h_h7(TyH);
   4386 
   4387    // sqdmulh      h,s
   4388    // sqrdmulh     h,s
   4389    if (0) test_sqdmulh_s_s_s(TyS);
   4390    if (0) test_sqdmulh_h_h_h(TyH);
   4391    if (0) test_sqrdmulh_s_s_s(TyS);
   4392    if (0) test_sqrdmulh_h_h_h(TyH);
   4393 
   4394    // sqdmulh      4s,2s,8h,4h
   4395    // sqrdmulh     4s,2s,8h,4h
   4396    if (0) test_sqdmulh_4s_4s_4s(TyS);
   4397    if (0) test_sqdmulh_2s_2s_2s(TyS);
   4398    if (0) test_sqdmulh_8h_8h_8h(TyH);
   4399    if (0) test_sqdmulh_4h_4h_4h(TyH);
   4400    if (0) test_sqrdmulh_4s_4s_4s(TyS);
   4401    if (0) test_sqrdmulh_2s_2s_2s(TyS);
   4402    if (0) test_sqrdmulh_8h_8h_8h(TyH);
   4403    if (0) test_sqrdmulh_4h_4h_4h(TyH);
   4404 
   4405    // sqshl (reg)  d,s,h,b
   4406    // uqshl (reg)  d,s,h,b
   4407    // sqrshl (reg) d,s,h,b
   4408    // uqrshl (reg) d,s,h,b
   4409    if (0) test_sqshl_d_d_d(TyD);
   4410    if (0) test_sqshl_s_s_s(TyS);
   4411    if (0) test_sqshl_h_h_h(TyH);
   4412    if (0) test_sqshl_b_b_b(TyB);
   4413    if (0) test_uqshl_d_d_d(TyD);
   4414    if (0) test_uqshl_s_s_s(TyS);
   4415    if (0) test_uqshl_h_h_h(TyH);
   4416    if (0) test_uqshl_b_b_b(TyB);
   4417    if (0) test_sqrshl_d_d_d(TyD);
   4418    if (0) test_sqrshl_s_s_s(TyS);
   4419    if (0) test_sqrshl_h_h_h(TyH);
   4420    if (0) test_sqrshl_b_b_b(TyB);
   4421    if (0) test_uqrshl_d_d_d(TyD);
   4422    if (0) test_uqrshl_s_s_s(TyS);
   4423    if (0) test_uqrshl_h_h_h(TyH);
   4424    if (0) test_uqrshl_b_b_b(TyB);
   4425 
   4426    // sqshl (reg)  2d,4s,2s,8h,4h,16b,8b
   4427    // uqshl (reg)  2d,4s,2s,8h,4h,16b,8b
   4428    // sqrshl (reg) 2d,4s,2s,8h,4h,16b,8b
   4429    // uqrshl (reg) 2d,4s,2s,8h,4h,16b,8b
   4430    if (0) test_sqshl_2d_2d_2d(TyD);
   4431    if (0) test_sqshl_4s_4s_4s(TyS);
   4432    if (0) test_sqshl_2s_2s_2s(TyS);
   4433    if (0) test_sqshl_8h_8h_8h(TyH);
   4434    if (0) test_sqshl_4h_4h_4h(TyH);
   4435    if (0) test_sqshl_16b_16b_16b(TyB);
   4436    if (0) test_sqshl_8b_8b_8b(TyB);
   4437    if (0) test_uqshl_2d_2d_2d(TyD);
   4438    if (0) test_uqshl_4s_4s_4s(TyS);
   4439    if (0) test_uqshl_2s_2s_2s(TyS);
   4440    if (0) test_uqshl_8h_8h_8h(TyH);
   4441    if (0) test_uqshl_4h_4h_4h(TyH);
   4442    if (0) test_uqshl_16b_16b_16b(TyB);
   4443    if (0) test_uqshl_8b_8b_8b(TyB);
   4444    if (0) test_sqrshl_2d_2d_2d(TyD);
   4445    if (0) test_sqrshl_4s_4s_4s(TyS);
   4446    if (0) test_sqrshl_2s_2s_2s(TyS);
   4447    if (0) test_sqrshl_8h_8h_8h(TyH);
   4448    if (0) test_sqrshl_4h_4h_4h(TyH);
   4449    if (0) test_sqrshl_16b_16b_16b(TyB);
   4450    if (0) test_sqrshl_8b_8b_8b(TyB);
   4451    if (0) test_uqrshl_2d_2d_2d(TyD);
   4452    if (0) test_uqrshl_4s_4s_4s(TyS);
   4453    if (0) test_uqrshl_2s_2s_2s(TyS);
   4454    if (0) test_uqrshl_8h_8h_8h(TyH);
   4455    if (0) test_uqrshl_4h_4h_4h(TyH);
   4456    if (0) test_uqrshl_16b_16b_16b(TyB);
   4457    if (0) test_uqrshl_8b_8b_8b(TyB);
   4458 
   4459    // sqrshrn      s_d, h_s, b_h   #imm
   4460    // uqrshrn      s_d, h_s, b_h   #imm
   4461    // sqshrn       s_d, h_s, b_h   #imm
   4462    // uqshrn       s_d, h_s, b_h   #imm
   4463    // sqrshrun     s_d, h_s, b_h   #imm
   4464    // sqshrun      s_d, h_s, b_h   #imm
   4465    if (0) test_sqrshrn_s_d_1(TyD);
   4466    if (0) test_sqrshrn_s_d_17(TyD);
   4467    if (0) test_sqrshrn_s_d_32(TyD);
   4468    if (0) test_sqrshrn_h_s_1(TyS);
   4469    if (0) test_sqrshrn_h_s_9(TyS);
   4470    if (0) test_sqrshrn_h_s_16(TyS);
   4471    if (0) test_sqrshrn_b_h_1(TyH);
   4472    if (0) test_sqrshrn_b_h_4(TyH);
   4473    if (0) test_sqrshrn_b_h_8(TyH);
   4474    if (0) test_uqrshrn_s_d_1(TyD);
   4475    if (0) test_uqrshrn_s_d_17(TyD);
   4476    if (0) test_uqrshrn_s_d_32(TyD);
   4477    if (0) test_uqrshrn_h_s_1(TyS);
   4478    if (0) test_uqrshrn_h_s_9(TyS);
   4479    if (0) test_uqrshrn_h_s_16(TyS);
   4480    if (0) test_uqrshrn_b_h_1(TyH);
   4481    if (0) test_uqrshrn_b_h_4(TyH);
   4482    if (0) test_uqrshrn_b_h_8(TyH);
   4483    if (0) test_sqshrn_s_d_1(TyD);
   4484    if (0) test_sqshrn_s_d_17(TyD);
   4485    if (0) test_sqshrn_s_d_32(TyD);
   4486    if (0) test_sqshrn_h_s_1(TyS);
   4487    if (0) test_sqshrn_h_s_9(TyS);
   4488    if (0) test_sqshrn_h_s_16(TyS);
   4489    if (0) test_sqshrn_b_h_1(TyH);
   4490    if (0) test_sqshrn_b_h_4(TyH);
   4491    if (0) test_sqshrn_b_h_8(TyH);
   4492    if (0) test_uqshrn_s_d_1(TyD);
   4493    if (0) test_uqshrn_s_d_17(TyD);
   4494    if (0) test_uqshrn_s_d_32(TyD);
   4495    if (0) test_uqshrn_h_s_1(TyS);
   4496    if (0) test_uqshrn_h_s_9(TyS);
   4497    if (0) test_uqshrn_h_s_16(TyS);
   4498    if (0) test_uqshrn_b_h_1(TyH);
   4499    if (0) test_uqshrn_b_h_4(TyH);
   4500    if (0) test_uqshrn_b_h_8(TyH);
   4501    if (0) test_sqrshrun_s_d_1(TyD);
   4502    if (0) test_sqrshrun_s_d_17(TyD);
   4503    if (0) test_sqrshrun_s_d_32(TyD);
   4504    if (0) test_sqrshrun_h_s_1(TyS);
   4505    if (0) test_sqrshrun_h_s_9(TyS);
   4506    if (0) test_sqrshrun_h_s_16(TyS);
   4507    if (0) test_sqrshrun_b_h_1(TyH);
   4508    if (0) test_sqrshrun_b_h_4(TyH);
   4509    if (0) test_sqrshrun_b_h_8(TyH);
   4510    if (0) test_sqshrun_s_d_1(TyD);
   4511    if (0) test_sqshrun_s_d_17(TyD);
   4512    if (0) test_sqshrun_s_d_32(TyD);
   4513    if (0) test_sqshrun_h_s_1(TyS);
   4514    if (0) test_sqshrun_h_s_9(TyS);
   4515    if (0) test_sqshrun_h_s_16(TyS);
   4516    if (0) test_sqshrun_b_h_1(TyH);
   4517    if (0) test_sqshrun_b_h_4(TyH);
   4518    if (0) test_sqshrun_b_h_8(TyH);
   4519 
   4520    // sqrshrn{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   4521    // uqrshrn{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   4522    // sqshrn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   4523    // uqshrn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   4524    // sqrshrun{2}  2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   4525    // sqshrun{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   4526    if (0) test_sqrshrn_2s_2d_1(TyD);
   4527    if (0) test_sqrshrn_2s_2d_17(TyD);
   4528    if (0) test_sqrshrn_2s_2d_32(TyD);
   4529    if (0) test_sqrshrn2_4s_2d_1(TyD);
   4530    if (0) test_sqrshrn2_4s_2d_17(TyD);
   4531    if (0) test_sqrshrn2_4s_2d_32(TyD);
   4532    if (0) test_sqrshrn_4h_4s_1(TyS);
   4533    if (0) test_sqrshrn_4h_4s_9(TyS);
   4534    if (0) test_sqrshrn_4h_4s_16(TyS);
   4535    if (0) test_sqrshrn2_8h_4s_1(TyS);
   4536    if (0) test_sqrshrn2_8h_4s_9(TyS);
   4537    if (0) test_sqrshrn2_8h_4s_16(TyS);
   4538    if (0) test_sqrshrn_8b_8h_1(TyH);
   4539    if (0) test_sqrshrn_8b_8h_4(TyH);
   4540    if (0) test_sqrshrn_8b_8h_8(TyH);
   4541    if (0) test_sqrshrn2_16b_8h_1(TyH);
   4542    if (0) test_sqrshrn2_16b_8h_4(TyH);
   4543    if (0) test_sqrshrn2_16b_8h_8(TyH);
   4544    if (0) test_uqrshrn_2s_2d_1(TyD);
   4545    if (0) test_uqrshrn_2s_2d_17(TyD);
   4546    if (0) test_uqrshrn_2s_2d_32(TyD);
   4547    if (0) test_uqrshrn2_4s_2d_1(TyD);
   4548    if (0) test_uqrshrn2_4s_2d_17(TyD);
   4549    if (0) test_uqrshrn2_4s_2d_32(TyD);
   4550    if (0) test_uqrshrn_4h_4s_1(TyS);
   4551    if (0) test_uqrshrn_4h_4s_9(TyS);
   4552    if (0) test_uqrshrn_4h_4s_16(TyS);
   4553    if (0) test_uqrshrn2_8h_4s_1(TyS);
   4554    if (0) test_uqrshrn2_8h_4s_9(TyS);
   4555    if (0) test_uqrshrn2_8h_4s_16(TyS);
   4556    if (0) test_uqrshrn_8b_8h_1(TyH);
   4557    if (0) test_uqrshrn_8b_8h_4(TyH);
   4558    if (0) test_uqrshrn_8b_8h_8(TyH);
   4559    if (0) test_uqrshrn2_16b_8h_1(TyH);
   4560    if (0) test_uqrshrn2_16b_8h_4(TyH);
   4561    if (0) test_uqrshrn2_16b_8h_8(TyH);
   4562    if (0) test_sqshrn_2s_2d_1(TyD);
   4563    if (0) test_sqshrn_2s_2d_17(TyD);
   4564    if (0) test_sqshrn_2s_2d_32(TyD);
   4565    if (0) test_sqshrn2_4s_2d_1(TyD);
   4566    if (0) test_sqshrn2_4s_2d_17(TyD);
   4567    if (0) test_sqshrn2_4s_2d_32(TyD);
   4568    if (0) test_sqshrn_4h_4s_1(TyS);
   4569    if (0) test_sqshrn_4h_4s_9(TyS);
   4570    if (0) test_sqshrn_4h_4s_16(TyS);
   4571    if (0) test_sqshrn2_8h_4s_1(TyS);
   4572    if (0) test_sqshrn2_8h_4s_9(TyS);
   4573    if (0) test_sqshrn2_8h_4s_16(TyS);
   4574    if (0) test_sqshrn_8b_8h_1(TyH);
   4575    if (0) test_sqshrn_8b_8h_4(TyH);
   4576    if (0) test_sqshrn_8b_8h_8(TyH);
   4577    if (0) test_sqshrn2_16b_8h_1(TyH);
   4578    if (0) test_sqshrn2_16b_8h_4(TyH);
   4579    if (0) test_sqshrn2_16b_8h_8(TyH);
   4580    if (0) test_uqshrn_2s_2d_1(TyD);
   4581    if (0) test_uqshrn_2s_2d_17(TyD);
   4582    if (0) test_uqshrn_2s_2d_32(TyD);
   4583    if (0) test_uqshrn2_4s_2d_1(TyD);
   4584    if (0) test_uqshrn2_4s_2d_17(TyD);
   4585    if (0) test_uqshrn2_4s_2d_32(TyD);
   4586    if (0) test_uqshrn_4h_4s_1(TyS);
   4587    if (0) test_uqshrn_4h_4s_9(TyS);
   4588    if (0) test_uqshrn_4h_4s_16(TyS);
   4589    if (0) test_uqshrn2_8h_4s_1(TyS);
   4590    if (0) test_uqshrn2_8h_4s_9(TyS);
   4591    if (0) test_uqshrn2_8h_4s_16(TyS);
   4592    if (0) test_uqshrn_8b_8h_1(TyH);
   4593    if (0) test_uqshrn_8b_8h_4(TyH);
   4594    if (0) test_uqshrn_8b_8h_8(TyH);
   4595    if (0) test_uqshrn2_16b_8h_1(TyH);
   4596    if (0) test_uqshrn2_16b_8h_4(TyH);
   4597    if (0) test_uqshrn2_16b_8h_8(TyH);
   4598    if (0) test_sqrshrun_2s_2d_1(TyD);
   4599    if (0) test_sqrshrun_2s_2d_17(TyD);
   4600    if (0) test_sqrshrun_2s_2d_32(TyD);
   4601    if (0) test_sqrshrun2_4s_2d_1(TyD);
   4602    if (0) test_sqrshrun2_4s_2d_17(TyD);
   4603    if (0) test_sqrshrun2_4s_2d_32(TyD);
   4604    if (0) test_sqrshrun_4h_4s_1(TyS);
   4605    if (0) test_sqrshrun_4h_4s_9(TyS);
   4606    if (0) test_sqrshrun_4h_4s_16(TyS);
   4607    if (0) test_sqrshrun2_8h_4s_1(TyS);
   4608    if (0) test_sqrshrun2_8h_4s_9(TyS);
   4609    if (0) test_sqrshrun2_8h_4s_16(TyS);
   4610    if (0) test_sqrshrun_8b_8h_1(TyH);
   4611    if (0) test_sqrshrun_8b_8h_4(TyH);
   4612    if (0) test_sqrshrun_8b_8h_8(TyH);
   4613    if (0) test_sqrshrun2_16b_8h_1(TyH);
   4614    if (0) test_sqrshrun2_16b_8h_4(TyH);
   4615    if (0) test_sqrshrun2_16b_8h_8(TyH);
   4616    if (0) test_sqshrun_2s_2d_1(TyD);
   4617    if (0) test_sqshrun_2s_2d_17(TyD);
   4618    if (0) test_sqshrun_2s_2d_32(TyD);
   4619    if (0) test_sqshrun2_4s_2d_1(TyD);
   4620    if (0) test_sqshrun2_4s_2d_17(TyD);
   4621    if (0) test_sqshrun2_4s_2d_32(TyD);
   4622    if (0) test_sqshrun_4h_4s_1(TyS);
   4623    if (0) test_sqshrun_4h_4s_9(TyS);
   4624    if (0) test_sqshrun_4h_4s_16(TyS);
   4625    if (0) test_sqshrun2_8h_4s_1(TyS);
   4626    if (0) test_sqshrun2_8h_4s_9(TyS);
   4627    if (0) test_sqshrun2_8h_4s_16(TyS);
   4628    if (0) test_sqshrun_8b_8h_1(TyH);
   4629    if (0) test_sqshrun_8b_8h_4(TyH);
   4630    if (0) test_sqshrun_8b_8h_8(TyH);
   4631    if (0) test_sqshrun2_16b_8h_1(TyH);
   4632    if (0) test_sqshrun2_16b_8h_4(TyH);
   4633    if (0) test_sqshrun2_16b_8h_8(TyH);
   4634 
   4635    // sqshl (imm)  d,s,h,b   _#imm
   4636    // uqshl (imm)  d,s,h,b   _#imm
   4637    // sqshlu (imm) d,s,h,b   _#imm
   4638    if (0) test_sqshl_d_d_0(TyD);
   4639    if (0) test_sqshl_d_d_32(TyD);
   4640    if (0) test_sqshl_d_d_63(TyD);
   4641    if (0) test_sqshl_s_s_0(TyS);
   4642    if (0) test_sqshl_s_s_16(TyS);
   4643    if (0) test_sqshl_s_s_31(TyS);
   4644    if (0) test_sqshl_h_h_0(TyH);
   4645    if (0) test_sqshl_h_h_8(TyH);
   4646    if (0) test_sqshl_h_h_15(TyH);
   4647    if (0) test_sqshl_b_b_0(TyB);
   4648    if (0) test_sqshl_b_b_4(TyB);
   4649    if (0) test_sqshl_b_b_7(TyB);
   4650    if (0) test_uqshl_d_d_0(TyD);
   4651    if (0) test_uqshl_d_d_32(TyD);
   4652    if (0) test_uqshl_d_d_63(TyD);
   4653    if (0) test_uqshl_s_s_0(TyS);
   4654    if (0) test_uqshl_s_s_16(TyS);
   4655    if (0) test_uqshl_s_s_31(TyS);
   4656    if (0) test_uqshl_h_h_0(TyH);
   4657    if (0) test_uqshl_h_h_8(TyH);
   4658    if (0) test_uqshl_h_h_15(TyH);
   4659    if (0) test_uqshl_b_b_0(TyB);
   4660    if (0) test_uqshl_b_b_4(TyB);
   4661    if (0) test_uqshl_b_b_7(TyB);
   4662    if (0) test_sqshlu_d_d_0(TyD);
   4663    if (0) test_sqshlu_d_d_32(TyD);
   4664    if (0) test_sqshlu_d_d_63(TyD);
   4665    if (0) test_sqshlu_s_s_0(TyS);
   4666    if (0) test_sqshlu_s_s_16(TyS);
   4667    if (0) test_sqshlu_s_s_31(TyS);
   4668    if (0) test_sqshlu_h_h_0(TyH);
   4669    if (0) test_sqshlu_h_h_8(TyH);
   4670    if (0) test_sqshlu_h_h_15(TyH);
   4671    if (0) test_sqshlu_b_b_0(TyB);
   4672    if (0) test_sqshlu_b_b_4(TyB);
   4673    if (0) test_sqshlu_b_b_7(TyB);
   4674 
   4675    // sqshl (imm)  2d,4s,2s,8h,4h,16b,8b   _#imm
   4676    // uqshl (imm)  2d,4s,2s,8h,4h,16b,8b   _#imm
   4677    // sqshlu (imm) 2d,4s,2s,8h,4h,16b,8b   _#imm
   4678    if (0) test_sqshl_2d_2d_0(TyD);
   4679    if (0) test_sqshl_2d_2d_32(TyD);
   4680    if (0) test_sqshl_2d_2d_63(TyD);
   4681    if (0) test_sqshl_4s_4s_0(TyS);
   4682    if (0) test_sqshl_4s_4s_16(TyS);
   4683    if (0) test_sqshl_4s_4s_31(TyS);
   4684    if (0) test_sqshl_2s_2s_0(TyS);
   4685    if (0) test_sqshl_2s_2s_16(TyS);
   4686    if (0) test_sqshl_2s_2s_31(TyS);
   4687    if (0) test_sqshl_8h_8h_0(TyH);
   4688    if (0) test_sqshl_8h_8h_8(TyH);
   4689    if (0) test_sqshl_8h_8h_15(TyH);
   4690    if (0) test_sqshl_4h_4h_0(TyH);
   4691    if (0) test_sqshl_4h_4h_8(TyH);
   4692    if (0) test_sqshl_4h_4h_15(TyH);
   4693    if (0) test_sqshl_16b_16b_0(TyB);
   4694    if (0) test_sqshl_16b_16b_3(TyB);
   4695    if (0) test_sqshl_16b_16b_7(TyB);
   4696    if (0) test_sqshl_8b_8b_0(TyB);
   4697    if (0) test_sqshl_8b_8b_3(TyB);
   4698    if (0) test_sqshl_8b_8b_7(TyB);
   4699    if (0) test_uqshl_2d_2d_0(TyD);
   4700    if (0) test_uqshl_2d_2d_32(TyD);
   4701    if (0) test_uqshl_2d_2d_63(TyD);
   4702    if (0) test_uqshl_4s_4s_0(TyS);
   4703    if (0) test_uqshl_4s_4s_16(TyS);
   4704    if (0) test_uqshl_4s_4s_31(TyS);
   4705    if (0) test_uqshl_2s_2s_0(TyS);
   4706    if (0) test_uqshl_2s_2s_16(TyS);
   4707    if (0) test_uqshl_2s_2s_31(TyS);
   4708    if (0) test_uqshl_8h_8h_0(TyH);
   4709    if (0) test_uqshl_8h_8h_8(TyH);
   4710    if (0) test_uqshl_8h_8h_15(TyH);
   4711    if (0) test_uqshl_4h_4h_0(TyH);
   4712    if (0) test_uqshl_4h_4h_8(TyH);
   4713    if (0) test_uqshl_4h_4h_15(TyH);
   4714    if (0) test_uqshl_16b_16b_0(TyB);
   4715    if (0) test_uqshl_16b_16b_3(TyB);
   4716    if (0) test_uqshl_16b_16b_7(TyB);
   4717    if (0) test_uqshl_8b_8b_0(TyB);
   4718    if (0) test_uqshl_8b_8b_3(TyB);
   4719    if (0) test_uqshl_8b_8b_7(TyB);
   4720    if (0) test_sqshlu_2d_2d_0(TyD);
   4721    if (0) test_sqshlu_2d_2d_32(TyD);
   4722    if (0) test_sqshlu_2d_2d_63(TyD);
   4723    if (0) test_sqshlu_4s_4s_0(TyS);
   4724    if (0) test_sqshlu_4s_4s_16(TyS);
   4725    if (0) test_sqshlu_4s_4s_31(TyS);
   4726    if (0) test_sqshlu_2s_2s_0(TyS);
   4727    if (0) test_sqshlu_2s_2s_16(TyS);
   4728    if (0) test_sqshlu_2s_2s_31(TyS);
   4729    if (0) test_sqshlu_8h_8h_0(TyH);
   4730    if (0) test_sqshlu_8h_8h_8(TyH);
   4731    if (0) test_sqshlu_8h_8h_15(TyH);
   4732    if (0) test_sqshlu_4h_4h_0(TyH);
   4733    if (0) test_sqshlu_4h_4h_8(TyH);
   4734    if (0) test_sqshlu_4h_4h_15(TyH);
   4735    if (0) test_sqshlu_16b_16b_0(TyB);
   4736    if (0) test_sqshlu_16b_16b_3(TyB);
   4737    if (0) test_sqshlu_16b_16b_7(TyB);
   4738    if (0) test_sqshlu_8b_8b_0(TyB);
   4739    if (0) test_sqshlu_8b_8b_3(TyB);
   4740    if (0) test_sqshlu_8b_8b_7(TyB);
   4741 
   4742    // sqxtn        s_d,h_s,b_h
   4743    // uqxtn        s_d,h_s,b_h
   4744    // sqxtun       s_d,h_s,b_h
   4745    if (0) test_sqxtn_s_d(TyD);
   4746    if (0) test_sqxtn_h_s(TyS);
   4747    if (0) test_sqxtn_b_h(TyH);
   4748    if (0) test_uqxtn_s_d(TyD);
   4749    if (0) test_uqxtn_h_s(TyS);
   4750    if (0) test_uqxtn_b_h(TyH);
   4751    if (0) test_sqxtun_s_d(TyD);
   4752    if (0) test_sqxtun_h_s(TyS);
   4753    if (0) test_sqxtun_b_h(TyH);
   4754 
   4755    // sqxtn{2}     2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   4756    // uqxtn{2}     2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   4757    // sqxtun{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   4758    if (0) test_sqxtn_2s_2d(TyD);
   4759    if (0) test_sqxtn2_4s_2d(TyD);
   4760    if (0) test_sqxtn_4h_4s(TyS);
   4761    if (0) test_sqxtn2_8h_4s(TyS);
   4762    if (0) test_sqxtn_8b_8h(TyH);
   4763    if (0) test_sqxtn2_16b_8h(TyH);
   4764    if (0) test_uqxtn_2s_2d(TyD);
   4765    if (0) test_uqxtn2_4s_2d(TyD);
   4766    if (0) test_uqxtn_4h_4s(TyS);
   4767    if (0) test_uqxtn2_8h_4s(TyS);
   4768    if (0) test_uqxtn_8b_8h(TyH);
   4769    if (0) test_uqxtn2_16b_8h(TyH);
   4770    if (0) test_sqxtun_2s_2d(TyD);
   4771    if (0) test_sqxtun2_4s_2d(TyD);
   4772    if (0) test_sqxtun_4h_4s(TyS);
   4773    if (0) test_sqxtun2_8h_4s(TyS);
   4774    if (0) test_sqxtun_8b_8h(TyH);
   4775    if (0) test_sqxtun2_16b_8h(TyH);
   4776 
   4777    // srhadd       4s,2s,8h,4h,16b,8b
   4778    // urhadd       4s,2s,8h,4h,16b,8b
   4779    if (0) test_srhadd_4s_4s_4s(TyS);
   4780    if (0) test_srhadd_2s_2s_2s(TyS);
   4781    if (0) test_srhadd_8h_8h_8h(TyH);
   4782    if (0) test_srhadd_4h_4h_4h(TyH);
   4783    if (0) test_srhadd_16b_16b_16b(TyB);
   4784    if (0) test_srhadd_8b_8b_8b(TyB);
   4785    if (0) test_urhadd_4s_4s_4s(TyS);
   4786    if (0) test_urhadd_2s_2s_2s(TyS);
   4787    if (0) test_urhadd_8h_8h_8h(TyH);
   4788    if (0) test_urhadd_4h_4h_4h(TyH);
   4789    if (0) test_urhadd_16b_16b_16b(TyB);
   4790    if (0) test_urhadd_8b_8b_8b(TyB);
   4791 
   4792    // sshl (reg)   d
   4793    // ushl (reg)   d
   4794    if (0) test_sshl_d_d_d(TyD);
   4795    if (0) test_ushl_d_d_d(TyD);
   4796 
   4797    // sshl (reg)   2d,4s,2s,8h,4h,16b,8b
   4798    // ushl (reg)   2d,4s,2s,8h,4h,16b,8b
   4799    if (0) test_sshl_2d_2d_2d(TyD);
   4800    if (0) test_sshl_4s_4s_4s(TyS);
   4801    if (0) test_sshl_2s_2s_2s(TyS);
   4802    if (0) test_sshl_8h_8h_8h(TyH);
   4803    if (0) test_sshl_4h_4h_4h(TyH);
   4804    if (0) test_sshl_16b_16b_16b(TyB);
   4805    if (0) test_sshl_8b_8b_8b(TyB);
   4806    if (0) test_ushl_2d_2d_2d(TyD);
   4807    if (0) test_ushl_4s_4s_4s(TyS);
   4808    if (0) test_ushl_2s_2s_2s(TyS);
   4809    if (0) test_ushl_8h_8h_8h(TyH);
   4810    if (0) test_ushl_4h_4h_4h(TyH);
   4811    if (0) test_ushl_16b_16b_16b(TyB);
   4812    if (0) test_ushl_8b_8b_8b(TyB);
   4813 
   4814    // shl  (imm)   d
   4815    // sshr (imm)   d
   4816    // ushr (imm)   d
   4817    if (1) test_shl_d_d_0(TyD);
   4818    if (1) test_shl_d_d_32(TyD);
   4819    if (1) test_shl_d_d_63(TyD);
   4820    if (0) test_sshr_d_d_1(TyD);
   4821    if (0) test_sshr_d_d_32(TyD);
   4822    if (0) test_sshr_d_d_64(TyD);
   4823    if (1) test_ushr_d_d_1(TyD);
   4824    if (1) test_ushr_d_d_32(TyD);
   4825    if (0) test_ushr_d_d_64(TyD);
   4826 
   4827    // shl  (imm)   16b,8b,8h,4h,4s,2s,2d
   4828    // sshr (imm)   2d,4s,2s,8h,4h,16b,8b
   4829    // ushr (imm)   2d,4s,2s,8h,4h,16b,8b
   4830    if (0) test_shl_2d_2d_0(TyD);
   4831    if (1) test_shl_2d_2d_13(TyD);
   4832    if (1) test_shl_2d_2d_63(TyD);
   4833    if (0) test_shl_4s_4s_0(TyS);
   4834    if (1) test_shl_4s_4s_13(TyS);
   4835    if (1) test_shl_4s_4s_31(TyS);
   4836    if (0) test_shl_2s_2s_0(TyS);
   4837    if (1) test_shl_2s_2s_13(TyS);
   4838    if (1) test_shl_2s_2s_31(TyS);
   4839    if (0) test_shl_8h_8h_0(TyH);
   4840    if (1) test_shl_8h_8h_13(TyH);
   4841    if (1) test_shl_8h_8h_15(TyH);
   4842    if (0) test_shl_4h_4h_0(TyH);
   4843    if (1) test_shl_4h_4h_13(TyH);
   4844    if (1) test_shl_4h_4h_15(TyH);
   4845    if (0) test_shl_16b_16b_0(TyB);
   4846    if (1) test_shl_16b_16b_7(TyB);
   4847    if (0) test_shl_8b_8b_0(TyB);
   4848    if (1) test_shl_8b_8b_7(TyB);
   4849    if (1) test_sshr_2d_2d_1(TyD);
   4850    if (1) test_sshr_2d_2d_13(TyD);
   4851    if (0) test_sshr_2d_2d_64(TyD);
   4852    if (1) test_sshr_4s_4s_1(TyS);
   4853    if (1) test_sshr_4s_4s_13(TyS);
   4854    if (0) test_sshr_4s_4s_32(TyS);
   4855    if (1) test_sshr_2s_2s_1(TyS);
   4856    if (1) test_sshr_2s_2s_13(TyS);
   4857    if (0) test_sshr_2s_2s_32(TyS);
   4858    if (1) test_sshr_8h_8h_1(TyH);
   4859    if (1) test_sshr_8h_8h_13(TyH);
   4860    if (0) test_sshr_8h_8h_16(TyH);
   4861    if (1) test_sshr_4h_4h_1(TyH);
   4862    if (1) test_sshr_4h_4h_13(TyH);
   4863    if (0) test_sshr_4h_4h_16(TyH);
   4864    if (1) test_sshr_16b_16b_1(TyB);
   4865    if (0) test_sshr_16b_16b_8(TyB);
   4866    if (1) test_sshr_8b_8b_1(TyB);
   4867    if (0) test_sshr_8b_8b_8(TyB);
   4868    if (1) test_ushr_2d_2d_1(TyD);
   4869    if (1) test_ushr_2d_2d_13(TyD);
   4870    if (0) test_ushr_2d_2d_64(TyD);
   4871    if (1) test_ushr_4s_4s_1(TyS);
   4872    if (1) test_ushr_4s_4s_13(TyS);
   4873    if (0) test_ushr_4s_4s_32(TyS);
   4874    if (1) test_ushr_2s_2s_1(TyS);
   4875    if (1) test_ushr_2s_2s_13(TyS);
   4876    if (0) test_ushr_2s_2s_32(TyS);
   4877    if (1) test_ushr_8h_8h_1(TyH);
   4878    if (1) test_ushr_8h_8h_13(TyH);
   4879    if (0) test_ushr_8h_8h_16(TyH);
   4880    if (1) test_ushr_4h_4h_1(TyH);
   4881    if (1) test_ushr_4h_4h_13(TyH);
   4882    if (0) test_ushr_4h_4h_16(TyH);
   4883    if (1) test_ushr_16b_16b_1(TyB);
   4884    if (0) test_ushr_16b_16b_8(TyB);
   4885    if (1) test_ushr_8b_8b_1(TyB);
   4886    if (0) test_ushr_8b_8b_8(TyB);
   4887 
   4888    // ssra (imm)   d
   4889    // usra (imm)   d
   4890    if (0) test_ssra_d_d_1(TyD);
   4891    if (0) test_ssra_d_d_32(TyD);
   4892    if (0) test_ssra_d_d_64(TyD);
   4893    if (0) test_usra_d_d_1(TyD);
   4894    if (0) test_usra_d_d_32(TyD);
   4895    if (0) test_usra_d_d_64(TyD);
   4896 
   4897    // ssra (imm)   2d,4s,2s,8h,4h,16b,8b
   4898    // usra (imm)   2d,4s,2s,8h,4h,16b,8b
   4899    if (0) test_ssra_2d_2d_1(TyD);
   4900    if (0) test_ssra_2d_2d_32(TyD);
   4901    if (0) test_ssra_2d_2d_64(TyD);
   4902    if (0) test_ssra_4s_4s_1(TyS);
   4903    if (0) test_ssra_4s_4s_16(TyS);
   4904    if (0) test_ssra_4s_4s_32(TyS);
   4905    if (0) test_ssra_2s_2s_1(TyS);
   4906    if (0) test_ssra_2s_2s_16(TyS);
   4907    if (0) test_ssra_2s_2s_32(TyS);
   4908    if (0) test_ssra_8h_8h_1(TyH);
   4909    if (0) test_ssra_8h_8h_8(TyH);
   4910    if (0) test_ssra_8h_8h_16(TyH);
   4911    if (0) test_ssra_4h_4h_1(TyH);
   4912    if (0) test_ssra_4h_4h_8(TyH);
   4913    if (0) test_ssra_4h_4h_16(TyH);
   4914    if (0) test_ssra_16b_16b_1(TyB);
   4915    if (0) test_ssra_16b_16b_3(TyB);
   4916    if (0) test_ssra_16b_16b_8(TyB);
   4917    if (0) test_ssra_8b_8b_1(TyB);
   4918    if (0) test_ssra_8b_8b_3(TyB);
   4919    if (0) test_ssra_8b_8b_8(TyB);
   4920    if (0) test_usra_2d_2d_1(TyD);
   4921    if (0) test_usra_2d_2d_32(TyD);
   4922    if (0) test_usra_2d_2d_64(TyD);
   4923    if (0) test_usra_4s_4s_1(TyS);
   4924    if (0) test_usra_4s_4s_16(TyS);
   4925    if (0) test_usra_4s_4s_32(TyS);
   4926    if (0) test_usra_2s_2s_1(TyS);
   4927    if (0) test_usra_2s_2s_16(TyS);
   4928    if (0) test_usra_2s_2s_32(TyS);
   4929    if (0) test_usra_8h_8h_1(TyH);
   4930    if (0) test_usra_8h_8h_8(TyH);
   4931    if (0) test_usra_8h_8h_16(TyH);
   4932    if (0) test_usra_4h_4h_1(TyH);
   4933    if (0) test_usra_4h_4h_8(TyH);
   4934    if (0) test_usra_4h_4h_16(TyH);
   4935    if (0) test_usra_16b_16b_1(TyB);
   4936    if (0) test_usra_16b_16b_3(TyB);
   4937    if (0) test_usra_16b_16b_8(TyB);
   4938    if (0) test_usra_8b_8b_1(TyB);
   4939    if (0) test_usra_8b_8b_3(TyB);
   4940    if (0) test_usra_8b_8b_8(TyB);
   4941 
   4942    // srshl (reg)  d
   4943    // urshl (reg)  d
   4944    if (0) test_srshl_d_d_d(TyD);
   4945    if (0) test_urshl_d_d_d(TyD);
   4946 
   4947    // srshl (reg)  2d,4s,2s,8h,4h,16b,8b
   4948    // urshl (reg)  2d,4s,2s,8h,4h,16b,8b
   4949    if (0) test_srshl_2d_2d_2d(TyD);
   4950    if (0) test_srshl_4s_4s_4s(TyS);
   4951    if (0) test_srshl_2s_2s_2s(TyS);
   4952    if (0) test_srshl_8h_8h_8h(TyH);
   4953    if (0) test_srshl_4h_4h_4h(TyH);
   4954    if (0) test_srshl_16b_16b_16b(TyB);
   4955    if (0) test_srshl_8b_8b_8b(TyB);
   4956    if (0) test_urshl_2d_2d_2d(TyD);
   4957    if (0) test_urshl_4s_4s_4s(TyS);
   4958    if (0) test_urshl_2s_2s_2s(TyS);
   4959    if (0) test_urshl_8h_8h_8h(TyH);
   4960    if (0) test_urshl_4h_4h_4h(TyH);
   4961    if (0) test_urshl_16b_16b_16b(TyB);
   4962    if (0) test_urshl_8b_8b_8b(TyB);
   4963 
   4964    // srshr (imm)  d
   4965    // urshr (imm)  d
   4966    if (0) test_srshr_d_d_1(TyD);
   4967    if (0) test_srshr_d_d_32(TyD);
   4968    if (0) test_srshr_d_d_64(TyD);
   4969    if (0) test_urshr_d_d_1(TyD);
   4970    if (0) test_urshr_d_d_32(TyD);
   4971    if (0) test_urshr_d_d_64(TyD);
   4972 
   4973    // srshr (imm)  2d,4s,2s,8h,4h,16b,8b
   4974    // urshr (imm)  2d,4s,2s,8h,4h,16b,8b
   4975    if (0) test_srshr_2d_2d_1(TyD);
   4976    if (0) test_srshr_2d_2d_32(TyD);
   4977    if (0) test_srshr_2d_2d_64(TyD);
   4978    if (0) test_srshr_4s_4s_1(TyS);
   4979    if (0) test_srshr_4s_4s_16(TyS);
   4980    if (0) test_srshr_4s_4s_32(TyS);
   4981    if (0) test_srshr_2s_2s_1(TyS);
   4982    if (0) test_srshr_2s_2s_16(TyS);
   4983    if (0) test_srshr_2s_2s_32(TyS);
   4984    if (0) test_srshr_8h_8h_1(TyH);
   4985    if (0) test_srshr_8h_8h_8(TyH);
   4986    if (0) test_srshr_8h_8h_16(TyH);
   4987    if (0) test_srshr_4h_4h_1(TyH);
   4988    if (0) test_srshr_4h_4h_8(TyH);
   4989    if (0) test_srshr_4h_4h_16(TyH);
   4990    if (0) test_srshr_16b_16b_1(TyB);
   4991    if (0) test_srshr_16b_16b_3(TyB);
   4992    if (0) test_srshr_16b_16b_8(TyB);
   4993    if (0) test_srshr_8b_8b_1(TyB);
   4994    if (0) test_srshr_8b_8b_3(TyB);
   4995    if (0) test_srshr_8b_8b_8(TyB);
   4996    if (0) test_urshr_2d_2d_1(TyD);
   4997    if (0) test_urshr_2d_2d_32(TyD);
   4998    if (0) test_urshr_2d_2d_64(TyD);
   4999    if (0) test_urshr_4s_4s_1(TyS);
   5000    if (0) test_urshr_4s_4s_16(TyS);
   5001    if (0) test_urshr_4s_4s_32(TyS);
   5002    if (0) test_urshr_2s_2s_1(TyS);
   5003    if (0) test_urshr_2s_2s_16(TyS);
   5004    if (0) test_urshr_2s_2s_32(TyS);
   5005    if (0) test_urshr_8h_8h_1(TyH);
   5006    if (0) test_urshr_8h_8h_8(TyH);
   5007    if (0) test_urshr_8h_8h_16(TyH);
   5008    if (0) test_urshr_4h_4h_1(TyH);
   5009    if (0) test_urshr_4h_4h_8(TyH);
   5010    if (0) test_urshr_4h_4h_16(TyH);
   5011    if (0) test_urshr_16b_16b_1(TyB);
   5012    if (0) test_urshr_16b_16b_3(TyB);
   5013    if (0) test_urshr_16b_16b_8(TyB);
   5014    if (0) test_urshr_8b_8b_1(TyB);
   5015    if (0) test_urshr_8b_8b_3(TyB);
   5016    if (0) test_urshr_8b_8b_8(TyB);
   5017 
   5018    // srsra (imm)  d
   5019    // ursra (imm)  d
   5020    if (0) test_srsra_d_d_1(TyD);
   5021    if (0) test_srsra_d_d_32(TyD);
   5022    if (0) test_srsra_d_d_64(TyD);
   5023    if (0) test_ursra_d_d_1(TyD);
   5024    if (0) test_ursra_d_d_32(TyD);
   5025    if (0) test_ursra_d_d_64(TyD);
   5026 
   5027    // srsra (imm)  2d,4s,2s,8h,4h,16b,8b
   5028    // ursra (imm)  2d,4s,2s,8h,4h,16b,8b
   5029    if (0) test_srsra_2d_2d_1(TyD);
   5030    if (0) test_srsra_2d_2d_32(TyD);
   5031    if (0) test_srsra_2d_2d_64(TyD);
   5032    if (0) test_srsra_4s_4s_1(TyS);
   5033    if (0) test_srsra_4s_4s_16(TyS);
   5034    if (0) test_srsra_4s_4s_32(TyS);
   5035    if (0) test_srsra_2s_2s_1(TyS);
   5036    if (0) test_srsra_2s_2s_16(TyS);
   5037    if (0) test_srsra_2s_2s_32(TyS);
   5038    if (0) test_srsra_8h_8h_1(TyH);
   5039    if (0) test_srsra_8h_8h_8(TyH);
   5040    if (0) test_srsra_8h_8h_16(TyH);
   5041    if (0) test_srsra_4h_4h_1(TyH);
   5042    if (0) test_srsra_4h_4h_8(TyH);
   5043    if (0) test_srsra_4h_4h_16(TyH);
   5044    if (0) test_srsra_16b_16b_1(TyB);
   5045    if (0) test_srsra_16b_16b_3(TyB);
   5046    if (0) test_srsra_16b_16b_8(TyB);
   5047    if (0) test_srsra_8b_8b_1(TyB);
   5048    if (0) test_srsra_8b_8b_3(TyB);
   5049    if (0) test_srsra_8b_8b_8(TyB);
   5050    if (0) test_ursra_2d_2d_1(TyD);
   5051    if (0) test_ursra_2d_2d_32(TyD);
   5052    if (0) test_ursra_2d_2d_64(TyD);
   5053    if (0) test_ursra_4s_4s_1(TyS);
   5054    if (0) test_ursra_4s_4s_16(TyS);
   5055    if (0) test_ursra_4s_4s_32(TyS);
   5056    if (0) test_ursra_2s_2s_1(TyS);
   5057    if (0) test_ursra_2s_2s_16(TyS);
   5058    if (0) test_ursra_2s_2s_32(TyS);
   5059    if (0) test_ursra_8h_8h_1(TyH);
   5060    if (0) test_ursra_8h_8h_8(TyH);
   5061    if (0) test_ursra_8h_8h_16(TyH);
   5062    if (0) test_ursra_4h_4h_1(TyH);
   5063    if (0) test_ursra_4h_4h_8(TyH);
   5064    if (0) test_ursra_4h_4h_16(TyH);
   5065    if (0) test_ursra_16b_16b_1(TyB);
   5066    if (0) test_ursra_16b_16b_3(TyB);
   5067    if (0) test_ursra_16b_16b_8(TyB);
   5068    if (0) test_ursra_8b_8b_1(TyB);
   5069    if (0) test_ursra_8b_8b_3(TyB);
   5070    if (0) test_ursra_8b_8b_8(TyB);
   5071 
   5072    // sshll{2} (imm)  2d_2s/4s, 4s_4h/8h, 8h_8b/16b
   5073    // ushll{2} (imm)  2d_2s/4s, 4s_4h/8h, 8h_8b/16b
   5074    if (1) test_sshll_2d_2s_0(TyS);
   5075    if (1) test_sshll_2d_2s_15(TyS);
   5076    if (1) test_sshll_2d_2s_31(TyS);
   5077    if (1) test_sshll2_2d_4s_0(TyS);
   5078    if (1) test_sshll2_2d_4s_15(TyS);
   5079    if (1) test_sshll2_2d_4s_31(TyS);
   5080    if (1) test_sshll_4s_4h_0(TyH);
   5081    if (1) test_sshll_4s_4h_7(TyH);
   5082    if (1) test_sshll_4s_4h_15(TyH);
   5083    if (1) test_sshll2_4s_8h_0(TyH);
   5084    if (1) test_sshll2_4s_8h_7(TyH);
   5085    if (1) test_sshll2_4s_8h_15(TyH);
   5086    if (1) test_sshll_8h_8b_0(TyB);
   5087    if (1) test_sshll_8h_8b_3(TyB);
   5088    if (1) test_sshll_8h_8b_7(TyB);
   5089    if (1) test_sshll2_8h_16b_0(TyB);
   5090    if (1) test_sshll2_8h_16b_3(TyB);
   5091    if (1) test_sshll2_8h_16b_7(TyB);
   5092    if (1) test_ushll_2d_2s_0(TyS);
   5093    if (1) test_ushll_2d_2s_15(TyS);
   5094    if (1) test_ushll_2d_2s_31(TyS);
   5095    if (1) test_ushll2_2d_4s_0(TyS);
   5096    if (1) test_ushll2_2d_4s_15(TyS);
   5097    if (1) test_ushll2_2d_4s_31(TyS);
   5098    if (1) test_ushll_4s_4h_0(TyH);
   5099    if (1) test_ushll_4s_4h_7(TyH);
   5100    if (1) test_ushll_4s_4h_15(TyH);
   5101    if (1) test_ushll2_4s_8h_0(TyH);
   5102    if (1) test_ushll2_4s_8h_7(TyH);
   5103    if (1) test_ushll2_4s_8h_15(TyH);
   5104    if (1) test_ushll_8h_8b_0(TyB);
   5105    if (1) test_ushll_8h_8b_3(TyB);
   5106    if (1) test_ushll_8h_8b_7(TyB);
   5107    if (1) test_ushll2_8h_16b_0(TyB);
   5108    if (1) test_ushll2_8h_16b_3(TyB);
   5109    if (1) test_ushll2_8h_16b_7(TyB);
   5110 
   5111    // suqadd  d,s,h,b
   5112    // usqadd  d,s,h,b
   5113    if (0) test_suqadd_d_d(TyD);
   5114    if (0) test_suqadd_s_s(TyS);
   5115    if (0) test_suqadd_h_h(TyH);
   5116    if (0) test_suqadd_b_b(TyB);
   5117    if (0) test_usqadd_d_d(TyD);
   5118    if (0) test_usqadd_s_s(TyS);
   5119    if (0) test_usqadd_h_h(TyH);
   5120    if (0) test_usqadd_b_b(TyB);
   5121 
   5122    // suqadd  2d,4s,2s,8h,4h,16b,8b
   5123    // usqadd  2d,4s,2s,8h,4h,16b,8b
   5124    if (0) test_suqadd_2d_2d(TyD);
   5125    if (0) test_suqadd_4s_4s(TyS);
   5126    if (0) test_suqadd_2s_2s(TyS);
   5127    if (0) test_suqadd_8h_8h(TyH);
   5128    if (0) test_suqadd_4h_4h(TyH);
   5129    if (0) test_suqadd_16b_16b(TyB);
   5130    if (0) test_suqadd_8b_8b(TyB);
   5131    if (0) test_usqadd_2d_2d(TyD);
   5132    if (0) test_usqadd_4s_4s(TyS);
   5133    if (0) test_usqadd_2s_2s(TyS);
   5134    if (0) test_usqadd_8h_8h(TyH);
   5135    if (0) test_usqadd_4h_4h(TyH);
   5136    if (0) test_usqadd_16b_16b(TyB);
   5137    if (0) test_usqadd_8b_8b(TyB);
   5138 
   5139    // tbl     8b_{16b}_8b, 16b_{16b}_16b
   5140    // tbl     8b_{16b,16b}_8b, 16b_{16b,16b}_16b
   5141    // tbl     8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b
   5142    // tbl     8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b
   5143    if (1) test_tbl_16b_1reg(TyB);
   5144    if (1) test_tbl_16b_2reg(TyB);
   5145    if (1) test_tbl_16b_3reg(TyB);
   5146    if (1) test_tbl_16b_4reg(TyB);
   5147    if (1) test_tbl_8b_1reg(TyB);
   5148    if (1) test_tbl_8b_2reg(TyB);
   5149    if (1) test_tbl_8b_3reg(TyB);
   5150    if (1) test_tbl_8b_4reg(TyB);
   5151 
   5152    // tbx     8b_{16b}_8b, 16b_{16b}_16b
   5153    // tbx     8b_{16b,16b}_8b, 16b_{16b,16b}_16b
   5154    // tbx     8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b
   5155    // tbx     8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b
   5156    if (1) test_tbx_16b_1reg(TyB);
   5157    if (1) test_tbx_16b_2reg(TyB);
   5158    if (1) test_tbx_16b_3reg(TyB);
   5159    if (1) test_tbx_16b_4reg(TyB);
   5160    if (1) test_tbx_8b_1reg(TyB);
   5161    if (1) test_tbx_8b_2reg(TyB);
   5162    if (1) test_tbx_8b_3reg(TyB);
   5163    if (1) test_tbx_8b_4reg(TyB);
   5164 
   5165    // trn1    2d,4s,2s,8h,4h,16b,8b
   5166    // trn2    2d,4s,2s,8h,4h,16b,8b
   5167    if (0) test_trn1_2d_2d_2d(TyD);
   5168    if (0) test_trn1_4s_4s_4s(TyS);
   5169    if (0) test_trn1_2s_2s_2s(TyS);
   5170    if (0) test_trn1_8h_8h_8h(TyH);
   5171    if (0) test_trn1_4h_4h_4h(TyH);
   5172    if (0) test_trn1_16b_16b_16b(TyB);
   5173    if (0) test_trn1_8b_8b_8b(TyB);
   5174    if (0) test_trn2_2d_2d_2d(TyD);
   5175    if (0) test_trn2_4s_4s_4s(TyS);
   5176    if (0) test_trn2_2s_2s_2s(TyS);
   5177    if (0) test_trn2_8h_8h_8h(TyH);
   5178    if (0) test_trn2_4h_4h_4h(TyH);
   5179    if (0) test_trn2_16b_16b_16b(TyB);
   5180    if (0) test_trn2_8b_8b_8b(TyB);
   5181 
   5182    // urecpe      4s,2s
   5183    // ursqrte     4s,2s
   5184    if (0) test_urecpe_4s_4s(TyS);
   5185    if (0) test_urecpe_2s_2s(TyS);
   5186    if (0) test_ursqrte_4s_4s(TyS);
   5187    if (0) test_ursqrte_2s_2s(TyS);
   5188 
   5189    // uzp1      2d,4s,2s,8h,4h,16b,8b
   5190    // uzp2      2d,4s,2s,8h,4h,16b,8b
   5191    // zip1      2d,4s,2s,8h,4h,16b,8b
   5192    // zip2      2d,4s,2s,8h,4h,16b,8b
   5193    if (0) test_uzp1_2d_2d_2d(TyD);
   5194    if (0) test_uzp1_4s_4s_4s(TyS);
   5195    if (0) test_uzp1_2s_2s_2s(TyS);
   5196    if (0) test_uzp1_8h_8h_8h(TyH);
   5197    if (0) test_uzp1_4h_4h_4h(TyH);
   5198    if (0) test_uzp1_16b_16b_16b(TyB);
   5199    if (0) test_uzp1_8b_8b_8b(TyB);
   5200    if (0) test_uzp2_2d_2d_2d(TyD);
   5201    if (0) test_uzp2_4s_4s_4s(TyS);
   5202    if (0) test_uzp2_2s_2s_2s(TyS);
   5203    if (0) test_uzp2_8h_8h_8h(TyH);
   5204    if (0) test_uzp2_4h_4h_4h(TyH);
   5205    if (0) test_uzp2_16b_16b_16b(TyB);
   5206    if (0) test_uzp2_8b_8b_8b(TyB);
   5207    if (0) test_zip1_2d_2d_2d(TyD);
   5208    if (0) test_zip1_4s_4s_4s(TyS);
   5209    if (0) test_zip1_2s_2s_2s(TyS);
   5210    if (0) test_zip1_8h_8h_8h(TyH);
   5211    if (0) test_zip1_4h_4h_4h(TyH);
   5212    if (0) test_zip1_16b_16b_16b(TyB);
   5213    if (0) test_zip1_8b_8b_8b(TyB);
   5214    if (0) test_zip2_2d_2d_2d(TyD);
   5215    if (0) test_zip2_4s_4s_4s(TyS);
   5216    if (0) test_zip2_2s_2s_2s(TyS);
   5217    if (0) test_zip2_8h_8h_8h(TyH);
   5218    if (0) test_zip2_4h_4h_4h(TyH);
   5219    if (0) test_zip2_16b_16b_16b(TyB);
   5220    if (0) test_zip2_8b_8b_8b(TyB);
   5221 
   5222    // xtn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   5223    if (1) test_xtn_2s_2d(TyD);
   5224    if (1) test_xtn2_4s_2d(TyD);
   5225    if (1) test_xtn_4h_4s(TyS);
   5226    if (1) test_xtn2_8h_4s(TyS);
   5227    if (1) test_xtn_8b_8h(TyH);
   5228    if (1) test_xtn2_16b_8h(TyH);
   5229 
   5230    // ======================== MEM ========================
   5231 
   5232    // ld1  (multiple 1-element structures to 1/2/3/4 regs)
   5233    // ld1  (single 1-element structure to one lane of 1 reg)
   5234    // ld1r (single 1-element structure and rep to all lanes of 1 reg)
   5235 
   5236    // ld2  (multiple 2-element structures to 2 regs)
   5237    // ld2  (single 2-element structure to one lane of 2 regs)
   5238    // ld2r (single 2-element structure and rep to all lanes of 2 regs)
   5239 
   5240    // ld3  (multiple 3-element structures to 3 regs)
   5241    // ld3  (single 3-element structure to one lane of 3 regs)
   5242    // ld3r (single 3-element structure and rep to all lanes of 3 regs)
   5243 
   5244    // ld4  (multiple 4-element structures to 4 regs)
   5245    // ld4  (single 4-element structure to one lane of 4 regs)
   5246    // ld4r (single 4-element structure and rep to all lanes of 4 regs)
   5247 
   5248    // ldnp  q_q_addr,d_d_addr,s_s_addr  (load pair w/ non-temporal hint)
   5249    //       addr = reg + uimm7 * reg_size
   5250 
   5251    // ldp   q_q_addr,d_d_addr,s_s_addr  (load pair)
   5252    //       addr = [Xn|SP],#imm   or [Xn|SP,#imm]!  or [Xn|SP,#imm]
   5253 
   5254    // ldr   q,d,s,h,b from addr
   5255    //       addr = [Xn|SP],#imm   or [Xn|SP,#imm]!  or [Xn|SP,#imm]
   5256 
   5257    // ldr   q,d,s from  pc+#imm19
   5258 
   5259    // ldr   q,d,s,h,b from addr
   5260    //       addr = [Xn|SP, R <extend> <shift]
   5261 
   5262    // ldur  q,d,s,h,b from addr
   5263    //       addr = [Xn|SP,#imm] (unscaled offset)
   5264 
   5265    // st1 (multiple 1-element structures from 1/2/3/4 regs)
   5266    // st1 (single 1-element structure for 1 lane of 1 reg)
   5267 
   5268    // st2 (multiple 2-element structures from 2 regs)
   5269    // st2 (single 2-element structure from 1 lane of 2 regs)
   5270 
   5271    // st3 (multiple 3-element structures from 3 regs)
   5272    // st3 (single 3-element structure from 1 lane of 3 regs)
   5273 
   5274    // st4 (multiple 4-element structures from 4 regs)
   5275    // st4 (single 4-element structure from one lane of 4 regs)
   5276 
   5277    // stnp q_q_addr, d_d_addr, s_s_addr
   5278    //      addr = [Xn|SP, #imm]
   5279 
   5280    // stp  q_q_addr, d_d_addr, s_s_addr
   5281    //      addr = [Xn|SP], #imm  or [Xn|SP, #imm]!  or [Xn|SP, #imm]
   5282 
   5283    // str  q,d,s,h,b_addr
   5284    //      addr = [Xn|SP], #simm  or [Xn|SP, #simm]!  or [Xn|SP, #pimm]
   5285 
   5286    // str   q,d,s,h,b_addr
   5287    //       addr = [Xn|SP, R <extend> <shift]
   5288 
   5289    // stur  q,d,s,h,b_addr
   5290    //       addr = [Xn|SP,#imm] (unscaled offset)
   5291 
   5292    // ======================== CRYPTO ========================
   5293 
   5294    // aesd       16b (aes single round decryption)
   5295    // aese       16b (aes single round encryption)
   5296    // aesimc     16b (aes inverse mix columns)
   5297    // aesmc      16b (aes mix columns)
   5298 
   5299    // sha1c      q_s_4s
   5300    // sha1h      s_s
   5301    // sha1m      q_s_4s
   5302    // sha1p      q_s_4s
   5303    // sha1su0    4s_4s_4s
   5304    // sha1su1    4s_4s
   5305 
   5306    // sha256h2   q_q_4s
   5307    // sha256h    q_q_4s
   5308    // sha256su0  4s_4s
   5309    // sha256su1  4s_4s_4s
   5310 
   5311    return 0;
   5312 }
   5313 
   5314 
   5315 /* ---------------------------------------------------------------- */
   5316 /* -- Alphabetical list of insns                                 -- */
   5317 /* ---------------------------------------------------------------- */
   5318 /*
   5319    abs      d
   5320    abs      2d,4s,2s,8h,4h,16b,8b
   5321    add      d
   5322    add      2d,4s,2s,8h,4h,16b,8b
   5323    addhn    2s.2d.2d, 4s.2d.2d, h_from_s and b_from_h (add and get high half)
   5324    addp     d (add pairs, across)
   5325    addp     2d,4s,2s,8h,4h,16b,8b
   5326    addv     4s,8h,4h,16b,18b (reduce across vector)
   5327    aesd     16b (aes single round decryption)
   5328    aese     16b (aes single round encryption)
   5329    aesimc   16b (aes inverse mix columns)
   5330    aesmc    16b (aes mix columns)
   5331    and      16b,8b
   5332 
   5333    bic      4s,2s,8h,4h (vector, imm)
   5334    also movi, mvni, orr
   5335 
   5336    bic      16b,8b (vector,reg) (bit clear)
   5337    bif      16b,8b (vector) (bit insert if false)
   5338    bit      16b,8b (vector) (bit insert if true)
   5339    bsl      16b,8b (vector) (bit select)
   5340 
   5341    cls      4s,2s,8h,4h,16b,8b (count leading sign bits)
   5342    clz      4s,2s,8h,4h,16b,8b (count leading zero bits)
   5343 
   5344    cmeq     d
   5345    cmeq     2d,4s,2s,8h,4h,16b,8b
   5346    cmeq_z   d
   5347    cmeq_z   2d,4s,2s,8h,4h,16b,8b
   5348 
   5349    cmge     d
   5350    cmge     2d,4s,2s,8h,4h,16b,8b
   5351    cmge_z   d
   5352    cmge_z   2d,4s,2s,8h,4h,16b,8b
   5353 
   5354    cmgt     d
   5355    cmgt     2d,4s,2s,8h,4h,16b,8b
   5356    cmgt_z   d
   5357    cmgt_z   2d,4s,2s,8h,4h,16b,8b
   5358 
   5359    cmhi     d
   5360    cmhi     2d,4s,2s,8h,4h,16b,8b
   5361 
   5362    cmhs     d
   5363    cmhs     2d,4s,2s,8h,4h,16b,8b
   5364 
   5365    cmle_z   d
   5366    cmle_z   2d,4s,2s,8h,4h,16b,8b
   5367 
   5368    cmlt_z   d
   5369    cmlt_z   2d,4s,2s,8h,4h,16b,8b
   5370 
   5371    cmtst    d
   5372    cmtst    2d,4s,2s,8h,4h,16b,8b
   5373 
   5374    cnt      16b,8b (population count per byte)
   5375 
   5376    dup      d,s,h,b (vec elem to scalar)
   5377    dup      2d,4s,2s,8h,4h,16b,8b (vec elem to vector)
   5378    dup      2d,4s,2s,8h,4h,16b,8b (general reg to vector)
   5379 
   5380    eor      16b,8b (vector)
   5381    ext      16b,8b,#imm4 (concat 2 vectors, then slice)
   5382 
   5383    fabd     d,s
   5384    fabd     2d,4s,2s
   5385 
   5386    fabs     d,s
   5387    fabs     2d,4s,2s
   5388 
   5389    facge    s,d  (floating abs compare GE)
   5390    facge    2d,4s,2s
   5391 
   5392    facgt    s,d  (floating abs compare GE)
   5393    facgt    2d,4s,2s
   5394 
   5395    fadd     d,s
   5396    fadd     2d,4s,2s
   5397 
   5398    faddp    d,s (floating add pair)
   5399    faddp    2d,4s,2s
   5400 
   5401    fccmp    d,s (floating point conditional quiet compare)
   5402    fccmpe   d,s (floating point conditional signaling compare)
   5403 
   5404    fcmeq    d,s
   5405    fcmeq    2d,4s,2s
   5406    fcmeq_z  d,s
   5407    fcmeq_z  2d,4s,2s
   5408 
   5409    fcmge    d,s
   5410    fcmge    2d,4s,2s
   5411    fcmge_z  d,s
   5412    fcmge_z  2d,4s,2s
   5413 
   5414    fcmgt    d,s
   5415    fcmgt    2d,4s,2s
   5416    fcmgt_z  d,s
   5417    fcmgt_z  2d,4s,2s
   5418 
   5419    fcmle_z  d,s
   5420    fcmle_z  2d,4s,2s
   5421 
   5422    fcmlt_z  d,s
   5423    fcmlt_z  2d,4s,2s
   5424 
   5425    fcmp     d,s (floating point quiet, set flags)
   5426    fcmp_z   d,s
   5427    fcmpe    d,s (floating point signaling, set flags)
   5428    fcmpe_z  d,s
   5429 
   5430    fcsel    d,s (fp cond select)
   5431 
   5432    fcvt     s_h,d_h,h_s,d_s,h_d,s_d (fp convert, scalar)
   5433 
   5434    fcvtas   d,s  (fcvt to signed int, nearest, ties away)
   5435    fcvtas   2d,4s,2s
   5436    fcvtas   w_s,x_s,w_d,x_d
   5437 
   5438    fcvtau   d,s  (fcvt to unsigned int, nearest, ties away)
   5439    fcvtau   2d,4s,2s
   5440    fcvtau   w_s,x_s,w_d,x_d
   5441 
   5442    fcvtl{2} 4s/4h, 4s/8h, 2d/2s, 2d/4s (float convert to longer form)
   5443 
   5444    fcvtms   d,s  (fcvt to signed int, minus inf)
   5445    fcvtms   2d,4s,2s
   5446    fcvtms   w_s,x_s,w_d,x_d
   5447 
   5448    fcvtmu   d,s  (fcvt to unsigned int, minus inf)
   5449    fcvtmu   2d,4s,2s
   5450    fcvtmu   w_s,x_s,w_d,x_d
   5451 
   5452    fcvtn{2} 4h/4s, 8h/4s, 2s/2d, 4s/2d (float convert to narrower form)
   5453 
   5454    fcvtns   d,s  (fcvt to signed int, nearest)
   5455    fcvtns   2d,4s,2s
   5456    fcvtns   w_s,x_s,w_d,x_d
   5457 
   5458    fcvtnu   d,s  (fcvt to unsigned int, nearest)
   5459    fcvtnu   2d,4s,2s
   5460    fcvtnu   w_s,x_s,w_d,x_d
   5461 
   5462    fcvtps   d,s  (fcvt to signed int, plus inf)
   5463    fcvtps   2d,4s,2s
   5464    fcvtps   w_s,x_s,w_d,x_d
   5465 
   5466    fcvtpu   d,s  (fcvt to unsigned int, plus inf)
   5467    fcvtpu   2d,4s,2s
   5468    fcvtpu   w_s,x_s,w_d,x_d
   5469 
   5470    fcvtxn   s_d (fcvt to lower prec narrow, rounding to odd)
   5471    fcvtxn   2s_2d,4s_2d
   5472 
   5473    fcvtzs   s,d (fcvt to signed fixedpt, to zero) (w/ #fbits)
   5474    fcvtzs   2d,4s,2s
   5475 
   5476    fcvtzs   s,d (fcvt to signed integer, to zero)
   5477    fcvtzs   2d,4s,2s
   5478 
   5479    fcvtzs   w_s,x_s,w_d,x_d (fcvt to signed fixedpt, to zero) (w/ #fbits)
   5480 
   5481    fcvtzs   w_s,x_s,w_d,x_d (fcvt to signed integer, to zero)
   5482 
   5483    fcvtzu   s,d (fcvt to unsigned fixedpt, to zero) (w/ #fbits)
   5484    fcvtzu   2d,4s,2s
   5485 
   5486    fcvtzu   s,d (fcvt to unsigned integer, to zero)
   5487    fcvtzu   2d,4s,2s
   5488 
   5489    fcvtzu   w_s,x_s,w_d,x_d (fcvt to unsigned fixedpt, to zero) (w/ #fbits)
   5490 
   5491    fcvtzu   w_s,x_s,w_d,x_d (fcvt to unsigned integer, to zero)
   5492 
   5493    fdiv     d,s
   5494    fdiv     2d,4s,2s
   5495 
   5496    fmadd    d,s
   5497    fnmadd   d,s
   5498    fnmsub   d,s
   5499    fnmul    d,s
   5500 
   5501    fmax     d,s
   5502    fmin     d,s
   5503 
   5504    fmax     2d,4s,2s
   5505    fmin     2d,4s,2s
   5506 
   5507    fmaxnm   d,s ("max number")
   5508    fminnm   d,s
   5509 
   5510    fmaxnm   2d,4s,2s
   5511    fminnm   2d,4s,2s
   5512 
   5513    fmaxnmp  d_2d,s_2s ("max number pairwise")
   5514    fminnmp  d_2d,s_2s
   5515 
   5516    fmaxnmp  2d,4s,2s
   5517    fminnmp  2d,4s,2s
   5518 
   5519    fmaxnmv  s_4s (maxnum across vector)
   5520    fminnmv  s_4s
   5521 
   5522    fmaxp    d_2d,s_2s (max of a pair)
   5523    fminp    d_2d,s_2s (max of a pair)
   5524 
   5525    fmaxp    2d,4s,2s  (max pairwise)
   5526    fminp    2d,4s,2s
   5527 
   5528    fmaxv    s_4s (max across vector)
   5529    fminv    s_4s
   5530 
   5531    fmla     d_d_d[],s_s_s[] (by element)
   5532    fmla     2d_2d_d[],4s_4s_s[],2s_2s_s[]
   5533 
   5534    fmla     2d,4s,2s
   5535 
   5536    fmls     d_d_d[],s_s_s[] (by element)
   5537    fmls     2d_2d_d[],4s_4s_s[],2s_2s_s[]
   5538 
   5539    fmls     2d,4s,2s
   5540 
   5541    fmov     2d,4s,2s #imm (part of the MOVI/MVNI/ORR/BIC imm group)
   5542 
   5543    fmov     d_d,s_s
   5544 
   5545    fmov     s_w,w_s,d_x,d[1]_x,x_d,x_d[1]
   5546 
   5547    fmov     d,s #imm
   5548 
   5549    fmsub    d,s
   5550 
   5551    fmul     d_d_d[],s_s_s[]
   5552    fmul     2d_2d_d[],4s_4s_s[],2s_2s_s[]
   5553 
   5554    fmul     2d,4s,2s
   5555    fmul     d,s
   5556 
   5557    fmulx    d_d_d[],s_s_s[]
   5558    fmulx    2d_2d_d[],4s_4s_s[],2s_2s_s[]
   5559 
   5560    fmulx    d,s
   5561    fmulx    2d,4s,2s
   5562 
   5563    fneg     d,s
   5564    fneg     2d,4s,2s
   5565 
   5566    frecpe   d,s (recip estimate)
   5567    frecpe   2d,4s,2s
   5568 
   5569    frecps   d,s (recip step)
   5570    frecps   2d,4s,2s
   5571 
   5572    frecpx   d,s (recip exponent)
   5573 
   5574    frinta   2d,4s,2s (round to integral, nearest away)
   5575    frinta   d,s
   5576 
   5577    frinti   2d,4s,2s (round to integral, per FPCR)
   5578    frinti   d,s
   5579 
   5580    frintm   2d,4s,2s (round to integral, minus inf)
   5581    frintm   d,s
   5582 
   5583    frintn   2d,4s,2s (round to integral, nearest, to even)
   5584    frintn   d,s
   5585 
   5586    frintp   2d,4s,2s (round to integral, plus inf)
   5587    frintp   d,s
   5588 
   5589    frintx   2d,4s,2s (round to integral exact, per FPCR)
   5590    frintx   d,s
   5591 
   5592    frintz   2d,4s,2s (round to integral, zero)
   5593    frintz   d,s
   5594 
   5595    frsqrte  d,s (est)
   5596    frsqrte  2d,4s,2s
   5597 
   5598    frsqrts  d,s (step)
   5599    frsqrts  2d,4s,2s
   5600 
   5601    fsqrt    d,s
   5602    fsqrt    2d,4s,2s
   5603 
   5604    fsub     d,s
   5605    fsub     2d,4s,2s
   5606 
   5607    ins      d[]_d[],s[]_s[],h[]_h[],b[]_b[]
   5608 
   5609    ins      d[]_x, s[]_w, h[]_w, b[]_w
   5610 
   5611    ld1  (multiple 1-element structures to 1/2/3/4 regs)
   5612    ld1  (single 1-element structure to one lane of 1 reg)
   5613    ld1r (single 1-element structure and rep to all lanes of 1 reg)
   5614 
   5615    ld2  (multiple 2-element structures to 2 regs)
   5616    ld2  (single 2-element structure to one lane of 2 regs)
   5617    ld2r (single 2-element structure and rep to all lanes of 2 regs)
   5618 
   5619    ld3  (multiple 3-element structures to 3 regs)
   5620    ld3  (single 3-element structure to one lane of 3 regs)
   5621    ld3r (single 3-element structure and rep to all lanes of 3 regs)
   5622 
   5623    ld4  (multiple 4-element structures to 4 regs)
   5624    ld4  (single 4-element structure to one lane of 4 regs)
   5625    ld4r (single 4-element structure and rep to all lanes of 4 regs)
   5626 
   5627    ldnp  q_q_addr,d_d_addr,s_s_addr  (load pair w/ non-temporal hint)
   5628          addr = reg + uimm7 * reg_size
   5629 
   5630    ldp   q_q_addr,d_d_addr,s_s_addr  (load pair)
   5631          addr = [Xn|SP],#imm   or [Xn|SP,#imm]!  or [Xn|SP,#imm]
   5632 
   5633    ldr   q,d,s,h,b from addr
   5634          addr = [Xn|SP],#imm   or [Xn|SP,#imm]!  or [Xn|SP,#imm]
   5635 
   5636    ldr   q,d,s from  pc+#imm19
   5637 
   5638    ldr   q,d,s,h,b from addr
   5639          addr = [Xn|SP, R <extend> <shift]
   5640 
   5641    ldur  q,d,s,h,b from addr
   5642          addr = [Xn|SP,#imm] (unscaled offset)
   5643 
   5644    mla   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   5645    mla   4s,2s,8h,4h,16b,8b
   5646 
   5647    mls   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   5648    mls   4s,2s,8h,4h,16b,8b
   5649 
   5650    movi  16b,8b   #imm8, LSL #0
   5651    movi  8h,4h    #imm8, LSL #0 or 8
   5652    movi  4s,2s    #imm8, LSL #0, 8, 16, 24
   5653    movi  4s,2s    #imm8, MSL #8 or 16
   5654    movi  d,       #imm64
   5655    movi  2d,      #imm64
   5656 
   5657    mul   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   5658    mul   4s,2s,8h,4h,16b,8b
   5659 
   5660    mvni  8h,4h    #imm8, LSL #0 or 8
   5661    mvni  4s,2s    #imm8, LSL #0, 8, 16, 24
   5662    mvni  4s,2s    #imm8, MSL #8 or 16
   5663 
   5664    neg   d
   5665    neg   2d,4s,2s,8h,4h,16b,8b
   5666 
   5667    not   16b,8b
   5668 
   5669    orn   16b,8b
   5670 
   5671    orr   8h,4h   #imm8, LSL #0 or 8
   5672    orr   4s,2s   #imm8, LSL #0, 8, 16 or 24
   5673 
   5674    orr   16b,8b
   5675 
   5676    pmul  16b,8b
   5677 
   5678    pmull{2}  8h_8b_8b,8h_16b_16b,1q_1d_1d,1d_2d_2d
   5679 
   5680    raddhn{2}  2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   5681 
   5682    rbit    16b,8b
   5683    rev16   16b,8b
   5684    rev32   16b,8b,8h,4h
   5685    rev64   16b,8b,8h,4h,4s,2s
   5686 
   5687    rshrn{2}  2s/4s_2d, 8h/4h_4s, 2s/4s_2d,   #imm in 1 .. elem_bits
   5688 
   5689    rsubhn{2}  2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   5690 
   5691    saba      16b,8b,8h,4h,4s,2s
   5692    sabal{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5693 
   5694    sabd      16b,8b,8h,4h,4s,2s
   5695    sabdl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5696 
   5697    sadalp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   5698 
   5699    saddl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5700 
   5701    saddlp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   5702 
   5703    saddlv    h_16b/8b, s_8h/4h, d_4s
   5704 
   5705    saddw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s
   5706 
   5707    scvtf     d,s        _#fbits
   5708    scvtf     2d,4s,2s   _#fbits
   5709 
   5710    scvtf     d,s
   5711    scvtf     2d,4s,2s
   5712 
   5713    scvtf     s_w, d_w, s_x, d_x,   _#fbits
   5714    scvtf     s_w, d_w, s_x, d_x
   5715 
   5716    sha1c       q_s_4s
   5717    sha1h       s_s
   5718    sha1m       q_s_4s
   5719    sha1p       q_s_4s
   5720    sha1su0     4s_4s_4s
   5721    sha1su1     4s_4s
   5722    sha256h2    q_q_4s
   5723    sha256h     q_q_4s
   5724    sha256su0   4s_4s
   5725    sha256su1   4s_4s_4s
   5726 
   5727    shadd       16b,8b,8h,4h,4s,2s
   5728 
   5729    shl         d_#imm
   5730    shl         16b,8b,8h,4h,4s,2s,2d  _#imm
   5731 
   5732    shll{2}   8h_8b/16b_#8, 4s_4h/8h_#16, 2d_2s/4s_#32
   5733 
   5734    shrn{2}  2s/4s_2d, 8h/4h_4s, 2s/4s_2d,   #imm in 1 .. elem_bits
   5735 
   5736    shsub       16b,8b,8h,4h,4s,2s
   5737 
   5738    sli         d_#imm
   5739    sli         2d,4s,2s,8h,4h,16b,8b  _#imm
   5740 
   5741    smax        4s,2s,8h,4h,16b,8b
   5742 
   5743    smaxp       4s,2s,8h,4h,16b,8b
   5744 
   5745    smaxv       s_4s,h_8h,h_4h,b_16b,b_8b
   5746 
   5747    smin        4s,2s,8h,4h,16b,8b
   5748 
   5749    sminp       4s,2s,8h,4h,16b,8b
   5750 
   5751    sminv       s_4s,h_8h,h_4h,b_16b,b_8b
   5752 
   5753    smlal{2}    2d_2s/4s_s[], 4s_4h/8h_h[]
   5754    smlal{2}    2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5755 
   5756    smlsl{2}    2d_2s/4s_s[], 4s_4h/8h_h[]
   5757    smlsl{2}    2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5758 
   5759    smov        w_b[], w_h[], x_b[], x_h[], x_s[]
   5760 
   5761    smull{2}    2d_2s/4s_s[]. 4s_4h/8h_h[]
   5762    smull{2}    2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5763 
   5764    sqabs       d,s,h,b
   5765    sqabs       2d,4s,2s,8h,4h,16b,8b
   5766 
   5767    sqadd       d,s,h,b
   5768    sqadd       2d,4s,2s,8h,4h,16b,8b
   5769 
   5770    sqdmlal     d_s_s[], s_h_h[]
   5771    sqdmlal{2}  2d_2s/4s_s[], 4s_4h/8h_h[]
   5772 
   5773    sqdmlal     d_s_s, s_h_h
   5774    sqdmlal{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   5775 
   5776    sqdmlsl     d_s_s[], s_h_h[]
   5777    sqdmlsl{2}  2d_2s/4s_s[], 4s_4h/8h_h[]
   5778 
   5779    sqdmlsl     d_s_s, s_h_h
   5780    sqdmlsl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   5781 
   5782    sqdmulh     s_s_s[], h_h_h[]
   5783    sqdmulh     4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[]
   5784 
   5785    sqdmulh     h,s
   5786    sqdmulh     4s,2s,8h,4h
   5787 
   5788    sqdmull     d_s_s[], s_h_h[]
   5789    sqdmull{2}  2d_2s/4s_s[], 4s_4h/2h_h[]
   5790 
   5791    sqdmull     d_s_s,s_h_h
   5792    sqdmull{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   5793 
   5794    sqneg       d,s,h,b
   5795    sqneg       2d,4s,2s,8h,4h,16b,8b
   5796 
   5797    sqrdmulh    s_s_s[], h_h_h[]
   5798    sqrdmulh    4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[]
   5799 
   5800    sqrdmulh    h,s
   5801    sqrdmulh    4s,2s,8h,4h
   5802 
   5803    sqrshl      d,s,h,b
   5804    sqrshl      2d,4s,2s,8h,4h,16b,8b
   5805 
   5806    sqrshrn     s_d, h_s, b_h   #imm
   5807    sqrshrn{2}  2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   5808 
   5809    sqrshrun     s_d, h_s, b_h   #imm
   5810    sqrshrun{2}  2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   5811 
   5812    sqshl        d,s,h,b   _#imm
   5813    sqshl        2d,4s,2s,8h,4h,16b,8b   _#imm
   5814 
   5815    sqshl        d,s,h,b
   5816    sqshl        2d,4s,2s,8h,4h,16b,8b
   5817 
   5818    sqshlu       d,s,h,b  _#imm
   5819    sqshlu       2d,4s,2s,8h,4h,16b,8b  _#imm
   5820 
   5821    sqshrn       s_d, h_s, b_h   #imm
   5822    sqshrn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   5823 
   5824    sqshrun      s_d, h_s, b_h   #imm
   5825    sqshrun{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   5826 
   5827    sqsub       d,s,h,b
   5828    sqsub       2d,4s,2s,8h,4h,16b,8b
   5829 
   5830    sqxtn       s_d,h_s,b_h
   5831    sqxtn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   5832 
   5833    sqxtun      s_d,h_s,b_h
   5834    sqxtun{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   5835 
   5836    srhadd      4s,2s,8h,4h,16b,8b
   5837 
   5838    sri         d_#imm
   5839    sri         2d,4s,2s,8h,4h,16b,8b  _#imm
   5840 
   5841    srshl (reg) d
   5842    srshl       2d,4s,2s,8h,4h,16b,8b
   5843 
   5844    srshr (imm) d
   5845    srshr       2d,4s,2s,8h,4h,16b,8b
   5846 
   5847    srsra (imm) d
   5848    srsra       2d,4s,2s,8h,4h,16b,8b
   5849 
   5850    sshl (reg)  d
   5851    sshl        2d,4s,2s,8h,4h,16b,8b
   5852 
   5853    sshll{2} (imm)  2d_2s/4s  4s_4h/8h, 8h_8b/16b
   5854 
   5855    sshr (imm)  d
   5856    sshr        2d,4s,2s,8h,4h,16b,8b
   5857 
   5858    ssra (imm)  d
   5859    ssra        2d,4s,2s,8h,4h,16b,8b
   5860 
   5861    ssubl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5862 
   5863    ssubw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s
   5864 
   5865    st1 (multiple 1-element structures from 1/2/3/4 regs)
   5866    st1 (single 1-element structure for 1 lane of 1 reg)
   5867 
   5868    st2 (multiple 2-element structures from 2 regs)
   5869    st2 (single 2-element structure from 1 lane of 2 regs)
   5870 
   5871    st3 (multiple 3-element structures from 3 regs)
   5872    st3 (single 3-element structure from 1 lane of 3 regs)
   5873 
   5874    st4 (multiple 4-element structures from 4 regs)
   5875    st4 (single 4-element structure from one lane of 4 regs)
   5876 
   5877    stnp q_q_addr, d_d_addr, s_s_addr
   5878         addr = [Xn|SP, #imm]
   5879 
   5880    stp  q_q_addr, d_d_addr, s_s_addr
   5881         addr = [Xn|SP], #imm  or [Xn|SP, #imm]!  or [Xn|SP, #imm]
   5882 
   5883    str  q,d,s,h,b_addr
   5884         addr = [Xn|SP], #simm  or [Xn|SP, #simm]!  or [Xn|SP, #pimm]
   5885 
   5886    str   q,d,s,h,b_addr
   5887          addr = [Xn|SP, R <extend> <shift]
   5888 
   5889    stur  q,d,s,h,b_addr
   5890          addr = [Xn|SP,#imm] (unscaled offset)
   5891 
   5892    sub   d
   5893    sub   2d,4s,2s,8h,4h,16b,8b
   5894 
   5895    subhn{2}  2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   5896 
   5897    suqadd  d,s,h,b
   5898    suqadd  2d,4s,2s,8h,4h,16b,8b
   5899 
   5900    tbl     8b_{16b}_8b, 16b_{16b}_16b
   5901    tbl     8b_{16b,16b}_8b, 16b_{16b,16b}_16b
   5902    tbl     8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b
   5903    tbl     8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b
   5904 
   5905    tbx     8b_{16b}_8b, 16b_{16b}_16b
   5906    tbx     8b_{16b,16b}_8b, 16b_{16b,16b}_16b
   5907    tbx     8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b
   5908    tbx     8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b
   5909 
   5910    trn1    2d,4s,2s,8h,4h,16b,8b
   5911    trn2    2d,4s,2s,8h,4h,16b,8b
   5912 
   5913    uaba      16b,8b,8h,4h,4s,2s
   5914    uabal{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5915 
   5916    uabd      16b,8b,8h,4h,4s,2s
   5917    uabdl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5918 
   5919    uadalp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   5920 
   5921    uaddl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5922 
   5923    uaddlp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   5924 
   5925    uaddlv    h_16b/8b, s_8h/4h, d_4s
   5926 
   5927    uaddw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s
   5928 
   5929    ucvtf     d,s        _#fbits
   5930    ucvtf     2d,4s,2s   _#fbits
   5931 
   5932    ucvtf     d,s
   5933    ucvtf     2d,4s,2s
   5934 
   5935    ucvtf     s_w, d_w, s_x, d_x,   _#fbits
   5936    ucvtf     s_w, d_w, s_x, d_x
   5937 
   5938    uhadd       16b,8b,8h,4h,4s,2s
   5939 
   5940    uhsub       16b,8b,8h,4h,4s,2s
   5941 
   5942    umax        4s,2s,8h,4h,16b,8b
   5943 
   5944    umaxp       4s,2s,8h,4h,16b,8b
   5945 
   5946    umaxv       s_4s,h_8h,h_4h,b_16b,b_8b
   5947 
   5948    umin        4s,2s,8h,4h,16b,8b
   5949 
   5950    uminp       4s,2s,8h,4h,16b,8b
   5951 
   5952    uminv       s_4s,h_8h,h_4h,b_16b,b_8b
   5953 
   5954    umlal{2}    2d_2s/4s_s[], 4s_4h/8h_h[]
   5955    umlal{2}    2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5956 
   5957    umlsl{2}    2d_2s/4s_s[], 4s_4h/8h_h[]
   5958    umlsl{2}    2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5959 
   5960    umov        w_b[], w_h[], x_b[], x_h[], x_s[]
   5961 
   5962    umull{2}    2d_2s/4s_s[]. 4s_4h/8h_h[]
   5963    umull{2}    2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   5964 
   5965    uqadd       d,s,h,b
   5966    uqadd       2d,4s,2s,8h,4h,16b,8b
   5967 
   5968    uqrshl      d,s,h,b
   5969    uqrshl      2d,4s,2s,8h,4h,16b,8b
   5970 
   5971    uqrshrn     s_d, h_s, b_h   #imm
   5972    uqrshrn{2}  2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   5973 
   5974    uqshl        d,s,h,b   _#imm
   5975    uqshl        2d,4s,2s,8h,4h,16b,8b   _#imm
   5976 
   5977    uqshl        d,s,h,b
   5978    uqshl        2d,4s,2s,8h,4h,16b,8b
   5979 
   5980    uqshrn       s_d, h_s, b_h   #imm
   5981    uqshrn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   5982 
   5983    uqsub       d,s,h,b
   5984    uqsub       2d,4s,2s,8h,4h,16b,8b
   5985 
   5986    uqxtn       s_d,h_s,b_h
   5987    uqxtn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   5988 
   5989    urecpe      4s,2s
   5990 
   5991    urhadd      4s,2s,8h,4h,16b,8b
   5992 
   5993    urshl (reg) d
   5994    urshl       2d,4s,2s,8h,4h,16b,8b
   5995 
   5996    urshr (imm) d
   5997    urshr       2d,4s,2s,8h,4h,16b,8b
   5998 
   5999    ursqrte     4s,2s
   6000 
   6001    ursra (imm) d
   6002    ursra       2d,4s,2s,8h,4h,16b,8b
   6003 
   6004    ushl (reg)  d
   6005    ushl        2d,4s,2s,8h,4h,16b,8b
   6006 
   6007    ushll{2} (imm)  2d_2s/4s  4s_4h/8h, 8h_8b/16b
   6008 
   6009    ushr (imm)  d
   6010    ushr        2d,4s,2s,8h,4h,16b,8b
   6011 
   6012    usqadd      d,s,h,b
   6013    usqadd      2d,4s,2s,8h,4h,16b,8b
   6014 
   6015    usra (imm)  d
   6016    usra        2d,4s,2s,8h,4h,16b,8b
   6017 
   6018    usubl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6019 
   6020    usubw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s
   6021 
   6022    uzp1      2d,4s,2s,8h,4h,16b,8b
   6023    uzp2      2d,4s,2s,8h,4h,16b,8b
   6024 
   6025    xtn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   6026 
   6027    zip1      2d,4s,2s,8h,4h,16b,8b
   6028    zip2      2d,4s,2s,8h,4h,16b,8b
   6029 */
   6030 
   6031 
   6032 /* ---------------------------------------------------------------- */
   6033 /* -- List of insns, grouped somewhat by laneage configuration   -- */
   6034 /* ---------------------------------------------------------------- */
   6035 /*
   6036    ======================== FP ========================
   6037 
   6038    fabs      d,s
   6039    fabs      2d,4s,2s
   6040 
   6041    fneg      d,s
   6042    fneg      2d,4s,2s
   6043 
   6044    fsqrt     d,s
   6045    fsqrt     2d,4s,2s
   6046 
   6047    fadd      d,s
   6048    fsub      d,s
   6049 
   6050    fadd      2d,4s,2s
   6051    fsub      2d,4s,2s
   6052 
   6053    fabd      d,s
   6054    fabd      2d,4s,2s
   6055 
   6056    faddp     d,s (floating add pair)
   6057    faddp     2d,4s,2s
   6058 
   6059    fccmp     d,s (floating point conditional quiet compare)
   6060    fccmpe    d,s (floating point conditional signaling compare)
   6061 
   6062    fcmeq     d,s
   6063    fcmge     d,s
   6064    fcmgt     d,s
   6065    facgt     d,s  (floating abs compare GE)
   6066    facge     d,s  (floating abs compare GE)
   6067 
   6068    fcmeq     2d,4s,2s
   6069    fcmge     2d,4s,2s
   6070    fcmgt     2d,4s,2s
   6071    facge     2d,4s,2s
   6072    facgt     2d,4s,2s
   6073 
   6074    fcmeq_z   d,s
   6075    fcmge_z   d,s
   6076    fcmgt_z   d,s
   6077    fcmle_z   d,s
   6078    fcmlt_z   d,s
   6079 
   6080    fcmeq_z   2d,4s,2s
   6081    fcmge_z   2d,4s,2s
   6082    fcmgt_z   2d,4s,2s
   6083    fcmle_z   2d,4s,2s
   6084    fcmlt_z   2d,4s,2s
   6085 
   6086    fcmp_z    d,s
   6087    fcmpe_z   d,s
   6088    fcmp      d,s (floating point quiet, set flags)
   6089    fcmpe     d,s (floating point signaling, set flags)
   6090 
   6091    fcsel     d,s (fp cond select)
   6092 
   6093    fdiv      d,s
   6094    fdiv      2d,4s,2s
   6095 
   6096    fmadd     d,s
   6097    fnmadd    d,s
   6098    fmsub     d,s
   6099    fnmsub    d,s
   6100 
   6101    fnmul     d,s
   6102 
   6103    fmax      d,s
   6104    fmin      d,s
   6105    fmaxnm    d,s ("max number")
   6106    fminnm    d,s
   6107 
   6108    fmax      2d,4s,2s
   6109    fmin      2d,4s,2s
   6110    fmaxnm    2d,4s,2s
   6111    fminnm    2d,4s,2s
   6112 
   6113    fmaxnmp   d_2d,s_2s ("max number pairwise")
   6114    fminnmp   d_2d,s_2s
   6115 
   6116    fmaxnmp   2d,4s,2s
   6117    fminnmp   2d,4s,2s
   6118 
   6119    fmaxnmv   s_4s (maxnum across vector)
   6120    fminnmv   s_4s
   6121 
   6122    fmaxp     d_2d,s_2s (max of a pair)
   6123    fminp     d_2d,s_2s (max of a pair)
   6124 
   6125    fmaxp     2d,4s,2s  (max pairwise)
   6126    fminp     2d,4s,2s
   6127 
   6128    fmaxv     s_4s (max across vector)
   6129    fminv     s_4s
   6130 
   6131    fmla      2d,4s,2s
   6132    fmls      2d,4s,2s
   6133 
   6134    fmla      d_d_d[],s_s_s[] (by element)
   6135    fmls      d_d_d[],s_s_s[] (by element)
   6136 
   6137    fmla      2d_2d_d[],4s_4s_s[],2s_2s_s[]
   6138    fmls      2d_2d_d[],4s_4s_s[],2s_2s_s[]
   6139 
   6140    fmov      2d,4s,2s #imm (part of the MOVI/MVNI/ORR/BIC imm group)
   6141 
   6142    fmov      d_d,s_s
   6143 
   6144    fmov      s_w,w_s,d_x,d[1]_x,x_d,x_d[1]
   6145 
   6146    fmov      d,s #imm
   6147 
   6148    fmul      d_d_d[],s_s_s[]
   6149    fmul      2d_2d_d[],4s_4s_s[],2s_2s_s[]
   6150 
   6151    fmul      2d,4s,2s
   6152    fmul      d,s
   6153 
   6154    fmulx     d_d_d[],s_s_s[]
   6155    fmulx     2d_2d_d[],4s_4s_s[],2s_2s_s[]
   6156 
   6157    fmulx     d,s
   6158    fmulx     2d,4s,2s
   6159 
   6160    frecpe    d,s (recip estimate)
   6161    frecpe    2d,4s,2s
   6162 
   6163    frecps    d,s (recip step)
   6164    frecps    2d,4s,2s
   6165 
   6166    frecpx    d,s (recip exponent)
   6167 
   6168    frinta    d,s
   6169    frinti    d,s
   6170    frintm    d,s
   6171    frintn    d,s
   6172    frintp    d,s
   6173    frintx    d,s
   6174    frintz    d,s
   6175 
   6176    frinta    2d,4s,2s (round to integral, nearest away)
   6177    frinti    2d,4s,2s (round to integral, per FPCR)
   6178    frintm    2d,4s,2s (round to integral, minus inf)
   6179    frintn    2d,4s,2s (round to integral, nearest, to even)
   6180    frintp    2d,4s,2s (round to integral, plus inf)
   6181    frintx    2d,4s,2s (round to integral exact, per FPCR)
   6182    frintz    2d,4s,2s (round to integral, zero)
   6183 
   6184    frsqrte   d,s (est)
   6185    frsqrte   2d,4s,2s
   6186 
   6187    frsqrts   d,s (step)
   6188    frsqrts   2d,4s,2s
   6189 
   6190    ======================== CONV ========================
   6191 
   6192    fcvt      s_h,d_h,h_s,d_s,h_d,s_d (fp convert, scalar)
   6193 
   6194    fcvtl{2}  4s/4h, 4s/8h, 2d/2s, 2d/4s (float convert to longer form)
   6195 
   6196    fcvtn{2}  4h/4s, 8h/4s, 2s/2d, 4s/2d (float convert to narrower form)
   6197 
   6198    fcvtas    d,s  (fcvt to signed int,   nearest, ties away)
   6199    fcvtau    d,s  (fcvt to unsigned int, nearest, ties away)
   6200    fcvtas    2d,4s,2s
   6201    fcvtau    2d,4s,2s
   6202    fcvtas    w_s,x_s,w_d,x_d
   6203    fcvtau    w_s,x_s,w_d,x_d
   6204 
   6205    fcvtms    d,s  (fcvt to signed int,   minus inf)
   6206    fcvtmu    d,s  (fcvt to unsigned int, minus inf)
   6207    fcvtms    2d,4s,2s
   6208    fcvtmu    2d,4s,2s
   6209    fcvtms    w_s,x_s,w_d,x_d
   6210    fcvtmu    w_s,x_s,w_d,x_d
   6211 
   6212    fcvtns    d,s  (fcvt to signed int,   nearest)
   6213    fcvtnu    d,s  (fcvt to unsigned int, nearest)
   6214    fcvtns    2d,4s,2s
   6215    fcvtnu    2d,4s,2s
   6216    fcvtns    w_s,x_s,w_d,x_d
   6217    fcvtnu    w_s,x_s,w_d,x_d
   6218 
   6219    fcvtps    d,s  (fcvt to signed int,   plus inf)
   6220    fcvtpu    d,s  (fcvt to unsigned int, plus inf)
   6221    fcvtps    2d,4s,2s
   6222    fcvtpu    2d,4s,2s
   6223    fcvtps    w_s,x_s,w_d,x_d
   6224    fcvtpu    w_s,x_s,w_d,x_d
   6225 
   6226    fcvtzs    d,s (fcvt to signed integer,   to zero)
   6227    fcvtzu    d,s (fcvt to unsigned integer, to zero)
   6228    fcvtzs    2d,4s,2s
   6229    fcvtzu    2d,4s,2s
   6230    fcvtzs    w_s,x_s,w_d,x_d
   6231    fcvtzu    w_s,x_s,w_d,x_d
   6232 
   6233    fcvtzs    d,s (fcvt to signed fixedpt,   to zero) (w/ #fbits)
   6234    fcvtzu    d,s (fcvt to unsigned fixedpt, to zero) (w/ #fbits)
   6235    fcvtzs    2d,4s,2s
   6236    fcvtzu    2d,4s,2s
   6237    fcvtzs    w_s,x_s,w_d,x_d (fcvt to signed fixedpt,   to zero) (w/ #fbits)
   6238    fcvtzu    w_s,x_s,w_d,x_d (fcvt to unsigned fixedpt, to zero) (w/ #fbits)
   6239 
   6240    fcvtxn    s_d (fcvt to lower prec narrow, rounding to odd)
   6241    fcvtxn    2s_2d,4s_2d
   6242 
   6243    scvtf     d,s        _#fbits
   6244    ucvtf     d,s        _#fbits
   6245 
   6246    scvtf     2d,4s,2s   _#fbits
   6247    ucvtf     2d,4s,2s   _#fbits
   6248 
   6249    scvtf     d,s
   6250    ucvtf     d,s
   6251 
   6252    scvtf     2d,4s,2s
   6253    ucvtf     2d,4s,2s
   6254 
   6255    scvtf     s_w, d_w, s_x, d_x,   _#fbits
   6256    ucvtf     s_w, d_w, s_x, d_x,   _#fbits
   6257 
   6258    scvtf     s_w, d_w, s_x, d_x
   6259    ucvtf     s_w, d_w, s_x, d_x
   6260 
   6261    ======================== INT ========================
   6262 
   6263    abs       d
   6264    neg       d
   6265 
   6266    abs       2d,4s,2s,8h,4h,16b,8b
   6267    neg       2d,4s,2s,8h,4h,16b,8b
   6268 
   6269    add       d
   6270    sub       d
   6271 
   6272    add       2d,4s,2s,8h,4h,16b,8b
   6273    sub       2d,4s,2s,8h,4h,16b,8b
   6274 
   6275    addhn{2}   2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   6276    subhn{2}   2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   6277    raddhn{2}  2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   6278    rsubhn{2}  2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h
   6279 
   6280    addp     d (add pairs, across)
   6281    addp     2d,4s,2s,8h,4h,16b,8b
   6282    addv     4s,8h,4h,16b,18b (reduce across vector)
   6283 
   6284    and      16b,8b
   6285 
   6286    orr      8h,4h   #imm8, LSL #0 or 8
   6287    orr      4s,2s   #imm8, LSL #0, 8, 16 or 24
   6288    bic      8h,4h   #imm8, LSL #0 or 8
   6289    bic      4s,2s   #imm8, LSL #0, 8, 16 or 24
   6290    also movi, mvni
   6291 
   6292    bic      16b,8b (vector,reg) (bit clear)
   6293    bif      16b,8b (vector) (bit insert if false)
   6294    bit      16b,8b (vector) (bit insert if true)
   6295    bsl      16b,8b (vector) (bit select)
   6296 
   6297    cls      4s,2s,8h,4h,16b,8b (count leading sign bits)
   6298    clz      4s,2s,8h,4h,16b,8b (count leading zero bits)
   6299 
   6300    cmeq     d
   6301    cmge     d
   6302    cmgt     d
   6303    cmhi     d
   6304    cmhs     d
   6305    cmtst    d
   6306 
   6307    cmeq     2d,4s,2s,8h,4h,16b,8b
   6308    cmge     2d,4s,2s,8h,4h,16b,8b
   6309    cmgt     2d,4s,2s,8h,4h,16b,8b
   6310    cmhi     2d,4s,2s,8h,4h,16b,8b
   6311    cmhs     2d,4s,2s,8h,4h,16b,8b
   6312    cmtst    2d,4s,2s,8h,4h,16b,8b
   6313 
   6314    cmeq_z   d
   6315    cmge_z   d
   6316    cmgt_z   d
   6317    cmle_z   d
   6318    cmlt_z   d
   6319 
   6320    cmeq_z   2d,4s,2s,8h,4h,16b,8b
   6321    cmge_z   2d,4s,2s,8h,4h,16b,8b
   6322    cmgt_z   2d,4s,2s,8h,4h,16b,8b
   6323    cmle_z   2d,4s,2s,8h,4h,16b,8b
   6324    cmlt_z   2d,4s,2s,8h,4h,16b,8b
   6325 
   6326    cnt      16b,8b (population count per byte)
   6327 
   6328    dup      d,s,h,b (vec elem to scalar)
   6329    dup      2d,4s,2s,8h,4h,16b,8b (vec elem to vector)
   6330    dup      2d,4s,2s,8h,4h,16b,8b (general reg to vector)
   6331 
   6332    eor      16b,8b (vector)
   6333    ext      16b,8b,#imm4 (concat 2 vectors, then slice)
   6334 
   6335    ins      d[]_d[],s[]_s[],h[]_h[],b[]_b[]
   6336 
   6337    ins      d[]_x, s[]_w, h[]_w, b[]_w
   6338 
   6339    mla   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   6340    mla   4s,2s,8h,4h,16b,8b
   6341 
   6342    mls   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   6343    mls   4s,2s,8h,4h,16b,8b
   6344 
   6345    movi  16b,8b   #imm8, LSL #0
   6346    movi  8h,4h    #imm8, LSL #0 or 8
   6347    movi  4s,2s    #imm8, LSL #0, 8, 16, 24
   6348    movi  4s,2s    #imm8, MSL #8 or 16
   6349    movi  d,       #imm64
   6350    movi  2d,      #imm64
   6351 
   6352    mul   4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[]
   6353    mul   4s,2s,8h,4h,16b,8b
   6354 
   6355    mvni  8h,4h    #imm8, LSL #0 or 8
   6356    mvni  4s,2s    #imm8, LSL #0, 8, 16, 24
   6357    mvni  4s,2s    #imm8, MSL #8 or 16
   6358 
   6359    not   16b,8b
   6360 
   6361    orn   16b,8b
   6362    orr   16b,8b
   6363 
   6364    pmul  16b,8b
   6365 
   6366    pmull{2}  8h_8b_8b,8h_16b_16b,1q_1d_1d,1d_2d_2d
   6367 
   6368    rbit    16b,8b
   6369    rev16   16b,8b
   6370    rev32   16b,8b,8h,4h
   6371    rev64   16b,8b,8h,4h,4s,2s
   6372 
   6373    saba      16b,8b,8h,4h,4s,2s
   6374    uaba      16b,8b,8h,4h,4s,2s
   6375 
   6376    sabal{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6377    uabal{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6378 
   6379    sabd      16b,8b,8h,4h,4s,2s
   6380    uabd      16b,8b,8h,4h,4s,2s
   6381 
   6382    sabdl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6383    uabdl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6384 
   6385    sadalp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   6386    uadalp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   6387 
   6388    saddl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6389    uaddl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6390    ssubl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6391    usubl{2}  2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6392 
   6393    saddlp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   6394    uaddlp    4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s
   6395 
   6396    saddlv    h_16b/8b, s_8h/4h, d_4s
   6397    uaddlv    h_16b/8b, s_8h/4h, d_4s
   6398 
   6399    saddw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s
   6400    uaddw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s
   6401    ssubw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s
   6402    usubw{2}  8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s
   6403 
   6404    shadd        16b,8b,8h,4h,4s,2s
   6405    uhadd        16b,8b,8h,4h,4s,2s
   6406    shsub        16b,8b,8h,4h,4s,2s
   6407    uhsub        16b,8b,8h,4h,4s,2s
   6408 
   6409    shl          d_#imm
   6410    shl          16b,8b,8h,4h,4s,2s,2d  _#imm
   6411 
   6412    shll{2}      8h_8b/16b_#8, 4s_4h/8h_#16, 2d_2s/4s_#32
   6413 
   6414    shrn{2}      2s/4s_2d, 8h/4h_4s, 2s/4s_2d,   #imm in 1 .. elem_bits
   6415    rshrn{2}     2s/4s_2d, 8h/4h_4s, 2s/4s_2d,   #imm in 1 .. elem_bits
   6416 
   6417    sli          d_#imm
   6418    sri          d_#imm
   6419 
   6420    sli          2d,4s,2s,8h,4h,16b,8b  _#imm
   6421    sri          2d,4s,2s,8h,4h,16b,8b  _#imm
   6422 
   6423    smax         4s,2s,8h,4h,16b,8b
   6424    umax         4s,2s,8h,4h,16b,8b
   6425    smin         4s,2s,8h,4h,16b,8b
   6426    umin         4s,2s,8h,4h,16b,8b
   6427 
   6428    smaxp        4s,2s,8h,4h,16b,8b
   6429    umaxp        4s,2s,8h,4h,16b,8b
   6430    sminp        4s,2s,8h,4h,16b,8b
   6431    uminp        4s,2s,8h,4h,16b,8b
   6432 
   6433    smaxv        s_4s,h_8h,h_4h,b_16b,b_8b
   6434    umaxv        s_4s,h_8h,h_4h,b_16b,b_8b
   6435    sminv        s_4s,h_8h,h_4h,b_16b,b_8b
   6436    uminv        s_4s,h_8h,h_4h,b_16b,b_8b
   6437 
   6438    smlal{2}     2d_2s/4s_s[], 4s_4h/8h_h[]
   6439    umlal{2}     2d_2s/4s_s[], 4s_4h/8h_h[]
   6440    smlsl{2}     2d_2s/4s_s[], 4s_4h/8h_h[]
   6441    umlsl{2}     2d_2s/4s_s[], 4s_4h/8h_h[]
   6442    smull{2}     2d_2s/4s_s[]. 4s_4h/8h_h[]
   6443    umull{2}     2d_2s/4s_s[]. 4s_4h/8h_h[]
   6444 
   6445    smlal{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6446    umlal{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6447    smlsl{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6448    umlsl{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6449    smull{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6450    umull{2}     2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b)
   6451 
   6452    smov         w_b[], w_h[], x_b[], x_h[], x_s[]
   6453    umov         w_b[], w_h[], x_b[], x_h[], x_s[]
   6454 
   6455    sqabs        d,s,h,b
   6456    sqneg        d,s,h,b
   6457 
   6458    sqabs        2d,4s,2s,8h,4h,16b,8b
   6459    sqneg        2d,4s,2s,8h,4h,16b,8b
   6460 
   6461    sqadd        d,s,h,b
   6462    uqadd        d,s,h,b
   6463    sqsub        d,s,h,b
   6464    uqsub        d,s,h,b
   6465 
   6466    sqadd        2d,4s,2s,8h,4h,16b,8b
   6467    uqadd        2d,4s,2s,8h,4h,16b,8b
   6468    sqsub        2d,4s,2s,8h,4h,16b,8b
   6469    uqsub        2d,4s,2s,8h,4h,16b,8b
   6470 
   6471    sqdmlal      d_s_s[], s_h_h[]
   6472    sqdmlsl      d_s_s[], s_h_h[]
   6473    sqdmull      d_s_s[], s_h_h[]
   6474 
   6475    sqdmlal{2}   2d_2s/4s_s[], 4s_4h/8h_h[]
   6476    sqdmlsl{2}   2d_2s/4s_s[], 4s_4h/8h_h[]
   6477    sqdmull{2}   2d_2s/4s_s[], 4s_4h/2h_h[]
   6478 
   6479    sqdmlal      d_s_s, s_h_h
   6480    sqdmlsl      d_s_s, s_h_h
   6481    sqdmull      d_s_s, s_h_h
   6482 
   6483    sqdmlal{2}   2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   6484    sqdmlsl{2}   2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   6485    sqdmull{2}   2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h)
   6486 
   6487    sqdmulh      s_s_s[], h_h_h[]
   6488    sqrdmulh     s_s_s[], h_h_h[]
   6489 
   6490    sqdmulh      4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[]
   6491    sqrdmulh     4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[]
   6492 
   6493    sqdmulh      h,s
   6494    sqrdmulh     h,s
   6495 
   6496    sqdmulh      4s,2s,8h,4h
   6497    sqrdmulh     4s,2s,8h,4h
   6498 
   6499    sqshl        d,s,h,b
   6500    uqshl        d,s,h,b
   6501    sqrshl       d,s,h,b
   6502    uqrshl       d,s,h,b
   6503 
   6504    sqshl        2d,4s,2s,8h,4h,16b,8b
   6505    uqshl        2d,4s,2s,8h,4h,16b,8b
   6506    sqrshl       2d,4s,2s,8h,4h,16b,8b
   6507    uqrshl       2d,4s,2s,8h,4h,16b,8b
   6508 
   6509    sqrshrn      s_d, h_s, b_h   #imm
   6510    uqrshrn      s_d, h_s, b_h   #imm
   6511    sqshrn       s_d, h_s, b_h   #imm
   6512    uqshrn       s_d, h_s, b_h   #imm
   6513 
   6514    sqrshrun     s_d, h_s, b_h   #imm
   6515    sqshrun      s_d, h_s, b_h   #imm
   6516 
   6517    sqrshrn{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   6518    uqrshrn{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   6519    sqshrn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   6520    uqshrn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   6521 
   6522    sqrshrun{2}  2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   6523    sqshrun{2}   2s/4s_2d, 4h/8h_4s, 8b/16b_8h,  #imm
   6524 
   6525    sqshl        d,s,h,b   _#imm
   6526    uqshl        d,s,h,b   _#imm
   6527    sqshlu       d,s,h,b   _#imm
   6528 
   6529    sqshl        2d,4s,2s,8h,4h,16b,8b   _#imm
   6530    uqshl        2d,4s,2s,8h,4h,16b,8b   _#imm
   6531    sqshlu       2d,4s,2s,8h,4h,16b,8b   _#imm
   6532 
   6533    sqxtn        s_d,h_s,b_h
   6534    uqxtn        s_d,h_s,b_h
   6535    sqxtun       s_d,h_s,b_h
   6536 
   6537    sqxtn{2}     2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   6538    uqxtn{2}     2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   6539    sqxtun{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   6540 
   6541    srhadd       4s,2s,8h,4h,16b,8b
   6542    urhadd       4s,2s,8h,4h,16b,8b
   6543 
   6544    sshl (reg)   d
   6545    ushl (reg)   d
   6546    sshr (imm)   d
   6547    ushr (imm)   d
   6548    ssra (imm)   d
   6549    usra (imm)   d
   6550 
   6551    srshl (reg)  d
   6552    urshl (reg)  d
   6553    srshr (imm)  d
   6554    urshr (imm)  d
   6555    srsra (imm)  d
   6556    ursra (imm)  d
   6557 
   6558    sshl         2d,4s,2s,8h,4h,16b,8b
   6559    ushl         2d,4s,2s,8h,4h,16b,8b
   6560    sshr         2d,4s,2s,8h,4h,16b,8b
   6561    ushr         2d,4s,2s,8h,4h,16b,8b
   6562    ssra         2d,4s,2s,8h,4h,16b,8b
   6563    usra         2d,4s,2s,8h,4h,16b,8b
   6564 
   6565    srshl        2d,4s,2s,8h,4h,16b,8b
   6566    urshl        2d,4s,2s,8h,4h,16b,8b
   6567    srshr        2d,4s,2s,8h,4h,16b,8b
   6568    urshr        2d,4s,2s,8h,4h,16b,8b
   6569    srsra        2d,4s,2s,8h,4h,16b,8b
   6570    ursra        2d,4s,2s,8h,4h,16b,8b
   6571 
   6572    sshll{2} (imm)  2d_2s/4s  4s_4h/8h, 8h_8b/16b
   6573    ushll{2} (imm)  2d_2s/4s  4s_4h/8h, 8h_8b/16b
   6574 
   6575    suqadd  d,s,h,b
   6576    suqadd  2d,4s,2s,8h,4h,16b,8b
   6577 
   6578    tbl     8b_{16b}_8b, 16b_{16b}_16b
   6579    tbl     8b_{16b,16b}_8b, 16b_{16b,16b}_16b
   6580    tbl     8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b
   6581    tbl     8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b
   6582 
   6583    tbx     8b_{16b}_8b, 16b_{16b}_16b
   6584    tbx     8b_{16b,16b}_8b, 16b_{16b,16b}_16b
   6585    tbx     8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b
   6586    tbx     8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b
   6587 
   6588    trn1    2d,4s,2s,8h,4h,16b,8b
   6589    trn2    2d,4s,2s,8h,4h,16b,8b
   6590 
   6591    urecpe      4s,2s
   6592 
   6593    ursqrte     4s,2s
   6594 
   6595    usqadd      d,s,h,b
   6596    usqadd      2d,4s,2s,8h,4h,16b,8b
   6597 
   6598    uzp1      2d,4s,2s,8h,4h,16b,8b
   6599    uzp2      2d,4s,2s,8h,4h,16b,8b
   6600 
   6601    xtn{2}    2s/4s_2d, 4h/8h_4s, 8b/16b_8h
   6602 
   6603    zip1      2d,4s,2s,8h,4h,16b,8b
   6604    zip2      2d,4s,2s,8h,4h,16b,8b
   6605 
   6606    ======================== MEM ========================
   6607 
   6608    ld1  (multiple 1-element structures to 1/2/3/4 regs)
   6609    ld1  (single 1-element structure to one lane of 1 reg)
   6610    ld1r (single 1-element structure and rep to all lanes of 1 reg)
   6611 
   6612    ld2  (multiple 2-element structures to 2 regs)
   6613    ld2  (single 2-element structure to one lane of 2 regs)
   6614    ld2r (single 2-element structure and rep to all lanes of 2 regs)
   6615 
   6616    ld3  (multiple 3-element structures to 3 regs)
   6617    ld3  (single 3-element structure to one lane of 3 regs)
   6618    ld3r (single 3-element structure and rep to all lanes of 3 regs)
   6619 
   6620    ld4  (multiple 4-element structures to 4 regs)
   6621    ld4  (single 4-element structure to one lane of 4 regs)
   6622    ld4r (single 4-element structure and rep to all lanes of 4 regs)
   6623 
   6624    ldnp  q_q_addr,d_d_addr,s_s_addr  (load pair w/ non-temporal hint)
   6625          addr = reg + uimm7 * reg_size
   6626 
   6627    ldp   q_q_addr,d_d_addr,s_s_addr  (load pair)
   6628          addr = [Xn|SP],#imm   or [Xn|SP,#imm]!  or [Xn|SP,#imm]
   6629 
   6630    ldr   q,d,s,h,b from addr
   6631          addr = [Xn|SP],#imm   or [Xn|SP,#imm]!  or [Xn|SP,#imm]
   6632 
   6633    ldr   q,d,s from  pc+#imm19
   6634 
   6635    ldr   q,d,s,h,b from addr
   6636          addr = [Xn|SP, R <extend> <shift]
   6637 
   6638    ldur  q,d,s,h,b from addr
   6639          addr = [Xn|SP,#imm] (unscaled offset)
   6640 
   6641    st1 (multiple 1-element structures from 1/2/3/4 regs)
   6642    st1 (single 1-element structure for 1 lane of 1 reg)
   6643 
   6644    st2 (multiple 2-element structures from 2 regs)
   6645    st2 (single 2-element structure from 1 lane of 2 regs)
   6646 
   6647    st3 (multiple 3-element structures from 3 regs)
   6648    st3 (single 3-element structure from 1 lane of 3 regs)
   6649 
   6650    st4 (multiple 4-element structures from 4 regs)
   6651    st4 (single 4-element structure from one lane of 4 regs)
   6652 
   6653    stnp q_q_addr, d_d_addr, s_s_addr
   6654         addr = [Xn|SP, #imm]
   6655 
   6656    stp  q_q_addr, d_d_addr, s_s_addr
   6657         addr = [Xn|SP], #imm  or [Xn|SP, #imm]!  or [Xn|SP, #imm]
   6658 
   6659    str  q,d,s,h,b_addr
   6660         addr = [Xn|SP], #simm  or [Xn|SP, #simm]!  or [Xn|SP, #pimm]
   6661 
   6662    str   q,d,s,h,b_addr
   6663          addr = [Xn|SP, R <extend> <shift]
   6664 
   6665    stur  q,d,s,h,b_addr
   6666          addr = [Xn|SP,#imm] (unscaled offset)
   6667 
   6668    ======================== CRYPTO ========================
   6669 
   6670    aesd       16b (aes single round decryption)
   6671    aese       16b (aes single round encryption)
   6672    aesimc     16b (aes inverse mix columns)
   6673    aesmc      16b (aes mix columns)
   6674 
   6675    sha1c      q_s_4s
   6676    sha1h      s_s
   6677    sha1m      q_s_4s
   6678    sha1p      q_s_4s
   6679    sha1su0    4s_4s_4s
   6680    sha1su1    4s_4s
   6681 
   6682    sha256h2   q_q_4s
   6683    sha256h    q_q_4s
   6684    sha256su0  4s_4s
   6685    sha256su1  4s_4s_4s
   6686 */
   6687