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, #255, lsl #24 91 # CHECK: mvni v0.2s, #{{0x0|0}} 92 # CHECK: bic v15.4h, #15, lsl #8 93 # CHECK: orr v16.8h, #31 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, #8, msl #8 104 # CHECK: mvni v16.4s, #16, 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, #255 114 # CHECK: movi v31.16b, #31 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