Home | History | Annotate | Download | only in AArch64
      1 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon < %s 2> %t
      2 // RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s
      3 
      4 //------------------------------------------------------------------------------
      5 // Vector Integer Add/sub
      6 //------------------------------------------------------------------------------
      7 
      8         // Mismatched vector types
      9         add v0.16b, v1.8b, v2.8b
     10         sub v0.2d, v1.2d, v2.2s
     11 
     12 // CHECK-ERROR: error: invalid operand for instruction
     13 // CHECK-ERROR:         add v0.16b, v1.8b, v2.8b
     14 // CHECK-ERROR:                        ^
     15 // CHECK-ERROR: error: invalid operand for instruction
     16 // CHECK-ERROR:         sub v0.2d, v1.2d, v2.2s
     17 // CHECK-ERROR:                              ^
     18 
     19 //------------------------------------------------------------------------------
     20 // Vector Floating-Point Add/sub
     21 //------------------------------------------------------------------------------
     22 
     23         // Mismatched and invalid vector types
     24         fadd v0.2d, v1.2s, v2.2s
     25         fsub v0.4s, v1.2s, v2.4s
     26         fsub v0.8b, v1.8b, v2.8b
     27 
     28 // CHECK-ERROR: error: invalid operand for instruction
     29 // CHECK-ERROR:         fadd v0.2d, v1.2s, v2.2s
     30 // CHECK-ERROR:                        ^
     31 // CHECK-ERROR: error: invalid operand for instruction
     32 // CHECK-ERROR:         fsub v0.4s, v1.2s, v2.4s
     33 // CHECK-ERROR:                        ^
     34 // CHECK-ERROR: error: invalid operand for instruction
     35 // CHECK-ERROR:         fsub v0.8b, v1.8b, v2.8b
     36 // CHECK-ERROR:                  ^
     37 
     38 //----------------------------------------------------------------------
     39 // Vector Integer Mul
     40 //----------------------------------------------------------------------
     41 
     42         // Mismatched and invalid vector types
     43         mul v0.16b, v1.8b, v2.8b
     44         mul v0.2d, v1.2d, v2.2d
     45 
     46 // CHECK-ERROR: error: invalid operand for instruction
     47 // CHECK-ERROR:         mul v0.16b, v1.8b, v2.8b
     48 // CHECK-ERROR:                        ^
     49 // CHECK-ERROR: error: invalid operand for instruction
     50 // CHECK-ERROR:         mul v0.2d, v1.2d, v2.2d
     51 // CHECK-ERROR:                ^
     52 
     53 //----------------------------------------------------------------------
     54 // Vector Floating-Point Mul/Div
     55 //----------------------------------------------------------------------
     56         // Mismatched vector types
     57         fmul v0.16b, v1.8b, v2.8b
     58         fdiv v0.2s, v1.2d, v2.2d
     59 
     60 // CHECK-ERROR: error: invalid operand for instruction
     61 // CHECK-ERROR:         fmul v0.16b, v1.8b, v2.8b
     62 // CHECK-ERROR:                         ^
     63 // CHECK-ERROR: error: invalid operand for instruction
     64 // CHECK-ERROR:         fdiv v0.2s, v1.2d, v2.2d
     65 // CHECK-ERROR:                        ^
     66 
     67 //----------------------------------------------------------------------
     68 // Vector And Orr Eor Bsl Bit Bif, Orn, Bic,
     69 //----------------------------------------------------------------------
     70         // Mismatched and invalid vector types
     71         and v0.8b, v1.16b, v2.8b
     72         orr v0.4h, v1.4h, v2.4h
     73         eor v0.2s, v1.2s, v2.2s
     74         bsl v0.8b, v1.16b, v2.8b
     75         bsl v0.2s, v1.2s, v2.2s
     76         bit v0.2d, v1.2d, v2.2d
     77         bif v0.4h, v1.4h, v2.4h
     78         orn v0.8b, v1.16b, v2.16b
     79         bic v0.2d, v1.2d, v2.2d
     80 
     81 // CHECK-ERROR: error: invalid operand for instruction
     82 // CHECK-ERROR:         and v0.8b, v1.16b, v2.8b
     83 // CHECK-ERROR:                       ^
     84 // CHECK-ERROR: error: invalid operand for instruction
     85 // CHECK-ERROR:         orr v0.4h, v1.4h, v2.4h
     86 // CHECK-ERROR:                ^
     87 // CHECK-ERROR: error: invalid operand for instruction
     88 // CHECK-ERROR:         eor v0.2s, v1.2s, v2.2s
     89 // CHECK-ERROR:                ^
     90 // CHECK-ERROR: error: invalid operand for instruction
     91 // CHECK-ERROR:         bsl v0.8b, v1.16b, v2.8b
     92 // CHECK-ERROR:                       ^
     93 // CHECK-ERROR: error: invalid operand for instruction
     94 // CHECK-ERROR:         bsl v0.2s, v1.2s, v2.2s
     95 // CHECK-ERROR:                ^
     96 // CHECK-ERROR: error: invalid operand for instruction
     97 // CHECK-ERROR:         bit v0.2d, v1.2d, v2.2d
     98 // CHECK-ERROR:                ^
     99 // CHECK-ERROR: error: invalid operand for instruction
    100 // CHECK-ERROR:         bif v0.4h, v1.4h, v2.4h
    101 // CHECK-ERROR:                ^
    102 // CHECK-ERROR: error: invalid operand for instruction
    103 // CHECK-ERROR:         orn v0.8b, v1.16b, v2.16b
    104 // CHECK-ERROR:                        ^
    105 // CHECK-ERROR: error: invalid operand for instruction
    106 // CHECK-ERROR:         bic v0.2d, v1.2d, v2.2d
    107 // CHECK-ERROR:                ^
    108 
    109 //----------------------------------------------------------------------
    110 // Vector Integer Multiply-accumulate and Multiply-subtract
    111 //----------------------------------------------------------------------
    112 
    113         // Mismatched and invalid vector types
    114         mla v0.16b, v1.8b, v2.8b
    115         mls v0.2d, v1.2d, v2.2d
    116 
    117 // CHECK-ERROR: error: invalid operand for instruction
    118 // CHECK-ERROR:         mla v0.16b, v1.8b, v2.8b
    119 // CHECK-ERROR:                        ^
    120 // CHECK-ERROR: error: invalid operand for instruction
    121 // CHECK-ERROR:         mls v0.2d, v1.2d, v2.2d
    122 // CHECK-ERROR:                ^
    123 
    124 //----------------------------------------------------------------------
    125 // Vector Floating-Point Multiply-accumulate and Multiply-subtract
    126 //----------------------------------------------------------------------
    127         // Mismatched vector types
    128         fmla v0.2s, v1.2d, v2.2d
    129         fmls v0.16b, v1.8b, v2.8b
    130 
    131 // CHECK-ERROR: error: invalid operand for instruction
    132 // CHECK-ERROR:         fmla v0.2s, v1.2d, v2.2d
    133 // CHECK-ERROR:                        ^
    134 // CHECK-ERROR: error: invalid operand for instruction
    135 // CHECK-ERROR:         fmls v0.16b, v1.8b, v2.8b
    136 // CHECK-ERROR:                         ^
    137 
    138 
    139 //----------------------------------------------------------------------
    140 // Vector Move Immediate Shifted
    141 // Vector Move Inverted Immediate Shifted
    142 // Vector Bitwise Bit Clear (AND NOT) - immediate
    143 // Vector Bitwise OR - immedidate
    144 //----------------------------------------------------------------------
    145       // out of range immediate (0 to 0xff)
    146       movi v0.2s, #-1
    147       mvni v1.4s, #256
    148       // out of range shift (0, 8, 16, 24 and 0, 8)
    149       bic v15.4h, #1, lsl #7
    150       orr v31.2s, #1, lsl #25
    151       movi v5.4h, #10, lsl #16
    152       // invalid vector type (2s, 4s, 4h, 8h)
    153       movi v5.8b, #1, lsl #8
    154 
    155 // CHECK-ERROR: error: invalid operand for instruction
    156 // CHECK-ERROR:          movi v0.2s, #-1
    157 // CHECK-ERROR:                      ^
    158 // CHECK-ERROR: error: invalid operand for instruction
    159 // CHECK-ERROR:         mvni v1.4s, #256
    160 // CHECK-ERROR:                     ^
    161 // CHECK-ERROR: error: invalid operand for instruction
    162 // CHECK-ERROR:         bic v15.4h, #1, lsl #7
    163 // CHECK-ERROR:                         ^
    164 // CHECK-ERROR: error: invalid operand for instruction
    165 // CHECK-ERROR:         orr v31.2s, #1, lsl #25
    166 // CHECK-ERROR:                         ^
    167 // CHECK-ERROR: error: invalid operand for instruction
    168 // CHECK-ERROR:         movi v5.4h, #10, lsl #16
    169 // CHECK-ERROR:                          ^
    170 // CHECK-ERROR: error: invalid operand for instruction
    171 // CHECK-ERROR:         movi v5.8b, #1, lsl #8
    172 // CHECK-ERROR:                         ^
    173 //----------------------------------------------------------------------
    174 // Vector Move Immediate Masked
    175 // Vector Move Inverted Immediate Masked
    176 //----------------------------------------------------------------------
    177       // out of range immediate (0 to 0xff)
    178       movi v0.2s, #-1, msl #8
    179       mvni v7.4s, #256, msl #16
    180       // out of range shift (8, 16)
    181       movi v3.2s, #1, msl #0
    182       mvni v17.4s, #255, msl #32
    183       // invalid vector type (2s, 4s)
    184       movi v5.4h, #31, msl #8
    185 
    186 // CHECK-ERROR: error: invalid operand for instruction
    187 // CHECK-ERROR:         movi v0.2s, #-1, msl #8
    188 // CHECK-ERROR:                     ^
    189 // CHECK-ERROR: error: invalid operand for instruction
    190 // CHECK-ERROR:         mvni v7.4s, #256, msl #16
    191 // CHECK-ERROR:                     ^
    192 // CHECK-ERROR: error: invalid operand for instruction
    193 // CHECK-ERROR:         movi v3.2s, #1, msl #0
    194 // CHECK-ERROR:                         ^
    195 // CHECK-ERROR: error: invalid operand for instruction
    196 // CHECK-ERROR:         mvni v17.4s, #255, msl #32
    197 // CHECK-ERROR:                            ^
    198 // CHECK-ERROR: error: invalid operand for instruction
    199 // CHECK-ERROR:         movi v5.4h, #31, msl #8
    200 // CHECK-ERROR:                          ^
    201 
    202 //----------------------------------------------------------------------
    203 // Vector Immediate - per byte
    204 //----------------------------------------------------------------------
    205         // out of range immediate (0 to 0xff)
    206         movi v0.8b, #-1
    207         movi v1.16b, #256
    208 
    209 // CHECK-ERROR: error: invalid operand for instruction
    210 // CHECK-ERROR:         movi v0.8b, #-1
    211 // CHECK-ERROR:                     ^
    212 // CHECK-ERROR: error: invalid operand for instruction
    213 // CHECK-ERROR:         movi v1.16b, #256
    214 // CHECK-ERROR:                      ^
    215 
    216 //----------------------------------------------------------------------
    217 // Scalar Floating-point Reciprocal Estimate
    218 //----------------------------------------------------------------------
    219 
    220     frecpe s19, h14
    221     frecpe d13, s13
    222 
    223 // CHECK-ERROR: error: invalid operand for instruction
    224 // CHECK-ERROR:        frecpe s19, h14
    225 // CHECK-ERROR:                    ^
    226 // CHECK-ERROR: error: invalid operand for instruction
    227 // CHECK-ERROR:        frecpe d13, s13
    228 // CHECK-ERROR:                    ^
    229 
    230 //----------------------------------------------------------------------
    231 // Scalar Floating-point Reciprocal Exponent
    232 //----------------------------------------------------------------------
    233 
    234     frecpx s18, h10
    235     frecpx d16, s19
    236 
    237 // CHECK-ERROR: error: invalid operand for instruction
    238 // CHECK-ERROR:        frecpx s18, h10
    239 // CHECK-ERROR:                    ^
    240 // CHECK-ERROR: error: invalid operand for instruction
    241 // CHECK-ERROR:        frecpx d16, s19
    242 // CHECK-ERROR:                    ^
    243 
    244 //----------------------------------------------------------------------
    245 // Scalar Floating-point Reciprocal Square Root Estimate
    246 //----------------------------------------------------------------------
    247 
    248     frsqrte s22, h13
    249     frsqrte d21, s12
    250 
    251 // CHECK-ERROR: error: invalid operand for instruction
    252 // CHECK-ERROR:        frsqrte s22, h13
    253 // CHECK-ERROR:                     ^
    254 // CHECK-ERROR: error: invalid operand for instruction
    255 // CHECK-ERROR:        frsqrte d21, s12
    256 // CHECK-ERROR:                     ^
    257 
    258 //----------------------------------------------------------------------
    259 // Vector Move Immediate - bytemask, per doubleword
    260 //---------------------------------------------------------------------
    261         // invalid bytemask (0x00 or 0xff)
    262         movi v0.2d, #0x10ff00ff00ff00ff
    263 
    264 // CHECK:ERROR: error: invalid operand for instruction
    265 // CHECK:ERROR:         movi v0.2d, #0x10ff00ff00ff00ff
    266 // CHECK:ERROR:                     ^
    267 
    268 //----------------------------------------------------------------------
    269 // Vector Move Immediate - bytemask, one doubleword
    270 //----------------------------------------------------------------------
    271         // invalid bytemask (0x00 or 0xff)
    272         movi v0.2d, #0xffff00ff001f00ff
    273 
    274 // CHECK:ERROR: error: invalid operand for instruction
    275 // CHECK:ERROR:         movi v0.2d, #0xffff00ff001f00ff
    276 // CHECK:ERROR:                     ^
    277 //----------------------------------------------------------------------
    278 // Vector Floating Point Move Immediate
    279 //----------------------------------------------------------------------
    280         // invalid vector type (2s, 4s, 2d)
    281          fmov v0.4h, #1.0
    282 
    283 // CHECK:ERROR: error: invalid operand for instruction
    284 // CHECK:ERROR:         fmov v0.4h, #1.0
    285 // CHECK:ERROR:              ^
    286 
    287 //----------------------------------------------------------------------
    288 // Vector Move -  register
    289 //----------------------------------------------------------------------
    290       // invalid vector type (8b, 16b)
    291       mov v0.2s, v31.8b
    292 // CHECK:ERROR: error: invalid operand for instruction
    293 // CHECK:ERROR:         mov v0.2s, v31.8b
    294 // CHECK:ERROR:                ^
    295 
    296 //----------------------------------------------------------------------
    297 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
    298 //----------------------------------------------------------------------
    299 
    300         // Mismatched and invalid vector types (2d)
    301         saba v0.16b, v1.8b, v2.8b
    302         uaba v0.2d, v1.2d, v2.2d
    303 
    304 // CHECK-ERROR: error: invalid operand for instruction
    305 // CHECK-ERROR:         saba v0.16b, v1.8b, v2.8b
    306 // CHECK-ERROR:                        ^
    307 // CHECK-ERROR: error: invalid operand for instruction
    308 // CHECK-ERROR:         uaba v0.2d, v1.2d, v2.2d
    309 // CHECK-ERROR:                ^
    310 
    311 //----------------------------------------------------------------------
    312 // Vector Absolute Difference and Accumulate (Signed, Unsigned)
    313 // Vector Absolute Difference (Signed, Unsigned)
    314 
    315         // Mismatched and invalid vector types (2d)
    316         uaba v0.16b, v1.8b, v2.8b
    317         saba v0.2d, v1.2d, v2.2d
    318         uabd v0.4s, v1.2s, v2.2s
    319         sabd v0.4h, v1.8h, v8.8h
    320 
    321 // CHECK-ERROR: error: invalid operand for instruction
    322 // CHECK-ERROR:         uaba v0.16b, v1.8b, v2.8b
    323 // CHECK-ERROR:                        ^
    324 // CHECK-ERROR: error: invalid operand for instruction
    325 // CHECK-ERROR:         saba v0.2d, v1.2d, v2.2d
    326 // CHECK-ERROR:                ^
    327 // CHECK-ERROR: error: invalid operand for instruction
    328 // CHECK-ERROR:         uabd v0.4s, v1.2s, v2.2s
    329 // CHECK-ERROR:                        ^
    330 // CHECK-ERROR: error: invalid operand for instruction
    331 // CHECK-ERROR:         sabd v0.4h, v1.8h, v8.8h
    332 // CHECK-ERROR:                        ^
    333 
    334 //----------------------------------------------------------------------
    335 // Vector Absolute Difference (Floating Point)
    336 //----------------------------------------------------------------------
    337         // Mismatched and invalid vector types
    338         fabd v0.2s, v1.4s, v2.2d
    339         fabd v0.4h, v1.4h, v2.4h
    340 
    341 // CHECK-ERROR: error: invalid operand for instruction
    342 // CHECK-ERROR:         fabd v0.2s, v1.4s, v2.2d
    343 // CHECK-ERROR:                        ^
    344 // CHECK-ERROR: error: invalid operand for instruction
    345 // CHECK-ERROR:         fabd v0.4h, v1.4h, v2.4h
    346 // CHECK-ERROR:                 ^
    347 //----------------------------------------------------------------------
    348 // Vector Multiply (Polynomial)
    349 //----------------------------------------------------------------------
    350 
    351         // Mismatched and invalid vector types
    352          pmul v0.8b, v1.8b, v2.16b
    353          pmul v0.2s, v1.2s, v2.2s
    354 
    355 // CHECK-ERROR: error: invalid operand for instruction
    356 // CHECK-ERROR:         pmul v0.8b, v1.8b, v2.16b
    357 // CHECK-ERROR:                               ^
    358 // CHECK-ERROR: error: invalid operand for instruction
    359 // CHECK-ERROR:         pmul v0.2s, v1.2s, v2.2s
    360 // CHECK-ERROR:                 ^
    361 
    362 //----------------------------------------------------------------------
    363 // Scalar Integer Add and Sub
    364 //----------------------------------------------------------------------
    365 
    366       // Mismatched registers
    367          add d0, s1, d2
    368          sub s1, d1, d2
    369 
    370 // CHECK-ERROR: error: invalid operand for instruction
    371 // CHECK-ERROR:         add d0, s1, d2
    372 // CHECK-ERROR:                 ^
    373 // CHECK-ERROR: error: invalid operand for instruction
    374 // CHECK-ERROR:         sub s1, d1, d2
    375 // CHECK-ERROR:             ^
    376 
    377 //----------------------------------------------------------------------
    378 // Vector Reciprocal Step (Floating Point)
    379 //----------------------------------------------------------------------
    380 
    381         // Mismatched and invalid vector types
    382          frecps v0.4s, v1.2d, v2.4s
    383          frecps v0.8h, v1.8h, v2.8h
    384 
    385 // CHECK-ERROR: error: invalid operand for instruction
    386 // CHECK-ERROR:        frecps v0.4s, v1.2d, v2.4s
    387 // CHECK-ERROR:                         ^
    388 // CHECK-ERROR: error: invalid operand for instruction
    389 // CHECK-ERROR:        frecps v0.8h, v1.8h, v2.8h
    390 // CHECK-ERROR:                  ^
    391 
    392 //----------------------------------------------------------------------
    393 // Vector Reciprocal Square Root Step (Floating Point)
    394 //----------------------------------------------------------------------
    395 
    396         // Mismatched and invalid vector types
    397          frsqrts v0.2d, v1.2d, v2.2s
    398          frsqrts v0.4h, v1.4h, v2.4h
    399 
    400 // CHECK-ERROR: error: invalid operand for instruction
    401 // CHECK-ERROR:        frsqrts v0.2d, v1.2d, v2.2s
    402 // CHECK-ERROR:                                 ^
    403 // CHECK-ERROR: error: invalid operand for instruction
    404 // CHECK-ERROR:        frsqrts v0.4h, v1.4h, v2.4h
    405 // CHECK-ERROR:                   ^
    406 
    407 
    408 //----------------------------------------------------------------------
    409 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
    410 //----------------------------------------------------------------------
    411 
    412         // Mismatched and invalid vector types
    413         facge v0.2d, v1.2s, v2.2d
    414         facge v0.4h, v1.4h, v2.4h
    415         facle v0.8h, v1.4h, v2.4h
    416 
    417 // CHECK-ERROR: error: invalid operand for instruction
    418 // CHECK-ERROR:        facge v0.2d, v1.2s, v2.2d
    419 // CHECK-ERROR:                        ^
    420 // CHECK-ERROR: error: invalid operand for instruction
    421 // CHECK-ERROR:        facge v0.4h, v1.4h, v2.4h
    422 // CHECK-ERROR:                 ^
    423 // CHECK-ERROR: error: invalid operand for instruction
    424 // CHECK-ERROR:        facle v0.8h, v1.4h, v2.4h
    425 // CHECK-ERROR:                 ^
    426 //----------------------------------------------------------------------
    427 // Vector Absolute Compare Mask Less Than (Floating Point)
    428 //----------------------------------------------------------------------
    429 
    430         // Mismatched and invalid vector types
    431         facgt v0.2d, v1.2d, v2.4s
    432         facgt v0.8h, v1.8h, v2.8h
    433         faclt v0.8b, v1.8b, v2.8b
    434 
    435 // CHECK-ERROR: error: invalid operand for instruction
    436 // CHECK-ERROR:        facgt v0.2d, v1.2d, v2.4s
    437 // CHECK-ERROR:                               ^
    438 // CHECK-ERROR: error: invalid operand for instruction
    439 // CHECK-ERROR:        facgt v0.8h, v1.8h, v2.8h
    440 // CHECK-ERROR:                 ^
    441 // CHECK-ERROR: error: invalid operand for instruction
    442 // CHECK-ERROR:        faclt v0.8b, v1.8b, v2.8b
    443 // CHECK-ERROR:                 ^
    444 
    445 
    446 //----------------------------------------------------------------------
    447 // Vector Compare Mask Equal (Integer)
    448 //----------------------------------------------------------------------
    449 
    450          // Mismatched vector types
    451          cmeq c0.2d, v1.2d, v2.2s
    452 
    453 // CHECK-ERROR: error: invalid operand for instruction
    454 // CHECK-ERROR:        cmeq c0.2d, v1.2d, v2.2s
    455 // CHECK-ERROR:                              ^
    456 
    457 //----------------------------------------------------------------------
    458 // Vector Compare Mask Higher or Same (Unsigned Integer)
    459 // Vector Compare Mask Less or Same (Unsigned Integer)
    460 // CMLS is alias for CMHS with operands reversed.
    461 //----------------------------------------------------------------------
    462 
    463          // Mismatched vector types
    464          cmhs c0.4h, v1.8b, v2.8b
    465          cmls c0.16b, v1.16b, v2.2d
    466 
    467 // CHECK-ERROR: error: invalid operand for instruction
    468 // CHECK-ERROR:        cmhs c0.4h, v1.8b, v2.8b
    469 // CHECK-ERROR:                       ^
    470 // CHECK-ERROR: error: invalid operand for instruction
    471 // CHECK-ERROR:        cmls c0.16b, v1.16b, v2.2d
    472 // CHECK-ERROR:                                ^
    473 
    474 //----------------------------------------------------------------------
    475 // Vector Compare Mask Greater Than or Equal (Integer)
    476 // Vector Compare Mask Less Than or Equal (Integer)
    477 // CMLE is alias for CMGE with operands reversed.
    478 //----------------------------------------------------------------------
    479 
    480          // Mismatched vector types
    481          cmge c0.8h, v1.8b, v2.8b
    482          cmle c0.4h, v1.2s, v2.2s
    483 
    484 // CHECK-ERROR: error: invalid operand for instruction
    485 // CHECK-ERROR:        cmge c0.8h, v1.8b, v2.8b
    486 // CHECK-ERROR:                       ^
    487 // CHECK-ERROR: error: invalid operand for instruction
    488 // CHECK-ERROR:         cmle c0.4h, v1.2s, v2.2s
    489 // CHECK-ERROR:                        ^
    490 
    491 //----------------------------------------------------------------------
    492 // Vector Compare Mask Higher (Unsigned Integer)
    493 // Vector Compare Mask Lower (Unsigned Integer)
    494 // CMLO is alias for CMHI with operands reversed.
    495 //----------------------------------------------------------------------
    496 
    497          // Mismatched vector types
    498          cmhi c0.4s, v1.4s, v2.16b
    499          cmlo c0.8b, v1.8b, v2.2s
    500 
    501 // CHECK-ERROR: error: invalid operand for instruction
    502 // CHECK-ERROR:        cmhi c0.4s, v1.4s, v2.16b
    503 // CHECK-ERROR:                              ^
    504 // CHECK-ERROR: error: invalid operand for instruction
    505 // CHECK-ERROR:         cmlo c0.8b, v1.8b, v2.2s
    506 // CHECK-ERROR:                               ^
    507 
    508 //----------------------------------------------------------------------
    509 // Vector Compare Mask Greater Than (Integer)
    510 // Vector Compare Mask Less Than (Integer)
    511 // CMLT is alias for CMGT with operands reversed.
    512 //----------------------------------------------------------------------
    513 
    514          // Mismatched vector types
    515          cmgt c0.8b, v1.4s, v2.16b
    516          cmlt c0.8h, v1.16b, v2.4s
    517 
    518 // CHECK-ERROR: error: invalid operand for instruction
    519 // CHECK-ERROR:         cmgt c0.8b, v1.4s, v2.16b
    520 // CHECK-ERROR:                        ^
    521 // CHECK-ERROR: error: invalid operand for instruction
    522 // CHECK-ERROR:         cmlt c0.8h, v1.16b, v2.4s
    523 // CHECK-ERROR:                        ^
    524 
    525 //----------------------------------------------------------------------
    526 // Vector Compare Mask Bitwise Test (Integer)
    527 //----------------------------------------------------------------------
    528 
    529          // Mismatched vector types
    530          cmtst c0.16b, v1.16b, v2.4s
    531 
    532 // CHECK-ERROR: error: invalid operand for instruction
    533 // CHECK-ERROR:         cmtst c0.16b, v1.16b, v2.4s
    534 // CHECK-ERROR:                                  ^
    535 
    536 //----------------------------------------------------------------------
    537 // Vector Compare Mask Equal (Floating Point)
    538 //----------------------------------------------------------------------
    539 
    540         // Mismatched and invalid vector types
    541         fcmeq v0.2d, v1.2s, v2.2d
    542         fcmeq v0.16b, v1.16b, v2.16b
    543         fcmeq v0.8b, v1.4h, v2.4h
    544 
    545 // CHECK-ERROR: error: invalid operand for instruction
    546 // CHECK-ERROR:        fcmeq v0.2d, v1.2s, v2.2d
    547 // CHECK-ERROR:                        ^
    548 // CHECK-ERROR: error: invalid operand for instruction
    549 // CHECK-ERROR:        fcmeq v0.16b, v1.16b, v2.16b
    550 // CHECK-ERROR:                 ^
    551 // CHECK-ERROR: error: invalid operand for instruction
    552 // CHECK-ERROR:        fcmeq v0.8b, v1.4h, v2.4h
    553 // CHECK-ERROR:                 ^
    554 
    555 //----------------------------------------------------------------------
    556 // Vector Compare Mask Greater Than Or Equal (Floating Point)
    557 // Vector Compare Mask Less Than Or Equal (Floating Point)
    558 // FCMLE is alias for FCMGE with operands reversed.
    559 //----------------------------------------------------------------------
    560 
    561         // Mismatched and invalid vector types
    562          fcmge v31.4s, v29.2s, v28.4s
    563          fcmge v3.8b, v8.2s, v12.2s
    564          fcmle v17.8h, v15.2d, v13.2d
    565 
    566 // CHECK-ERROR: error: invalid operand for instruction
    567 // CHECK-ERROR:        fcmge v31.4s, v29.2s, v28.4s
    568 // CHECK-ERROR:                          ^
    569 // CHECK-ERROR: error: invalid operand for instruction
    570 // CHECK-ERROR:        fcmge v3.8b, v8.2s, v12.2s
    571 // CHECK-ERROR:                 ^
    572 // CHECK-ERROR: error: invalid operand for instruction
    573 // CHECK-ERROR:        fcmle v17.8h, v15.2d, v13.2d
    574 // CHECK-ERROR:                 ^
    575 
    576 //----------------------------------------------------------------------
    577 // Vector Compare Mask Greater Than (Floating Point)
    578 // Vector Compare Mask Less Than (Floating Point)
    579 // FCMLT is alias for FCMGT with operands reversed.
    580 //----------------------------------------------------------------------
    581 
    582         // Mismatched and invalid vector types
    583          fcmgt v0.2d, v31.2s, v16.2s
    584          fcmgt v4.4s, v7.4s, v15.4h
    585          fcmlt v29.2d, v5.2d, v2.16b
    586 
    587 // CHECK-ERROR: error: invalid operand for instruction
    588 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, v16.2s
    589 // CHECK-ERROR:                         ^
    590 
    591 // CHECK-ERROR: error: invalid operand for instruction
    592 // CHECK-ERROR:        fcmgt v4.4s, v7.4s, v15.4h
    593 // CHECK-ERROR:                                ^
    594 // CHECK-ERROR: error: invalid operand for instruction
    595 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, v2.16b
    596 // CHECK-ERROR:                                ^
    597 
    598 //----------------------------------------------------------------------
    599 // Vector Compare Mask Equal to Zero (Integer)
    600 //----------------------------------------------------------------------
    601         // Mismatched vector types and invalid imm
    602          // Mismatched vector types
    603          cmeq c0.2d, v1.2s, #0
    604          cmeq c0.2d, v1.2d, #1
    605 
    606 // CHECK-ERROR: error: invalid operand for instruction
    607 // CHECK-ERROR:        cmeq c0.2d, v1.2s, #0
    608 // CHECK-ERROR:                       ^
    609 // CHECK-ERROR: error: invalid operand for instruction
    610 // CHECK-ERROR:        cmeq c0.2d, v1.2d, #1
    611 // CHECK-ERROR:                            ^
    612 
    613 //----------------------------------------------------------------------
    614 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
    615 //----------------------------------------------------------------------
    616         // Mismatched vector types and invalid imm
    617          cmge c0.8h, v1.8b, #0
    618          cmge c0.4s, v1.4s, #-1
    619 
    620 // CHECK-ERROR: error: invalid operand for instruction
    621 // CHECK-ERROR:        cmge c0.8h, v1.8b, #0
    622 // CHECK-ERROR:                       ^
    623 // CHECK-ERROR: error: invalid operand for instruction
    624 // CHECK-ERROR:         cmge c0.4s, v1.4s, #-1
    625 // CHECK-ERROR:                             ^
    626 
    627 //----------------------------------------------------------------------
    628 // Vector Compare Mask Greater Than Zero (Signed Integer)
    629 //----------------------------------------------------------------------
    630         // Mismatched vector types and invalid imm
    631          cmgt c0.8b, v1.4s, #0
    632          cmgt c0.8b, v1.8b, #-255
    633 
    634 // CHECK-ERROR: error: invalid operand for instruction
    635 // CHECK-ERROR:         cmgt c0.8b, v1.4s, #0
    636 // CHECK-ERROR:                        ^
    637 // CHECK-ERROR: error: invalid operand for instruction
    638 // CHECK-ERROR:         cmgt c0.8b, v1.8b, #-255
    639 // CHECK-ERROR:                             ^
    640 
    641 //----------------------------------------------------------------------
    642 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
    643 //----------------------------------------------------------------------
    644         // Mismatched vector types and invalid imm
    645          cmle c0.4h, v1.2s, #0
    646          cmle c0.16b, v1.16b, #16
    647 
    648 // CHECK-ERROR: error: invalid operand for instruction
    649 // CHECK-ERROR:        cmle c0.4h, v1.2s, #0
    650 // CHECK-ERROR:                       ^
    651 // CHECK-ERROR: error: invalid operand for instruction
    652 // CHECK-ERROR:         cmle c0.16b, v1.16b, #16
    653 // CHECK-ERROR:                               ^
    654 //----------------------------------------------------------------------
    655 // Vector Compare Mask Less Than Zero (Signed Integer)
    656 //----------------------------------------------------------------------
    657         // Mismatched vector types and invalid imm
    658          cmlt c0.8h, v1.16b, #0
    659          cmlt c0.8h, v1.8h, #-15
    660 
    661 // CHECK-ERROR: error: invalid operand for instruction
    662 // CHECK-ERROR:         cmlt c0.8h, v1.16b, #0
    663 // CHECK-ERROR:                        ^
    664 // CHECK-ERROR: error: invalid operand for instruction
    665 // CHECK-ERROR:         cmlt c0.8h, v1.8h, #-15
    666 // CHECK-ERROR:                             ^
    667 
    668 //----------------------------------------------------------------------
    669 // Vector Compare Mask Equal to Zero (Floating Point)
    670 //----------------------------------------------------------------------
    671 
    672         // Mismatched and invalid vector types, invalid imm
    673         fcmeq v0.2d, v1.2s, #0.0
    674         fcmeq v0.16b, v1.16b, #0.0
    675         fcmeq v0.8b, v1.4h, #1.0
    676         fcmeq v0.8b, v1.4h, #1
    677 
    678 // CHECK-ERROR: error: invalid operand for instruction
    679 // CHECK-ERROR:        fcmeq v0.2d, v1.2s, #0.0
    680 // CHECK-ERROR:                        ^
    681 // CHECK-ERROR: error: invalid operand for instruction
    682 // CHECK-ERROR:        fcmeq v0.16b, v1.16b, #0.0
    683 // CHECK-ERROR:                 ^
    684 
    685 
    686 // CHECK-ERROR: error: expected floating-point constant #0.0
    687 // CHECK-ERROR:        fcmeq v0.8b, v1.4h, #1.0
    688 // CHECK-ERROR:                             ^
    689 // CHECK-ERROR: error: invalid operand for instruction
    690 // CHECK-ERROR:        fcmeq v0.8b, v1.4h, #1
    691 // CHECK-ERROR:                             ^
    692 
    693 //----------------------------------------------------------------------
    694 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
    695 //----------------------------------------------------------------------
    696 
    697         // Mismatched and invalid vector types, invalid imm
    698          fcmge v31.4s, v29.2s, #0.0
    699          fcmge v3.8b, v8.2s, #0.0
    700          fcmle v17.8h, v15.2d, #-1.0
    701          fcmle v17.8h, v15.2d, #2
    702 
    703 // CHECK-ERROR: error: invalid operand for instruction
    704 // CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
    705 // CHECK-ERROR:                          ^
    706 // CHECK-ERROR: error: invalid operand for instruction
    707 // CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
    708 // CHECK-ERROR:                 ^
    709 
    710 
    711 // CHECK-ERROR: error: expected floating-point constant #0.0
    712 // CHECK-ERROR:        fcmle v17.8h, v15.2d, #-1.0
    713 // CHECK-ERROR:                               ^
    714 // CHECK-ERROR: error: invalid operand for instruction
    715 // CHECK-ERROR:        fcmle v17.8h, v15.2d, #2
    716 // CHECK-ERROR:                               ^
    717 
    718 //----------------------------------------------------------------------
    719 // Vector Compare Mask Greater Than Zero (Floating Point)
    720 //----------------------------------------------------------------------
    721         // Mismatched and invalid vector types, invalid imm
    722          fcmgt v0.2d, v31.2s, #0.0
    723          fcmgt v4.4s, v7.4h, #0.0
    724          fcmlt v29.2d, v5.2d, #255.0
    725          fcmlt v29.2d, v5.2d, #255
    726 
    727 // CHECK-ERROR: error: invalid operand for instruction
    728 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
    729 // CHECK-ERROR:                         ^
    730 // CHECK-ERROR: error: invalid operand for instruction
    731 // CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
    732 // CHECK-ERROR:                        ^
    733 
    734 
    735 // CHECK-ERROR: error: expected floating-point constant #0.0
    736 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, #255.0
    737 // CHECK-ERROR:                              ^
    738 // CHECK-ERROR: error: invalid operand for instruction
    739 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, #255
    740 // CHECK-ERROR:                              ^
    741 
    742 //----------------------------------------------------------------------
    743 // Vector Compare Mask Less Than or Equal To Zero (Floating Point)
    744 //----------------------------------------------------------------------
    745         // Mismatched and invalid vector types, invalid imm
    746          fcmge v31.4s, v29.2s, #0.0
    747          fcmge v3.8b, v8.2s, #0.0
    748          fcmle v17.2d, v15.2d, #15.0
    749          fcmle v17.2d, v15.2d, #15
    750 
    751 // CHECK-ERROR: error: invalid operand for instruction
    752 // CHECK-ERROR:        fcmge v31.4s, v29.2s, #0.0
    753 // CHECK-ERROR:                          ^
    754 // CHECK-ERROR: error: invalid operand for instruction
    755 // CHECK-ERROR:        fcmge v3.8b, v8.2s, #0.0
    756 // CHECK-ERROR:                 ^
    757 
    758 
    759 // CHECK-ERROR: error: expected floating-point constant #0.0
    760 // CHECK-ERROR:        fcmle v17.2d, v15.2d, #15.0
    761 // CHECK-ERROR:                               ^
    762 // CHECK-ERROR: error: invalid operand for instruction
    763 // CHECK-ERROR:        fcmle v17.2d, v15.2d, #15
    764 // CHECK-ERROR:                              ^
    765 
    766 //----------------------------------------------------------------------
    767 // Vector Compare Mask Less Than Zero (Floating Point)
    768 //----------------------------------------------------------------------
    769         // Mismatched and invalid vector types, invalid imm
    770          fcmgt v0.2d, v31.2s, #0.0
    771          fcmgt v4.4s, v7.4h, #0.0
    772          fcmlt v29.2d, v5.2d, #16.0
    773          fcmlt v29.2d, v5.2d, #2
    774 
    775 // CHECK-ERROR: error: invalid operand for instruction
    776 // CHECK-ERROR:        fcmgt v0.2d, v31.2s, #0.0
    777 // CHECK-ERROR:                         ^
    778 // CHECK-ERROR: error: invalid operand for instruction
    779 // CHECK-ERROR:        fcmgt v4.4s, v7.4h, #0.0
    780 // CHECK-ERROR:                        ^
    781 
    782 
    783 // CHECK-ERROR: error: expected floating-point constant #0.0
    784 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, #16.0
    785 // CHECK-ERROR:                              ^
    786 // CHECK-ERROR: error: invalid operand for instruction
    787 // CHECK-ERROR:        fcmlt v29.2d, v5.2d, #2
    788 // CHECK-ERROR:                              ^
    789 
    790 /-----------------------------------------------------------------------
    791 // Vector Integer Halving Add (Signed)
    792 // Vector Integer Halving Add (Unsigned)
    793 // Vector Integer Halving Sub (Signed)
    794 // Vector Integer Halving Sub (Unsigned)
    795 //----------------------------------------------------------------------
    796         // Mismatched and invalid vector types (2d)
    797         shadd v0.2d, v1.2d, v2.2d
    798         uhadd v4.2s, v5.2s, v5.4h
    799         shsub v11.4h, v12.8h, v13.4h
    800         uhsub v31.16b, v29.8b, v28.8b
    801 
    802 // CHECK-ERROR: error: invalid operand for instruction
    803 // CHECK-ERROR:        shadd v0.2d, v1.2d, v2.2d
    804 // CHECK-ERROR:                 ^
    805 // CHECK-ERROR: error: invalid operand for instruction
    806 // CHECK-ERROR:        uhadd v4.2s, v5.2s, v5.4h
    807 // CHECK-ERROR:                               ^
    808 // CHECK-ERROR: error: invalid operand for instruction
    809 // CHECK-ERROR:        shsub v11.4h, v12.8h, v13.4h
    810 // CHECK-ERROR:                          ^
    811 // CHECK-ERROR: error: invalid operand for instruction
    812 // CHECK-ERROR:        uhsub v31.16b, v29.8b, v28.8b
    813 // CHECK-ERROR:                          ^
    814 
    815 //----------------------------------------------------------------------
    816 // Vector Integer Rouding Halving Add (Signed)
    817 // Vector Integer Rouding Halving Add (Unsigned)
    818 //----------------------------------------------------------------------
    819 
    820         // Mismatched and invalid vector types (2d)
    821         srhadd v0.2s, v1.2s, v2.2d
    822         urhadd v0.16b, v1.16b, v2.8h
    823 
    824 // CHECK-ERROR: error: invalid operand for instruction
    825 // CHECK-ERROR:        srhadd v0.2s, v1.2s, v2.2d
    826 // CHECK-ERROR:                                ^
    827 // CHECK-ERROR: error: invalid operand for instruction
    828 // CHECK-ERROR:        urhadd v0.16b, v1.16b, v2.8h
    829 // CHECK-ERROR:                                  ^
    830 
    831 //----------------------------------------------------------------------
    832 // Vector Integer Saturating Add (Signed)
    833 // Vector Integer Saturating Add (Unsigned)
    834 // Vector Integer Saturating Sub (Signed)
    835 // Vector Integer Saturating Sub (Unsigned)
    836 //----------------------------------------------------------------------
    837 
    838         // Mismatched vector types
    839         sqadd v0.2s, v1.2s, v2.2d
    840         uqadd v31.8h, v1.4h, v2.4h
    841         sqsub v10.8h, v1.16b, v2.16b
    842         uqsub v31.8b, v1.8b, v2.4s
    843 
    844 // CHECK-ERROR: error: invalid operand for instruction
    845 // CHECK-ERROR:        sqadd v0.2s, v1.2s, v2.2d
    846 // CHECK-ERROR:                               ^
    847 // CHECK-ERROR: error: invalid operand for instruction
    848 // CHECK-ERROR:        uqadd v31.8h, v1.4h, v2.4h
    849 // CHECK-ERROR:                         ^
    850 // CHECK-ERROR: error: invalid operand for instruction
    851 // CHECK-ERROR:        sqsub v10.8h, v1.16b, v2.16b
    852 // CHECK-ERROR:                         ^
    853 // CHECK-ERROR: error: invalid operand for instruction
    854 // CHECK-ERROR:        uqsub v31.8b, v1.8b, v2.4s
    855 // CHECK-ERROR:                                ^
    856 
    857 //----------------------------------------------------------------------
    858 // Scalar Integer Saturating Add (Signed)
    859 // Scalar Integer Saturating Add (Unsigned)
    860 // Scalar Integer Saturating Sub (Signed)
    861 // Scalar Integer Saturating Sub (Unsigned)
    862 //----------------------------------------------------------------------
    863 
    864       // Mismatched registers
    865          sqadd d0, s31, d2
    866          uqadd s0, s1, d2
    867          sqsub b0, b2, s18
    868          uqsub h1, h2, d2
    869 
    870 // CHECK-ERROR: error: invalid operand for instruction
    871 // CHECK-ERROR:        sqadd d0, s31, d2
    872 // CHECK-ERROR:                  ^
    873 // CHECK-ERROR: error: invalid operand for instruction
    874 // CHECK-ERROR:        uqadd s0, s1, d2
    875 // CHECK-ERROR:                      ^
    876 // CHECK-ERROR: error: invalid operand for instruction
    877 // CHECK-ERROR:        sqsub b0, b2, s18
    878 // CHECK-ERROR:                      ^
    879 // CHECK-ERROR: error: invalid operand for instruction
    880 // CHECK-ERROR:        uqsub h1, h2, d2
    881 // CHECK-ERROR:                      ^
    882 
    883 //----------------------------------------------------------------------
    884 // Scalar Integer Saturating Doubling Multiply Half High (Signed)
    885 //----------------------------------------------------------------------
    886 
    887     sqdmulh h10, s11, h12
    888     sqdmulh s20, h21, s2
    889 
    890 // CHECK-ERROR: error: invalid operand for instruction
    891 // CHECK-ERROR:        sqdmulh h10, s11, h12
    892 // CHECK-ERROR:                     ^
    893 // CHECK-ERROR: error: invalid operand for instruction
    894 // CHECK-ERROR:        sqdmulh s20, h21, s2
    895 // CHECK-ERROR:                     ^
    896 
    897 //------------------------------------------------------------------------
    898 // Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed)
    899 //------------------------------------------------------------------------
    900 
    901     sqrdmulh h10, s11, h12
    902     sqrdmulh s20, h21, s2
    903 
    904 // CHECK-ERROR: error: invalid operand for instruction
    905 // CHECK-ERROR:        sqrdmulh h10, s11, h12
    906 // CHECK-ERROR:                      ^
    907 // CHECK-ERROR: error: invalid operand for instruction
    908 // CHECK-ERROR:        sqrdmulh s20, h21, s2
    909 // CHECK-ERROR:                      ^
    910 
    911 //----------------------------------------------------------------------
    912 // Vector Shift Left (Signed and Unsigned Integer)
    913 //----------------------------------------------------------------------
    914         // Mismatched vector types
    915         sshl v0.4s, v15.2s, v16.2s
    916         ushl v1.16b, v25.16b, v6.8h
    917 
    918 // CHECK-ERROR: error: invalid operand for instruction
    919 // CHECK-ERROR:        sshl v0.4s, v15.2s, v16.2s
    920 // CHECK-ERROR:                        ^
    921 // CHECK-ERROR: error: invalid operand for instruction
    922 // CHECK-ERROR:        ushl v1.16b, v25.16b, v6.8h
    923 // CHECK-ERROR:                                 ^
    924 
    925 //----------------------------------------------------------------------
    926 // Vector Saturating Shift Left (Signed and Unsigned Integer)
    927 //----------------------------------------------------------------------
    928         // Mismatched vector types
    929         sqshl v0.2s, v15.4s, v16.2d
    930         uqshl v1.8b, v25.4h, v6.8h
    931 
    932 // CHECK-ERROR: error: invalid operand for instruction
    933 // CHECK-ERROR:        sqshl v0.2s, v15.4s, v16.2d
    934 // CHECK-ERROR:                         ^
    935 // CHECK-ERROR: error: invalid operand for instruction
    936 // CHECK-ERROR:        uqshl v1.8b, v25.4h, v6.8h
    937 // CHECK-ERROR:                         ^
    938 
    939 //----------------------------------------------------------------------
    940 // Vector Rouding Shift Left (Signed and Unsigned Integer)
    941 //----------------------------------------------------------------------
    942         // Mismatched vector types
    943         srshl v0.8h, v15.8h, v16.16b
    944         urshl v1.2d, v25.2d, v6.4s
    945 
    946 // CHECK-ERROR: error: invalid operand for instruction
    947 // CHECK-ERROR:        srshl v0.8h, v15.8h, v16.16b
    948 // CHECK-ERROR:                                 ^
    949 // CHECK-ERROR: error: invalid operand for instruction
    950 // CHECK-ERROR:        urshl v1.2d, v25.2d, v6.4s
    951 // CHECK-ERROR:                                ^
    952 
    953 //----------------------------------------------------------------------
    954 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
    955 //----------------------------------------------------------------------
    956         // Mismatched vector types
    957         sqrshl v0.2s, v15.8h, v16.16b
    958         uqrshl v1.4h, v25.4h,  v6.2d
    959 
    960 // CHECK-ERROR: error: invalid operand for instruction
    961 // CHECK-ERROR:        sqrshl v0.2s, v15.8h, v16.16b
    962 // CHECK-ERROR:                          ^
    963 // CHECK-ERROR: error: invalid operand for instruction
    964 // CHECK-ERROR:        uqrshl v1.4h, v25.4h,  v6.2d
    965 // CHECK-ERROR:                                  ^
    966 
    967 //----------------------------------------------------------------------
    968 // Scalar Integer Shift Left (Signed, Unsigned)
    969 //----------------------------------------------------------------------
    970         // Mismatched and invalid vector types
    971         sshl d0, d1, s2
    972         ushl b2, b0, b1
    973 
    974 // CHECK-ERROR: error: invalid operand for instruction
    975 // CHECK-ERROR:        sshl d0, d1, s2
    976 // CHECK-ERROR:                     ^
    977 // CHECK-ERROR: error: invalid operand for instruction
    978 // CHECK-ERROR:        ushl b2, b0, b1
    979 // CHECK-ERROR:             ^
    980 
    981 //----------------------------------------------------------------------
    982 // Scalar Integer Saturating Shift Left (Signed, Unsigned)
    983 //----------------------------------------------------------------------
    984 
    985         // Mismatched vector types
    986         sqshl b0, s1, b0
    987         uqshl h0, b1, h0
    988         sqshl s0, h1, s0
    989         uqshl d0, b1, d0
    990 
    991 // CHECK-ERROR: error: invalid operand for instruction
    992 // CHECK-ERROR:        sqshl b0, s1, b0
    993 // CHECK-ERROR:                  ^
    994 // CHECK-ERROR: error: invalid operand for instruction
    995 // CHECK-ERROR:        uqshl h0, b1, h0
    996 // CHECK-ERROR:                  ^
    997 // CHECK-ERROR: error: invalid operand for instruction
    998 // CHECK-ERROR:        sqshl s0, h1, s0
    999 // CHECK-ERROR:                  ^
   1000 // CHECK-ERROR: error: invalid operand for instruction
   1001 // CHECK-ERROR:        uqshl d0, b1, d0
   1002 // CHECK-ERROR:                  ^
   1003 
   1004 //----------------------------------------------------------------------
   1005 // Scalar Integer Rouding Shift Left (Signed, Unsigned)
   1006 //----------------------------------------------------------------------
   1007         // Mismatched and invalid vector types
   1008         srshl h0, h1, h2
   1009         urshl s0, s1, s2
   1010 
   1011 // CHECK-ERROR: error: invalid operand for instruction
   1012 // CHECK-ERROR:        srshl h0, h1, h2
   1013 // CHECK-ERROR:              ^
   1014 // CHECK-ERROR: error: invalid operand for instruction
   1015 // CHECK-ERROR:        urshl s0, s1, s2
   1016 // CHECK-ERROR:              ^
   1017 
   1018 
   1019 //----------------------------------------------------------------------
   1020 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
   1021 //----------------------------------------------------------------------
   1022 
   1023         // Mismatched vector types
   1024         sqrshl b0, b1, s0
   1025         uqrshl h0, h1, b0
   1026         sqrshl s0, s1, h0
   1027         uqrshl d0, d1, b0
   1028 
   1029 // CHECK-ERROR: error: invalid operand for instruction
   1030 // CHECK-ERROR:        sqrshl b0, b1, s0
   1031 // CHECK-ERROR:                       ^
   1032 // CHECK-ERROR: error: invalid operand for instruction
   1033 // CHECK-ERROR:        uqrshl h0, h1, b0
   1034 // CHECK-ERROR:                       ^
   1035 // CHECK-ERROR: error: invalid operand for instruction
   1036 // CHECK-ERROR:        sqrshl s0, s1, h0
   1037 // CHECK-ERROR:                       ^
   1038 // CHECK-ERROR: error: invalid operand for instruction
   1039 // CHECK-ERROR:        uqrshl d0, d1, b0
   1040 // CHECK-ERROR:                       ^
   1041 
   1042 
   1043 //----------------------------------------------------------------------
   1044 // Vector Maximum (Signed, Unsigned)
   1045 //----------------------------------------------------------------------
   1046         // Mismatched and invalid vector types
   1047         smax v0.2d, v1.2d, v2.2d
   1048         umax v0.4h, v1.4h, v2.2s
   1049 
   1050 // CHECK-ERROR: error: invalid operand for instruction
   1051 // CHECK-ERROR:        smax v0.2d, v1.2d, v2.2d
   1052 // CHECK-ERROR:                ^
   1053 // CHECK-ERROR: error: invalid operand for instruction
   1054 // CHECK-ERROR:        umax v0.4h, v1.4h, v2.2s
   1055 // CHECK-ERROR:                              ^
   1056 
   1057 //----------------------------------------------------------------------
   1058 // Vector Minimum (Signed, Unsigned)
   1059 //----------------------------------------------------------------------
   1060         // Mismatched and invalid vector types
   1061         smin v0.2d, v1.2d, v2.2d
   1062         umin v0.2s, v1.2s, v2.8b
   1063 
   1064 // CHECK-ERROR: error: invalid operand for instruction
   1065 // CHECK-ERROR:        smin v0.2d, v1.2d, v2.2d
   1066 // CHECK-ERROR:                ^
   1067 // CHECK-ERROR: error: invalid operand for instruction
   1068 // CHECK-ERROR:        umin v0.2s, v1.2s, v2.8b
   1069 // CHECK-ERROR:                             ^
   1070 
   1071 
   1072 //----------------------------------------------------------------------
   1073 // Vector Maximum (Floating Point)
   1074 //----------------------------------------------------------------------
   1075         // Mismatched and invalid vector types
   1076         fmax v0.2s, v1.2s, v2.4s
   1077         fmax v0.8b, v1.8b, v2.8b
   1078 
   1079 // CHECK-ERROR: error: invalid operand for instruction
   1080 // CHECK-ERROR:        fmax v0.2s, v1.2s, v2.4s
   1081 // CHECK-ERROR:                              ^
   1082 // CHECK-ERROR: error: invalid operand for instruction
   1083 // CHECK-ERROR:        fmax v0.8b, v1.8b, v2.8b
   1084 // CHECK-ERROR:                ^
   1085 //----------------------------------------------------------------------
   1086 // Vector Minimum (Floating Point)
   1087 //----------------------------------------------------------------------
   1088         // Mismatched and invalid vector types
   1089         fmin v0.4s, v1.4s, v2.2d
   1090         fmin v0.8h, v1.8h, v2.8h
   1091 
   1092 // CHECK-ERROR: error: invalid operand for instruction
   1093 // CHECK-ERROR:        fmin v0.4s, v1.4s, v2.2d
   1094 // CHECK-ERROR:                              ^
   1095 // CHECK-ERROR: error: invalid operand for instruction
   1096 // CHECK-ERROR:        fmin v0.8h, v1.8h, v2.8h
   1097 // CHECK-ERROR:                ^
   1098 
   1099 //----------------------------------------------------------------------
   1100 // Vector maxNum (Floating Point)
   1101 //----------------------------------------------------------------------
   1102         // Mismatched and invalid vector types
   1103         fmaxnm v0.2s, v1.2s, v2.2d
   1104         fmaxnm v0.4h, v1.8h, v2.4h
   1105 
   1106 // CHECK-ERROR: error: invalid operand for instruction
   1107 // CHECK-ERROR:        fmaxnm v0.2s, v1.2s, v2.2d
   1108 // CHECK-ERROR:                                ^
   1109 // CHECK-ERROR: error: invalid operand for instruction
   1110 // CHECK-ERROR:        fmaxnm v0.4h, v1.8h, v2.4h
   1111 // CHECK-ERROR:                  ^
   1112 
   1113 //----------------------------------------------------------------------
   1114 // Vector minNum (Floating Point)
   1115 //----------------------------------------------------------------------
   1116         // Mismatched and invalid vector types
   1117         fminnm v0.4s, v1.2s, v2.4s
   1118         fminnm v0.16b, v0.16b, v0.16b
   1119 
   1120 // CHECK-ERROR: error: invalid operand for instruction
   1121 // CHECK-ERROR:        fminnm v0.4s, v1.2s, v2.4s
   1122 // CHECK-ERROR:                         ^
   1123 // CHECK-ERROR: error: invalid operand for instruction
   1124 // CHECK-ERROR:        fminnm v0.16b, v0.16b, v0.16b
   1125 // CHECK-ERROR:                  ^
   1126 
   1127 
   1128 //----------------------------------------------------------------------
   1129 // Vector Maximum Pairwise (Signed, Unsigned)
   1130 //----------------------------------------------------------------------
   1131         // Mismatched and invalid vector types
   1132         smaxp v0.2d, v1.2d, v2.2d
   1133         umaxp v0.4h, v1.4h, v2.2s
   1134 
   1135 // CHECK-ERROR: error: invalid operand for instruction
   1136 // CHECK-ERROR:        smaxp v0.2d, v1.2d, v2.2d
   1137 // CHECK-ERROR:                 ^
   1138 // CHECK-ERROR: error: invalid operand for instruction
   1139 // CHECK-ERROR:        umaxp v0.4h, v1.4h, v2.2s
   1140 // CHECK-ERROR:                               ^
   1141 
   1142 //----------------------------------------------------------------------
   1143 // Vector Minimum Pairwise (Signed, Unsigned)
   1144 //----------------------------------------------------------------------
   1145         // Mismatched and invalid vector types
   1146         sminp v0.2d, v1.2d, v2.2d
   1147         uminp v0.2s, v1.2s, v2.8b
   1148 
   1149 // CHECK-ERROR: error: invalid operand for instruction
   1150 // CHECK-ERROR:        sminp v0.2d, v1.2d, v2.2d
   1151 // CHECK-ERROR:                 ^
   1152 // CHECK-ERROR: error: invalid operand for instruction
   1153 // CHECK-ERROR:        uminp v0.2s, v1.2s, v2.8b
   1154 // CHECK-ERROR:                               ^
   1155 
   1156 
   1157 //----------------------------------------------------------------------
   1158 // Vector Maximum Pairwise (Floating Point)
   1159 //----------------------------------------------------------------------
   1160         // Mismatched and invalid vector types
   1161         fmaxp v0.2s, v1.2s, v2.4s
   1162         fmaxp v0.8b, v1.8b, v2.8b
   1163 
   1164 // CHECK-ERROR: error: invalid operand for instruction
   1165 // CHECK-ERROR:        fmaxp v0.2s, v1.2s, v2.4s
   1166 // CHECK-ERROR:                               ^
   1167 // CHECK-ERROR: error: invalid operand for instruction
   1168 // CHECK-ERROR:        fmaxp v0.8b, v1.8b, v2.8b
   1169 // CHECK-ERROR:                 ^
   1170 //----------------------------------------------------------------------
   1171 // Vector Minimum Pairwise (Floating Point)
   1172 //----------------------------------------------------------------------
   1173         // Mismatched and invalid vector types
   1174         fminp v0.4s, v1.4s, v2.2d
   1175         fminp v0.8h, v1.8h, v2.8h
   1176 
   1177 // CHECK-ERROR: error: invalid operand for instruction
   1178 // CHECK-ERROR:        fminp v0.4s, v1.4s, v2.2d
   1179 // CHECK-ERROR:                               ^
   1180 // CHECK-ERROR: error: invalid operand for instruction
   1181 // CHECK-ERROR:        fminp v0.8h, v1.8h, v2.8h
   1182 // CHECK-ERROR:                 ^
   1183 
   1184 //----------------------------------------------------------------------
   1185 // Vector maxNum Pairwise (Floating Point)
   1186 //----------------------------------------------------------------------
   1187         // Mismatched and invalid vector types
   1188         fmaxnmp v0.2s, v1.2s, v2.2d
   1189         fmaxnmp v0.4h, v1.8h, v2.4h
   1190 
   1191 // CHECK-ERROR: error: invalid operand for instruction
   1192 // CHECK-ERROR:        fmaxnmp v0.2s, v1.2s, v2.2d
   1193 // CHECK-ERROR:                                 ^
   1194 // CHECK-ERROR: error: invalid operand for instruction
   1195 // CHECK-ERROR:        fmaxnmp v0.4h, v1.8h, v2.4h
   1196 // CHECK-ERROR:                   ^
   1197 
   1198 //----------------------------------------------------------------------
   1199 // Vector minNum Pairwise (Floating Point)
   1200 //----------------------------------------------------------------------
   1201         // Mismatched and invalid vector types
   1202         fminnmp v0.4s, v1.2s, v2.4s
   1203         fminnmp v0.16b, v0.16b, v0.16b
   1204 
   1205 // CHECK-ERROR: error: invalid operand for instruction
   1206 // CHECK-ERROR:        fminnmp v0.4s, v1.2s, v2.4s
   1207 // CHECK-ERROR:                          ^
   1208 // CHECK-ERROR: error: invalid operand for instruction
   1209 // CHECK-ERROR:        fminnmp v0.16b, v0.16b, v0.16b
   1210 // CHECK-ERROR:                   ^
   1211 
   1212 
   1213 //----------------------------------------------------------------------
   1214 // Vector Add Pairwise (Integer)
   1215 //----------------------------------------------------------------------
   1216 
   1217         // Mismatched vector types
   1218         addp v0.16b, v1.8b, v2.8b
   1219 
   1220 // CHECK-ERROR: error: invalid operand for instruction
   1221 // CHECK-ERROR:         addp v0.16b, v1.8b, v2.8b
   1222 // CHECK-ERROR:                         ^
   1223 
   1224 //----------------------------------------------------------------------
   1225 // Vector Add Pairwise (Floating Point)
   1226 //----------------------------------------------------------------------
   1227         // Mismatched and invalid vector types
   1228         faddp v0.16b, v1.8b, v2.8b
   1229         faddp v0.2d, v1.2d, v2.8h
   1230 
   1231 // CHECK-ERROR: error: invalid operand for instruction
   1232 // CHECK-ERROR:         faddp v0.16b, v1.8b, v2.8b
   1233 // CHECK-ERROR:                  ^
   1234 // CHECK-ERROR: error: invalid operand for instruction
   1235 // CHECK-ERROR:         faddp v0.2d, v1.2d, v2.8h
   1236 // CHECK-ERROR:                                ^
   1237 
   1238 
   1239 //----------------------------------------------------------------------
   1240 // Vector Saturating Doubling Multiply High
   1241 //----------------------------------------------------------------------
   1242          // Mismatched and invalid vector types
   1243          sqdmulh v2.4h, v25.8h, v3.4h
   1244          sqdmulh v12.2d, v5.2d, v13.2d
   1245          sqdmulh v3.8b, v1.8b, v30.8b
   1246 
   1247 // CHECK-ERROR: error: invalid operand for instruction
   1248 // CHECK-ERROR:         sqdmulh v2.4h, v25.8h, v3.4h
   1249 // CHECK-ERROR:                            ^
   1250 // CHECK-ERROR: error: invalid operand for instruction
   1251 // CHECK-ERROR:         sqdmulh v12.2d, v5.2d, v13.2d
   1252 // CHECK-ERROR:                     ^
   1253 // CHECK-ERROR: error: invalid operand for instruction
   1254 // CHECK-ERROR:         sqdmulh v3.8b, v1.8b, v30.8b
   1255 // CHECK-ERROR:                    ^
   1256 
   1257 //----------------------------------------------------------------------
   1258 // Vector Saturating Rouding Doubling Multiply High
   1259 //----------------------------------------------------------------------
   1260          // Mismatched and invalid vector types
   1261          sqrdmulh v2.2s, v25.4s, v3.4s
   1262          sqrdmulh v12.16b, v5.16b, v13.16b
   1263          sqrdmulh v3.4h, v1.4h, v30.2d
   1264 
   1265 
   1266 // CHECK-ERROR: error: invalid operand for instruction
   1267 // CHECK-ERROR:         sqrdmulh v2.2s, v25.4s, v3.4s
   1268 // CHECK-ERROR:                             ^
   1269 // CHECK-ERROR: error: invalid operand for instruction
   1270 // CHECK-ERROR:         sqrdmulh v12.16b, v5.16b, v13.16b
   1271 // CHECK-ERROR:                       ^
   1272 // CHECK-ERROR: error: invalid operand for instruction
   1273 // CHECK-ERROR:         sqrdmulh v3.4h, v1.4h, v30.2d
   1274 // CHECK-ERROR:                                    ^
   1275 
   1276 //----------------------------------------------------------------------
   1277 // Vector Multiply Extended
   1278 //----------------------------------------------------------------------
   1279          // Mismatched and invalid vector types
   1280       fmulx v21.2s, v5.2s, v13.2d
   1281       fmulx v1.4h, v25.4h, v3.4h
   1282 
   1283 // CHECK-ERROR: error: invalid operand for instruction
   1284 // CHECK-ERROR:         fmulx v21.2s, v5.2s, v13.2d
   1285 // CHECK-ERROR:                                  ^
   1286 // CHECK-ERROR: error: invalid operand for instruction
   1287 // CHECK-ERROR:         fmulx v1.4h, v25.4h, v3.4h
   1288 // CHECK-ERROR:                  ^
   1289 
   1290 //------------------------------------------------------------------------------
   1291 // Vector Shift Left by Immediate
   1292 //------------------------------------------------------------------------------
   1293          // Mismatched vector types and out of range
   1294          shl v0.4s, v15,2s, #3
   1295          shl v0.2d, v17.4s, #3
   1296          shl v0.8b, v31.8b, #-1
   1297          shl v0.8b, v31.8b, #8
   1298          shl v0.4s, v21.4s, #32
   1299          shl v0.2d, v1.2d, #64
   1300 
   1301 
   1302 // CHECK-ERROR: error: unexpected token in argument list
   1303 // CHECK-ERROR:         shl v0.4s, v15,2s, #3
   1304 // CHECK-ERROR:                         ^
   1305 
   1306 // CHECK-ERROR: error: invalid operand for instruction
   1307 // CHECK-ERROR:         shl v0.2d, v17.4s, #3
   1308 // CHECK-ERROR:                        ^
   1309 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1310 // CHECK-ERROR:         shl v0.8b, v31.8b, #-1
   1311 // CHECK-ERROR:                            ^
   1312 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1313 // CHECK-ERROR:         shl v0.8b, v31.8b, #8
   1314 // CHECK-ERROR:                            ^
   1315 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   1316 // CHECK-ERROR:         shl v0.4s, v21.4s, #32
   1317 // CHECK-ERROR:                            ^
   1318 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   1319 // CHECK-ERROR:         shl v0.2d, v1.2d, #64
   1320 // CHECK-ERROR:                           ^
   1321 
   1322 //----------------------------------------------------------------------
   1323 // Vector Shift Left Long by Immediate
   1324 //----------------------------------------------------------------------
   1325         // Mismatched vector types
   1326         sshll v0.4s, v15.2s, #3
   1327         ushll v1.16b, v25.16b, #6
   1328         sshll2 v0.2d, v3.8s, #15
   1329         ushll2 v1.4s, v25.4s, #7
   1330 
   1331         // Out of range
   1332         sshll v0.8h, v1.8b, #-1
   1333         sshll v0.8h, v1.8b, #9
   1334         ushll v0.4s, v1.4h, #17
   1335         ushll v0.2d, v1.2s, #33
   1336         sshll2 v0.8h, v1.16b, #9
   1337         sshll2 v0.4s, v1.8h, #17
   1338         ushll2 v0.2d, v1.4s, #33
   1339 
   1340 // CHECK-ERROR: error: invalid operand for instruction
   1341 // CHECK-ERROR:        sshll v0.4s, v15.2s, #3
   1342 // CHECK-ERROR:                         ^
   1343 // CHECK-ERROR: error: invalid operand for instruction
   1344 // CHECK-ERROR:        ushll v1.16b, v25.16b, #6
   1345 // CHECK-ERROR:                 ^
   1346 // CHECK-ERROR: error: invalid operand for instruction
   1347 // CHECK-ERROR:        sshll2 v0.2d, v3.8s, #15
   1348 // CHECK-ERROR:                      ^
   1349 // CHECK-ERROR: error: invalid operand for instruction
   1350 // CHECK-ERROR:        ushll2 v1.4s, v25.4s, #7
   1351 // CHECK-ERROR:                          ^
   1352 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1353 // CHECK-ERROR:        sshll v0.8h, v1.8b, #-1
   1354 // CHECK-ERROR:                            ^
   1355 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1356 // CHECK-ERROR:        sshll v0.8h, v1.8b, #9
   1357 // CHECK-ERROR:                            ^
   1358 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   1359 // CHECK-ERROR:        ushll v0.4s, v1.4h, #17
   1360 // CHECK-ERROR:                            ^
   1361 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   1362 // CHECK-ERROR:        ushll v0.2d, v1.2s, #33
   1363 // CHECK-ERROR:                            ^
   1364 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1365 // CHECK-ERROR:        sshll2 v0.8h, v1.16b, #9
   1366 // CHECK-ERROR:                              ^
   1367 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   1368 // CHECK-ERROR:        sshll2 v0.4s, v1.8h, #17
   1369 // CHECK-ERROR:                             ^
   1370 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   1371 // CHECK-ERROR:        ushll2 v0.2d, v1.4s, #33
   1372 // CHECK-ERROR:                             ^
   1373 
   1374 
   1375 //------------------------------------------------------------------------------
   1376 // Vector shift right by immediate
   1377 //------------------------------------------------------------------------------
   1378          sshr v0.8b, v1.8h, #3
   1379          sshr v0.4h, v1.4s, #3
   1380          sshr v0.2s, v1.2d, #3
   1381          sshr v0.16b, v1.16b, #9
   1382          sshr v0.8h, v1.8h, #17
   1383          sshr v0.4s, v1.4s, #33
   1384          sshr v0.2d, v1.2d, #65
   1385 
   1386 // CHECK-ERROR: error: invalid operand for instruction
   1387 // CHECK-ERROR:         sshr v0.8b, v1.8h, #3
   1388 // CHECK-ERROR:                        ^
   1389 // CHECK-ERROR: error: invalid operand for instruction
   1390 // CHECK-ERROR:         sshr v0.4h, v1.4s, #3
   1391 // CHECK-ERROR:                        ^
   1392 // CHECK-ERROR: error: invalid operand for instruction
   1393 // CHECK-ERROR:         sshr v0.2s, v1.2d, #3
   1394 // CHECK-ERROR:                        ^
   1395 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1396 // CHECK-ERROR:         sshr v0.16b, v1.16b, #9
   1397 // CHECK-ERROR:                              ^
   1398 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1399 // CHECK-ERROR:         sshr v0.8h, v1.8h, #17
   1400 // CHECK-ERROR:                            ^
   1401 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1402 // CHECK-ERROR:         sshr v0.4s, v1.4s, #33
   1403 // CHECK-ERROR:                            ^
   1404 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1405 // CHECK-ERROR:         sshr v0.2d, v1.2d, #65
   1406 // CHECK-ERROR:                            ^
   1407 
   1408 //------------------------------------------------------------------------------
   1409 // Vector  shift right by immediate
   1410 //------------------------------------------------------------------------------
   1411          ushr v0.8b, v1.8h, #3
   1412          ushr v0.4h, v1.4s, #3
   1413          ushr v0.2s, v1.2d, #3
   1414          ushr v0.16b, v1.16b, #9
   1415          ushr v0.8h, v1.8h, #17
   1416          ushr v0.4s, v1.4s, #33
   1417          ushr v0.2d, v1.2d, #65
   1418 
   1419 // CHECK-ERROR: error: invalid operand for instruction
   1420 // CHECK-ERROR:         ushr v0.8b, v1.8h, #3
   1421 // CHECK-ERROR:                        ^
   1422 // CHECK-ERROR: error: invalid operand for instruction
   1423 // CHECK-ERROR:         ushr v0.4h, v1.4s, #3
   1424 // CHECK-ERROR:                        ^
   1425 // CHECK-ERROR: error: invalid operand for instruction
   1426 // CHECK-ERROR:         ushr v0.2s, v1.2d, #3
   1427 // CHECK-ERROR:                        ^
   1428 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1429 // CHECK-ERROR:         ushr v0.16b, v1.16b, #9
   1430 // CHECK-ERROR:                              ^
   1431 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1432 // CHECK-ERROR:         ushr v0.8h, v1.8h, #17
   1433 // CHECK-ERROR:                            ^
   1434 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1435 // CHECK-ERROR:         ushr v0.4s, v1.4s, #33
   1436 // CHECK-ERROR:                            ^
   1437 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1438 // CHECK-ERROR:         ushr v0.2d, v1.2d, #65
   1439 // CHECK-ERROR:                            ^
   1440 
   1441 //------------------------------------------------------------------------------
   1442 // Vector shift right and accumulate by immediate
   1443 //------------------------------------------------------------------------------
   1444          ssra v0.8b, v1.8h, #3
   1445          ssra v0.4h, v1.4s, #3
   1446          ssra v0.2s, v1.2d, #3
   1447          ssra v0.16b, v1.16b, #9
   1448          ssra v0.8h, v1.8h, #17
   1449          ssra v0.4s, v1.4s, #33
   1450          ssra v0.2d, v1.2d, #65
   1451 
   1452 // CHECK-ERROR: error: invalid operand for instruction
   1453 // CHECK-ERROR:         ssra v0.8b, v1.8h, #3
   1454 // CHECK-ERROR:                        ^
   1455 // CHECK-ERROR: error: invalid operand for instruction
   1456 // CHECK-ERROR:         ssra v0.4h, v1.4s, #3
   1457 // CHECK-ERROR:                        ^
   1458 // CHECK-ERROR: error: invalid operand for instruction
   1459 // CHECK-ERROR:         ssra v0.2s, v1.2d, #3
   1460 // CHECK-ERROR:                        ^
   1461 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1462 // CHECK-ERROR:         ssra v0.16b, v1.16b, #9
   1463 // CHECK-ERROR:                              ^
   1464 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1465 // CHECK-ERROR:         ssra v0.8h, v1.8h, #17
   1466 // CHECK-ERROR:                            ^
   1467 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1468 // CHECK-ERROR:         ssra v0.4s, v1.4s, #33
   1469 // CHECK-ERROR:                            ^
   1470 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1471 // CHECK-ERROR:         ssra v0.2d, v1.2d, #65
   1472 // CHECK-ERROR:                            ^
   1473 
   1474 //------------------------------------------------------------------------------
   1475 // Vector  shift right and accumulate by immediate
   1476 //------------------------------------------------------------------------------
   1477          usra v0.8b, v1.8h, #3
   1478          usra v0.4h, v1.4s, #3
   1479          usra v0.2s, v1.2d, #3
   1480          usra v0.16b, v1.16b, #9
   1481          usra v0.8h, v1.8h, #17
   1482          usra v0.4s, v1.4s, #33
   1483          usra v0.2d, v1.2d, #65
   1484 
   1485 // CHECK-ERROR: error: invalid operand for instruction
   1486 // CHECK-ERROR:         usra v0.8b, v1.8h, #3
   1487 // CHECK-ERROR:                        ^
   1488 // CHECK-ERROR: error: invalid operand for instruction
   1489 // CHECK-ERROR:         usra v0.4h, v1.4s, #3
   1490 // CHECK-ERROR:                        ^
   1491 // CHECK-ERROR: error: invalid operand for instruction
   1492 // CHECK-ERROR:         usra v0.2s, v1.2d, #3
   1493 // CHECK-ERROR:                        ^
   1494 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1495 // CHECK-ERROR:         usra v0.16b, v1.16b, #9
   1496 // CHECK-ERROR:                              ^
   1497 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1498 // CHECK-ERROR:         usra v0.8h, v1.8h, #17
   1499 // CHECK-ERROR:                            ^
   1500 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1501 // CHECK-ERROR:         usra v0.4s, v1.4s, #33
   1502 // CHECK-ERROR:                            ^
   1503 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1504 // CHECK-ERROR:         usra v0.2d, v1.2d, #65
   1505 // CHECK-ERROR:                            ^
   1506 
   1507 //------------------------------------------------------------------------------
   1508 // Vector rounding shift right by immediate
   1509 //------------------------------------------------------------------------------
   1510          srshr v0.8b, v1.8h, #3
   1511          srshr v0.4h, v1.4s, #3
   1512          srshr v0.2s, v1.2d, #3
   1513          srshr v0.16b, v1.16b, #9
   1514          srshr v0.8h, v1.8h, #17
   1515          srshr v0.4s, v1.4s, #33
   1516          srshr v0.2d, v1.2d, #65
   1517 
   1518 // CHECK-ERROR: error: invalid operand for instruction
   1519 // CHECK-ERROR:         srshr v0.8b, v1.8h, #3
   1520 // CHECK-ERROR:                         ^
   1521 // CHECK-ERROR: error: invalid operand for instruction
   1522 // CHECK-ERROR:         srshr v0.4h, v1.4s, #3
   1523 // CHECK-ERROR:                         ^
   1524 // CHECK-ERROR: error: invalid operand for instruction
   1525 // CHECK-ERROR:         srshr v0.2s, v1.2d, #3
   1526 // CHECK-ERROR:                         ^
   1527 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1528 // CHECK-ERROR:         srshr v0.16b, v1.16b, #9
   1529 // CHECK-ERROR:                               ^
   1530 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1531 // CHECK-ERROR:         srshr v0.8h, v1.8h, #17
   1532 // CHECK-ERROR:                             ^
   1533 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1534 // CHECK-ERROR:         srshr v0.4s, v1.4s, #33
   1535 // CHECK-ERROR:                             ^
   1536 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1537 // CHECK-ERROR:         srshr v0.2d, v1.2d, #65
   1538 // CHECK-ERROR:                             ^
   1539 
   1540 //------------------------------------------------------------------------------
   1541 // Vecotr rounding shift right by immediate
   1542 //------------------------------------------------------------------------------
   1543          urshr v0.8b, v1.8h, #3
   1544          urshr v0.4h, v1.4s, #3
   1545          urshr v0.2s, v1.2d, #3
   1546          urshr v0.16b, v1.16b, #9
   1547          urshr v0.8h, v1.8h, #17
   1548          urshr v0.4s, v1.4s, #33
   1549          urshr v0.2d, v1.2d, #65
   1550 
   1551 // CHECK-ERROR: error: invalid operand for instruction
   1552 // CHECK-ERROR:         urshr v0.8b, v1.8h, #3
   1553 // CHECK-ERROR:                         ^
   1554 // CHECK-ERROR: error: invalid operand for instruction
   1555 // CHECK-ERROR:         urshr v0.4h, v1.4s, #3
   1556 // CHECK-ERROR:                         ^
   1557 // CHECK-ERROR: error: invalid operand for instruction
   1558 // CHECK-ERROR:         urshr v0.2s, v1.2d, #3
   1559 // CHECK-ERROR:                         ^
   1560 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1561 // CHECK-ERROR:         urshr v0.16b, v1.16b, #9
   1562 // CHECK-ERROR:                               ^
   1563 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1564 // CHECK-ERROR:         urshr v0.8h, v1.8h, #17
   1565 // CHECK-ERROR:                             ^
   1566 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1567 // CHECK-ERROR:         urshr v0.4s, v1.4s, #33
   1568 // CHECK-ERROR:                             ^
   1569 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1570 // CHECK-ERROR:         urshr v0.2d, v1.2d, #65
   1571 // CHECK-ERROR:                             ^
   1572 
   1573 //------------------------------------------------------------------------------
   1574 // Vector rounding shift right and accumulate by immediate
   1575 //------------------------------------------------------------------------------
   1576          srsra v0.8b, v1.8h, #3
   1577          srsra v0.4h, v1.4s, #3
   1578          srsra v0.2s, v1.2d, #3
   1579          srsra v0.16b, v1.16b, #9
   1580          srsra v0.8h, v1.8h, #17
   1581          srsra v0.4s, v1.4s, #33
   1582          srsra v0.2d, v1.2d, #65
   1583 
   1584 // CHECK-ERROR: error: invalid operand for instruction
   1585 // CHECK-ERROR:         srsra v0.8b, v1.8h, #3
   1586 // CHECK-ERROR:                         ^
   1587 // CHECK-ERROR: error: invalid operand for instruction
   1588 // CHECK-ERROR:         srsra v0.4h, v1.4s, #3
   1589 // CHECK-ERROR:                         ^
   1590 // CHECK-ERROR: error: invalid operand for instruction
   1591 // CHECK-ERROR:         srsra v0.2s, v1.2d, #3
   1592 // CHECK-ERROR:                         ^
   1593 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1594 // CHECK-ERROR:         srsra v0.16b, v1.16b, #9
   1595 // CHECK-ERROR:                               ^
   1596 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1597 // CHECK-ERROR:         srsra v0.8h, v1.8h, #17
   1598 // CHECK-ERROR:                             ^
   1599 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1600 // CHECK-ERROR:         srsra v0.4s, v1.4s, #33
   1601 // CHECK-ERROR:                             ^
   1602 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1603 // CHECK-ERROR:         srsra v0.2d, v1.2d, #65
   1604 // CHECK-ERROR:                             ^
   1605 
   1606 //------------------------------------------------------------------------------
   1607 // Vector rounding shift right and accumulate by immediate
   1608 //------------------------------------------------------------------------------
   1609          ursra v0.8b, v1.8h, #3
   1610          ursra v0.4h, v1.4s, #3
   1611          ursra v0.2s, v1.2d, #3
   1612          ursra v0.16b, v1.16b, #9
   1613          ursra v0.8h, v1.8h, #17
   1614          ursra v0.4s, v1.4s, #33
   1615          ursra v0.2d, v1.2d, #65
   1616 
   1617 // CHECK-ERROR: error: invalid operand for instruction
   1618 // CHECK-ERROR:         ursra v0.8b, v1.8h, #3
   1619 // CHECK-ERROR:                         ^
   1620 // CHECK-ERROR: error: invalid operand for instruction
   1621 // CHECK-ERROR:         ursra v0.4h, v1.4s, #3
   1622 // CHECK-ERROR:                         ^
   1623 // CHECK-ERROR: error: invalid operand for instruction
   1624 // CHECK-ERROR:         ursra v0.2s, v1.2d, #3
   1625 // CHECK-ERROR:                         ^
   1626 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1627 // CHECK-ERROR:         ursra v0.16b, v1.16b, #9
   1628 // CHECK-ERROR:                               ^
   1629 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1630 // CHECK-ERROR:         ursra v0.8h, v1.8h, #17
   1631 // CHECK-ERROR:                             ^
   1632 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1633 // CHECK-ERROR:         ursra v0.4s, v1.4s, #33
   1634 // CHECK-ERROR:                             ^
   1635 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1636 // CHECK-ERROR:         ursra v0.2d, v1.2d, #65
   1637 // CHECK-ERROR:                             ^
   1638 
   1639 //------------------------------------------------------------------------------
   1640 // Vector shift right and insert by immediate
   1641 //------------------------------------------------------------------------------
   1642          sri v0.8b, v1.8h, #3
   1643          sri v0.4h, v1.4s, #3
   1644          sri v0.2s, v1.2d, #3
   1645          sri v0.16b, v1.16b, #9
   1646          sri v0.8h, v1.8h, #17
   1647          sri v0.4s, v1.4s, #33
   1648          sri v0.2d, v1.2d, #65
   1649 
   1650 // CHECK-ERROR: error: invalid operand for instruction
   1651 // CHECK-ERROR:         sri v0.8b, v1.8h, #3
   1652 // CHECK-ERROR:                       ^
   1653 // CHECK-ERROR: error: invalid operand for instruction
   1654 // CHECK-ERROR:         sri v0.4h, v1.4s, #3
   1655 // CHECK-ERROR:                       ^
   1656 // CHECK-ERROR: error: invalid operand for instruction
   1657 // CHECK-ERROR:         sri v0.2s, v1.2d, #3
   1658 // CHECK-ERROR:                       ^
   1659 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1660 // CHECK-ERROR:         sri v0.16b, v1.16b, #9
   1661 // CHECK-ERROR:                             ^
   1662 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1663 // CHECK-ERROR:         sri v0.8h, v1.8h, #17
   1664 // CHECK-ERROR:                           ^
   1665 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1666 // CHECK-ERROR:         sri v0.4s, v1.4s, #33
   1667 // CHECK-ERROR:                           ^
   1668 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   1669 // CHECK-ERROR:         sri v0.2d, v1.2d, #65
   1670 // CHECK-ERROR:                           ^
   1671 
   1672 //------------------------------------------------------------------------------
   1673 // Vector shift left and insert by immediate
   1674 //------------------------------------------------------------------------------
   1675          sli v0.8b, v1.8h, #3
   1676          sli v0.4h, v1.4s, #3
   1677          sli v0.2s, v1.2d, #3
   1678          sli v0.16b, v1.16b, #8
   1679          sli v0.8h, v1.8h, #16
   1680          sli v0.4s, v1.4s, #32
   1681          sli v0.2d, v1.2d, #64
   1682 
   1683 // CHECK-ERROR: error: invalid operand for instruction
   1684 // CHECK-ERROR:         sli v0.8b, v1.8h, #3
   1685 // CHECK-ERROR:                       ^
   1686 // CHECK-ERROR: error: invalid operand for instruction
   1687 // CHECK-ERROR:         sli v0.4h, v1.4s, #3
   1688 // CHECK-ERROR:                       ^
   1689 // CHECK-ERROR: error: invalid operand for instruction
   1690 // CHECK-ERROR:         sli v0.2s, v1.2d, #3
   1691 // CHECK-ERROR:                       ^
   1692 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1693 // CHECK-ERROR:         sli v0.16b, v1.16b, #8
   1694 // CHECK-ERROR:                             ^
   1695 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   1696 // CHECK-ERROR:         sli v0.8h, v1.8h, #16
   1697 // CHECK-ERROR:                           ^
   1698 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   1699 // CHECK-ERROR:         sli v0.4s, v1.4s, #32
   1700 // CHECK-ERROR:                           ^
   1701 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   1702 // CHECK-ERROR:         sli v0.2d, v1.2d, #64
   1703 // CHECK-ERROR:                           ^
   1704 
   1705 //------------------------------------------------------------------------------
   1706 // Vector saturating shift left unsigned by immediate
   1707 //------------------------------------------------------------------------------
   1708          sqshlu v0.8b, v1.8h, #3
   1709          sqshlu v0.4h, v1.4s, #3
   1710          sqshlu v0.2s, v1.2d, #3
   1711          sqshlu v0.16b, v1.16b, #8
   1712          sqshlu v0.8h, v1.8h, #16
   1713          sqshlu v0.4s, v1.4s, #32
   1714          sqshlu v0.2d, v1.2d, #64
   1715 
   1716 // CHECK-ERROR: error: invalid operand for instruction
   1717 // CHECK-ERROR:         sqshlu v0.8b, v1.8h, #3
   1718 // CHECK-ERROR:                          ^
   1719 // CHECK-ERROR: error: invalid operand for instruction
   1720 // CHECK-ERROR:         sqshlu v0.4h, v1.4s, #3
   1721 // CHECK-ERROR:                          ^
   1722 // CHECK-ERROR: error: invalid operand for instruction
   1723 // CHECK-ERROR:         sqshlu v0.2s, v1.2d, #3
   1724 // CHECK-ERROR:                          ^
   1725 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1726 // CHECK-ERROR:         sqshlu v0.16b, v1.16b, #8
   1727 // CHECK-ERROR:                                ^
   1728 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   1729 // CHECK-ERROR:         sqshlu v0.8h, v1.8h, #16
   1730 // CHECK-ERROR:                              ^
   1731 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   1732 // CHECK-ERROR:         sqshlu v0.4s, v1.4s, #32
   1733 // CHECK-ERROR:                              ^
   1734 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   1735 // CHECK-ERROR:         sqshlu v0.2d, v1.2d, #64
   1736 // CHECK-ERROR:                              ^
   1737 
   1738 //------------------------------------------------------------------------------
   1739 // Vector saturating shift left by immediate
   1740 //------------------------------------------------------------------------------
   1741          sqshl v0.8b, v1.8h, #3
   1742          sqshl v0.4h, v1.4s, #3
   1743          sqshl v0.2s, v1.2d, #3
   1744          sqshl v0.16b, v1.16b, #8
   1745          sqshl v0.8h, v1.8h, #16
   1746          sqshl v0.4s, v1.4s, #32
   1747          sqshl v0.2d, v1.2d, #64
   1748 
   1749 // CHECK-ERROR: error: invalid operand for instruction
   1750 // CHECK-ERROR:         sqshl v0.8b, v1.8h, #3
   1751 // CHECK-ERROR:                         ^
   1752 // CHECK-ERROR: error: invalid operand for instruction
   1753 // CHECK-ERROR:         sqshl v0.4h, v1.4s, #3
   1754 // CHECK-ERROR:                         ^
   1755 // CHECK-ERROR: error: invalid operand for instruction
   1756 // CHECK-ERROR:         sqshl v0.2s, v1.2d, #3
   1757 // CHECK-ERROR:                         ^
   1758 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1759 // CHECK-ERROR:         sqshl v0.16b, v1.16b, #8
   1760 // CHECK-ERROR:                               ^
   1761 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   1762 // CHECK-ERROR:         sqshl v0.8h, v1.8h, #16
   1763 // CHECK-ERROR:                             ^
   1764 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   1765 // CHECK-ERROR:         sqshl v0.4s, v1.4s, #32
   1766 // CHECK-ERROR:                             ^
   1767 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   1768 // CHECK-ERROR:         sqshl v0.2d, v1.2d, #64
   1769 // CHECK-ERROR:                             ^
   1770 
   1771 //------------------------------------------------------------------------------
   1772 // Vector saturating shift left by immediate
   1773 //------------------------------------------------------------------------------
   1774          uqshl v0.8b, v1.8h, #3
   1775          uqshl v0.4h, v1.4s, #3
   1776          uqshl v0.2s, v1.2d, #3
   1777          uqshl v0.16b, v1.16b, #8
   1778          uqshl v0.8h, v1.8h, #16
   1779          uqshl v0.4s, v1.4s, #32
   1780          uqshl v0.2d, v1.2d, #64
   1781 
   1782 // CHECK-ERROR: error: invalid operand for instruction
   1783 // CHECK-ERROR:         uqshl v0.8b, v1.8h, #3
   1784 // CHECK-ERROR:                         ^
   1785 // CHECK-ERROR: error: invalid operand for instruction
   1786 // CHECK-ERROR:         uqshl v0.4h, v1.4s, #3
   1787 // CHECK-ERROR:                         ^
   1788 // CHECK-ERROR: error: invalid operand for instruction
   1789 // CHECK-ERROR:         uqshl v0.2s, v1.2d, #3
   1790 // CHECK-ERROR:                         ^
   1791 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   1792 // CHECK-ERROR:         uqshl v0.16b, v1.16b, #8
   1793 // CHECK-ERROR:                               ^
   1794 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   1795 // CHECK-ERROR:         uqshl v0.8h, v1.8h, #16
   1796 // CHECK-ERROR:                             ^
   1797 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   1798 // CHECK-ERROR:         uqshl v0.4s, v1.4s, #32
   1799 // CHECK-ERROR:                             ^
   1800 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   1801 // CHECK-ERROR:         uqshl v0.2d, v1.2d, #64
   1802 // CHECK-ERROR:                             ^
   1803 
   1804 //------------------------------------------------------------------------------
   1805 // Vector shift right narrow by immediate
   1806 //------------------------------------------------------------------------------
   1807          shrn v0.8b, v1.8b, #3
   1808          shrn v0.4h, v1.4h, #3
   1809          shrn v0.2s, v1.2s, #3
   1810          shrn2 v0.16b, v1.8h, #17
   1811          shrn2 v0.8h, v1.4s, #33
   1812          shrn2 v0.4s, v1.2d, #65
   1813 
   1814 // CHECK-ERROR: error: invalid operand for instruction
   1815 // CHECK-ERROR:         shrn v0.8b, v1.8b, #3
   1816 // CHECK-ERROR:                        ^
   1817 // CHECK-ERROR: error: invalid operand for instruction
   1818 // CHECK-ERROR:         shrn v0.4h, v1.4h, #3
   1819 // CHECK-ERROR:                        ^
   1820 // CHECK-ERROR: error: invalid operand for instruction
   1821 // CHECK-ERROR:         shrn v0.2s, v1.2s, #3
   1822 // CHECK-ERROR:                        ^
   1823 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1824 // CHECK-ERROR:         shrn2 v0.16b, v1.8h, #17
   1825 // CHECK-ERROR:                              ^
   1826 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1827 // CHECK-ERROR:         shrn2 v0.8h, v1.4s, #33
   1828 // CHECK-ERROR:                             ^
   1829 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1830 // CHECK-ERROR:         shrn2 v0.4s, v1.2d, #65
   1831 // CHECK-ERROR:                             ^
   1832 
   1833 //------------------------------------------------------------------------------
   1834 // Vector saturating shift right unsigned narrow by immediate
   1835 //------------------------------------------------------------------------------
   1836          sqshrun v0.8b, v1.8b, #3
   1837          sqshrun v0.4h, v1.4h, #3
   1838          sqshrun v0.2s, v1.2s, #3
   1839          sqshrun2 v0.16b, v1.8h, #17
   1840          sqshrun2 v0.8h, v1.4s, #33
   1841          sqshrun2 v0.4s, v1.2d, #65
   1842 
   1843 // CHECK-ERROR: error: invalid operand for instruction
   1844 // CHECK-ERROR:         sqshrun v0.8b, v1.8b, #3
   1845 // CHECK-ERROR:                           ^
   1846 // CHECK-ERROR: error: invalid operand for instruction
   1847 // CHECK-ERROR:         sqshrun v0.4h, v1.4h, #3
   1848 // CHECK-ERROR:                           ^
   1849 // CHECK-ERROR: error: invalid operand for instruction
   1850 // CHECK-ERROR:         sqshrun v0.2s, v1.2s, #3
   1851 // CHECK-ERROR:                           ^
   1852 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1853 // CHECK-ERROR:         sqshrun2 v0.16b, v1.8h, #17
   1854 // CHECK-ERROR:                                 ^
   1855 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1856 // CHECK-ERROR:         sqshrun2 v0.8h, v1.4s, #33
   1857 // CHECK-ERROR:                                ^
   1858 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1859 // CHECK-ERROR:         sqshrun2 v0.4s, v1.2d, #65
   1860 // CHECK-ERROR:                                ^
   1861 
   1862 //------------------------------------------------------------------------------
   1863 // Vector rounding shift right narrow by immediate
   1864 //------------------------------------------------------------------------------
   1865          rshrn v0.8b, v1.8b, #3
   1866          rshrn v0.4h, v1.4h, #3
   1867          rshrn v0.2s, v1.2s, #3
   1868          rshrn2 v0.16b, v1.8h, #17
   1869          rshrn2 v0.8h, v1.4s, #33
   1870          rshrn2 v0.4s, v1.2d, #65
   1871 
   1872 // CHECK-ERROR: error: invalid operand for instruction
   1873 // CHECK-ERROR:         rshrn v0.8b, v1.8b, #3
   1874 // CHECK-ERROR:                         ^
   1875 // CHECK-ERROR: error: invalid operand for instruction
   1876 // CHECK-ERROR:         rshrn v0.4h, v1.4h, #3
   1877 // CHECK-ERROR:                         ^
   1878 // CHECK-ERROR: error: invalid operand for instruction
   1879 // CHECK-ERROR:         rshrn v0.2s, v1.2s, #3
   1880 // CHECK-ERROR:                         ^
   1881 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1882 // CHECK-ERROR:         rshrn2 v0.16b, v1.8h, #17
   1883 // CHECK-ERROR:                               ^
   1884 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1885 // CHECK-ERROR:         rshrn2 v0.8h, v1.4s, #33
   1886 // CHECK-ERROR:                              ^
   1887 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1888 // CHECK-ERROR:         rshrn2 v0.4s, v1.2d, #65
   1889 // CHECK-ERROR:                              ^
   1890 
   1891 //------------------------------------------------------------------------------
   1892 // Vector saturating shift right rounded unsigned narrow by immediate
   1893 //------------------------------------------------------------------------------
   1894          sqrshrun v0.8b, v1.8b, #3
   1895          sqrshrun v0.4h, v1.4h, #3
   1896          sqrshrun v0.2s, v1.2s, #3
   1897          sqrshrun2 v0.16b, v1.8h, #17
   1898          sqrshrun2 v0.8h, v1.4s, #33
   1899          sqrshrun2 v0.4s, v1.2d, #65
   1900 
   1901 // CHECK-ERROR: error: invalid operand for instruction
   1902 // CHECK-ERROR:         sqrshrun v0.8b, v1.8b, #3
   1903 // CHECK-ERROR:                            ^
   1904 // CHECK-ERROR: error: invalid operand for instruction
   1905 // CHECK-ERROR:         sqrshrun v0.4h, v1.4h, #3
   1906 // CHECK-ERROR:                            ^
   1907 // CHECK-ERROR: error: invalid operand for instruction
   1908 // CHECK-ERROR:         sqrshrun v0.2s, v1.2s, #3
   1909 // CHECK-ERROR:                            ^
   1910 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1911 // CHECK-ERROR:         sqrshrun2 v0.16b, v1.8h, #17
   1912 // CHECK-ERROR:                                  ^
   1913 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1914 // CHECK-ERROR:         sqrshrun2 v0.8h, v1.4s, #33
   1915 // CHECK-ERROR:                                 ^
   1916 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1917 // CHECK-ERROR:         sqrshrun2 v0.4s, v1.2d, #65
   1918 // CHECK-ERROR:                                 ^
   1919 
   1920 //------------------------------------------------------------------------------
   1921 // Vector saturating shift right narrow by immediate
   1922 //------------------------------------------------------------------------------
   1923          sqshrn v0.8b, v1.8b, #3
   1924          sqshrn v0.4h, v1.4h, #3
   1925          sqshrn v0.2s, v1.2s, #3
   1926          sqshrn2 v0.16b, v1.8h, #17
   1927          sqshrn2 v0.8h, v1.4s, #33
   1928          sqshrn2 v0.4s, v1.2d, #65
   1929 
   1930 // CHECK-ERROR: error: invalid operand for instruction
   1931 // CHECK-ERROR:         sqshrn v0.8b, v1.8b, #3
   1932 // CHECK-ERROR:                          ^
   1933 // CHECK-ERROR: error: invalid operand for instruction
   1934 // CHECK-ERROR:         sqshrn v0.4h, v1.4h, #3
   1935 // CHECK-ERROR:                          ^
   1936 // CHECK-ERROR: error: invalid operand for instruction
   1937 // CHECK-ERROR:         sqshrn v0.2s, v1.2s, #3
   1938 // CHECK-ERROR:                          ^
   1939 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1940 // CHECK-ERROR:         sqshrn2 v0.16b, v1.8h, #17
   1941 // CHECK-ERROR:                                ^
   1942 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1943 // CHECK-ERROR:         sqshrn2 v0.8h, v1.4s, #33
   1944 // CHECK-ERROR:                               ^
   1945 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1946 // CHECK-ERROR:         sqshrn2 v0.4s, v1.2d, #65
   1947 // CHECK-ERROR:                               ^
   1948 
   1949 //------------------------------------------------------------------------------
   1950 // Vector saturating shift right narrow by immediate
   1951 //------------------------------------------------------------------------------
   1952          uqshrn v0.8b, v1.8b, #3
   1953          uqshrn v0.4h, v1.4h, #3
   1954          uqshrn v0.2s, v1.2s, #3
   1955          uqshrn2 v0.16b, v1.8h, #17
   1956          uqshrn2 v0.8h, v1.4s, #33
   1957          uqshrn2 v0.4s, v1.2d, #65
   1958 
   1959 // CHECK-ERROR: error: invalid operand for instruction
   1960 // CHECK-ERROR:         uqshrn v0.8b, v1.8b, #3
   1961 // CHECK-ERROR:                          ^
   1962 // CHECK-ERROR: error: invalid operand for instruction
   1963 // CHECK-ERROR:         uqshrn v0.4h, v1.4h, #3
   1964 // CHECK-ERROR:                          ^
   1965 // CHECK-ERROR: error: invalid operand for instruction
   1966 // CHECK-ERROR:         uqshrn v0.2s, v1.2s, #3
   1967 // CHECK-ERROR:                          ^
   1968 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1969 // CHECK-ERROR:         uqshrn2 v0.16b, v1.8h, #17
   1970 // CHECK-ERROR:                                ^
   1971 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   1972 // CHECK-ERROR:         uqshrn2 v0.8h, v1.4s, #33
   1973 // CHECK-ERROR:                               ^
   1974 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   1975 // CHECK-ERROR:         uqshrn2 v0.4s, v1.2d, #65
   1976 // CHECK-ERROR:                               ^
   1977 
   1978 //------------------------------------------------------------------------------
   1979 // Vector saturating shift right rounded narrow by immediate
   1980 //------------------------------------------------------------------------------
   1981          sqrshrn v0.8b, v1.8b, #3
   1982          sqrshrn v0.4h, v1.4h, #3
   1983          sqrshrn v0.2s, v1.2s, #3
   1984          sqrshrn2 v0.16b, v1.8h, #17
   1985          sqrshrn2 v0.8h, v1.4s, #33
   1986          sqrshrn2 v0.4s, v1.2d, #65
   1987 
   1988 // CHECK-ERROR: error: invalid operand for instruction
   1989 // CHECK-ERROR:         sqrshrn v0.8b, v1.8b, #3
   1990 // CHECK-ERROR:                           ^
   1991 // CHECK-ERROR: error: invalid operand for instruction
   1992 // CHECK-ERROR:         sqrshrn v0.4h, v1.4h, #3
   1993 // CHECK-ERROR:                           ^
   1994 // CHECK-ERROR: error: invalid operand for instruction
   1995 // CHECK-ERROR:         sqrshrn v0.2s, v1.2s, #3
   1996 // CHECK-ERROR:                           ^
   1997 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   1998 // CHECK-ERROR:         sqrshrn2 v0.16b, v1.8h, #17
   1999 // CHECK-ERROR:                                 ^
   2000 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   2001 // CHECK-ERROR:         sqrshrn2 v0.8h, v1.4s, #33
   2002 // CHECK-ERROR:                                ^
   2003 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   2004 // CHECK-ERROR:         sqrshrn2 v0.4s, v1.2d, #65
   2005 // CHECK-ERROR:                                ^
   2006 
   2007 //------------------------------------------------------------------------------
   2008 // Vector saturating shift right rounded narrow by immediate
   2009 //------------------------------------------------------------------------------
   2010          uqrshrn v0.8b, v1.8b, #3
   2011          uqrshrn v0.4h, v1.4h, #3
   2012          uqrshrn v0.2s, v1.2s, #3
   2013          uqrshrn2 v0.16b, v1.8h, #17
   2014          uqrshrn2 v0.8h, v1.4s, #33
   2015          uqrshrn2 v0.4s, v1.2d, #65
   2016 
   2017 // CHECK-ERROR: error: invalid operand for instruction
   2018 // CHECK-ERROR:         uqrshrn v0.8b, v1.8b, #3
   2019 // CHECK-ERROR:                           ^
   2020 // CHECK-ERROR: error: invalid operand for instruction
   2021 // CHECK-ERROR:         uqrshrn v0.4h, v1.4h, #3
   2022 // CHECK-ERROR:                           ^
   2023 // CHECK-ERROR: error: invalid operand for instruction
   2024 // CHECK-ERROR:         uqrshrn v0.2s, v1.2s, #3
   2025 // CHECK-ERROR:                           ^
   2026 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   2027 // CHECK-ERROR:         uqrshrn2 v0.16b, v1.8h, #17
   2028 // CHECK-ERROR:                                 ^
   2029 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   2030 // CHECK-ERROR:         uqrshrn2 v0.8h, v1.4s, #33
   2031 // CHECK-ERROR:                                ^
   2032 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   2033 // CHECK-ERROR:         uqrshrn2 v0.4s, v1.2d, #65
   2034 // CHECK-ERROR:                                ^
   2035 
   2036 //------------------------------------------------------------------------------
   2037 // Fixed-point convert to floating-point
   2038 //------------------------------------------------------------------------------
   2039          scvtf v0.2s, v1.2d, #3
   2040          scvtf v0.4s, v1.4h, #3
   2041          scvtf v0.2d, v1.2s, #3
   2042          ucvtf v0.2s, v1.2s, #33
   2043          ucvtf v0.4s, v1.4s, #33
   2044          ucvtf v0.2d, v1.2d, #65
   2045 
   2046 // CHECK-ERROR: error: invalid operand for instruction
   2047 // CHECK-ERROR:         scvtf v0.2s, v1.2d, #3
   2048 // CHECK-ERROR:                         ^
   2049 // CHECK-ERROR: error: invalid operand for instruction
   2050 // CHECK-ERROR:         scvtf v0.4s, v1.4h, #3
   2051 // CHECK-ERROR:                         ^
   2052 // CHECK-ERROR: error: invalid operand for instruction
   2053 // CHECK-ERROR:         scvtf v0.2d, v1.2s, #3
   2054 // CHECK-ERROR:                         ^
   2055 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   2056 // CHECK-ERROR:         ucvtf v0.2s, v1.2s, #33
   2057 // CHECK-ERROR:                             ^
   2058 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   2059 // CHECK-ERROR:         ucvtf v0.4s, v1.4s, #33
   2060 // CHECK-ERROR:                             ^
   2061 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   2062 // CHECK-ERROR:         ucvtf v0.2d, v1.2d, #65
   2063 // CHECK-ERROR:                             ^
   2064 
   2065 //------------------------------------------------------------------------------
   2066 // Floating-point convert to fixed-point
   2067 //------------------------------------------------------------------------------
   2068          fcvtzs v0.2s, v1.2d, #3
   2069          fcvtzs v0.4s, v1.4h, #3
   2070          fcvtzs v0.2d, v1.2s, #3
   2071          fcvtzu v0.2s, v1.2s, #33
   2072          fcvtzu v0.4s, v1.4s, #33
   2073          fcvtzu v0.2d, v1.2d, #65
   2074 
   2075 // CHECK-ERROR: error: invalid operand for instruction
   2076 // CHECK-ERROR:         fcvtzs v0.2s, v1.2d, #3
   2077 // CHECK-ERROR:                          ^
   2078 // CHECK-ERROR: error: invalid operand for instruction
   2079 // CHECK-ERROR:         fcvtzs v0.4s, v1.4h, #3
   2080 // CHECK-ERROR:                          ^
   2081 // CHECK-ERROR: error: invalid operand for instruction
   2082 // CHECK-ERROR:         fcvtzs v0.2d, v1.2s, #3
   2083 // CHECK-ERROR:                          ^
   2084 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   2085 // CHECK-ERROR:         fcvtzu v0.2s, v1.2s, #33
   2086 // CHECK-ERROR:                              ^
   2087 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   2088 // CHECK-ERROR:         fcvtzu v0.4s, v1.4s, #33
   2089 // CHECK-ERROR:                              ^
   2090 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   2091 // CHECK-ERROR:         fcvtzu v0.2d, v1.2d, #65
   2092 // CHECK-ERROR:                              ^
   2093 
   2094 //----------------------------------------------------------------------
   2095 // Vector operation on 3 operands with different types
   2096 //----------------------------------------------------------------------
   2097 
   2098         // Mismatched and invalid vector types
   2099         saddl v0.8h, v1.8h, v2.8b
   2100         saddl v0.4s, v1.4s, v2.4h
   2101         saddl v0.2d, v1.2d, v2.2s
   2102 
   2103 // CHECK-ERROR: error: invalid operand for instruction
   2104 // CHECK-ERROR:        saddl v0.8h, v1.8h, v2.8b
   2105 // CHECK-ERROR:                        ^
   2106 // CHECK-ERROR: error: invalid operand for instruction
   2107 // CHECK-ERROR:        saddl v0.4s, v1.4s, v2.4h
   2108 // CHECK-ERROR:                        ^
   2109 // CHECK-ERROR: error: invalid operand for instruction
   2110 // CHECK-ERROR:        saddl v0.2d, v1.2d, v2.2s
   2111 // CHECK-ERROR:                        ^
   2112 
   2113         saddl2 v0.4s, v1.8s, v2.8h
   2114         saddl2 v0.8h, v1.16h, v2.16b
   2115         saddl2 v0.2d, v1.4d, v2.4s
   2116 
   2117 // CHECK-ERROR: error: invalid operand for instruction
   2118 // CHECK-ERROR:        saddl2 v0.4s, v1.8s, v2.8h
   2119 // CHECK-ERROR:                      ^
   2120 // CHECK-ERROR: error: invalid operand for instruction
   2121 // CHECK-ERROR:        saddl2 v0.8h, v1.16h, v2.16b
   2122 // CHECK-ERROR:                      ^
   2123 // CHECK-ERROR: error: invalid operand for instruction
   2124 // CHECK-ERROR:        saddl2 v0.2d, v1.4d, v2.4s
   2125 // CHECK-ERROR:                      ^
   2126 
   2127         uaddl v0.8h, v1.8h, v2.8b
   2128         uaddl v0.4s, v1.4s, v2.4h
   2129         uaddl v0.2d, v1.2d, v2.2s
   2130 
   2131 // CHECK-ERROR: error: invalid operand for instruction
   2132 // CHECK-ERROR:        uaddl v0.8h, v1.8h, v2.8b
   2133 // CHECK-ERROR:                        ^
   2134 // CHECK-ERROR: error: invalid operand for instruction
   2135 // CHECK-ERROR:        uaddl v0.4s, v1.4s, v2.4h
   2136 // CHECK-ERROR:                        ^
   2137 // CHECK-ERROR: error: invalid operand for instruction
   2138 // CHECK-ERROR:        uaddl v0.2d, v1.2d, v2.2s
   2139 // CHECK-ERROR:                        ^
   2140 
   2141         uaddl2 v0.8h, v1.16h, v2.16b
   2142         uaddl2 v0.4s, v1.8s, v2.8h
   2143         uaddl2 v0.2d, v1.4d, v2.4s
   2144 
   2145 // CHECK-ERROR: error: invalid operand for instruction
   2146 // CHECK-ERROR:        uaddl2 v0.8h, v1.16h, v2.16b
   2147 // CHECK-ERROR:                      ^
   2148 // CHECK-ERROR: error: invalid operand for instruction
   2149 // CHECK-ERROR:        uaddl2 v0.4s, v1.8s, v2.8h
   2150 // CHECK-ERROR:                      ^
   2151 // CHECK-ERROR: error: invalid operand for instruction
   2152 // CHECK-ERROR:        uaddl2 v0.2d, v1.4d, v2.4s
   2153 // CHECK-ERROR:                      ^
   2154 
   2155         ssubl v0.8h, v1.8h, v2.8b
   2156         ssubl v0.4s, v1.4s, v2.4h
   2157         ssubl v0.2d, v1.2d, v2.2s
   2158 
   2159 // CHECK-ERROR: error: invalid operand for instruction
   2160 // CHECK-ERROR:        ssubl v0.8h, v1.8h, v2.8b
   2161 // CHECK-ERROR:                        ^
   2162 // CHECK-ERROR: error: invalid operand for instruction
   2163 // CHECK-ERROR:        ssubl v0.4s, v1.4s, v2.4h
   2164 // CHECK-ERROR:                        ^
   2165 // CHECK-ERROR: error: invalid operand for instruction
   2166 // CHECK-ERROR:        ssubl v0.2d, v1.2d, v2.2s
   2167 // CHECK-ERROR:                        ^
   2168 
   2169         ssubl2 v0.8h, v1.16h, v2.16b
   2170         ssubl2 v0.4s, v1.8s, v2.8h
   2171         ssubl2 v0.2d, v1.4d, v2.4s
   2172 
   2173 // CHECK-ERROR: error: invalid operand for instruction
   2174 // CHECK-ERROR:        ssubl2 v0.8h, v1.16h, v2.16b
   2175 // CHECK-ERROR:                      ^
   2176 // CHECK-ERROR: error: invalid operand for instruction
   2177 // CHECK-ERROR:        ssubl2 v0.4s, v1.8s, v2.8h
   2178 // CHECK-ERROR:                      ^
   2179 // CHECK-ERROR: error: invalid operand for instruction
   2180 // CHECK-ERROR:        ssubl2 v0.2d, v1.4d, v2.4s
   2181 // CHECK-ERROR:                      ^
   2182 
   2183         usubl v0.8h, v1.8h, v2.8b
   2184         usubl v0.4s, v1.4s, v2.4h
   2185         usubl v0.2d, v1.2d, v2.2s
   2186 
   2187 // CHECK-ERROR: error: invalid operand for instruction
   2188 // CHECK-ERROR:        usubl v0.8h, v1.8h, v2.8b
   2189 // CHECK-ERROR:                        ^
   2190 // CHECK-ERROR: error: invalid operand for instruction
   2191 // CHECK-ERROR:        usubl v0.4s, v1.4s, v2.4h
   2192 // CHECK-ERROR:                        ^
   2193 // CHECK-ERROR: error: invalid operand for instruction
   2194 // CHECK-ERROR:        usubl v0.2d, v1.2d, v2.2s
   2195 // CHECK-ERROR:                        ^
   2196 
   2197         usubl2 v0.8h, v1.16h, v2.16b
   2198         usubl2 v0.4s, v1.8s, v2.8h
   2199         usubl2 v0.2d, v1.4d, v2.4s
   2200 
   2201 // CHECK-ERROR: error: invalid operand for instruction
   2202 // CHECK-ERROR:        usubl2 v0.8h, v1.16h, v2.16b
   2203 // CHECK-ERROR:                      ^
   2204 // CHECK-ERROR: error: invalid operand for instruction
   2205 // CHECK-ERROR:        usubl2 v0.4s, v1.8s, v2.8h
   2206 // CHECK-ERROR:                      ^
   2207 // CHECK-ERROR: error: invalid operand for instruction
   2208 // CHECK-ERROR:        usubl2 v0.2d, v1.4d, v2.4s
   2209 // CHECK-ERROR:                      ^
   2210 
   2211         sabal v0.8h, v1.8h, v2.8b
   2212         sabal v0.4s, v1.4s, v2.4h
   2213         sabal v0.2d, v1.2d, v2.2s
   2214 
   2215 // CHECK-ERROR: error: invalid operand for instruction
   2216 // CHECK-ERROR:        sabal v0.8h, v1.8h, v2.8b
   2217 // CHECK-ERROR:                        ^
   2218 // CHECK-ERROR: error: invalid operand for instruction
   2219 // CHECK-ERROR:        sabal v0.4s, v1.4s, v2.4h
   2220 // CHECK-ERROR:                        ^
   2221 // CHECK-ERROR: error: invalid operand for instruction
   2222 // CHECK-ERROR:        sabal v0.2d, v1.2d, v2.2s
   2223 // CHECK-ERROR:                        ^
   2224 
   2225         sabal2 v0.8h, v1.16h, v2.16b
   2226         sabal2 v0.4s, v1.8s, v2.8h
   2227         sabal2 v0.2d, v1.4d, v2.4s
   2228 
   2229 // CHECK-ERROR: error: invalid operand for instruction
   2230 // CHECK-ERROR:        sabal2 v0.8h, v1.16h, v2.16b
   2231 // CHECK-ERROR:                      ^
   2232 // CHECK-ERROR: error: invalid operand for instruction
   2233 // CHECK-ERROR:        sabal2 v0.4s, v1.8s, v2.8h
   2234 // CHECK-ERROR:                      ^
   2235 // CHECK-ERROR: error: invalid operand for instruction
   2236 // CHECK-ERROR:        sabal2 v0.2d, v1.4d, v2.4s
   2237 // CHECK-ERROR:                      ^
   2238 
   2239         uabal v0.8h, v1.8h, v2.8b
   2240         uabal v0.4s, v1.4s, v2.4h
   2241         uabal v0.2d, v1.2d, v2.2s
   2242 
   2243 // CHECK-ERROR: error: invalid operand for instruction
   2244 // CHECK-ERROR:        uabal v0.8h, v1.8h, v2.8b
   2245 // CHECK-ERROR:                        ^
   2246 // CHECK-ERROR: error: invalid operand for instruction
   2247 // CHECK-ERROR:        uabal v0.4s, v1.4s, v2.4h
   2248 // CHECK-ERROR:                        ^
   2249 // CHECK-ERROR: error: invalid operand for instruction
   2250 // CHECK-ERROR:        uabal v0.2d, v1.2d, v2.2s
   2251 // CHECK-ERROR:                        ^
   2252 
   2253         uabal2 v0.8h, v1.16h, v2.16b
   2254         uabal2 v0.4s, v1.8s, v2.8h
   2255         uabal2 v0.2d, v1.4d, v2.4s
   2256 
   2257 // CHECK-ERROR: error: invalid operand for instruction
   2258 // CHECK-ERROR:        uabal2 v0.8h, v1.16h, v2.16b
   2259 // CHECK-ERROR:                      ^
   2260 // CHECK-ERROR: error: invalid operand for instruction
   2261 // CHECK-ERROR:        uabal2 v0.4s, v1.8s, v2.8h
   2262 // CHECK-ERROR:                      ^
   2263 // CHECK-ERROR: error: invalid operand for instruction
   2264 // CHECK-ERROR:        uabal2 v0.2d, v1.4d, v2.4s
   2265 // CHECK-ERROR:                      ^
   2266 
   2267         sabdl v0.8h, v1.8h, v2.8b
   2268         sabdl v0.4s, v1.4s, v2.4h
   2269         sabdl v0.2d, v1.2d, v2.2s
   2270 
   2271 // CHECK-ERROR: error: invalid operand for instruction
   2272 // CHECK-ERROR:        sabdl v0.8h, v1.8h, v2.8b
   2273 // CHECK-ERROR:                        ^
   2274 // CHECK-ERROR: error: invalid operand for instruction
   2275 // CHECK-ERROR:        sabdl v0.4s, v1.4s, v2.4h
   2276 // CHECK-ERROR:                        ^
   2277 // CHECK-ERROR: error: invalid operand for instruction
   2278 // CHECK-ERROR:        sabdl v0.2d, v1.2d, v2.2s
   2279 // CHECK-ERROR:                        ^
   2280 
   2281         sabdl2 v0.8h, v1.16h, v2.16b
   2282         sabdl2 v0.4s, v1.8s, v2.8h
   2283         sabdl2 v0.2d, v1.4d, v2.4s
   2284 
   2285 // CHECK-ERROR: error: invalid operand for instruction
   2286 // CHECK-ERROR:        sabdl2 v0.8h, v1.16h, v2.16b
   2287 // CHECK-ERROR:                      ^
   2288 // CHECK-ERROR: error: invalid operand for instruction
   2289 // CHECK-ERROR:        sabdl2 v0.4s, v1.8s, v2.8h
   2290 // CHECK-ERROR:                      ^
   2291 // CHECK-ERROR: error: invalid operand for instruction
   2292 // CHECK-ERROR:        sabdl2 v0.2d, v1.4d, v2.4s
   2293 // CHECK-ERROR:                      ^
   2294 
   2295         uabdl v0.8h, v1.8h, v2.8b
   2296         uabdl v0.4s, v1.4s, v2.4h
   2297         uabdl v0.2d, v1.2d, v2.2s
   2298 
   2299 // CHECK-ERROR: error: invalid operand for instruction
   2300 // CHECK-ERROR:        uabdl v0.8h, v1.8h, v2.8b
   2301 // CHECK-ERROR:                        ^
   2302 // CHECK-ERROR: error: invalid operand for instruction
   2303 // CHECK-ERROR:        uabdl v0.4s, v1.4s, v2.4h
   2304 // CHECK-ERROR:                        ^
   2305 // CHECK-ERROR: error: invalid operand for instruction
   2306 // CHECK-ERROR:        uabdl v0.2d, v1.2d, v2.2s
   2307 // CHECK-ERROR:                        ^
   2308 
   2309         uabdl2 v0.8h, v1.16h, v2.16b
   2310         uabdl2 v0.4s, v1.8s, v2.8h
   2311         uabdl2 v0.2d, v1.4d, v2.4s
   2312 
   2313 // CHECK-ERROR: error: invalid operand for instruction
   2314 // CHECK-ERROR:        uabdl2 v0.8h, v1.16h, v2.16b
   2315 // CHECK-ERROR:                      ^
   2316 // CHECK-ERROR: error: invalid operand for instruction
   2317 // CHECK-ERROR:        uabdl2 v0.4s, v1.8s, v2.8h
   2318 // CHECK-ERROR:                      ^
   2319 // CHECK-ERROR: error: invalid operand for instruction
   2320 // CHECK-ERROR:        uabdl2 v0.2d, v1.4d, v2.4s
   2321 // CHECK-ERROR:                      ^
   2322 
   2323         smlal v0.8h, v1.8h, v2.8b
   2324         smlal v0.4s, v1.4s, v2.4h
   2325         smlal v0.2d, v1.2d, v2.2s
   2326 
   2327 // CHECK-ERROR: error: invalid operand for instruction
   2328 // CHECK-ERROR:        smlal v0.8h, v1.8h, v2.8b
   2329 // CHECK-ERROR:                        ^
   2330 // CHECK-ERROR: error: invalid operand for instruction
   2331 // CHECK-ERROR:        smlal v0.4s, v1.4s, v2.4h
   2332 // CHECK-ERROR:                        ^
   2333 // CHECK-ERROR: error: invalid operand for instruction
   2334 // CHECK-ERROR:        smlal v0.2d, v1.2d, v2.2s
   2335 // CHECK-ERROR:                        ^
   2336 
   2337         smlal2 v0.8h, v1.16h, v2.16b
   2338         smlal2 v0.4s, v1.8s, v2.8h
   2339         smlal2 v0.2d, v1.4d, v2.4s
   2340 
   2341 // CHECK-ERROR: error: invalid operand for instruction
   2342 // CHECK-ERROR:        smlal2 v0.8h, v1.16h, v2.16b
   2343 // CHECK-ERROR:                      ^
   2344 // CHECK-ERROR: error: invalid operand for instruction
   2345 // CHECK-ERROR:        smlal2 v0.4s, v1.8s, v2.8h
   2346 // CHECK-ERROR:                      ^
   2347 // CHECK-ERROR: error: invalid operand for instruction
   2348 // CHECK-ERROR:        smlal2 v0.2d, v1.4d, v2.4s
   2349 // CHECK-ERROR:                      ^
   2350 
   2351         umlal v0.8h, v1.8h, v2.8b
   2352         umlal v0.4s, v1.4s, v2.4h
   2353         umlal v0.2d, v1.2d, v2.2s
   2354 
   2355 // CHECK-ERROR: error: invalid operand for instruction
   2356 // CHECK-ERROR:        umlal v0.8h, v1.8h, v2.8b
   2357 // CHECK-ERROR:                        ^
   2358 // CHECK-ERROR: error: invalid operand for instruction
   2359 // CHECK-ERROR:        umlal v0.4s, v1.4s, v2.4h
   2360 // CHECK-ERROR:                        ^
   2361 // CHECK-ERROR: error: invalid operand for instruction
   2362 // CHECK-ERROR:        umlal v0.2d, v1.2d, v2.2s
   2363 // CHECK-ERROR:                        ^
   2364 
   2365         umlal2 v0.8h, v1.16h, v2.16b
   2366         umlal2 v0.4s, v1.8s, v2.8h
   2367         umlal2 v0.2d, v1.4d, v2.4s
   2368 
   2369 // CHECK-ERROR: error: invalid operand for instruction
   2370 // CHECK-ERROR:        umlal2 v0.8h, v1.16h, v2.16b
   2371 // CHECK-ERROR:                      ^
   2372 // CHECK-ERROR: error: invalid operand for instruction
   2373 // CHECK-ERROR:        umlal2 v0.4s, v1.8s, v2.8h
   2374 // CHECK-ERROR:                      ^
   2375 // CHECK-ERROR: error: invalid operand for instruction
   2376 // CHECK-ERROR:        umlal2 v0.2d, v1.4d, v2.4s
   2377 // CHECK-ERROR:                      ^
   2378 
   2379         smlsl v0.8h, v1.8h, v2.8b
   2380         smlsl v0.4s, v1.4s, v2.4h
   2381         smlsl v0.2d, v1.2d, v2.2s
   2382 
   2383 // CHECK-ERROR: error: invalid operand for instruction
   2384 // CHECK-ERROR:        smlsl v0.8h, v1.8h, v2.8b
   2385 // CHECK-ERROR:                        ^
   2386 // CHECK-ERROR: error: invalid operand for instruction
   2387 // CHECK-ERROR:        smlsl v0.4s, v1.4s, v2.4h
   2388 // CHECK-ERROR:                        ^
   2389 // CHECK-ERROR: error: invalid operand for instruction
   2390 // CHECK-ERROR:        smlsl v0.2d, v1.2d, v2.2s
   2391 // CHECK-ERROR:                        ^
   2392 
   2393         smlsl2 v0.8h, v1.16h, v2.16b
   2394         smlsl2 v0.4s, v1.8s, v2.8h
   2395         smlsl2 v0.2d, v1.4d, v2.4s
   2396 
   2397 // CHECK-ERROR: error: invalid operand for instruction
   2398 // CHECK-ERROR:        smlsl2 v0.8h, v1.16h, v2.16b
   2399 // CHECK-ERROR:                      ^
   2400 // CHECK-ERROR: error: invalid operand for instruction
   2401 // CHECK-ERROR:        smlsl2 v0.4s, v1.8s, v2.8h
   2402 // CHECK-ERROR:                      ^
   2403 // CHECK-ERROR: error: invalid operand for instruction
   2404 // CHECK-ERROR:        smlsl2 v0.2d, v1.4d, v2.4s
   2405 // CHECK-ERROR:                      ^
   2406 
   2407         umlsl v0.8h, v1.8h, v2.8b
   2408         umlsl v0.4s, v1.4s, v2.4h
   2409         umlsl v0.2d, v1.2d, v2.2s
   2410 
   2411 // CHECK-ERROR: error: invalid operand for instruction
   2412 // CHECK-ERROR:        umlsl v0.8h, v1.8h, v2.8b
   2413 // CHECK-ERROR:                        ^
   2414 // CHECK-ERROR: error: invalid operand for instruction
   2415 // CHECK-ERROR:        umlsl v0.4s, v1.4s, v2.4h
   2416 // CHECK-ERROR:                        ^
   2417 // CHECK-ERROR: error: invalid operand for instruction
   2418 // CHECK-ERROR:        umlsl v0.2d, v1.2d, v2.2s
   2419 // CHECK-ERROR:                        ^
   2420 
   2421         umlsl2 v0.8h, v1.16h, v2.16b
   2422         umlsl2 v0.4s, v1.8s, v2.8h
   2423         umlsl2 v0.2d, v1.4d, v2.4s
   2424 
   2425 // CHECK-ERROR: error: invalid operand for instruction
   2426 // CHECK-ERROR:        umlsl2 v0.8h, v1.16h, v2.16b
   2427 // CHECK-ERROR:                      ^
   2428 // CHECK-ERROR: error: invalid operand for instruction
   2429 // CHECK-ERROR:        umlsl2 v0.4s, v1.8s, v2.8h
   2430 // CHECK-ERROR:                      ^
   2431 // CHECK-ERROR: error: invalid operand for instruction
   2432 // CHECK-ERROR:        umlsl2 v0.2d, v1.4d, v2.4s
   2433 // CHECK-ERROR:                      ^
   2434 
   2435         smull v0.8h, v1.8h, v2.8b
   2436         smull v0.4s, v1.4s, v2.4h
   2437         smull v0.2d, v1.2d, v2.2s
   2438 
   2439 // CHECK-ERROR: error: invalid operand for instruction
   2440 // CHECK-ERROR:        smull v0.8h, v1.8h, v2.8b
   2441 // CHECK-ERROR:                        ^
   2442 // CHECK-ERROR: error: invalid operand for instruction
   2443 // CHECK-ERROR:        smull v0.4s, v1.4s, v2.4h
   2444 // CHECK-ERROR:                        ^
   2445 // CHECK-ERROR: error: invalid operand for instruction
   2446 // CHECK-ERROR:        smull v0.2d, v1.2d, v2.2s
   2447 // CHECK-ERROR:                        ^
   2448 
   2449         smull2 v0.8h, v1.16h, v2.16b
   2450         smull2 v0.4s, v1.8s, v2.8h
   2451         smull2 v0.2d, v1.4d, v2.4s
   2452 
   2453 // CHECK-ERROR: error: invalid operand for instruction
   2454 // CHECK-ERROR:        smull2 v0.8h, v1.16h, v2.16b
   2455 // CHECK-ERROR:                      ^
   2456 // CHECK-ERROR: error: invalid operand for instruction
   2457 // CHECK-ERROR:        smull2 v0.4s, v1.8s, v2.8h
   2458 // CHECK-ERROR:                      ^
   2459 // CHECK-ERROR: error: invalid operand for instruction
   2460 // CHECK-ERROR:        smull2 v0.2d, v1.4d, v2.4s
   2461 // CHECK-ERROR:                      ^
   2462 
   2463         umull v0.8h, v1.8h, v2.8b
   2464         umull v0.4s, v1.4s, v2.4h
   2465         umull v0.2d, v1.2d, v2.2s
   2466 
   2467 // CHECK-ERROR: error: invalid operand for instruction
   2468 // CHECK-ERROR:        umull v0.8h, v1.8h, v2.8b
   2469 // CHECK-ERROR:                        ^
   2470 // CHECK-ERROR: error: invalid operand for instruction
   2471 // CHECK-ERROR:        umull v0.4s, v1.4s, v2.4h
   2472 // CHECK-ERROR:                        ^
   2473 // CHECK-ERROR: error: invalid operand for instruction
   2474 // CHECK-ERROR:        umull v0.2d, v1.2d, v2.2s
   2475 // CHECK-ERROR:                        ^
   2476 
   2477         umull2 v0.8h, v1.16h, v2.16b
   2478         umull2 v0.4s, v1.8s, v2.8h
   2479         umull2 v0.2d, v1.4d, v2.4s
   2480 
   2481 // CHECK-ERROR: error: invalid operand for instruction
   2482 // CHECK-ERROR:        umull2 v0.8h, v1.16h, v2.16b
   2483 // CHECK-ERROR:                      ^
   2484 // CHECK-ERROR: error: invalid operand for instruction
   2485 // CHECK-ERROR:        umull2 v0.4s, v1.8s, v2.8h
   2486 // CHECK-ERROR:                      ^
   2487 // CHECK-ERROR: error: invalid operand for instruction
   2488 // CHECK-ERROR:        umull2 v0.2d, v1.4d, v2.4s
   2489 // CHECK-ERROR:                      ^
   2490 
   2491 //------------------------------------------------------------------------------
   2492 // Long - Variant 2
   2493 //------------------------------------------------------------------------------
   2494 
   2495         sqdmlal v0.4s, v1.4s, v2.4h
   2496         sqdmlal v0.2d, v1.2d, v2.2s
   2497 
   2498 // CHECK-ERROR: error: invalid operand for instruction
   2499 // CHECK-ERROR:        sqdmlal v0.4s, v1.4s, v2.4h
   2500 // CHECK-ERROR:                          ^
   2501 // CHECK-ERROR: error: invalid operand for instruction
   2502 // CHECK-ERROR:        sqdmlal v0.2d, v1.2d, v2.2s
   2503 // CHECK-ERROR:                          ^
   2504 
   2505         sqdmlal2 v0.4s, v1.8s, v2.8h
   2506         sqdmlal2 v0.2d, v1.4d, v2.4s
   2507 
   2508 // CHECK-ERROR: error: invalid operand for instruction
   2509 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8s, v2.8h
   2510 // CHECK-ERROR:                        ^
   2511 // CHECK-ERROR: error: invalid operand for instruction
   2512 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4d, v2.4s
   2513 // CHECK-ERROR:                        ^
   2514 
   2515         // Mismatched vector types
   2516         sqdmlal v0.8h, v1.8b, v2.8b
   2517         sqdmlal2 v0.8h, v1.16b, v2.16b
   2518 
   2519 // CHECK-ERROR: error: invalid operand for instruction
   2520 // CHECK-ERROR:        sqdmlal v0.8h, v1.8b, v2.8b
   2521 // CHECK-ERROR:                   ^
   2522 // CHECK-ERROR: error: invalid operand for instruction
   2523 // CHECK-ERROR:        sqdmlal2 v0.8h, v1.16b, v2.16b
   2524 // CHECK-ERROR:                    ^
   2525 
   2526         sqdmlsl v0.4s, v1.4s, v2.4h
   2527         sqdmlsl v0.2d, v1.2d, v2.2s
   2528 
   2529 // CHECK-ERROR: error: invalid operand for instruction
   2530 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4s, v2.4h
   2531 // CHECK-ERROR:                          ^
   2532 // CHECK-ERROR: error: invalid operand for instruction
   2533 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2d, v2.2s
   2534 // CHECK-ERROR:                          ^
   2535 
   2536         sqdmlsl2 v0.4s, v1.8s, v2.8h
   2537         sqdmlsl2 v0.2d, v1.4d, v2.4s
   2538 
   2539 // CHECK-ERROR: error: invalid operand for instruction
   2540 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8s, v2.8h
   2541 // CHECK-ERROR:                        ^
   2542 // CHECK-ERROR: error: invalid operand for instruction
   2543 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4d, v2.4s
   2544 // CHECK-ERROR:                        ^
   2545 
   2546         // Mismatched vector types
   2547         sqdmlsl v0.8h, v1.8b, v2.8b
   2548         sqdmlsl2 v0.8h, v1.16b, v2.16b
   2549 
   2550 // CHECK-ERROR: error: invalid operand for instruction
   2551 // CHECK-ERROR:        sqdmlsl v0.8h, v1.8b, v2.8b
   2552 // CHECK-ERROR:                   ^
   2553 // CHECK-ERROR: error: invalid operand for instruction
   2554 // CHECK-ERROR:        sqdmlsl2 v0.8h, v1.16b, v2.16b
   2555 // CHECK-ERROR:                    ^
   2556 
   2557 
   2558         sqdmull v0.4s, v1.4s, v2.4h
   2559         sqdmull v0.2d, v1.2d, v2.2s
   2560 
   2561 // CHECK-ERROR: error: invalid operand for instruction
   2562 // CHECK-ERROR:        sqdmull v0.4s, v1.4s, v2.4h
   2563 // CHECK-ERROR:                          ^
   2564 // CHECK-ERROR: error: invalid operand for instruction
   2565 // CHECK-ERROR:        sqdmull v0.2d, v1.2d, v2.2s
   2566 // CHECK-ERROR:                          ^
   2567 
   2568         sqdmull2 v0.4s, v1.8s, v2.8h
   2569         sqdmull2 v0.2d, v1.4d, v2.4s
   2570 
   2571 // CHECK-ERROR: error: invalid operand for instruction
   2572 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8s, v2.8h
   2573 // CHECK-ERROR:                        ^
   2574 // CHECK-ERROR: error: invalid operand for instruction
   2575 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4d, v2.4s
   2576 // CHECK-ERROR:                        ^
   2577 
   2578         // Mismatched vector types
   2579         sqdmull v0.8h, v1.8b, v2.8b
   2580         sqdmull2 v0.8h, v1.16b, v2.16b
   2581 
   2582 // CHECK-ERROR: error: invalid operand for instruction
   2583 // CHECK-ERROR:        sqdmull v0.8h, v1.8b, v2.8b
   2584 // CHECK-ERROR:                   ^
   2585 // CHECK-ERROR: error: invalid operand for instruction
   2586 // CHECK-ERROR:        sqdmull2 v0.8h, v1.16b, v2.16b
   2587 // CHECK-ERROR:                    ^
   2588 
   2589 
   2590 //------------------------------------------------------------------------------
   2591 // Long - Variant 3
   2592 //------------------------------------------------------------------------------
   2593 
   2594         pmull v0.8h, v1.8h, v2.8b
   2595 
   2596 // CHECK-ERROR: error: invalid operand for instruction
   2597 // CHECK-ERROR:        pmull v0.8h, v1.8h, v2.8b
   2598 // CHECK-ERROR:                        ^
   2599 
   2600         pmull v0.1q, v1.2d, v2.2d
   2601 
   2602 // CHECK-ERROR: error: invalid operand for instruction
   2603 // CHECK-ERROR:        pmull v0.1q, v1.2d, v2.2d
   2604 // CHECK-ERROR:                     ^
   2605 
   2606         // Mismatched vector types
   2607         pmull v0.4s, v1.4h, v2.4h
   2608         pmull v0.2d, v1.2s, v2.2s
   2609 
   2610 // CHECK-ERROR: error: invalid operand for instruction
   2611 // CHECK-ERROR:        pmull v0.4s, v1.4h, v2.4h
   2612 // CHECK-ERROR:                 ^
   2613 // CHECK-ERROR: error: invalid operand for instruction
   2614 // CHECK-ERROR:        pmull v0.2d, v1.2s, v2.2s
   2615 // CHECK-ERROR:                 ^
   2616 
   2617 
   2618         pmull2 v0.8h, v1.16h, v2.16b
   2619 
   2620 // CHECK-ERROR: error: invalid operand for instruction
   2621 // CHECK-ERROR:        pmull2 v0.8h, v1.16h, v2.16b
   2622 // CHECK-ERROR:                      ^
   2623 
   2624         pmull2 v0.q, v1.2d, v2.2d
   2625 
   2626 // CHECK-ERROR: error: invalid operand for instruction
   2627 // CHECK-ERROR:        pmull2 v0.q, v1.2d, v2.2d
   2628 // CHECK-ERROR:                  ^
   2629 
   2630         // Mismatched vector types
   2631         pmull2 v0.4s, v1.8h v2.8h
   2632         pmull2 v0.2d, v1.4s, v2.4s
   2633 
   2634 
   2635 // CHECK-ERROR: error: unexpected token in argument list
   2636 // CHECK-ERROR:        pmull2 v0.4s, v1.8h v2.8h
   2637 // CHECK-ERROR:                            ^
   2638 
   2639 // CHECK-ERROR: error: invalid operand for instruction
   2640 // CHECK-ERROR:        pmull2 v0.2d, v1.4s, v2.4s
   2641 // CHECK-ERROR:                  ^
   2642 
   2643 //------------------------------------------------------------------------------
   2644 // Widen
   2645 //------------------------------------------------------------------------------
   2646 
   2647         saddw v0.8h, v1.8h, v2.8h
   2648         saddw v0.4s, v1.4s, v2.4s
   2649         saddw v0.2d, v1.2d, v2.2d
   2650 
   2651 // CHECK-ERROR: error: invalid operand for instruction
   2652 // CHECK-ERROR:        saddw v0.8h, v1.8h, v2.8h
   2653 // CHECK-ERROR:                               ^
   2654 // CHECK-ERROR: error: invalid operand for instruction
   2655 // CHECK-ERROR:        saddw v0.4s, v1.4s, v2.4s
   2656 // CHECK-ERROR:                               ^
   2657 // CHECK-ERROR: error: invalid operand for instruction
   2658 // CHECK-ERROR:        saddw v0.2d, v1.2d, v2.2d
   2659 // CHECK-ERROR:                               ^
   2660 
   2661         saddw2 v0.8h, v1.8h, v2.16h
   2662         saddw2 v0.4s, v1.4s, v2.8s
   2663         saddw2 v0.2d, v1.2d, v2.4d
   2664 
   2665 // CHECK-ERROR: error: invalid operand for instruction
   2666 // CHECK-ERROR:        saddw2 v0.8h, v1.8h, v2.16h
   2667 // CHECK-ERROR:                             ^
   2668 // CHECK-ERROR: error: invalid operand for instruction
   2669 // CHECK-ERROR:        saddw2 v0.4s, v1.4s, v2.8s
   2670 // CHECK-ERROR:                             ^
   2671 // CHECK-ERROR: error: invalid operand for instruction
   2672 // CHECK-ERROR:        saddw2 v0.2d, v1.2d, v2.4d
   2673 // CHECK-ERROR:                             ^
   2674 
   2675         uaddw v0.8h, v1.8h, v2.8h
   2676         uaddw v0.4s, v1.4s, v2.4s
   2677         uaddw v0.2d, v1.2d, v2.2d
   2678 
   2679 // CHECK-ERROR: error: invalid operand for instruction
   2680 // CHECK-ERROR:        uaddw v0.8h, v1.8h, v2.8h
   2681 // CHECK-ERROR:                               ^
   2682 // CHECK-ERROR: error: invalid operand for instruction
   2683 // CHECK-ERROR:        uaddw v0.4s, v1.4s, v2.4s
   2684 // CHECK-ERROR:                               ^
   2685 // CHECK-ERROR: error: invalid operand for instruction
   2686 // CHECK-ERROR:        uaddw v0.2d, v1.2d, v2.2d
   2687 // CHECK-ERROR:                               ^
   2688 
   2689         uaddw2 v0.8h, v1.8h, v2.16h
   2690         uaddw2 v0.4s, v1.4s, v2.8s
   2691         uaddw2 v0.2d, v1.2d, v2.4d
   2692 
   2693 // CHECK-ERROR: error: invalid operand for instruction
   2694 // CHECK-ERROR:        uaddw2 v0.8h, v1.8h, v2.16h
   2695 // CHECK-ERROR:                             ^
   2696 // CHECK-ERROR: error: invalid operand for instruction
   2697 // CHECK-ERROR:        uaddw2 v0.4s, v1.4s, v2.8s
   2698 // CHECK-ERROR:                             ^
   2699 // CHECK-ERROR: error: invalid operand for instruction
   2700 // CHECK-ERROR:        uaddw2 v0.2d, v1.2d, v2.4d
   2701 // CHECK-ERROR:                             ^
   2702 
   2703         ssubw v0.8h, v1.8h, v2.8h
   2704         ssubw v0.4s, v1.4s, v2.4s
   2705         ssubw v0.2d, v1.2d, v2.2d
   2706 
   2707 // CHECK-ERROR: error: invalid operand for instruction
   2708 // CHECK-ERROR:        ssubw v0.8h, v1.8h, v2.8h
   2709 // CHECK-ERROR:                               ^
   2710 // CHECK-ERROR: error: invalid operand for instruction
   2711 // CHECK-ERROR:        ssubw v0.4s, v1.4s, v2.4s
   2712 // CHECK-ERROR:                               ^
   2713 // CHECK-ERROR: error: invalid operand for instruction
   2714 // CHECK-ERROR:        ssubw v0.2d, v1.2d, v2.2d
   2715 // CHECK-ERROR:                               ^
   2716 
   2717         ssubw2 v0.8h, v1.8h, v2.16h
   2718         ssubw2 v0.4s, v1.4s, v2.8s
   2719         ssubw2 v0.2d, v1.2d, v2.4d
   2720 
   2721 // CHECK-ERROR: error: invalid operand for instruction
   2722 // CHECK-ERROR:        ssubw2 v0.8h, v1.8h, v2.16h
   2723 // CHECK-ERROR:                             ^
   2724 // CHECK-ERROR: error: invalid operand for instruction
   2725 // CHECK-ERROR:        ssubw2 v0.4s, v1.4s, v2.8s
   2726 // CHECK-ERROR:                             ^
   2727 // CHECK-ERROR: error: invalid operand for instruction
   2728 // CHECK-ERROR:        ssubw2 v0.2d, v1.2d, v2.4d
   2729 // CHECK-ERROR:                             ^
   2730 
   2731         usubw v0.8h, v1.8h, v2.8h
   2732         usubw v0.4s, v1.4s, v2.4s
   2733         usubw v0.2d, v1.2d, v2.2d
   2734 
   2735 // CHECK-ERROR: error: invalid operand for instruction
   2736 // CHECK-ERROR:        usubw v0.8h, v1.8h, v2.8h
   2737 // CHECK-ERROR:                               ^
   2738 // CHECK-ERROR: error: invalid operand for instruction
   2739 // CHECK-ERROR:        usubw v0.4s, v1.4s, v2.4s
   2740 // CHECK-ERROR:                               ^
   2741 // CHECK-ERROR: error: invalid operand for instruction
   2742 // CHECK-ERROR:        usubw v0.2d, v1.2d, v2.2d
   2743 // CHECK-ERROR:                               ^
   2744 
   2745         usubw2 v0.8h, v1.8h, v2.16h
   2746         usubw2 v0.4s, v1.4s, v2.8s
   2747         usubw2 v0.2d, v1.2d, v2.4d
   2748 
   2749 // CHECK-ERROR: error: invalid operand for instruction
   2750 // CHECK-ERROR:        usubw2 v0.8h, v1.8h, v2.16h
   2751 // CHECK-ERROR:                             ^
   2752 // CHECK-ERROR: error: invalid operand for instruction
   2753 // CHECK-ERROR:        usubw2 v0.4s, v1.4s, v2.8s
   2754 // CHECK-ERROR:                             ^
   2755 // CHECK-ERROR: error: invalid operand for instruction
   2756 // CHECK-ERROR:        usubw2 v0.2d, v1.2d, v2.4d
   2757 // CHECK-ERROR:                             ^
   2758 
   2759 //------------------------------------------------------------------------------
   2760 // Narrow
   2761 //------------------------------------------------------------------------------
   2762 
   2763         addhn v0.8b, v1.8h, v2.8d
   2764         addhn v0.4h, v1.4s, v2.4h
   2765         addhn v0.2s, v1.2d, v2.2s
   2766 
   2767 // CHECK-ERROR: error: invalid operand for instruction
   2768 // CHECK-ERROR:        addhn v0.8b, v1.8h, v2.8d
   2769 // CHECK-ERROR:                            ^
   2770 // CHECK-ERROR: error: invalid operand for instruction
   2771 // CHECK-ERROR:        addhn v0.4h, v1.4s, v2.4h
   2772 // CHECK-ERROR:                               ^
   2773 // CHECK-ERROR: error: invalid operand for instruction
   2774 // CHECK-ERROR:        addhn v0.2s, v1.2d, v2.2s
   2775 // CHECK-ERROR:                               ^
   2776 
   2777         addhn2 v0.16b, v1.8h, v2.8b
   2778         addhn2 v0.8h, v1.4s, v2.4h
   2779         addhn2 v0.4s, v1.2d, v2.2s
   2780 
   2781 // CHECK-ERROR: error: invalid operand for instruction
   2782 // CHECK-ERROR:        addhn2 v0.16b, v1.8h, v2.8b
   2783 // CHECK-ERROR:                                 ^
   2784 // CHECK-ERROR: error: invalid operand for instruction
   2785 // CHECK-ERROR:        addhn2 v0.8h, v1.4s, v2.4h
   2786 // CHECK-ERROR:                                ^
   2787 // CHECK-ERROR: error: invalid operand for instruction
   2788 // CHECK-ERROR:        addhn2 v0.4s, v1.2d, v2.2s
   2789 // CHECK-ERROR:                                ^
   2790 
   2791         raddhn v0.8b, v1.8h, v2.8b
   2792         raddhn v0.4h, v1.4s, v2.4h
   2793         raddhn v0.2s, v1.2d, v2.2s
   2794 
   2795 // CHECK-ERROR: error: invalid operand for instruction
   2796 // CHECK-ERROR:        raddhn v0.8b, v1.8h, v2.8b
   2797 // CHECK-ERROR:                                ^
   2798 // CHECK-ERROR: error: invalid operand for instruction
   2799 // CHECK-ERROR:        raddhn v0.4h, v1.4s, v2.4h
   2800 // CHECK-ERROR:                                ^
   2801 // CHECK-ERROR: error: invalid operand for instruction
   2802 // CHECK-ERROR:        raddhn v0.2s, v1.2d, v2.2s
   2803 // CHECK-ERROR:                                ^
   2804 
   2805         raddhn2 v0.16b, v1.8h, v2.8b
   2806         raddhn2 v0.8h, v1.4s, v2.4h
   2807         raddhn2 v0.4s, v1.2d, v2.2s
   2808 
   2809 // CHECK-ERROR: error: invalid operand for instruction
   2810 // CHECK-ERROR:        raddhn2 v0.16b, v1.8h, v2.8b
   2811 // CHECK-ERROR:                                  ^
   2812 // CHECK-ERROR: error: invalid operand for instruction
   2813 // CHECK-ERROR:        raddhn2 v0.8h, v1.4s, v2.4h
   2814 // CHECK-ERROR:                                 ^
   2815 // CHECK-ERROR: error: invalid operand for instruction
   2816 // CHECK-ERROR:        raddhn2 v0.4s, v1.2d, v2.2s
   2817 // CHECK-ERROR:                                 ^
   2818 
   2819         rsubhn v0.8b, v1.8h, v2.8b
   2820         rsubhn v0.4h, v1.4s, v2.4h
   2821         rsubhn v0.2s, v1.2d, v2.2s
   2822 
   2823 // CHECK-ERROR: error: invalid operand for instruction
   2824 // CHECK-ERROR:        rsubhn v0.8b, v1.8h, v2.8b
   2825 // CHECK-ERROR:                                ^
   2826 // CHECK-ERROR: error: invalid operand for instruction
   2827 // CHECK-ERROR:        rsubhn v0.4h, v1.4s, v2.4h
   2828 // CHECK-ERROR:                                ^
   2829 // CHECK-ERROR: error: invalid operand for instruction
   2830 // CHECK-ERROR:        rsubhn v0.2s, v1.2d, v2.2s
   2831 // CHECK-ERROR:                                ^
   2832 
   2833         rsubhn2 v0.16b, v1.8h, v2.8b
   2834         rsubhn2 v0.8h, v1.4s, v2.4h
   2835         rsubhn2 v0.4s, v1.2d, v2.2s
   2836 
   2837 // CHECK-ERROR: error: invalid operand for instruction
   2838 // CHECK-ERROR:        rsubhn2 v0.16b, v1.8h, v2.8b
   2839 // CHECK-ERROR:                                  ^
   2840 // CHECK-ERROR: error: invalid operand for instruction
   2841 // CHECK-ERROR:        rsubhn2 v0.8h, v1.4s, v2.4h
   2842 // CHECK-ERROR:                                 ^
   2843 // CHECK-ERROR: error: invalid operand for instruction
   2844 // CHECK-ERROR:        rsubhn2 v0.4s, v1.2d, v2.2s
   2845 // CHECK-ERROR:                                 ^
   2846 
   2847 //----------------------------------------------------------------------
   2848 // Scalar Reduce Add Pairwise (Integer)
   2849 //----------------------------------------------------------------------
   2850          // invalid vector types
   2851       addp s0, d1.2d
   2852       addp d0, d1.2s
   2853 
   2854 // CHECK-ERROR: error: invalid operand for instruction
   2855 // CHECK-ERROR:          addp s0, d1.2d
   2856 // CHECK-ERROR:               ^
   2857 // CHECK-ERROR: error: invalid operand for instruction
   2858 // CHECK-ERROR:          addp d0, d1.2s
   2859 // CHECK-ERROR:                      ^
   2860 
   2861 //----------------------------------------------------------------------
   2862 // Scalar Reduce Add Pairwise (Floating Point)
   2863 //----------------------------------------------------------------------
   2864          // invalid vector types
   2865       faddp s0, d1.2d
   2866       faddp d0, d1.2s
   2867 
   2868 // CHECK-ERROR: error: invalid operand for instruction
   2869 // CHECK-ERROR:          faddp s0, d1.2d
   2870 // CHECK-ERROR:                    ^
   2871 // CHECK-ERROR: error: invalid operand for instruction
   2872 // CHECK-ERROR:          faddp d0, d1.2s
   2873 // CHECK-ERROR:                    ^
   2874 
   2875 //----------------------------------------------------------------------
   2876 // Scalar Reduce Maximum Pairwise (Floating Point)
   2877 //----------------------------------------------------------------------
   2878          // mismatched and invalid vector types
   2879       fmaxp s0, v1.2d
   2880       fmaxp d31, v2.2s
   2881       fmaxp h3, v2.2s
   2882 
   2883 // CHECK-ERROR: error: invalid operand for instruction
   2884 // CHECK-ERROR:          fmaxp s0, v1.2d
   2885 // CHECK-ERROR:                       ^
   2886 // CHECK-ERROR: error: invalid operand for instruction
   2887 // CHECK-ERROR:          fmaxp d31, v2.2s
   2888 // CHECK-ERROR:                        ^
   2889 // CHECK-ERROR: error: invalid operand for instruction
   2890 // CHECK-ERROR:          fmaxp h3, v2.2s
   2891 // CHECK-ERROR:                ^
   2892 
   2893 
   2894 //----------------------------------------------------------------------
   2895 // Scalar Reduce Minimum Pairwise (Floating Point)
   2896 //----------------------------------------------------------------------
   2897          // mismatched and invalid vector types
   2898       fminp s0, v1.4h
   2899       fminp d31, v2.8h
   2900       fminp b3, v2.2s
   2901 
   2902 // CHECK-ERROR: error: invalid operand for instruction
   2903 // CHECK-ERROR:          fminp s0, v1.4h
   2904 // CHECK-ERROR:                       ^
   2905 // CHECK-ERROR: error: invalid operand for instruction
   2906 // CHECK-ERROR:          fminp d31, v2.8h
   2907 // CHECK-ERROR:                        ^
   2908 // CHECK-ERROR: error: invalid operand for instruction
   2909 // CHECK-ERROR:          fminp b3, v2.2s
   2910 // CHECK-ERROR:                ^
   2911 
   2912 
   2913 //----------------------------------------------------------------------
   2914 // Scalar Reduce maxNum Pairwise (Floating Point)
   2915 //----------------------------------------------------------------------
   2916          // mismatched and invalid vector types
   2917       fmaxnmp s0, v1.8b
   2918       fmaxnmp d31, v2.16b
   2919       fmaxnmp v1.2s, v2.2s
   2920 
   2921 // CHECK-ERROR: error: invalid operand for instruction
   2922 // CHECK-ERROR:          fmaxnmp s0, v1.8b
   2923 // CHECK-ERROR:                         ^
   2924 // CHECK-ERROR: error: invalid operand for instruction
   2925 // CHECK-ERROR:          fmaxnmp d31, v2.16b
   2926 // CHECK-ERROR:                          ^
   2927 // CHECK-ERROR: error: too few operands for instruction
   2928 // CHECK-ERROR:          fmaxnmp v1.2s, v2.2s
   2929 // CHECK-ERROR:          ^
   2930 
   2931 //----------------------------------------------------------------------
   2932 // Scalar Reduce minNum Pairwise (Floating Point)
   2933 //----------------------------------------------------------------------
   2934          // mismatched and invalid vector types
   2935       fminnmp s0, v1.2d
   2936       fminnmp d31, v2.4s
   2937       fminnmp v1.4s, v2.2d
   2938 
   2939 // CHECK-ERROR: error: invalid operand for instruction
   2940 // CHECK-ERROR:          fminnmp s0, v1.2d
   2941 // CHECK-ERROR:                         ^
   2942 // CHECK-ERROR: error: invalid operand for instruction
   2943 // CHECK-ERROR:          fminnmp d31, v2.4s
   2944 // CHECK-ERROR:                          ^
   2945 // CHECK-ERROR: error: invalid operand for instruction
   2946 // CHECK-ERROR:          fminnmp v1.4s, v2.2d
   2947 // CHECK-ERROR:          ^
   2948 
   2949       mla v0.2d, v1.2d, v16.d[1]
   2950       mla v0.2s, v1.2s, v2.s[4]
   2951       mla v0.4s, v1.4s, v2.s[4]
   2952       mla v0.2h, v1.2h, v2.h[1]
   2953       mla v0.4h, v1.4h, v2.h[8]
   2954       mla v0.8h, v1.8h, v2.h[8]
   2955       mla v0.4h, v1.4h, v16.h[2]
   2956       mla v0.8h, v1.8h, v16.h[2]
   2957 
   2958 // CHECK-ERROR: error: invalid operand for instruction
   2959 // CHECK-ERROR:        mla v0.2d, v1.2d, v16.d[1]
   2960 // CHECK-ERROR:               ^
   2961 // CHECK-ERROR: vector lane must be an integer in range
   2962 // CHECK-ERROR:        mla v0.2s, v1.2s, v2.s[4]
   2963 // CHECK-ERROR:                               ^
   2964 // CHECK-ERROR: vector lane must be an integer in range
   2965 // CHECK-ERROR:        mla v0.4s, v1.4s, v2.s[4]
   2966 // CHECK-ERROR:                               ^
   2967 // CHECK-ERROR: error: invalid operand for instruction
   2968 // CHECK-ERROR:        mla v0.2h, v1.2h, v2.h[1]
   2969 // CHECK-ERROR:            ^
   2970 // CHECK-ERROR: vector lane must be an integer in range
   2971 // CHECK-ERROR:        mla v0.4h, v1.4h, v2.h[8]
   2972 // CHECK-ERROR:                               ^
   2973 // CHECK-ERROR: vector lane must be an integer in range
   2974 // CHECK-ERROR:        mla v0.8h, v1.8h, v2.h[8]
   2975 // CHECK-ERROR:                               ^
   2976 // CHECK-ERROR: error: invalid operand for instruction
   2977 // CHECK-ERROR:        mla v0.4h, v1.4h, v16.h[2]
   2978 // CHECK-ERROR:                          ^
   2979 // CHECK-ERROR: error: invalid operand for instruction
   2980 // CHECK-ERROR:        mla v0.8h, v1.8h, v16.h[2]
   2981 // CHECK-ERROR:                              ^
   2982 
   2983       mls v0.2d, v1.2d, v16.d[1]
   2984       mls v0.2s, v1.2s, v2.s[4]
   2985       mls v0.4s, v1.4s, v2.s[4]
   2986       mls v0.2h, v1.2h, v2.h[1]
   2987       mls v0.4h, v1.4h, v2.h[8]
   2988       mls v0.8h, v1.8h, v2.h[8]
   2989       mls v0.4h, v1.4h, v16.h[2]
   2990       mls v0.8h, v1.8h, v16.h[2]
   2991 
   2992 // CHECK-ERROR: error: invalid operand for instruction
   2993 // CHECK-ERROR:        mls v0.2d, v1.2d, v16.d[1]
   2994 // CHECK-ERROR:               ^
   2995 // CHECK-ERROR: vector lane must be an integer in range
   2996 // CHECK-ERROR:        mls v0.2s, v1.2s, v2.s[4]
   2997 // CHECK-ERROR:                               ^
   2998 // CHECK-ERROR: vector lane must be an integer in range
   2999 // CHECK-ERROR:        mls v0.4s, v1.4s, v2.s[4]
   3000 // CHECK-ERROR:                               ^
   3001 // CHECK-ERROR: error: invalid operand for instruction
   3002 // CHECK-ERROR:        mls v0.2h, v1.2h, v2.h[1]
   3003 // CHECK-ERROR:            ^
   3004 // CHECK-ERROR: vector lane must be an integer in range
   3005 // CHECK-ERROR:        mls v0.4h, v1.4h, v2.h[8]
   3006 // CHECK-ERROR:                               ^
   3007 // CHECK-ERROR: vector lane must be an integer in range
   3008 // CHECK-ERROR:        mls v0.8h, v1.8h, v2.h[8]
   3009 // CHECK-ERROR:                               ^
   3010 // CHECK-ERROR: error: invalid operand for instruction
   3011 // CHECK-ERROR:        mls v0.4h, v1.4h, v16.h[2]
   3012 // CHECK-ERROR:                          ^
   3013 // CHECK-ERROR: error: invalid operand for instruction
   3014 // CHECK-ERROR:        mls v0.8h, v1.8h, v16.h[2]
   3015 // CHECK-ERROR:                              ^
   3016 
   3017       fmla v0.4h, v1.4h, v2.h[2]
   3018       fmla v0.8h, v1.8h, v2.h[2]
   3019       fmla v0.2s, v1.2s, v2.s[4]
   3020       fmla v0.2s, v1.2s, v22.s[4]
   3021       fmla v3.4s, v8.4s, v2.s[4]
   3022       fmla v3.4s, v8.4s, v22.s[4]
   3023       fmla v0.2d, v1.2d, v2.d[2]
   3024       fmla v0.2d, v1.2d, v22.d[2]
   3025 
   3026 // CHECK-ERROR: error: invalid operand for instruction
   3027 // CHECK-ERROR:        fmla v0.4h, v1.4h, v2.h[2]
   3028 // CHECK-ERROR:                ^
   3029 // CHECK-ERROR: error: invalid operand for instruction
   3030 // CHECK-ERROR:        fmla v0.8h, v1.8h, v2.h[2]
   3031 // CHECK-ERROR:                ^
   3032 // CHECK-ERROR: vector lane must be an integer in range
   3033 // CHECK-ERROR:        fmla v0.2s, v1.2s, v2.s[4]
   3034 // CHECK-ERROR:                                ^
   3035 // CHECK-ERROR: vector lane must be an integer in range
   3036 // CHECK-ERROR:        fmla v0.2s, v1.2s, v22.s[4]
   3037 // CHECK-ERROR:                                 ^
   3038 // CHECK-ERROR: vector lane must be an integer in range
   3039 // CHECK-ERROR:        fmla v3.4s, v8.4s, v2.s[4]
   3040 // CHECK-ERROR:                                ^
   3041 // CHECK-ERROR: vector lane must be an integer in range
   3042 // CHECK-ERROR:        fmla v3.4s, v8.4s, v22.s[4]
   3043 // CHECK-ERROR:                                 ^
   3044 // CHECK-ERROR: vector lane must be an integer in range
   3045 // CHECK-ERROR:        fmla v0.2d, v1.2d, v2.d[2]
   3046 // CHECK-ERROR:                                ^
   3047 // CHECK-ERROR: vector lane must be an integer in range
   3048 // CHECK-ERROR:        fmla v0.2d, v1.2d, v22.d[2]
   3049 // CHECK-ERROR:                                 ^
   3050 
   3051       fmls v0.4h, v1.4h, v2.h[2]
   3052       fmls v0.8h, v1.8h, v2.h[2]
   3053       fmls v0.2s, v1.2s, v2.s[4]
   3054       fmls v0.2s, v1.2s, v22.s[4]
   3055       fmls v3.4s, v8.4s, v2.s[4]
   3056       fmls v3.4s, v8.4s, v22.s[4]
   3057       fmls v0.2d, v1.2d, v2.d[2]
   3058       fmls v0.2d, v1.2d, v22.d[2]
   3059 
   3060 // CHECK-ERROR: error: invalid operand for instruction
   3061 // CHECK-ERROR:        fmls v0.4h, v1.4h, v2.h[2]
   3062 // CHECK-ERROR:                ^
   3063 // CHECK-ERROR: error: invalid operand for instruction
   3064 // CHECK-ERROR:        fmls v0.8h, v1.8h, v2.h[2]
   3065 // CHECK-ERROR:                ^
   3066 // CHECK-ERROR: vector lane must be an integer in range
   3067 // CHECK-ERROR:        fmls v0.2s, v1.2s, v2.s[4]
   3068 // CHECK-ERROR:                                ^
   3069 // CHECK-ERROR: vector lane must be an integer in range
   3070 // CHECK-ERROR:        fmls v0.2s, v1.2s, v22.s[4]
   3071 // CHECK-ERROR:                                 ^
   3072 // CHECK-ERROR: vector lane must be an integer in range
   3073 // CHECK-ERROR:        fmls v3.4s, v8.4s, v2.s[4]
   3074 // CHECK-ERROR:                                ^
   3075 // CHECK-ERROR: vector lane must be an integer in range
   3076 // CHECK-ERROR:        fmls v3.4s, v8.4s, v22.s[4]
   3077 // CHECK-ERROR:                                 ^
   3078 // CHECK-ERROR: vector lane must be an integer in range
   3079 // CHECK-ERROR:        fmls v0.2d, v1.2d, v2.d[2]
   3080 // CHECK-ERROR:                                ^
   3081 // CHECK-ERROR: vector lane must be an integer in range
   3082 // CHECK-ERROR:        fmls v0.2d, v1.2d, v22.d[2]
   3083 // CHECK-ERROR:                                 ^
   3084 
   3085       smlal v0.4h, v1.4h, v2.h[2]
   3086       smlal v0.4s, v1.4h, v2.h[8]
   3087       smlal v0.4s, v1.4h, v16.h[2]
   3088       smlal v0.2s, v1.2s, v2.s[1]
   3089       smlal v0.2d, v1.2s, v2.s[4]
   3090       smlal v0.2d, v1.2s, v22.s[4]
   3091       smlal2 v0.4h, v1.8h, v1.h[2]
   3092       smlal2 v0.4s, v1.8h, v1.h[8]
   3093       smlal2 v0.4s, v1.8h, v16.h[2]
   3094       smlal2 v0.2s, v1.4s, v1.s[2]
   3095       smlal2 v0.2d, v1.4s, v1.s[4]
   3096       smlal2 v0.2d, v1.4s, v22.s[4]
   3097 
   3098 // CHECK-ERROR: error: invalid operand for instruction
   3099 // CHECK-ERROR:        smlal v0.4h, v1.4h, v2.h[2]
   3100 // CHECK-ERROR:              ^
   3101 // CHECK-ERROR: vector lane must be an integer in range
   3102 // CHECK-ERROR:        smlal v0.4s, v1.4h, v2.h[8]
   3103 // CHECK-ERROR:                                 ^
   3104 // CHECK-ERROR: error: invalid operand for instruction
   3105 // CHECK-ERROR:        smlal v0.4s, v1.4h, v16.h[2]
   3106 // CHECK-ERROR:                            ^
   3107 // CHECK-ERROR: error: invalid operand for instruction
   3108 // CHECK-ERROR:        smlal v0.2s, v1.2s, v2.s[1]
   3109 // CHECK-ERROR:                                 ^
   3110 // CHECK-ERROR: vector lane must be an integer in range
   3111 // CHECK-ERROR:        smlal v0.2d, v1.2s, v2.s[4]
   3112 // CHECK-ERROR:                                 ^
   3113 // CHECK-ERROR: vector lane must be an integer in range
   3114 // CHECK-ERROR:        smlal v0.2d, v1.2s, v22.s[4]
   3115 // CHECK-ERROR:                                  ^
   3116 // CHECK-ERROR: error: invalid operand for instruction
   3117 // CHECK-ERROR:        smlal2 v0.4h, v1.8h, v1.h[2]
   3118 // CHECK-ERROR:               ^
   3119 // CHECK-ERROR: vector lane must be an integer in range
   3120 // CHECK-ERROR:        smlal2 v0.4s, v1.8h, v1.h[8]
   3121 // CHECK-ERROR:                                  ^
   3122 // CHECK-ERROR: error: invalid operand for instruction
   3123 // CHECK-ERROR:        smlal2 v0.4s, v1.8h, v16.h[2]
   3124 // CHECK-ERROR:                                 ^
   3125 // CHECK-ERROR: error: invalid operand for instruction
   3126 // CHECK-ERROR:        smlal2 v0.2s, v1.4s, v1.s[2]
   3127 // CHECK-ERROR:               ^
   3128 // CHECK-ERROR: vector lane must be an integer in range
   3129 // CHECK-ERROR:        smlal2 v0.2d, v1.4s, v1.s[4]
   3130 // CHECK-ERROR:                                  ^
   3131 // CHECK-ERROR: vector lane must be an integer in range
   3132 // CHECK-ERROR:        smlal2 v0.2d, v1.4s, v22.s[4]
   3133 // CHECK-ERROR:                                   ^
   3134 
   3135       smlsl v0.4h, v1.4h, v2.h[2]
   3136       smlsl v0.4s, v1.4h, v2.h[8]
   3137       smlsl v0.4s, v1.4h, v16.h[2]
   3138       smlsl v0.2s, v1.2s, v2.s[1]
   3139       smlsl v0.2d, v1.2s, v2.s[4]
   3140       smlsl v0.2d, v1.2s, v22.s[4]
   3141       smlsl2 v0.4h, v1.8h, v1.h[2]
   3142       smlsl2 v0.4s, v1.8h, v1.h[8]
   3143       smlsl2 v0.4s, v1.8h, v16.h[2]
   3144       smlsl2 v0.2s, v1.4s, v1.s[2]
   3145       smlsl2 v0.2d, v1.4s, v1.s[4]
   3146       smlsl2 v0.2d, v1.4s, v22.s[4]
   3147 
   3148 // CHECK-ERROR: error: invalid operand for instruction
   3149 // CHECK-ERROR:        smlsl v0.4h, v1.4h, v2.h[2]
   3150 // CHECK-ERROR:              ^
   3151 // CHECK-ERROR: vector lane must be an integer in range
   3152 // CHECK-ERROR:        smlsl v0.4s, v1.4h, v2.h[8]
   3153 // CHECK-ERROR:                                 ^
   3154 // CHECK-ERROR: error: invalid operand for instruction
   3155 // CHECK-ERROR:        smlsl v0.4s, v1.4h, v16.h[2]
   3156 // CHECK-ERROR:                            ^
   3157 // CHECK-ERROR: error: invalid operand for instruction
   3158 // CHECK-ERROR:        smlsl v0.2s, v1.2s, v2.s[1]
   3159 // CHECK-ERROR:                                 ^
   3160 // CHECK-ERROR: vector lane must be an integer in range
   3161 // CHECK-ERROR:        smlsl v0.2d, v1.2s, v2.s[4]
   3162 // CHECK-ERROR:                                 ^
   3163 // CHECK-ERROR: vector lane must be an integer in range
   3164 // CHECK-ERROR:        smlsl v0.2d, v1.2s, v22.s[4]
   3165 // CHECK-ERROR:                                  ^
   3166 // CHECK-ERROR: error: invalid operand for instruction
   3167 // CHECK-ERROR:        smlsl2 v0.4h, v1.8h, v1.h[2]
   3168 // CHECK-ERROR:               ^
   3169 // CHECK-ERROR: vector lane must be an integer in range
   3170 // CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v1.h[8]
   3171 // CHECK-ERROR:                                  ^
   3172 // CHECK-ERROR: error: invalid operand for instruction
   3173 // CHECK-ERROR:        smlsl2 v0.4s, v1.8h, v16.h[2]
   3174 // CHECK-ERROR:                                 ^
   3175 // CHECK-ERROR: error: invalid operand for instruction
   3176 // CHECK-ERROR:        smlsl2 v0.2s, v1.4s, v1.s[2]
   3177 // CHECK-ERROR:               ^
   3178 // CHECK-ERROR: vector lane must be an integer in range
   3179 // CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v1.s[4]
   3180 // CHECK-ERROR:                                  ^
   3181 // CHECK-ERROR: vector lane must be an integer in range
   3182 // CHECK-ERROR:        smlsl2 v0.2d, v1.4s, v22.s[4]
   3183 // CHECK-ERROR:                                   ^
   3184 
   3185       umlal v0.4h, v1.4h, v2.h[2]
   3186       umlal v0.4s, v1.4h, v2.h[8]
   3187       umlal v0.4s, v1.4h, v16.h[2]
   3188       umlal v0.2s, v1.2s, v2.s[1]
   3189       umlal v0.2d, v1.2s, v2.s[4]
   3190       umlal v0.2d, v1.2s, v22.s[4]
   3191       umlal2 v0.4h, v1.8h, v1.h[2]
   3192       umlal2 v0.4s, v1.8h, v1.h[8]
   3193       umlal2 v0.4s, v1.8h, v16.h[2]
   3194       umlal2 v0.2s, v1.4s, v1.s[2]
   3195       umlal2 v0.2d, v1.4s, v1.s[4]
   3196       umlal2 v0.2d, v1.4s, v22.s[4]
   3197 
   3198 // CHECK-ERROR: error: invalid operand for instruction
   3199 // CHECK-ERROR:        umlal v0.4h, v1.4h, v2.h[2]
   3200 // CHECK-ERROR:              ^
   3201 // CHECK-ERROR: vector lane must be an integer in range
   3202 // CHECK-ERROR:        umlal v0.4s, v1.4h, v2.h[8]
   3203 // CHECK-ERROR:                                 ^
   3204 // CHECK-ERROR: error: invalid operand for instruction
   3205 // CHECK-ERROR:        umlal v0.4s, v1.4h, v16.h[2]
   3206 // CHECK-ERROR:                            ^
   3207 // CHECK-ERROR: error: invalid operand for instruction
   3208 // CHECK-ERROR:        umlal v0.2s, v1.2s, v2.s[1]
   3209 // CHECK-ERROR:                                 ^
   3210 // CHECK-ERROR: vector lane must be an integer in range
   3211 // CHECK-ERROR:        umlal v0.2d, v1.2s, v2.s[4]
   3212 // CHECK-ERROR:                                 ^
   3213 // CHECK-ERROR: vector lane must be an integer in range
   3214 // CHECK-ERROR:        umlal v0.2d, v1.2s, v22.s[4]
   3215 // CHECK-ERROR:                                  ^
   3216 // CHECK-ERROR: error: invalid operand for instruction
   3217 // CHECK-ERROR:        umlal2 v0.4h, v1.8h, v1.h[2]
   3218 // CHECK-ERROR:               ^
   3219 // CHECK-ERROR: vector lane must be an integer in range
   3220 // CHECK-ERROR:        umlal2 v0.4s, v1.8h, v1.h[8]
   3221 // CHECK-ERROR:                                  ^
   3222 // CHECK-ERROR: error: invalid operand for instruction
   3223 // CHECK-ERROR:        umlal2 v0.4s, v1.8h, v16.h[2]
   3224 // CHECK-ERROR:                                 ^
   3225 // CHECK-ERROR: error: invalid operand for instruction
   3226 // CHECK-ERROR:        umlal2 v0.2s, v1.4s, v1.s[2]
   3227 // CHECK-ERROR:               ^
   3228 // CHECK-ERROR: vector lane must be an integer in range
   3229 // CHECK-ERROR:        umlal2 v0.2d, v1.4s, v1.s[4]
   3230 // CHECK-ERROR:                                  ^
   3231 // CHECK-ERROR: vector lane must be an integer in range
   3232 // CHECK-ERROR:        umlal2 v0.2d, v1.4s, v22.s[4]
   3233 // CHECK-ERROR:                                   ^
   3234 
   3235       umlsl v0.4h, v1.4h, v2.h[2]
   3236       umlsl v0.4s, v1.4h, v2.h[8]
   3237       umlsl v0.4s, v1.4h, v16.h[2]
   3238       umlsl v0.2s, v1.2s, v2.s[3]
   3239       umlsl v0.2d, v1.2s, v2.s[4]
   3240       umlsl v0.2d, v1.2s, v22.s[4]
   3241       umlsl2 v0.4h, v1.8h, v1.h[2]
   3242       umlsl2 v0.4s, v1.8h, v1.h[8]
   3243       umlsl2 v0.4s, v1.8h, v16.h[2]
   3244       umlsl2 v0.2s, v1.4s, v1.s[2]
   3245       umlsl2 v0.2d, v1.4s, v1.s[4]
   3246       umlsl2 v0.2d, v1.4s, v22.s[4]
   3247 
   3248 // CHECK-ERROR: error: invalid operand for instruction
   3249 // CHECK-ERROR:        umlsl v0.4h, v1.4h, v2.h[2]
   3250 // CHECK-ERROR:              ^
   3251 // CHECK-ERROR: vector lane must be an integer in range
   3252 // CHECK-ERROR:        umlsl v0.4s, v1.4h, v2.h[8]
   3253 // CHECK-ERROR:                                 ^
   3254 // CHECK-ERROR: error: invalid operand for instruction
   3255 // CHECK-ERROR:        umlsl v0.4s, v1.4h, v16.h[2]
   3256 // CHECK-ERROR:                            ^
   3257 // CHECK-ERROR: error: invalid operand for instruction
   3258 // CHECK-ERROR:        umlsl v0.2s, v1.2s, v2.s[3]
   3259 // CHECK-ERROR:                                 ^
   3260 // CHECK-ERROR: vector lane must be an integer in range
   3261 // CHECK-ERROR:        umlsl v0.2d, v1.2s, v2.s[4]
   3262 // CHECK-ERROR:                                 ^
   3263 // CHECK-ERROR: vector lane must be an integer in range
   3264 // CHECK-ERROR:        umlsl v0.2d, v1.2s, v22.s[4]
   3265 // CHECK-ERROR:                                  ^
   3266 // CHECK-ERROR: error: invalid operand for instruction
   3267 // CHECK-ERROR:        umlsl2 v0.4h, v1.8h, v1.h[2]
   3268 // CHECK-ERROR:               ^
   3269 // CHECK-ERROR: vector lane must be an integer in range
   3270 // CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v1.h[8]
   3271 // CHECK-ERROR:                                  ^
   3272 // CHECK-ERROR: error: invalid operand for instruction
   3273 // CHECK-ERROR:        umlsl2 v0.4s, v1.8h, v16.h[2]
   3274 // CHECK-ERROR:                                 ^
   3275 // CHECK-ERROR: error: invalid operand for instruction
   3276 // CHECK-ERROR:        umlsl2 v0.2s, v1.4s, v1.s[2]
   3277 // CHECK-ERROR:               ^
   3278 // CHECK-ERROR: vector lane must be an integer in range
   3279 // CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v1.s[4]
   3280 // CHECK-ERROR:                                  ^
   3281 // CHECK-ERROR: vector lane must be an integer in range
   3282 // CHECK-ERROR:        umlsl2 v0.2d, v1.4s, v22.s[4]
   3283 // CHECK-ERROR:                                   ^
   3284 
   3285       sqdmlal v0.4h, v1.4h, v2.h[2]
   3286       sqdmlal v0.4s, v1.4h, v2.h[8]
   3287       sqdmlal v0.4s, v1.4h, v16.h[2]
   3288       sqdmlal v0.2s, v1.2s, v2.s[3]
   3289       sqdmlal v0.2d, v1.2s, v2.s[4]
   3290       sqdmlal v0.2d, v1.2s, v22.s[4]
   3291       sqdmlal2 v0.4h, v1.8h, v1.h[2]
   3292       sqdmlal2 v0.4s, v1.8h, v1.h[8]
   3293       sqdmlal2 v0.4s, v1.8h, v16.h[2]
   3294       sqdmlal2 v0.2s, v1.4s, v1.s[2]
   3295       sqdmlal2 v0.2d, v1.4s, v1.s[4]
   3296       sqdmlal2 v0.2d, v1.4s, v22.s[4]
   3297 
   3298 // CHECK-ERROR: error: invalid operand for instruction
   3299 // CHECK-ERROR:        sqdmlal v0.4h, v1.4h, v2.h[2]
   3300 // CHECK-ERROR:                ^
   3301 // CHECK-ERROR: vector lane must be an integer in range
   3302 // CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v2.h[8]
   3303 // CHECK-ERROR:                                   ^
   3304 // CHECK-ERROR: error: invalid operand for instruction
   3305 // CHECK-ERROR:        sqdmlal v0.4s, v1.4h, v16.h[2]
   3306 // CHECK-ERROR:                              ^
   3307 // CHECK-ERROR: error: invalid operand for instruction
   3308 // CHECK-ERROR:        sqdmlal v0.2s, v1.2s, v2.s[3]
   3309 // CHECK-ERROR:                                   ^
   3310 // CHECK-ERROR: vector lane must be an integer in range
   3311 // CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v2.s[4]
   3312 // CHECK-ERROR:                                   ^
   3313 // CHECK-ERROR: vector lane must be an integer in range
   3314 // CHECK-ERROR:        sqdmlal v0.2d, v1.2s, v22.s[4]
   3315 // CHECK-ERROR:                                    ^
   3316 // CHECK-ERROR: error: invalid operand for instruction
   3317 // CHECK-ERROR:        sqdmlal2 v0.4h, v1.8h, v1.h[2]
   3318 // CHECK-ERROR:                 ^
   3319 // CHECK-ERROR: vector lane must be an integer in range
   3320 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v1.h[8]
   3321 // CHECK-ERROR:                                    ^
   3322 // CHECK-ERROR: error: invalid operand for instruction
   3323 // CHECK-ERROR:        sqdmlal2 v0.4s, v1.8h, v16.h[2]
   3324 // CHECK-ERROR:                                   ^
   3325 // CHECK-ERROR: error: invalid operand for instruction
   3326 // CHECK-ERROR:        sqdmlal2 v0.2s, v1.4s, v1.s[2]
   3327 // CHECK-ERROR:                 ^
   3328 // CHECK-ERROR: vector lane must be an integer in range
   3329 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v1.s[4]
   3330 // CHECK-ERROR:                                    ^
   3331 // CHECK-ERROR: vector lane must be an integer in range
   3332 // CHECK-ERROR:        sqdmlal2 v0.2d, v1.4s, v22.s[4]
   3333 // CHECK-ERROR:                                     ^
   3334 
   3335       sqdmlsl v0.4h, v1.4h, v2.h[2]
   3336       sqdmlsl v0.4s, v1.4h, v2.h[8]
   3337       sqdmlsl v0.4s, v1.4h, v16.h[2]
   3338       sqdmlsl v0.2s, v1.2s, v2.s[3]
   3339       sqdmlsl v0.2d, v1.2s, v2.s[4]
   3340       sqdmlsl v0.2d, v1.2s, v22.s[4]
   3341       sqdmlsl2 v0.4h, v1.8h, v1.h[2]
   3342       sqdmlsl2 v0.4s, v1.8h, v1.h[8]
   3343       sqdmlsl2 v0.4s, v1.8h, v16.h[2]
   3344       sqdmlsl2 v0.2s, v1.4s, v1.s[2]
   3345       sqdmlsl2 v0.2d, v1.4s, v1.s[4]
   3346       sqdmlsl2 v0.2d, v1.4s, v22.s[4]
   3347 
   3348 // CHECK-ERROR: error: invalid operand for instruction
   3349 // CHECK-ERROR:        sqdmlsl v0.4h, v1.4h, v2.h[2]
   3350 // CHECK-ERROR:                ^
   3351 // CHECK-ERROR: vector lane must be an integer in range
   3352 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v2.h[8]
   3353 // CHECK-ERROR:                                   ^
   3354 // CHECK-ERROR: error: invalid operand for instruction
   3355 // CHECK-ERROR:        sqdmlsl v0.4s, v1.4h, v16.h[2]
   3356 // CHECK-ERROR:                              ^
   3357 // CHECK-ERROR: error: invalid operand for instruction
   3358 // CHECK-ERROR:        sqdmlsl v0.2s, v1.2s, v2.s[3]
   3359 // CHECK-ERROR:                                   ^
   3360 // CHECK-ERROR: vector lane must be an integer in range
   3361 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v2.s[4]
   3362 // CHECK-ERROR:                                   ^
   3363 // CHECK-ERROR: vector lane must be an integer in range
   3364 // CHECK-ERROR:        sqdmlsl v0.2d, v1.2s, v22.s[4]
   3365 // CHECK-ERROR:                                    ^
   3366 // CHECK-ERROR: error: invalid operand for instruction
   3367 // CHECK-ERROR:        sqdmlsl2 v0.4h, v1.8h, v1.h[2]
   3368 // CHECK-ERROR:                 ^
   3369 // CHECK-ERROR: vector lane must be an integer in range
   3370 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v1.h[8]
   3371 // CHECK-ERROR:                                    ^
   3372 // CHECK-ERROR: error: invalid operand for instruction
   3373 // CHECK-ERROR:        sqdmlsl2 v0.4s, v1.8h, v16.h[2]
   3374 // CHECK-ERROR:                                   ^
   3375 // CHECK-ERROR: error: invalid operand for instruction
   3376 // CHECK-ERROR:        sqdmlsl2 v0.2s, v1.4s, v1.s[2]
   3377 // CHECK-ERROR:                 ^
   3378 // CHECK-ERROR: vector lane must be an integer in range
   3379 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v1.s[4]
   3380 // CHECK-ERROR:                                    ^
   3381 // CHECK-ERROR: vector lane must be an integer in range
   3382 // CHECK-ERROR:        sqdmlsl2 v0.2d, v1.4s, v22.s[4]
   3383 // CHECK-ERROR:                                     ^
   3384 
   3385       mul v0.4h, v1.4h, v2.h[8]
   3386       mul v0.4h, v1.4h, v16.h[8]
   3387       mul v0.8h, v1.8h, v2.h[8]
   3388       mul v0.8h, v1.8h, v16.h[8]
   3389       mul v0.2s, v1.2s, v2.s[4]
   3390       mul v0.2s, v1.2s, v22.s[4]
   3391       mul v0.4s, v1.4s, v2.s[4]
   3392       mul v0.4s, v1.4s, v22.s[4]
   3393       mul v0.2d, v1.2d, v2.d[1]
   3394 
   3395 // CHECK-ERROR: vector lane must be an integer in range
   3396 // CHECK-ERROR:        mul v0.4h, v1.4h, v2.h[8]
   3397 // CHECK-ERROR:                               ^
   3398 // CHECK-ERROR: error: invalid operand for instruction
   3399 // CHECK-ERROR:        mul v0.4h, v1.4h, v16.h[8]
   3400 // CHECK-ERROR:                                ^
   3401 // CHECK-ERROR: vector lane must be an integer in range
   3402 // CHECK-ERROR:        mul v0.8h, v1.8h, v2.h[8]
   3403 // CHECK-ERROR:                               ^
   3404 // CHECK-ERROR: invalid operand for instruction
   3405 // CHECK-ERROR:        mul v0.8h, v1.8h, v16.h[8]
   3406 // CHECK-ERROR:                                ^
   3407 // CHECK-ERROR: vector lane must be an integer in range
   3408 // CHECK-ERROR:        mul v0.2s, v1.2s, v2.s[4]
   3409 // CHECK-ERROR:                               ^
   3410 // CHECK-ERROR: vector lane must be an integer in range
   3411 // CHECK-ERROR:        mul v0.2s, v1.2s, v22.s[4]
   3412 // CHECK-ERROR:                                ^
   3413 // CHECK-ERROR: vector lane must be an integer in range
   3414 // CHECK-ERROR:        mul v0.4s, v1.4s, v2.s[4]
   3415 // CHECK-ERROR:                               ^
   3416 // CHECK-ERROR: vector lane must be an integer in range
   3417 // CHECK-ERROR:        mul v0.4s, v1.4s, v22.s[4]
   3418 // CHECK-ERROR:                                ^
   3419 
   3420       fmul v0.4h, v1.4h, v2.h[4]
   3421       fmul v0.2s, v1.2s, v2.s[4]
   3422       fmul v0.2s, v1.2s, v22.s[4]
   3423       fmul v0.4s, v1.4s, v2.s[4]
   3424       fmul v0.4s, v1.4s, v22.s[4]
   3425       fmul v0.2d, v1.2d, v2.d[2]
   3426       fmul v0.2d, v1.2d, v22.d[2]
   3427 
   3428 // CHECK-ERROR: error: invalid operand for instruction
   3429 // CHECK-ERROR:        mul v0.2d, v1.2d, v2.d[1]
   3430 // CHECK-ERROR:               ^
   3431 // CHECK-ERROR: error: invalid operand for instruction
   3432 // CHECK-ERROR:        fmul v0.4h, v1.4h, v2.h[4]
   3433 // CHECK-ERROR:                ^
   3434 // CHECK-ERROR: vector lane must be an integer in range
   3435 // CHECK-ERROR:        fmul v0.2s, v1.2s, v2.s[4]
   3436 // CHECK-ERROR:                                ^
   3437 // CHECK-ERROR: vector lane must be an integer in range
   3438 // CHECK-ERROR:        fmul v0.2s, v1.2s, v22.s[4]
   3439 // CHECK-ERROR:                                 ^
   3440 // CHECK-ERROR: vector lane must be an integer in range
   3441 // CHECK-ERROR:        fmul v0.4s, v1.4s, v2.s[4]
   3442 // CHECK-ERROR:                                ^
   3443 // CHECK-ERROR: vector lane must be an integer in range
   3444 // CHECK-ERROR:        fmul v0.4s, v1.4s, v22.s[4]
   3445 // CHECK-ERROR:                                 ^
   3446 // CHECK-ERROR: vector lane must be an integer in range
   3447 // CHECK-ERROR:        fmul v0.2d, v1.2d, v2.d[2]
   3448 // CHECK-ERROR:                                ^
   3449 // CHECK-ERROR: vector lane must be an integer in range
   3450 // CHECK-ERROR:        fmul v0.2d, v1.2d, v22.d[2]
   3451 // CHECK-ERROR:                                 ^
   3452 
   3453       fmulx v0.4h, v1.4h, v2.h[4]
   3454       fmulx v0.2s, v1.2s, v2.s[4]
   3455       fmulx v0.2s, v1.2s, v22.s[4]
   3456       fmulx v0.4s, v1.4s, v2.s[4]
   3457       fmulx v0.4s, v1.4s, v22.s[4]
   3458       fmulx v0.2d, v1.2d, v2.d[2]
   3459       fmulx v0.2d, v1.2d, v22.d[2]
   3460 
   3461 // CHECK-ERROR: error: invalid operand for instruction
   3462 // CHECK-ERROR:        fmulx v0.4h, v1.4h, v2.h[4]
   3463 // CHECK-ERROR:                 ^
   3464 // CHECK-ERROR: vector lane must be an integer in range
   3465 // CHECK-ERROR:        fmulx v0.2s, v1.2s, v2.s[4]
   3466 // CHECK-ERROR:                                 ^
   3467 // CHECK-ERROR: vector lane must be an integer in range
   3468 // CHECK-ERROR:        fmulx v0.2s, v1.2s, v22.s[4]
   3469 // CHECK-ERROR:                                  ^
   3470 // CHECK-ERROR: vector lane must be an integer in range
   3471 // CHECK-ERROR:        fmulx v0.4s, v1.4s, v2.s[4]
   3472 // CHECK-ERROR:                                 ^
   3473 // CHECK-ERROR: vector lane must be an integer in range
   3474 // CHECK-ERROR:        fmulx v0.4s, v1.4s, v22.s[4]
   3475 // CHECK-ERROR:                                  ^
   3476 // CHECK-ERROR: vector lane must be an integer in range
   3477 // CHECK-ERROR:        fmulx v0.2d, v1.2d, v2.d[2]
   3478 // CHECK-ERROR:                                 ^
   3479 // CHECK-ERROR: vector lane must be an integer in range
   3480 // CHECK-ERROR:        fmulx v0.2d, v1.2d, v22.d[2]
   3481 // CHECK-ERROR:                                  ^
   3482 
   3483       smull v0.4h, v1.4h, v2.h[2]
   3484       smull v0.4s, v1.4h, v2.h[8]
   3485       smull v0.4s, v1.4h, v16.h[4]
   3486       smull v0.2s, v1.2s, v2.s[2]
   3487       smull v0.2d, v1.2s, v2.s[4]
   3488       smull v0.2d, v1.2s, v22.s[4]
   3489       smull2 v0.4h, v1.8h, v2.h[2]
   3490       smull2 v0.4s, v1.8h, v2.h[8]
   3491       smull2 v0.4s, v1.8h, v16.h[4]
   3492       smull2 v0.2s, v1.4s, v2.s[2]
   3493       smull2 v0.2d, v1.4s, v2.s[4]
   3494       smull2 v0.2d, v1.4s, v22.s[4]
   3495 
   3496 // CHECK-ERROR: error: invalid operand for instruction
   3497 // CHECK-ERROR:        smull v0.4h, v1.4h, v2.h[2]
   3498 // CHECK-ERROR:              ^
   3499 // CHECK-ERROR: vector lane must be an integer in range
   3500 // CHECK-ERROR:        smull v0.4s, v1.4h, v2.h[8]
   3501 // CHECK-ERROR:                                 ^
   3502 // CHECK-ERROR: error: invalid operand for instruction
   3503 // CHECK-ERROR:        smull v0.4s, v1.4h, v16.h[4]
   3504 // CHECK-ERROR:                            ^
   3505 // CHECK-ERROR: error: invalid operand for instruction
   3506 // CHECK-ERROR:        smull v0.2s, v1.2s, v2.s[2]
   3507 // CHECK-ERROR:              ^
   3508 // CHECK-ERROR: vector lane must be an integer in range
   3509 // CHECK-ERROR:        smull v0.2d, v1.2s, v2.s[4]
   3510 // CHECK-ERROR:                                 ^
   3511 // CHECK-ERROR: vector lane must be an integer in range
   3512 // CHECK-ERROR:        smull v0.2d, v1.2s, v22.s[4]
   3513 // CHECK-ERROR:                                  ^
   3514 // CHECK-ERROR: error: invalid operand for instruction
   3515 // CHECK-ERROR:        smull2 v0.4h, v1.8h, v2.h[2]
   3516 // CHECK-ERROR:               ^
   3517 // CHECK-ERROR: vector lane must be an integer in range
   3518 // CHECK-ERROR:        smull2 v0.4s, v1.8h, v2.h[8]
   3519 // CHECK-ERROR:                                  ^
   3520 // CHECK-ERROR: error: invalid operand for instruction
   3521 // CHECK-ERROR:        smull2 v0.4s, v1.8h, v16.h[4]
   3522 // CHECK-ERROR:                                 ^
   3523 // CHECK-ERROR: error: invalid operand for instruction
   3524 // CHECK-ERROR:        smull2 v0.2s, v1.4s, v2.s[2]
   3525 // CHECK-ERROR:               ^
   3526 // CHECK-ERROR: vector lane must be an integer in range
   3527 // CHECK-ERROR:        smull2 v0.2d, v1.4s, v2.s[4]
   3528 // CHECK-ERROR:                                  ^
   3529 // CHECK-ERROR: vector lane must be an integer in range
   3530 // CHECK-ERROR:        smull2 v0.2d, v1.4s, v22.s[4]
   3531 // CHECK-ERROR:                                   ^
   3532 
   3533       umull v0.4h, v1.4h, v2.h[2]
   3534       umull v0.4s, v1.4h, v2.h[8]
   3535       umull v0.4s, v1.4h, v16.h[4]
   3536       umull v0.2s, v1.2s, v2.s[2]
   3537       umull v0.2d, v1.2s, v2.s[4]
   3538       umull v0.2d, v1.2s, v22.s[4]
   3539       umull2 v0.4h, v1.8h, v2.h[2]
   3540       umull2 v0.4s, v1.8h, v2.h[8]
   3541       umull2 v0.4s, v1.8h, v16.h[4]
   3542       umull2 v0.2s, v1.4s, v2.s[2]
   3543       umull2 v0.2d, v1.4s, v2.s[4]
   3544       umull2 v0.2d, v1.4s, v22.s[4]
   3545 
   3546 // CHECK-ERROR: error: invalid operand for instruction
   3547 // CHECK-ERROR:        umull v0.4h, v1.4h, v2.h[2]
   3548 // CHECK-ERROR:              ^
   3549 // CHECK-ERROR: vector lane must be an integer in range
   3550 // CHECK-ERROR:        umull v0.4s, v1.4h, v2.h[8]
   3551 // CHECK-ERROR:                                 ^
   3552 // CHECK-ERROR: error: invalid operand for instruction
   3553 // CHECK-ERROR:        umull v0.4s, v1.4h, v16.h[4]
   3554 // CHECK-ERROR:                            ^
   3555 // CHECK-ERROR: error: invalid operand for instruction
   3556 // CHECK-ERROR:        umull v0.2s, v1.2s, v2.s[2]
   3557 // CHECK-ERROR:              ^
   3558 // CHECK-ERROR: vector lane must be an integer in range
   3559 // CHECK-ERROR:        umull v0.2d, v1.2s, v2.s[4]
   3560 // CHECK-ERROR:                                 ^
   3561 // CHECK-ERROR: vector lane must be an integer in range
   3562 // CHECK-ERROR:        umull v0.2d, v1.2s, v22.s[4]
   3563 // CHECK-ERROR:                                  ^
   3564 // CHECK-ERROR: error: invalid operand for instruction
   3565 // CHECK-ERROR:        umull2 v0.4h, v1.8h, v2.h[2]
   3566 // CHECK-ERROR:               ^
   3567 // CHECK-ERROR: vector lane must be an integer in range
   3568 // CHECK-ERROR:        umull2 v0.4s, v1.8h, v2.h[8]
   3569 // CHECK-ERROR:                                  ^
   3570 // CHECK-ERROR: error: invalid operand for instruction
   3571 // CHECK-ERROR:        umull2 v0.4s, v1.8h, v16.h[4]
   3572 // CHECK-ERROR:                                 ^
   3573 // CHECK-ERROR: error: invalid operand for instruction
   3574 // CHECK-ERROR:        umull2 v0.2s, v1.4s, v2.s[2]
   3575 // CHECK-ERROR:               ^
   3576 // CHECK-ERROR: vector lane must be an integer in range
   3577 // CHECK-ERROR:        umull2 v0.2d, v1.4s, v2.s[4]
   3578 // CHECK-ERROR:                                  ^
   3579 // CHECK-ERROR: vector lane must be an integer in range
   3580 // CHECK-ERROR:        umull2 v0.2d, v1.4s, v22.s[4]
   3581 // CHECK-ERROR:                                   ^
   3582 
   3583       sqdmull v0.4h, v1.4h, v2.h[2]
   3584       sqdmull v0.4s, v1.4h, v2.h[8]
   3585       sqdmull v0.4s, v1.4h, v16.h[4]
   3586       sqdmull v0.2s, v1.2s, v2.s[2]
   3587       sqdmull v0.2d, v1.2s, v2.s[4]
   3588       sqdmull v0.2d, v1.2s, v22.s[4]
   3589       sqdmull2 v0.4h, v1.8h, v2.h[2]
   3590       sqdmull2 v0.4s, v1.8h, v2.h[8]
   3591       sqdmull2 v0.4s, v1.8h, v16.h[4]
   3592       sqdmull2 v0.2s, v1.4s, v2.s[2]
   3593       sqdmull2 v0.2d, v1.4s, v2.s[4]
   3594       sqdmull2 v0.2d, v1.4s, v22.s[4]
   3595 
   3596 // CHECK-ERROR: error: invalid operand for instruction
   3597 // CHECK-ERROR:        sqdmull v0.4h, v1.4h, v2.h[2]
   3598 // CHECK-ERROR:                ^
   3599 // CHECK-ERROR: vector lane must be an integer in range
   3600 // CHECK-ERROR:        sqdmull v0.4s, v1.4h, v2.h[8]
   3601 // CHECK-ERROR:                                   ^
   3602 // CHECK-ERROR: error: invalid operand for instruction
   3603 // CHECK-ERROR:        sqdmull v0.4s, v1.4h, v16.h[4]
   3604 // CHECK-ERROR:                              ^
   3605 // CHECK-ERROR: error: invalid operand for instruction
   3606 // CHECK-ERROR:        sqdmull v0.2s, v1.2s, v2.s[2]
   3607 // CHECK-ERROR:                ^
   3608 // CHECK-ERROR: vector lane must be an integer in range
   3609 // CHECK-ERROR:        sqdmull v0.2d, v1.2s, v2.s[4]
   3610 // CHECK-ERROR:                                   ^
   3611 // CHECK-ERROR: vector lane must be an integer in range
   3612 // CHECK-ERROR:        sqdmull v0.2d, v1.2s, v22.s[4]
   3613 // CHECK-ERROR:                                    ^
   3614 // CHECK-ERROR: error: invalid operand for instruction
   3615 // CHECK-ERROR:        sqdmull2 v0.4h, v1.8h, v2.h[2]
   3616 // CHECK-ERROR:                 ^
   3617 // CHECK-ERROR: vector lane must be an integer in range
   3618 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v2.h[8]
   3619 // CHECK-ERROR:                                    ^
   3620 // CHECK-ERROR: error: invalid operand for instruction
   3621 // CHECK-ERROR:        sqdmull2 v0.4s, v1.8h, v16.h[4]
   3622 // CHECK-ERROR:                                   ^
   3623 // CHECK-ERROR: error: invalid operand for instruction
   3624 // CHECK-ERROR:        sqdmull2 v0.2s, v1.4s, v2.s[2]
   3625 // CHECK-ERROR:                 ^
   3626 // CHECK-ERROR: vector lane must be an integer in range
   3627 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v2.s[4]
   3628 // CHECK-ERROR:                                    ^
   3629 // CHECK-ERROR: vector lane must be an integer in range
   3630 // CHECK-ERROR:        sqdmull2 v0.2d, v1.4s, v22.s[4]
   3631 // CHECK-ERROR:                                     ^
   3632 
   3633       sqdmulh v0.4h, v1.4h, v2.h[8]
   3634       sqdmulh v0.4h, v1.4h, v16.h[2]
   3635       sqdmulh v0.8h, v1.8h, v2.h[8]
   3636       sqdmulh v0.8h, v1.8h, v16.h[2]
   3637       sqdmulh v0.2s, v1.2s, v2.s[4]
   3638       sqdmulh v0.2s, v1.2s, v22.s[4]
   3639       sqdmulh v0.4s, v1.4s, v2.s[4]
   3640       sqdmulh v0.4s, v1.4s, v22.s[4]
   3641       sqdmulh v0.2d, v1.2d, v22.d[1]
   3642 
   3643 // CHECK-ERROR: vector lane must be an integer in range
   3644 // CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v2.h[8]
   3645 // CHECK-ERROR:                                   ^
   3646 // CHECK-ERROR: error: invalid operand for instruction
   3647 // CHECK-ERROR:        sqdmulh v0.4h, v1.4h, v16.h[2]
   3648 // CHECK-ERROR:                              ^
   3649 // CHECK-ERROR: vector lane must be an integer in range
   3650 // CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v2.h[8]
   3651 // CHECK-ERROR:                                   ^
   3652 // CHECK-ERROR: error: invalid operand for instruction
   3653 // CHECK-ERROR:        sqdmulh v0.8h, v1.8h, v16.h[2]
   3654 // CHECK-ERROR:                                  ^
   3655 // CHECK-ERROR: vector lane must be an integer in range
   3656 // CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v2.s[4]
   3657 // CHECK-ERROR:                                   ^
   3658 // CHECK-ERROR: vector lane must be an integer in range
   3659 // CHECK-ERROR:        sqdmulh v0.2s, v1.2s, v22.s[4]
   3660 // CHECK-ERROR:                                    ^
   3661 // CHECK-ERROR: vector lane must be an integer in range
   3662 // CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v2.s[4]
   3663 // CHECK-ERROR:                                   ^
   3664 // CHECK-ERROR: vector lane must be an integer in range
   3665 // CHECK-ERROR:        sqdmulh v0.4s, v1.4s, v22.s[4]
   3666 // CHECK-ERROR:                                    ^
   3667 // CHECK-ERROR: error: invalid operand for instruction
   3668 // CHECK-ERROR:        sqdmulh v0.2d, v1.2d, v22.d[1]
   3669 // CHECK-ERROR:                   ^
   3670 
   3671       sqrdmulh v0.4h, v1.4h, v2.h[8]
   3672       sqrdmulh v0.4h, v1.4h, v16.h[2]
   3673       sqrdmulh v0.8h, v1.8h, v2.h[8]
   3674       sqrdmulh v0.8h, v1.8h, v16.h[2]
   3675       sqrdmulh v0.2s, v1.2s, v2.s[4]
   3676       sqrdmulh v0.2s, v1.2s, v22.s[4]
   3677       sqrdmulh v0.4s, v1.4s, v2.s[4]
   3678       sqrdmulh v0.4s, v1.4s, v22.s[4]
   3679       sqrdmulh v0.2d, v1.2d, v22.d[1]
   3680 
   3681 // CHECK-ERROR: vector lane must be an integer in range
   3682 // CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v2.h[8]
   3683 // CHECK-ERROR:                                    ^
   3684 // CHECK-ERROR: error: invalid operand for instruction
   3685 // CHECK-ERROR:        sqrdmulh v0.4h, v1.4h, v16.h[2]
   3686 // CHECK-ERROR:                               ^
   3687 // CHECK-ERROR: vector lane must be an integer in range
   3688 // CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v2.h[8]
   3689 // CHECK-ERROR:                                    ^
   3690 // CHECK-ERROR: error: invalid operand for instruction
   3691 // CHECK-ERROR:        sqrdmulh v0.8h, v1.8h, v16.h[2]
   3692 // CHECK-ERROR:                                   ^
   3693 // CHECK-ERROR: vector lane must be an integer in range
   3694 // CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v2.s[4]
   3695 // CHECK-ERROR:                                    ^
   3696 // CHECK-ERROR: vector lane must be an integer in range
   3697 // CHECK-ERROR:        sqrdmulh v0.2s, v1.2s, v22.s[4]
   3698 // CHECK-ERROR:                                     ^
   3699 // CHECK-ERROR: vector lane must be an integer in range
   3700 // CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v2.s[4]
   3701 // CHECK-ERROR:                                    ^
   3702 // CHECK-ERROR: vector lane must be an integer in range
   3703 // CHECK-ERROR:        sqrdmulh v0.4s, v1.4s, v22.s[4]
   3704 // CHECK-ERROR:                                     ^
   3705 // CHECK-ERROR: error: invalid operand for instruction
   3706 // CHECK-ERROR:        sqrdmulh v0.2d, v1.2d, v22.d[1]
   3707 // CHECK-ERROR:                    ^
   3708 
   3709 //----------------------------------------------------------------------
   3710 // Across vectors
   3711 //----------------------------------------------------------------------
   3712 
   3713         saddlv b0, v1.8b
   3714         saddlv b0, v1.16b
   3715         saddlv h0, v1.4h
   3716         saddlv h0, v1.8h
   3717         saddlv s0, v1.2s
   3718         saddlv s0, v1.4s
   3719         saddlv d0, v1.2s
   3720 
   3721 // CHECK-ERROR: error: invalid operand for instruction
   3722 // CHECK-ERROR:        saddlv b0, v1.8b
   3723 // CHECK-ERROR:               ^
   3724 // CHECK-ERROR: error: invalid operand for instruction
   3725 // CHECK-ERROR:        saddlv b0, v1.16b
   3726 // CHECK-ERROR:               ^
   3727 // CHECK-ERROR: error: invalid operand for instruction
   3728 // CHECK-ERROR:        saddlv h0, v1.4h
   3729 // CHECK-ERROR:                      ^
   3730 // CHECK-ERROR: error: invalid operand for instruction
   3731 // CHECK-ERROR:        saddlv h0, v1.8h
   3732 // CHECK-ERROR:                      ^
   3733 // CHECK-ERROR: error: invalid operand for instruction
   3734 // CHECK-ERROR:        saddlv s0, v1.2s
   3735 // CHECK-ERROR:                      ^
   3736 // CHECK-ERROR: error: invalid operand for instruction
   3737 // CHECK-ERROR:        saddlv s0, v1.4s
   3738 // CHECK-ERROR:                      ^
   3739 // CHECK-ERROR: error: invalid operand for instruction
   3740 // CHECK-ERROR:        saddlv d0, v1.2s
   3741 // CHECK-ERROR:                   ^
   3742 
   3743         uaddlv b0, v1.8b
   3744         uaddlv b0, v1.16b
   3745         uaddlv h0, v1.4h
   3746         uaddlv h0, v1.8h
   3747         uaddlv s0, v1.2s
   3748         uaddlv s0, v1.4s
   3749         uaddlv d0, v1.2s
   3750 
   3751 // CHECK-ERROR: error: invalid operand for instruction
   3752 // CHECK-ERROR:        uaddlv b0, v1.8b
   3753 // CHECK-ERROR:               ^
   3754 // CHECK-ERROR: error: invalid operand for instruction
   3755 // CHECK-ERROR:        uaddlv b0, v1.16b
   3756 // CHECK-ERROR:               ^
   3757 // CHECK-ERROR: error: invalid operand for instruction
   3758 // CHECK-ERROR:        uaddlv h0, v1.4h
   3759 // CHECK-ERROR:                      ^
   3760 // CHECK-ERROR: error: invalid operand for instruction
   3761 // CHECK-ERROR:        uaddlv h0, v1.8h
   3762 // CHECK-ERROR:                      ^
   3763 // CHECK-ERROR: error: invalid operand for instruction
   3764 // CHECK-ERROR:        uaddlv s0, v1.2s
   3765 // CHECK-ERROR:                      ^
   3766 // CHECK-ERROR: error: invalid operand for instruction
   3767 // CHECK-ERROR:        uaddlv s0, v1.4s
   3768 // CHECK-ERROR:                      ^
   3769 // CHECK-ERROR: error: invalid operand for instruction
   3770 // CHECK-ERROR:        uaddlv d0, v1.2s
   3771 // CHECK-ERROR:                   ^
   3772 
   3773         smaxv s0, v1.2s
   3774         sminv s0, v1.2s
   3775         umaxv s0, v1.2s
   3776         uminv s0, v1.2s
   3777         addv s0, v1.2s
   3778 
   3779 // CHECK-ERROR: error: invalid operand for instruction
   3780 // CHECK-ERROR:        smaxv s0, v1.2s
   3781 // CHECK-ERROR:                  ^
   3782 // CHECK-ERROR: error: invalid operand for instruction
   3783 // CHECK-ERROR:        sminv s0, v1.2s
   3784 // CHECK-ERROR:                  ^
   3785 // CHECK-ERROR: error: invalid operand for instruction
   3786 // CHECK-ERROR:        umaxv s0, v1.2s
   3787 // CHECK-ERROR:                  ^
   3788 // CHECK-ERROR: error: invalid operand for instruction
   3789 // CHECK-ERROR:        uminv s0, v1.2s
   3790 // CHECK-ERROR:                  ^
   3791 // CHECK-ERROR: error: invalid operand for instruction
   3792 // CHECK-ERROR:        addv s0, v1.2s
   3793 // CHECK-ERROR:                 ^
   3794 
   3795         smaxv d0, v1.2d
   3796         sminv d0, v1.2d
   3797         umaxv d0, v1.2d
   3798         uminv d0, v1.2d
   3799         addv d0, v1.2d
   3800 
   3801 // CHECK-ERROR: error: invalid operand for instruction
   3802 // CHECK-ERROR:        smaxv d0, v1.2d
   3803 // CHECK-ERROR:              ^
   3804 // CHECK-ERROR: error: invalid operand for instruction
   3805 // CHECK-ERROR:        sminv d0, v1.2d
   3806 // CHECK-ERROR:              ^
   3807 // CHECK-ERROR: error: invalid operand for instruction
   3808 // CHECK-ERROR:        umaxv d0, v1.2d
   3809 // CHECK-ERROR:              ^
   3810 // CHECK-ERROR: error: invalid operand for instruction
   3811 // CHECK-ERROR:        uminv d0, v1.2d
   3812 // CHECK-ERROR:              ^
   3813 // CHECK-ERROR: error: invalid operand for instruction
   3814 // CHECK-ERROR:        addv d0, v1.2d
   3815 // CHECK-ERROR:             ^
   3816 
   3817         fmaxnmv b0, v1.16b
   3818         fminnmv b0, v1.16b
   3819         fmaxv b0, v1.16b
   3820         fminv b0, v1.16b
   3821 
   3822 // CHECK-ERROR: error: invalid operand for instruction
   3823 // CHECK-ERROR:        fmaxnmv b0, v1.16b
   3824 // CHECK-ERROR:                ^
   3825 // CHECK-ERROR: error: invalid operand for instruction
   3826 // CHECK-ERROR:        fminnmv b0, v1.16b
   3827 // CHECK-ERROR:                ^
   3828 // CHECK-ERROR: error: invalid operand for instruction
   3829 // CHECK-ERROR:        fmaxv b0, v1.16b
   3830 // CHECK-ERROR:              ^
   3831 // CHECK-ERROR: error: invalid operand for instruction
   3832 // CHECK-ERROR:        fminv b0, v1.16b
   3833 // CHECK-ERROR:              ^
   3834 
   3835         fmaxnmv h0, v1.8h
   3836         fminnmv h0, v1.8h
   3837         fmaxv h0, v1.8h
   3838         fminv h0, v1.8h
   3839 
   3840 // CHECK-ERROR: error: invalid operand for instruction
   3841 // CHECK-ERROR:        fmaxnmv h0, v1.8h
   3842 // CHECK-ERROR:                ^
   3843 // CHECK-ERROR: error: invalid operand for instruction
   3844 // CHECK-ERROR:        fminnmv h0, v1.8h
   3845 // CHECK-ERROR:                ^
   3846 // CHECK-ERROR: error: invalid operand for instruction
   3847 // CHECK-ERROR:        fmaxv h0, v1.8h
   3848 // CHECK-ERROR:              ^
   3849 // CHECK-ERROR: error: invalid operand for instruction
   3850 // CHECK-ERROR:        fminv h0, v1.8h
   3851 // CHECK-ERROR:              ^
   3852 
   3853         fmaxnmv d0, v1.2d
   3854         fminnmv d0, v1.2d
   3855         fmaxv d0, v1.2d
   3856         fminv d0, v1.2d
   3857 
   3858 // CHECK-ERROR: error: invalid operand for instruction
   3859 // CHECK-ERROR:        fmaxnmv d0, v1.2d
   3860 // CHECK-ERROR:                ^
   3861 // CHECK-ERROR: error: invalid operand for instruction
   3862 // CHECK-ERROR:        fminnmv d0, v1.2d
   3863 // CHECK-ERROR:                ^
   3864 // CHECK-ERROR: error: invalid operand for instruction
   3865 // CHECK-ERROR:        fmaxv d0, v1.2d
   3866 // CHECK-ERROR:              ^
   3867 // CHECK-ERROR: error: invalid operand for instruction
   3868 // CHECK-ERROR:        fminv d0, v1.2d
   3869 // CHECK-ERROR:              ^
   3870 
   3871 //----------------------------------------------------------------------
   3872 // Floating-point Multiply Extended
   3873 //----------------------------------------------------------------------
   3874 
   3875     fmulx s20, h22, s15
   3876     fmulx d23, d11, s1
   3877 
   3878 // CHECK-ERROR: error: invalid operand for instruction
   3879 // CHECK-ERROR:          fmulx s20, h22, s15
   3880 // CHECK-ERROR:                     ^
   3881 // CHECK-ERROR: error: invalid operand for instruction
   3882 // CHECK-ERROR:          fmulx d23, d11, s1
   3883 // CHECK-ERROR:                          ^
   3884 
   3885 //----------------------------------------------------------------------
   3886 // Floating-point Reciprocal Step
   3887 //----------------------------------------------------------------------
   3888 
   3889     frecps s21, s16, h13
   3890     frecps d22, s30, d21
   3891 
   3892 // CHECK-ERROR: error: invalid operand for instruction
   3893 // CHECK-ERROR:          frecps s21, s16, h13
   3894 // CHECK-ERROR:                           ^
   3895 // CHECK-ERROR: error: invalid operand for instruction
   3896 // CHECK-ERROR:          frecps d22, s30, d21
   3897 // CHECK-ERROR:                      ^
   3898 
   3899 //----------------------------------------------------------------------
   3900 // Floating-point Reciprocal Square Root Step
   3901 //----------------------------------------------------------------------
   3902 
   3903     frsqrts s21, h5, s12
   3904     frsqrts d8, s22, d18
   3905 
   3906 // CHECK-ERROR: error: invalid operand for instruction
   3907 // CHECK-ERROR:          frsqrts s21, h5, s12
   3908 // CHECK-ERROR:                       ^
   3909 // CHECK-ERROR: error: invalid operand for instruction
   3910 // CHECK-ERROR:          frsqrts d8, s22, d18
   3911 // CHECK-ERROR:                      ^
   3912 
   3913 //----------------------------------------------------------------------
   3914 // Vector load/store multiple N-element structure (class SIMD lselem)
   3915 //----------------------------------------------------------------------
   3916          ld1 {x3}, [x2]
   3917          ld1 {v4}, [x0]
   3918          ld1 {v32.16b}, [x0]
   3919          ld1 {v15.8h}, [x32]
   3920 // CHECK-ERROR: error: vector register expected
   3921 // CHECK-ERROR:        ld1 {x3}, [x2]
   3922 // CHECK-ERROR:             ^
   3923 // CHECK-ERROR: error: invalid operand for instruction
   3924 // CHECK-ERROR:        ld1 {v4}, [x0]
   3925 // CHECK-ERROR:             ^
   3926 // CHECK-ERROR: error: vector register expected
   3927 // CHECK-ERROR:        ld1 {v32.16b}, [x0]
   3928 // CHECK-ERROR:             ^
   3929 // CHECK-ERROR: error: invalid operand for instruction
   3930 // CHECK-ERROR:        ld1 {v15.8h}, [x32]
   3931 // CHECK-ERROR:                       ^
   3932 
   3933          ld1 {v0.16b, v2.16b}, [x0]
   3934          ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
   3935          ld1 v0.8b, v1.8b}, [x0]
   3936          ld1 {v0.8h-v4.8h}, [x0]
   3937          ld1 {v1.8h-v1.8h}, [x0]
   3938          ld1 {v15.8h-v17.4h}, [x15]
   3939          ld1 {v0.8b-v2.8b, [x0]
   3940 // CHECK-ERROR: error: registers must be sequential
   3941 // CHECK-ERROR:        ld1 {v0.16b, v2.16b}, [x0]
   3942 // CHECK-ERROR:                     ^
   3943 // CHECK-ERROR: error: invalid number of vectors
   3944 // CHECK-ERROR:        ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
   3945 // CHECK-ERROR:                                         ^
   3946 // CHECK-ERROR: error: unexpected token in argument list
   3947 // CHECK-ERROR:        ld1 v0.8b, v1.8b}, [x0]
   3948 // CHECK-ERROR:            ^
   3949 // CHECK-ERROR: error: invalid number of vectors
   3950 // CHECK-ERROR:        ld1 {v0.8h-v4.8h}, [x0]
   3951 // CHECK-ERROR:                   ^
   3952 // CHECK-ERROR: error: invalid number of vectors
   3953 // CHECK-ERROR:        ld1 {v1.8h-v1.8h}, [x0]
   3954 // CHECK-ERROR:                   ^
   3955 // CHECK-ERROR: error: mismatched register size suffix
   3956 // CHECK-ERROR:        ld1 {v15.8h-v17.4h}, [x15]
   3957 // CHECK-ERROR:                        ^
   3958 // CHECK-ERROR: error: '}' expected
   3959 // CHECK-ERROR:        ld1 {v0.8b-v2.8b, [x0]
   3960 // CHECK-ERROR:                        ^
   3961 
   3962          ld2 {v15.8h, v16.4h}, [x15]
   3963          ld2 {v0.8b, v2.8b}, [x0]
   3964          ld2 {v15.4h, v16.4h, v17.4h}, [x32]
   3965          ld2 {v15.8h-v16.4h}, [x15]
   3966          ld2 {v0.2d-v2.2d}, [x0]
   3967 // CHECK-ERROR: error: mismatched register size suffix
   3968 // CHECK-ERROR:        ld2 {v15.8h, v16.4h}, [x15]
   3969 // CHECK-ERROR:                     ^
   3970 // CHECK-ERROR: error: registers must be sequential
   3971 // CHECK-ERROR:        ld2 {v0.8b, v2.8b}, [x0]
   3972 // CHECK-ERROR:                    ^
   3973 // CHECK-ERROR:        ld2 {v15.4h, v16.4h, v17.4h}, [x32]
   3974 // CHECK-ERROR:            ^
   3975 // CHECK-ERROR: error: mismatched register size suffix
   3976 // CHECK-ERROR:        ld2 {v15.8h-v16.4h}, [x15]
   3977 // CHECK-ERROR:                        ^
   3978 // CHECK-ERROR: error: invalid operand for instruction
   3979 // CHECK-ERROR:        ld2 {v0.2d-v2.2d}, [x0]
   3980 // CHECK-ERROR:            ^
   3981 
   3982          ld3 {v15.8h, v16.8h, v17.4h}, [x15]
   3983          ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
   3984          ld3 {v0.8b, v2.8b, v3.8b}, [x0]
   3985          ld3 {v15.8h-v17.4h}, [x15]
   3986          ld3 {v31.4s-v2.4s}, [sp]
   3987 // CHECK-ERROR: error: mismatched register size suffix
   3988 // CHECK-ERROR:        ld3 {v15.8h, v16.8h, v17.4h}, [x15]
   3989 // CHECK-ERROR:                             ^
   3990 // CHECK-ERROR: error: mismatched register size suffix
   3991 // CHECK-ERROR:        ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
   3992 // CHECK-ERROR:                    ^
   3993 // CHECK-ERROR: error: registers must be sequential
   3994 // CHECK-ERROR:        ld3 {v0.8b, v2.8b, v3.8b}, [x0]
   3995 // CHECK-ERROR:                    ^
   3996 // CHECK-ERROR: error: mismatched register size suffix
   3997 // CHECK-ERROR:        ld3 {v15.8h-v17.4h}, [x15]
   3998 // CHECK-ERROR:                        ^
   3999 // CHECK-ERROR: error: invalid operand for instruction
   4000 // CHECK-ERROR:        ld3 {v31.4s-v2.4s}, [sp]
   4001 // CHECK-ERROR:            ^
   4002 
   4003          ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
   4004          ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
   4005          ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
   4006          ld4 {v15.8h-v18.4h}, [x15]
   4007          ld4 {v31.2s-v1.2s}, [x31]
   4008 // CHECK-ERROR: error: mismatched register size suffix
   4009 // CHECK-ERROR:        ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
   4010 // CHECK-ERROR:                             ^
   4011 // CHECK-ERROR: error: registers must be sequential
   4012 // CHECK-ERROR:        ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
   4013 // CHECK-ERROR:                    ^
   4014 // CHECK-ERROR: error: invalid number of vectors
   4015 // CHECK-ERROR:        ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
   4016 // CHECK-ERROR:                                             ^
   4017 // CHECK-ERROR: error: mismatched register size suffix
   4018 // CHECK-ERROR:        ld4 {v15.8h-v18.4h}, [x15]
   4019 // CHECK-ERROR:                        ^
   4020 // CHECK-ERROR: error: invalid operand for instruction
   4021 // CHECK-ERROR:        ld4 {v31.2s-v1.2s}, [x31]
   4022 // CHECK-ERROR:            ^
   4023 
   4024          st1 {x3}, [x2]
   4025          st1 {v4}, [x0]
   4026          st1 {v32.16b}, [x0]
   4027          st1 {v15.8h}, [x32]
   4028 // CHECK-ERROR: error: vector register expected
   4029 // CHECK-ERROR:        st1 {x3}, [x2]
   4030 // CHECK-ERROR:             ^
   4031 // CHECK-ERROR: error: invalid operand for instruction
   4032 // CHECK-ERROR:        st1 {v4}, [x0]
   4033 // CHECK-ERROR:             ^
   4034 // CHECK-ERROR: error: vector register expected
   4035 // CHECK-ERROR:        st1 {v32.16b}, [x0]
   4036 // CHECK-ERROR:             ^
   4037 // CHECK-ERROR: error: invalid operand for instruction
   4038 // CHECK-ERROR:        st1 {v15.8h}, [x32]
   4039 // CHECK-ERROR:                       ^
   4040 
   4041          st1 {v0.16b, v2.16b}, [x0]
   4042          st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
   4043          st1 v0.8b, v1.8b}, [x0]
   4044          st1 {v0.8h-v4.8h}, [x0]
   4045          st1 {v1.8h-v1.8h}, [x0]
   4046          st1 {v15.8h-v17.4h}, [x15]
   4047          st1 {v0.8b-v2.8b, [x0]
   4048 // CHECK-ERROR: error: registers must be sequential
   4049 // CHECK-ERROR:        st1 {v0.16b, v2.16b}, [x0]
   4050 // CHECK-ERROR:                     ^
   4051 // CHECK-ERROR: error: invalid number of vectors
   4052 // CHECK-ERROR:        st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
   4053 // CHECK-ERROR:                                         ^
   4054 // CHECK-ERROR: error: unexpected token in argument list
   4055 // CHECK-ERROR:        st1 v0.8b, v1.8b}, [x0]
   4056 // CHECK-ERROR:            ^
   4057 // CHECK-ERROR: error: invalid number of vectors
   4058 // CHECK-ERROR:        st1 {v0.8h-v4.8h}, [x0]
   4059 // CHECK-ERROR:                   ^
   4060 // CHECK-ERROR: error: invalid number of vectors
   4061 // CHECK-ERROR:        st1 {v1.8h-v1.8h}, [x0]
   4062 // CHECK-ERROR:                   ^
   4063 // CHECK-ERROR: error: mismatched register size suffix
   4064 // CHECK-ERROR:        st1 {v15.8h-v17.4h}, [x15]
   4065 // CHECK-ERROR:                        ^
   4066 // CHECK-ERROR: error: '}' expected
   4067 // CHECK-ERROR:        st1 {v0.8b-v2.8b, [x0]
   4068 // CHECK-ERROR:                        ^
   4069 
   4070          st2 {v15.8h, v16.4h}, [x15]
   4071          st2 {v0.8b, v2.8b}, [x0]
   4072          st2 {v15.4h, v16.4h, v17.4h}, [x30]
   4073          st2 {v15.8h-v16.4h}, [x15]
   4074          st2 {v0.2d-v2.2d}, [x0]
   4075 // CHECK-ERROR: error: mismatched register size suffix
   4076 // CHECK-ERROR:        st2 {v15.8h, v16.4h}, [x15]
   4077 // CHECK-ERROR:                     ^
   4078 // CHECK-ERROR: error: registers must be sequential
   4079 // CHECK-ERROR:        st2 {v0.8b, v2.8b}, [x0]
   4080 // CHECK-ERROR:                    ^
   4081 // CHECK-ERROR: error: invalid operand for instruction
   4082 // CHECK-ERROR:        st2 {v15.4h, v16.4h, v17.4h}, [x30]
   4083 // CHECK-ERROR:            ^
   4084 // CHECK-ERROR: error: mismatched register size suffix
   4085 // CHECK-ERROR:        st2 {v15.8h-v16.4h}, [x15]
   4086 // CHECK-ERROR:                        ^
   4087 // CHECK-ERROR: error: invalid operand for instruction
   4088 // CHECK-ERROR:        st2 {v0.2d-v2.2d}, [x0]
   4089 // CHECK-ERROR:            ^
   4090 
   4091          st3 {v15.8h, v16.8h, v17.4h}, [x15]
   4092          st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
   4093          st3 {v0.8b, v2.8b, v3.8b}, [x0]
   4094          st3 {v15.8h-v17.4h}, [x15]
   4095          st3 {v31.4s-v2.4s}, [sp]
   4096 // CHECK-ERROR: error: mismatched register size suffix
   4097 // CHECK-ERROR:        st3 {v15.8h, v16.8h, v17.4h}, [x15]
   4098 // CHECK-ERROR:                             ^
   4099 // CHECK-ERROR: error: mismatched register size suffix
   4100 // CHECK-ERROR:        st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
   4101 // CHECK-ERROR:                    ^
   4102 // CHECK-ERROR: error: registers must be sequential
   4103 // CHECK-ERROR:        st3 {v0.8b, v2.8b, v3.8b}, [x0]
   4104 // CHECK-ERROR:                    ^
   4105 // CHECK-ERROR: error: mismatched register size suffix
   4106 // CHECK-ERROR:        st3 {v15.8h-v17.4h}, [x15]
   4107 // CHECK-ERROR:                        ^
   4108 // CHECK-ERROR: error: invalid operand for instruction
   4109 // CHECK-ERROR:        st3 {v31.4s-v2.4s}, [sp]
   4110 // CHECK-ERROR:            ^
   4111 
   4112          st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
   4113          st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
   4114          st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
   4115          st4 {v15.8h-v18.4h}, [x15]
   4116          st4 {v31.2s-v1.2s}, [x31]
   4117 // CHECK-ERROR: error: mismatched register size suffix
   4118 // CHECK-ERROR:        st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
   4119 // CHECK-ERROR:                             ^
   4120 // CHECK-ERROR: error: registers must be sequential
   4121 // CHECK-ERROR:        st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
   4122 // CHECK-ERROR:                    ^
   4123 // CHECK-ERROR: error: invalid number of vectors
   4124 // CHECK-ERROR:        st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
   4125 // CHECK-ERROR:                                             ^
   4126 // CHECK-ERROR: error: mismatched register size suffix
   4127 // CHECK-ERROR:        st4 {v15.8h-v18.4h}, [x15]
   4128 // CHECK-ERROR:                        ^
   4129 // CHECK-ERROR: error: invalid operand for instruction
   4130 // CHECK-ERROR:        st4 {v31.2s-v1.2s}, [x31]
   4131 // CHECK-ERROR:            ^
   4132 
   4133 //----------------------------------------------------------------------
   4134 // Vector post-index load/store multiple N-element structure
   4135 // (class SIMD lselem-post)
   4136 //----------------------------------------------------------------------
   4137          ld1 {v0.16b}, [x0], #8
   4138          ld1 {v0.8h, v1.16h}, [x0], x1
   4139          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
   4140 // CHECK-ERROR: error: invalid operand for instruction
   4141 // CHECK-ERROR:          ld1 {v0.16b}, [x0], #8
   4142 // CHECK-ERROR:                              ^
   4143 // CHECK-ERROR: error: invalid vector kind qualifier
   4144 // CHECK-ERROR:          ld1 {v0.8h, v1.16h}, [x0], x1
   4145 // CHECK-ERROR:                      ^
   4146 // CHECK-ERROR:  error: invalid operand for instruction
   4147 // CHECK-ERROR:          ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
   4148 // CHECK-ERROR:                                                  ^
   4149 
   4150          ld2 {v0.16b, v1.16b}, [x0], #16
   4151          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
   4152          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
   4153 // CHECK-ERROR:  error: invalid operand for instruction
   4154 // CHECK-ERROR:          ld2 {v0.16b, v1.16b}, [x0], #16
   4155 // CHECK-ERROR:                                      ^
   4156 // CHECK-ERROR:  error: invalid operand for instruction
   4157 // CHECK-ERROR:          ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48
   4158 // CHECK-ERROR:                                           ^
   4159 // CHECK-ERROR: error: mismatched register size suffix
   4160 // CHECK-ERROR:          ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
   4161 // CHECK-ERROR:                                     ^
   4162 
   4163          st1 {v0.16b}, [x0], #8
   4164          st1 {v0.8h, v1.16h}, [x0], x1
   4165          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
   4166 // CHECK-ERROR:  error: invalid operand for instruction
   4167 // CHECK-ERROR:          st1 {v0.16b}, [x0], #8
   4168 // CHECK-ERROR:                              ^
   4169 // CHECK-ERROR: error: invalid vector kind qualifier
   4170 // CHECK-ERROR:          st1 {v0.8h, v1.16h}, [x0], x1
   4171 // CHECK-ERROR:                      ^
   4172 // CHECK-ERROR:  error: invalid operand for instruction
   4173 // CHECK-ERROR:          st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24
   4174                                                  ^
   4175 
   4176          st2 {v0.16b, v1.16b}, [x0], #16
   4177          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
   4178          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
   4179 // CHECK-ERROR:  error: invalid operand for instruction
   4180 // CHECK-ERROR:          st2 {v0.16b, v1.16b}, [x0], #16
   4181 // CHECK-ERROR:                                      ^
   4182 // CHECK-ERROR:  error: invalid operand for instruction
   4183 // CHECK-ERROR:          st3 {v5.2s, v6.2s, v7.2s}, [x1], #48
   4184 // CHECK-ERROR:                                           ^
   4185 // CHECK-ERROR: error: mismatched register size suffix
   4186 // CHECK-ERROR:          st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1
   4187 // CHECK-ERROR:                                     ^
   4188 
   4189 //------------------------------------------------------------------------------
   4190 // Load single N-element structure to all lanes of N consecutive
   4191 // registers (N = 1,2,3,4)
   4192 //------------------------------------------------------------------------------
   4193          ld1r {x1}, [x0]
   4194          ld2r {v31.4s, v0.2s}, [sp]
   4195          ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
   4196          ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
   4197 // CHECK-ERROR: error: vector register expected
   4198 // CHECK-ERROR: ld1r {x1}, [x0]
   4199 // CHECK-ERROR:       ^
   4200 // CHECK-ERROR: error: mismatched register size suffix
   4201 // CHECK-ERROR: ld2r {v31.4s, v0.2s}, [sp]
   4202 // CHECK-ERROR:               ^
   4203 // CHECK-ERROR: error: invalid operand for instruction
   4204 // CHECK-ERROR: ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0]
   4205 // CHECK-ERROR:      ^
   4206 // CHECK-ERROR: error: mismatched register size suffix
   4207 // CHECK-ERROR: ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp]
   4208 // CHECK-ERROR:                      ^
   4209 
   4210 //------------------------------------------------------------------------------
   4211 // Load/Store single N-element structure to/from one lane of N consecutive
   4212 // registers (N = 1, 2,3,4)
   4213 //------------------------------------------------------------------------------
   4214          ld1 {v0.b}[16], [x0]
   4215          ld2 {v15.h, v16.h}[8], [x15]
   4216          ld3 {v31.s, v0.s, v1.s}[-1], [sp]
   4217          ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
   4218 // CHECK-ERROR: vector lane must be an integer in range
   4219 // CHECK-ERROR: ld1 {v0.b}[16], [x0]
   4220 // CHECK-ERROR:            ^
   4221 // CHECK-ERROR: vector lane must be an integer in range
   4222 // CHECK-ERROR: ld2 {v15.h, v16.h}[8], [x15]
   4223 // CHECK-ERROR:                    ^
   4224 // CHECK-ERROR: error: vector lane must be an integer in range
   4225 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.s}[-1], [sp]
   4226 // CHECK-ERROR:                         ^
   4227 // CHECK-ERROR: vector lane must be an integer in range
   4228 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
   4229 // CHECK-ERROR:                              ^
   4230 
   4231          st1 {v0.d}[16], [x0]
   4232          st2 {v31.s, v0.s}[3], [8]
   4233          st3 {v15.h, v16.h, v17.h}[-1], [x15]
   4234          st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
   4235 // CHECK-ERROR: vector lane must be an integer in range
   4236 // CHECK-ERROR: st1 {v0.d}[16], [x0]
   4237 // CHECK-ERROR:            ^
   4238 // CHECK-ERROR: error: invalid operand for instruction
   4239 // CHECK-ERROR: st2 {v31.s, v0.s}[3], [8]
   4240 // CHECK-ERROR:                        ^
   4241 // CHECK-ERROR: error: vector lane must be an integer in range
   4242 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[-1], [x15]
   4243 // CHECK-ERROR:                           ^
   4244 // CHECK-ERROR: vector lane must be an integer in range
   4245 // CHECK-ERROR: st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0]
   4246 // CHECK-ERROR:                              ^
   4247 
   4248 //------------------------------------------------------------------------------
   4249 // Post-index of load single N-element structure to all lanes of N consecutive
   4250 // registers (N = 1,2,3,4)
   4251 //------------------------------------------------------------------------------
   4252          ld1r {v15.8h}, [x15], #5
   4253          ld2r {v0.2d, v1.2d}, [x0], #7
   4254          ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
   4255          ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
   4256 // CHECK-ERROR: error: invalid operand for instruction
   4257 // CHECK-ERROR: ld1r {v15.8h}, [x15], #5
   4258 // CHECK-ERROR:                       ^
   4259 // CHECK-ERROR: error: invalid operand for instruction
   4260 // CHECK-ERROR: ld2r {v0.2d, v1.2d}, [x0], #7
   4261 // CHECK-ERROR:                            ^
   4262 // CHECK-ERROR: error: invalid operand for instruction
   4263 // CHECK-ERROR: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1
   4264 // CHECK-ERROR:                                       ^
   4265 // CHECK-ERROR: error: invalid operand for instruction
   4266 // CHECK-ERROR: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp
   4267 // CHECK-ERROR:                                           ^
   4268 
   4269 //------------------------------------------------------------------------------
   4270 // Post-index of Load/Store single N-element structure to/from one lane of N
   4271 // consecutive registers (N = 1, 2,3,4)
   4272 //------------------------------------------------------------------------------
   4273          ld1 {v0.b}[0], [x0], #2
   4274          ld2 {v15.h, v16.h}[0], [x15], #3
   4275          ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
   4276          ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
   4277 // CHECK-ERROR: error: invalid operand for instruction
   4278 // CHECK-ERROR: ld1 {v0.b}[0], [x0], #2
   4279 // CHECK-ERROR:                      ^
   4280 // CHECK-ERROR: error: invalid operand for instruction
   4281 // CHECK-ERROR: ld2 {v15.h, v16.h}[0], [x15], #3
   4282 // CHECK-ERROR:                               ^
   4283 // CHECK-ERROR: error: mismatched register size suffix
   4284 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.d}[0], [sp], x9
   4285 // CHECK-ERROR:                      ^
   4286 // CHECK-ERROR: error: invalid operand for instruction
   4287 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24
   4288 // CHECK-ERROR:                                        ^
   4289 
   4290          st1 {v0.d}[0], [x0], #7
   4291          st2 {v31.s, v0.s}[0], [sp], #6
   4292          st3 {v15.h, v16.h, v17.h}[0], [x15], #8
   4293          st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
   4294 // CHECK-ERROR: error: invalid operand for instruction
   4295 // CHECK-ERROR: st1 {v0.d}[0], [x0], #7
   4296 // CHECK-ERROR:                      ^
   4297 // CHECK-ERROR: error: invalid operand for instruction
   4298 // CHECK-ERROR: st2 {v31.s, v0.s}[0], [sp], #6
   4299 // CHECK-ERROR:                             ^
   4300 // CHECK-ERROR: error: invalid operand for instruction
   4301 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[0], [x15], #8
   4302 // CHECK-ERROR:                                      ^
   4303 // CHECK-ERROR: error: invalid operand for instruction
   4304 // CHECK-ERROR: st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1
   4305 // CHECK-ERROR:                                        ^
   4306 
   4307 
   4308          ins v2.b[16], w1
   4309          ins v7.h[8], w14
   4310          ins v20.s[5], w30
   4311          ins v1.d[2], x7
   4312          ins v2.b[3], b1
   4313          ins v7.h[2], h14
   4314          ins v20.s[1], s30
   4315          ins v1.d[0], d7
   4316 
   4317 // CHECK-ERROR: vector lane must be an integer in range
   4318 // CHECK-ERROR:         ins v2.b[16], w1
   4319 // CHECK-ERROR:                  ^
   4320 // CHECK-ERROR: vector lane must be an integer in range
   4321 // CHECK-ERROR:         ins v7.h[8], w14
   4322 // CHECK-ERROR:                  ^
   4323 // CHECK-ERROR: vector lane must be an integer in range
   4324 // CHECK-ERROR:         ins v20.s[5], w30
   4325 // CHECK-ERROR:                   ^
   4326 // CHECK-ERROR: vector lane must be an integer in range
   4327 // CHECK-ERROR:         ins v1.d[2], x7
   4328 // CHECK-ERROR:                  ^
   4329 // CHECK-ERROR: error: invalid operand for instruction
   4330 // CHECK-ERROR:         ins v2.b[3], b1
   4331 // CHECK-ERROR:                      ^
   4332 // CHECK-ERROR: error: invalid operand for instruction
   4333 // CHECK-ERROR:         ins v7.h[2], h14
   4334 // CHECK-ERROR:                      ^
   4335 // CHECK-ERROR: error: invalid operand for instruction
   4336 // CHECK-ERROR:         ins v20.s[1], s30
   4337 // CHECK-ERROR:                       ^
   4338 // CHECK-ERROR: error: invalid operand for instruction
   4339 // CHECK-ERROR:         ins v1.d[0], d7
   4340 // CHECK-ERROR:                      ^
   4341 
   4342          smov w1, v0.b[16]
   4343          smov w14, v6.h[8]
   4344          smov x1, v0.b[16]
   4345          smov x14, v6.h[8]
   4346          smov x20, v9.s[5]
   4347          smov w1, v0.d[0]
   4348          smov w14, v6.d[1]
   4349          smov x1, v0.d[0]
   4350          smov x14, v6.d[1]
   4351          smov x20, v9.d[0]
   4352 
   4353 // CHECK-ERROR: vector lane must be an integer in range
   4354 // CHECK-ERROR         smov w1, v0.b[16]
   4355 // CHECK-ERROR                       ^
   4356 // CHECK-ERROR: vector lane must be an integer in range
   4357 // CHECK-ERROR         smov w14, v6.h[8]
   4358 // CHECK-ERROR                        ^
   4359 // CHECK-ERROR: vector lane must be an integer in range
   4360 // CHECK-ERROR         smov x1, v0.b[16]
   4361 // CHECK-ERROR                       ^
   4362 // CHECK-ERROR: vector lane must be an integer in range
   4363 // CHECK-ERROR         smov x14, v6.h[8]
   4364 // CHECK-ERROR                        ^
   4365 // CHECK-ERROR: vector lane must be an integer in range
   4366 // CHECK-ERROR         smov x20, v9.s[5]
   4367 // CHECK-ERROR                        ^
   4368 // CHECK-ERROR error: invalid operand for instruction
   4369 // CHECK-ERROR         smov w1, v0.d[0]
   4370 // CHECK-ERROR                     ^
   4371 // CHECK-ERROR error: invalid operand for instruction
   4372 // CHECK-ERROR         smov w14, v6.d[1]
   4373 // CHECK-ERROR                      ^
   4374 // CHECK-ERROR error: invalid operand for instruction
   4375 // CHECK-ERROR         smov x1, v0.d[0]
   4376 // CHECK-ERROR                     ^
   4377 // CHECK-ERROR error: invalid operand for instruction
   4378 // CHECK-ERROR         smov x14, v6.d[1]
   4379 // CHECK-ERROR                      ^
   4380 // CHECK-ERROR error: invalid operand for instruction
   4381 // CHECK-ERROR         smov x20, v9.d[0]
   4382 // CHECK-ERROR                      ^
   4383 
   4384          umov w1, v0.b[16]
   4385          umov w14, v6.h[8]
   4386          umov w20, v9.s[5]
   4387          umov x7, v18.d[3]
   4388          umov w1, v0.d[0]
   4389          umov s20, v9.s[2]
   4390          umov d7, v18.d[1]
   4391 
   4392 // CHECK-ERROR: vector lane must be an integer in range
   4393 // CHECK-ERROR         umov w1, v0.b[16]
   4394 // CHECK-ERROR                       ^
   4395 // CHECK-ERROR: vector lane must be an integer in range
   4396 // CHECK-ERROR         umov w14, v6.h[8]
   4397 // CHECK-ERROR                        ^
   4398 // CHECK-ERROR: vector lane must be an integer in range
   4399 // CHECK-ERROR         umov w20, v9.s[5]
   4400 // CHECK-ERROR                        ^
   4401 // CHECK-ERROR: vector lane must be an integer in range
   4402 // CHECK-ERROR         umov x7, v18.d[3]
   4403 // CHECK-ERROR                        ^
   4404 // CHECK-ERROR error: invalid operand for instruction
   4405 // CHECK-ERROR         umov w1, v0.d[0]
   4406 // CHECK-ERROR                     ^
   4407 // CHECK-ERROR error: invalid operand for instruction
   4408 // CHECK-ERROR         umov s20, v9.s[2]
   4409 // CHECK-ERROR              ^
   4410 // CHECK-ERROR error: invalid operand for instruction
   4411 // CHECK-ERROR         umov d7, v18.d[1]
   4412 // CHECK-ERROR              ^
   4413 
   4414          Ins v1.h[2], v3.b[6]
   4415          Ins v6.h[7], v7.s[2]
   4416          Ins v15.d[0], v22.s[2]
   4417          Ins v0.d[0], v4.b[1]
   4418 
   4419 // CHECK-ERROR error: invalid operand for instruction
   4420 // CHECK-ERROR         Ins v1.h[2], v3.b[6]
   4421 // CHECK-ERROR                         ^
   4422 // CHECK-ERROR error: invalid operand for instruction
   4423 // CHECK-ERROR         Ins v6.h[7], v7.s[2]
   4424 // CHECK-ERROR                         ^
   4425 // CHECK-ERROR error: invalid operand for instruction
   4426 // CHECK-ERROR         Ins v15.d[0], v22.s[2]
   4427 // CHECK-ERROR                           ^
   4428 // CHECK-ERROR error: invalid operand for instruction
   4429 // CHECK-ERROR         Ins v0.d[0], v4.b[1]
   4430 // CHECK-ERROR                         ^
   4431 
   4432          dup v1.8h, v2.b[2]
   4433          dup v11.4s, v7.h[7]
   4434          dup v17.2d, v20.s[0]
   4435          dup v1.16b, v2.h[2]
   4436          dup v11.8h, v7.s[3]
   4437          dup v17.4s, v20.d[0]
   4438          dup v5.2d, v1.b[1]
   4439 
   4440 // CHECK-ERROR error: invalid operand for instruction
   4441 // CHECK-ERROR         dup v1.8h, v2.b[2]
   4442 // CHECK-ERROR                       ^
   4443 // CHECK-ERROR error: invalid operand for instruction
   4444 // CHECK-ERROR         dup v11.4s, v7.h[7]
   4445 // CHECK-ERROR                        ^
   4446 // CHECK-ERROR error: invalid operand for instruction
   4447 // CHECK-ERROR         dup v17.2d, v20.s[0]
   4448 // CHECK-ERROR                         ^
   4449 // CHECK-ERROR error: invalid operand for instruction
   4450 // CHECK-ERROR         dup v1.16b, v2.h[2]
   4451 // CHECK-ERROR                        ^
   4452 // CHECK-ERROR invalid operand for instruction
   4453 // CHECK-ERROR         dup v11.8h, v7.s[3]
   4454 // CHECK-ERROR                        ^
   4455 // CHECK-ERROR invalid operand for instruction
   4456 // CHECK-ERROR         dup v17.4s, v20.d[0]
   4457 // CHECK-ERROR                         ^
   4458 // CHECK-ERROR invalid operand for instruction
   4459 // CHECK-ERROR         dup v5.2d, v1.b[1]
   4460 // CHECK-ERROR                       ^
   4461 
   4462          dup v1.8b, b1
   4463          dup v11.4h, h14
   4464          dup v17.2s, s30
   4465          dup v1.16b, d2
   4466          dup v11.8s, w16
   4467          dup v17.4d, w28
   4468          dup v5.2d, w0
   4469 
   4470 // CHECK-ERROR error: invalid operand for instruction
   4471 // CHECK-ERROR         dup v1.8b, b1
   4472 // CHECK-ERROR                    ^
   4473 // CHECK-ERROR error: invalid operand for instruction
   4474 // CHECK-ERROR         dup v11.4h, h14
   4475 // CHECK-ERROR                     ^
   4476 // CHECK-ERROR error: invalid operand for instruction
   4477 // CHECK-ERROR         dup v17.2s, s30
   4478 // CHECK-ERROR                     ^
   4479 // CHECK-ERROR error: invalid operand for instruction
   4480 // CHECK-ERROR         dup v1.16b, d2
   4481 // CHECK-ERROR                     ^
   4482 // CHECK-ERROR error: invalid operand for instruction
   4483 // CHECK-ERROR         dup v11.8s, w16
   4484 // CHECK-ERROR             ^
   4485 // CHECK-ERROR error: invalid operand for instruction
   4486 // CHECK-ERROR         dup v17.4d, w28
   4487 // CHECK-ERROR             ^
   4488 // CHECK-ERROR error: invalid operand for instruction
   4489 // CHECK-ERROR         dup v5.2d, w0
   4490 // CHECK-ERROR                    ^
   4491 
   4492 //----------------------------------------------------------------------
   4493 // Scalar Compare Bitwise Equal
   4494 //----------------------------------------------------------------------
   4495 
   4496          cmeq b20, d21, d22
   4497 
   4498 // CHECK-ERROR: error: invalid operand for instruction
   4499 // CHECK-ERROR:          cmeq b20, d21, d22
   4500 // CHECK-ERROR:               ^
   4501 
   4502 //----------------------------------------------------------------------
   4503 // Scalar Compare Bitwise Equal To Zero
   4504 //----------------------------------------------------------------------
   4505 
   4506          cmeq d20, b21, #0
   4507 
   4508 // CHECK-ERROR: error: invalid operand for instruction
   4509 // CHECK-ERROR:          cmeq d20, b21, #0
   4510 // CHECK-ERROR:                    ^
   4511 
   4512 //----------------------------------------------------------------------
   4513 // Scalar Compare Unsigned Higher Or Same
   4514 //----------------------------------------------------------------------
   4515 
   4516          cmhs b20, d21, d22
   4517 
   4518 // CHECK-ERROR: error: invalid operand for instruction
   4519 // CHECK-ERROR:          cmhs b20, d21, d22
   4520 // CHECK-ERROR:               ^
   4521 
   4522 
   4523 //----------------------------------------------------------------------
   4524 // Scalar Compare Signed Greather Than Or Equal
   4525 //----------------------------------------------------------------------
   4526 
   4527          cmge b20, d21, d22
   4528 
   4529 // CHECK-ERROR: error: invalid operand for instruction
   4530 // CHECK-ERROR:          cmge b20, d21, d22
   4531 // CHECK-ERROR:               ^
   4532 
   4533 //----------------------------------------------------------------------
   4534 // Scalar Compare Signed Greather Than Or Equal To Zero
   4535 //----------------------------------------------------------------------
   4536 
   4537          cmge d20, b21, #0
   4538 
   4539 // CHECK-ERROR: error: invalid operand for instruction
   4540 // CHECK-ERROR:          cmge d20, b21, #0
   4541 // CHECK-ERROR:                    ^
   4542 
   4543 //----------------------------------------------------------------------
   4544 // Scalar Compare Unsigned Higher
   4545 //----------------------------------------------------------------------
   4546 
   4547          cmhi b20, d21, d22
   4548 
   4549 // CHECK-ERROR: error: invalid operand for instruction
   4550 // CHECK-ERROR:          cmhi b20, d21, d22
   4551 // CHECK-ERROR:               ^
   4552 
   4553 //----------------------------------------------------------------------
   4554 // Scalar Compare Signed Greater Than
   4555 //----------------------------------------------------------------------
   4556 
   4557          cmgt b20, d21, d22
   4558 
   4559 // CHECK-ERROR: error: invalid operand for instruction
   4560 // CHECK-ERROR:          cmgt b20, d21, d22
   4561 // CHECK-ERROR:               ^
   4562 
   4563 //----------------------------------------------------------------------
   4564 // Scalar Compare Signed Greater Than Zero
   4565 //----------------------------------------------------------------------
   4566 
   4567          cmgt d20, b21, #0
   4568 
   4569 // CHECK-ERROR: error: invalid operand for instruction
   4570 // CHECK-ERROR:          cmgt d20, b21, #0
   4571 // CHECK-ERROR:                    ^
   4572 
   4573 //----------------------------------------------------------------------
   4574 // Scalar Compare Signed Less Than Or Equal To Zero
   4575 //----------------------------------------------------------------------
   4576 
   4577          cmle d20, b21, #0
   4578 
   4579 // CHECK-ERROR: error: invalid operand for instruction
   4580 // CHECK-ERROR:          cmle d20, b21, #0
   4581 // CHECK-ERROR:                    ^
   4582 
   4583 //----------------------------------------------------------------------
   4584 // Scalar Compare Less Than Zero
   4585 //----------------------------------------------------------------------
   4586 
   4587          cmlt d20, b21, #0
   4588 
   4589 // CHECK-ERROR: error: invalid operand for instruction
   4590 // CHECK-ERROR:          cmlt d20, b21, #0
   4591 // CHECK-ERROR:                    ^
   4592 
   4593 //----------------------------------------------------------------------
   4594 // Scalar Compare Bitwise Test Bits
   4595 //----------------------------------------------------------------------
   4596 
   4597          cmtst b20, d21, d22
   4598 
   4599 // CHECK-ERROR: error: invalid operand for instruction
   4600 // CHECK-ERROR:          cmtst b20, d21, d22
   4601 // CHECK-ERROR:                ^
   4602 
   4603 //----------------------------------------------------------------------
   4604 // Scalar Floating-point Compare Mask Equal
   4605 //----------------------------------------------------------------------
   4606 
   4607          fcmeq s10, h11, s12
   4608          fcmeq d20, s21, d22
   4609 
   4610 // CHECK-ERROR: error: invalid operand for instruction
   4611 // CHECK-ERROR:          fcmeq s10, h11, s12
   4612 // CHECK-ERROR:                     ^
   4613 // CHECK-ERROR: error: invalid operand for instruction
   4614 // CHECK-ERROR:          fcmeq d20, s21, d22
   4615 // CHECK-ERROR:                     ^
   4616 
   4617 //----------------------------------------------------------------------
   4618 // Scalar Floating-point Compare Mask Equal To Zero
   4619 //----------------------------------------------------------------------
   4620 
   4621          fcmeq h10, s11, #0.0
   4622          fcmeq d20, s21, #0.0
   4623 
   4624 // CHECK-ERROR: error: invalid operand for instruction
   4625 // CHECK-ERROR:          fcmeq h10, s11, #0.0
   4626 // CHECK-ERROR:                ^
   4627 // CHECK-ERROR: error: invalid operand for instruction
   4628 // CHECK-ERROR:          fcmeq d20, s21, #0.0
   4629 // CHECK-ERROR:                     ^
   4630 
   4631 //----------------------------------------------------------------------
   4632 // Scalar Floating-point Compare Mask Greater Than Or Equal
   4633 //----------------------------------------------------------------------
   4634 
   4635          fcmge s10, h11, s12
   4636          fcmge d20, s21, d22
   4637 
   4638 // CHECK-ERROR: error: invalid operand for instruction
   4639 // CHECK-ERROR:          fcmge s10, h11, s12
   4640 // CHECK-ERROR:                     ^
   4641 // CHECK-ERROR: error: invalid operand for instruction
   4642 // CHECK-ERROR:          fcmge d20, s21, d22
   4643 // CHECK-ERROR:                     ^
   4644 
   4645 //----------------------------------------------------------------------
   4646 // Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
   4647 //----------------------------------------------------------------------
   4648 
   4649          fcmge h10, s11, #0.0
   4650          fcmge d20, s21, #0.0
   4651 
   4652 // CHECK-ERROR: error: invalid operand for instruction
   4653 // CHECK-ERROR:          fcmge h10, s11, #0.0
   4654 // CHECK-ERROR:                ^
   4655 // CHECK-ERROR: error: invalid operand for instruction
   4656 // CHECK-ERROR:          fcmge d20, s21, #0.0
   4657 // CHECK-ERROR:                     ^
   4658 
   4659 //----------------------------------------------------------------------
   4660 // Scalar Floating-point Compare Mask Greather Than
   4661 //----------------------------------------------------------------------
   4662 
   4663          fcmgt s10, h11, s12
   4664          fcmgt d20, s21, d22
   4665 
   4666 // CHECK-ERROR: error: invalid operand for instruction
   4667 // CHECK-ERROR:          fcmgt s10, h11, s12
   4668 // CHECK-ERROR:                     ^
   4669 // CHECK-ERROR: error: invalid operand for instruction
   4670 // CHECK-ERROR:          fcmgt d20, s21, d22
   4671 // CHECK-ERROR:                     ^
   4672 
   4673 //----------------------------------------------------------------------
   4674 // Scalar Floating-point Compare Mask Greather Than Zero
   4675 //----------------------------------------------------------------------
   4676 
   4677          fcmgt h10, s11, #0.0
   4678          fcmgt d20, s21, #0.0
   4679 
   4680 // CHECK-ERROR: error: invalid operand for instruction
   4681 // CHECK-ERROR:          fcmgt h10, s11, #0.0
   4682 // CHECK-ERROR:                ^
   4683 // CHECK-ERROR: error: invalid operand for instruction
   4684 // CHECK-ERROR:          fcmgt d20, s21, #0.0
   4685 // CHECK-ERROR:                     ^
   4686 
   4687 //----------------------------------------------------------------------
   4688 // Scalar Floating-point Compare Mask Less Than Or Equal To Zero
   4689 //----------------------------------------------------------------------
   4690 
   4691          fcmle h10, s11, #0.0
   4692          fcmle d20, s21, #0.0
   4693 
   4694 // CHECK-ERROR: error: invalid operand for instruction
   4695 // CHECK-ERROR:          fcmle h10, s11, #0.0
   4696 // CHECK-ERROR:                ^
   4697 // CHECK-ERROR: error: invalid operand for instruction
   4698 // CHECK-ERROR:          fcmle d20, s21, #0.0
   4699 // CHECK-ERROR:                     ^
   4700 
   4701 //----------------------------------------------------------------------
   4702 // Scalar Floating-point Compare Mask Less Than
   4703 //----------------------------------------------------------------------
   4704 
   4705          fcmlt h10, s11, #0.0
   4706          fcmlt d20, s21, #0.0
   4707 
   4708 // CHECK-ERROR: error: invalid operand for instruction
   4709 // CHECK-ERROR:          fcmlt h10, s11, #0.0
   4710 // CHECK-ERROR:                     ^
   4711 // CHECK-ERROR: error: invalid operand for instruction
   4712 // CHECK-ERROR:          fcmlt d20, s21, #0.0
   4713 // CHECK-ERROR:                     ^
   4714 
   4715 //----------------------------------------------------------------------
   4716 // Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
   4717 //----------------------------------------------------------------------
   4718 
   4719          facge s10, h11, s12
   4720          facge d20, s21, d22
   4721 
   4722 // CHECK-ERROR: error: invalid operand for instruction
   4723 // CHECK-ERROR:          facge s10, h11, s12
   4724 // CHECK-ERROR:                     ^
   4725 // CHECK-ERROR: error: invalid operand for instruction
   4726 // CHECK-ERROR:          facge d20, s21, d22
   4727 // CHECK-ERROR:                     ^
   4728 
   4729 //----------------------------------------------------------------------
   4730 // Scalar Floating-point Absolute Compare Mask Greater Than
   4731 //----------------------------------------------------------------------
   4732 
   4733          facgt s10, h11, s12
   4734          facgt d20, d21, s22
   4735 
   4736 // CHECK-ERROR: error: invalid operand for instruction
   4737 // CHECK-ERROR:          facgt s10, h11, s12
   4738 // CHECK-ERROR:                     ^
   4739 // CHECK-ERROR: error: invalid operand for instruction
   4740 // CHECK-ERROR:          facgt d20, d21, s22
   4741 // CHECK-ERROR:                          ^
   4742 
   4743 //----------------------------------------------------------------------
   4744 // Scalar Signed Saturating Accumulated of Unsigned Value
   4745 //----------------------------------------------------------------------
   4746 
   4747         suqadd b0, h1
   4748         suqadd h0, s1
   4749         suqadd s0, d1
   4750         suqadd d0, b0
   4751 
   4752 // CHECK-ERROR: error: invalid operand for instruction
   4753 // CHECK-ERROR:        suqadd b0, h1
   4754 // CHECK-ERROR:                   ^
   4755 // CHECK-ERROR: error: invalid operand for instruction
   4756 // CHECK-ERROR:        suqadd h0, s1
   4757 // CHECK-ERROR:                   ^
   4758 // CHECK-ERROR: error: invalid operand for instruction
   4759 // CHECK-ERROR:        suqadd s0, d1
   4760 // CHECK-ERROR:                   ^
   4761 // CHECK-ERROR: error: invalid operand for instruction
   4762 // CHECK-ERROR:        suqadd d0, b0
   4763 // CHECK-ERROR:                   ^
   4764 
   4765 //----------------------------------------------------------------------
   4766 // Scalar Unsigned Saturating Accumulated of Signed Value
   4767 //----------------------------------------------------------------------
   4768 
   4769         usqadd b0, h1
   4770         usqadd h0, s1
   4771         usqadd s0, d1
   4772         usqadd d0, b1
   4773 
   4774 // CHECK-ERROR: error: invalid operand for instruction
   4775 // CHECK-ERROR:        usqadd b0, h1
   4776 // CHECK-ERROR:                   ^
   4777 // CHECK-ERROR: error: invalid operand for instruction
   4778 // CHECK-ERROR:        usqadd h0, s1
   4779 // CHECK-ERROR:                   ^
   4780 // CHECK-ERROR: error: invalid operand for instruction
   4781 // CHECK-ERROR:        usqadd s0, d1
   4782 // CHECK-ERROR:                   ^
   4783 // CHECK-ERROR: error: invalid operand for instruction
   4784 // CHECK-ERROR:        usqadd d0, b1
   4785 // CHECK-ERROR:                   ^
   4786 
   4787 //----------------------------------------------------------------------
   4788 // Scalar Absolute Value
   4789 //----------------------------------------------------------------------
   4790 
   4791     abs d29, s24
   4792 
   4793 // CHECK-ERROR: error: invalid operand for instruction
   4794 // CHECK-ERROR:        abs d29, s24
   4795 // CHECK-ERROR:                 ^
   4796 
   4797 //----------------------------------------------------------------------
   4798 // Scalar Negate
   4799 //----------------------------------------------------------------------
   4800 
   4801     neg d29, s24
   4802 
   4803 // CHECK-ERROR: error: invalid operand for instruction
   4804 // CHECK-ERROR:        neg d29, s24
   4805 // CHECK-ERROR:                 ^
   4806 
   4807 //----------------------------------------------------------------------
   4808 // Signed Saturating Doubling Multiply-Add Long
   4809 //----------------------------------------------------------------------
   4810 
   4811     sqdmlal s17, h27, s12
   4812     sqdmlal d19, s24, d12
   4813 
   4814 // CHECK-ERROR: error: invalid operand for instruction
   4815 // CHECK-ERROR:        sqdmlal s17, h27, s12
   4816 // CHECK-ERROR:                          ^
   4817 // CHECK-ERROR: error: invalid operand for instruction
   4818 // CHECK-ERROR:        sqdmlal d19, s24, d12
   4819 // CHECK-ERROR:                          ^
   4820 
   4821 //----------------------------------------------------------------------
   4822 // Signed Saturating Doubling Multiply-Subtract Long
   4823 //----------------------------------------------------------------------
   4824 
   4825     sqdmlsl s14, h12, s25
   4826     sqdmlsl d12, s23, d13
   4827 
   4828 // CHECK-ERROR: error: invalid operand for instruction
   4829 // CHECK-ERROR:        sqdmlsl s14, h12, s25
   4830 // CHECK-ERROR:                          ^
   4831 // CHECK-ERROR: error: invalid operand for instruction
   4832 // CHECK-ERROR:        sqdmlsl d12, s23, d13
   4833 // CHECK-ERROR:                          ^
   4834 
   4835 //----------------------------------------------------------------------
   4836 // Signed Saturating Doubling Multiply Long
   4837 //----------------------------------------------------------------------
   4838 
   4839     sqdmull s12, h22, s12
   4840     sqdmull d15, s22, d12
   4841 
   4842 // CHECK-ERROR: error: invalid operand for instruction
   4843 // CHECK-ERROR:        sqdmull s12, h22, s12
   4844 // CHECK-ERROR:                          ^
   4845 // CHECK-ERROR: error: invalid operand for instruction
   4846 // CHECK-ERROR:        sqdmull d15, s22, d12
   4847 // CHECK-ERROR:                          ^
   4848 
   4849 //----------------------------------------------------------------------
   4850 // Scalar Signed Saturating Extract Unsigned Narrow
   4851 //----------------------------------------------------------------------
   4852 
   4853     sqxtun b19, b14
   4854     sqxtun h21, h15
   4855     sqxtun s20, s12
   4856 
   4857 // CHECK-ERROR: error: invalid operand for instruction
   4858 // CHECK-ERROR:        sqxtun b19, b14
   4859 // CHECK-ERROR:                    ^
   4860 // CHECK-ERROR: error: invalid operand for instruction
   4861 // CHECK-ERROR:        sqxtun h21, h15
   4862 // CHECK-ERROR:                    ^
   4863 // CHECK-ERROR: error: invalid operand for instruction
   4864 // CHECK-ERROR:        sqxtun s20, s12
   4865 // CHECK-ERROR:                    ^
   4866 
   4867 //----------------------------------------------------------------------
   4868 // Scalar Signed Saturating Extract Signed Narrow
   4869 //----------------------------------------------------------------------
   4870 
   4871     sqxtn b18, b18
   4872     sqxtn h20, h17
   4873     sqxtn s19, s14
   4874 
   4875 // CHECK-ERROR: error: invalid operand for instruction
   4876 // CHECK-ERROR:        sqxtn b18, b18
   4877 // CHECK-ERROR:                   ^
   4878 // CHECK-ERROR: error: invalid operand for instruction
   4879 // CHECK-ERROR:        sqxtn h20, h17
   4880 // CHECK-ERROR:                   ^
   4881 // CHECK-ERROR: error: invalid operand for instruction
   4882 // CHECK-ERROR:        sqxtn s19, s14
   4883 // CHECK-ERROR:                   ^
   4884 
   4885 
   4886 //----------------------------------------------------------------------
   4887 // Scalar Unsigned Saturating Extract Narrow
   4888 //----------------------------------------------------------------------
   4889 
   4890     uqxtn b18, b18
   4891     uqxtn h20, h17
   4892     uqxtn s19, s14
   4893 
   4894 // CHECK-ERROR: error: invalid operand for instruction
   4895 // CHECK-ERROR:        uqxtn b18, b18
   4896 // CHECK-ERROR:                   ^
   4897 // CHECK-ERROR: error: invalid operand for instruction
   4898 // CHECK-ERROR:        uqxtn h20, h17
   4899 // CHECK-ERROR:                   ^
   4900 // CHECK-ERROR: error: invalid operand for instruction
   4901 // CHECK-ERROR:        uqxtn s19, s14
   4902 // CHECK-ERROR:                   ^
   4903 
   4904 //----------------------------------------------------------------------
   4905 // Scalar Signed Shift Right (Immediate)
   4906 //----------------------------------------------------------------------
   4907         sshr d15, d16, #99
   4908 
   4909 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   4910 // CHECK-ERROR:        sshr d15, d16, #99
   4911 // CHECK-ERROR:                       ^
   4912 
   4913         sshr d15, s16, #31
   4914 
   4915 // CHECK-ERROR: error: invalid operand for instruction
   4916 // CHECK-ERROR:        sshr d15, s16, #31
   4917 // CHECK-ERROR:                  ^
   4918 
   4919 //----------------------------------------------------------------------
   4920 // Scalar Unsigned Shift Right (Immediate)
   4921 //----------------------------------------------------------------------
   4922 
   4923         ushr d10, d17, #99
   4924 
   4925 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   4926 // CHECK-ERROR:        ushr d10, d17, #99
   4927 // CHECK-ERROR:                       ^
   4928 
   4929 //----------------------------------------------------------------------
   4930 // Scalar Signed Rounding Shift Right (Immediate)
   4931 //----------------------------------------------------------------------
   4932 
   4933         srshr d19, d18, #99
   4934 
   4935 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   4936 // CHECK-ERROR:        srshr d19, d18, #99
   4937 // CHECK-ERROR:                        ^
   4938 
   4939 //----------------------------------------------------------------------
   4940 // Scalar Unigned Rounding Shift Right (Immediate)
   4941 //----------------------------------------------------------------------
   4942 
   4943         urshr d20, d23, #99
   4944 
   4945 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   4946 // CHECK-ERROR:        urshr d20, d23, #99
   4947 // CHECK-ERROR:                        ^
   4948 
   4949 //----------------------------------------------------------------------
   4950 // Scalar Signed Shift Right and Accumulate (Immediate)
   4951 //----------------------------------------------------------------------
   4952 
   4953         ssra d18, d12, #99
   4954 
   4955 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   4956 // CHECK-ERROR:        ssra d18, d12, #99
   4957 // CHECK-ERROR:                       ^
   4958 
   4959 //----------------------------------------------------------------------
   4960 // Scalar Unsigned Shift Right and Accumulate (Immediate)
   4961 //----------------------------------------------------------------------
   4962 
   4963         usra d20, d13, #99
   4964 
   4965 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   4966 // CHECK-ERROR:        usra d20, d13, #99
   4967 // CHECK-ERROR:                       ^
   4968 
   4969 //----------------------------------------------------------------------
   4970 // Scalar Signed Rounding Shift Right and Accumulate (Immediate)
   4971 //----------------------------------------------------------------------
   4972 
   4973         srsra d15, d11, #99
   4974 
   4975 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   4976 // CHECK-ERROR:        srsra d15, d11, #99
   4977 // CHECK-ERROR:                        ^
   4978 
   4979 //----------------------------------------------------------------------
   4980 // Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
   4981 //----------------------------------------------------------------------
   4982 
   4983         ursra d18, d10, #99
   4984 
   4985 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   4986 // CHECK-ERROR:        ursra d18, d10, #99
   4987 // CHECK-ERROR:                        ^
   4988 
   4989 //----------------------------------------------------------------------
   4990 // Scalar Shift Left (Immediate)
   4991 //----------------------------------------------------------------------
   4992 
   4993         shl d7, d10, #99
   4994 
   4995 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   4996 // CHECK-ERROR:        shl d7, d10, #99
   4997 // CHECK-ERROR:                     ^
   4998 
   4999         shl d7, s16, #31
   5000 
   5001 // CHECK-ERROR: error: invalid operand for instruction
   5002 // CHECK-ERROR:        shl d7, s16, #31
   5003 // CHECK-ERROR:                ^
   5004 
   5005 //----------------------------------------------------------------------
   5006 // Signed Saturating Shift Left (Immediate)
   5007 //----------------------------------------------------------------------
   5008 
   5009         sqshl b11, b19, #99
   5010         sqshl h13, h18, #99
   5011         sqshl s14, s17, #99
   5012         sqshl d15, d16, #99
   5013 
   5014 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   5015 // CHECK-ERROR:        sqshl b11, b19, #99
   5016 // CHECK-ERROR:                        ^
   5017 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   5018 // CHECK-ERROR:        sqshl h13, h18, #99
   5019 // CHECK-ERROR:                        ^
   5020 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   5021 // CHECK-ERROR:        sqshl s14, s17, #99
   5022 // CHECK-ERROR:                        ^
   5023 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   5024 // CHECK-ERROR:        sqshl d15, d16, #99
   5025 // CHECK-ERROR:                        ^
   5026 
   5027 //----------------------------------------------------------------------
   5028 // Unsigned Saturating Shift Left (Immediate)
   5029 //----------------------------------------------------------------------
   5030 
   5031         uqshl b18, b15, #99
   5032         uqshl h11, h18, #99
   5033         uqshl s14, s19, #99
   5034         uqshl d15, d12, #99
   5035 
   5036 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   5037 // CHECK-ERROR:        uqshl b18, b15, #99
   5038 // CHECK-ERROR:                        ^
   5039 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   5040 // CHECK-ERROR:        uqshl h11, h18, #99
   5041 // CHECK-ERROR:                        ^
   5042 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   5043 // CHECK-ERROR:        uqshl s14, s19, #99
   5044 // CHECK-ERROR:                        ^
   5045 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   5046 // CHECK-ERROR:        uqshl d15, d12, #99
   5047 // CHECK-ERROR:                        ^
   5048 
   5049 //----------------------------------------------------------------------
   5050 // Signed Saturating Shift Left Unsigned (Immediate)
   5051 //----------------------------------------------------------------------
   5052 
   5053         sqshlu b15, b18, #99
   5054         sqshlu h19, h17, #99
   5055         sqshlu s16, s14, #99
   5056         sqshlu d11, d13, #99
   5057 
   5058 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]
   5059 // CHECK-ERROR:        sqshlu  b15, b18, #99
   5060 // CHECK-ERROR:                          ^
   5061 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15]
   5062 // CHECK-ERROR:        sqshlu  h19, h17, #99
   5063 // CHECK-ERROR:                          ^
   5064 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]
   5065 // CHECK-ERROR:        sqshlu  s16, s14, #99
   5066 // CHECK-ERROR:                          ^
   5067 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   5068 // CHECK-ERROR:        sqshlu  d11, d13, #99
   5069 // CHECK-ERROR:                          ^
   5070 
   5071 //----------------------------------------------------------------------
   5072 // Shift Right And Insert (Immediate)
   5073 //----------------------------------------------------------------------
   5074 
   5075         sri d10, d12, #99
   5076 
   5077 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   5078 // CHECK-ERROR:        sri d10, d12, #99
   5079 // CHECK-ERROR:                      ^
   5080 
   5081 //----------------------------------------------------------------------
   5082 // Shift Left And Insert (Immediate)
   5083 //----------------------------------------------------------------------
   5084 
   5085         sli d10, d14, #99
   5086 
   5087 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63]
   5088 // CHECK-ERROR:        sli d10, d14, #99
   5089 // CHECK-ERROR:                      ^
   5090 
   5091 //----------------------------------------------------------------------
   5092 // Signed Saturating Shift Right Narrow (Immediate)
   5093 //----------------------------------------------------------------------
   5094 
   5095         sqshrn b10, h15, #99
   5096         sqshrn h17, s10, #99
   5097         sqshrn s18, d10, #99
   5098 
   5099 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   5100 // CHECK-ERROR:        sqshrn  b10, h15, #99
   5101 // CHECK-ERROR:                          ^
   5102 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   5103 // CHECK-ERROR:        sqshrn  h17, s10, #99
   5104 // CHECK-ERROR:                          ^
   5105 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5106 // CHECK-ERROR:        sqshrn  s18, d10, #99
   5107 // CHECK-ERROR:                          ^
   5108 
   5109 //----------------------------------------------------------------------
   5110 // Unsigned Saturating Shift Right Narrow (Immediate)
   5111 //----------------------------------------------------------------------
   5112 
   5113         uqshrn b12, h10, #99
   5114         uqshrn h10, s14, #99
   5115         uqshrn s10, d12, #99
   5116 
   5117 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   5118 // CHECK-ERROR:        uqshrn  b12, h10, #99
   5119 // CHECK-ERROR:                          ^
   5120 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   5121 // CHECK-ERROR:        uqshrn  h10, s14, #99
   5122 // CHECK-ERROR:                          ^
   5123 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5124 // CHECK-ERROR:        uqshrn  s10, d12, #99
   5125 // CHECK-ERROR:                          ^
   5126 
   5127 //----------------------------------------------------------------------
   5128 // Signed Saturating Rounded Shift Right Narrow (Immediate)
   5129 //----------------------------------------------------------------------
   5130 
   5131         sqrshrn b10, h13, #99
   5132         sqrshrn h15, s10, #99
   5133         sqrshrn s15, d12, #99
   5134 
   5135 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   5136 // CHECK-ERROR:        sqrshrn b10, h13, #99
   5137 // CHECK-ERROR:                          ^
   5138 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   5139 // CHECK-ERROR:        sqrshrn h15, s10, #99
   5140 // CHECK-ERROR:                          ^
   5141 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5142 // CHECK-ERROR:        sqrshrn s15, d12, #99
   5143 // CHECK-ERROR:                          ^
   5144 
   5145 //----------------------------------------------------------------------
   5146 // Unsigned Saturating Rounded Shift Right Narrow (Immediate)
   5147 //----------------------------------------------------------------------
   5148 
   5149         uqrshrn b10, h12, #99
   5150         uqrshrn h12, s10, #99
   5151         uqrshrn s10, d10, #99
   5152 
   5153 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   5154 // CHECK-ERROR:        uqrshrn b10, h12, #99
   5155 // CHECK-ERROR:                          ^
   5156 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   5157 // CHECK-ERROR:        uqrshrn h12, s10, #99
   5158 // CHECK-ERROR:                          ^
   5159 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5160 // CHECK-ERROR:        uqrshrn s10, d10, #99
   5161 // CHECK-ERROR:                          ^
   5162 
   5163 //----------------------------------------------------------------------
   5164 // Signed Saturating Shift Right Unsigned Narrow (Immediate)
   5165 //----------------------------------------------------------------------
   5166 
   5167         sqshrun b15, h10, #99
   5168         sqshrun h20, s14, #99
   5169         sqshrun s10, d15, #99
   5170 
   5171 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   5172 // CHECK-ERROR:        sqshrun b15, h10, #99
   5173 // CHECK-ERROR:                          ^
   5174 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   5175 // CHECK-ERROR:        sqshrun h20, s14, #99
   5176 // CHECK-ERROR:                          ^
   5177 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5178 // CHECK-ERROR:        sqshrun s10, d15, #99
   5179 // CHECK-ERROR:                          ^
   5180 
   5181 //----------------------------------------------------------------------
   5182 // Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
   5183 //----------------------------------------------------------------------
   5184 
   5185         sqrshrun b17, h10, #99
   5186         sqrshrun h10, s13, #99
   5187         sqrshrun s22, d16, #99
   5188 
   5189 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8]
   5190 // CHECK-ERROR:        sqrshrun b17, h10, #99
   5191 // CHECK-ERROR:                           ^
   5192 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16]
   5193 // CHECK-ERROR:        sqrshrun h10, s13, #99
   5194 // CHECK-ERROR:                           ^
   5195 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5196 // CHECK-ERROR:        sqrshrun s22, d16, #99
   5197 // CHECK-ERROR:                           ^
   5198 
   5199 //----------------------------------------------------------------------
   5200 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
   5201 //----------------------------------------------------------------------
   5202 
   5203     scvtf s22, s13, #0
   5204     scvtf s22, s13, #33
   5205     scvtf d21, d12, #65
   5206     scvtf d21, s12, #31
   5207 
   5208 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5209 // CHECK-ERROR:        scvtf s22, s13, #0
   5210 // CHECK-ERROR:                        ^
   5211 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5212 // CHECK-ERROR:        scvtf s22, s13, #33
   5213 // CHECK-ERROR:                        ^
   5214 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   5215 // CHECK-ERROR:        scvtf d21, d12, #65
   5216 // CHECK-ERROR:                        ^
   5217 // CHECK-ERROR: error: invalid operand for instruction
   5218 // CHECK-ERROR:        scvtf d21, s12, #31
   5219 // CHECK-ERROR:                   ^
   5220 
   5221 //----------------------------------------------------------------------
   5222 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
   5223 //----------------------------------------------------------------------
   5224 
   5225     ucvtf s22, s13, #34
   5226     ucvtf d21, d14, #65
   5227     ucvtf d21, s14, #64
   5228 
   5229 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   5230 // CHECK-ERROR:        ucvtf s22, s13, #34
   5231 // CHECK-ERROR:                        ^
   5232 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   5233 // CHECK-ERROR:        ucvtf d21, d14, #65
   5234 // CHECK-ERROR:                        ^
   5235 // CHECK-ERROR: error: invalid operand for instruction
   5236 // CHECK-ERROR:        ucvtf d21, s14, #64
   5237 // CHECK-ERROR:                   ^
   5238 
   5239 //------------------------------------------------------------------------------
   5240 // Element reverse
   5241 //------------------------------------------------------------------------------
   5242          rev64 v6.2d, v8.2d
   5243          rev32 v30.2s, v31.2s
   5244          rev32 v30.4s, v31.4s
   5245          rev32 v30.2d, v31.2d
   5246          rev16 v21.4h, v1.4h
   5247          rev16 v21.8h, v1.8h
   5248          rev16 v21.2s, v1.2s
   5249          rev16 v21.4s, v1.4s
   5250          rev16 v21.2d, v1.2d
   5251 
   5252 // CHECK-ERROR: error: invalid operand for instruction
   5253 // CHECK-ERROR:         rev64 v6.2d, v8.2d
   5254 // CHECK-ERROR:                  ^
   5255 // CHECK-ERROR: error: invalid operand for instruction
   5256 // CHECK-ERROR:         rev32 v30.2s, v31.2s
   5257 // CHECK-ERROR:                   ^
   5258 // CHECK-ERROR: error: invalid operand for instruction
   5259 // CHECK-ERROR:         rev32 v30.4s, v31.4s
   5260 // CHECK-ERROR:                   ^
   5261 // CHECK-ERROR: error: invalid operand for instruction
   5262 // CHECK-ERROR:         rev32 v30.2d, v31.2d
   5263 // CHECK-ERROR:                   ^
   5264 // CHECK-ERROR: error: invalid operand for instruction
   5265 // CHECK-ERROR:         rev16 v21.4h, v1.4h
   5266 // CHECK-ERROR:                   ^
   5267 // CHECK-ERROR: error: invalid operand for instruction
   5268 // CHECK-ERROR:         rev16 v21.8h, v1.8h
   5269 // CHECK-ERROR:                   ^
   5270 // CHECK-ERROR: error: invalid operand for instruction
   5271 // CHECK-ERROR:         rev16 v21.2s, v1.2s
   5272 // CHECK-ERROR:                   ^
   5273 // CHECK-ERROR: error: invalid operand for instruction
   5274 // CHECK-ERROR:         rev16 v21.4s, v1.4s
   5275 // CHECK-ERROR:                   ^
   5276 // CHECK-ERROR: error: invalid operand for instruction
   5277 // CHECK-ERROR:         rev16 v21.2d, v1.2d
   5278 // CHECK-ERROR:                   ^
   5279 
   5280 //------------------------------------------------------------------------------
   5281 // Signed integer pairwise add long
   5282 //------------------------------------------------------------------------------
   5283 
   5284          saddlp v3.8h, v21.8h
   5285          saddlp v8.8b, v5.8b
   5286          saddlp v9.8h, v1.4s
   5287          saddlp v0.4s, v1.2d
   5288 
   5289 // CHECK-ERROR: error: invalid operand for instruction
   5290 // CHECK-ERROR:         saddlp v3.8h, v21.8h
   5291 // CHECK-ERROR:                           ^
   5292 // CHECK-ERROR: error: invalid operand for instruction
   5293 // CHECK-ERROR:         saddlp v8.8b, v5.8b
   5294 // CHECK-ERROR:                   ^
   5295 // CHECK-ERROR: error: invalid operand for instruction
   5296 // CHECK-ERROR:         saddlp v9.8h, v1.4s
   5297 // CHECK-ERROR:                          ^
   5298 // CHECK-ERROR: error: invalid operand for instruction
   5299 // CHECK-ERROR:         saddlp v0.4s, v1.2d
   5300 // CHECK-ERROR:                          ^
   5301 
   5302 //------------------------------------------------------------------------------
   5303 // Unsigned integer pairwise add long
   5304 //------------------------------------------------------------------------------
   5305 
   5306          uaddlp v3.8h, v21.8h
   5307          uaddlp v8.8b, v5.8b
   5308          uaddlp v9.8h, v1.4s
   5309          uaddlp v0.4s, v1.2d
   5310 
   5311 // CHECK-ERROR: error: invalid operand for instruction
   5312 // CHECK-ERROR:         uaddlp v3.8h, v21.8h
   5313 // CHECK-ERROR:                           ^
   5314 // CHECK-ERROR: error: invalid operand for instruction
   5315 // CHECK-ERROR:         uaddlp v8.8b, v5.8b
   5316 // CHECK-ERROR:                   ^
   5317 // CHECK-ERROR: error: invalid operand for instruction
   5318 // CHECK-ERROR:         uaddlp v9.8h, v1.4s
   5319 // CHECK-ERROR:                          ^
   5320 // CHECK-ERROR: error: invalid operand for instruction
   5321 // CHECK-ERROR:         uaddlp v0.4s, v1.2d
   5322 // CHECK-ERROR:                          ^
   5323 
   5324 //------------------------------------------------------------------------------
   5325 // Signed integer pairwise add and accumulate long
   5326 //------------------------------------------------------------------------------
   5327 
   5328          sadalp v3.16b, v21.16b
   5329          sadalp v8.4h, v5.4h
   5330          sadalp v9.4s, v1.4s
   5331          sadalp v0.4h, v1.2s
   5332          sadalp v12.2d, v4.8h
   5333 
   5334 // CHECK-ERROR: error: invalid operand for instruction
   5335 // CHECK-ERROR:         sadalp v3.16b, v21.16b
   5336 // CHECK-ERROR:                   ^
   5337 // CHECK-ERROR: error: invalid operand for instruction
   5338 // CHECK-ERROR:         sadalp v8.4h, v5.4h
   5339 // CHECK-ERROR:                          ^
   5340 // CHECK-ERROR: error: invalid operand for instruction
   5341 // CHECK-ERROR:         sadalp v9.4s, v1.4s
   5342 // CHECK-ERROR:                          ^
   5343 // CHECK-ERROR: error: invalid operand for instruction
   5344 // CHECK-ERROR:         sadalp v0.4h, v1.2s
   5345 // CHECK-ERROR:                          ^
   5346 // CHECK-ERROR: error: invalid operand for instruction
   5347 // CHECK-ERROR:         sadalp v12.2d, v4.8h
   5348 // CHECK-ERROR:                           ^
   5349 
   5350 //------------------------------------------------------------------------------
   5351 // Unsigned integer pairwise add and accumulate long
   5352 //------------------------------------------------------------------------------
   5353 
   5354          uadalp v3.16b, v21.16b
   5355          uadalp v8.4h, v5.4h
   5356          uadalp v9.4s, v1.4s
   5357          uadalp v0.4h, v1.2s
   5358          uadalp v12.2d, v4.8h
   5359 
   5360 // CHECK-ERROR: error: invalid operand for instruction
   5361 // CHECK-ERROR:         uadalp v3.16b, v21.16b
   5362 // CHECK-ERROR:                   ^
   5363 // CHECK-ERROR: error: invalid operand for instruction
   5364 // CHECK-ERROR:         uadalp v8.4h, v5.4h
   5365 // CHECK-ERROR:                          ^
   5366 // CHECK-ERROR: error: invalid operand for instruction
   5367 // CHECK-ERROR:         uadalp v9.4s, v1.4s
   5368 // CHECK-ERROR:                          ^
   5369 // CHECK-ERROR: error: invalid operand for instruction
   5370 // CHECK-ERROR:         uadalp v0.4h, v1.2s
   5371 // CHECK-ERROR:                          ^
   5372 // CHECK-ERROR: error: invalid operand for instruction
   5373 // CHECK-ERROR:         uadalp v12.2d, v4.8h
   5374 // CHECK-ERROR:                           ^
   5375 
   5376 //------------------------------------------------------------------------------
   5377 // Signed integer saturating accumulate of unsigned value
   5378 //------------------------------------------------------------------------------
   5379 
   5380          suqadd v0.16b, v31.8b
   5381          suqadd v1.8b, v9.8h
   5382          suqadd v13.4h, v21.4s
   5383          suqadd v4.2s, v0.2d
   5384 
   5385 // CHECK-ERROR: error: invalid operand for instruction
   5386 // CHECK-ERROR:         suqadd v0.16b, v31.8b
   5387 // CHECK-ERROR:                        ^
   5388 // CHECK-ERROR: error: invalid operand for instruction
   5389 // CHECK-ERROR:         suqadd v1.8b, v9.8h
   5390 // CHECK-ERROR:                       ^
   5391 // CHECK-ERROR: error: invalid operand for instruction
   5392 // CHECK-ERROR:         suqadd v13.4h, v21.4s
   5393 // CHECK-ERROR:                        ^
   5394 // CHECK-ERROR: error: invalid operand for instruction
   5395 // CHECK-ERROR:         suqadd v4.2s, v0.2d
   5396 // CHECK-ERROR:                       ^
   5397 
   5398 //------------------------------------------------------------------------------
   5399 // Unsigned integer saturating accumulate of signed value
   5400 //------------------------------------------------------------------------------
   5401 
   5402          usqadd v0.16b, v31.8b
   5403          usqadd v2.8h, v4.4h
   5404          usqadd v13.4h, v21.4s
   5405          usqadd v4.2s, v0.2d
   5406 
   5407 // CHECK-ERROR: error: invalid operand for instruction
   5408 // CHECK-ERROR:         usqadd v0.16b, v31.8b
   5409 // CHECK-ERROR:                        ^
   5410 // CHECK-ERROR: error: invalid operand for instruction
   5411 // CHECK-ERROR:         usqadd v2.8h, v4.4h
   5412 // CHECK-ERROR:                       ^
   5413 // CHECK-ERROR: error: invalid operand for instruction
   5414 // CHECK-ERROR:         usqadd v13.4h, v21.4s
   5415 // CHECK-ERROR:                        ^
   5416 // CHECK-ERROR: error: invalid operand for instruction
   5417 // CHECK-ERROR:         usqadd v4.2s, v0.2d
   5418 // CHECK-ERROR:                       ^
   5419 
   5420 //------------------------------------------------------------------------------
   5421 // Integer saturating absolute
   5422 //------------------------------------------------------------------------------
   5423 
   5424          sqabs v0.16b, v31.8b
   5425          sqabs v2.8h, v4.4h
   5426          sqabs v6.4s, v8.2s
   5427          sqabs v6.2d, v8.2s
   5428 
   5429 // CHECK-ERROR: error: invalid operand for instruction
   5430 // CHECK-ERROR:         sqabs v0.16b, v31.8b
   5431 // CHECK-ERROR:                       ^
   5432 // CHECK-ERROR: error: invalid operand for instruction
   5433 // CHECK-ERROR:         sqabs v2.8h, v4.4h
   5434 // CHECK-ERROR:                      ^
   5435 // CHECK-ERROR: error: invalid operand for instruction
   5436 // CHECK-ERROR:         sqabs v6.4s, v8.2s
   5437 // CHECK-ERROR:                      ^
   5438 // CHECK-ERROR: error: invalid operand for instruction
   5439 // CHECK-ERROR:         sqabs v6.2d, v8.2s
   5440 // CHECK-ERROR:                      ^
   5441 
   5442 //------------------------------------------------------------------------------
   5443 // Signed integer saturating negate
   5444 //------------------------------------------------------------------------------
   5445 
   5446          sqneg v0.16b, v31.8b
   5447          sqneg v2.8h, v4.4h
   5448          sqneg v6.4s, v8.2s
   5449          sqneg v6.2d, v8.2s
   5450 
   5451 // CHECK-ERROR: error: invalid operand for instruction
   5452 // CHECK-ERROR:         sqneg v0.16b, v31.8b
   5453 // CHECK-ERROR:                       ^
   5454 // CHECK-ERROR: error: invalid operand for instruction
   5455 // CHECK-ERROR:         sqneg v2.8h, v4.4h
   5456 // CHECK-ERROR:                      ^
   5457 // CHECK-ERROR: error: invalid operand for instruction
   5458 // CHECK-ERROR:         sqneg v6.4s, v8.2s
   5459 // CHECK-ERROR:                      ^
   5460 // CHECK-ERROR: error: invalid operand for instruction
   5461 // CHECK-ERROR:         sqneg v6.2d, v8.2s
   5462 // CHECK-ERROR:                      ^
   5463 
   5464 //------------------------------------------------------------------------------
   5465 // Integer absolute
   5466 //------------------------------------------------------------------------------
   5467 
   5468          abs v0.16b, v31.8b
   5469          abs v2.8h, v4.4h
   5470          abs v6.4s, v8.2s
   5471          abs v6.2d, v8.2s
   5472 
   5473 // CHECK-ERROR: error: invalid operand for instruction
   5474 // CHECK-ERROR:         abs v0.16b, v31.8b
   5475 // CHECK-ERROR:                     ^
   5476 // CHECK-ERROR: error: invalid operand for instruction
   5477 // CHECK-ERROR:         abs v2.8h, v4.4h
   5478 // CHECK-ERROR:                    ^
   5479 // CHECK-ERROR: error: invalid operand for instruction
   5480 // CHECK-ERROR:         abs v6.4s, v8.2s
   5481 // CHECK-ERROR:                    ^
   5482 // CHECK-ERROR: error: invalid operand for instruction
   5483 // CHECK-ERROR:         abs v6.2d, v8.2s
   5484 // CHECK-ERROR:                    ^
   5485 
   5486 //------------------------------------------------------------------------------
   5487 // Integer count leading sign bits
   5488 //------------------------------------------------------------------------------
   5489 
   5490          cls v0.2d, v31.2d
   5491 
   5492 // CHECK-ERROR: error: invalid operand for instruction
   5493 // CHECK-ERROR:         cls v0.2d, v31.2d
   5494 // CHECK-ERROR:                ^
   5495 
   5496 //------------------------------------------------------------------------------
   5497 // Integer count leading zeros
   5498 //------------------------------------------------------------------------------
   5499 
   5500          clz v0.2d, v31.2d
   5501 
   5502 // CHECK-ERROR: error: invalid operand for instruction
   5503 // CHECK-ERROR:         clz v0.2d, v31.2d
   5504 // CHECK-ERROR:                ^
   5505 
   5506 //------------------------------------------------------------------------------
   5507 // Population count
   5508 //------------------------------------------------------------------------------
   5509 
   5510          cnt v2.8h, v4.8h
   5511          cnt v6.4s, v8.4s
   5512          cnt v6.2d, v8.2d
   5513          cnt v13.4h, v21.4h
   5514          cnt v4.2s, v0.2s
   5515 
   5516 // CHECK-ERROR: error: invalid operand for instruction
   5517 // CHECK-ERROR:         cnt v2.8h, v4.8h
   5518 // CHECK-ERROR:                ^
   5519 // CHECK-ERROR: error: invalid operand for instruction
   5520 // CHECK-ERROR:         cnt v6.4s, v8.4s
   5521 // CHECK-ERROR:                ^
   5522 // CHECK-ERROR: error: invalid operand for instruction
   5523 // CHECK-ERROR:         cnt v6.2d, v8.2d
   5524 // CHECK-ERROR:                ^
   5525 // CHECK-ERROR: error: invalid operand for instruction
   5526 // CHECK-ERROR:         cnt v13.4h, v21.4h
   5527 // CHECK-ERROR:                 ^
   5528 // CHECK-ERROR: error: invalid operand for instruction
   5529 // CHECK-ERROR:         cnt v4.2s, v0.2s
   5530 // CHECK-ERROR:                ^
   5531 
   5532 
   5533 //------------------------------------------------------------------------------
   5534 // Bitwise NOT
   5535 //------------------------------------------------------------------------------
   5536 
   5537          not v2.8h, v4.8h
   5538          not v6.4s, v8.4s
   5539          not v6.2d, v8.2d
   5540          not v13.4h, v21.4h
   5541          not v4.2s, v0.2s
   5542 
   5543 // CHECK-ERROR: error: invalid operand for instruction
   5544 // CHECK-ERROR:         not v2.8h, v4.8h
   5545 // CHECK-ERROR:                ^
   5546 // CHECK-ERROR: error: invalid operand for instruction
   5547 // CHECK-ERROR:         not v6.4s, v8.4s
   5548 // CHECK-ERROR:                ^
   5549 // CHECK-ERROR: error: invalid operand for instruction
   5550 // CHECK-ERROR:         not v6.2d, v8.2d
   5551 // CHECK-ERROR:                ^
   5552 // CHECK-ERROR: error: invalid operand for instruction
   5553 // CHECK-ERROR:         not v13.4h, v21.4h
   5554 // CHECK-ERROR:                 ^
   5555 // CHECK-ERROR: error: invalid operand for instruction
   5556 // CHECK-ERROR:         not v4.2s, v0.2s
   5557 // CHECK-ERROR:                ^
   5558 
   5559 //------------------------------------------------------------------------------
   5560 // Bitwise reverse
   5561 //------------------------------------------------------------------------------
   5562 
   5563          rbit v2.8h, v4.8h
   5564          rbit v6.4s, v8.4s
   5565          rbit v6.2d, v8.2d
   5566          rbit v13.4h, v21.4h
   5567          rbit v4.2s, v0.2s
   5568 
   5569 // CHECK-ERROR: error: invalid operand for instruction
   5570 // CHECK-ERROR:         rbit v2.8h, v4.8h
   5571 // CHECK-ERROR:                 ^
   5572 // CHECK-ERROR: error: invalid operand for instruction
   5573 // CHECK-ERROR:         rbit v6.4s, v8.4s
   5574 // CHECK-ERROR:                 ^
   5575 // CHECK-ERROR: error: invalid operand for instruction
   5576 // CHECK-ERROR:         rbit v6.2d, v8.2d
   5577 // CHECK-ERROR:                 ^
   5578 // CHECK-ERROR: error: invalid operand for instruction
   5579 // CHECK-ERROR:         rbit v13.4h, v21.4h
   5580 // CHECK-ERROR:                  ^
   5581 // CHECK-ERROR: error: invalid operand for instruction
   5582 // CHECK-ERROR:         rbit v4.2s, v0.2s
   5583 // CHECK-ERROR:                 ^
   5584 
   5585 //------------------------------------------------------------------------------
   5586 // Floating-point absolute
   5587 //------------------------------------------------------------------------------
   5588 
   5589          fabs v0.16b, v31.16b
   5590          fabs v2.8h, v4.8h
   5591          fabs v1.8b, v9.8b
   5592          fabs v13.4h, v21.4h
   5593 
   5594 // CHECK-ERROR: error: invalid operand for instruction
   5595 // CHECK-ERROR:         fabs v0.16b, v31.16b
   5596 // CHECK-ERROR:                 ^
   5597 // CHECK-ERROR: error: invalid operand for instruction
   5598 // CHECK-ERROR:         fabs v2.8h, v4.8h
   5599 // CHECK-ERROR:                 ^
   5600 // CHECK-ERROR: error: invalid operand for instruction
   5601 // CHECK-ERROR:         fabs v1.8b, v9.8b
   5602 // CHECK-ERROR:                 ^
   5603 // CHECK-ERROR: error: invalid operand for instruction
   5604 // CHECK-ERROR:         fabs v13.4h, v21.4h
   5605 // CHECK-ERROR:                  ^
   5606 
   5607 //------------------------------------------------------------------------------
   5608 // Floating-point negate
   5609 //------------------------------------------------------------------------------
   5610 
   5611          fneg v0.16b, v31.16b
   5612          fneg v2.8h, v4.8h
   5613          fneg v1.8b, v9.8b
   5614          fneg v13.4h, v21.4h
   5615 
   5616 // CHECK-ERROR: error: invalid operand for instruction
   5617 // CHECK-ERROR:         fneg v0.16b, v31.16b
   5618 // CHECK-ERROR:                 ^
   5619 // CHECK-ERROR: error: invalid operand for instruction
   5620 // CHECK-ERROR:         fneg v2.8h, v4.8h
   5621 // CHECK-ERROR:                 ^
   5622 // CHECK-ERROR: error: invalid operand for instruction
   5623 // CHECK-ERROR:         fneg v1.8b, v9.8b
   5624 // CHECK-ERROR:                 ^
   5625 // CHECK-ERROR: error: invalid operand for instruction
   5626 // CHECK-ERROR:         fneg v13.4h, v21.4h
   5627 // CHECK-ERROR:                  ^
   5628 
   5629 //------------------------------------------------------------------------------
   5630 // Integer extract and narrow
   5631 //------------------------------------------------------------------------------
   5632 
   5633          xtn v0.16b, v31.8h
   5634          xtn v2.8h, v4.4s
   5635          xtn v6.4s, v8.2d
   5636          xtn2 v1.8b, v9.8h
   5637          xtn2 v13.4h, v21.4s
   5638          xtn2 v4.2s, v0.2d
   5639 
   5640 // CHECK-ERROR: error: invalid operand for instruction
   5641 // CHECK-ERROR:         xtn v0.16b, v31.8h
   5642 // CHECK-ERROR:             ^
   5643 // CHECK-ERROR: error: invalid operand for instruction
   5644 // CHECK-ERROR:         xtn v2.8h, v4.4s
   5645 // CHECK-ERROR:             ^
   5646 // CHECK-ERROR: error: invalid operand for instruction
   5647 // CHECK-ERROR:         xtn v6.4s, v8.2d
   5648 // CHECK-ERROR:             ^
   5649 // CHECK-ERROR: error: invalid operand for instruction
   5650 // CHECK-ERROR:         xtn2 v1.8b, v9.8h
   5651 // CHECK-ERROR:              ^
   5652 // CHECK-ERROR: error: invalid operand for instruction
   5653 // CHECK-ERROR:         xtn2 v13.4h, v21.4s
   5654 // CHECK-ERROR:              ^
   5655 // CHECK-ERROR: error: invalid operand for instruction
   5656 // CHECK-ERROR:         xtn2 v4.2s, v0.2d
   5657 // CHECK-ERROR:              ^
   5658 
   5659 //------------------------------------------------------------------------------
   5660 // Signed integer saturating extract and unsigned narrow
   5661 //------------------------------------------------------------------------------
   5662 
   5663          sqxtun v0.16b, v31.8h
   5664          sqxtun v2.8h, v4.4s
   5665          sqxtun v6.4s, v8.2d
   5666          sqxtun2 v1.8b, v9.8h
   5667          sqxtun2 v13.4h, v21.4s
   5668          sqxtun2 v4.2s, v0.2d
   5669 
   5670 // CHECK-ERROR: error: invalid operand for instruction
   5671 // CHECK-ERROR:         sqxtun v0.16b, v31.8h
   5672 // CHECK-ERROR:                ^
   5673 // CHECK-ERROR: error: invalid operand for instruction
   5674 // CHECK-ERROR:         sqxtun v2.8h, v4.4s
   5675 // CHECK-ERROR:                ^
   5676 // CHECK-ERROR: error: invalid operand for instruction
   5677 // CHECK-ERROR:         sqxtun v6.4s, v8.2d
   5678 // CHECK-ERROR:                ^
   5679 // CHECK-ERROR: error: invalid operand for instruction
   5680 // CHECK-ERROR:         sqxtun2 v1.8b, v9.8h
   5681 // CHECK-ERROR:                 ^
   5682 // CHECK-ERROR: error: invalid operand for instruction
   5683 // CHECK-ERROR:         sqxtun2 v13.4h, v21.4s
   5684 // CHECK-ERROR:                 ^
   5685 // CHECK-ERROR: error: invalid operand for instruction
   5686 // CHECK-ERROR:         sqxtun2 v4.2s, v0.2d
   5687 // CHECK-ERROR:                 ^
   5688 
   5689 //------------------------------------------------------------------------------
   5690 // Signed integer saturating extract and narrow
   5691 //------------------------------------------------------------------------------
   5692 
   5693          sqxtn v0.16b, v31.8h
   5694          sqxtn v2.8h, v4.4s
   5695          sqxtn v6.4s, v8.2d
   5696          sqxtn2 v1.8b, v9.8h
   5697          sqxtn2 v13.4h, v21.4s
   5698          sqxtn2 v4.2s, v0.2d
   5699 
   5700 // CHECK-ERROR: error: invalid operand for instruction
   5701 // CHECK-ERROR:         sqxtn v0.16b, v31.8h
   5702 // CHECK-ERROR:               ^
   5703 // CHECK-ERROR: error: invalid operand for instruction
   5704 // CHECK-ERROR:         sqxtn v2.8h, v4.4s
   5705 // CHECK-ERROR:               ^
   5706 // CHECK-ERROR: error: invalid operand for instruction
   5707 // CHECK-ERROR:         sqxtn v6.4s, v8.2d
   5708 // CHECK-ERROR:               ^
   5709 // CHECK-ERROR: error: invalid operand for instruction
   5710 // CHECK-ERROR:         sqxtn2 v1.8b, v9.8h
   5711 // CHECK-ERROR:                ^
   5712 // CHECK-ERROR: error: invalid operand for instruction
   5713 // CHECK-ERROR:         sqxtn2 v13.4h, v21.4s
   5714 // CHECK-ERROR:                ^
   5715 // CHECK-ERROR: error: invalid operand for instruction
   5716 // CHECK-ERROR:         sqxtn2 v4.2s, v0.2d
   5717 // CHECK-ERROR:                ^
   5718 
   5719 //------------------------------------------------------------------------------
   5720 // Unsigned integer saturating extract and narrow
   5721 //------------------------------------------------------------------------------
   5722 
   5723          uqxtn v0.16b, v31.8h
   5724          uqxtn v2.8h, v4.4s
   5725          uqxtn v6.4s, v8.2d
   5726          uqxtn2 v1.8b, v9.8h
   5727          uqxtn2 v13.4h, v21.4s
   5728          uqxtn2 v4.2s, v0.2d
   5729 
   5730 // CHECK-ERROR: error: invalid operand for instruction
   5731 // CHECK-ERROR:         uqxtn v0.16b, v31.8h
   5732 // CHECK-ERROR:               ^
   5733 // CHECK-ERROR: error: invalid operand for instruction
   5734 // CHECK-ERROR:         uqxtn v2.8h, v4.4s
   5735 // CHECK-ERROR:               ^
   5736 // CHECK-ERROR: error: invalid operand for instruction
   5737 // CHECK-ERROR:         uqxtn v6.4s, v8.2d
   5738 // CHECK-ERROR:               ^
   5739 // CHECK-ERROR: error: invalid operand for instruction
   5740 // CHECK-ERROR:         uqxtn2 v1.8b, v9.8h
   5741 // CHECK-ERROR:                ^
   5742 // CHECK-ERROR: error: invalid operand for instruction
   5743 // CHECK-ERROR:         uqxtn2 v13.4h, v21.4s
   5744 // CHECK-ERROR:                ^
   5745 // CHECK-ERROR: error: invalid operand for instruction
   5746 // CHECK-ERROR:         uqxtn2 v4.2s, v0.2d
   5747 // CHECK-ERROR:                ^
   5748 
   5749 //------------------------------------------------------------------------------
   5750 // Integer shift left long
   5751 //------------------------------------------------------------------------------
   5752 
   5753          shll2 v2.8h, v4.16b, #7
   5754          shll2 v6.4s, v8.8h, #15
   5755          shll2 v6.2d, v8.4s, #31
   5756          shll v2.8h, v4.16b, #8
   5757          shll v6.4s, v8.8h, #16
   5758          shll v6.2d, v8.4s, #32
   5759          shll v2.8h, v4.8b, #8
   5760          shll v6.4s, v8.4h, #16
   5761          shll v6.2d, v8.2s, #32
   5762          shll2 v2.8h, v4.8b, #5
   5763          shll2 v6.4s, v8.4h, #14
   5764          shll2 v6.2d, v8.2s, #1
   5765 
   5766 // CHECK-ERROR: error: invalid operand for instruction
   5767 // CHECK-ERROR:         shll2 v2.8h, v4.16b, #7
   5768 // CHECK-ERROR:                              ^
   5769 // CHECK-ERROR: error: invalid operand for instruction
   5770 // CHECK-ERROR:         shll2 v6.4s, v8.8h, #15
   5771 // CHECK-ERROR:                             ^
   5772 // CHECK-ERROR: error: invalid operand for instruction
   5773 // CHECK-ERROR:         shll2 v6.2d, v8.4s, #31
   5774 // CHECK-ERROR:                             ^
   5775 // CHECK-ERROR: error: invalid operand for instruction
   5776 // CHECK-ERROR:         shll v2.8h, v4.16b, #8
   5777 // CHECK-ERROR:                     ^
   5778 // CHECK-ERROR: error: invalid operand for instruction
   5779 // CHECK-ERROR:         shll v6.4s, v8.8h, #16
   5780 // CHECK-ERROR:                     ^
   5781 // CHECK-ERROR: error: invalid operand for instruction
   5782 // CHECK-ERROR:         shll v6.2d, v8.4s, #32
   5783 // CHECK-ERROR:                     ^
   5784 // CHECK-ERROR: error: invalid operand for instruction
   5785 // CHECK-ERROR:         shll2 v2.8h, v4.8b, #5
   5786 // CHECK-ERROR:                      ^
   5787 // CHECK-ERROR: error: invalid operand for instruction
   5788 // CHECK-ERROR:         shll2 v6.4s, v8.4h, #14
   5789 // CHECK-ERROR:                      ^
   5790 // CHECK-ERROR: error: invalid operand for instruction
   5791 // CHECK-ERROR:         shll2 v6.2d, v8.2s, #1
   5792 // CHECK-ERROR:                      ^
   5793 
   5794 //------------------------------------------------------------------------------
   5795 // Floating-point convert downsize
   5796 //------------------------------------------------------------------------------
   5797 
   5798          fcvtn v2.8h, v4.4s
   5799          fcvtn v6.4s, v8.2d
   5800          fcvtn2 v13.4h, v21.4s
   5801          fcvtn2 v4.2s, v0.2d
   5802 
   5803 // CHECK-ERROR: error: invalid operand for instruction
   5804 // CHECK-ERROR:         fcvtn v2.8h, v4.4s
   5805 // CHECK-ERROR:               ^
   5806 // CHECK-ERROR: error: invalid operand for instruction
   5807 // CHECK-ERROR:         fcvtn v6.4s, v8.2d
   5808 // CHECK-ERROR:               ^
   5809 // CHECK-ERROR: error: invalid operand for instruction
   5810 // CHECK-ERROR:         fcvtn2 v13.4h, v21.4s
   5811 // CHECK-ERROR:                ^
   5812 // CHECK-ERROR: error: invalid operand for instruction
   5813 // CHECK-ERROR:         fcvtn2 v4.2s, v0.2d
   5814 // CHECK-ERROR:                ^
   5815 
   5816 //------------------------------------------------------------------------------
   5817 // Floating-point convert downsize with inexact
   5818 //------------------------------------------------------------------------------
   5819 
   5820          fcvtxn v6.4s, v8.2d
   5821          fcvtxn2 v4.2s, v0.2d
   5822 
   5823 // CHECK-ERROR: error: invalid operand for instruction
   5824 // CHECK-ERROR:         fcvtxn v6.4s, v8.2d
   5825 // CHECK-ERROR:                ^
   5826 // CHECK-ERROR: error: invalid operand for instruction
   5827 // CHECK-ERROR:         fcvtxn2 v4.2s, v0.2d
   5828 // CHECK-ERROR:                 ^
   5829 
   5830 //------------------------------------------------------------------------------
   5831 // Floating-point convert upsize
   5832 //------------------------------------------------------------------------------
   5833 
   5834          fcvtl2 v9.4s, v1.4h
   5835          fcvtl2 v0.2d, v1.2s
   5836          fcvtl v12.4s, v4.8h
   5837          fcvtl v17.2d, v28.4s
   5838 
   5839 // CHECK-ERROR: error: invalid operand for instruction
   5840 // CHECK-ERROR:         fcvtl2 v9.4s, v1.4h
   5841 // CHECK-ERROR:                       ^
   5842 // CHECK-ERROR: error: invalid operand for instruction
   5843 // CHECK-ERROR:         fcvtl2 v0.2d, v1.2s
   5844 // CHECK-ERROR:                       ^
   5845 // CHECK-ERROR: error: invalid operand for instruction
   5846 // CHECK-ERROR:         fcvtl v12.4s, v4.8h
   5847 // CHECK-ERROR:                       ^
   5848 // CHECK-ERROR: error: invalid operand for instruction
   5849 // CHECK-ERROR:         fcvtl v17.2d, v28.4s
   5850 // CHECK-ERROR:                       ^
   5851 
   5852 //------------------------------------------------------------------------------
   5853 // Floating-point round to integral
   5854 //------------------------------------------------------------------------------
   5855 
   5856          frintn v0.16b, v31.16b
   5857          frintn v2.8h, v4.8h
   5858          frintn v1.8b, v9.8b
   5859          frintn v13.4h, v21.4h
   5860 
   5861          frinta v0.16b, v31.16b
   5862          frinta v2.8h, v4.8h
   5863          frinta v1.8b, v9.8b
   5864          frinta v13.4h, v21.4h
   5865 
   5866          frintp v0.16b, v31.16b
   5867          frintp v2.8h, v4.8h
   5868          frintp v1.8b, v9.8b
   5869          frintp v13.4h, v21.4h
   5870 
   5871          frintm v0.16b, v31.16b
   5872          frintm v2.8h, v4.8h
   5873          frintm v1.8b, v9.8b
   5874          frintm v13.4h, v21.4h
   5875 
   5876          frintx v0.16b, v31.16b
   5877          frintx v2.8h, v4.8h
   5878          frintx v1.8b, v9.8b
   5879          frintx v13.4h, v21.4h
   5880 
   5881          frintz v0.16b, v31.16b
   5882          frintz v2.8h, v4.8h
   5883          frintz v1.8b, v9.8b
   5884          frintz v13.4h, v21.4h
   5885 
   5886          frinti v0.16b, v31.16b
   5887          frinti v2.8h, v4.8h
   5888          frinti v1.8b, v9.8b
   5889          frinti v13.4h, v21.4h
   5890 
   5891          fcvtns v0.16b, v31.16b
   5892          fcvtns v2.8h, v4.8h
   5893          fcvtns v1.8b, v9.8b
   5894          fcvtns v13.4h, v21.4h
   5895 
   5896          fcvtnu v0.16b, v31.16b
   5897          fcvtnu v2.8h, v4.8h
   5898          fcvtnu v1.8b, v9.8b
   5899          fcvtnu v13.4h, v21.4h
   5900 
   5901          fcvtps v0.16b, v31.16b
   5902          fcvtps v2.8h, v4.8h
   5903          fcvtps v1.8b, v9.8b
   5904          fcvtps v13.4h, v21.4h
   5905 
   5906          fcvtpu v0.16b, v31.16b
   5907          fcvtpu v2.8h, v4.8h
   5908          fcvtpu v1.8b, v9.8b
   5909          fcvtpu v13.4h, v21.4h
   5910 
   5911          fcvtms v0.16b, v31.16b
   5912          fcvtms v2.8h, v4.8h
   5913          fcvtms v1.8b, v9.8b
   5914          fcvtms v13.4h, v21.4h
   5915 
   5916          fcvtmu v0.16b, v31.16b
   5917          fcvtmu v2.8h, v4.8h
   5918          fcvtmu v1.8b, v9.8b
   5919          fcvtmu v13.4h, v21.4h
   5920 
   5921          fcvtzs v0.16b, v31.16b
   5922          fcvtzs v2.8h, v4.8h
   5923          fcvtzs v1.8b, v9.8b
   5924          fcvtzs v13.4h, v21.4h
   5925 
   5926          fcvtzu v0.16b, v31.16b
   5927          fcvtzu v2.8h, v4.8h
   5928          fcvtzu v1.8b, v9.8b
   5929          fcvtzu v13.4h, v21.4h
   5930 
   5931          fcvtas v0.16b, v31.16b
   5932          fcvtas v2.8h, v4.8h
   5933          fcvtas v1.8b, v9.8b
   5934          fcvtas v13.4h, v21.4h
   5935 
   5936          fcvtau v0.16b, v31.16b
   5937          fcvtau v2.8h, v4.8h
   5938          fcvtau v1.8b, v9.8b
   5939          fcvtau v13.4h, v21.4h
   5940 
   5941          urecpe v0.16b, v31.16b
   5942          urecpe v2.8h, v4.8h
   5943          urecpe v1.8b, v9.8b
   5944          urecpe v13.4h, v21.4h
   5945          urecpe v1.2d, v9.2d
   5946 
   5947          ursqrte v0.16b, v31.16b
   5948          ursqrte v2.8h, v4.8h
   5949          ursqrte v1.8b, v9.8b
   5950          ursqrte v13.4h, v21.4h
   5951          ursqrte v1.2d, v9.2d
   5952 
   5953          scvtf v0.16b, v31.16b
   5954          scvtf v2.8h, v4.8h
   5955          scvtf v1.8b, v9.8b
   5956          scvtf v13.4h, v21.4h
   5957 
   5958          ucvtf v0.16b, v31.16b
   5959          ucvtf v2.8h, v4.8h
   5960          ucvtf v1.8b, v9.8b
   5961          ucvtf v13.4h, v21.4h
   5962 
   5963          frecpe v0.16b, v31.16b
   5964          frecpe v2.8h, v4.8h
   5965          frecpe v1.8b, v9.8b
   5966          frecpe v13.4h, v21.4h
   5967 
   5968          frsqrte v0.16b, v31.16b
   5969          frsqrte v2.8h, v4.8h
   5970          frsqrte v1.8b, v9.8b
   5971          frsqrte v13.4h, v21.4h
   5972 
   5973          fsqrt v0.16b, v31.16b
   5974          fsqrt v2.8h, v4.8h
   5975          fsqrt v1.8b, v9.8b
   5976          fsqrt v13.4h, v21.4h
   5977 
   5978 // CHECK-ERROR: error: invalid operand for instruction
   5979 // CHECK-ERROR:         frintn v0.16b, v31.16b
   5980 // CHECK-ERROR:                   ^
   5981 // CHECK-ERROR: error: invalid operand for instruction
   5982 // CHECK-ERROR:         frintn v2.8h, v4.8h
   5983 // CHECK-ERROR:                   ^
   5984 // CHECK-ERROR: error: invalid operand for instruction
   5985 // CHECK-ERROR:         frintn v1.8b, v9.8b
   5986 // CHECK-ERROR:                   ^
   5987 // CHECK-ERROR: error: invalid operand for instruction
   5988 // CHECK-ERROR:         frintn v13.4h, v21.4h
   5989 // CHECK-ERROR:                    ^
   5990 // CHECK-ERROR: error: invalid operand for instruction
   5991 // CHECK-ERROR:         frinta v0.16b, v31.16b
   5992 // CHECK-ERROR:                   ^
   5993 // CHECK-ERROR: error: invalid operand for instruction
   5994 // CHECK-ERROR:         frinta v2.8h, v4.8h
   5995 // CHECK-ERROR:                   ^
   5996 // CHECK-ERROR: error: invalid operand for instruction
   5997 // CHECK-ERROR:         frinta v1.8b, v9.8b
   5998 // CHECK-ERROR:                   ^
   5999 // CHECK-ERROR: error: invalid operand for instruction
   6000 // CHECK-ERROR:         frinta v13.4h, v21.4h
   6001 // CHECK-ERROR:                    ^
   6002 // CHECK-ERROR: error: invalid operand for instruction
   6003 // CHECK-ERROR:         frintp v0.16b, v31.16b
   6004 // CHECK-ERROR:                   ^
   6005 // CHECK-ERROR: error: invalid operand for instruction
   6006 // CHECK-ERROR:         frintp v2.8h, v4.8h
   6007 // CHECK-ERROR:                   ^
   6008 // CHECK-ERROR: error: invalid operand for instruction
   6009 // CHECK-ERROR:         frintp v1.8b, v9.8b
   6010 // CHECK-ERROR:                   ^
   6011 // CHECK-ERROR: error: invalid operand for instruction
   6012 // CHECK-ERROR:         frintp v13.4h, v21.4h
   6013 // CHECK-ERROR:                    ^
   6014 // CHECK-ERROR: error: invalid operand for instruction
   6015 // CHECK-ERROR:         frintm v0.16b, v31.16b
   6016 // CHECK-ERROR:                   ^
   6017 // CHECK-ERROR: error: invalid operand for instruction
   6018 // CHECK-ERROR:         frintm v2.8h, v4.8h
   6019 // CHECK-ERROR:                   ^
   6020 // CHECK-ERROR: error: invalid operand for instruction
   6021 // CHECK-ERROR:         frintm v1.8b, v9.8b
   6022 // CHECK-ERROR:                   ^
   6023 // CHECK-ERROR: error: invalid operand for instruction
   6024 // CHECK-ERROR:         frintm v13.4h, v21.4h
   6025 // CHECK-ERROR:                    ^
   6026 // CHECK-ERROR: error: invalid operand for instruction
   6027 // CHECK-ERROR:         frintx v0.16b, v31.16b
   6028 // CHECK-ERROR:                   ^
   6029 // CHECK-ERROR: error: invalid operand for instruction
   6030 // CHECK-ERROR:         frintx v2.8h, v4.8h
   6031 // CHECK-ERROR:                   ^
   6032 // CHECK-ERROR: error: invalid operand for instruction
   6033 // CHECK-ERROR:         frintx v1.8b, v9.8b
   6034 // CHECK-ERROR:                   ^
   6035 // CHECK-ERROR: error: invalid operand for instruction
   6036 // CHECK-ERROR:         frintx v13.4h, v21.4h
   6037 // CHECK-ERROR:                    ^
   6038 // CHECK-ERROR: error: invalid operand for instruction
   6039 // CHECK-ERROR:         frintz v0.16b, v31.16b
   6040 // CHECK-ERROR:                   ^
   6041 // CHECK-ERROR: error: invalid operand for instruction
   6042 // CHECK-ERROR:         frintz v2.8h, v4.8h
   6043 // CHECK-ERROR:                   ^
   6044 // CHECK-ERROR: error: invalid operand for instruction
   6045 // CHECK-ERROR:         frintz v1.8b, v9.8b
   6046 // CHECK-ERROR:                   ^
   6047 // CHECK-ERROR: error: invalid operand for instruction
   6048 // CHECK-ERROR:         frintz v13.4h, v21.4h
   6049 // CHECK-ERROR:                    ^
   6050 // CHECK-ERROR: error: invalid operand for instruction
   6051 // CHECK-ERROR:         frinti v0.16b, v31.16b
   6052 // CHECK-ERROR:                   ^
   6053 // CHECK-ERROR: error: invalid operand for instruction
   6054 // CHECK-ERROR:         frinti v2.8h, v4.8h
   6055 // CHECK-ERROR:                   ^
   6056 // CHECK-ERROR: error: invalid operand for instruction
   6057 // CHECK-ERROR:         frinti v1.8b, v9.8b
   6058 // CHECK-ERROR:                   ^
   6059 // CHECK-ERROR: error: invalid operand for instruction
   6060 // CHECK-ERROR:         frinti v13.4h, v21.4h
   6061 // CHECK-ERROR:                    ^
   6062 // CHECK-ERROR: error: invalid operand for instruction
   6063 // CHECK-ERROR:         fcvtns v0.16b, v31.16b
   6064 // CHECK-ERROR:                   ^
   6065 // CHECK-ERROR: error: invalid operand for instruction
   6066 // CHECK-ERROR:         fcvtns v2.8h, v4.8h
   6067 // CHECK-ERROR:                   ^
   6068 // CHECK-ERROR: error: invalid operand for instruction
   6069 // CHECK-ERROR:         fcvtns v1.8b, v9.8b
   6070 // CHECK-ERROR:                   ^
   6071 // CHECK-ERROR: error: invalid operand for instruction
   6072 // CHECK-ERROR:         fcvtns v13.4h, v21.4h
   6073 // CHECK-ERROR:                    ^
   6074 // CHECK-ERROR: error: invalid operand for instruction
   6075 // CHECK-ERROR:         fcvtnu v0.16b, v31.16b
   6076 // CHECK-ERROR:                   ^
   6077 // CHECK-ERROR: error: invalid operand for instruction
   6078 // CHECK-ERROR:         fcvtnu v2.8h, v4.8h
   6079 // CHECK-ERROR:                   ^
   6080 // CHECK-ERROR: error: invalid operand for instruction
   6081 // CHECK-ERROR:         fcvtnu v1.8b, v9.8b
   6082 // CHECK-ERROR:                   ^
   6083 // CHECK-ERROR: error: invalid operand for instruction
   6084 // CHECK-ERROR:         fcvtnu v13.4h, v21.4h
   6085 // CHECK-ERROR:                    ^
   6086 // CHECK-ERROR: error: invalid operand for instruction
   6087 // CHECK-ERROR:         fcvtps v0.16b, v31.16b
   6088 // CHECK-ERROR:                   ^
   6089 // CHECK-ERROR: error: invalid operand for instruction
   6090 // CHECK-ERROR:         fcvtps v2.8h, v4.8h
   6091 // CHECK-ERROR:                   ^
   6092 // CHECK-ERROR: error: invalid operand for instruction
   6093 // CHECK-ERROR:         fcvtps v1.8b, v9.8b
   6094 // CHECK-ERROR:                   ^
   6095 // CHECK-ERROR: error: invalid operand for instruction
   6096 // CHECK-ERROR:         fcvtps v13.4h, v21.4h
   6097 // CHECK-ERROR:                    ^
   6098 // CHECK-ERROR: error: invalid operand for instruction
   6099 // CHECK-ERROR:         fcvtpu v0.16b, v31.16b
   6100 // CHECK-ERROR:                   ^
   6101 // CHECK-ERROR: error: invalid operand for instruction
   6102 // CHECK-ERROR:         fcvtpu v2.8h, v4.8h
   6103 // CHECK-ERROR:                   ^
   6104 // CHECK-ERROR: error: invalid operand for instruction
   6105 // CHECK-ERROR:         fcvtpu v1.8b, v9.8b
   6106 // CHECK-ERROR:                   ^
   6107 // CHECK-ERROR: error: invalid operand for instruction
   6108 // CHECK-ERROR:         fcvtpu v13.4h, v21.4h
   6109 // CHECK-ERROR:                    ^
   6110 // CHECK-ERROR: error: invalid operand for instruction
   6111 // CHECK-ERROR:         fcvtms v0.16b, v31.16b
   6112 // CHECK-ERROR:                   ^
   6113 // CHECK-ERROR: error: invalid operand for instruction
   6114 // CHECK-ERROR:         fcvtms v2.8h, v4.8h
   6115 // CHECK-ERROR:                   ^
   6116 // CHECK-ERROR: error: invalid operand for instruction
   6117 // CHECK-ERROR:         fcvtms v1.8b, v9.8b
   6118 // CHECK-ERROR:                   ^
   6119 // CHECK-ERROR: error: invalid operand for instruction
   6120 // CHECK-ERROR:         fcvtms v13.4h, v21.4h
   6121 // CHECK-ERROR:                    ^
   6122 // CHECK-ERROR: error: invalid operand for instruction
   6123 // CHECK-ERROR:         fcvtmu v0.16b, v31.16b
   6124 // CHECK-ERROR:                   ^
   6125 // CHECK-ERROR: error: invalid operand for instruction
   6126 // CHECK-ERROR:         fcvtmu v2.8h, v4.8h
   6127 // CHECK-ERROR:                   ^
   6128 // CHECK-ERROR: error: invalid operand for instruction
   6129 // CHECK-ERROR:         fcvtmu v1.8b, v9.8b
   6130 // CHECK-ERROR:                   ^
   6131 // CHECK-ERROR: error: invalid operand for instruction
   6132 // CHECK-ERROR:         fcvtmu v13.4h, v21.4h
   6133 // CHECK-ERROR:                    ^
   6134 // CHECK-ERROR: error: invalid operand for instruction
   6135 // CHECK-ERROR:         fcvtzs v0.16b, v31.16b
   6136 // CHECK-ERROR:                   ^
   6137 // CHECK-ERROR: error: invalid operand for instruction
   6138 // CHECK-ERROR:         fcvtzs v2.8h, v4.8h
   6139 // CHECK-ERROR:                   ^
   6140 // CHECK-ERROR: error: invalid operand for instruction
   6141 // CHECK-ERROR:         fcvtzs v1.8b, v9.8b
   6142 // CHECK-ERROR:                   ^
   6143 // CHECK-ERROR: error: invalid operand for instruction
   6144 // CHECK-ERROR:         fcvtzs v13.4h, v21.4h
   6145 // CHECK-ERROR:                    ^
   6146 // CHECK-ERROR: error: invalid operand for instruction
   6147 // CHECK-ERROR:         fcvtzu v0.16b, v31.16b
   6148 // CHECK-ERROR:                   ^
   6149 // CHECK-ERROR: error: invalid operand for instruction
   6150 // CHECK-ERROR:         fcvtzu v2.8h, v4.8h
   6151 // CHECK-ERROR:                   ^
   6152 // CHECK-ERROR: error: invalid operand for instruction
   6153 // CHECK-ERROR:         fcvtzu v1.8b, v9.8b
   6154 // CHECK-ERROR:                   ^
   6155 // CHECK-ERROR: error: invalid operand for instruction
   6156 // CHECK-ERROR:         fcvtzu v13.4h, v21.4h
   6157 // CHECK-ERROR:                    ^
   6158 // CHECK-ERROR: error: invalid operand for instruction
   6159 // CHECK-ERROR:         fcvtas v0.16b, v31.16b
   6160 // CHECK-ERROR:                   ^
   6161 // CHECK-ERROR: error: invalid operand for instruction
   6162 // CHECK-ERROR:         fcvtas v2.8h, v4.8h
   6163 // CHECK-ERROR:                   ^
   6164 // CHECK-ERROR: error: invalid operand for instruction
   6165 // CHECK-ERROR:         fcvtas v1.8b, v9.8b
   6166 // CHECK-ERROR:                   ^
   6167 // CHECK-ERROR: error: invalid operand for instruction
   6168 // CHECK-ERROR:         fcvtas v13.4h, v21.4h
   6169 // CHECK-ERROR:                    ^
   6170 // CHECK-ERROR: error: invalid operand for instruction
   6171 // CHECK-ERROR:         fcvtau v0.16b, v31.16b
   6172 // CHECK-ERROR:                   ^
   6173 // CHECK-ERROR: error: invalid operand for instruction
   6174 // CHECK-ERROR:         fcvtau v2.8h, v4.8h
   6175 // CHECK-ERROR:                   ^
   6176 // CHECK-ERROR: error: invalid operand for instruction
   6177 // CHECK-ERROR:         fcvtau v1.8b, v9.8b
   6178 // CHECK-ERROR:                   ^
   6179 // CHECK-ERROR: error: invalid operand for instruction
   6180 // CHECK-ERROR:         fcvtau v13.4h, v21.4h
   6181 // CHECK-ERROR:                    ^
   6182 // CHECK-ERROR: error: invalid operand for instruction
   6183 // CHECK-ERROR:         urecpe v0.16b, v31.16b
   6184 // CHECK-ERROR:                   ^
   6185 // CHECK-ERROR: error: invalid operand for instruction
   6186 // CHECK-ERROR:         urecpe v2.8h, v4.8h
   6187 // CHECK-ERROR:                   ^
   6188 // CHECK-ERROR: error: invalid operand for instruction
   6189 // CHECK-ERROR:         urecpe v1.8b, v9.8b
   6190 // CHECK-ERROR:                   ^
   6191 // CHECK-ERROR: error: invalid operand for instruction
   6192 // CHECK-ERROR:         urecpe v13.4h, v21.4h
   6193 // CHECK-ERROR:                    ^
   6194 // CHECK-ERROR: error: invalid operand for instruction
   6195 // CHECK-ERROR:         urecpe v1.2d, v9.2d
   6196 // CHECK-ERROR:                   ^
   6197 // CHECK-ERROR: error: invalid operand for instruction
   6198 // CHECK-ERROR:         ursqrte v0.16b, v31.16b
   6199 // CHECK-ERROR:                    ^
   6200 // CHECK-ERROR: error: invalid operand for instruction
   6201 // CHECK-ERROR:         ursqrte v2.8h, v4.8h
   6202 // CHECK-ERROR:                    ^
   6203 // CHECK-ERROR: error: invalid operand for instruction
   6204 // CHECK-ERROR:         ursqrte v1.8b, v9.8b
   6205 // CHECK-ERROR:                    ^
   6206 // CHECK-ERROR: error: invalid operand for instruction
   6207 // CHECK-ERROR:         ursqrte v13.4h, v21.4h
   6208 // CHECK-ERROR:                     ^
   6209 // CHECK-ERROR: error: invalid operand for instruction
   6210 // CHECK-ERROR:         ursqrte v1.2d, v9.2d
   6211 // CHECK-ERROR:                    ^
   6212 // CHECK-ERROR: error: invalid operand for instruction
   6213 // CHECK-ERROR:         scvtf v0.16b, v31.16b
   6214 // CHECK-ERROR:                  ^
   6215 // CHECK-ERROR: error: invalid operand for instruction
   6216 // CHECK-ERROR:         scvtf v2.8h, v4.8h
   6217 // CHECK-ERROR:                  ^
   6218 // CHECK-ERROR: error: invalid operand for instruction
   6219 // CHECK-ERROR:         scvtf v1.8b, v9.8b
   6220 // CHECK-ERROR:                  ^
   6221 // CHECK-ERROR: error: invalid operand for instruction
   6222 // CHECK-ERROR:         scvtf v13.4h, v21.4h
   6223 // CHECK-ERROR:                   ^
   6224 // CHECK-ERROR: error: invalid operand for instruction
   6225 // CHECK-ERROR:         ucvtf v0.16b, v31.16b
   6226 // CHECK-ERROR:                  ^
   6227 // CHECK-ERROR: error: invalid operand for instruction
   6228 // CHECK-ERROR:         ucvtf v2.8h, v4.8h
   6229 // CHECK-ERROR:                  ^
   6230 // CHECK-ERROR: error: invalid operand for instruction
   6231 // CHECK-ERROR:         ucvtf v1.8b, v9.8b
   6232 // CHECK-ERROR:                  ^
   6233 // CHECK-ERROR: error: invalid operand for instruction
   6234 // CHECK-ERROR:         ucvtf v13.4h, v21.4h
   6235 // CHECK-ERROR:                   ^
   6236 // CHECK-ERROR: error: invalid operand for instruction
   6237 // CHECK-ERROR:         frecpe v0.16b, v31.16b
   6238 // CHECK-ERROR:                   ^
   6239 // CHECK-ERROR: error: invalid operand for instruction
   6240 // CHECK-ERROR:         frecpe v2.8h, v4.8h
   6241 // CHECK-ERROR:                   ^
   6242 // CHECK-ERROR: error: invalid operand for instruction
   6243 // CHECK-ERROR:         frecpe v1.8b, v9.8b
   6244 // CHECK-ERROR:                   ^
   6245 // CHECK-ERROR: error: invalid operand for instruction
   6246 // CHECK-ERROR:         frecpe v13.4h, v21.4h
   6247 // CHECK-ERROR:                    ^
   6248 // CHECK-ERROR: error: invalid operand for instruction
   6249 // CHECK-ERROR:         frsqrte v0.16b, v31.16b
   6250 // CHECK-ERROR:                    ^
   6251 // CHECK-ERROR: error: invalid operand for instruction
   6252 // CHECK-ERROR:         frsqrte v2.8h, v4.8h
   6253 // CHECK-ERROR:                    ^
   6254 // CHECK-ERROR: error: invalid operand for instruction
   6255 // CHECK-ERROR:         frsqrte v1.8b, v9.8b
   6256 // CHECK-ERROR:                    ^
   6257 // CHECK-ERROR: error: invalid operand for instruction
   6258 // CHECK-ERROR:         frsqrte v13.4h, v21.4h
   6259 // CHECK-ERROR:                     ^
   6260 // CHECK-ERROR: error: invalid operand for instruction
   6261 // CHECK-ERROR:         fsqrt v0.16b, v31.16b
   6262 // CHECK-ERROR:                  ^
   6263 // CHECK-ERROR: error: invalid operand for instruction
   6264 // CHECK-ERROR:         fsqrt v2.8h, v4.8h
   6265 // CHECK-ERROR:                  ^
   6266 // CHECK-ERROR: error: invalid operand for instruction
   6267 // CHECK-ERROR:         fsqrt v1.8b, v9.8b
   6268 // CHECK-ERROR:                  ^
   6269 // CHECK-ERROR: error: invalid operand for instruction
   6270 // CHECK-ERROR:         fsqrt v13.4h, v21.4h
   6271 // CHECK-ERROR:                   ^
   6272 
   6273 //----------------------------------------------------------------------
   6274 // Scalar Floating-point Convert To Signed Fixed-point (Immediate)
   6275 //----------------------------------------------------------------------
   6276 
   6277     fcvtzs s21, s12, #0
   6278     fcvtzs d21, d12, #65
   6279     fcvtzs s21, d12, #1
   6280 
   6281 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   6282 // CHECK-ERROR:        fcvtzs s21, s12, #0
   6283 // CHECK-ERROR:                         ^
   6284 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   6285 // CHECK-ERROR:        fcvtzs d21, d12, #65
   6286 // CHECK-ERROR:                         ^
   6287 // CHECK-ERROR: error: invalid operand for instruction
   6288 // CHECK-ERROR:        fcvtzs s21, d12, #1
   6289 // CHECK-ERROR:                    ^
   6290 
   6291 //----------------------------------------------------------------------
   6292 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
   6293 //----------------------------------------------------------------------
   6294 
   6295     fcvtzu s21, s12, #33
   6296     fcvtzu d21, d12, #0
   6297     fcvtzu s21, d12, #1
   6298 
   6299 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32]
   6300 // CHECK-ERROR:        fcvtzu s21, s12, #33
   6301 // CHECK-ERROR:                         ^
   6302 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64]
   6303 // CHECK-ERROR:        fcvtzu d21, d12, #0
   6304 // CHECK-ERROR:                         ^
   6305 // CHECK-ERROR: error: invalid operand for instruction
   6306 // CHECK-ERROR:        fcvtzu s21, d12, #1
   6307 // CHECK-ERROR:                    ^
   6308 
   6309 //----------------------------------------------------------------------
   6310 // Scalar Unsigned Saturating Extract Narrow
   6311 //----------------------------------------------------------------------
   6312 
   6313         aese v0.8h, v1.8h
   6314         aese v0.4s, v1.4s
   6315         aese v0.2d, v1.2d
   6316         aesd v0.8h, v1.8h
   6317         aesmc v0.8h, v1.8h
   6318         aesimc v0.8h, v1.8h
   6319 
   6320 // CHECK:  error: invalid operand for instruction
   6321 // CHECK:         aese v0.8h, v1.8h
   6322 // CHECK:                 ^
   6323 // CHECK:  error: invalid operand for instruction
   6324 // CHECK:         aese v0.4s, v1.4s
   6325 // CHECK:                 ^
   6326 // CHECK:  error: invalid operand for instruction
   6327 // CHECK:         aese v0.2d, v1.2d
   6328 // CHECK:                 ^
   6329 // CHECK:  error: invalid operand for instruction
   6330 // CHECK:         aesd v0.8h, v1.8h
   6331 // CHECK:                 ^
   6332 // CHECK:  error: invalid operand for instruction
   6333 // CHECK:         aesmc v0.8h, v1.8h
   6334 // CHECK:                  ^
   6335 // CHECK:  error: invalid operand for instruction
   6336 // CHECK:         aesimc v0.8h, v1.8h
   6337 // CHECK:                   ^
   6338 
   6339         sha1h b0, b1
   6340         sha1h h0, h1
   6341         sha1h d0, d1
   6342         sha1h q0, q1
   6343         sha1su1 v0.16b, v1.16b
   6344         sha1su1 v0.8h, v1.8h
   6345         sha1su1 v0.2d, v1.2d
   6346         sha256su0 v0.16b, v1.16b
   6347 
   6348 // CHECK:  error: invalid operand for instruction
   6349 // CHECK:         sha1h b0, b1
   6350 // CHECK:               ^
   6351 // CHECK:  error: invalid operand for instruction
   6352 // CHECK:         sha1h h0, h1
   6353 // CHECK:               ^
   6354 // CHECK:  error: invalid operand for instruction
   6355 // CHECK:         sha1h d0, d1
   6356 // CHECK:               ^
   6357 // CHECK:  error: invalid operand for instruction
   6358 // CHECK:         sha1h q0, q1
   6359 // CHECK:               ^
   6360 // CHECK:  error: invalid operand for instruction
   6361 // CHECK:         sha1su1 v0.16b, v1.16b
   6362 // CHECK:                    ^
   6363 // CHECK:  error: invalid operand for instruction
   6364 // CHECK:         sha1su1 v0.8h, v1.8h
   6365 // CHECK:                    ^
   6366 // CHECK:  error: invalid operand for instruction
   6367 // CHECK:         sha1su1 v0.2d, v1.2d
   6368 // CHECK:                    ^
   6369 // CHECK:  error: invalid operand for instruction
   6370 // CHECK:         sha256su0 v0.16b, v1.16b
   6371 // CHECK:                      ^
   6372 
   6373         sha1c q0, q1, v2.4s
   6374         sha1p q0, q1, v2.4s
   6375         sha1m q0, q1, v2.4s
   6376         sha1su0 v0.16b, v1.16b, v2.16b
   6377         sha1su0 v0.8h, v1.8h, v2.8h
   6378         sha1su0 v0.2d, v1.2d, v2.2d
   6379         sha256h q0, q1, q2
   6380         sha256h v0.4s, v1.4s, v2.4s
   6381         sha256h2 q0, q1, q2
   6382         sha256su1 v0.16b, v1.16b, v2.16b
   6383 
   6384 // CHECK:  error: invalid operand for instruction
   6385 // CHECK:         sha1c q0, q1, v2.4s
   6386 // CHECK:                   ^
   6387 // CHECK:  error: invalid operand for instruction
   6388 // CHECK:         sha1p q0, q1, v2.4s
   6389 // CHECK:                   ^
   6390 // CHECK:  error: invalid operand for instruction
   6391 // CHECK:         sha1m q0, q1, v2.4s
   6392 // CHECK:                   ^
   6393 // CHECK:  error: invalid operand for instruction
   6394 // CHECK:         sha1su0 v0.16b, v1.16b, v2.16b
   6395 // CHECK:                    ^
   6396 // CHECK:  error: invalid operand for instruction
   6397 // CHECK:         sha1su0 v0.8h, v1.8h, v2.8h
   6398 // CHECK:                    ^
   6399 // CHECK:  error: invalid operand for instruction
   6400 // CHECK:         sha1su0 v0.2d, v1.2d, v2.2d
   6401 // CHECK:                    ^
   6402 // CHECK:  error: too few operands for instruction
   6403 // CHECK:         sha256h q0, q1, q2
   6404 // CHECK:         ^
   6405 // CHECK:  error: invalid operand for instruction
   6406 // CHECK:         sha256h v0.4s, v1.4s, v2.4s
   6407 // CHECK:                    ^
   6408 // CHECK:  error: too few operands for instruction
   6409 // CHECK:         sha256h2 q0, q1, q2
   6410 // CHECK:         ^
   6411 // CHECK:  error: invalid operand for instruction
   6412 // CHECK:         sha256su1 v0.16b, v1.16b, v2.16b
   6413 // CHECK:                      ^
   6414 
   6415 //----------------------------------------------------------------------
   6416 // Bitwise extract
   6417 //----------------------------------------------------------------------
   6418 
   6419         ext v0.8b, v1.8b, v2.4h, #0x3
   6420         ext v0.4h, v1.4h, v2.4h, #0x3
   6421         ext v0.2s, v1.2s, v2.2s, #0x1
   6422         ext v0.1d, v1.1d, v2.1d, #0x0
   6423 
   6424 // CHECK-ERROR: error: invalid operand for instruction
   6425 // CHECK-ERROR:         ext v0.8b, v1.8b, v2.4h, #0x3
   6426 // CHECK-ERROR:                              ^
   6427 // CHECK-ERROR: error: invalid operand for instruction
   6428 // CHECK-ERROR:         ext v0.4h, v1.4h, v2.4h, #0x3
   6429 // CHECK-ERROR:                ^
   6430 // CHECK-ERROR: error: invalid operand for instruction
   6431 // CHECK-ERROR:         ext v0.2s, v1.2s, v2.2s, #0x1
   6432 // CHECK-ERROR:                ^
   6433 // CHECK-ERROR: error: invalid operand for instruction
   6434 // CHECK-ERROR:         ext v0.1d, v1.1d, v2.1d, #0x0
   6435 // CHECK-ERROR:                ^
   6436 
   6437         ext v0.16b, v1.16b, v2.8h, #0x3
   6438         ext v0.8h, v1.8h, v2.8h, #0x3
   6439         ext v0.4s, v1.4s, v2.4s, #0x1
   6440         ext v0.2d, v1.2d, v2.2d, #0x0
   6441 
   6442 // CHECK-ERROR: error: invalid operand for instruction
   6443 // CHECK-ERROR:         ext v0.16b, v1.16b, v2.8h, #0x3
   6444 // CHECK-ERROR:                                ^
   6445 // CHECK-ERROR: error: invalid operand for instruction
   6446 // CHECK-ERROR:         ext v0.8h, v1.8h, v2.8h, #0x3
   6447 // CHECK-ERROR:                ^
   6448 // CHECK-ERROR: error: invalid operand for instruction
   6449 // CHECK-ERROR:         ext v0.4s, v1.4s, v2.4s, #0x1
   6450 // CHECK-ERROR:                ^
   6451 // CHECK-ERROR: error: invalid operand for instruction
   6452 // CHECK-ERROR:         ext v0.2d, v1.2d, v2.2d, #0x0
   6453 // CHECK-ERROR:                ^
   6454 
   6455 
   6456 //----------------------------------------------------------------------
   6457 // Permutation with 3 vectors
   6458 //----------------------------------------------------------------------
   6459 
   6460         uzp1 v0.16b, v1.8b, v2.8b
   6461         uzp1 v0.8b, v1.4b, v2.4b
   6462         uzp1 v0.8h, v1.4h, v2.4h
   6463         uzp1 v0.4h, v1.2h, v2.2h
   6464         uzp1 v0.4s, v1.2s, v2.2s
   6465         uzp1 v0.2s, v1.1s, v2.1s
   6466         uzp1 v0.2d, v1.1d, v2.1d
   6467         uzp1 v0.1d, v1.1d, v2.1d
   6468 
   6469 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
   6470 // CHECK-ERROR         uzp1 v0.16b, v1.8b, v2.8b
   6471 // CHECK-ERROR                      ^
   6472 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
   6473 // CHECK-ERROR         uzp1 v0.8b, v1.4b, v2.4b
   6474 // CHECK-ERROR                     ^
   6475 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
   6476 // CHECK-ERROR         uzp1 v0.8h, v1.4h, v2.4h
   6477 // CHECK-ERROR                     ^
   6478 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
   6479 // CHECK-ERROR         uzp1 v0.4h, v1.2h, v2.2h
   6480 // CHECK-ERROR                     ^
   6481 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
   6482 // CHECK-ERROR         uzp1 v0.4s, v1.2s, v2.2s
   6483 // CHECK-ERROR                     ^
   6484 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
   6485 // CHECK-ERROR         uzp1 v0.2s, v1.1s, v2.1s
   6486 // CHECK-ERROR                     ^
   6487 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
   6488 // CHECK-ERROR         uzp1 v0.2d, v1.1d, v2.1d
   6489 // CHECK-ERROR                     ^
   6490 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
   6491 // CHECK-ERROR         uzp1 v0.1d, v1.1d, v2.1d
   6492 // CHECK-ERROR                 ^
   6493 
   6494         uzp2 v0.16b, v1.8b, v2.8b
   6495         uzp2 v0.8b, v1.4b, v2.4b
   6496         uzp2 v0.8h, v1.4h, v2.4h
   6497         uzp2 v0.4h, v1.2h, v2.2h
   6498         uzp2 v0.4s, v1.2s, v2.2s
   6499         uzp2 v0.2s, v1.1s, v2.1s
   6500         uzp2 v0.2d, v1.1d, v2.1d
   6501         uzp2 v0.1d, v1.1d, v2.1d
   6502 
   6503 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
   6504 // CHECK-ERROR         uzp2 v0.16b, v1.8b, v2.8b
   6505 // CHECK-ERROR                      ^
   6506 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
   6507 // CHECK-ERROR         uzp2 v0.8b, v1.4b, v2.4b
   6508 // CHECK-ERROR                     ^
   6509 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
   6510 // CHECK-ERROR         uzp2 v0.8h, v1.4h, v2.4h
   6511 // CHECK-ERROR                     ^
   6512 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
   6513 // CHECK-ERROR         uzp2 v0.4h, v1.2h, v2.2h
   6514 // CHECK-ERROR                     ^
   6515 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
   6516 // CHECK-ERROR         uzp2 v0.4s, v1.2s, v2.2s
   6517 // CHECK-ERROR                     ^
   6518 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
   6519 // CHECK-ERROR         uzp2 v0.2s, v1.1s, v2.1s
   6520 // CHECK-ERROR                     ^
   6521 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
   6522 // CHECK-ERROR         uzp2 v0.2d, v1.1d, v2.1d
   6523 // CHECK-ERROR                     ^
   6524 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
   6525 // CHECK-ERROR         uzp2 v0.1d, v1.1d, v2.1d
   6526 // CHECK-ERROR                 ^
   6527 
   6528         zip1 v0.16b, v1.8b, v2.8b
   6529         zip1 v0.8b, v1.4b, v2.4b
   6530         zip1 v0.8h, v1.4h, v2.4h
   6531         zip1 v0.4h, v1.2h, v2.2h
   6532         zip1 v0.4s, v1.2s, v2.2s
   6533         zip1 v0.2s, v1.1s, v2.1s
   6534         zip1 v0.2d, v1.1d, v2.1d
   6535         zip1 v0.1d, v1.1d, v2.1d
   6536 
   6537 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
   6538 // CHECK-ERROR         zip1 v0.16b, v1.8b, v2.8b
   6539 // CHECK-ERROR                      ^
   6540 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
   6541 // CHECK-ERROR         zip1 v0.8b, v1.4b, v2.4b
   6542 // CHECK-ERROR                     ^
   6543 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
   6544 // CHECK-ERROR         zip1 v0.8h, v1.4h, v2.4h
   6545 // CHECK-ERROR                     ^
   6546 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
   6547 // CHECK-ERROR         zip1 v0.4h, v1.2h, v2.2h
   6548 // CHECK-ERROR                     ^
   6549 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
   6550 // CHECK-ERROR         zip1 v0.4s, v1.2s, v2.2s
   6551 // CHECK-ERROR                     ^
   6552 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
   6553 // CHECK-ERROR         zip1 v0.2s, v1.1s, v2.1s
   6554 // CHECK-ERROR                     ^
   6555 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
   6556 // CHECK-ERROR         zip1 v0.2d, v1.1d, v2.1d
   6557 // CHECK-ERROR                     ^
   6558 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
   6559 // CHECK-ERROR         zip1 v0.1d, v1.1d, v2.1d
   6560 // CHECK-ERROR                 ^
   6561 
   6562         zip2 v0.16b, v1.8b, v2.8b
   6563         zip2 v0.8b, v1.4b, v2.4b
   6564         zip2 v0.8h, v1.4h, v2.4h
   6565         zip2 v0.4h, v1.2h, v2.2h
   6566         zip2 v0.4s, v1.2s, v2.2s
   6567         zip2 v0.2s, v1.1s, v2.1s
   6568         zip2 v0.2d, v1.1d, v2.1d
   6569         zip2 v0.1d, v1.1d, v2.1d
   6570 
   6571 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
   6572 // CHECK-ERROR         zip2 v0.16b, v1.8b, v2.8b
   6573 // CHECK-ERROR                      ^
   6574 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
   6575 // CHECK-ERROR         zip2 v0.8b, v1.4b, v2.4b
   6576 // CHECK-ERROR                     ^
   6577 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
   6578 // CHECK-ERROR         zip2 v0.8h, v1.4h, v2.4h
   6579 // CHECK-ERROR                     ^
   6580 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
   6581 // CHECK-ERROR         zip2 v0.4h, v1.2h, v2.2h
   6582 // CHECK-ERROR                     ^
   6583 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
   6584 // CHECK-ERROR         zip2 v0.4s, v1.2s, v2.2s
   6585 // CHECK-ERROR                     ^
   6586 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
   6587 // CHECK-ERROR         zip2 v0.2s, v1.1s, v2.1s
   6588 // CHECK-ERROR                     ^
   6589 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
   6590 // CHECK-ERROR         zip2 v0.2d, v1.1d, v2.1d
   6591 // CHECK-ERROR                     ^
   6592 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
   6593 // CHECK-ERROR         zip2 v0.1d, v1.1d, v2.1d
   6594 // CHECK-ERROR                 ^
   6595 
   6596         trn1 v0.16b, v1.8b, v2.8b
   6597         trn1 v0.8b, v1.4b, v2.4b
   6598         trn1 v0.8h, v1.4h, v2.4h
   6599         trn1 v0.4h, v1.2h, v2.2h
   6600         trn1 v0.4s, v1.2s, v2.2s
   6601         trn1 v0.2s, v1.1s, v2.1s
   6602         trn1 v0.2d, v1.1d, v2.1d
   6603         trn1 v0.1d, v1.1d, v2.1d
   6604 
   6605 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
   6606 // CHECK-ERROR         trn1 v0.16b, v1.8b, v2.8b
   6607 // CHECK-ERROR                      ^
   6608 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
   6609 // CHECK-ERROR         trn1 v0.8b, v1.4b, v2.4b
   6610 // CHECK-ERROR                     ^
   6611 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
   6612 // CHECK-ERROR         trn1 v0.8h, v1.4h, v2.4h
   6613 // CHECK-ERROR                     ^
   6614 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
   6615 // CHECK-ERROR         trn1 v0.4h, v1.2h, v2.2h
   6616 // CHECK-ERROR                     ^
   6617 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
   6618 // CHECK-ERROR         trn1 v0.4s, v1.2s, v2.2s
   6619 // CHECK-ERROR                     ^
   6620 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
   6621 // CHECK-ERROR         trn1 v0.2s, v1.1s, v2.1s
   6622 // CHECK-ERROR                     ^
   6623 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
   6624 // CHECK-ERROR         trn1 v0.2d, v1.1d, v2.1d
   6625 // CHECK-ERROR                     ^
   6626 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
   6627 // CHECK-ERROR         trn1 v0.1d, v1.1d, v2.1d
   6628 // CHECK-ERROR                 ^
   6629 
   6630         trn2 v0.16b, v1.8b, v2.8b
   6631         trn2 v0.8b, v1.4b, v2.4b
   6632         trn2 v0.8h, v1.4h, v2.4h
   6633         trn2 v0.4h, v1.2h, v2.2h
   6634         trn2 v0.4s, v1.2s, v2.2s
   6635         trn2 v0.2s, v1.1s, v2.1s
   6636         trn2 v0.2d, v1.1d, v2.1d
   6637         trn2 v0.1d, v1.1d, v2.1d
   6638 
   6639 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
   6640 // CHECK-ERROR         trn2 v0.16b, v1.8b, v2.8b
   6641 // CHECK-ERROR                      ^
   6642 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
   6643 // CHECK-ERROR         trn2 v0.8b, v1.4b, v2.4b
   6644 // CHECK-ERROR                     ^
   6645 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
   6646 // CHECK-ERROR         trn2 v0.8h, v1.4h, v2.4h
   6647 // CHECK-ERROR                     ^
   6648 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
   6649 // CHECK-ERROR         trn2 v0.4h, v1.2h, v2.2h
   6650 // CHECK-ERROR                     ^
   6651 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
   6652 // CHECK-ERROR         trn2 v0.4s, v1.2s, v2.2s
   6653 // CHECK-ERROR                     ^
   6654 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
   6655 // CHECK-ERROR         trn2 v0.2s, v1.1s, v2.1s
   6656 // CHECK-ERROR                     ^
   6657 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
   6658 // CHECK-ERROR         trn2 v0.2d, v1.1d, v2.1d
   6659 // CHECK-ERROR                     ^
   6660 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
   6661 // CHECK-ERROR         trn2 v0.1d, v1.1d, v2.1d
   6662 // CHECK-ERROR                 ^
   6663 
   6664 //----------------------------------------------------------------------
   6665 // Permutation with 3 vectors
   6666 //----------------------------------------------------------------------
   6667 
   6668         uzp1 v0.16b, v1.8b, v2.8b
   6669         uzp1 v0.8b, v1.4b, v2.4b
   6670         uzp1 v0.8h, v1.4h, v2.4h
   6671         uzp1 v0.4h, v1.2h, v2.2h
   6672         uzp1 v0.4s, v1.2s, v2.2s
   6673         uzp1 v0.2s, v1.1s, v2.1s
   6674         uzp1 v0.2d, v1.1d, v2.1d
   6675         uzp1 v0.1d, v1.1d, v2.1d
   6676 
   6677 // CHECK-ERROR <stdin>:4289:22: error: invalid operand for instruction
   6678 // CHECK-ERROR         uzp1 v0.16b, v1.8b, v2.8b
   6679 // CHECK-ERROR                      ^
   6680 // CHECK-ERROR <stdin>:4290:21: error: invalid operand for instruction
   6681 // CHECK-ERROR         uzp1 v0.8b, v1.4b, v2.4b
   6682 // CHECK-ERROR                     ^
   6683 // CHECK-ERROR <stdin>:4291:21: error: invalid operand for instruction
   6684 // CHECK-ERROR         uzp1 v0.8h, v1.4h, v2.4h
   6685 // CHECK-ERROR                     ^
   6686 // CHECK-ERROR <stdin>:4292:21: error: invalid operand for instruction
   6687 // CHECK-ERROR         uzp1 v0.4h, v1.2h, v2.2h
   6688 // CHECK-ERROR                     ^
   6689 // CHECK-ERROR <stdin>:4293:21: error: invalid operand for instruction
   6690 // CHECK-ERROR         uzp1 v0.4s, v1.2s, v2.2s
   6691 // CHECK-ERROR                     ^
   6692 // CHECK-ERROR <stdin>:4294:21: error: invalid operand for instruction
   6693 // CHECK-ERROR         uzp1 v0.2s, v1.1s, v2.1s
   6694 // CHECK-ERROR                     ^
   6695 // CHECK-ERROR <stdin>:4295:21: error: invalid operand for instruction
   6696 // CHECK-ERROR         uzp1 v0.2d, v1.1d, v2.1d
   6697 // CHECK-ERROR                     ^
   6698 // CHECK-ERROR <stdin>:4296:17: error: invalid operand for instruction
   6699 // CHECK-ERROR         uzp1 v0.1d, v1.1d, v2.1d
   6700 // CHECK-ERROR                 ^
   6701 
   6702         uzp2 v0.16b, v1.8b, v2.8b
   6703         uzp2 v0.8b, v1.4b, v2.4b
   6704         uzp2 v0.8h, v1.4h, v2.4h
   6705         uzp2 v0.4h, v1.2h, v2.2h
   6706         uzp2 v0.4s, v1.2s, v2.2s
   6707         uzp2 v0.2s, v1.1s, v2.1s
   6708         uzp2 v0.2d, v1.1d, v2.1d
   6709         uzp2 v0.1d, v1.1d, v2.1d
   6710 
   6711 // CHECK-ERROR <stdin>:4298:22: error: invalid operand for instruction
   6712 // CHECK-ERROR         uzp2 v0.16b, v1.8b, v2.8b
   6713 // CHECK-ERROR                      ^
   6714 // CHECK-ERROR <stdin>:4299:21: error: invalid operand for instruction
   6715 // CHECK-ERROR         uzp2 v0.8b, v1.4b, v2.4b
   6716 // CHECK-ERROR                     ^
   6717 // CHECK-ERROR <stdin>:4300:21: error: invalid operand for instruction
   6718 // CHECK-ERROR         uzp2 v0.8h, v1.4h, v2.4h
   6719 // CHECK-ERROR                     ^
   6720 // CHECK-ERROR <stdin>:4301:21: error: invalid operand for instruction
   6721 // CHECK-ERROR         uzp2 v0.4h, v1.2h, v2.2h
   6722 // CHECK-ERROR                     ^
   6723 // CHECK-ERROR <stdin>:4302:21: error: invalid operand for instruction
   6724 // CHECK-ERROR         uzp2 v0.4s, v1.2s, v2.2s
   6725 // CHECK-ERROR                     ^
   6726 // CHECK-ERROR <stdin>:4303:21: error: invalid operand for instruction
   6727 // CHECK-ERROR         uzp2 v0.2s, v1.1s, v2.1s
   6728 // CHECK-ERROR                     ^
   6729 // CHECK-ERROR <stdin>:4304:21: error: invalid operand for instruction
   6730 // CHECK-ERROR         uzp2 v0.2d, v1.1d, v2.1d
   6731 // CHECK-ERROR                     ^
   6732 // CHECK-ERROR <stdin>:4305:17: error: invalid operand for instruction
   6733 // CHECK-ERROR         uzp2 v0.1d, v1.1d, v2.1d
   6734 // CHECK-ERROR                 ^
   6735 
   6736         zip1 v0.16b, v1.8b, v2.8b
   6737         zip1 v0.8b, v1.4b, v2.4b
   6738         zip1 v0.8h, v1.4h, v2.4h
   6739         zip1 v0.4h, v1.2h, v2.2h
   6740         zip1 v0.4s, v1.2s, v2.2s
   6741         zip1 v0.2s, v1.1s, v2.1s
   6742         zip1 v0.2d, v1.1d, v2.1d
   6743         zip1 v0.1d, v1.1d, v2.1d
   6744 
   6745 // CHECK-ERROR <stdin>:4307:22: error: invalid operand for instruction
   6746 // CHECK-ERROR         zip1 v0.16b, v1.8b, v2.8b
   6747 // CHECK-ERROR                      ^
   6748 // CHECK-ERROR <stdin>:4308:21: error: invalid operand for instruction
   6749 // CHECK-ERROR         zip1 v0.8b, v1.4b, v2.4b
   6750 // CHECK-ERROR                     ^
   6751 // CHECK-ERROR <stdin>:4309:21: error: invalid operand for instruction
   6752 // CHECK-ERROR         zip1 v0.8h, v1.4h, v2.4h
   6753 // CHECK-ERROR                     ^
   6754 // CHECK-ERROR <stdin>:4310:21: error: invalid operand for instruction
   6755 // CHECK-ERROR         zip1 v0.4h, v1.2h, v2.2h
   6756 // CHECK-ERROR                     ^
   6757 // CHECK-ERROR <stdin>:4311:21: error: invalid operand for instruction
   6758 // CHECK-ERROR         zip1 v0.4s, v1.2s, v2.2s
   6759 // CHECK-ERROR                     ^
   6760 // CHECK-ERROR <stdin>:4312:21: error: invalid operand for instruction
   6761 // CHECK-ERROR         zip1 v0.2s, v1.1s, v2.1s
   6762 // CHECK-ERROR                     ^
   6763 // CHECK-ERROR <stdin>:4313:21: error: invalid operand for instruction
   6764 // CHECK-ERROR         zip1 v0.2d, v1.1d, v2.1d
   6765 // CHECK-ERROR                     ^
   6766 // CHECK-ERROR <stdin>:4314:17: error: invalid operand for instruction
   6767 // CHECK-ERROR         zip1 v0.1d, v1.1d, v2.1d
   6768 // CHECK-ERROR                 ^
   6769 
   6770         zip2 v0.16b, v1.8b, v2.8b
   6771         zip2 v0.8b, v1.4b, v2.4b
   6772         zip2 v0.8h, v1.4h, v2.4h
   6773         zip2 v0.4h, v1.2h, v2.2h
   6774         zip2 v0.4s, v1.2s, v2.2s
   6775         zip2 v0.2s, v1.1s, v2.1s
   6776         zip2 v0.2d, v1.1d, v2.1d
   6777         zip2 v0.1d, v1.1d, v2.1d
   6778 
   6779 // CHECK-ERROR <stdin>:4316:22: error: invalid operand for instruction
   6780 // CHECK-ERROR         zip2 v0.16b, v1.8b, v2.8b
   6781 // CHECK-ERROR                      ^
   6782 // CHECK-ERROR <stdin>:4317:21: error: invalid operand for instruction
   6783 // CHECK-ERROR         zip2 v0.8b, v1.4b, v2.4b
   6784 // CHECK-ERROR                     ^
   6785 // CHECK-ERROR <stdin>:4318:21: error: invalid operand for instruction
   6786 // CHECK-ERROR         zip2 v0.8h, v1.4h, v2.4h
   6787 // CHECK-ERROR                     ^
   6788 // CHECK-ERROR <stdin>:4319:21: error: invalid operand for instruction
   6789 // CHECK-ERROR         zip2 v0.4h, v1.2h, v2.2h
   6790 // CHECK-ERROR                     ^
   6791 // CHECK-ERROR <stdin>:4320:21: error: invalid operand for instruction
   6792 // CHECK-ERROR         zip2 v0.4s, v1.2s, v2.2s
   6793 // CHECK-ERROR                     ^
   6794 // CHECK-ERROR <stdin>:4321:21: error: invalid operand for instruction
   6795 // CHECK-ERROR         zip2 v0.2s, v1.1s, v2.1s
   6796 // CHECK-ERROR                     ^
   6797 // CHECK-ERROR <stdin>:4322:21: error: invalid operand for instruction
   6798 // CHECK-ERROR         zip2 v0.2d, v1.1d, v2.1d
   6799 // CHECK-ERROR                     ^
   6800 // CHECK-ERROR <stdin>:4323:17: error: invalid operand for instruction
   6801 // CHECK-ERROR         zip2 v0.1d, v1.1d, v2.1d
   6802 // CHECK-ERROR                 ^
   6803 
   6804         trn1 v0.16b, v1.8b, v2.8b
   6805         trn1 v0.8b, v1.4b, v2.4b
   6806         trn1 v0.8h, v1.4h, v2.4h
   6807         trn1 v0.4h, v1.2h, v2.2h
   6808         trn1 v0.4s, v1.2s, v2.2s
   6809         trn1 v0.2s, v1.1s, v2.1s
   6810         trn1 v0.2d, v1.1d, v2.1d
   6811         trn1 v0.1d, v1.1d, v2.1d
   6812 
   6813 // CHECK-ERROR <stdin>:4325:22: error: invalid operand for instruction
   6814 // CHECK-ERROR         trn1 v0.16b, v1.8b, v2.8b
   6815 // CHECK-ERROR                      ^
   6816 // CHECK-ERROR <stdin>:4326:21: error: invalid operand for instruction
   6817 // CHECK-ERROR         trn1 v0.8b, v1.4b, v2.4b
   6818 // CHECK-ERROR                     ^
   6819 // CHECK-ERROR <stdin>:4327:21: error: invalid operand for instruction
   6820 // CHECK-ERROR         trn1 v0.8h, v1.4h, v2.4h
   6821 // CHECK-ERROR                     ^
   6822 // CHECK-ERROR <stdin>:4328:21: error: invalid operand for instruction
   6823 // CHECK-ERROR         trn1 v0.4h, v1.2h, v2.2h
   6824 // CHECK-ERROR                     ^
   6825 // CHECK-ERROR <stdin>:4329:21: error: invalid operand for instruction
   6826 // CHECK-ERROR         trn1 v0.4s, v1.2s, v2.2s
   6827 // CHECK-ERROR                     ^
   6828 // CHECK-ERROR <stdin>:4330:21: error: invalid operand for instruction
   6829 // CHECK-ERROR         trn1 v0.2s, v1.1s, v2.1s
   6830 // CHECK-ERROR                     ^
   6831 // CHECK-ERROR <stdin>:4331:21: error: invalid operand for instruction
   6832 // CHECK-ERROR         trn1 v0.2d, v1.1d, v2.1d
   6833 // CHECK-ERROR                     ^
   6834 // CHECK-ERROR <stdin>:4332:17: error: invalid operand for instruction
   6835 // CHECK-ERROR         trn1 v0.1d, v1.1d, v2.1d
   6836 // CHECK-ERROR                 ^
   6837 
   6838         trn2 v0.16b, v1.8b, v2.8b
   6839         trn2 v0.8b, v1.4b, v2.4b
   6840         trn2 v0.8h, v1.4h, v2.4h
   6841         trn2 v0.4h, v1.2h, v2.2h
   6842         trn2 v0.4s, v1.2s, v2.2s
   6843         trn2 v0.2s, v1.1s, v2.1s
   6844         trn2 v0.2d, v1.1d, v2.1d
   6845         trn2 v0.1d, v1.1d, v2.1d
   6846 
   6847 // CHECK-ERROR <stdin>:4334:22: error: invalid operand for instruction
   6848 // CHECK-ERROR         trn2 v0.16b, v1.8b, v2.8b
   6849 // CHECK-ERROR                      ^
   6850 // CHECK-ERROR <stdin>:4335:21: error: invalid operand for instruction
   6851 // CHECK-ERROR         trn2 v0.8b, v1.4b, v2.4b
   6852 // CHECK-ERROR                     ^
   6853 // CHECK-ERROR <stdin>:4336:21: error: invalid operand for instruction
   6854 // CHECK-ERROR         trn2 v0.8h, v1.4h, v2.4h
   6855 // CHECK-ERROR                     ^
   6856 // CHECK-ERROR <stdin>:4337:21: error: invalid operand for instruction
   6857 // CHECK-ERROR         trn2 v0.4h, v1.2h, v2.2h
   6858 // CHECK-ERROR                     ^
   6859 // CHECK-ERROR <stdin>:4338:21: error: invalid operand for instruction
   6860 // CHECK-ERROR         trn2 v0.4s, v1.2s, v2.2s
   6861 // CHECK-ERROR                     ^
   6862 // CHECK-ERROR <stdin>:4339:21: error: invalid operand for instruction
   6863 // CHECK-ERROR         trn2 v0.2s, v1.1s, v2.1s
   6864 // CHECK-ERROR                     ^
   6865 // CHECK-ERROR <stdin>:4340:21: error: invalid operand for instruction
   6866 // CHECK-ERROR         trn2 v0.2d, v1.1d, v2.1d
   6867 // CHECK-ERROR                     ^
   6868 // CHECK-ERROR <stdin>:4341:17: error: invalid operand for instruction
   6869 // CHECK-ERROR         trn2 v0.1d, v1.1d, v2.1d
   6870 // CHECK-ERROR                 ^
   6871 
   6872 //----------------------------------------------------------------------
   6873 // Floating Point  multiply (scalar, by element)
   6874 //----------------------------------------------------------------------
   6875       // mismatched and invalid vector types
   6876       fmul    s0, s1, v1.h[0]
   6877       fmul    h0, h1, v1.s[0]
   6878       // invalid lane
   6879       fmul    s2, s29, v10.s[4]
   6880 
   6881 // CHECK-ERROR: error: invalid operand for instruction
   6882 // CHECK-ERROR:          fmul    s0, s1, v1.h[0]
   6883 // CHECK-ERROR:                             ^
   6884 // CHECK-ERROR: error: invalid operand for instruction
   6885 // CHECK-ERROR:          fmul    h0, h1, v1.s[0]
   6886 // CHECK-ERROR:                  ^
   6887 // CHECK-ERROR: vector lane must be an integer in range
   6888 // CHECK-ERROR:          fmul    s2, s29, v10.s[4]
   6889 // CHECK-ERROR:                                 ^
   6890 
   6891 //----------------------------------------------------------------------
   6892 // Floating Point  multiply extended (scalar, by element)
   6893 //----------------------------------------------------------------------
   6894       // mismatched and invalid vector types
   6895       fmulx    d0, d1, v1.b[0]
   6896       fmulx    h0, h1, v1.d[0]
   6897       // invalid lane
   6898       fmulx    d2, d29, v10.d[3]
   6899 
   6900 // CHECK-ERROR: error: invalid operand for instruction
   6901 // CHECK-ERROR:          fmulx    d0, d1, v1.b[0]
   6902 // CHECK-ERROR:                              ^
   6903 // CHECK-ERROR: error: invalid operand for instruction
   6904 // CHECK-ERROR:          fmulx    h0, h1, v1.d[0]
   6905 // CHECK-ERROR:                   ^
   6906 // CHECK-ERROR: vector lane must be an integer in range
   6907 // CHECK-ERROR:          fmulx    d2, d29, v10.d[3]
   6908 // CHECK-ERROR:                                  ^
   6909 
   6910 //----------------------------------------------------------------------
   6911 // Floating Point fused multiply-add (scalar, by element)
   6912 //----------------------------------------------------------------------
   6913       // mismatched and invalid vector types
   6914       fmla    b0, b1, v1.b[0]
   6915       fmla    d30, s11, v1.d[1]
   6916       // invalid lane
   6917       fmla    s16, s22, v16.s[5]
   6918 
   6919 // CHECK-ERROR: error: invalid operand for instruction
   6920 // CHECK-ERROR:          fmla    b0, b1, v1.b[0]
   6921 // CHECK-ERROR:                  ^
   6922 // CHECK-ERROR: error: invalid operand for instruction
   6923 // CHECK-ERROR:          fmla    d30, s11, v1.d[1]
   6924 // CHECK-ERROR:                       ^
   6925 // CHECK-ERROR: vector lane must be an integer in range
   6926 // CHECK-ERROR:          fmla    s16, s22, v16.s[5]
   6927 // CHECK-ERROR:                                  ^
   6928 
   6929 //----------------------------------------------------------------------
   6930 // Floating Point fused multiply-subtract (scalar, by element)
   6931 //----------------------------------------------------------------------
   6932     // mismatched and invalid vector types
   6933     fmls    s29, h10, v28.s[1]
   6934     fmls    h7, h17, v26.s[2]
   6935     // invalid lane
   6936     fmls    d16, d22, v16.d[-1]
   6937 
   6938 // CHECK-ERROR: error: invalid operand for instruction
   6939 // CHECK-ERROR:          fmls    s29, h10, v28.s[1]
   6940 // CHECK-ERROR:                       ^
   6941 // CHECK-ERROR: error: invalid operand for instruction
   6942 // CHECK-ERROR:          fmls    h7, h17, v26.s[2]
   6943 // CHECK-ERROR:                  ^
   6944 // CHECK-ERROR: error: vector lane must be an integer in range [0, 1]
   6945 // CHECK-ERROR:          fmls    d16, d22, v16.d[-1]
   6946 // CHECK-ERROR:                                  ^
   6947 
   6948 //----------------------------------------------------------------------
   6949 // Scalar Signed saturating doubling multiply-add long
   6950 // (scalar, by element)
   6951 //----------------------------------------------------------------------
   6952     // mismatched and invalid vector types
   6953     sqdmlal s0, h0, v0.s[0]
   6954     sqdmlal s8, s9, v14.s[1]
   6955     // invalid lane
   6956     sqdmlal d4, s5, v1.s[5]
   6957     // invalid vector index
   6958     sqdmlal s0, h0, v17.h[0]
   6959 
   6960 // CHECK-ERROR: error: invalid operand for instruction
   6961 // CHECK-ERROR:          sqdmlal s0, h0, v0.s[0]
   6962 // CHECK-ERROR:                             ^
   6963 // CHECK-ERROR: error: invalid operand for instruction
   6964 // CHECK-ERROR:          sqdmlal s8, s9, v14.s[1]
   6965 // CHECK-ERROR:                  ^
   6966 // CHECK-ERROR: vector lane must be an integer in range
   6967 // CHECK-ERROR:          sqdmlal d4, s5, v1.s[5]
   6968 // CHECK-ERROR:                               ^
   6969 // CHECK-ERROR: error: invalid operand for instruction
   6970 // CHECK-ERROR:          sqdmlal s0, h0, v17.h[0]
   6971 // CHECK-ERROR:                           ^
   6972 
   6973 //----------------------------------------------------------------------
   6974 // Scalar Signed saturating doubling multiply-subtract long
   6975 // (scalar, by element)
   6976 //----------------------------------------------------------------------
   6977     // mismatched and invalid vector types
   6978     sqdmlsl s1, h1, v1.d[0]
   6979     sqdmlsl d1, h1, v13.s[0]
   6980     // invalid lane
   6981     sqdmlsl d1, s1, v13.s[4]
   6982     // invalid vector index
   6983     sqdmlsl s1, h1, v20.h[7]
   6984 
   6985 // CHECK-ERROR: error: invalid operand for instruction
   6986 // CHECK-ERROR:          sqdmlsl s1, h1, v1.d[0]
   6987 // CHECK-ERROR:                             ^
   6988 // CHECK-ERROR: error: invalid operand for instruction
   6989 // CHECK-ERROR:          sqdmlsl d1, h1, v13.s[0]
   6990 // CHECK-ERROR:                      ^
   6991 // CHECK-ERROR: vector lane must be an integer in range
   6992 // CHECK-ERROR:          sqdmlsl d1, s1, v13.s[4]
   6993 // CHECK-ERROR:                                ^
   6994 // CHECK-ERROR: error: invalid operand for instruction
   6995 // CHECK-ERROR:          sqdmlsl s1, h1, v20.h[7]
   6996 // CHECK-ERROR:                           ^
   6997 
   6998 //----------------------------------------------------------------------
   6999 // Scalar Signed saturating doubling multiply long (scalar, by element)
   7000 //----------------------------------------------------------------------
   7001     // mismatched and invalid vector types
   7002     // invalid lane
   7003     // invalid vector index
   7004     // mismatched and invalid vector types
   7005     sqdmull s1, h1, v1.s[1]
   7006     sqdmull s1, s1, v4.s[0]
   7007     // invalid lane
   7008     sqdmull s12, h17, v9.h[9]
   7009     // invalid vector index
   7010     sqdmull s1, h1, v16.h[5]
   7011 
   7012 // CHECK-ERROR: error: invalid operand for instruction
   7013 // CHECK-ERROR:          sqdmull s1, h1, v1.s[1]
   7014 // CHECK-ERROR:                             ^
   7015 // CHECK-ERROR: error: invalid operand for instruction
   7016 // CHECK-ERROR:          sqdmull s1, s1, v4.s[0]
   7017 // CHECK-ERROR:                  ^
   7018 // CHECK-ERROR: vector lane must be an integer in range
   7019 // CHECK-ERROR:          sqdmull s12, h17, v9.h[9]
   7020 // CHECK-ERROR:                                 ^
   7021 // CHECK-ERROR: error: invalid operand for instruction
   7022 // CHECK-ERROR:          sqdmull s1, h1, v16.h[5]
   7023 // CHECK-ERROR:                           ^
   7024 
   7025 //----------------------------------------------------------------------
   7026 // Scalar Signed saturating doubling multiply returning
   7027 // high half (scalar, by element)
   7028 //----------------------------------------------------------------------
   7029     // mismatched and invalid vector types
   7030     sqdmulh h0, s1, v0.h[0]
   7031     sqdmulh s25, s26, v27.h[3]
   7032     // invalid lane
   7033     sqdmulh s25, s26, v27.s[4]
   7034     // invalid vector index
   7035     sqdmulh s0, h1, v30.h[0]
   7036 
   7037 // CHECK-ERROR: error: invalid operand for instruction
   7038 // CHECK-ERROR:          sqdmulh h0, s1, v0.h[0]
   7039 // CHECK-ERROR:                      ^
   7040 // CHECK-ERROR: error: invalid operand for instruction
   7041 // CHECK-ERROR:          sqdmulh s25, s26, v27.h[3]
   7042 // CHECK-ERROR:                  ^
   7043 // CHECK-ERROR: vector lane must be an integer in range
   7044 // CHECK-ERROR:          sqdmulh s25, s26, v27.s[4]
   7045 // CHECK-ERROR:                                  ^
   7046 // CHECK-ERROR: error: invalid operand for instruction
   7047 // CHECK-ERROR:          sqdmulh s0, h1, v30.h[0]
   7048 // CHECK-ERROR:                      ^
   7049 
   7050 //----------------------------------------------------------------------
   7051 // Scalar Signed saturating rounding doubling multiply
   7052 // returning high half (scalar, by element)
   7053 //----------------------------------------------------------------------
   7054     // mismatched and invalid vector types
   7055     sqrdmulh h31, h30, v14.s[2]
   7056     sqrdmulh s5, h6, v7.s[2]
   7057     // invalid lane
   7058     sqrdmulh h31, h30, v14.h[9]
   7059     // invalid vector index
   7060     sqrdmulh h31, h30, v20.h[4]
   7061 
   7062 // CHECK-ERROR: error: invalid operand for instruction
   7063 // CHECK-ERROR:          sqrdmulh h31, h30, v14.s[2]
   7064 // CHECK-ERROR:                                 ^
   7065 // CHECK-ERROR: error: invalid operand for instruction
   7066 // CHECK-ERROR:          sqrdmulh s5, h6, v7.s[2]
   7067 // CHECK-ERROR:                       ^
   7068 // CHECK-ERROR: vector lane must be an integer in range
   7069 // CHECK-ERROR:          sqrdmulh h31, h30, v14.h[9]
   7070 // CHECK-ERROR:                                 ^
   7071 // CHECK-ERROR: error: invalid operand for instruction
   7072 // CHECK-ERROR:          sqrdmulh h31, h30, v20.h[4]
   7073 // CHECK-ERROR:                              ^
   7074 
   7075 //----------------------------------------------------------------------
   7076 // Scalar Duplicate element (scalar)
   7077 //----------------------------------------------------------------------
   7078       // mismatched and invalid vector types
   7079       dup b0, v1.d[0]
   7080       dup h0, v31.b[8]
   7081       dup s0, v2.h[4]
   7082       dup d0, v17.s[3]
   7083       // invalid  lane
   7084       dup d0, v17.d[4]
   7085       dup s0, v1.s[7]
   7086       dup h0, v31.h[16]
   7087       dup b1, v3.b[16]
   7088 // CHECK-ERROR: error: invalid operand for instruction
   7089 // CHECK-ERROR:          dup b0, v1.d[0]
   7090 // CHECK-ERROR:                     ^
   7091 // CHECK-ERROR: error: invalid operand for instruction
   7092 // CHECK-ERROR:          dup h0, v31.b[8]
   7093 // CHECK-ERROR:                      ^
   7094 // CHECK-ERROR: error: invalid operand for instruction
   7095 // CHECK-ERROR:          dup s0, v2.h[4]
   7096 // CHECK-ERROR:                     ^
   7097 // CHECK-ERROR: error: invalid operand for instruction
   7098 // CHECK-ERROR:          dup d0, v17.s[3]
   7099 // CHECK-ERROR:                      ^
   7100 // CHECK-ERROR: vector lane must be an integer in range
   7101 // CHECK-ERROR:          dup d0, v17.d[4]
   7102 // CHECK-ERROR:                        ^
   7103 // CHECK-ERROR: vector lane must be an integer in range
   7104 // CHECK-ERROR:          dup s0, v1.s[7]
   7105 // CHECK-ERROR:                       ^
   7106 // CHECK-ERROR: vector lane must be an integer in range
   7107 // CHECK-ERROR:          dup h0, v31.h[16]
   7108 // CHECK-ERROR:                        ^
   7109 // CHECK-ERROR: vector lane must be an integer in range
   7110 // CHECK-ERROR:          dup b1, v3.b[16]
   7111 // CHECK-ERROR:                       ^
   7112 
   7113 //----------------------------------------------------------------------
   7114 // Table look up
   7115 //----------------------------------------------------------------------
   7116 
   7117         tbl v0.8b, {v1.8b}, v2.8b
   7118         tbl v0.8b, {v1.8b, v2.8b}, v2.8b
   7119         tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
   7120         tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
   7121         tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
   7122 
   7123 // CHECK-ERROR: error: invalid operand for instruction
   7124 // CHECK-ERROR:        tbl v0.8b, {v1.8b}, v2.8b
   7125 // CHECK-ERROR:                   ^
   7126 // CHECK-ERROR: error: invalid operand for instruction
   7127 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b}, v2.8b
   7128 // CHECK-ERROR:                   ^
   7129 // CHECK-ERROR: error: invalid operand for instruction
   7130 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
   7131 // CHECK-ERROR:                   ^
   7132 // CHECK-ERROR: error: invalid operand for instruction
   7133 // CHECK-ERROR:        tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
   7134 // CHECK-ERROR:                   ^
   7135 // CHECK-ERROR: error: invalid number of vectors
   7136 // CHECK-ERROR:        tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
   7137 // CHECK-ERROR:                                                    ^
   7138 
   7139         tbx v0.8b, {v1.8b}, v2.8b
   7140         tbx v0.8b, {v1.8b, v2.8b}, v2.8b
   7141         tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
   7142         tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
   7143         tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
   7144 
   7145 // CHECK-ERROR: error: invalid operand for instruction
   7146 // CHECK-ERROR:        tbx v0.8b, {v1.8b}, v2.8b
   7147 // CHECK-ERROR:                   ^
   7148 // CHECK-ERROR: error: invalid operand for instruction
   7149 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b}, v2.8b
   7150 // CHECK-ERROR:                   ^
   7151 // CHECK-ERROR: error: invalid operand for instruction
   7152 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b
   7153 // CHECK-ERROR:                   ^
   7154 // CHECK-ERROR: error: invalid operand for instruction
   7155 // CHECK-ERROR:        tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b
   7156 // CHECK-ERROR:                   ^
   7157 // CHECK-ERROR: error: invalid number of vectors
   7158 // CHECK-ERROR:        tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b
   7159 // CHECK-ERROR:                                                    ^
   7160 
   7161 //----------------------------------------------------------------------
   7162 // Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
   7163 // Odd
   7164 //----------------------------------------------------------------------
   7165 
   7166     fcvtxn s0, s1
   7167 
   7168 // CHECK-ERROR: error: invalid operand for instruction
   7169 // CHECK-ERROR:        fcvtxn s0, s1
   7170 // CHECK-ERROR:                   ^
   7171 
   7172 //----------------------------------------------------------------------
   7173 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
   7174 // With Ties To Away
   7175 //----------------------------------------------------------------------
   7176 
   7177     fcvtas s0, d0
   7178     fcvtas d0, s0
   7179 
   7180 // CHECK-ERROR: error: invalid operand for instruction
   7181 // CHECK-ERROR:        fcvtas s0, d0
   7182 // CHECK-ERROR:                   ^
   7183 // CHECK-ERROR: error: invalid operand for instruction
   7184 // CHECK-ERROR:        fcvtas d0, s0
   7185 // CHECK-ERROR:                   ^
   7186 
   7187 //----------------------------------------------------------------------
   7188 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
   7189 // Nearest With Ties To Away
   7190 //----------------------------------------------------------------------
   7191 
   7192     fcvtau s0, d0
   7193     fcvtau d0, s0
   7194 
   7195 // CHECK-ERROR: error: invalid operand for instruction
   7196 // CHECK-ERROR:        fcvtau s0, d0
   7197 // CHECK-ERROR:                   ^
   7198 // CHECK-ERROR: error: invalid operand for instruction
   7199 // CHECK-ERROR:        fcvtau d0, s0
   7200 // CHECK-ERROR:                   ^
   7201 
   7202 //----------------------------------------------------------------------
   7203 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
   7204 // Minus Infinity
   7205 //----------------------------------------------------------------------
   7206 
   7207     fcvtms s0, d0
   7208     fcvtms d0, s0
   7209 
   7210 // CHECK-ERROR: error: invalid operand for instruction
   7211 // CHECK-ERROR:        fcvtms s0, d0
   7212 // CHECK-ERROR:                   ^
   7213 // CHECK-ERROR: error: invalid operand for instruction
   7214 // CHECK-ERROR:        fcvtms d0, s0
   7215 // CHECK-ERROR:                   ^
   7216 
   7217 //----------------------------------------------------------------------
   7218 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
   7219 // Minus Infinity
   7220 //----------------------------------------------------------------------
   7221 
   7222     fcvtmu s0, d0
   7223     fcvtmu d0, s0
   7224 
   7225 // CHECK-ERROR: error: invalid operand for instruction
   7226 // CHECK-ERROR:        fcvtmu s0, d0
   7227 // CHECK-ERROR:                   ^
   7228 // CHECK-ERROR: error: invalid operand for instruction
   7229 // CHECK-ERROR:        fcvtmu d0, s0
   7230 // CHECK-ERROR:                   ^
   7231 
   7232 //----------------------------------------------------------------------
   7233 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
   7234 // With Ties To Even
   7235 //----------------------------------------------------------------------
   7236 
   7237     fcvtns s0, d0
   7238     fcvtns d0, s0
   7239 
   7240 // CHECK-ERROR: error: invalid operand for instruction
   7241 // CHECK-ERROR:        fcvtns s0, d0
   7242 // CHECK-ERROR:                   ^
   7243 // CHECK-ERROR: error: invalid operand for instruction
   7244 // CHECK-ERROR:        fcvtns d0, s0
   7245 // CHECK-ERROR:                   ^
   7246 
   7247 //----------------------------------------------------------------------
   7248 // Scalar Floating-point Convert To Unsigned Integer, Rounding To
   7249 // Nearest With Ties To Even
   7250 //----------------------------------------------------------------------
   7251 
   7252     fcvtnu s0, d0
   7253     fcvtnu d0, s0
   7254 
   7255 // CHECK-ERROR: error: invalid operand for instruction
   7256 // CHECK-ERROR:        fcvtnu s0, d0
   7257 // CHECK-ERROR:                   ^
   7258 // CHECK-ERROR: error: invalid operand for instruction
   7259 // CHECK-ERROR:        fcvtnu d0, s0
   7260 // CHECK-ERROR:                   ^
   7261 
   7262 //----------------------------------------------------------------------
   7263 // Scalar Floating-point Convert To Signed Integer, Rounding Toward
   7264 // Positive Infinity
   7265 //----------------------------------------------------------------------
   7266 
   7267     fcvtps s0, d0
   7268     fcvtps d0, s0
   7269 
   7270 // CHECK-ERROR: error: invalid operand for instruction
   7271 // CHECK-ERROR:        fcvtps s0, d0
   7272 // CHECK-ERROR:                   ^
   7273 // CHECK-ERROR: error: invalid operand for instruction
   7274 // CHECK-ERROR:        fcvtps d0, s0
   7275 // CHECK-ERROR:                   ^
   7276 
   7277 //----------------------------------------------------------------------
   7278 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
   7279 // Positive Infinity
   7280 //----------------------------------------------------------------------
   7281 
   7282     fcvtpu s0, d0
   7283     fcvtpu d0, s0
   7284 
   7285 // CHECK-ERROR: error: invalid operand for instruction
   7286 // CHECK-ERROR:        fcvtpu s0, d0
   7287 // CHECK-ERROR:                   ^
   7288 // CHECK-ERROR: error: invalid operand for instruction
   7289 // CHECK-ERROR:        fcvtpu d0, s0
   7290 // CHECK-ERROR:                   ^
   7291 
   7292 //----------------------------------------------------------------------
   7293 // Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
   7294 //----------------------------------------------------------------------
   7295 
   7296     fcvtzs s0, d0
   7297     fcvtzs d0, s0
   7298 
   7299 // CHECK-ERROR: error: invalid operand for instruction
   7300 // CHECK-ERROR:        fcvtzs s0, d0
   7301 // CHECK-ERROR:                   ^
   7302 // CHECK-ERROR: error: invalid operand for instruction
   7303 // CHECK-ERROR:        fcvtzs d0, s0
   7304 // CHECK-ERROR:                   ^
   7305 
   7306 //----------------------------------------------------------------------
   7307 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
   7308 // Zero
   7309 //----------------------------------------------------------------------
   7310 
   7311     fcvtzu s0, d0
   7312     fcvtzu d0, s0
   7313 
   7314 // CHECK-ERROR: error: invalid operand for instruction
   7315 // CHECK-ERROR:        fcvtzu s0, d0
   7316 // CHECK-ERROR:                   ^
   7317 // CHECK-ERROR: error: invalid operand for instruction
   7318 // CHECK-ERROR:        fcvtzu d0, s0
   7319 // CHECK-ERROR:                   ^
   7320 
   7321 //----------------------------------------------------------------------
   7322 // Scalar Floating-point Absolute Difference
   7323 //----------------------------------------------------------------------
   7324 
   7325 
   7326     fabd s29, d24, s20
   7327     fabd d29, s24, d20
   7328 
   7329 // CHECK-ERROR: error: invalid operand for instruction
   7330 // CHECK-ERROR:        fabd s29, d24, s20
   7331 // CHECK-ERROR:                  ^
   7332 // CHECK-ERROR: error: invalid operand for instruction
   7333 // CHECK-ERROR:        fabd d29, s24, d20
   7334 // CHECK-ERROR:                  ^
   7335