Home | History | Annotate | Download | only in AArch64
      1 # RUN: llvm-mc  -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s
      2 
      3 #------------------------------------------------------------------------------
      4 # Vector Integer Add/Sub
      5 #------------------------------------------------------------------------------
      6 # CHECK: add v31.8b, v31.8b, v31.8b
      7 # CHECK: sub v0.2d, v0.2d, v0.2d
      8 0xff 0x87 0x3f 0x0e
      9 0x00 0x84 0xe0 0x6e
     10 
     11 #------------------------------------------------------------------------------
     12 # Vector Floating-Point Add/Sub
     13 #------------------------------------------------------------------------------
     14 
     15 # CHECK: fadd v0.4s, v0.4s, v0.4s
     16 # CHECK: fsub v31.2s, v31.2s, v31.2s
     17 0x00 0xd4 0x20 0x4e
     18 0xff 0xd7 0xbf 0x0e
     19 
     20 #------------------------------------------------------------------------------
     21 # Vector Integer Mul
     22 #------------------------------------------------------------------------------
     23 # CHECK: mul v0.8b, v1.8b, v2.8b
     24 0x20 0x9c 0x22 0x0e
     25 
     26 #------------------------------------------------------------------------------
     27 # Vector Floating-Point Mul/Div
     28 #------------------------------------------------------------------------------
     29 # CHECK: fmul v0.2s, v1.2s, v2.2s
     30 # CHECK: fdiv v31.2s, v31.2s, v31.2s
     31 0x20 0xdc 0x22 0x2e
     32 0xff 0xff 0x3f 0x2e
     33 
     34 #----------------------------------------------------------------------
     35 # Vector Polynomial Multiply
     36 #----------------------------------------------------------------------
     37 # CHECK: pmul v0.8b, v15.8b, v16.8b
     38 # CHECK: pmul v31.16b, v7.16b, v8.16b
     39 0xe0 0x9d 0x30 0x2e
     40 0xff 0x9c 0x28 0x6e
     41 
     42 #------------------------------------------------------------------------------
     43 # Vector And, Orr, Eor, Orn, Bic
     44 #------------------------------------------------------------------------------
     45 # CHECK: and v2.8b, v2.8b, v2.8b
     46 # CHECK: orr v31.16b, v31.16b, v30.16b
     47 # CHECK: eor v0.16b, v1.16b, v2.16b
     48 # CHECK: orn v9.16b, v10.16b, v11.16b
     49 # CHECK: bic v31.8b, v30.8b, v29.8b
     50 0x42 0x1c 0x22 0x0e
     51 0xff 0x1f 0xbe 0x4e
     52 0x20 0x1c 0x22 0x6e
     53 0x49 0x1d 0xeb 0x4e
     54 0xdf 0x1f 0x7d 0x0e
     55 
     56 #------------------------------------------------------------------------------
     57 # Vector Bsl, Bit, Bif
     58 #------------------------------------------------------------------------------
     59 # CHECK: bsl v0.8b, v1.8b, v2.8b
     60 # CHECK: bit v31.16b, v31.16b, v31.16b
     61 # CHECK: bif v0.16b, v1.16b, v2.16b
     62 0x20 0x1c 0x62 0x2e
     63 0xff 0x1f 0xbf 0x6e
     64 0x20 0x1c 0xe2 0x6e
     65 
     66 
     67 #------------------------------------------------------------------------------
     68 # Vector Integer Multiply-accumulate and Multiply-subtract
     69 #------------------------------------------------------------------------------
     70 # CHECK: mla v0.8b, v1.8b, v2.8b
     71 # CHECK: mls v31.4h, v31.4h, v31.4h
     72 0x20 0x94 0x22 0x0e
     73 0xff 0x97 0x7f 0x2e
     74 
     75 #------------------------------------------------------------------------------
     76 # Vector Floating-Point Multiply-accumulate and Multiply-subtract
     77 #------------------------------------------------------------------------------
     78 # CHECK: fmla v0.2s, v1.2s, v2.2s
     79 # CHECK: fmls v31.2s, v31.2s, v31.2s
     80 0x20 0xcc 0x22 0x0e
     81 0xff 0xcf 0xbf 0x0e
     82 
     83 #------------------------------------------------------------------------------
     84 # Vector Move Immediate Shifted
     85 # Vector Move Inverted Immediate Shifted
     86 # Vector Bitwise Bit Clear (AND NOT) - immediate
     87 # Vector Bitwise OR - immedidate
     88 #------------------------------------------------------------------------------
     89 # CHECK: movi v31.4s, #0xff, lsl #24
     90 # CHECK: mvni v0.2s, #0x0
     91 # CHECK: bic v15.4h, #0xf, lsl #8
     92 # CHECK: orr v16.8h, #0x1f
     93 0xff 0x67 0x07 0x4f
     94 0x00 0x04 0x00 0x2f
     95 0xef 0xb5 0x00 0x2f
     96 0xf0 0x97 0x00 0x4f
     97 
     98 #------------------------------------------------------------------------------
     99 # Vector Move Immediate Masked
    100 # Vector Move Inverted Immediate Masked
    101 #------------------------------------------------------------------------------
    102 # CHECK: movi v8.2s, #0x8, msl #8
    103 # CHECK: mvni v16.4s, #0x10, msl #16
    104 0x08 0xc5 0x00 0x0f
    105 0x10 0xd6 0x00 0x6f
    106 
    107 #------------------------------------------------------------------------------
    108 # Vector Immediate - per byte
    109 # Vector Move Immediate - bytemask, per doubleword
    110 # Vector Move Immediate - bytemask, one doubleword
    111 #------------------------------------------------------------------------------
    112 # CHECK: movi v16.8b, #0xff
    113 # CHECK: movi v31.16b, #0x1f
    114 # CHECK: movi d15, #0xff00ff00ff00ff
    115 # CHECK: movi v31.2d, #0xff0000ff0000ffff
    116 0xf0 0xe7 0x07 0x0f
    117 0xff 0xe7 0x00 0x4f
    118 0xaf 0xe6 0x02 0x2f
    119 0x7f 0xe6 0x04 0x6f
    120 
    121 #------------------------------------------------------------------------------
    122 # Vector Floating Point Move Immediate
    123 #------------------------------------------------------------------------------
    124 # CHECK: fmov v0.2s, #13.0
    125 # CHECK: fmov v15.4s, #1.0
    126 # CHECK: fmov v31.2d, #-1.25
    127 0x40 0xf5 0x01 0x0f
    128 0x0f 0xf6 0x03 0x4f
    129 0x9f 0xf6 0x07 0x6f
    130 
    131 #------------------------------------------------------------------------------
    132 # Vector Move - register
    133 #------------------------------------------------------------------------------
    134 # CHECK: mov v1.16b, v15.16b
    135 # CHECK: mov v25.8b, v4.8b
    136 0xe1 0x1d 0xaf 0x4e
    137 0x99 0x1c 0xa4 0x0e
    138 
    139 #----------------------------------------------------------------------
    140 # Vector Absolute Difference and Accumulate (Signed, Unsigned)
    141 # Vector Absolute Difference (Signed, Unsigned)
    142 # Vector Absolute Difference (Floating Point)
    143 #----------------------------------------------------------------------
    144 
    145 # CHECK: uaba v0.8b, v1.8b, v2.8b
    146 # CHECK: saba v31.16b, v30.16b, v29.16b
    147 # CHECK: uabd v15.4h, v16.4h, v17.4h
    148 # CHECK: sabd v5.4h, v4.4h, v6.4h
    149 # CHECK: fabd v1.4s, v31.4s, v16.4s
    150 0x20 0x7c 0x22 0x2e
    151 0xdf 0x7f 0x3d 0x4e
    152 0x0f 0x76 0x71 0x2e
    153 0x85 0x74 0x66 0x0e
    154 0xe1 0xd7 0xb0 0x6e
    155 
    156 #----------------------------------------------------------------------
    157 # Scalar Integer Add
    158 # Scalar Integer Sub
    159 #----------------------------------------------------------------------
    160 
    161 # CHECK: add d17, d31, d29
    162 # CHECK: sub d15, d5, d16
    163 0xf1 0x87 0xfd 0x5e
    164 0xaf 0x84 0xf0 0x7e
    165 
    166 #----------------------------------------------------------------------
    167 # Vector Reciprocal Square Root Step (Floating Point)
    168 #----------------------------------------------------------------------
    169 # CHECK: frsqrts v31.2d, v15.2d, v8.2d
    170 0xff 0xfd 0xe8 0x4e
    171 
    172 #----------------------------------------------------------------------
    173 # Vector Reciprocal Step (Floating Point)
    174 #----------------------------------------------------------------------
    175 # CHECK: frecps  v5.4s, v7.4s, v16.4s
    176 0xe5 0xfc 0x30 0x4e
    177 
    178 #----------------------------------------------------------------------
    179 # Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
    180 #----------------------------------------------------------------------
    181 # CHECK: facge v0.4s, v31.4s, v16.4s
    182 0xe0 0xef 0x30 0x6e
    183 
    184 #----------------------------------------------------------------------
    185 # Vector Absolute Compare Mask Less Than (Floating Point)
    186 #----------------------------------------------------------------------
    187 # CHECK: facgt v31.2d, v29.2d, v28.2d
    188 0xbf 0xef 0xfc 0x6e
    189 
    190 #----------------------------------------------------------------------
    191 # Vector Compare Mask Equal (Integer)
    192 #----------------------------------------------------------------------
    193 # CHECK: cmeq v5.16b, v15.16b, v31.16b
    194 0xe5 0x8d 0x3f 0x6e
    195 
    196 #----------------------------------------------------------------------
    197 # Vector Compare Mask Higher or Same (Unsigned Integer)
    198 #----------------------------------------------------------------------
    199 # CHECK: cmhs v1.8b, v16.8b, v30.8b
    200 0x01 0x3e 0x3e 0x2e
    201 
    202 #----------------------------------------------------------------------
    203 # Vector Compare Mask Greater Than or Equal (Integer)
    204 #----------------------------------------------------------------------
    205 # CHECK: cmge v20.4h, v11.4h, v23.4h
    206 0x74 0x3d 0x77 0x0e
    207 
    208 #----------------------------------------------------------------------
    209 # Vector Compare Mask Higher (Unsigned Integer)
    210 # CHECK: cmhi v13.8h, v3.8h, v27.8h
    211 0x6d 0x34 0x7b 0x6e
    212 
    213 #----------------------------------------------------------------------
    214 # Vector Compare Mask Greater Than (Integer)
    215 #----------------------------------------------------------------------
    216 # CHECK: cmgt v9.4s, v4.4s, v28.4s
    217 0x89 0x34 0xbc 0x4e
    218 
    219 #----------------------------------------------------------------------
    220 # Vector Compare Mask Bitwise Test (Integer)
    221 #----------------------------------------------------------------------
    222 # CHECK: cmtst v21.2s, v19.2s, v18.2s
    223 0x75 0x8e 0xb2 0x0e
    224 
    225 #----------------------------------------------------------------------
    226 # Vector Compare Mask Equal (Floating Point)
    227 #----------------------------------------------------------------------
    228 # CHECK: fcmeq v0.2s, v15.2s, v16.2s
    229 0xe0 0xe5 0x30 0x0e
    230 
    231 #----------------------------------------------------------------------
    232 # Vector Compare Mask Greater Than Or Equal (Floating Point)
    233 #----------------------------------------------------------------------
    234 # CHECK: fcmge v31.4s, v7.4s, v29.4s
    235 0xff 0xe4 0x3d 0x6e
    236 
    237 #----------------------------------------------------------------------
    238 # Vector Compare Mask Greater Than (Floating Point)
    239 #----------------------------------------------------------------------
    240 # CHECK: fcmgt v17.4s, v8.4s, v25.4s
    241 0x11 0xe5 0xb9 0x6e
    242 
    243 #----------------------------------------------------------------------
    244 # Vector Compare Mask Equal to Zero (Integer)
    245 #----------------------------------------------------------------------
    246 # CHECK: cmeq v31.16b, v15.16b, #0x0
    247 0xff 0x99 0x20 0x4e
    248 
    249 #----------------------------------------------------------------------
    250 # Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
    251 #----------------------------------------------------------------------
    252 # CHECK: cmge v3.8b, v15.8b, #0x0
    253 0xe3 0x89 0x20 0x2e
    254 
    255 #----------------------------------------------------------------------
    256 # Vector Compare Mask Greater Than Zero (Signed Integer)
    257 #----------------------------------------------------------------------
    258 # CHECK: cmgt v22.2s, v9.2s, #0x0
    259 0x36 0x89 0xa0 0x0e
    260 
    261 #----------------------------------------------------------------------
    262 # Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
    263 #----------------------------------------------------------------------
    264 # CHECK: cmle v5.2d, v14.2d, #0x0
    265 0xc5 0x99 0xe0 0x6e
    266 
    267 #----------------------------------------------------------------------
    268 # Vector Compare Mask Less Than Zero (Signed Integer)
    269 #----------------------------------------------------------------------
    270 # CHECK: cmlt v13.8h, v11.8h, #0x0
    271 0x6d 0xa9 0x60 0x4e
    272 
    273 #----------------------------------------------------------------------
    274 # Vector Compare Mask Equal to Zero (Floating Point)
    275 #----------------------------------------------------------------------
    276 # CHECK: fcmeq v15.2s, v21.2s, #0.0
    277 0xaf 0xda 0xa0 0x0e
    278 
    279 #----------------------------------------------------------------------
    280 # Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
    281 #----------------------------------------------------------------------
    282 # CHECK: fcmge v14.2d, v13.2d, #0.0
    283 0xae 0xc9 0xe0 0x6e
    284 
    285 #----------------------------------------------------------------------
    286 # Vector Compare Mask Greater Than Zero (Floating Point)
    287 #----------------------------------------------------------------------
    288 # CHECK: fcmgt v9.4s, v23.4s, #0.0
    289 0xe9 0xca 0xa0 0x4e
    290 
    291 #----------------------------------------------------------------------
    292 # Vector Compare Mask Less Than or Equal To Zero (Floating Point)
    293 #----------------------------------------------------------------------
    294 # CHECK: fcmle v11.2d, v6.2d, #0.0
    295 0xcb 0xd8 0xe0 0x6e
    296 
    297 #----------------------------------------------------------------------
    298 # Vector Compare Mask Less Than Zero (Floating Point)
    299 #----------------------------------------------------------------------
    300 # CHECK: fcmlt v12.4s, v25.4s, #0.0
    301 0x2c 0xeb 0xa0 0x4e
    302 
    303 
    304 #------------------------------------------------------------------------------
    305 # Vector Integer Halving Add (Signed)
    306 # Vector Integer Halving Add (Unsigned)
    307 # Vector Integer Halving Sub (Signed)
    308 # Vector Integer Halving Sub (Unsigned)
    309 #------------------------------------------------------------------------------
    310 # CHECK: shadd v0.8b, v31.8b, v29.8b
    311 # CHECK: uhadd v15.16b, v16.16b, v17.16b
    312 # CHECK: shsub v0.4h, v1.4h, v2.4h
    313 # CHECK: uhadd v5.8h, v7.8h, v8.8h
    314 # CHECK: shsub v9.2s, v11.2s, v21.2s
    315 # CHECK: uhsub v22.4s, v30.4s, v19.4s
    316 0xe0 0x07 0x3d 0x0e
    317 0x0f 0x06 0x31 0x6e
    318 0x20 0x24 0x62 0x0e
    319 0xe5 0x04 0x68 0x6e
    320 0x69 0x25 0xb5 0x0e
    321 0xd6 0x27 0xb3 0x6e
    322 
    323 #------------------------------------------------------------------------------
    324 # Vector Integer Rouding Halving Add (Signed)
    325 # Vector Integer Rouding Halving Add (Unsigned)
    326 #------------------------------------------------------------------------------
    327 # CHECK: srhadd v3.8b, v5.8b, v7.8b
    328 # CHECK: urhadd v7.16b, v17.16b, v27.16b
    329 # CHECK: srhadd v10.4h, v11.4h, v13.4h
    330 # CHECK: urhadd v1.8h, v2.8h, v3.8h
    331 # CHECK: srhadd v4.2s, v5.2s, v6.2s
    332 # CHECK: urhadd v7.4s, v7.4s, v7.4s
    333 0xa3 0x14 0x27 0x0e
    334 0x27 0x16 0x3b 0x6e
    335 0x6a 0x15 0x6d 0x0e
    336 0x41 0x14 0x63 0x6e
    337 0xa4 0x14 0xa6 0x0e
    338 0xe7 0x14 0xa7 0x6e
    339 
    340 #------------------------------------------------------------------------------
    341 # Vector Integer Saturating Add (Signed)
    342 # Vector Integer Saturating Add (Unsigned)
    343 # Vector Integer Saturating Sub (Signed)
    344 # Vector Integer Saturating Sub (Unsigned)
    345 #------------------------------------------------------------------------------
    346 # CHECK: sqsub v0.8b, v1.8b, v2.8b
    347 # CHECK: sqadd v0.16b, v1.16b, v2.16b
    348 # CHECK: uqsub v0.4h, v1.4h, v2.4h
    349 # CHECK: uqadd v0.8h, v1.8h, v2.8h
    350 # CHECK: sqadd v0.2s, v1.2s, v2.2s
    351 # CHECK: sqsub v0.4s, v1.4s, v2.4s
    352 # CHECK: sqsub v0.2d, v1.2d, v2.2d
    353 0x20 0x2c 0x22 0x0e
    354 0x20 0x0c 0x22 0x4e
    355 0x20 0x2c 0x62 0x2e
    356 0x20 0x0c 0x62 0x6e
    357 0x20 0x0c 0xa2 0x0e
    358 0x20 0x2c 0xa2 0x4e
    359 0x20 0x2c 0xe2 0x4e
    360 
    361 #------------------------------------------------------------------------------
    362 # Scalar Integer Saturating Add (Signed)
    363 # Scalar Integer Saturating Add (Unsigned)
    364 # Scalar Integer Saturating Sub (Signed)
    365 # Scalar Integer Saturating Add (Unsigned)
    366 #------------------------------------------------------------------------------
    367 # CHECK: sqadd b20, b11, b15
    368 # CHECK: uqadd h0, h1, h5
    369 # CHECK: sqsub s20, s10, s7
    370 # CHECK: uqsub d16, d16, d16
    371 0x74 0x0d 0x2f 0x5e
    372 0x20 0x0c 0x65 0x7e
    373 0x54 0x2d 0xa7 0x5e
    374 0x10 0x2e 0xf0 0x7e
    375 
    376 
    377 #----------------------------------------------------------------------
    378 # Vector Shift Left (Signed and Unsigned Integer)
    379 #----------------------------------------------------------------------
    380 # CHECK: sshl v10.8b, v15.8b, v22.8b
    381 # CHECK: ushl v10.16b, v5.16b, v2.16b
    382 # CHECK: sshl v10.4h, v15.4h, v22.4h
    383 # CHECK: ushl v10.8h, v5.8h, v2.8h
    384 # CHECK: sshl v10.2s, v15.2s, v22.2s
    385 # CHECK: ushl v10.4s, v5.4s, v2.4s
    386 # CHECK: sshl v0.2d, v1.2d, v2.2d
    387 0xea 0x45 0x36 0x0e
    388 0xaa 0x44 0x22 0x6e
    389 0xea 0x45 0x76 0x0e
    390 0xaa 0x44 0x62 0x6e
    391 0xea 0x45 0xb6 0x0e
    392 0xaa 0x44 0xa2 0x6e
    393 0x20 0x44 0xe2 0x4e
    394 
    395 #----------------------------------------------------------------------
    396 # Vector Saturating Shift Left (Signed and Unsigned Integer)
    397 #----------------------------------------------------------------------
    398 # CHECK: sqshl v1.8b, v15.8b, v22.8b
    399 # CHECK: uqshl v2.16b, v14.16b, v23.16b
    400 # CHECK: sqshl v3.4h, v13.4h, v24.4h
    401 # CHECK: uqshl v4.8h, v12.8h, v25.8h
    402 # CHECK: sqshl v5.2s, v11.2s, v26.2s
    403 # CHECK: uqshl v6.4s, v10.4s, v27.4s
    404 # CHECK: uqshl v0.2d, v1.2d, v2.2d
    405 0xe1 0x4d 0x36 0x0e
    406 0xc2 0x4d 0x37 0x6e
    407 0xa3 0x4d 0x78 0x0e
    408 0x84 0x4d 0x79 0x6e
    409 0x65 0x4d 0xba 0x0e
    410 0x46 0x4d 0xbb 0x6e
    411 0x20 0x4c 0xe2 0x6e
    412 
    413 #----------------------------------------------------------------------
    414 # Vector Rouding Shift Left (Signed and Unsigned Integer)
    415 #----------------------------------------------------------------------
    416 # CHECK: srshl v10.8b, v5.8b, v22.8b
    417 # CHECK: urshl v10.16b, v5.16b, v2.16b
    418 # CHECK: srshl v1.4h, v5.4h, v31.4h
    419 # CHECK: urshl v1.8h, v5.8h, v2.8h
    420 # CHECK: srshl v10.2s, v15.2s, v2.2s
    421 # CHECK: urshl v1.4s, v5.4s, v2.4s
    422 # CHECK: urshl v0.2d, v1.2d, v2.2d
    423 0xaa 0x54 0x36 0x0e
    424 0xaa 0x54 0x22 0x6e
    425 0xa1 0x54 0x7f 0x0e
    426 0xa1 0x54 0x62 0x6e
    427 0xea 0x55 0xa2 0x0e
    428 0xa1 0x54 0xa2 0x6e
    429 0x20 0x54 0xe2 0x6e
    430 
    431 #----------------------------------------------------------------------
    432 # Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
    433 #----------------------------------------------------------------------
    434 # CHECK: sqrshl v1.8b, v15.8b, v22.8b
    435 # CHECK: uqrshl v2.16b, v14.16b, v23.16b
    436 # CHECK: sqrshl v3.4h, v13.4h, v24.4h
    437 # CHECK: uqrshl v4.8h, v12.8h, v25.8h
    438 # CHECK: sqrshl v5.2s, v11.2s, v26.2s
    439 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
    440 # CHECK: uqrshl v6.4s, v10.4s, v27.4s
    441 0xe1 0x5d 0x36 0x0e
    442 0xc2 0x5d 0x37 0x6e
    443 0xa3 0x5d 0x78 0x0e
    444 0x84 0x5d 0x79 0x6e
    445 0x65 0x5d 0xba 0x0e
    446 0x46 0x5d 0xbb 0x6e
    447 0x46 0x5d 0xbb 0x6e
    448 
    449 #----------------------------------------------------------------------
    450 # Scalar Integer Shift Left (Signed, Unsigned)
    451 #----------------------------------------------------------------------
    452 # CHECK: sshl d31, d31, d31
    453 # CHECK: ushl d0, d0, d0
    454 0xff 0x47 0xff 0x5e
    455 0x00 0x44 0xe0 0x7e
    456 
    457 #----------------------------------------------------------------------
    458 # Scalar Integer Saturating Shift Left (Signed, Unsigned)
    459 #----------------------------------------------------------------------
    460 # CHECK: sqshl d31, d31, d31
    461 # CHECK: uqshl s23, s20, s16
    462 # CHECK: sqshl h3, h4, h15
    463 # CHECK: uqshl b11, b20, b30
    464 0xff 0x4f 0xff 0x5e
    465 0x97 0x4e 0xb0 0x7e
    466 0x83 0x4c 0x6f 0x5e
    467 0x8b 0x4e 0x3e 0x7e
    468 
    469 #----------------------------------------------------------------------
    470 # Scalar Integer Rouding Shift Left (Signed, Unsigned)
    471 #----------------------------------------------------------------------
    472 # CHECK: srshl d16, d16, d16
    473 # CHECK: urshl d8, d7, d4
    474 0x10 0x56 0xf0 0x5e
    475 0xe8 0x54 0xe4 0x7e
    476 
    477 #----------------------------------------------------------------------
    478 # Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
    479 #----------------------------------------------------------------------
    480 # CHECK: sqrshl d31, d31, d31
    481 # CHECK: uqrshl s23, s20, s16
    482 # CHECK: sqrshl h3, h4, h15
    483 # CHECK: uqrshl b11, b20, b30
    484 0xff 0x5f 0xff 0x5e
    485 0x97 0x5e 0xb0 0x7e
    486 0x83 0x5c 0x6f 0x5e
    487 0x8b 0x5e 0x3e 0x7e
    488 
    489 #----------------------------------------------------------------------
    490 # Vector Maximum (Signed and Unsigned Integer)
    491 #----------------------------------------------------------------------
    492 # CHECK: smax v1.8b, v15.8b, v22.8b
    493 # CHECK: umax v2.16b, v14.16b, v23.16b
    494 # CHECK: smax v3.4h, v13.4h, v24.4h
    495 # CHECK: umax v4.8h, v12.8h, v25.8h
    496 # CHECK: smax v5.2s, v11.2s, v26.2s
    497 # CHECK: umax v6.4s, v10.4s, v27.4s
    498 0xe1 0x65 0x36 0x0e
    499 0xc2 0x65 0x37 0x6e
    500 0xa3 0x65 0x78 0x0e
    501 0x84 0x65 0x79 0x6e
    502 0x65 0x65 0xba 0x0e
    503 0x46 0x65 0xbb 0x6e
    504 
    505 #----------------------------------------------------------------------
    506 # Vector Minimum (Signed and Unsigned Integer)
    507 #----------------------------------------------------------------------
    508 # CHECK: umin v1.8b, v15.8b, v22.8b
    509 # CHECK: smin v2.16b, v14.16b, v23.16b
    510 # CHECK: umin v3.4h, v13.4h, v24.4h
    511 # CHECK: smin v4.8h, v12.8h, v25.8h
    512 # CHECK: umin v5.2s, v11.2s, v26.2s
    513 # CHECK: smin v6.4s, v10.4s, v27.4s
    514 0xe1 0x6d 0x36 0x2e
    515 0xc2 0x6d 0x37 0x4e
    516 0xa3 0x6d 0x78 0x2e
    517 0x84 0x6d 0x79 0x4e
    518 0x65 0x6d 0xba 0x2e
    519 0x46 0x6d 0xbb 0x4e
    520 
    521 #----------------------------------------------------------------------
    522 # Vector Maximum (Floating Point)
    523 #----------------------------------------------------------------------
    524 # CHECK: fmax v29.2s, v28.2s, v25.2s
    525 # CHECK: fmax v9.4s, v8.4s, v5.4s
    526 # CHECK: fmax v11.2d, v10.2d, v7.2d
    527 0x9d 0xf7 0x39 0x0e
    528 0x09 0xf5 0x25 0x4e
    529 0x4b 0xf5 0x67 0x4e
    530 
    531 #----------------------------------------------------------------------
    532 # Vector Minimum (Floating Point)
    533 #----------------------------------------------------------------------
    534 # CHECK: fmin v29.2s, v28.2s, v25.2s
    535 # CHECK: fmin v9.4s, v8.4s, v5.4s
    536 # CHECK: fmin v11.2d, v10.2d, v7.2d
    537 0x9d 0xf7 0xb9 0x0e
    538 0x09 0xf5 0xa5 0x4e
    539 0x4b 0xf5 0xe7 0x4e
    540 
    541 #----------------------------------------------------------------------
    542 # Vector maxNum (Floating Point)
    543 #----------------------------------------------------------------------
    544 # CHECK: fmaxnm v9.2s, v8.2s, v5.2s
    545 # CHECK: fmaxnm v9.4s, v8.4s, v5.4s
    546 # CHECK: fmaxnm v11.2d, v10.2d, v7.2d
    547 0x09 0xc5 0x25 0x0e
    548 0x09 0xc5 0x25 0x4e
    549 0x4b 0xc5 0x67 0x4e
    550 
    551 #----------------------------------------------------------------------
    552 # Vector minNum (Floating Point)
    553 #----------------------------------------------------------------------
    554 # CHECK: fminnm v2.2s, v8.2s, v25.2s
    555 # CHECK: fminnm v9.4s, v8.4s, v5.4s
    556 # CHECK: fminnm v11.2d, v10.2d, v7.2d
    557 0x02 0xc5 0xb9 0x0e
    558 0x09 0xc5 0xa5 0x4e
    559 0x4b 0xc5 0xe7 0x4e
    560 
    561 
    562 #----------------------------------------------------------------------
    563 # Vector Maximum Pairwise (Signed and Unsigned Integer)
    564 #----------------------------------------------------------------------
    565 # CHECK: smaxp v1.8b, v15.8b, v22.8b
    566 # CHECK: umaxp v2.16b, v14.16b, v23.16b
    567 # CHECK: smaxp v3.4h, v13.4h, v24.4h
    568 # CHECK: umaxp v4.8h, v12.8h, v25.8h
    569 # CHECK: smaxp v5.2s, v11.2s, v26.2s
    570 # CHECK: umaxp v6.4s, v10.4s, v27.4s
    571 0xe1 0xa5 0x36 0x0e
    572 0xc2 0xa5 0x37 0x6e
    573 0xa3 0xa5 0x78 0x0e
    574 0x84 0xa5 0x79 0x6e
    575 0x65 0xa5 0xba 0x0e
    576 0x46 0xa5 0xbb 0x6e
    577 
    578 #----------------------------------------------------------------------
    579 # Vector Minimum Pairwise (Signed and Unsigned Integer)
    580 #----------------------------------------------------------------------
    581 # CHECK: uminp v1.8b, v15.8b, v22.8b
    582 # CHECK: sminp v2.16b, v14.16b, v23.16b
    583 # CHECK: uminp v3.4h, v13.4h, v24.4h
    584 # CHECK: sminp v4.8h, v12.8h, v25.8h
    585 # CHECK: uminp v5.2s, v11.2s, v26.2s
    586 # CHECK: sminp v6.4s, v10.4s, v27.4s
    587 0xe1 0xad 0x36 0x2e
    588 0xc2 0xad 0x37 0x4e
    589 0xa3 0xad 0x78 0x2e
    590 0x84 0xad 0x79 0x4e
    591 0x65 0xad 0xba 0x2e
    592 0x46 0xad 0xbb 0x4e
    593 
    594 #----------------------------------------------------------------------
    595 # Vector Maximum Pairwise (Floating Point)
    596 #----------------------------------------------------------------------
    597 # CHECK: fmaxp v29.2s, v28.2s, v25.2s
    598 # CHECK: fmaxp v9.4s, v8.4s, v5.4s
    599 # CHECK: fmaxp v11.2d, v10.2d, v7.2d
    600 0x9d 0xf7 0x39 0x2e
    601 0x09 0xf5 0x25 0x6e
    602 0x4b 0xf5 0x67 0x6e
    603 
    604 #----------------------------------------------------------------------
    605 # Vector Minimum Pairwise (Floating Point)
    606 #----------------------------------------------------------------------
    607 # CHECK: fminp v29.2s, v28.2s, v25.2s
    608 # CHECK: fminp v9.4s, v8.4s, v5.4s
    609 # CHECK: fminp v11.2d, v10.2d, v7.2d
    610 0x9d 0xf7 0xb9 0x2e
    611 0x09 0xf5 0xa5 0x6e
    612 0x4b 0xf5 0xe7 0x6e
    613 
    614 #----------------------------------------------------------------------
    615 # Vector maxNum Pairwise (Floating Point)
    616 #----------------------------------------------------------------------
    617 # CHECK: fmaxnmp v9.2s, v8.2s, v5.2s
    618 # CHECK: fmaxnmp v9.4s, v8.4s, v5.4s
    619 # CHECK: fmaxnmp v11.2d, v10.2d, v7.2d
    620 0x09 0xc5 0x25 0x2e
    621 0x09 0xc5 0x25 0x6e
    622 0x4b 0xc5 0x67 0x6e
    623 
    624 #----------------------------------------------------------------------
    625 # Vector minNum Pairwise (Floating Point)
    626 #----------------------------------------------------------------------
    627 # CHECK: fminnmp v2.2s, v8.2s, v25.2s
    628 # CHECK: fminnmp v9.4s, v8.4s, v5.4s
    629 # CHECK: fminnmp v11.2d, v10.2d, v7.2d
    630 0x02 0xc5 0xb9 0x2e
    631 0x09 0xc5 0xa5 0x6e
    632 0x4b 0xc5 0xe7 0x6e
    633 
    634 #------------------------------------------------------------------------------
    635 # Vector Add Pairwise (Integer)
    636 #------------------------------------------------------------------------------
    637 # CHECK: addp v31.8b, v31.8b, v31.8b
    638 # CHECK: addp v0.2d, v0.2d, v0.2d
    639 0xff 0xbf 0x3f 0x0e
    640 0x00 0xbc 0xe0 0x4e
    641 
    642 #------------------------------------------------------------------------------
    643 # Vector Add Pairwise (Floating Point)
    644 #------------------------------------------------------------------------------
    645 # CHECK: faddp v0.4s, v0.4s, v0.4s
    646 # CHECK: faddp v31.2s, v31.2s, v31.2s
    647 0x00 0xd4 0x20 0x6e
    648 0xff 0xd7 0x3f 0x2e
    649 
    650 
    651 #------------------------------------------------------------------------------
    652 # Vector Saturating Doubling Multiply High
    653 # Vector Saturating Rouding Doubling Multiply High
    654 #------------------------------------------------------------------------------
    655 # CHECK: sqdmulh v31.2s, v31.2s, v31.2s
    656 # CHECK: sqdmulh v5.4s, v7.4s, v9.4s
    657 # CHECK: sqrdmulh v31.4h, v3.4h, v13.4h
    658 # CHECK: sqrdmulh v0.8h, v10.8h, v20.8h
    659 0xff 0xb7 0xbf 0x0e
    660 0xe5 0xb4 0xa9 0x4e
    661 0x7f 0xb4 0x6d 0x2e
    662 0x40 0xb5 0x74 0x6e
    663 
    664 #------------------------------------------------------------------------------
    665 # Vector Multiply Extended
    666 #------------------------------------------------------------------------------
    667 # CHECK: fmulx v1.2s, v22.2s, v2.2s
    668 # CHECK: fmulx v21.4s, v15.4s, v3.4s
    669 # CHECK: fmulx v11.2d, v5.2d, v23.2d
    670 0xc1 0xde 0x22 0x0e
    671 0xf5 0xdd 0x23 0x4e
    672 0xab 0xdc 0x77 0x4e
    673 
    674