Home | History | Annotate | Download | only in AArch64
      1 # RUN: llvm-mc  -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
      2 # RUN: llvm-mc  -triple arm64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
      3 
      4 #------------------------------------------------------------------------------
      5 # Vector Integer Add/Sub
      6 #------------------------------------------------------------------------------
      7 # CHECK: add v31.8b, v31.8b, v31.8b
      8 # CHECK: sub v0.2d, v0.2d, v0.2d
      9 0xff 0x87 0x3f 0x0e
     10 0x00 0x84 0xe0 0x6e
     11 
     12 #------------------------------------------------------------------------------
     13 # Vector Floating-Point Add/Sub
     14 #------------------------------------------------------------------------------
     15 
     16 # CHECK: fadd v0.4s, v0.4s, v0.4s
     17 # CHECK: fsub v31.2s, v31.2s, v31.2s
     18 0x00 0xd4 0x20 0x4e
     19 0xff 0xd7 0xbf 0x0e
     20 
     21 #------------------------------------------------------------------------------
     22 # Vector Integer Mul
     23 #------------------------------------------------------------------------------
     24 # CHECK: mul v0.8b, v1.8b, v2.8b
     25 0x20 0x9c 0x22 0x0e
     26 
     27 #------------------------------------------------------------------------------
     28 # Vector Floating-Point Mul/Div
     29 #------------------------------------------------------------------------------
     30 # CHECK: fmul v0.2s, v1.2s, v2.2s
     31 # CHECK: fdiv v31.2s, v31.2s, v31.2s
     32 0x20 0xdc 0x22 0x2e
     33 0xff 0xff 0x3f 0x2e
     34 
     35 #----------------------------------------------------------------------
     36 # Vector Polynomial Multiply
     37 #----------------------------------------------------------------------
     38 # CHECK: pmul v0.8b, v15.8b, v16.8b
     39 # CHECK: pmul v31.16b, v7.16b, v8.16b
     40 0xe0 0x9d 0x30 0x2e
     41 0xff 0x9c 0x28 0x6e
     42 
     43 #------------------------------------------------------------------------------
     44 # Vector And, Orr, Eor, Orn, Bic
     45 #------------------------------------------------------------------------------
     46 # CHECK: and v2.8b, v2.8b, v2.8b
     47 # CHECK: orr v31.16b, v31.16b, v30.16b
     48 # CHECK: eor v0.16b, v1.16b, v2.16b
     49 # CHECK: orn v9.16b, v10.16b, v11.16b
     50 # CHECK: bic v31.8b, v30.8b, v29.8b
     51 0x42 0x1c 0x22 0x0e
     52 0xff 0x1f 0xbe 0x4e
     53 0x20 0x1c 0x22 0x6e
     54 0x49 0x1d 0xeb 0x4e
     55 0xdf 0x1f 0x7d 0x0e
     56 
     57 #------------------------------------------------------------------------------
     58 # Vector Bsl, Bit, Bif
     59 #------------------------------------------------------------------------------
     60 # CHECK: bsl v0.8b, v1.8b, v2.8b
     61 # CHECK: bit v31.16b, v31.16b, v31.16b
     62 # CHECK: bif v0.16b, v1.16b, v2.16b
     63 0x20 0x1c 0x62 0x2e
     64 0xff 0x1f 0xbf 0x6e
     65 0x20 0x1c 0xe2 0x6e
     66 
     67 
     68 #------------------------------------------------------------------------------
     69 # Vector Integer Multiply-accumulate and Multiply-subtract
     70 #------------------------------------------------------------------------------
     71 # CHECK: mla v0.8b, v1.8b, v2.8b
     72 # CHECK: mls v31.4h, v31.4h, v31.4h
     73 0x20 0x94 0x22 0x0e
     74 0xff 0x97 0x7f 0x2e
     75 
     76 #------------------------------------------------------------------------------
     77 # Vector Floating-Point Multiply-accumulate and Multiply-subtract
     78 #------------------------------------------------------------------------------
     79 # CHECK: fmla v0.2s, v1.2s, v2.2s
     80 # CHECK: fmls v31.2s, v31.2s, v31.2s
     81 0x20 0xcc 0x22 0x0e
     82 0xff 0xcf 0xbf 0x0e
     83 
     84 #------------------------------------------------------------------------------
     85 # Vector Move Immediate Shifted
     86 # Vector Move Inverted Immediate Shifted
     87 # Vector Bitwise Bit Clear (AND NOT) - immediate
     88 # Vector Bitwise OR - immedidate
     89 #------------------------------------------------------------------------------
     90 # CHECK: movi v31.4s, #0xff, lsl #24
     91 # CHECK: mvni v0.2s, #{{0x0|0}}
     92 # CHECK: bic v15.4h, #0xf, lsl #8
     93 # CHECK: orr v16.8h, #0x1f
     94 0xff 0x67 0x07 0x4f
     95 0x00 0x04 0x00 0x2f
     96 0xef 0xb5 0x00 0x2f
     97 0xf0 0x97 0x00 0x4f
     98 
     99 #------------------------------------------------------------------------------
    100 # Vector Move Immediate Masked
    101 # Vector Move Inverted Immediate Masked
    102 #------------------------------------------------------------------------------
    103 # CHECK: movi v8.2s, #0x8, msl #8
    104 # CHECK: mvni v16.4s, #0x10, msl #16
    105 0x08 0xc5 0x00 0x0f
    106 0x10 0xd6 0x00 0x6f
    107 
    108 #------------------------------------------------------------------------------
    109 # Vector Immediate - per byte
    110 # Vector Move Immediate - bytemask, per doubleword
    111 # Vector Move Immediate - bytemask, one doubleword
    112 #------------------------------------------------------------------------------
    113 # CHECK: movi v16.8b, #0xff
    114 # CHECK: movi v31.16b, #0x1f
    115 # CHECK: movi d15, #0xff00ff00ff00ff
    116 # CHECK: movi v31.2d, #0xff0000ff0000ffff
    117 0xf0 0xe7 0x07 0x0f
    118 0xff 0xe7 0x00 0x4f
    119 0xaf 0xe6 0x02 0x2f
    120 0x7f 0xe6 0x04 0x6f
    121 
    122 #------------------------------------------------------------------------------
    123 # Vector Floating Point Move Immediate
    124 #------------------------------------------------------------------------------
    125 # CHECK: fmov v0.2s, #13.0
    126 # CHECK: fmov v15.4s, #1.0
    127 # CHECK: fmov v31.2d, #-1.25
    128 0x40 0xf5 0x01 0x0f
    129 0x0f 0xf6 0x03 0x4f
    130 0x9f 0xf6 0x07 0x6f
    131 
    132 #------------------------------------------------------------------------------
    133 # Vector Move - register
    134 #------------------------------------------------------------------------------
    135 
    136 # CHECK: mov v1.16b, v15.16b
    137 # CHECK: mov v25.8b, v4.8b
    138 0xe1 0x1d 0xaf 0x4e
    139 0x99 0x1c 0xa4 0x0e
    140 
    141 #----------------------------------------------------------------------
    142 # Vector Absolute Difference and Accumulate (Signed, Unsigned)
    143 # Vector Absolute Difference (Signed, Unsigned)
    144 # Vector Absolute Difference (Floating Point)
    145 #----------------------------------------------------------------------
    146 
    147 # CHECK: uaba v0.8b, v1.8b, v2.8b
    148 # CHECK: saba v31.16b, v30.16b, v29.16b
    149 # CHECK: uabd v15.4h, v16.4h, v17.4h
    150 # CHECK: sabd v5.4h, v4.4h, v6.4h
    151 # CHECK: fabd v1.4s, v31.4s, v16.4s
    152 0x20 0x7c 0x22 0x2e
    153 0xdf 0x7f 0x3d 0x4e
    154 0x0f 0x76 0x71 0x2e
    155 0x85 0x74 0x66 0x0e
    156 0xe1 0xd7 0xb0 0x6e
    157 
    158 #----------------------------------------------------------------------
    159 # Scalar Integer Add
    160 # Scalar Integer Sub
    161 #----------------------------------------------------------------------
    162 
    163 # CHECK: add d17, d31, d29
    164 # CHECK: sub d15, d5, d16
    165 0xf1 0x87 0xfd 0x5e
    166 0xaf 0x84 0xf0 0x7e
    167 
    168 #----------------------------------------------------------------------
    169 # Vector Reciprocal Square Root Step (Floating Point)
    170 #----------------------------------------------------------------------
    171 # CHECK: frsqrts v31.2d, v15.2d, v8.2d
    172 0xff 0xfd 0xe8 0x4e
    173 
    174 #----------------------------------------------------------------------
    175 # Vector Reciprocal Step (Floating Point)
    176 #----------------------------------------------------------------------
    177 # CHECK: frecps  v5.4s, v7.4s, v16.4s
    178 0xe5 0xfc 0x30 0x4e
    179 
    180 #----------------------------------------------------------------------
    181 # Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
    182 #----------------------------------------------------------------------
    183 # CHECK: facge v0.4s, v31.4s, v16.4s
    184 0xe0 0xef 0x30 0x6e
    185 
    186 #----------------------------------------------------------------------
    187 # Vector Absolute Compare Mask Less Than (Floating Point)
    188 #----------------------------------------------------------------------
    189 # CHECK: facgt v31.2d, v29.2d, v28.2d
    190 0xbf 0xef 0xfc 0x6e
    191 
    192 #----------------------------------------------------------------------
    193 # Vector Compare Mask Equal (Integer)
    194 #----------------------------------------------------------------------
    195 # CHECK: cmeq v5.16b, v15.16b, v31.16b
    196 0xe5 0x8d 0x3f 0x6e
    197 
    198 #----------------------------------------------------------------------
    199 # Vector Compare Mask Higher or Same (Unsigned Integer)
    200 #----------------------------------------------------------------------
    201 # CHECK: cmhs v1.8b, v16.8b, v30.8b
    202 0x01 0x3e 0x3e 0x2e
    203 
    204 #----------------------------------------------------------------------
    205 # Vector Compare Mask Greater Than or Equal (Integer)
    206 #----------------------------------------------------------------------
    207 # CHECK: cmge v20.4h, v11.4h, v23.4h
    208 0x74 0x3d 0x77 0x0e
    209 
    210 #----------------------------------------------------------------------
    211 # Vector Compare Mask Higher (Unsigned Integer)
    212 # CHECK: cmhi v13.8h, v3.8h, v27.8h
    213 0x6d 0x34 0x7b 0x6e
    214 
    215 #----------------------------------------------------------------------
    216 # Vector Compare Mask Greater Than (Integer)
    217 #----------------------------------------------------------------------
    218 # CHECK: cmgt v9.4s, v4.4s, v28.4s
    219 0x89 0x34 0xbc 0x4e
    220 
    221 #----------------------------------------------------------------------
    222 # Vector Compare Mask Bitwise Test (Integer)
    223 #----------------------------------------------------------------------
    224 # CHECK: cmtst v21.2s, v19.2s, v18.2s
    225 0x75 0x8e 0xb2 0x0e
    226 
    227 #----------------------------------------------------------------------
    228 # Vector Compare Mask Equal (Floating Point)
    229 #----------------------------------------------------------------------
    230 # CHECK: fcmeq v0.2s, v15.2s, v16.2s
    231 0xe0 0xe5 0x30 0x0e
    232 
    233 #----------------------------------------------------------------------
    234 # Vector Compare Mask Greater Than Or Equal (Floating Point)
    235 #----------------------------------------------------------------------
    236 # CHECK: fcmge v31.4s, v7.4s, v29.4s
    237 0xff 0xe4 0x3d 0x6e
    238 
    239 #----------------------------------------------------------------------
    240 # Vector Compare Mask Greater Than (Floating Point)
    241 #----------------------------------------------------------------------
    242 # CHECK: fcmgt v17.4s, v8.4s, v25.4s
    243 0x11 0xe5 0xb9 0x6e
    244 
    245 #----------------------------------------------------------------------
    246 # Vector Compare Mask Equal to Zero (Integer)
    247 #----------------------------------------------------------------------
    248 # CHECK: cmeq v31.16b, v15.16b, #{{0x0|0}}
    249 0xff 0x99 0x20 0x4e
    250 
    251 #----------------------------------------------------------------------
    252 # Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
    253 #----------------------------------------------------------------------
    254 # CHECK: cmge v3.8b, v15.8b, #{{0x0|0}}
    255 0xe3 0x89 0x20 0x2e
    256 
    257 #----------------------------------------------------------------------
    258 # Vector Compare Mask Greater Than Zero (Signed Integer)
    259 #----------------------------------------------------------------------
    260 # CHECK: cmgt v22.2s, v9.2s, #{{0x0|0}}
    261 0x36 0x89 0xa0 0x0e
    262 
    263 #----------------------------------------------------------------------
    264 # Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
    265 #----------------------------------------------------------------------
    266 # CHECK: cmle v5.2d, v14.2d, #{{0x0|0}}
    267 0xc5 0x99 0xe0 0x6e
    268 
    269 #----------------------------------------------------------------------
    270 # Vector Compare Mask Less Than Zero (Signed Integer)
    271 #----------------------------------------------------------------------
    272 # CHECK: cmlt v13.8h, v11.8h, #{{0x0|0}}
    273 0x6d 0xa9 0x60 0x4e
    274 
    275 #----------------------------------------------------------------------
    276 # Vector Compare Mask Equal to Zero (Floating Point)
    277 #----------------------------------------------------------------------
    278 # CHECK: fcmeq v15.2s, v21.2s, #0.0
    279 0xaf 0xda 0xa0 0x0e
    280 
    281 #----------------------------------------------------------------------
    282 # Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
    283 #----------------------------------------------------------------------
    284 # CHECK: fcmge v14.2d, v13.2d, #0.0
    285 0xae 0xc9 0xe0 0x6e
    286 
    287 #----------------------------------------------------------------------
    288 # Vector Compare Mask Greater Than Zero (Floating Point)
    289 #----------------------------------------------------------------------
    290 # CHECK: fcmgt v9.4s, v23.4s, #0.0
    291 0xe9 0xca 0xa0 0x4e
    292 
    293 #----------------------------------------------------------------------
    294 # Vector Compare Mask Less Than or Equal To Zero (Floating Point)
    295 #----------------------------------------------------------------------
    296 # CHECK: fcmle v11.2d, v6.2d, #0.0
    297 0xcb 0xd8 0xe0 0x6e
    298 
    299 #----------------------------------------------------------------------
    300 # Vector Compare Mask Less Than Zero (Floating Point)
    301 #----------------------------------------------------------------------
    302 # CHECK: fcmlt v12.4s, v25.4s, #0.0
    303 0x2c 0xeb 0xa0 0x4e
    304 
    305 
    306 #------------------------------------------------------------------------------
    307 # Vector Integer Halving Add (Signed)
    308 # Vector Integer Halving Add (Unsigned)
    309 # Vector Integer Halving Sub (Signed)
    310 # Vector Integer Halving Sub (Unsigned)
    311 #------------------------------------------------------------------------------
    312 # CHECK: shadd v0.8b, v31.8b, v29.8b
    313 # CHECK: uhadd v15.16b, v16.16b, v17.16b
    314 # CHECK: shsub v0.4h, v1.4h, v2.4h
    315 # CHECK: uhadd v5.8h, v7.8h, v8.8h
    316 # CHECK: shsub v9.2s, v11.2s, v21.2s
    317 # CHECK: uhsub v22.4s, v30.4s, v19.4s
    318 0xe0 0x07 0x3d 0x0e
    319 0x0f 0x06 0x31 0x6e
    320 0x20 0x24 0x62 0x0e
    321 0xe5 0x04 0x68 0x6e
    322 0x69 0x25 0xb5 0x0e
    323 0xd6 0x27 0xb3 0x6e
    324 
    325 #------------------------------------------------------------------------------
    326 # Vector Integer Rouding Halving Add (Signed)
    327 # Vector Integer Rouding Halving Add (Unsigned)
    328 #------------------------------------------------------------------------------
    329 # CHECK: srhadd v3.8b, v5.8b, v7.8b
    330 # CHECK: urhadd v7.16b, v17.16b, v27.16b
    331 # CHECK: srhadd v10.4h, v11.4h, v13.4h
    332 # CHECK: urhadd v1.8h, v2.8h, v3.8h
    333 # CHECK: srhadd v4.2s, v5.2s, v6.2s
    334 # CHECK: urhadd v7.4s, v7.4s, v7.4s
    335 0xa3 0x14 0x27 0x0e
    336 0x27 0x16 0x3b 0x6e
    337 0x6a 0x15 0x6d 0x0e
    338 0x41 0x14 0x63 0x6e
    339 0xa4 0x14 0xa6 0x0e
    340 0xe7 0x14 0xa7 0x6e
    341 
    342 #------------------------------------------------------------------------------
    343 # Vector Integer Saturating Add (Signed)
    344 # Vector Integer Saturating Add (Unsigned)
    345 # Vector Integer Saturating Sub (Signed)
    346 # Vector Integer Saturating Sub (Unsigned)
    347 #------------------------------------------------------------------------------
    348 # CHECK: sqsub v0.8b, v1.8b, v2.8b
    349 # CHECK: sqadd v0.16b, v1.16b, v2.16b
    350 # CHECK: uqsub v0.4h, v1.4h, v2.4h
    351 # CHECK: uqadd v0.8h, v1.8h, v2.8h
    352 # CHECK: sqadd v0.2s, v1.2s, v2.2s
    353 # CHECK: sqsub v0.4s, v1.4s, v2.4s
    354 # CHECK: sqsub v0.2d, v1.2d, v2.2d
    355 0x20 0x2c 0x22 0x0e
    356 0x20 0x0c 0x22 0x4e
    357 0x20 0x2c 0x62 0x2e
    358 0x20 0x0c 0x62 0x6e
    359 0x20 0x0c 0xa2 0x0e
    360 0x20 0x2c 0xa2 0x4e
    361 0x20 0x2c 0xe2 0x4e
    362 
    363 #------------------------------------------------------------------------------
    364 # Scalar Integer Saturating Add (Signed)
    365 # Scalar Integer Saturating Add (Unsigned)
    366 # Scalar Integer Saturating Sub (Signed)
    367 # Scalar Integer Saturating Add (Unsigned)
    368 #------------------------------------------------------------------------------
    369 # CHECK: sqadd b20, b11, b15
    370 # CHECK: uqadd h0, h1, h5
    371 # CHECK: sqsub s20, s10, s7
    372 # CHECK: uqsub d16, d16, d16
    373 0x74 0x0d 0x2f 0x5e
    374 0x20 0x0c 0x65 0x7e
    375 0x54 0x2d 0xa7 0x5e
    376 0x10 0x2e 0xf0 0x7e
    377 
    378 
    379 #----------------------------------------------------------------------
    380 # Vector Shift Left (Signed and Unsigned Integer)
    381 #----------------------------------------------------------------------
    382 # CHECK: sshl v10.8b, v15.8b, v22.8b
    383 # CHECK: ushl v10.16b, v5.16b, v2.16b
    384 # CHECK: sshl v10.4h, v15.4h, v22.4h
    385 # CHECK: ushl v10.8h, v5.8h, v2.8h
    386 # CHECK: sshl v10.2s, v15.2s, v22.2s
    387 # CHECK: ushl v10.4s, v5.4s, v2.4s
    388 # CHECK: sshl v0.2d, v1.2d, v2.2d
    389 0xea 0x45 0x36 0x0e
    390 0xaa 0x44 0x22 0x6e
    391 0xea 0x45 0x76 0x0e
    392 0xaa 0x44 0x62 0x6e
    393 0xea 0x45 0xb6 0x0e
    394 0xaa 0x44 0xa2 0x6e
    395 0x20 0x44 0xe2 0x4e
    396 
    397 #----------------------------------------------------------------------
    398 # Vector Saturating Shift Left (Signed and Unsigned Integer)
    399 #----------------------------------------------------------------------
    400 # CHECK: sqshl v1.8b, v15.8b, v22.8b
    401 # CHECK: uqshl v2.16b, v14.16b, v23.16b
    402 # CHECK: sqshl v3.4h, v13.4h, v24.4h
    403 # CHECK: uqshl v4.8h, v12.8h, v25.8h
    404 # CHECK: sqshl v5.2s, v11.2s, v26.2s
    405 # CHECK: uqshl v6.4s, v10.4s, v27.4s
    406 # CHECK: uqshl v0.2d, v1.2d, v2.2d
    407 0xe1 0x4d 0x36 0x0e
    408 0xc2 0x4d 0x37 0x6e
    409 0xa3 0x4d 0x78 0x0e
    410 0x84 0x4d 0x79 0x6e
    411 0x65 0x4d 0xba 0x0e
    412 0x46 0x4d 0xbb 0x6e
    413 0x20 0x4c 0xe2 0x6e
    414 
    415 #----------------------------------------------------------------------
    416 # Vector Rouding Shift Left (Signed and Unsigned Integer)
    417 #----------------------------------------------------------------------
    418 # CHECK: srshl v10.8b, v5.8b, v22.8b
    419 # CHECK: urshl v10.16b, v5.16b, v2.16b
    420 # CHECK: srshl v1.4h, v5.4h, v31.4h
    421 # CHECK: urshl v1.8h, v5.8h, v2.8h
    422 # CHECK: srshl v10.2s, v15.2s, v2.2s
    423 # CHECK: urshl v1.4s, v5.4s, v2.4s
    424 # CHECK: urshl v0.2d, v1.2d, v2.2d
    425 0xaa 0x54 0x36 0x0e
    426 0xaa 0x54 0x22 0x6e
    427 0xa1 0x54 0x7f 0x0e
    428 0xa1 0x54 0x62 0x6e
    429 0xea 0x55 0xa2 0x0e
    430 0xa1 0x54 0xa2 0x6e
    431 0x20 0x54 0xe2 0x6e
    432 
    433 #----------------------------------------------------------------------
    434 # Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
    435 #----------------------------------------------------------------------
    436 # CHECK: sqrshl v1.8b, v15.8b, v22.8b
    437 # CHECK: uqrshl v2.16b, v14.16b, v23.16b
    438 # CHECK: sqrshl v3.4h, v13.4h, v24.4h
    439 # CHECK: uqrshl v4.8h, v12.8h, v25.8h
    440 # CHECK: sqrshl v5.2s, v11.2s, v26.2s
    441 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
    442 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
    443 0xe1 0x5d 0x36 0x0e
    444 0xc2 0x5d 0x37 0x6e
    445 0xa3 0x5d 0x78 0x0e
    446 0x84 0x5d 0x79 0x6e
    447 0x65 0x5d 0xba 0x0e
    448 0x46 0x5d 0xbb 0x6e
    449 0x46 0x5d 0xbb 0x6e
    450 
    451 #----------------------------------------------------------------------
    452 # Scalar Integer Shift Left (Signed, Unsigned)
    453 #----------------------------------------------------------------------
    454 # CHECK: sshl d31, d31, d31
    455 # CHECK: ushl d0, d0, d0
    456 0xff 0x47 0xff 0x5e
    457 0x00 0x44 0xe0 0x7e
    458 
    459 #----------------------------------------------------------------------
    460 # Scalar Integer Saturating Shift Left (Signed, Unsigned)
    461 #----------------------------------------------------------------------
    462 # CHECK: sqshl d31, d31, d31
    463 # CHECK: uqshl s23, s20, s16
    464 # CHECK: sqshl h3, h4, h15
    465 # CHECK: uqshl b11, b20, b30
    466 0xff 0x4f 0xff 0x5e
    467 0x97 0x4e 0xb0 0x7e
    468 0x83 0x4c 0x6f 0x5e
    469 0x8b 0x4e 0x3e 0x7e
    470 
    471 #----------------------------------------------------------------------
    472 # Scalar Integer Rouding Shift Left (Signed, Unsigned)
    473 #----------------------------------------------------------------------
    474 # CHECK: srshl d16, d16, d16
    475 # CHECK: urshl d8, d7, d4
    476 0x10 0x56 0xf0 0x5e
    477 0xe8 0x54 0xe4 0x7e
    478 
    479 #----------------------------------------------------------------------
    480 # Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
    481 #----------------------------------------------------------------------
    482 # CHECK: sqrshl d31, d31, d31
    483 # CHECK: uqrshl s23, s20, s16
    484 # CHECK: sqrshl h3, h4, h15
    485 # CHECK: uqrshl b11, b20, b30
    486 0xff 0x5f 0xff 0x5e
    487 0x97 0x5e 0xb0 0x7e
    488 0x83 0x5c 0x6f 0x5e
    489 0x8b 0x5e 0x3e 0x7e
    490 
    491 #----------------------------------------------------------------------
    492 # Vector Maximum (Signed and Unsigned Integer)
    493 #----------------------------------------------------------------------
    494 # CHECK: smax v1.8b, v15.8b, v22.8b
    495 # CHECK: umax v2.16b, v14.16b, v23.16b
    496 # CHECK: smax v3.4h, v13.4h, v24.4h
    497 # CHECK: umax v4.8h, v12.8h, v25.8h
    498 # CHECK: smax v5.2s, v11.2s, v26.2s
    499 # CHECK: umax v6.4s, v10.4s, v27.4s
    500 0xe1 0x65 0x36 0x0e
    501 0xc2 0x65 0x37 0x6e
    502 0xa3 0x65 0x78 0x0e
    503 0x84 0x65 0x79 0x6e
    504 0x65 0x65 0xba 0x0e
    505 0x46 0x65 0xbb 0x6e
    506 
    507 #----------------------------------------------------------------------
    508 # Vector Minimum (Signed and Unsigned Integer)
    509 #----------------------------------------------------------------------
    510 # CHECK: umin v1.8b, v15.8b, v22.8b
    511 # CHECK: smin v2.16b, v14.16b, v23.16b
    512 # CHECK: umin v3.4h, v13.4h, v24.4h
    513 # CHECK: smin v4.8h, v12.8h, v25.8h
    514 # CHECK: umin v5.2s, v11.2s, v26.2s
    515 # CHECK: smin v6.4s, v10.4s, v27.4s
    516 0xe1 0x6d 0x36 0x2e
    517 0xc2 0x6d 0x37 0x4e
    518 0xa3 0x6d 0x78 0x2e
    519 0x84 0x6d 0x79 0x4e
    520 0x65 0x6d 0xba 0x2e
    521 0x46 0x6d 0xbb 0x4e
    522 
    523 #----------------------------------------------------------------------
    524 # Vector Maximum (Floating Point)
    525 #----------------------------------------------------------------------
    526 # CHECK: fmax v29.2s, v28.2s, v25.2s
    527 # CHECK: fmax v9.4s, v8.4s, v5.4s
    528 # CHECK: fmax v11.2d, v10.2d, v7.2d
    529 0x9d 0xf7 0x39 0x0e
    530 0x09 0xf5 0x25 0x4e
    531 0x4b 0xf5 0x67 0x4e
    532 
    533 #----------------------------------------------------------------------
    534 # Vector Minimum (Floating Point)
    535 #----------------------------------------------------------------------
    536 # CHECK: fmin v29.2s, v28.2s, v25.2s
    537 # CHECK: fmin v9.4s, v8.4s, v5.4s
    538 # CHECK: fmin v11.2d, v10.2d, v7.2d
    539 0x9d 0xf7 0xb9 0x0e
    540 0x09 0xf5 0xa5 0x4e
    541 0x4b 0xf5 0xe7 0x4e
    542 
    543 #----------------------------------------------------------------------
    544 # Vector maxNum (Floating Point)
    545 #----------------------------------------------------------------------
    546 # CHECK: fmaxnm v9.2s, v8.2s, v5.2s
    547 # CHECK: fmaxnm v9.4s, v8.4s, v5.4s
    548 # CHECK: fmaxnm v11.2d, v10.2d, v7.2d
    549 0x09 0xc5 0x25 0x0e
    550 0x09 0xc5 0x25 0x4e
    551 0x4b 0xc5 0x67 0x4e
    552 
    553 #----------------------------------------------------------------------
    554 # Vector minNum (Floating Point)
    555 #----------------------------------------------------------------------
    556 # CHECK: fminnm v2.2s, v8.2s, v25.2s
    557 # CHECK: fminnm v9.4s, v8.4s, v5.4s
    558 # CHECK: fminnm v11.2d, v10.2d, v7.2d
    559 0x02 0xc5 0xb9 0x0e
    560 0x09 0xc5 0xa5 0x4e
    561 0x4b 0xc5 0xe7 0x4e
    562 
    563 
    564 #----------------------------------------------------------------------
    565 # Vector Maximum Pairwise (Signed and Unsigned Integer)
    566 #----------------------------------------------------------------------
    567 # CHECK: smaxp v1.8b, v15.8b, v22.8b
    568 # CHECK: umaxp v2.16b, v14.16b, v23.16b
    569 # CHECK: smaxp v3.4h, v13.4h, v24.4h
    570 # CHECK: umaxp v4.8h, v12.8h, v25.8h
    571 # CHECK: smaxp v5.2s, v11.2s, v26.2s
    572 # CHECK: umaxp v6.4s, v10.4s, v27.4s
    573 0xe1 0xa5 0x36 0x0e
    574 0xc2 0xa5 0x37 0x6e
    575 0xa3 0xa5 0x78 0x0e
    576 0x84 0xa5 0x79 0x6e
    577 0x65 0xa5 0xba 0x0e
    578 0x46 0xa5 0xbb 0x6e
    579 
    580 #----------------------------------------------------------------------
    581 # Vector Minimum Pairwise (Signed and Unsigned Integer)
    582 #----------------------------------------------------------------------
    583 # CHECK: uminp v1.8b, v15.8b, v22.8b
    584 # CHECK: sminp v2.16b, v14.16b, v23.16b
    585 # CHECK: uminp v3.4h, v13.4h, v24.4h
    586 # CHECK: sminp v4.8h, v12.8h, v25.8h
    587 # CHECK: uminp v5.2s, v11.2s, v26.2s
    588 # CHECK: sminp v6.4s, v10.4s, v27.4s
    589 0xe1 0xad 0x36 0x2e
    590 0xc2 0xad 0x37 0x4e
    591 0xa3 0xad 0x78 0x2e
    592 0x84 0xad 0x79 0x4e
    593 0x65 0xad 0xba 0x2e
    594 0x46 0xad 0xbb 0x4e
    595 
    596 #----------------------------------------------------------------------
    597 # Vector Maximum Pairwise (Floating Point)
    598 #----------------------------------------------------------------------
    599 # CHECK: fmaxp v29.2s, v28.2s, v25.2s
    600 # CHECK: fmaxp v9.4s, v8.4s, v5.4s
    601 # CHECK: fmaxp v11.2d, v10.2d, v7.2d
    602 0x9d 0xf7 0x39 0x2e
    603 0x09 0xf5 0x25 0x6e
    604 0x4b 0xf5 0x67 0x6e
    605 
    606 #----------------------------------------------------------------------
    607 # Vector Minimum Pairwise (Floating Point)
    608 #----------------------------------------------------------------------
    609 # CHECK: fminp v29.2s, v28.2s, v25.2s
    610 # CHECK: fminp v9.4s, v8.4s, v5.4s
    611 # CHECK: fminp v11.2d, v10.2d, v7.2d
    612 0x9d 0xf7 0xb9 0x2e
    613 0x09 0xf5 0xa5 0x6e
    614 0x4b 0xf5 0xe7 0x6e
    615 
    616 #----------------------------------------------------------------------
    617 # Vector maxNum Pairwise (Floating Point)
    618 #----------------------------------------------------------------------
    619 # CHECK: fmaxnmp v9.2s, v8.2s, v5.2s
    620 # CHECK: fmaxnmp v9.4s, v8.4s, v5.4s
    621 # CHECK: fmaxnmp v11.2d, v10.2d, v7.2d
    622 0x09 0xc5 0x25 0x2e
    623 0x09 0xc5 0x25 0x6e
    624 0x4b 0xc5 0x67 0x6e
    625 
    626 #----------------------------------------------------------------------
    627 # Vector minNum Pairwise (Floating Point)
    628 #----------------------------------------------------------------------
    629 # CHECK: fminnmp v2.2s, v8.2s, v25.2s
    630 # CHECK: fminnmp v9.4s, v8.4s, v5.4s
    631 # CHECK: fminnmp v11.2d, v10.2d, v7.2d
    632 0x02 0xc5 0xb9 0x2e
    633 0x09 0xc5 0xa5 0x6e
    634 0x4b 0xc5 0xe7 0x6e
    635 
    636 #------------------------------------------------------------------------------
    637 # Vector Add Pairwise (Integer)
    638 #------------------------------------------------------------------------------
    639 # CHECK: addp v31.8b, v31.8b, v31.8b
    640 # CHECK: addp v0.2d, v0.2d, v0.2d
    641 0xff 0xbf 0x3f 0x0e
    642 0x00 0xbc 0xe0 0x4e
    643 
    644 #------------------------------------------------------------------------------
    645 # Vector Add Pairwise (Floating Point)
    646 #------------------------------------------------------------------------------
    647 # CHECK: faddp v0.4s, v0.4s, v0.4s
    648 # CHECK: faddp v31.2s, v31.2s, v31.2s
    649 0x00 0xd4 0x20 0x6e
    650 0xff 0xd7 0x3f 0x2e
    651 
    652 
    653 #------------------------------------------------------------------------------
    654 # Vector Saturating Doubling Multiply High
    655 # Vector Saturating Rouding Doubling Multiply High
    656 #------------------------------------------------------------------------------
    657 # CHECK: sqdmulh v31.2s, v31.2s, v31.2s
    658 # CHECK: sqdmulh v5.4s, v7.4s, v9.4s
    659 # CHECK: sqrdmulh v31.4h, v3.4h, v13.4h
    660 # CHECK: sqrdmulh v0.8h, v10.8h, v20.8h
    661 0xff 0xb7 0xbf 0x0e
    662 0xe5 0xb4 0xa9 0x4e
    663 0x7f 0xb4 0x6d 0x2e
    664 0x40 0xb5 0x74 0x6e
    665 
    666 #------------------------------------------------------------------------------
    667 # Vector Multiply Extended
    668 #------------------------------------------------------------------------------
    669 # CHECK: fmulx v1.2s, v22.2s, v2.2s
    670 # CHECK: fmulx v21.4s, v15.4s, v3.4s
    671 # CHECK: fmulx v11.2d, v5.2d, v23.2d
    672 0xc1 0xde 0x22 0x0e
    673 0xf5 0xdd 0x23 0x4e
    674 0xab 0xdc 0x77 0x4e
    675 
    676 #----------------------------------------------------------------------
    677 # Vector Shift Left long 
    678 #----------------------------------------------------------------------
    679 # CHECK: shll2	v2.8h, v4.16b, #8
    680 # CHECK: shll2	v6.4s, v8.8h, #16
    681 # CHECK: shll2	v6.2d, v8.4s, #32
    682 # CHECK: shll	v2.8h, v4.8b, #8
    683 # CHECK: shll	v6.4s, v8.4h, #16
    684 # CHECK: shll	v6.2d, v8.2s, #32
    685 
    686 0x82,0x38,0x21,0x6e
    687 0x06,0x39,0x61,0x6e
    688 0x06,0x39,0xa1,0x6e
    689 0x82,0x38,0x21,0x2e
    690 0x06,0x39,0x61,0x2e
    691 0x06,0x39,0xa1,0x2e
    692 
    693 #----------------------------------------------------------------------
    694 # Vector Shift Left by Immediate
    695 #----------------------------------------------------------------------
    696 # CHECK: shl v0.4h, v1.4h, #3
    697 # CHECK: shl v0.16b, v1.16b, #3
    698 # CHECK: shl v0.4s, v1.4s, #3
    699 # CHECK: shl v0.2d, v1.2d, #3
    700 0x20,0x54,0x13,0x0f
    701 0x20,0x54,0x0b,0x4f
    702 0x20,0x54,0x23,0x4f
    703 0x20,0x54,0x43,0x4f
    704 
    705 #----------------------------------------------------------------------
    706 # Vector Shift Left Long (Signed, Unsigned) by Immediate
    707 #----------------------------------------------------------------------
    708 # CHECK: sshll v0.2d, v1.2s, #3
    709 # CHECK: sshll2 v0.4s, v1.8h, #3
    710 # CHECK: ushll v0.4s, v1.4h, #3
    711 # CHECK: ushll2 v0.8h, v1.16b, #3
    712 0x20 0xa4 0x23 0x0f
    713 0x20 0xa4 0x13 0x4f
    714 0x20 0xa4 0x13 0x2f
    715 0x20 0xa4 0x0b 0x6f
    716 
    717 #-----------------------------------------------------------------------------
    718 #Integer shift right (Signed)
    719 #-----------------------------------------------------------------------------
    720 # CHECK: sshr v0.8b, v1.8b, #3
    721 # CHECK: sshr v0.4h, v1.4h, #3
    722 # CHECK: sshr v0.2s, v1.2s, #3
    723 # CHECK: sshr v0.16b, v1.16b, #3
    724 # CHECK: sshr v0.8h, v1.8h, #3
    725 # CHECK: sshr v0.4s, v1.4s, #3
    726 # CHECK: sshr v0.2d, v1.2d, #3
    727 0x20,0x04,0x0d,0x0f
    728 0x20,0x04,0x1d,0x0f
    729 0x20,0x04,0x3d,0x0f
    730 0x20,0x04,0x0d,0x4f
    731 0x20,0x04,0x1d,0x4f
    732 0x20,0x04,0x3d,0x4f
    733 0x20,0x04,0x7d,0x4f
    734 
    735 #-----------------------------------------------------------------------------
    736 #Integer shift right (Unsigned)
    737 #-----------------------------------------------------------------------------
    738 # CHECK: ushr v0.8b, v1.8b, #3
    739 # CHECK: ushr v0.4h, v1.4h, #3
    740 # CHECK: ushr v0.2s, v1.2s, #3
    741 # CHECK: ushr v0.16b, v1.16b, #3
    742 # CHECK: ushr v0.8h, v1.8h, #3
    743 # CHECK: ushr v0.4s, v1.4s, #3
    744 # CHECK: ushr v0.2d, v1.2d, #3
    745 0x20,0x04,0x0d,0x2f
    746 0x20,0x04,0x1d,0x2f
    747 0x20,0x04,0x3d,0x2f
    748 0x20,0x04,0x0d,0x6f
    749 0x20,0x04,0x1d,0x6f
    750 0x20,0x04,0x3d,0x6f
    751 0x20,0x04,0x7d,0x6f
    752 
    753 #-----------------------------------------------------------------------------
    754 #Integer shift right and accumulate (Signed)
    755 #-----------------------------------------------------------------------------
    756 # CHECK: ssra v0.8b, v1.8b, #3
    757 # CHECK: ssra v0.4h, v1.4h, #3
    758 # CHECK: ssra v0.2s, v1.2s, #3
    759 # CHECK: ssra v0.16b, v1.16b, #3
    760 # CHECK: ssra v0.8h, v1.8h, #3
    761 # CHECK: ssra v0.4s, v1.4s, #3
    762 # CHECK: ssra v0.2d, v1.2d, #3
    763 0x20,0x14,0x0d,0x0f
    764 0x20,0x14,0x1d,0x0f
    765 0x20,0x14,0x3d,0x0f
    766 0x20,0x14,0x0d,0x4f
    767 0x20,0x14,0x1d,0x4f
    768 0x20,0x14,0x3d,0x4f
    769 0x20,0x14,0x7d,0x4f
    770 
    771 #-----------------------------------------------------------------------------
    772 #Integer shift right and accumulate (Unsigned)
    773 #-----------------------------------------------------------------------------
    774 # CHECK: usra v0.8b, v1.8b, #3
    775 # CHECK: usra v0.4h, v1.4h, #3
    776 # CHECK: usra v0.2s, v1.2s, #3
    777 # CHECK: usra v0.16b, v1.16b, #3
    778 # CHECK: usra v0.8h, v1.8h, #3
    779 # CHECK: usra v0.4s, v1.4s, #3
    780 # CHECK: usra v0.2d, v1.2d, #3
    781 0x20,0x14,0x0d,0x2f
    782 0x20,0x14,0x1d,0x2f
    783 0x20,0x14,0x3d,0x2f
    784 0x20,0x14,0x0d,0x6f
    785 0x20,0x14,0x1d,0x6f
    786 0x20,0x14,0x3d,0x6f
    787 0x20,0x14,0x7d,0x6f
    788 
    789 #-----------------------------------------------------------------------------
    790 #Integer rounding shift right (Signed)
    791 #-----------------------------------------------------------------------------
    792 # CHECK: srshr v0.8b, v1.8b, #3
    793 # CHECK: srshr v0.4h, v1.4h, #3
    794 # CHECK: srshr v0.2s, v1.2s, #3
    795 # CHECK: srshr v0.16b, v1.16b, #3
    796 # CHECK: srshr v0.8h, v1.8h, #3
    797 # CHECK: srshr v0.4s, v1.4s, #3
    798 # CHECK: srshr v0.2d, v1.2d, #3
    799 0x20,0x24,0x0d,0x0f
    800 0x20,0x24,0x1d,0x0f
    801 0x20,0x24,0x3d,0x0f
    802 0x20,0x24,0x0d,0x4f
    803 0x20,0x24,0x1d,0x4f
    804 0x20,0x24,0x3d,0x4f
    805 0x20,0x24,0x7d,0x4f
    806 
    807 #-----------------------------------------------------------------------------
    808 #Integer rounding shift right (Unsigned)
    809 #-----------------------------------------------------------------------------
    810 # CHECK: urshr v0.8b, v1.8b, #3
    811 # CHECK: urshr v0.4h, v1.4h, #3
    812 # CHECK: urshr v0.2s, v1.2s, #3
    813 # CHECK: urshr v0.16b, v1.16b, #3
    814 # CHECK: urshr v0.8h, v1.8h, #3
    815 # CHECK: urshr v0.4s, v1.4s, #3
    816 # CHECK: urshr v0.2d, v1.2d, #3
    817 0x20,0x24,0x0d,0x2f
    818 0x20,0x24,0x1d,0x2f
    819 0x20,0x24,0x3d,0x2f
    820 0x20,0x24,0x0d,0x6f
    821 0x20,0x24,0x1d,0x6f
    822 0x20,0x24,0x3d,0x6f
    823 0x20,0x24,0x7d,0x6f
    824 
    825 #-----------------------------------------------------------------------------
    826 #Integer rounding shift right and accumulate (Signed)
    827 #-----------------------------------------------------------------------------
    828 # CHECK: srsra v0.8b, v1.8b, #3
    829 # CHECK: srsra v0.4h, v1.4h, #3
    830 # CHECK: srsra v0.2s, v1.2s, #3
    831 # CHECK: srsra v0.16b, v1.16b, #3
    832 # CHECK: srsra v0.8h, v1.8h, #3
    833 # CHECK: srsra v0.4s, v1.4s, #3
    834 # CHECK: srsra v0.2d, v1.2d, #3
    835 0x20,0x34,0x0d,0x0f
    836 0x20,0x34,0x1d,0x0f
    837 0x20,0x34,0x3d,0x0f
    838 0x20,0x34,0x0d,0x4f
    839 0x20,0x34,0x1d,0x4f
    840 0x20,0x34,0x3d,0x4f
    841 0x20,0x34,0x7d,0x4f
    842 
    843 #-----------------------------------------------------------------------------
    844 #Integer rounding shift right and accumulate (Unsigned)
    845 #-----------------------------------------------------------------------------
    846 # CHECK: ursra v0.8b, v1.8b, #3
    847 # CHECK: ursra v0.4h, v1.4h, #3
    848 # CHECK: ursra v0.2s, v1.2s, #3
    849 # CHECK: ursra v0.16b, v1.16b, #3
    850 # CHECK: ursra v0.8h, v1.8h, #3
    851 # CHECK: ursra v0.4s, v1.4s, #3
    852 # CHECK: ursra v0.2d, v1.2d, #3
    853 0x20,0x34,0x0d,0x2f
    854 0x20,0x34,0x1d,0x2f
    855 0x20,0x34,0x3d,0x2f
    856 0x20,0x34,0x0d,0x6f
    857 0x20,0x34,0x1d,0x6f
    858 0x20,0x34,0x3d,0x6f
    859 0x20,0x34,0x7d,0x6f
    860 
    861 #-----------------------------------------------------------------------------
    862 #Integer shift right and insert
    863 #-----------------------------------------------------------------------------
    864 # CHECK: sri v0.8b, v1.8b, #3
    865 # CHECK: sri v0.4h, v1.4h, #3
    866 # CHECK: sri v0.2s, v1.2s, #3
    867 # CHECK: sri v0.16b, v1.16b, #3
    868 # CHECK: sri v0.8h, v1.8h, #3
    869 # CHECK: sri v0.4s, v1.4s, #3
    870 # CHECK: sri v0.2d, v1.2d, #3
    871 0x20,0x44,0x0d,0x2f
    872 0x20,0x44,0x1d,0x2f
    873 0x20,0x44,0x3d,0x2f
    874 0x20,0x44,0x0d,0x6f
    875 0x20,0x44,0x1d,0x6f
    876 0x20,0x44,0x3d,0x6f
    877 0x20,0x44,0x7d,0x6f
    878 
    879 #-----------------------------------------------------------------------------
    880 #Integer shift left and insert
    881 #-----------------------------------------------------------------------------
    882 # CHECK: sli v0.8b, v1.8b, #3
    883 # CHECK: sli v0.4h, v1.4h, #3
    884 # CHECK: sli v0.2s, v1.2s, #3
    885 # CHECK: sli v0.16b, v1.16b, #3
    886 # CHECK: sli v0.8h, v1.8h, #3
    887 # CHECK: sli v0.4s, v1.4s, #3
    888 # CHECK: sli v0.2d, v1.2d, #3
    889 0x20,0x54,0x0b,0x2f
    890 0x20,0x54,0x13,0x2f
    891 0x20,0x54,0x23,0x2f
    892 0x20,0x54,0x0b,0x6f
    893 0x20,0x54,0x13,0x6f
    894 0x20,0x54,0x23,0x6f
    895 0x20,0x54,0x43,0x6f
    896 
    897 #-----------------------------------------------------------------------------
    898 #Integer saturating shift left unsigned
    899 #-----------------------------------------------------------------------------
    900 # CHECK: sqshlu v0.8b, v1.8b, #3
    901 # CHECK: sqshlu v0.4h, v1.4h, #3
    902 # CHECK: sqshlu v0.2s, v1.2s, #3
    903 # CHECK: sqshlu v0.16b, v1.16b, #3
    904 # CHECK: sqshlu v0.8h, v1.8h, #3
    905 # CHECK: sqshlu v0.4s, v1.4s, #3
    906 # CHECK: sqshlu v0.2d, v1.2d, #3
    907 0x20,0x64,0x0b,0x2f
    908 0x20,0x64,0x13,0x2f
    909 0x20,0x64,0x23,0x2f
    910 0x20,0x64,0x0b,0x6f
    911 0x20,0x64,0x13,0x6f
    912 0x20,0x64,0x23,0x6f
    913 0x20,0x64,0x43,0x6f
    914 
    915 #-----------------------------------------------------------------------------
    916 #Integer saturating shift left (Signed)
    917 #-----------------------------------------------------------------------------
    918 # CHECK: sqshl v0.8b, v1.8b, #3
    919 # CHECK: sqshl v0.4h, v1.4h, #3
    920 # CHECK: sqshl v0.2s, v1.2s, #3
    921 # CHECK: sqshl v0.16b, v1.16b, #3
    922 # CHECK: sqshl v0.8h, v1.8h, #3
    923 # CHECK: sqshl v0.4s, v1.4s, #3
    924 # CHECK: sqshl v0.2d, v1.2d, #3
    925 0x20,0x74,0x0b,0x0f
    926 0x20,0x74,0x13,0x0f
    927 0x20,0x74,0x23,0x0f
    928 0x20,0x74,0x0b,0x4f
    929 0x20,0x74,0x13,0x4f
    930 0x20,0x74,0x23,0x4f
    931 0x20,0x74,0x43,0x4f
    932 
    933 #-----------------------------------------------------------------------------
    934 #Integer saturating shift left (Unsigned)
    935 #-----------------------------------------------------------------------------
    936 # CHECK: uqshl v0.8b, v1.8b, #3
    937 # CHECK: uqshl v0.4h, v1.4h, #3
    938 # CHECK: uqshl v0.2s, v1.2s, #3
    939 # CHECK: uqshl v0.16b, v1.16b, #3
    940 # CHECK: uqshl v0.8h, v1.8h, #3
    941 # CHECK: uqshl v0.4s, v1.4s, #3
    942 # CHECK: uqshl v0.2d, v1.2d, #3
    943 0x20,0x74,0x0b,0x2f
    944 0x20,0x74,0x13,0x2f
    945 0x20,0x74,0x23,0x2f
    946 0x20,0x74,0x0b,0x6f
    947 0x20,0x74,0x13,0x6f
    948 0x20,0x74,0x23,0x6f
    949 0x20,0x74,0x43,0x6f
    950 
    951 #-----------------------------------------------------------------------------
    952 #Integer shift right narrow
    953 #-----------------------------------------------------------------------------
    954 # CHECK: shrn v0.8b, v1.8h, #3
    955 # CHECK: shrn v0.4h, v1.4s, #3
    956 # CHECK: shrn v0.2s, v1.2d, #3
    957 # CHECK: shrn2 v0.16b, v1.8h, #3
    958 # CHECK: shrn2 v0.8h, v1.4s, #3
    959 # CHECK: shrn2 v0.4s, v1.2d, #3
    960 0x20,0x84,0x0d,0x0f
    961 0x20,0x84,0x1d,0x0f
    962 0x20,0x84,0x3d,0x0f
    963 0x20,0x84,0x0d,0x4f
    964 0x20,0x84,0x1d,0x4f
    965 0x20,0x84,0x3d,0x4f
    966 
    967 #-----------------------------------------------------------------------------
    968 #Integer saturating shift right unsigned narrow (Signed)
    969 #-----------------------------------------------------------------------------
    970 # CHECK: sqshrun v0.8b, v1.8h, #3
    971 # CHECK: sqshrun v0.4h, v1.4s, #3
    972 # CHECK: sqshrun v0.2s, v1.2d, #3
    973 # CHECK: sqshrun2 v0.16b, v1.8h, #3
    974 # CHECK: sqshrun2 v0.8h, v1.4s, #3
    975 # CHECK: sqshrun2 v0.4s, v1.2d, #3
    976 0x20,0x84,0x0d,0x2f
    977 0x20,0x84,0x1d,0x2f
    978 0x20,0x84,0x3d,0x2f
    979 0x20,0x84,0x0d,0x6f
    980 0x20,0x84,0x1d,0x6f
    981 0x20,0x84,0x3d,0x6f
    982 
    983 #-----------------------------------------------------------------------------
    984 #Integer rounding shift right narrow
    985 #-----------------------------------------------------------------------------
    986 # CHECK: rshrn v0.8b, v1.8h, #3
    987 # CHECK: rshrn v0.4h, v1.4s, #3
    988 # CHECK: rshrn v0.2s, v1.2d, #3
    989 # CHECK: rshrn2 v0.16b, v1.8h, #3
    990 # CHECK: rshrn2 v0.8h, v1.4s, #3
    991 # CHECK: rshrn2 v0.4s, v1.2d, #3
    992 0x20,0x8c,0x0d,0x0f
    993 0x20,0x8c,0x1d,0x0f
    994 0x20,0x8c,0x3d,0x0f
    995 0x20,0x8c,0x0d,0x4f
    996 0x20,0x8c,0x1d,0x4f
    997 0x20,0x8c,0x3d,0x4f
    998 
    999 #-----------------------------------------------------------------------------
   1000 #Integer saturating shift right rounded unsigned narrow (Signed)
   1001 #-----------------------------------------------------------------------------
   1002 # CHECK: sqrshrun v0.8b, v1.8h, #3
   1003 # CHECK: sqrshrun v0.4h, v1.4s, #3
   1004 # CHECK: sqrshrun v0.2s, v1.2d, #3
   1005 # CHECK: sqrshrun2 v0.16b, v1.8h, #3
   1006 # CHECK: sqrshrun2 v0.8h, v1.4s, #3
   1007 # CHECK: sqrshrun2 v0.4s, v1.2d, #3
   1008 0x20,0x8c,0x0d,0x2f
   1009 0x20,0x8c,0x1d,0x2f
   1010 0x20,0x8c,0x3d,0x2f
   1011 0x20,0x8c,0x0d,0x6f
   1012 0x20,0x8c,0x1d,0x6f
   1013 0x20,0x8c,0x3d,0x6f
   1014 
   1015 #-----------------------------------------------------------------------------
   1016 #Integer saturating shift right narrow (Signed)
   1017 #-----------------------------------------------------------------------------
   1018 # CHECK: sqshrn v0.8b, v1.8h, #3
   1019 # CHECK: sqshrn v0.4h, v1.4s, #3
   1020 # CHECK: sqshrn v0.2s, v1.2d, #3
   1021 # CHECK: sqshrn2 v0.16b, v1.8h, #3
   1022 # CHECK: sqshrn2 v0.8h, v1.4s, #3
   1023 # CHECK: sqshrn2 v0.4s, v1.2d, #3
   1024 0x20,0x94,0x0d,0x0f
   1025 0x20,0x94,0x1d,0x0f
   1026 0x20,0x94,0x3d,0x0f
   1027 0x20,0x94,0x0d,0x4f
   1028 0x20,0x94,0x1d,0x4f
   1029 0x20,0x94,0x3d,0x4f
   1030 
   1031 #-----------------------------------------------------------------------------
   1032 #Integer saturating shift right narrow (Unsigned)
   1033 #-----------------------------------------------------------------------------
   1034 # CHECK: uqshrn v0.8b, v1.8h, #3
   1035 # CHECK: uqshrn v0.4h, v1.4s, #3
   1036 # CHECK: uqshrn v0.2s, v1.2d, #3
   1037 # CHECK: uqshrn2 v0.16b, v1.8h, #3
   1038 # CHECK: uqshrn2 v0.8h, v1.4s, #3
   1039 # CHECK: uqshrn2 v0.4s, v1.2d, #3
   1040 0x20,0x94,0x0d,0x2f
   1041 0x20,0x94,0x1d,0x2f
   1042 0x20,0x94,0x3d,0x2f
   1043 0x20,0x94,0x0d,0x6f
   1044 0x20,0x94,0x1d,0x6f
   1045 0x20,0x94,0x3d,0x6f
   1046 
   1047 #-----------------------------------------------------------------------------
   1048 #Integer saturating shift right rounded narrow (Signed)
   1049 #-----------------------------------------------------------------------------
   1050 # CHECK: sqrshrn v0.8b, v1.8h, #3
   1051 # CHECK: sqrshrn v0.4h, v1.4s, #3
   1052 # CHECK: sqrshrn v0.2s, v1.2d, #3
   1053 # CHECK: sqrshrn2 v0.16b, v1.8h, #3
   1054 # CHECK: sqrshrn2 v0.8h, v1.4s, #3
   1055 # CHECK: sqrshrn2 v0.4s, v1.2d, #3
   1056 0x20,0x9c,0x0d,0x0f
   1057 0x20,0x9c,0x1d,0x0f
   1058 0x20,0x9c,0x3d,0x0f
   1059 0x20,0x9c,0x0d,0x4f
   1060 0x20,0x9c,0x1d,0x4f
   1061 0x20,0x9c,0x3d,0x4f
   1062 
   1063 #-----------------------------------------------------------------------------
   1064 #Integer saturating shift right rounded narrow (Unsigned)
   1065 #-----------------------------------------------------------------------------
   1066 # CHECK: uqrshrn v0.8b, v1.8h, #3
   1067 # CHECK: uqrshrn v0.4h, v1.4s, #3
   1068 # CHECK: uqrshrn v0.2s, v1.2d, #3
   1069 # CHECK: uqrshrn2 v0.16b, v1.8h, #3
   1070 # CHECK: uqrshrn2 v0.8h, v1.4s, #3
   1071 # CHECK: uqrshrn2 v0.4s, v1.2d, #3
   1072 0x20,0x9c,0x0d,0x2f
   1073 0x20,0x9c,0x1d,0x2f
   1074 0x20,0x9c,0x3d,0x2f
   1075 0x20,0x9c,0x0d,0x6f
   1076 0x20,0x9c,0x1d,0x6f
   1077 0x20,0x9c,0x3d,0x6f
   1078 
   1079 #-----------------------------------------------------------------------------
   1080 #Fixed-point convert to floating-point
   1081 #-----------------------------------------------------------------------------
   1082 # CHECK: scvtf v0.2s, v1.2s, #3
   1083 # CHECK: scvtf v0.4s, v1.4s, #3
   1084 # CHECK: scvtf v0.2d, v1.2d, #3
   1085 # CHECK: ucvtf v0.2s, v1.2s, #3
   1086 # CHECK: ucvtf v0.4s, v1.4s, #3
   1087 # CHECK: ucvtf v0.2d, v1.2d, #3
   1088 
   1089 0x20,0xe4,0x3d,0x0f
   1090 0x20,0xe4,0x3d,0x4f
   1091 0x20,0xe4,0x7d,0x4f
   1092 0x20,0xe4,0x3d,0x2f
   1093 0x20,0xe4,0x3d,0x6f
   1094 0x20,0xe4,0x7d,0x6f
   1095 
   1096 #-----------------------------------------------------------------------------
   1097 #Floating-point convert to fixed-point
   1098 #-----------------------------------------------------------------------------
   1099 # CHECK: fcvtzs v0.2s, v1.2s, #3
   1100 # CHECK: fcvtzs v0.4s, v1.4s, #3
   1101 # CHECK: fcvtzs v0.2d, v1.2d, #3
   1102 # CHECK: fcvtzu v0.2s, v1.2s, #3
   1103 # CHECK: fcvtzu v0.4s, v1.4s, #3
   1104 # CHECK: fcvtzu v0.2d, v1.2d, #3
   1105 0x20,0xfc,0x3d,0x0f
   1106 0x20,0xfc,0x3d,0x4f
   1107 0x20,0xfc,0x7d,0x4f
   1108 0x20,0xfc,0x3d,0x2f
   1109 0x20,0xfc,0x3d,0x6f
   1110 0x20,0xfc,0x7d,0x6f
   1111 
   1112 
   1113 #------------------------------------------------------------------------------
   1114 # Vector with 3 operands having different data types
   1115 #------------------------------------------------------------------------------
   1116 
   1117 #------------------------------------------------------------------------------
   1118 # Long
   1119 #------------------------------------------------------------------------------
   1120 
   1121 #------------------------------------------------------------------------------
   1122 # Long - Variant 1
   1123 #------------------------------------------------------------------------------
   1124 
   1125 # CHECK: saddl v0.8h, v1.8b, v2.8b
   1126 # CHECK: saddl v0.4s, v1.4h, v2.4h
   1127 # CHECK: saddl v0.2d, v1.2s, v2.2s
   1128 0x20 0x00 0x22 0x0e
   1129 0x20 0x00 0x62 0x0e
   1130 0x20 0x00 0xa2 0x0e
   1131 
   1132 # CHECK: saddl2 v0.4s, v1.8h, v2.8h
   1133 # CHECK: saddl2 v0.8h, v1.16b, v2.16b
   1134 # CHECK: saddl2 v0.2d, v1.4s, v2.4s
   1135 0x20 0x00 0x62 0x4e
   1136 0x20 0x00 0x22 0x4e
   1137 0x20 0x00 0xa2 0x4e
   1138 
   1139 # CHECK: uaddl v0.8h, v1.8b, v2.8b
   1140 # CHECK: uaddl v0.4s, v1.4h, v2.4h
   1141 # CHECK: uaddl v0.2d, v1.2s, v2.2s
   1142 0x20 0x00 0x22 0x2e
   1143 0x20 0x00 0x62 0x2e
   1144 0x20 0x00 0xa2 0x2e
   1145 
   1146 # CHECK: uaddl2 v0.8h, v1.16b, v2.16b
   1147 # CHECK: uaddl2 v0.4s, v1.8h, v2.8h
   1148 # CHECK: uaddl2 v0.2d, v1.4s, v2.4s
   1149 0x20 0x00 0x22 0x6e
   1150 0x20 0x00 0x62 0x6e
   1151 0x20 0x00 0xa2 0x6e
   1152 
   1153 # CHECK: ssubl v0.8h, v1.8b, v2.8b
   1154 # CHECK: ssubl v0.4s, v1.4h, v2.4h
   1155 # CHECK: ssubl v0.2d, v1.2s, v2.2s
   1156 0x20 0x20 0x22 0x0e
   1157 0x20 0x20 0x62 0x0e
   1158 0x20 0x20 0xa2 0x0e
   1159 
   1160 # CHECK: ssubl2 v0.8h, v1.16b, v2.16b
   1161 # CHECK: ssubl2 v0.4s, v1.8h, v2.8h
   1162 # CHECK: ssubl2 v0.2d, v1.4s, v2.4s
   1163 0x20 0x20 0x22 0x4e
   1164 0x20 0x20 0x62 0x4e
   1165 0x20 0x20 0xa2 0x4e
   1166 
   1167 # CHECK: usubl v0.8h, v1.8b, v2.8b
   1168 # CHECK: usubl v0.4s, v1.4h, v2.4h
   1169 # CHECK: usubl v0.2d, v1.2s, v2.2s
   1170 0x20 0x20 0x22 0x2e
   1171 0x20 0x20 0x62 0x2e
   1172 0x20 0x20 0xa2 0x2e
   1173 
   1174 # CHECK: usubl2 v0.8h, v1.16b, v2.16b
   1175 # CHECK: usubl2 v0.4s, v1.8h, v2.8h
   1176 # CHECK: usubl2 v0.2d, v1.4s, v2.4s
   1177 0x20 0x20 0x22 0x6e
   1178 0x20 0x20 0x62 0x6e
   1179 0x20 0x20 0xa2 0x6e
   1180 
   1181 # CHECK: sabal v0.8h, v1.8b, v2.8b
   1182 # CHECK: sabal v0.4s, v1.4h, v2.4h
   1183 # CHECK: sabal v0.2d, v1.2s, v2.2s
   1184 0x20 0x50 0x22 0x0e
   1185 0x20 0x50 0x62 0x0e
   1186 0x20 0x50 0xa2 0x0e
   1187 
   1188 # CHECK: sabal2 v0.8h, v1.16b, v2.16b
   1189 # CHECK: sabal2 v0.4s, v1.8h, v2.8h
   1190 # CHECK: sabal2 v0.2d, v1.4s, v2.4s
   1191 0x20 0x50 0x22 0x4e
   1192 0x20 0x50 0x62 0x4e
   1193 0x20 0x50 0xa2 0x4e
   1194 
   1195 # CHECK: uabal v0.8h, v1.8b, v2.8b
   1196 # CHECK: uabal v0.4s, v1.4h, v2.4h
   1197 # CHECK: uabal v0.2d, v1.2s, v2.2s
   1198 0x20 0x50 0x22 0x2e
   1199 0x20 0x50 0x62 0x2e
   1200 0x20 0x50 0xa2 0x2e
   1201 
   1202 # CHECK: uabal2 v0.8h, v1.16b, v2.16b
   1203 # CHECK: uabal2 v0.4s, v1.8h, v2.8h
   1204 # CHECK: uabal2 v0.2d, v1.4s, v2.4s
   1205 0x20 0x50 0x22 0x6e
   1206 0x20 0x50 0x62 0x6e
   1207 0x20 0x50 0xa2 0x6e
   1208 
   1209 # CHECK: sabdl v0.8h, v1.8b, v2.8b
   1210 # CHECK: sabdl v0.4s, v1.4h, v2.4h
   1211 # CHECK: sabdl v0.2d, v1.2s, v2.2s
   1212 0x20 0x70 0x22 0x0e
   1213 0x20 0x70 0x62 0x0e
   1214 0x20 0x70 0xa2 0x0e
   1215 
   1216 # CHECK: sabdl2 v0.8h, v1.16b, v2.16b
   1217 # CHECK: sabdl2 v0.4s, v1.8h, v2.8h
   1218 # CHECK: sabdl2 v0.2d, v1.4s, v2.4s
   1219 0x20 0x70 0x22 0x4e
   1220 0x20 0x70 0x62 0x4e
   1221 0x20 0x70 0xa2 0x4e
   1222 
   1223 # CHECK: uabdl v0.8h, v1.8b, v2.8b
   1224 # CHECK: uabdl v0.4s, v1.4h, v2.4h
   1225 # CHECK: uabdl v0.2d, v1.2s, v2.2s
   1226 0x20 0x70 0x22 0x2e
   1227 0x20 0x70 0x62 0x2e
   1228 0x20 0x70 0xa2 0x2e
   1229 
   1230 # CHECK: uabdl2 v0.8h, v1.16b, v2.16b
   1231 # CHECK: uabdl2 v0.4s, v1.8h, v2.8h
   1232 # CHECK: uabdl2 v0.2d, v1.4s, v2.4s
   1233 0x20 0x70 0x22 0x6e
   1234 0x20 0x70 0x62 0x6e
   1235 0x20 0x70 0xa2 0x6e
   1236 
   1237 # CHECK: smlal v0.8h, v1.8b, v2.8b
   1238 # CHECK: smlal v0.4s, v1.4h, v2.4h
   1239 # CHECK: smlal v0.2d, v1.2s, v2.2s
   1240 0x20 0x80 0x22 0x0e
   1241 0x20 0x80 0x62 0x0e
   1242 0x20 0x80 0xa2 0x0e
   1243 
   1244 # CHECK: smlal2 v0.8h, v1.16b, v2.16b
   1245 # CHECK: smlal2 v0.4s, v1.8h, v2.8h
   1246 # CHECK: smlal2 v0.2d, v1.4s, v2.4s
   1247 0x20 0x80 0x22 0x4e
   1248 0x20 0x80 0x62 0x4e
   1249 0x20 0x80 0xa2 0x4e
   1250 
   1251 # CHECK: umlal v0.8h, v1.8b, v2.8b
   1252 # CHECK: umlal v0.4s, v1.4h, v2.4h
   1253 # CHECK: umlal v0.2d, v1.2s, v2.2s
   1254 
   1255 0x20 0x80 0x22 0x2e
   1256 0x20 0x80 0x62 0x2e
   1257 0x20 0x80 0xa2 0x2e
   1258 
   1259 # CHECK: umlal2 v0.8h, v1.16b, v2.16b
   1260 # CHECK: umlal2 v0.4s, v1.8h, v2.8h
   1261 # CHECK: umlal2 v0.2d, v1.4s, v2.4s
   1262 0x20 0x80 0x22 0x6e
   1263 0x20 0x80 0x62 0x6e
   1264 0x20 0x80 0xa2 0x6e
   1265 
   1266 # CHECK: smlsl v0.8h, v1.8b, v2.8b
   1267 # CHECK: smlsl v0.4s, v1.4h, v2.4h
   1268 # CHECK: smlsl v0.2d, v1.2s, v2.2s
   1269 0x20 0xa0 0x22 0x0e
   1270 0x20 0xa0 0x62 0x0e
   1271 0x20 0xa0 0xa2 0x0e
   1272 
   1273 # CHECK: smlsl2 v0.8h, v1.16b, v2.16b
   1274 # CHECK: smlsl2 v0.4s, v1.8h, v2.8h
   1275 # CHECK: smlsl2 v0.2d, v1.4s, v2.4s
   1276 0x20 0xa0 0x22 0x4e
   1277 0x20 0xa0 0x62 0x4e
   1278 0x20 0xa0 0xa2 0x4e
   1279 
   1280 # CHECK: umlsl v0.8h, v1.8b, v2.8b
   1281 # CHECK: umlsl v0.4s, v1.4h, v2.4h
   1282 # CHECK: umlsl v0.2d, v1.2s, v2.2s
   1283 0x20 0xa0 0x22 0x2e
   1284 0x20 0xa0 0x62 0x2e
   1285 0x20 0xa0 0xa2 0x2e
   1286 
   1287 # CHECK: umlsl2 v0.8h, v1.16b, v2.16b
   1288 # CHECK: umlsl2 v0.4s, v1.8h, v2.8h
   1289 # CHECK: umlsl2 v0.2d, v1.4s, v2.4s
   1290 0x20 0xa0 0x22 0x6e
   1291 0x20 0xa0 0x62 0x6e
   1292 0x20 0xa0 0xa2 0x6e
   1293 
   1294 # CHECK: smull v0.8h, v1.8b, v2.8b
   1295 # CHECK: smull v0.4s, v1.4h, v2.4h
   1296 # CHECK: smull v0.2d, v1.2s, v2.2s
   1297 0x20 0xc0 0x22 0x0e
   1298 0x20 0xc0 0x62 0x0e
   1299 0x20 0xc0 0xa2 0x0e
   1300 
   1301 # CHECK: smull2 v0.8h, v1.16b, v2.16b
   1302 # CHECK: smull2 v0.4s, v1.8h, v2.8h
   1303 # CHECK: smull2 v0.2d, v1.4s, v2.4s
   1304 0x20 0xc0 0x22 0x4e
   1305 0x20 0xc0 0x62 0x4e
   1306 0x20 0xc0 0xa2 0x4e
   1307 
   1308 # CHECK: umull v0.8h, v1.8b, v2.8b
   1309 # CHECK: umull v0.4s, v1.4h, v2.4h
   1310 # CHECK: umull v0.2d, v1.2s, v2.2s
   1311 0x20 0xc0 0x22 0x2e
   1312 0x20 0xc0 0x62 0x2e
   1313 0x20 0xc0 0xa2 0x2e
   1314 
   1315 # CHECK: umull2 v0.8h, v1.16b, v2.16b
   1316 # CHECK: umull2 v0.4s, v1.8h, v2.8h
   1317 # CHECK: umull2 v0.2d, v1.4s, v2.4s
   1318 0x20 0xc0 0x22 0x6e
   1319 0x20 0xc0 0x62 0x6e
   1320 0x20 0xc0 0xa2 0x6e
   1321 
   1322 #------------------------------------------------------------------------------
   1323 # Long - Variant 2
   1324 #------------------------------------------------------------------------------
   1325 
   1326 # CHECK: sqdmlal v0.4s, v1.4h, v2.4h
   1327 # CHECK: sqdmlal v0.2d, v1.2s, v2.2s
   1328 0x20 0x90 0x62 0x0e
   1329 0x20 0x90 0xa2 0x0e
   1330 
   1331 # CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
   1332 # CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
   1333 0x20 0x90 0x62 0x4e
   1334 0x20 0x90 0xa2 0x4e
   1335 
   1336 # CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
   1337 # CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
   1338 0x20 0xb0 0x62 0x0e
   1339 0x20 0xb0 0xa2 0x0e
   1340 
   1341 # CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
   1342 # CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
   1343 0x20 0xb0 0x62 0x4e
   1344 0x20 0xb0 0xa2 0x4e
   1345 
   1346 # CHECK: sqdmull v0.4s, v1.4h, v2.4h
   1347 # CHECK: sqdmull v0.2d, v1.2s, v2.2s
   1348 0x20 0xd0 0x62 0x0e
   1349 0x20 0xd0 0xa2 0x0e
   1350 
   1351 # CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
   1352 # CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
   1353 0x20 0xd0 0x62 0x4e
   1354 0x20 0xd0 0xa2 0x4e
   1355 
   1356 #------------------------------------------------------------------------------
   1357 # Long - Variant 3
   1358 #------------------------------------------------------------------------------
   1359 
   1360 # CHECK: pmull v0.8h, v1.8b, v2.8b
   1361 0x20 0xe0 0x22 0x0e
   1362 
   1363 # CHECK: pmull2 v0.8h, v1.16b, v2.16b
   1364 0x20 0xe0 0x22 0x4e
   1365 
   1366 #------------------------------------------------------------------------------
   1367 # Widen
   1368 #------------------------------------------------------------------------------
   1369 
   1370 # CHECK: saddw v0.8h, v1.8h, v2.8b
   1371 # CHECK: saddw v0.4s, v1.4s, v2.4h
   1372 # CHECK: saddw v0.2d, v1.2d, v2.2s
   1373 0x20 0x10 0x22 0x0e
   1374 0x20 0x10 0x62 0x0e
   1375 0x20 0x10 0xa2 0x0e
   1376 
   1377 # CHECK: saddw2 v0.8h, v1.8h, v2.16b
   1378 # CHECK: saddw2 v0.4s, v1.4s, v2.8h
   1379 # CHECK: saddw2 v0.2d, v1.2d, v2.4s
   1380 0x20 0x10 0x22 0x4e
   1381 0x20 0x10 0x62 0x4e
   1382 0x20 0x10 0xa2 0x4e
   1383 
   1384 # CHECK: uaddw v0.8h, v1.8h, v2.8b
   1385 # CHECK: uaddw v0.4s, v1.4s, v2.4h
   1386 # CHECK: uaddw v0.2d, v1.2d, v2.2s
   1387 0x20 0x10 0x22 0x2e
   1388 0x20 0x10 0x62 0x2e
   1389 0x20 0x10 0xa2 0x2e
   1390 
   1391 # CHECK: uaddw2 v0.8h, v1.8h, v2.16b
   1392 # CHECK: uaddw2 v0.4s, v1.4s, v2.8h
   1393 # CHECK: uaddw2 v0.2d, v1.2d, v2.4s
   1394 0x20 0x10 0x22 0x6e
   1395 0x20 0x10 0x62 0x6e
   1396 0x20 0x10 0xa2 0x6e
   1397 
   1398 # CHECK: ssubw v0.8h, v1.8h, v2.8b
   1399 # CHECK: ssubw v0.4s, v1.4s, v2.4h
   1400 # CHECK: ssubw v0.2d, v1.2d, v2.2s
   1401 0x20 0x30 0x22 0x0e
   1402 0x20 0x30 0x62 0x0e
   1403 0x20 0x30 0xa2 0x0e
   1404 
   1405 # CHECK: ssubw2 v0.8h, v1.8h, v2.16b
   1406 # CHECK: ssubw2 v0.4s, v1.4s, v2.8h
   1407 # CHECK: ssubw2 v0.2d, v1.2d, v2.4s
   1408 0x20 0x30 0x22 0x4e
   1409 0x20 0x30 0x62 0x4e
   1410 0x20 0x30 0xa2 0x4e
   1411 
   1412 # CHECK: usubw v0.8h, v1.8h, v2.8b
   1413 # CHECK: usubw v0.4s, v1.4s, v2.4h
   1414 # CHECK: usubw v0.2d, v1.2d, v2.2s
   1415 0x20 0x30 0x22 0x2e
   1416 0x20 0x30 0x62 0x2e
   1417 0x20 0x30 0xa2 0x2e
   1418 
   1419 # CHECK: usubw2 v0.8h, v1.8h, v2.16b
   1420 # CHECK: usubw2 v0.4s, v1.4s, v2.8h
   1421 # CHECK: usubw2 v0.2d, v1.2d, v2.4s
   1422 0x20 0x30 0x22 0x6e
   1423 0x20 0x30 0x62 0x6e
   1424 0x20 0x30 0xa2 0x6e
   1425 
   1426 #------------------------------------------------------------------------------
   1427 # Narrow
   1428 #------------------------------------------------------------------------------
   1429 
   1430 # CHECK: addhn v0.8b, v1.8h, v2.8h
   1431 # CHECK: addhn v0.4h, v1.4s, v2.4s
   1432 # CHECK: addhn v0.2s, v1.2d, v2.2d
   1433 0x20 0x40 0x22 0x0e
   1434 0x20 0x40 0x62 0x0e
   1435 0x20 0x40 0xa2 0x0e
   1436 
   1437 # CHECK: addhn2 v0.16b, v1.8h, v2.8h
   1438 # CHECK: addhn2 v0.8h, v1.4s, v2.4s
   1439 # CHECK: addhn2 v0.4s, v1.2d, v2.2d
   1440 0x20 0x40 0x22 0x4e
   1441 0x20 0x40 0x62 0x4e
   1442 0x20 0x40 0xa2 0x4e
   1443 
   1444 # CHECK: raddhn v0.8b, v1.8h, v2.8h
   1445 # CHECK: raddhn v0.4h, v1.4s, v2.4s
   1446 # CHECK: raddhn v0.2s, v1.2d, v2.2d
   1447 0x20 0x40 0x22 0x2e
   1448 0x20 0x40 0x62 0x2e
   1449 0x20 0x40 0xa2 0x2e
   1450 
   1451 # CHECK: raddhn2 v0.16b, v1.8h, v2.8h
   1452 # CHECK: raddhn2 v0.8h, v1.4s, v2.4s
   1453 # CHECK: raddhn2 v0.4s, v1.2d, v2.2d
   1454 0x20 0x40 0x22 0x6e
   1455 0x20 0x40 0x62 0x6e
   1456 0x20 0x40 0xa2 0x6e
   1457 
   1458 # CHECK: rsubhn v0.8b, v1.8h, v2.8h
   1459 # CHECK: rsubhn v0.4h, v1.4s, v2.4s
   1460 # CHECK: rsubhn v0.2s, v1.2d, v2.2d
   1461 0x20 0x60 0x22 0x2e
   1462 0x20 0x60 0x62 0x2e
   1463 0x20 0x60 0xa2 0x2e
   1464 
   1465 # CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
   1466 # CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
   1467 # CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
   1468 0x20 0x60 0x22 0x6e
   1469 0x20 0x60 0x62 0x6e
   1470 0x20 0x60 0xa2 0x6e
   1471 
   1472 #----------------------------------------------------------------------
   1473 # Scalar Integer Saturating Doubling Multiply Half High
   1474 #----------------------------------------------------------------------
   1475 # CHECK: sqdmulh h10, h11, h12
   1476 # CHECK: sqdmulh s20, s21, s2
   1477 0x6a,0xb5,0x6c,0x5e
   1478 0xb4,0xb6,0xa2,0x5e
   1479 
   1480 #----------------------------------------------------------------------
   1481 # Scalar Integer Saturating Rounding Doubling Multiply Half High
   1482 #----------------------------------------------------------------------
   1483 # CHECK: sqrdmulh h10, h11, h12
   1484 # CHECK: sqrdmulh s20, s21, s2
   1485 0x6a,0xb5,0x6c,0x7e
   1486 0xb4,0xb6,0xa2,0x7e
   1487 
   1488 #----------------------------------------------------------------------
   1489 # Floating-point multiply extended
   1490 #----------------------------------------------------------------------
   1491 # CHECK: fmulx s20, s22, s15
   1492 # CHECK: fmulx d23, d11, d1
   1493 0xd4,0xde,0x2f,0x5e
   1494 0x77,0xdd,0x61,0x5e
   1495 
   1496 #----------------------------------------------------------------------
   1497 # Floating-point Reciprocal Step
   1498 #----------------------------------------------------------------------
   1499 # CHECK: frecps s21, s16, s13
   1500 # CHECK: frecps d22, d30, d21
   1501 0x15,0xfe,0x2d,0x5e
   1502 0xd6,0xff,0x75,0x5e
   1503 
   1504 #----------------------------------------------------------------------
   1505 # Floating-point Reciprocal Square Root Step
   1506 #----------------------------------------------------------------------
   1507 # CHECK: frsqrts s21, s5, s12
   1508 # CHECK: frsqrts d8, d22, d18
   1509 0xb5,0xfc,0xac,0x5e
   1510 0xc8,0xfe,0xf2,0x5e
   1511 
   1512 #----------------------------------------------------------------------
   1513 # Scalar Signed Integer Convert To Floating-point
   1514 #----------------------------------------------------------------------
   1515 # CHECK: scvtf s22, s13
   1516 # CHECK: scvtf d21, d12
   1517 0xb6,0xd9,0x21,0x5e
   1518 0x95,0xd9,0x61,0x5e
   1519 
   1520 #----------------------------------------------------------------------
   1521 # Scalar Unsigned Integer Convert To Floating-point
   1522 #----------------------------------------------------------------------
   1523 # CHECK: ucvtf s22, s13
   1524 # CHECK: ucvtf d21, d14
   1525 0xb6,0xd9,0x21,0x7e
   1526 0xd5,0xd9,0x61,0x7e
   1527 
   1528 #----------------------------------------------------------------------
   1529 # Scalar Floating-point Reciprocal Estimate
   1530 #----------------------------------------------------------------------
   1531 # CHECK: frecpe s19, s14
   1532 # CHECK: frecpe d13, d13
   1533 0xd3,0xd9,0xa1,0x5e
   1534 0xad,0xd9,0xe1,0x5e
   1535 
   1536 #----------------------------------------------------------------------
   1537 # Scalar Floating-point Reciprocal Exponent
   1538 #----------------------------------------------------------------------
   1539 # CHECK: frecpx s18, s10
   1540 # CHECK: frecpx d16, d19
   1541 0x52,0xf9,0xa1,0x5e
   1542 0x70,0xfa,0xe1,0x5e
   1543 
   1544 #----------------------------------------------------------------------
   1545 # Scalar Floating-point Reciprocal Square Root Estimate
   1546 #----------------------------------------------------------------------
   1547 # CHECK: frsqrte s22, s13
   1548 # CHECK: frsqrte d21, d12
   1549 0xb6,0xd9,0xa1,0x7e
   1550 0x95,0xd9,0xe1,0x7e
   1551 
   1552 #----------------------------------------------------------------------
   1553 # Scalar Compare Bitwise Equal
   1554 #----------------------------------------------------------------------
   1555 # CHECK: cmeq d20, d21, d22
   1556 0xb4,0x8e,0xf6,0x7e
   1557 
   1558 #----------------------------------------------------------------------
   1559 # Scalar Compare Bitwise Equal To Zero
   1560 #----------------------------------------------------------------------
   1561 # CHECK: cmeq d20, d21, #{{0x0|0}}
   1562 0xb4,0x9a,0xe0,0x5e
   1563 
   1564 #----------------------------------------------------------------------
   1565 # Scalar Compare Unsigned Higher Or Same
   1566 #----------------------------------------------------------------------
   1567 # CHECK: cmhs d20, d21, d22
   1568 0xb4,0x3e,0xf6,0x7e
   1569 
   1570         
   1571 #----------------------------------------------------------------------
   1572 # Scalar Compare Signed Greather Than Or Equal
   1573 #----------------------------------------------------------------------
   1574 # CHECK: cmge d20, d21, d22
   1575 0xb4,0x3e,0xf6,0x5e
   1576 
   1577 #----------------------------------------------------------------------
   1578 # Scalar Compare Signed Greather Than Or Equal To Zero
   1579 #----------------------------------------------------------------------
   1580 # CHECK: cmge d20, d21, #{{0x0|0}}
   1581 0xb4,0x8a,0xe0,0x7e
   1582 
   1583 #----------------------------------------------------------------------
   1584 # Scalar Compare Unsigned Higher
   1585 #----------------------------------------------------------------------
   1586 # CHECK: cmhi d20, d21, d22
   1587 0xb4,0x36,0xf6,0x7e
   1588 
   1589 #----------------------------------------------------------------------
   1590 # Scalar Compare Signed Greater Than
   1591 #----------------------------------------------------------------------
   1592 # CHECK: cmgt d20, d21, d22
   1593 0xb4,0x36,0xf6,0x5e
   1594 
   1595 #----------------------------------------------------------------------
   1596 # Scalar Compare Signed Greater Than Zero
   1597 #----------------------------------------------------------------------
   1598 # CHECK: cmgt d20, d21, #{{0x0|0}}
   1599 0xb4,0x8a,0xe0,0x5e
   1600 
   1601 #----------------------------------------------------------------------
   1602 # Scalar Compare Signed Less Than Or Equal To Zero
   1603 #----------------------------------------------------------------------
   1604 # CHECK: cmle d20, d21, #{{0x0|0}}
   1605 0xb4,0x9a,0xe0,0x7e
   1606 
   1607 #----------------------------------------------------------------------
   1608 # Scalar Compare Less Than Zero
   1609 #----------------------------------------------------------------------
   1610 # CHECK: cmlt d20, d21, #{{0x0|0}}
   1611 0xb4,0xaa,0xe0,0x5e
   1612 
   1613 #----------------------------------------------------------------------
   1614 # Scalar Compare Bitwise Test Bits
   1615 #----------------------------------------------------------------------
   1616 # CHECK: cmtst d20, d21, d22
   1617 0xb4,0x8e,0xf6,0x5e
   1618 
   1619 #----------------------------------------------------------------------
   1620 # Scalar Floating-point Compare Mask Equal
   1621 #----------------------------------------------------------------------
   1622 # CHECK: fcmeq s10, s11, s12
   1623 # CHECK: fcmeq d20, d21, d22
   1624 0x6a,0xe5,0x2c,0x5e
   1625 0xb4,0xe6,0x76,0x5e
   1626 
   1627 #----------------------------------------------------------------------
   1628 # Scalar Floating-point Compare Mask Equal To Zero
   1629 #----------------------------------------------------------------------
   1630 # CHECK: fcmeq s10, s11, #0.0
   1631 # CHECK: fcmeq d20, d21, #0.0
   1632 0x6a,0xd9,0xa0,0x5e
   1633 0xb4,0xda,0xe0,0x5e
   1634 
   1635 #----------------------------------------------------------------------
   1636 # Scalar Floating-point Compare Mask Greater Than Or Equal
   1637 #----------------------------------------------------------------------
   1638 # CHECK: fcmge s10, s11, s12
   1639 # CHECK: fcmge d20, d21, d22
   1640 0x6a,0xe5,0x2c,0x7e
   1641 0xb4,0xe6,0x76,0x7e
   1642 
   1643 #----------------------------------------------------------------------
   1644 # Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
   1645 #----------------------------------------------------------------------
   1646 # CHECK: fcmge s10, s11, #0.0
   1647 # CHECK: fcmge d20, d21, #0.0
   1648 0x6a,0xc9,0xa0,0x7e
   1649 0xb4,0xca,0xe0,0x7e
   1650 
   1651 #----------------------------------------------------------------------
   1652 # Scalar Floating-point Compare Mask Greather Than
   1653 #----------------------------------------------------------------------
   1654 # CHECK: fcmgt s10, s11, s12
   1655 # CHECK: fcmgt d20, d21, d22
   1656 0x6a,0xe5,0xac,0x7e
   1657 0xb4,0xe6,0xf6,0x7e
   1658 
   1659 #----------------------------------------------------------------------
   1660 # Scalar Floating-point Compare Mask Greather Than Zero
   1661 #----------------------------------------------------------------------
   1662 # CHECK: fcmgt s10, s11, #0.0
   1663 # CHECK: fcmgt d20, d21, #0.0
   1664 0x6a,0xc9,0xa0,0x5e
   1665 0xb4,0xca,0xe0,0x5e
   1666 
   1667 #----------------------------------------------------------------------
   1668 # Scalar Floating-point Compare Mask Less Than Or Equal To Zero
   1669 #----------------------------------------------------------------------
   1670 # CHECK: fcmle s10, s11, #0.0
   1671 # CHECK: fcmle d20, d21, #0.0
   1672 0x6a,0xd9,0xa0,0x7e
   1673 0xb4,0xda,0xe0,0x7e
   1674 
   1675 #----------------------------------------------------------------------
   1676 # Scalar Floating-point Compare Mask Less Than
   1677 #----------------------------------------------------------------------
   1678 # CHECK: fcmlt s10, s11, #0.0
   1679 # CHECK: fcmlt d20, d21, #0.0
   1680 0x6a,0xe9,0xa0,0x5e
   1681 0xb4,0xea,0xe0,0x5e
   1682 
   1683 #----------------------------------------------------------------------
   1684 # Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
   1685 #----------------------------------------------------------------------
   1686 # CHECK: facge s10, s11, s12
   1687 # CHECK: facge d20, d21, d22
   1688 0x6a,0xed,0x2c,0x7e
   1689 0xb4,0xee,0x76,0x7e
   1690 
   1691 #----------------------------------------------------------------------
   1692 # Scalar Floating-point Absolute Compare Mask Greater Than
   1693 #----------------------------------------------------------------------
   1694 # CHECK: facgt s10, s11, s12   
   1695 # CHECK: facgt d20, d21, d22   
   1696 0x6a,0xed,0xac,0x7e
   1697 0xb4,0xee,0xf6,0x7e
   1698 
   1699 #----------------------------------------------------------------------
   1700 # Scalar Absolute Value
   1701 #----------------------------------------------------------------------
   1702 # CHECK: abs d29, d24
   1703 0x1d,0xbb,0xe0,0x5e
   1704 
   1705 #----------------------------------------------------------------------
   1706 # Scalar Signed Saturating Absolute Value
   1707 #----------------------------------------------------------------------
   1708 # CHECK: sqabs b19, b14
   1709 # CHECK: sqabs h21, h15
   1710 # CHECK: sqabs s20, s12
   1711 # CHECK: sqabs d18, d12
   1712 0xd3,0x79,0x20,0x5e
   1713 0xf5,0x79,0x60,0x5e
   1714 0x94,0x79,0xa0,0x5e
   1715 0x92,0x79,0xe0,0x5e
   1716 
   1717 #----------------------------------------------------------------------
   1718 # Scalar Negate
   1719 #----------------------------------------------------------------------
   1720 # CHECK: neg d29, d24
   1721 0x1d,0xbb,0xe0,0x7e
   1722 
   1723 #----------------------------------------------------------------------
   1724 # Scalar Signed Saturating Negate
   1725 #----------------------------------------------------------------------
   1726 # CHECK: sqneg b19, b14
   1727 # CHECK: sqneg h21, h15
   1728 # CHECK: sqneg s20, s12
   1729 # CHECK: sqneg d18, d12
   1730 0xd3,0x79,0x20,0x7e
   1731 0xf5,0x79,0x60,0x7e
   1732 0x94,0x79,0xa0,0x7e
   1733 0x92,0x79,0xe0,0x7e
   1734 
   1735 #----------------------------------------------------------------------
   1736 # Signed Saturating Accumulated of Unsigned Value
   1737 #----------------------------------------------------------------------
   1738 # CHECK: suqadd b19, b14
   1739 # CHECK: suqadd h20, h15
   1740 # CHECK: suqadd s21, s12
   1741 # CHECK: suqadd d18, d22
   1742 0xd3,0x39,0x20,0x5e
   1743 0xf4,0x39,0x60,0x5e
   1744 0x95,0x39,0xa0,0x5e
   1745 0xd2,0x3a,0xe0,0x5e
   1746 
   1747 #----------------------------------------------------------------------
   1748 # Unsigned Saturating Accumulated of Signed Value
   1749 #----------------------------------------------------------------------
   1750 # CHECK: usqadd b19, b14
   1751 # CHECK: usqadd h20, h15
   1752 # CHECK: usqadd s21, s12
   1753 # CHECK: usqadd d18, d22
   1754 0xd3,0x39,0x20,0x7e
   1755 0xf4,0x39,0x60,0x7e
   1756 0x95,0x39,0xa0,0x7e
   1757 0xd2,0x3a,0xe0,0x7e
   1758 
   1759 #----------------------------------------------------------------------
   1760 # Signed Saturating Doubling Multiply-Add Long
   1761 #----------------------------------------------------------------------
   1762 # CHECK: sqdmlal s17, h27, h12
   1763 # CHECK: sqdmlal d19, s24, s12
   1764 0x71,0x93,0x6c,0x5e
   1765 0x13,0x93,0xac,0x5e
   1766         
   1767 #----------------------------------------------------------------------
   1768 # Signed Saturating Doubling Multiply-Subtract Long
   1769 #----------------------------------------------------------------------
   1770 # CHECK: sqdmlsl s14, h12, h25
   1771 # CHECK: sqdmlsl d12, s23, s13
   1772 0x8e,0xb1,0x79,0x5e
   1773 0xec,0xb2,0xad,0x5e
   1774         
   1775 #----------------------------------------------------------------------
   1776 # Signed Saturating Doubling Multiply Long
   1777 #----------------------------------------------------------------------
   1778 # CHECK: sqdmull s12, h22, h12
   1779 # CHECK: sqdmull d15, s22, s12
   1780 0xcc,0xd2,0x6c,0x5e
   1781 0xcf,0xd2,0xac,0x5e
   1782 
   1783 #----------------------------------------------------------------------
   1784 # Scalar Signed Saturating Extract Unsigned Narrow
   1785 #----------------------------------------------------------------------
   1786 # CHECK: sqxtun b19, h14
   1787 # CHECK: sqxtun h21, s15
   1788 # CHECK: sqxtun s20, d12
   1789 0xd3,0x29,0x21,0x7e
   1790 0xf5,0x29,0x61,0x7e
   1791 0x94,0x29,0xa1,0x7e
   1792 
   1793 #----------------------------------------------------------------------
   1794 # Scalar Signed Saturating Extract Signed Narrow
   1795 #----------------------------------------------------------------------
   1796 # CHECK: sqxtn b18, h18
   1797 # CHECK: sqxtn h20, s17
   1798 # CHECK: sqxtn s19, d14
   1799 0x52,0x4a,0x21,0x5e
   1800 0x34,0x4a,0x61,0x5e
   1801 0xd3,0x49,0xa1,0x5e
   1802 
   1803 #----------------------------------------------------------------------
   1804 # Scalar Unsigned Saturating Extract Narrow
   1805 #----------------------------------------------------------------------
   1806 # CHECK: uqxtn b18, h18
   1807 # CHECK: uqxtn h20, s17
   1808 # CHECK: uqxtn s19, d14
   1809 0x52,0x4a,0x21,0x7e
   1810 0x34,0x4a,0x61,0x7e
   1811 0xd3,0x49,0xa1,0x7e
   1812 
   1813 #----------------------------------------------------------------------
   1814 # Scalar Signed Shift Right (Immediate)
   1815 #----------------------------------------------------------------------
   1816 # CHECK: sshr d15, d16, #12
   1817 0x0f,0x06,0x74,0x5f
   1818 
   1819 #----------------------------------------------------------------------
   1820 # Scalar Unsigned Shift Right (Immediate)
   1821 #----------------------------------------------------------------------
   1822 # CHECK: ushr d10, d17, #18
   1823 0x2a,0x06,0x6e,0x7f
   1824 
   1825 #----------------------------------------------------------------------
   1826 # Scalar Signed Rounding Shift Right (Immediate)
   1827 #----------------------------------------------------------------------
   1828 # CHECK: srshr d19, d18, #7
   1829 0x53,0x26,0x79,0x5f
   1830 
   1831 #----------------------------------------------------------------------
   1832 # Scalar Unigned Rounding Shift Right (Immediate)
   1833 #----------------------------------------------------------------------
   1834 # CHECK: urshr d20, d23, #31
   1835 0xf4,0x26,0x61,0x7f
   1836 
   1837 #----------------------------------------------------------------------
   1838 # Scalar Signed Shift Right and Accumulate (Immediate)
   1839 #----------------------------------------------------------------------
   1840 # CHECK: ssra d18, d12, #21
   1841 0x92,0x15,0x6b,0x5f
   1842 
   1843 #----------------------------------------------------------------------
   1844 # Scalar Unsigned Shift Right and Accumulate (Immediate)
   1845 #----------------------------------------------------------------------
   1846 # CHECK: usra d20, d13, #61
   1847 0xb4,0x15,0x43,0x7f
   1848 
   1849 #----------------------------------------------------------------------
   1850 # Scalar Signed Rounding Shift Right and Accumulate (Immediate)
   1851 #----------------------------------------------------------------------
   1852 # CHECK: srsra d15, d11, #19
   1853 0x6f,0x35,0x6d,0x5f
   1854 
   1855 #----------------------------------------------------------------------
   1856 # Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
   1857 #----------------------------------------------------------------------
   1858 # CHECK: ursra d18, d10, #13
   1859 0x52,0x35,0x73,0x7f
   1860 
   1861 #----------------------------------------------------------------------
   1862 # Scalar Shift Left (Immediate)
   1863 #----------------------------------------------------------------------
   1864 # CHECK: shl d7, d10, #12
   1865 0x47,0x55,0x4c,0x5f
   1866 
   1867 #----------------------------------------------------------------------
   1868 # Signed Saturating Shift Left (Immediate)
   1869 #----------------------------------------------------------------------
   1870 # CHECK: sqshl b11, b19, #7
   1871 # CHECK: sqshl h13, h18, #11
   1872 # CHECK: sqshl s14, s17, #22
   1873 # CHECK: sqshl d15, d16, #51
   1874 0x6b,0x76,0x0f,0x5f
   1875 0x4d,0x76,0x1b,0x5f
   1876 0x2e,0x76,0x36,0x5f
   1877 0x0f,0x76,0x73,0x5f
   1878 
   1879 #----------------------------------------------------------------------
   1880 # Unsigned Saturating Shift Left (Immediate)
   1881 #----------------------------------------------------------------------
   1882 # CHECK: uqshl b18, b15, #6
   1883 # CHECK: uqshl h11, h18, #7
   1884 # CHECK: uqshl s14, s19, #18
   1885 # CHECK: uqshl d15, d12, #19
   1886 0xf2,0x75,0x0e,0x7f
   1887 0x4b,0x76,0x17,0x7f
   1888 0x6e,0x76,0x32,0x7f
   1889 0x8f,0x75,0x53,0x7f
   1890 
   1891 #----------------------------------------------------------------------
   1892 # Signed Saturating Shift Left Unsigned (Immediate)
   1893 #----------------------------------------------------------------------
   1894 # CHECK: sqshlu b15, b18, #6
   1895 # CHECK: sqshlu h19, h17, #6
   1896 # CHECK: sqshlu s16, s14, #25
   1897 # CHECK: sqshlu d11, d13, #32
   1898 0x4f,0x66,0x0e,0x7f
   1899 0x33,0x66,0x16,0x7f
   1900 0xd0,0x65,0x39,0x7f
   1901 0xab,0x65,0x60,0x7f
   1902 
   1903 #----------------------------------------------------------------------
   1904 # Shift Right And Insert (Immediate)
   1905 #----------------------------------------------------------------------
   1906 # CHECK: sri d10, d12, #14
   1907 0x8a,0x45,0x72,0x7f
   1908 
   1909 #----------------------------------------------------------------------
   1910 # Shift Left And Insert (Immediate)
   1911 #----------------------------------------------------------------------
   1912 # CHECK: sli d10, d14, #12
   1913 0xca,0x55,0x4c,0x7f
   1914 
   1915 #----------------------------------------------------------------------
   1916 # Signed Saturating Shift Right Narrow (Immediate)
   1917 #----------------------------------------------------------------------
   1918 # CHECK: sqshrn b10, h15, #5
   1919 # CHECK: sqshrn h17, s10, #4
   1920 # CHECK: sqshrn s18, d10, #31
   1921 0xea,0x95,0x0b,0x5f
   1922 0x51,0x95,0x1c,0x5f
   1923 0x52,0x95,0x21,0x5f
   1924 
   1925 #----------------------------------------------------------------------
   1926 # Unsigned Saturating Shift Right Narrow (Immediate)
   1927 #----------------------------------------------------------------------
   1928 # CHECK: uqshrn b12, h10, #7
   1929 # CHECK: uqshrn h10, s14, #5
   1930 # CHECK: uqshrn s10, d12, #13
   1931 0x4c,0x95,0x09,0x7f
   1932 0xca,0x95,0x1b,0x7f
   1933 0x8a,0x95,0x33,0x7f
   1934 
   1935 #----------------------------------------------------------------------
   1936 # Signed Saturating Rounded Shift Right Narrow (Immediate)
   1937 #----------------------------------------------------------------------
   1938 # CHECK: sqrshrn b10, h13, #2
   1939 # CHECK: sqrshrn h15, s10, #6
   1940 # CHECK: sqrshrn s15, d12, #9
   1941 0xaa,0x9d,0x0e,0x5f
   1942 0x4f,0x9d,0x1a,0x5f
   1943 0x8f,0x9d,0x37,0x5f
   1944 
   1945 #----------------------------------------------------------------------
   1946 # Unsigned Saturating Rounded Shift Right Narrow (Immediate)
   1947 #----------------------------------------------------------------------
   1948 # CHECK: uqrshrn b10, h12, #5
   1949 # CHECK: uqrshrn h12, s10, #14
   1950 # CHECK: uqrshrn s10, d10, #25
   1951 0x8a,0x9d,0x0b,0x7f
   1952 0x4c,0x9d,0x12,0x7f
   1953 0x4a,0x9d,0x27,0x7f
   1954 
   1955 #----------------------------------------------------------------------
   1956 # Signed Saturating Shift Right Unsigned Narrow (Immediate)
   1957 #----------------------------------------------------------------------
   1958 # CHECK: sqshrun b15, h10, #7
   1959 # CHECK: sqshrun h20, s14, #3
   1960 # CHECK: sqshrun s10, d15, #15
   1961 0x4f,0x85,0x09,0x7f
   1962 0xd4,0x85,0x1d,0x7f
   1963 0xea,0x85,0x31,0x7f
   1964 
   1965 #----------------------------------------------------------------------
   1966 # Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
   1967 #----------------------------------------------------------------------
   1968 # CHECK: sqrshrun b17, h10, #6
   1969 # CHECK: sqrshrun h10, s13, #15
   1970 # CHECK: sqrshrun s22, d16, #31
   1971 0x51,0x8d,0x0a,0x7f
   1972 0xaa,0x8d,0x11,0x7f
   1973 0x16,0x8e,0x21,0x7f
   1974 
   1975 #----------------------------------------------------------------------
   1976 # Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
   1977 #----------------------------------------------------------------------
   1978 # CHECK: scvtf s22, s13, #32
   1979 # CHECK: scvtf d21, d12, #64
   1980 0xb6,0xe5,0x20,0x5f
   1981 0x95,0xe5,0x40,0x5f
   1982 
   1983 #----------------------------------------------------------------------
   1984 # Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
   1985 #----------------------------------------------------------------------
   1986 # CHECK: ucvtf s22, s13, #32
   1987 # CHECK: ucvtf d21, d14, #64
   1988 0xb6,0xe5,0x20,0x7f
   1989 0xd5,0xe5,0x40,0x7f
   1990 
   1991 #----------------------------------------------------------------------
   1992 # Scalar Floating-point Convert To Signed Fixed-point (Immediate)
   1993 #----------------------------------------------------------------------
   1994 # CHECK: fcvtzs s21, s12, #1
   1995 # CHECK: fcvtzs d21, d12, #1
   1996 0x95,0xfd,0x3f,0x5f
   1997 0x95,0xfd,0x7f,0x5f
   1998         
   1999 #----------------------------------------------------------------------
   2000 # Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
   2001 #----------------------------------------------------------------------
   2002 # CHECK: fcvtzu s21, s12, #1
   2003 # CHECK: fcvtzu d21, d12, #1
   2004 0x95,0xfd,0x3f,0x7f
   2005 0x95,0xfd,0x7f,0x7f
   2006 
   2007 #----------------------------------------------------------------------
   2008 # Vector load/store multiple N-element structure
   2009 #----------------------------------------------------------------------
   2010 # CHECK: ld1 { v0.16b }, [x0]
   2011 # CHECK: ld1 { v15.8h, v16.8h }, [x15]
   2012 # CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp]
   2013 # CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
   2014 0x00,0x70,0x40,0x4c
   2015 0xef,0xa5,0x40,0x4c
   2016 0xff,0x6b,0x40,0x4c
   2017 0x00,0x2c,0x40,0x4c
   2018 
   2019 # CHECK: ld2 { v0.8b, v1.8b }, [x0]
   2020 # CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15]
   2021 # CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
   2022 0x00,0x80,0x40,0x0c
   2023 0xef,0x45,0x40,0x0c
   2024 0xff,0x0b,0x40,0x0c
   2025 
   2026 # CHECK: st1 { v0.16b }, [x0]
   2027 # CHECK: st1 { v15.8h, v16.8h }, [x15]
   2028 # CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp]
   2029 # CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0]
   2030 0x00,0x70,0x00,0x4c
   2031 0xef,0xa5,0x00,0x4c
   2032 0xff,0x6b,0x00,0x4c
   2033 0x00,0x2c,0x00,0x4c
   2034 
   2035 # CHECK: st2 { v0.8b, v1.8b }, [x0]
   2036 # CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15]
   2037 # CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
   2038 0x00,0x80,0x00,0x0c
   2039 0xef,0x45,0x00,0x0c
   2040 0xff,0x0b,0x00,0x0c
   2041 
   2042 #----------------------------------------------------------------------
   2043 # Vector load/store multiple N-element structure (post-index)
   2044 #----------------------------------------------------------------------
   2045 # CHECK: ld1 { v15.8h }, [x15], x2
   2046 # CHECK: ld1 { v31.4s, v0.4s }, [sp], #32
   2047 # CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48
   2048 # CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
   2049 0xef,0x75,0xc2,0x4c
   2050 0xff,0xab,0xdf,0x4c
   2051 0x00,0x6c,0xdf,0x4c
   2052 0x00,0x20,0xc3,0x0c
   2053 
   2054 # CHECK: ld2 { v0.16b, v1.16b }, [x0], x1
   2055 # CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15], x2
   2056 # CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
   2057 0x00,0x80,0xc1,0x4c
   2058 0xef,0x45,0xc2,0x4c
   2059 0xff,0x0b,0xdf,0x4c
   2060 
   2061 
   2062 # CHECK: st1 { v15.8h }, [x15], x2
   2063 # CHECK: st1 { v31.4s, v0.4s }, [sp], #32
   2064 # CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0], #48
   2065 # CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3
   2066 0xef,0x75,0x82,0x4c
   2067 0xff,0xab,0x9f,0x4c
   2068 0x00,0x6c,0x9f,0x4c
   2069 0x00,0x20,0x83,0x0c
   2070 
   2071 # CHECK: st2 { v0.16b, v1.16b }, [x0], x1
   2072 # CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15], x2
   2073 # CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64
   2074 0x00,0x80,0x81,0x4c
   2075 0xef,0x45,0x82,0x4c
   2076 0xff,0x0b,0x9f,0x4c
   2077 
   2078 #----------------------------------------------------------------------
   2079 # Vector load single N-element structure to all lane of N
   2080 # consecutive registers (N = 1,2,3,4)
   2081 #----------------------------------------------------------------------
   2082 # CHECK: ld1r { v0.16b }, [x0]
   2083 # CHECK: ld1r { v15.8h }, [x15]
   2084 # CHECK: ld2r { v31.4s, v0.4s }, [sp]
   2085 # CHECK: ld2r { v0.2d, v1.2d }, [x0]
   2086 # CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0]
   2087 # CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15]
   2088 # CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp]
   2089 # CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp]
   2090 0x00,0xc0,0x40,0x4d
   2091 0xef,0xc5,0x40,0x4d
   2092 0xff,0xcb,0x60,0x4d
   2093 0x00,0xcc,0x60,0x4d
   2094 0x00,0xe0,0x40,0x0d
   2095 0xef,0xe5,0x40,0x0d
   2096 0xff,0xeb,0x60,0x0d
   2097 0xff,0xef,0x60,0x0d
   2098 
   2099 #----------------------------------------------------------------------
   2100 # Vector load/store single N-element structure to/from one lane of N
   2101 # consecutive registers (N = 1,2,3,4)
   2102 #----------------------------------------------------------------------
   2103 # CHECK: ld1 { v0.b }[9], [x0]
   2104 # CHECK: ld2 { v15.h, v16.h }[7], [x15]
   2105 # CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp]
   2106 # CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0]
   2107 # CHECK: st1 { v0.d }[1], [x0]
   2108 # CHECK: st2 { v31.s, v0.s }[3], [sp]
   2109 # CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15]
   2110 # CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0]
   2111 0x00,0x04,0x40,0x4d
   2112 0xef,0x59,0x60,0x4d
   2113 0xff,0xb3,0x40,0x4d
   2114 0x00,0xa4,0x60,0x4d
   2115 0x00,0x84,0x00,0x4d
   2116 0xff,0x93,0x20,0x4d
   2117 0xef,0x79,0x00,0x4d
   2118 0x00,0x24,0x20,0x4d
   2119 
   2120 #----------------------------------------------------------------------
   2121 # Post-index of vector load single N-element structure to all lane of N
   2122 # consecutive registers (N = 1,2,3,4)
   2123 #----------------------------------------------------------------------
   2124 # CHECK: ld1r { v0.16b }, [x0], #1
   2125 # CHECK: ld1r { v15.8h }, [x15], #2
   2126 # CHECK: ld2r { v31.4s, v0.4s }, [sp], #8
   2127 # CHECK: ld2r { v0.2d, v1.2d }, [x0], #16
   2128 # CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3
   2129 # CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15], #6
   2130 # CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], x30
   2131 # CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp], x7
   2132 0x00,0xc0,0xdf,0x4d
   2133 0xef,0xc5,0xdf,0x4d
   2134 0xff,0xcb,0xff,0x4d
   2135 0x00,0xcc,0xff,0x4d
   2136 0x00,0xe0,0xdf,0x0d
   2137 0xef,0xe5,0xdf,0x0d
   2138 0xff,0xeb,0xfe,0x0d
   2139 0xff,0xef,0xe7,0x0d
   2140 
   2141 #----------------------------------------------------------------------
   2142 # Post-index of vector load/store single N-element structure to/from
   2143 #  one lane of N consecutive registers (N = 1,2,3,4)
   2144 #----------------------------------------------------------------------
   2145 # CHECK: ld1 { v0.b }[9], [x0], #1
   2146 # CHECK: ld2 { v15.h, v16.h }[7], [x15], #4
   2147 # CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp], x3
   2148 # CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32
   2149 # CHECK: ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0
   2150 # CHECK: st1 { v0.d }[1], [x0], #8
   2151 # CHECK: st2 { v31.s, v0.s }[3], [sp], #8
   2152 # CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15], #6
   2153 # CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5
   2154 0x00,0x04,0xdf,0x4d
   2155 0xef,0x59,0xff,0x4d
   2156 0xff,0xb3,0xc3,0x4d
   2157 0x00,0xa4,0xff,0x4d
   2158 0x00,0x78,0xe0,0x4d
   2159 0x00,0x84,0x9f,0x4d
   2160 0xff,0x93,0xbf,0x4d
   2161 0xef,0x79,0x9f,0x4d
   2162 0x00,0x24,0xa5,0x4d
   2163 
   2164 #----------------------------------------------------------------------
   2165 # Bitwise extract
   2166 #----------------------------------------------------------------------
   2167 0x20,0x18,0x02,0x2e
   2168 0x20,0x18,0x02,0x6e
   2169 # CHECK: ext v0.8b, v1.8b, v2.8b, #{{0x3|3}}
   2170 # CHECK: ext v0.16b, v1.16b, v2.16b, #{{0x3|3}}
   2171 
   2172 #----------------------------------------------------------------------
   2173 # unzip with 3 same vectors to get primary result
   2174 #----------------------------------------------------------------------
   2175 # CHECK: uzp1	v1.8b, v1.8b, v2.8b
   2176 # CHECK: uzp1	v2.16b, v1.16b, v2.16b
   2177 # CHECK: uzp1	v3.4h, v1.4h, v2.4h
   2178 # CHECK: uzp1	v4.8h, v1.8h, v2.8h
   2179 # CHECK: uzp1	v5.2s, v1.2s, v2.2s
   2180 # CHECK: uzp1	v6.4s, v1.4s, v2.4s
   2181 # CHECK: uzp1	v7.2d, v1.2d, v2.2d
   2182 0x21,0x18,0x02,0x0e
   2183 0x22,0x18,0x02,0x4e
   2184 0x23,0x18,0x42,0x0e
   2185 0x24,0x18,0x42,0x4e
   2186 0x25,0x18,0x82,0x0e
   2187 0x26,0x18,0x82,0x4e
   2188 0x27,0x18,0xc2,0x4e
   2189 
   2190 #----------------------------------------------------------------------
   2191 # transpose with 3 same vectors to get primary result
   2192 #----------------------------------------------------------------------
   2193 # CHECK: trn1	v8.8b, v1.8b, v2.8b
   2194 # CHECK: trn1	v9.16b, v1.16b, v2.16b
   2195 # CHECK: trn1	v10.4h, v1.4h, v2.4h
   2196 # CHECK: trn1	v27.8h, v7.8h, v2.8h
   2197 # CHECK: trn1	v12.2s, v7.2s, v2.2s
   2198 # CHECK: trn1	v29.4s, v6.4s, v2.4s
   2199 # CHECK: trn1	v14.2d, v6.2d, v2.2d
   2200 0x28,0x28,0x02,0x0e
   2201 0x29,0x28,0x02,0x4e
   2202 0x2a,0x28,0x42,0x0e
   2203 0xfb,0x28,0x42,0x4e
   2204 0xec,0x28,0x82,0x0e
   2205 0xdd,0x28,0x82,0x4e
   2206 0xce,0x28,0xc2,0x4e
   2207 
   2208 #----------------------------------------------------------------------
   2209 # zip with 3 same vectors to get primary result
   2210 #----------------------------------------------------------------------
   2211 # CHECK: zip1	v31.8b, v5.8b, v2.8b
   2212 # CHECK: zip1	v0.16b, v5.16b, v2.16b
   2213 # CHECK: zip1	v17.4h, v4.4h, v2.4h
   2214 # CHECK: zip1	v2.8h, v4.8h, v2.8h
   2215 # CHECK: zip1	v19.2s, v3.2s, v2.2s
   2216 # CHECK: zip1	v4.4s, v3.4s, v2.4s
   2217 # CHECK: zip1	v21.2d, v2.2d, v2.2d
   2218 0xbf,0x38,0x02,0x0e
   2219 0xa0,0x38,0x02,0x4e
   2220 0x91,0x38,0x42,0x0e
   2221 0x82,0x38,0x42,0x4e
   2222 0x73,0x38,0x82,0x0e
   2223 0x64,0x38,0x82,0x4e
   2224 0x55,0x38,0xc2,0x4e
   2225 
   2226 #----------------------------------------------------------------------
   2227 # unzip with 3 same vectors to get secondary result
   2228 #----------------------------------------------------------------------
   2229 # CHECK: uzp2	v6.8b, v2.8b, v2.8b
   2230 # CHECK: uzp2	v23.16b, v1.16b, v2.16b
   2231 # CHECK: uzp2	v8.4h, v1.4h, v2.4h
   2232 # CHECK: uzp2	v25.8h, v0.8h, v2.8h
   2233 # CHECK: uzp2	v10.2s, v0.2s, v2.2s
   2234 # CHECK: uzp2	v27.4s, v7.4s, v2.4s
   2235 # CHECK: uzp2	v12.2d, v7.2d, v2.2d
   2236 0x46,0x58,0x02,0x0e
   2237 0x37,0x58,0x02,0x4e
   2238 0x28,0x58,0x42,0x0e
   2239 0x19,0x58,0x42,0x4e
   2240 0x0a,0x58,0x82,0x0e
   2241 0xfb,0x58,0x82,0x4e
   2242 0xec,0x58,0xc2,0x4e
   2243 
   2244 #----------------------------------------------------------------------
   2245 # transpose with 3 same vectors to get secondary result
   2246 #----------------------------------------------------------------------
   2247 # CHECK: trn2	v29.8b, v6.8b, v2.8b
   2248 # CHECK: trn2	v14.16b, v6.16b, v2.16b
   2249 # CHECK: trn2	v31.4h, v5.4h, v2.4h
   2250 # CHECK: trn2	v0.8h, v5.8h, v2.8h
   2251 # CHECK: trn2	v17.2s, v4.2s, v2.2s
   2252 # CHECK: trn2	v2.4s, v4.4s, v2.4s
   2253 # CHECK: trn2	v19.2d, v3.2d, v2.2d
   2254 0xdd,0x68,0x02,0x0e
   2255 0xce,0x68,0x02,0x4e
   2256 0xbf,0x68,0x42,0x0e
   2257 0xa0,0x68,0x42,0x4e
   2258 0x91,0x68,0x82,0x0e
   2259 0x82,0x68,0x82,0x4e
   2260 0x73,0x68,0xc2,0x4e
   2261 
   2262 #----------------------------------------------------------------------
   2263 # zip with 3 same vectors to get secondary result
   2264 #----------------------------------------------------------------------
   2265 # CHECK: zip2	v4.8b, v3.8b, v2.8b
   2266 # CHECK: zip2	v21.16b, v2.16b, v2.16b
   2267 # CHECK: zip2	v6.4h, v2.4h, v2.4h
   2268 # CHECK: zip2	v23.8h, v1.8h, v2.8h
   2269 # CHECK: zip2	v8.2s, v1.2s, v2.2s
   2270 # CHECK: zip2	v25.4s, v0.4s, v2.4s
   2271 # CHECK: zip2	v10.2d, v0.2d, v2.2d
   2272 0x64,0x78,0x02,0x0e
   2273 0x55,0x78,0x02,0x4e
   2274 0x46,0x78,0x42,0x0e
   2275 0x37,0x78,0x42,0x4e
   2276 0x28,0x78,0x82,0x0e
   2277 0x19,0x78,0x82,0x4e
   2278 0x0a,0x78,0xc2,0x4e
   2279 
   2280 #----------------------------------------------------------------------
   2281 # Scalar Floating Point  multiply (scalar, by element)
   2282 #----------------------------------------------------------------------
   2283 # CHECK: fmul s0, s1, v1.s[0]
   2284 # CHECK: fmul s0, s1, v1.s[3]
   2285 # CHECK: fmul d0, d1, v1.d[0]
   2286 # CHECK: fmul d0, d1, v1.d[1]
   2287 # CHECK: fmul d15, d15, v15.d[1]
   2288 0x20 0x90 0x81 0x5f
   2289 0x20 0x98 0xa1 0x5f
   2290 0x20 0x90 0xc1 0x5f
   2291 0x20 0x98 0xc1 0x5f
   2292 0xef 0x99 0xcf 0x5f
   2293 
   2294 #----------------------------------------------------------------------
   2295 # Scalar Floating Point  multiply extended (scalar, by element)
   2296 #----------------------------------------------------------------------
   2297 # CHECK: fmulx s3, s5, v7.s[0]
   2298 # CHECK: fmulx s3, s5, v7.s[3]
   2299 # CHECK: fmulx s3, s5, v15.s[3]
   2300 # CHECK: fmulx d0, d4, v8.d[0]
   2301 # CHECK: fmulx d0, d4, v8.d[1]
   2302 0xa3 0x90 0x87 0x7f
   2303 0xa3 0x98 0xa7 0x7f
   2304 0xa3 0x98 0xaf 0x7f
   2305 0x80 0x90 0xc8 0x7f
   2306 0x80 0x98 0xc8 0x7f
   2307 
   2308 #----------------------------------------------------------------------
   2309 # Scalar Floating Point fused multiply-add (scalar, by element)
   2310 #----------------------------------------------------------------------
   2311 # CHECK: fmla s0, s1, v1.s[0]
   2312 # CHECK: fmla s0, s1, v1.s[3]
   2313 # CHECK: fmla d0, d1, v1.d[0]
   2314 # CHECK: fmla d0, d1, v1.d[1]
   2315 # CHECK: fmla d15, d15, v15.d[1]
   2316 0x20 0x10 0x81 0x5f
   2317 0x20 0x18 0xa1 0x5f
   2318 0x20 0x10 0xc1 0x5f
   2319 0x20 0x18 0xc1 0x5f
   2320 0xef 0x19 0xcf 0x5f
   2321 
   2322 #----------------------------------------------------------------------
   2323 # Scalar Floating Point fused multiply-sub (scalar, by element)
   2324 #----------------------------------------------------------------------
   2325 # CHECK: fmls s3, s5, v7.s[0]
   2326 # CHECK: fmls s3, s5, v7.s[3]
   2327 # CHECK: fmls s3, s5, v15.s[3]
   2328 # CHECK: fmls d0, d4, v8.d[0]
   2329 # CHECK: fmls d0, d4, v8.d[1]
   2330 0xa3 0x50 0x87 0x5f
   2331 0xa3 0x58 0xa7 0x5f
   2332 0xa3 0x58 0xaf 0x5f
   2333 0x80 0x50 0xc8 0x5f
   2334 0x80 0x58 0xc8 0x5f
   2335 
   2336 #----------------------------------------------------------------------
   2337 # Scalar Signed saturating doubling
   2338 # multiply-add long (scalar, by element)
   2339 #----------------------------------------------------------------------
   2340 # CHECK: sqdmlal s0, h0, v0.h[0]
   2341 # CHECK: sqdmlal s0, h0, v0.h[1]
   2342 # CHECK: sqdmlal s0, h0, v0.h[2]
   2343 # CHECK: sqdmlal s0, h0, v0.h[3]
   2344 # CHECK: sqdmlal s0, h0, v0.h[4]
   2345 # CHECK: sqdmlal s0, h0, v0.h[5]
   2346 # CHECK: sqdmlal s0, h0, v0.h[6]
   2347 # CHECK: sqdmlal s0, h0, v0.h[7]
   2348 # CHECK: sqdmlal d8, s9, v15.s[0]
   2349 # CHECK: sqdmlal d8, s9, v15.s[1]
   2350 # CHECK: sqdmlal d8, s9, v15.s[2]
   2351 # CHECK: sqdmlal d8, s9, v15.s[3]
   2352 0x00 0x30 0x40 0x5f
   2353 0x00 0x30 0x50 0x5f
   2354 0x00 0x30 0x60 0x5f
   2355 0x00 0x30 0x70 0x5f
   2356 0x00 0x38 0x40 0x5f
   2357 0x00 0x38 0x50 0x5f
   2358 0x00 0x38 0x60 0x5f
   2359 0x00 0x38 0x70 0x5f
   2360 0x28 0x31 0x8f 0x5f
   2361 0x28 0x31 0xaf 0x5f
   2362 0x28 0x39 0x8f 0x5f
   2363 0x28 0x39 0xaf 0x5f
   2364 
   2365 #----------------------------------------------------------------------
   2366 # Scalar Signed saturating doubling
   2367 # multiply-sub long (scalar, by element)
   2368 #----------------------------------------------------------------------
   2369 # CHECK: sqdmlsl s0, h0, v0.h[0]
   2370 # CHECK: sqdmlsl s0, h0, v0.h[1]
   2371 # CHECK: sqdmlsl s0, h0, v0.h[2]
   2372 # CHECK: sqdmlsl s0, h0, v0.h[3]
   2373 # CHECK: sqdmlsl s0, h0, v0.h[4]
   2374 # CHECK: sqdmlsl s0, h0, v0.h[5]
   2375 # CHECK: sqdmlsl s0, h0, v0.h[6]
   2376 # CHECK: sqdmlsl s0, h0, v0.h[7]
   2377 # CHECK: sqdmlsl d8, s9, v15.s[0]
   2378 # CHECK: sqdmlsl d8, s9, v15.s[1]
   2379 # CHECK: sqdmlsl d8, s9, v15.s[2]
   2380 # CHECK: sqdmlsl d8, s9, v15.s[3]
   2381 0x00 0x70 0x40 0x5f
   2382 0x00 0x70 0x50 0x5f
   2383 0x00 0x70 0x60 0x5f
   2384 0x00 0x70 0x70 0x5f
   2385 0x00 0x78 0x40 0x5f
   2386 0x00 0x78 0x50 0x5f
   2387 0x00 0x78 0x60 0x5f
   2388 0x00 0x78 0x70 0x5f
   2389 0x28 0x71 0x8f 0x5f
   2390 0x28 0x71 0xaf 0x5f
   2391 0x28 0x79 0x8f 0x5f
   2392 0x28 0x79 0xaf 0x5f
   2393 
   2394 #----------------------------------------------------------------------
   2395 # Scalar Signed saturating doubling multiply long (scalar, by element)
   2396 #----------------------------------------------------------------------
   2397 # CHECK: sqdmull s1, h1, v1.h[0]
   2398 # CHECK: sqdmull s1, h1, v1.h[1]
   2399 # CHECK: sqdmull s1, h1, v1.h[2]
   2400 # CHECK: sqdmull s1, h1, v1.h[3]
   2401 # CHECK: sqdmull s1, h1, v1.h[4]
   2402 # CHECK: sqdmull s1, h1, v1.h[5]
   2403 # CHECK: sqdmull s1, h1, v1.h[6]
   2404 # CHECK: sqdmull s1, h1, v1.h[7]
   2405 # CHECK: sqdmull d1, s1, v4.s[0]
   2406 # CHECK: sqdmull d1, s1, v4.s[1]
   2407 # CHECK: sqdmull d1, s1, v4.s[2]
   2408 # CHECK: sqdmull d1, s1, v4.s[3]
   2409 0x21 0xb0 0x41 0x5f
   2410 0x21 0xb0 0x51 0x5f
   2411 0x21 0xb0 0x61 0x5f
   2412 0x21 0xb0 0x71 0x5f
   2413 0x21 0xb8 0x41 0x5f
   2414 0x21 0xb8 0x51 0x5f
   2415 0x21 0xb8 0x61 0x5f
   2416 0x21 0xb8 0x71 0x5f
   2417 0x21 0xb0 0x84 0x5f
   2418 0x21 0xb0 0xa4 0x5f
   2419 0x21 0xb8 0x84 0x5f
   2420 0x21 0xb8 0xa4 0x5f
   2421 
   2422 #----------------------------------------------------------------------
   2423 # Scalar Signed saturating doubling multiply returning
   2424 # high half (scalar, by element)
   2425 #----------------------------------------------------------------------
   2426 # CHECK: sqdmulh h7, h1, v14.h[0]
   2427 # CHECK: sqdmulh h7, h15, v8.h[1]
   2428 # CHECK: sqdmulh h7, h15, v8.h[2]
   2429 # CHECK: sqdmulh h7, h15, v8.h[3]
   2430 # CHECK: sqdmulh h7, h15, v8.h[4]
   2431 # CHECK: sqdmulh h7, h15, v8.h[5]
   2432 # CHECK: sqdmulh h7, h15, v8.h[6]
   2433 # CHECK: sqdmulh h7, h15, v8.h[7]
   2434 # CHECK: sqdmulh s15, s3, v4.s[0]
   2435 # CHECK: sqdmulh s15, s14, v16.s[1]
   2436 # CHECK: sqdmulh s15, s15, v16.s[2]
   2437 # CHECK: sqdmulh s15, s16, v17.s[3]
   2438 0x27 0xc0 0x4e 0x5f
   2439 0xe7 0xc1 0x58 0x5f
   2440 0xe7 0xc1 0x68 0x5f
   2441 0xe7 0xc1 0x78 0x5f
   2442 0xe7 0xc9 0x48 0x5f
   2443 0xe7 0xc9 0x58 0x5f
   2444 0xe7 0xc9 0x68 0x5f
   2445 0xe7 0xc9 0x78 0x5f
   2446 0x6f 0xc0 0x84 0x5f
   2447 0xcf 0xc1 0xb0 0x5f
   2448 0xef 0xc9 0x90 0x5f
   2449 0x0f 0xca 0xb1 0x5f
   2450 
   2451 #----------------------------------------------------------------------
   2452 # Scalar Signed saturating rounding doubling multiply
   2453 # returning high half (scalar, by element)
   2454 #----------------------------------------------------------------------
   2455 # CHECK: sqrdmulh h7, h1, v14.h[0]
   2456 # CHECK: sqrdmulh h7, h15, v8.h[1]
   2457 # CHECK: sqrdmulh h7, h15, v8.h[2]
   2458 # CHECK: sqrdmulh h7, h15, v8.h[3]
   2459 # CHECK: sqrdmulh h7, h15, v8.h[4]
   2460 # CHECK: sqrdmulh h7, h15, v8.h[5]
   2461 # CHECK: sqrdmulh h7, h15, v8.h[6]
   2462 # CHECK: sqrdmulh h7, h15, v8.h[7]
   2463 # CHECK: sqrdmulh s15, s3, v4.s[0]
   2464 # CHECK: sqrdmulh s15, s14, v16.s[1]
   2465 # CHECK: sqrdmulh s15, s15, v16.s[2]
   2466 # CHECK: sqrdmulh s15, s16, v17.s[3]
   2467 0x27 0xd0 0x4e 0x5f
   2468 0xe7 0xd1 0x58 0x5f
   2469 0xe7 0xd1 0x68 0x5f
   2470 0xe7 0xd1 0x78 0x5f
   2471 0xe7 0xd9 0x48 0x5f
   2472 0xe7 0xd9 0x58 0x5f
   2473 0xe7 0xd9 0x68 0x5f
   2474 0xe7 0xd9 0x78 0x5f
   2475 0x6f 0xd0 0x84 0x5f
   2476 0xcf 0xd1 0xb0 0x5f
   2477 0xef 0xd9 0x90 0x5f
   2478 0x0f 0xda 0xb1 0x5f
   2479 
   2480 #----------------------------------------------------------------------
   2481 #Duplicate element (scalar)
   2482 #----------------------------------------------------------------------
   2483 # CHECK: {{dup|mov}} b0, v0.b[15]
   2484 # CHECK: {{dup|mov}} h2, v31.h[5]
   2485 # CHECK: {{dup|mov}} s17, v2.s[2]
   2486 # CHECK: {{dup|mov}} d6, v12.d[1]
   2487 0x00 0x04 0x1f 0x5e
   2488 0xe2 0x07 0x16 0x5e
   2489 0x51 0x04 0x14 0x5e
   2490 0x86 0x05 0x18 0x5e
   2491 
   2492 #----------------------------------------------------------------------
   2493 # Table look up
   2494 #----------------------------------------------------------------------
   2495 0x20,0x00,0x02,0x0e
   2496 0xf0,0x23,0x02,0x0e
   2497 0x20,0x40,0x02,0x0e
   2498 0xf0,0x62,0x02,0x0e
   2499 # CHECK: tbl v0.8b, { v1.16b }, v2.8b
   2500 # CHECK: tbl v16.8b, { v31.16b, v0.16b }, v2.8b
   2501 # CHECK: tbl v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
   2502 # CHECK: tbl v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b
   2503 
   2504 0x20,0x00,0x02,0x4e
   2505 0xf0,0x23,0x02,0x4e
   2506 0x20,0x40,0x02,0x4e
   2507 0xe0,0x63,0x02,0x4e
   2508 # CHECK: tbl v0.16b, { v1.16b }, v2.16b
   2509 # CHECK: tbl v16.16b, { v31.16b, v0.16b }, v2.16b
   2510 # CHECK: tbl v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
   2511 # CHECK: tbl v0.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b
   2512 
   2513 0x20,0x10,0x02,0x0e
   2514 0xf0,0x33,0x02,0x0e
   2515 0x20,0x50,0x02,0x0e
   2516 0xf0,0x72,0x02,0x0e
   2517 # CHECK: tbx v0.8b, { v1.16b }, v2.8b
   2518 # CHECK: tbx v16.8b, { v31.16b, v0.16b }, v2.8b
   2519 # CHECK: tbx v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
   2520 # CHECK: tbx v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b
   2521 
   2522 0x20,0x10,0x02,0x4e
   2523 0xf0,0x33,0x02,0x4e
   2524 0x20,0x50,0x02,0x4e
   2525 0xf0,0x73,0x02,0x4e
   2526 # CHECK: tbx v0.16b, { v1.16b }, v2.16b
   2527 # CHECK: tbx v16.16b, { v31.16b, v0.16b }, v2.16b
   2528 # CHECK: tbx v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
   2529 # CHECK: tbx v16.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b
   2530 
   2531 #----------------------------------------------------------------------
   2532 # Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
   2533 # Odd
   2534 #----------------------------------------------------------------------
   2535 # CHECK: fcvtxn s22, d13
   2536 0xb6,0x69,0x61,0x7e
   2537 
   2538 #----------------------------------------------------------------------
   2539 # Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
   2540 # With Ties To Away
   2541 #----------------------------------------------------------------------
   2542 # CHECK: fcvtas s12, s13
   2543 # CHECK: fcvtas d21, d14
   2544 
   2545 0xac,0xc9,0x21,0x5e
   2546 0xd5,0xc9,0x61,0x5e
   2547 
   2548 #----------------------------------------------------------------------
   2549 # Scalar Floating-point Convert To Unsigned Integer, Rounding To
   2550 # Nearest With Ties To Away
   2551 #----------------------------------------------------------------------
   2552 # CHECK: fcvtau s12, s13
   2553 # CHECK: fcvtau d21, d14
   2554 0xac,0xc9,0x21,0x7e
   2555 0xd5,0xc9,0x61,0x7e
   2556 
   2557 #----------------------------------------------------------------------
   2558 # Scalar Floating-point Convert To Signed Integer, Rounding Toward
   2559 # Minus Infinity
   2560 #----------------------------------------------------------------------
   2561 # CHECK: fcvtms s22, s13
   2562 # CHECK: fcvtms d21, d14
   2563 0xb6,0xb9,0x21,0x5e
   2564 0xd5,0xb9,0x61,0x5e
   2565 
   2566 #----------------------------------------------------------------------
   2567 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
   2568 # Minus Infinity
   2569 #----------------------------------------------------------------------
   2570 # CHECK: fcvtmu s12, s13
   2571 # CHECK: fcvtmu d21, d14
   2572 0xac,0xb9,0x21,0x7e
   2573 0xd5,0xb9,0x61,0x7e
   2574 
   2575 #----------------------------------------------------------------------
   2576 # Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
   2577 # With Ties To Even
   2578 #----------------------------------------------------------------------
   2579 
   2580 # CHECK: fcvtns s22, s13
   2581 # CHECK: fcvtns d21, d14
   2582 
   2583 0xb6,0xa9,0x21,0x5e
   2584 0xd5,0xa9,0x61,0x5e
   2585 
   2586 #----------------------------------------------------------------------
   2587 # Scalar Floating-point Convert To Unsigned Integer, Rounding To
   2588 # Nearest With Ties To Even
   2589 #----------------------------------------------------------------------
   2590 
   2591 # CHECK: fcvtnu s12, s13
   2592 # CHECK: fcvtnu d21, d14
   2593 0xac,0xa9,0x21,0x7e
   2594 0xd5,0xa9,0x61,0x7e
   2595         
   2596 #----------------------------------------------------------------------
   2597 # Scalar Floating-point Convert To Signed Integer, Rounding Toward
   2598 # Positive Infinity
   2599 #----------------------------------------------------------------------
   2600 # CHECK: fcvtps s22, s13
   2601 # CHECK: fcvtps d21, d14
   2602 0xb6,0xa9,0xa1,0x5e
   2603 0xd5,0xa9,0xe1,0x5e
   2604         
   2605 #----------------------------------------------------------------------
   2606 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
   2607 # Positive Infinity
   2608 #----------------------------------------------------------------------
   2609 # CHECK: fcvtpu s12, s13
   2610 # CHECK: fcvtpu d21, d14
   2611 0xac,0xa9,0xa1,0x7e
   2612 0xd5,0xa9,0xe1,0x7e
   2613 
   2614 #----------------------------------------------------------------------
   2615 # Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
   2616 #----------------------------------------------------------------------
   2617 # CHECK: fcvtzs s12, s13
   2618 # CHECK: fcvtzs d21, d14
   2619 0xac,0xb9,0xa1,0x5e
   2620 0xd5,0xb9,0xe1,0x5e
   2621         
   2622 #----------------------------------------------------------------------
   2623 # Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 
   2624 # Zero
   2625 #----------------------------------------------------------------------
   2626 # CHECK: fcvtzu s12, s13
   2627 # CHECK: fcvtzu d21, d14
   2628 0xac,0xb9,0xa1,0x7e
   2629 0xd5,0xb9,0xe1,0x7e
   2630 
   2631 #----------------------------------------------------------------------
   2632 # Scalar Floating-point Absolute Difference
   2633 #----------------------------------------------------------------------
   2634 # CHECK: fabd s29, s24, s20
   2635 # CHECK: fabd d29, d24, d20
   2636 0x1d,0xd7,0xb4,0x7e
   2637 0x1d,0xd7,0xf4,0x7e
   2638