1 // RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon < %s 2> %t 2 // RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s 3 4 //------------------------------------------------------------------------------ 5 // Vector Integer Add/sub 6 //------------------------------------------------------------------------------ 7 8 // Mismatched vector types 9 add v0.16b, v1.8b, v2.8b 10 sub v0.2d, v1.2d, v2.2s 11 12 // CHECK-ERROR: error: invalid operand for instruction 13 // CHECK-ERROR: add v0.16b, v1.8b, v2.8b 14 // CHECK-ERROR: ^ 15 // CHECK-ERROR: error: invalid operand for instruction 16 // CHECK-ERROR: sub v0.2d, v1.2d, v2.2s 17 // CHECK-ERROR: ^ 18 19 //------------------------------------------------------------------------------ 20 // Vector Floating-Point Add/sub 21 //------------------------------------------------------------------------------ 22 23 // Mismatched and invalid vector types 24 fadd v0.2d, v1.2s, v2.2s 25 fsub v0.4s, v1.2s, v2.4s 26 fsub v0.8b, v1.8b, v2.8b 27 28 // CHECK-ERROR: error: invalid operand for instruction 29 // CHECK-ERROR: fadd v0.2d, v1.2s, v2.2s 30 // CHECK-ERROR: ^ 31 // CHECK-ERROR: error: invalid operand for instruction 32 // CHECK-ERROR: fsub v0.4s, v1.2s, v2.4s 33 // CHECK-ERROR: ^ 34 // CHECK-ERROR: error: invalid operand for instruction 35 // CHECK-ERROR: fsub v0.8b, v1.8b, v2.8b 36 // CHECK-ERROR: ^ 37 38 //---------------------------------------------------------------------- 39 // Vector Integer Mul 40 //---------------------------------------------------------------------- 41 42 // Mismatched and invalid vector types 43 mul v0.16b, v1.8b, v2.8b 44 mul v0.2d, v1.2d, v2.2d 45 46 // CHECK-ERROR: error: invalid operand for instruction 47 // CHECK-ERROR: mul v0.16b, v1.8b, v2.8b 48 // CHECK-ERROR: ^ 49 // CHECK-ERROR: error: invalid operand for instruction 50 // CHECK-ERROR: mul v0.2d, v1.2d, v2.2d 51 // CHECK-ERROR: ^ 52 53 //---------------------------------------------------------------------- 54 // Vector Floating-Point Mul/Div 55 //---------------------------------------------------------------------- 56 // Mismatched vector types 57 fmul v0.16b, v1.8b, v2.8b 58 fdiv v0.2s, v1.2d, v2.2d 59 60 // CHECK-ERROR: error: invalid operand for instruction 61 // CHECK-ERROR: fmul v0.16b, v1.8b, v2.8b 62 // CHECK-ERROR: ^ 63 // CHECK-ERROR: error: invalid operand for instruction 64 // CHECK-ERROR: fdiv v0.2s, v1.2d, v2.2d 65 // CHECK-ERROR: ^ 66 67 //---------------------------------------------------------------------- 68 // Vector And Orr Eor Bsl Bit Bif, Orn, Bic, 69 //---------------------------------------------------------------------- 70 // Mismatched and invalid vector types 71 and v0.8b, v1.16b, v2.8b 72 orr v0.4h, v1.4h, v2.4h 73 eor v0.2s, v1.2s, v2.2s 74 bsl v0.8b, v1.16b, v2.8b 75 bsl v0.2s, v1.2s, v2.2s 76 bit v0.2d, v1.2d, v2.2d 77 bif v0.4h, v1.4h, v2.4h 78 orn v0.8b, v1.16b, v2.16b 79 bic v0.2d, v1.2d, v2.2d 80 81 // CHECK-ERROR: error: invalid operand for instruction 82 // CHECK-ERROR: and v0.8b, v1.16b, v2.8b 83 // CHECK-ERROR: ^ 84 // CHECK-ERROR: error: invalid operand for instruction 85 // CHECK-ERROR: orr v0.4h, v1.4h, v2.4h 86 // CHECK-ERROR: ^ 87 // CHECK-ERROR: error: invalid operand for instruction 88 // CHECK-ERROR: eor v0.2s, v1.2s, v2.2s 89 // CHECK-ERROR: ^ 90 // CHECK-ERROR: error: invalid operand for instruction 91 // CHECK-ERROR: bsl v0.8b, v1.16b, v2.8b 92 // CHECK-ERROR: ^ 93 // CHECK-ERROR: error: invalid operand for instruction 94 // CHECK-ERROR: bsl v0.2s, v1.2s, v2.2s 95 // CHECK-ERROR: ^ 96 // CHECK-ERROR: error: invalid operand for instruction 97 // CHECK-ERROR: bit v0.2d, v1.2d, v2.2d 98 // CHECK-ERROR: ^ 99 // CHECK-ERROR: error: invalid operand for instruction 100 // CHECK-ERROR: bif v0.4h, v1.4h, v2.4h 101 // CHECK-ERROR: ^ 102 // CHECK-ERROR: error: invalid operand for instruction 103 // CHECK-ERROR: orn v0.8b, v1.16b, v2.16b 104 // CHECK-ERROR: ^ 105 // CHECK-ERROR: error: invalid operand for instruction 106 // CHECK-ERROR: bic v0.2d, v1.2d, v2.2d 107 // CHECK-ERROR: ^ 108 109 //---------------------------------------------------------------------- 110 // Vector Integer Multiply-accumulate and Multiply-subtract 111 //---------------------------------------------------------------------- 112 113 // Mismatched and invalid vector types 114 mla v0.16b, v1.8b, v2.8b 115 mls v0.2d, v1.2d, v2.2d 116 117 // CHECK-ERROR: error: invalid operand for instruction 118 // CHECK-ERROR: mla v0.16b, v1.8b, v2.8b 119 // CHECK-ERROR: ^ 120 // CHECK-ERROR: error: invalid operand for instruction 121 // CHECK-ERROR: mls v0.2d, v1.2d, v2.2d 122 // CHECK-ERROR: ^ 123 124 //---------------------------------------------------------------------- 125 // Vector Floating-Point Multiply-accumulate and Multiply-subtract 126 //---------------------------------------------------------------------- 127 // Mismatched vector types 128 fmla v0.2s, v1.2d, v2.2d 129 fmls v0.16b, v1.8b, v2.8b 130 131 // CHECK-ERROR: error: invalid operand for instruction 132 // CHECK-ERROR: fmla v0.2s, v1.2d, v2.2d 133 // CHECK-ERROR: ^ 134 // CHECK-ERROR: error: invalid operand for instruction 135 // CHECK-ERROR: fmls v0.16b, v1.8b, v2.8b 136 // CHECK-ERROR: ^ 137 138 139 //---------------------------------------------------------------------- 140 // Vector Move Immediate Shifted 141 // Vector Move Inverted Immediate Shifted 142 // Vector Bitwise Bit Clear (AND NOT) - immediate 143 // Vector Bitwise OR - immedidate 144 //---------------------------------------------------------------------- 145 // out of range immediate (0 to 0xff) 146 movi v0.2s, #-1 147 mvni v1.4s, #256 148 // out of range shift (0, 8, 16, 24 and 0, 8) 149 bic v15.4h, #1, lsl #7 150 orr v31.2s, #1, lsl #25 151 movi v5.4h, #10, lsl #16 152 // invalid vector type (2s, 4s, 4h, 8h) 153 movi v5.8b, #1, lsl #8 154 155 // CHECK-ERROR: error: invalid operand for instruction 156 // CHECK-ERROR: movi v0.2s, #-1 157 // CHECK-ERROR: ^ 158 // CHECK-ERROR: error: invalid operand for instruction 159 // CHECK-ERROR: mvni v1.4s, #256 160 // CHECK-ERROR: ^ 161 // CHECK-ERROR: error: invalid operand for instruction 162 // CHECK-ERROR: bic v15.4h, #1, lsl #7 163 // CHECK-ERROR: ^ 164 // CHECK-ERROR: error: invalid operand for instruction 165 // CHECK-ERROR: orr v31.2s, #1, lsl #25 166 // CHECK-ERROR: ^ 167 // CHECK-ERROR: error: invalid operand for instruction 168 // CHECK-ERROR: movi v5.4h, #10, lsl #16 169 // CHECK-ERROR: ^ 170 // CHECK-ERROR: error: invalid operand for instruction 171 // CHECK-ERROR: movi v5.8b, #1, lsl #8 172 // CHECK-ERROR: ^ 173 //---------------------------------------------------------------------- 174 // Vector Move Immediate Masked 175 // Vector Move Inverted Immediate Masked 176 //---------------------------------------------------------------------- 177 // out of range immediate (0 to 0xff) 178 movi v0.2s, #-1, msl #8 179 mvni v7.4s, #256, msl #16 180 // out of range shift (8, 16) 181 movi v3.2s, #1, msl #0 182 mvni v17.4s, #255, msl #32 183 // invalid vector type (2s, 4s) 184 movi v5.4h, #31, msl #8 185 186 // CHECK-ERROR: error: invalid operand for instruction 187 // CHECK-ERROR: movi v0.2s, #-1, msl #8 188 // CHECK-ERROR: ^ 189 // CHECK-ERROR: error: invalid operand for instruction 190 // CHECK-ERROR: mvni v7.4s, #256, msl #16 191 // CHECK-ERROR: ^ 192 // CHECK-ERROR: error: invalid operand for instruction 193 // CHECK-ERROR: movi v3.2s, #1, msl #0 194 // CHECK-ERROR: ^ 195 // CHECK-ERROR: error: invalid operand for instruction 196 // CHECK-ERROR: mvni v17.4s, #255, msl #32 197 // CHECK-ERROR: ^ 198 // CHECK-ERROR: error: invalid operand for instruction 199 // CHECK-ERROR: movi v5.4h, #31, msl #8 200 // CHECK-ERROR: ^ 201 202 //---------------------------------------------------------------------- 203 // Vector Immediate - per byte 204 //---------------------------------------------------------------------- 205 // out of range immediate (0 to 0xff) 206 movi v0.8b, #-1 207 movi v1.16b, #256 208 209 // CHECK-ERROR: error: invalid operand for instruction 210 // CHECK-ERROR: movi v0.8b, #-1 211 // CHECK-ERROR: ^ 212 // CHECK-ERROR: error: invalid operand for instruction 213 // CHECK-ERROR: movi v1.16b, #256 214 // CHECK-ERROR: ^ 215 216 //---------------------------------------------------------------------- 217 // Scalar Floating-point Reciprocal Estimate 218 //---------------------------------------------------------------------- 219 220 frecpe s19, h14 221 frecpe d13, s13 222 223 // CHECK-ERROR: error: invalid operand for instruction 224 // CHECK-ERROR: frecpe s19, h14 225 // CHECK-ERROR: ^ 226 // CHECK-ERROR: error: invalid operand for instruction 227 // CHECK-ERROR: frecpe d13, s13 228 // CHECK-ERROR: ^ 229 230 //---------------------------------------------------------------------- 231 // Scalar Floating-point Reciprocal Exponent 232 //---------------------------------------------------------------------- 233 234 frecpx s18, h10 235 frecpx d16, s19 236 237 // CHECK-ERROR: error: invalid operand for instruction 238 // CHECK-ERROR: frecpx s18, h10 239 // CHECK-ERROR: ^ 240 // CHECK-ERROR: error: invalid operand for instruction 241 // CHECK-ERROR: frecpx d16, s19 242 // CHECK-ERROR: ^ 243 244 //---------------------------------------------------------------------- 245 // Scalar Floating-point Reciprocal Square Root Estimate 246 //---------------------------------------------------------------------- 247 248 frsqrte s22, h13 249 frsqrte d21, s12 250 251 // CHECK-ERROR: error: invalid operand for instruction 252 // CHECK-ERROR: frsqrte s22, h13 253 // CHECK-ERROR: ^ 254 // CHECK-ERROR: error: invalid operand for instruction 255 // CHECK-ERROR: frsqrte d21, s12 256 // CHECK-ERROR: ^ 257 258 //---------------------------------------------------------------------- 259 // Vector Move Immediate - bytemask, per doubleword 260 //--------------------------------------------------------------------- 261 // invalid bytemask (0x00 or 0xff) 262 movi v0.2d, #0x10ff00ff00ff00ff 263 264 // CHECK:ERROR: error: invalid operand for instruction 265 // CHECK:ERROR: movi v0.2d, #0x10ff00ff00ff00ff 266 // CHECK:ERROR: ^ 267 268 //---------------------------------------------------------------------- 269 // Vector Move Immediate - bytemask, one doubleword 270 //---------------------------------------------------------------------- 271 // invalid bytemask (0x00 or 0xff) 272 movi v0.2d, #0xffff00ff001f00ff 273 274 // CHECK:ERROR: error: invalid operand for instruction 275 // CHECK:ERROR: movi v0.2d, #0xffff00ff001f00ff 276 // CHECK:ERROR: ^ 277 //---------------------------------------------------------------------- 278 // Vector Floating Point Move Immediate 279 //---------------------------------------------------------------------- 280 // invalid vector type (2s, 4s, 2d) 281 fmov v0.4h, #1.0 282 283 // CHECK:ERROR: error: invalid operand for instruction 284 // CHECK:ERROR: fmov v0.4h, #1.0 285 // CHECK:ERROR: ^ 286 287 //---------------------------------------------------------------------- 288 // Vector Move - register 289 //---------------------------------------------------------------------- 290 // invalid vector type (8b, 16b) 291 mov v0.2s, v31.8b 292 // CHECK:ERROR: error: invalid operand for instruction 293 // CHECK:ERROR: mov v0.2s, v31.8b 294 // CHECK:ERROR: ^ 295 296 //---------------------------------------------------------------------- 297 // Vector Absolute Difference and Accumulate (Signed, Unsigned) 298 //---------------------------------------------------------------------- 299 300 // Mismatched and invalid vector types (2d) 301 saba v0.16b, v1.8b, v2.8b 302 uaba v0.2d, v1.2d, v2.2d 303 304 // CHECK-ERROR: error: invalid operand for instruction 305 // CHECK-ERROR: saba v0.16b, v1.8b, v2.8b 306 // CHECK-ERROR: ^ 307 // CHECK-ERROR: error: invalid operand for instruction 308 // CHECK-ERROR: uaba v0.2d, v1.2d, v2.2d 309 // CHECK-ERROR: ^ 310 311 //---------------------------------------------------------------------- 312 // Vector Absolute Difference and Accumulate (Signed, Unsigned) 313 // Vector Absolute Difference (Signed, Unsigned) 314 315 // Mismatched and invalid vector types (2d) 316 uaba v0.16b, v1.8b, v2.8b 317 saba v0.2d, v1.2d, v2.2d 318 uabd v0.4s, v1.2s, v2.2s 319 sabd v0.4h, v1.8h, v8.8h 320 321 // CHECK-ERROR: error: invalid operand for instruction 322 // CHECK-ERROR: uaba v0.16b, v1.8b, v2.8b 323 // CHECK-ERROR: ^ 324 // CHECK-ERROR: error: invalid operand for instruction 325 // CHECK-ERROR: saba v0.2d, v1.2d, v2.2d 326 // CHECK-ERROR: ^ 327 // CHECK-ERROR: error: invalid operand for instruction 328 // CHECK-ERROR: uabd v0.4s, v1.2s, v2.2s 329 // CHECK-ERROR: ^ 330 // CHECK-ERROR: error: invalid operand for instruction 331 // CHECK-ERROR: sabd v0.4h, v1.8h, v8.8h 332 // CHECK-ERROR: ^ 333 334 //---------------------------------------------------------------------- 335 // Vector Absolute Difference (Floating Point) 336 //---------------------------------------------------------------------- 337 // Mismatched and invalid vector types 338 fabd v0.2s, v1.4s, v2.2d 339 fabd v0.4h, v1.4h, v2.4h 340 341 // CHECK-ERROR: error: invalid operand for instruction 342 // CHECK-ERROR: fabd v0.2s, v1.4s, v2.2d 343 // CHECK-ERROR: ^ 344 // CHECK-ERROR: error: instruction requires: fullfp16 345 // CHECK-ERROR: fabd v0.4h, v1.4h, v2.4h 346 // CHECK-ERROR: ^ 347 //---------------------------------------------------------------------- 348 // Vector Multiply (Polynomial) 349 //---------------------------------------------------------------------- 350 351 // Mismatched and invalid vector types 352 pmul v0.8b, v1.8b, v2.16b 353 pmul v0.2s, v1.2s, v2.2s 354 355 // CHECK-ERROR: error: invalid operand for instruction 356 // CHECK-ERROR: pmul v0.8b, v1.8b, v2.16b 357 // CHECK-ERROR: ^ 358 // CHECK-ERROR: error: invalid operand for instruction 359 // CHECK-ERROR: pmul v0.2s, v1.2s, v2.2s 360 // CHECK-ERROR: ^ 361 362 //---------------------------------------------------------------------- 363 // Scalar Integer Add and Sub 364 //---------------------------------------------------------------------- 365 366 // Mismatched registers 367 add d0, s1, d2 368 sub s1, d1, d2 369 370 // CHECK-ERROR: error: invalid operand for instruction 371 // CHECK-ERROR: add d0, s1, d2 372 // CHECK-ERROR: ^ 373 // CHECK-ERROR: error: invalid operand for instruction 374 // CHECK-ERROR: sub s1, d1, d2 375 // CHECK-ERROR: ^ 376 377 //---------------------------------------------------------------------- 378 // Vector Reciprocal Step (Floating Point) 379 //---------------------------------------------------------------------- 380 381 // Mismatched and invalid vector types 382 frecps v0.4s, v1.2d, v2.4s 383 frecps v0.8h, v1.8h, v2.8h 384 385 // CHECK-ERROR: error: invalid operand for instruction 386 // CHECK-ERROR: frecps v0.4s, v1.2d, v2.4s 387 // CHECK-ERROR: ^ 388 // CHECK-ERROR: error: instruction requires: fullfp16 389 // CHECK-ERROR: frecps v0.8h, v1.8h, v2.8h 390 // CHECK-ERROR: ^ 391 392 //---------------------------------------------------------------------- 393 // Vector Reciprocal Square Root Step (Floating Point) 394 //---------------------------------------------------------------------- 395 396 // Mismatched and invalid vector types 397 frsqrts v0.2d, v1.2d, v2.2s 398 frsqrts v0.4h, v1.4h, v2.4h 399 400 // CHECK-ERROR: error: invalid operand for instruction 401 // CHECK-ERROR: frsqrts v0.2d, v1.2d, v2.2s 402 // CHECK-ERROR: ^ 403 // CHECK-ERROR: error: instruction requires: fullfp16 404 // CHECK-ERROR: frsqrts v0.4h, v1.4h, v2.4h 405 // CHECK-ERROR: ^ 406 407 408 //---------------------------------------------------------------------- 409 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point) 410 //---------------------------------------------------------------------- 411 412 // Mismatched and invalid vector types 413 facge v0.2d, v1.2s, v2.2d 414 facge v0.4h, v1.4h, v2.4h 415 facle v0.8h, v1.4h, v2.4h 416 417 // CHECK-ERROR: error: invalid operand for instruction 418 // CHECK-ERROR: facge v0.2d, v1.2s, v2.2d 419 // CHECK-ERROR: ^ 420 // CHECK-ERROR: error: instruction requires: fullfp16 421 // CHECK-ERROR: facge v0.4h, v1.4h, v2.4h 422 // CHECK-ERROR: ^ 423 // CHECK-ERROR: error: invalid operand for instruction 424 // CHECK-ERROR: facle v0.8h, v1.4h, v2.4h 425 // CHECK-ERROR: ^ 426 //---------------------------------------------------------------------- 427 // Vector Absolute Compare Mask Less Than (Floating Point) 428 //---------------------------------------------------------------------- 429 430 // Mismatched and invalid vector types 431 facgt v0.2d, v1.2d, v2.4s 432 facgt v0.8h, v1.8h, v2.8h 433 faclt v0.8b, v1.8b, v2.8b 434 435 // CHECK-ERROR: error: invalid operand for instruction 436 // CHECK-ERROR: facgt v0.2d, v1.2d, v2.4s 437 // CHECK-ERROR: ^ 438 // CHECK-ERROR: error: instruction requires: fullfp16 439 // CHECK-ERROR: facgt v0.8h, v1.8h, v2.8h 440 // CHECK-ERROR: ^ 441 // CHECK-ERROR: error: invalid operand for instruction 442 // CHECK-ERROR: faclt v0.8b, v1.8b, v2.8b 443 // CHECK-ERROR: ^ 444 445 446 //---------------------------------------------------------------------- 447 // Vector Compare Mask Equal (Integer) 448 //---------------------------------------------------------------------- 449 450 // Mismatched vector types 451 cmeq c0.2d, v1.2d, v2.2s 452 453 // CHECK-ERROR: error: invalid operand for instruction 454 // CHECK-ERROR: cmeq c0.2d, v1.2d, v2.2s 455 // CHECK-ERROR: ^ 456 457 //---------------------------------------------------------------------- 458 // Vector Compare Mask Higher or Same (Unsigned Integer) 459 // Vector Compare Mask Less or Same (Unsigned Integer) 460 // CMLS is alias for CMHS with operands reversed. 461 //---------------------------------------------------------------------- 462 463 // Mismatched vector types 464 cmhs c0.4h, v1.8b, v2.8b 465 cmls c0.16b, v1.16b, v2.2d 466 467 // CHECK-ERROR: error: invalid operand for instruction 468 // CHECK-ERROR: cmhs c0.4h, v1.8b, v2.8b 469 // CHECK-ERROR: ^ 470 // CHECK-ERROR: error: invalid operand for instruction 471 // CHECK-ERROR: cmls c0.16b, v1.16b, v2.2d 472 // CHECK-ERROR: ^ 473 474 //---------------------------------------------------------------------- 475 // Vector Compare Mask Greater Than or Equal (Integer) 476 // Vector Compare Mask Less Than or Equal (Integer) 477 // CMLE is alias for CMGE with operands reversed. 478 //---------------------------------------------------------------------- 479 480 // Mismatched vector types 481 cmge c0.8h, v1.8b, v2.8b 482 cmle c0.4h, v1.2s, v2.2s 483 484 // CHECK-ERROR: error: invalid operand for instruction 485 // CHECK-ERROR: cmge c0.8h, v1.8b, v2.8b 486 // CHECK-ERROR: ^ 487 // CHECK-ERROR: error: invalid operand for instruction 488 // CHECK-ERROR: cmle c0.4h, v1.2s, v2.2s 489 // CHECK-ERROR: ^ 490 491 //---------------------------------------------------------------------- 492 // Vector Compare Mask Higher (Unsigned Integer) 493 // Vector Compare Mask Lower (Unsigned Integer) 494 // CMLO is alias for CMHI with operands reversed. 495 //---------------------------------------------------------------------- 496 497 // Mismatched vector types 498 cmhi c0.4s, v1.4s, v2.16b 499 cmlo c0.8b, v1.8b, v2.2s 500 501 // CHECK-ERROR: error: invalid operand for instruction 502 // CHECK-ERROR: cmhi c0.4s, v1.4s, v2.16b 503 // CHECK-ERROR: ^ 504 // CHECK-ERROR: error: invalid operand for instruction 505 // CHECK-ERROR: cmlo c0.8b, v1.8b, v2.2s 506 // CHECK-ERROR: ^ 507 508 //---------------------------------------------------------------------- 509 // Vector Compare Mask Greater Than (Integer) 510 // Vector Compare Mask Less Than (Integer) 511 // CMLT is alias for CMGT with operands reversed. 512 //---------------------------------------------------------------------- 513 514 // Mismatched vector types 515 cmgt c0.8b, v1.4s, v2.16b 516 cmlt c0.8h, v1.16b, v2.4s 517 518 // CHECK-ERROR: error: invalid operand for instruction 519 // CHECK-ERROR: cmgt c0.8b, v1.4s, v2.16b 520 // CHECK-ERROR: ^ 521 // CHECK-ERROR: error: invalid operand for instruction 522 // CHECK-ERROR: cmlt c0.8h, v1.16b, v2.4s 523 // CHECK-ERROR: ^ 524 525 //---------------------------------------------------------------------- 526 // Vector Compare Mask Bitwise Test (Integer) 527 //---------------------------------------------------------------------- 528 529 // Mismatched vector types 530 cmtst c0.16b, v1.16b, v2.4s 531 532 // CHECK-ERROR: error: invalid operand for instruction 533 // CHECK-ERROR: cmtst c0.16b, v1.16b, v2.4s 534 // CHECK-ERROR: ^ 535 536 //---------------------------------------------------------------------- 537 // Vector Compare Mask Equal (Floating Point) 538 //---------------------------------------------------------------------- 539 540 // Mismatched and invalid vector types 541 fcmeq v0.2d, v1.2s, v2.2d 542 fcmeq v0.16b, v1.16b, v2.16b 543 fcmeq v0.8b, v1.4h, v2.4h 544 545 // CHECK-ERROR: error: invalid operand for instruction 546 // CHECK-ERROR: fcmeq v0.2d, v1.2s, v2.2d 547 // CHECK-ERROR: ^ 548 // CHECK-ERROR: error: invalid operand for instruction 549 // CHECK-ERROR: fcmeq v0.16b, v1.16b, v2.16b 550 // CHECK-ERROR: ^ 551 // CHECK-ERROR: error: invalid operand for instruction 552 // CHECK-ERROR: fcmeq v0.8b, v1.4h, v2.4h 553 // CHECK-ERROR: ^ 554 555 //---------------------------------------------------------------------- 556 // Vector Compare Mask Greater Than Or Equal (Floating Point) 557 // Vector Compare Mask Less Than Or Equal (Floating Point) 558 // FCMLE is alias for FCMGE with operands reversed. 559 //---------------------------------------------------------------------- 560 561 // Mismatched and invalid vector types 562 fcmge v31.4s, v29.2s, v28.4s 563 fcmge v3.8b, v8.2s, v12.2s 564 fcmle v17.8h, v15.2d, v13.2d 565 566 // CHECK-ERROR: error: invalid operand for instruction 567 // CHECK-ERROR: fcmge v31.4s, v29.2s, v28.4s 568 // CHECK-ERROR: ^ 569 // CHECK-ERROR: error: invalid operand for instruction 570 // CHECK-ERROR: fcmge v3.8b, v8.2s, v12.2s 571 // CHECK-ERROR: ^ 572 // CHECK-ERROR: error: invalid operand for instruction 573 // CHECK-ERROR: fcmle v17.8h, v15.2d, v13.2d 574 // CHECK-ERROR: ^ 575 576 //---------------------------------------------------------------------- 577 // Vector Compare Mask Greater Than (Floating Point) 578 // Vector Compare Mask Less Than (Floating Point) 579 // FCMLT is alias for FCMGT with operands reversed. 580 //---------------------------------------------------------------------- 581 582 // Mismatched and invalid vector types 583 fcmgt v0.2d, v31.2s, v16.2s 584 fcmgt v4.4s, v7.4s, v15.4h 585 fcmlt v29.2d, v5.2d, v2.16b 586 587 // CHECK-ERROR: error: invalid operand for instruction 588 // CHECK-ERROR: fcmgt v0.2d, v31.2s, v16.2s 589 // CHECK-ERROR: ^ 590 591 // CHECK-ERROR: error: invalid operand for instruction 592 // CHECK-ERROR: fcmgt v4.4s, v7.4s, v15.4h 593 // CHECK-ERROR: ^ 594 // CHECK-ERROR: error: invalid operand for instruction 595 // CHECK-ERROR: fcmlt v29.2d, v5.2d, v2.16b 596 // CHECK-ERROR: ^ 597 598 //---------------------------------------------------------------------- 599 // Vector Compare Mask Equal to Zero (Integer) 600 //---------------------------------------------------------------------- 601 // Mismatched vector types and invalid imm 602 // Mismatched vector types 603 cmeq c0.2d, v1.2s, #0 604 cmeq c0.2d, v1.2d, #1 605 606 // CHECK-ERROR: error: invalid operand for instruction 607 // CHECK-ERROR: cmeq c0.2d, v1.2s, #0 608 // CHECK-ERROR: ^ 609 // CHECK-ERROR: error: invalid operand for instruction 610 // CHECK-ERROR: cmeq c0.2d, v1.2d, #1 611 // CHECK-ERROR: ^ 612 613 //---------------------------------------------------------------------- 614 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer) 615 //---------------------------------------------------------------------- 616 // Mismatched vector types and invalid imm 617 cmge c0.8h, v1.8b, #0 618 cmge c0.4s, v1.4s, #-1 619 620 // CHECK-ERROR: error: invalid operand for instruction 621 // CHECK-ERROR: cmge c0.8h, v1.8b, #0 622 // CHECK-ERROR: ^ 623 // CHECK-ERROR: error: invalid operand for instruction 624 // CHECK-ERROR: cmge c0.4s, v1.4s, #-1 625 // CHECK-ERROR: ^ 626 627 //---------------------------------------------------------------------- 628 // Vector Compare Mask Greater Than Zero (Signed Integer) 629 //---------------------------------------------------------------------- 630 // Mismatched vector types and invalid imm 631 cmgt c0.8b, v1.4s, #0 632 cmgt c0.8b, v1.8b, #-255 633 634 // CHECK-ERROR: error: invalid operand for instruction 635 // CHECK-ERROR: cmgt c0.8b, v1.4s, #0 636 // CHECK-ERROR: ^ 637 // CHECK-ERROR: error: invalid operand for instruction 638 // CHECK-ERROR: cmgt c0.8b, v1.8b, #-255 639 // CHECK-ERROR: ^ 640 641 //---------------------------------------------------------------------- 642 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer) 643 //---------------------------------------------------------------------- 644 // Mismatched vector types and invalid imm 645 cmle c0.4h, v1.2s, #0 646 cmle c0.16b, v1.16b, #16 647 648 // CHECK-ERROR: error: invalid operand for instruction 649 // CHECK-ERROR: cmle c0.4h, v1.2s, #0 650 // CHECK-ERROR: ^ 651 // CHECK-ERROR: error: invalid operand for instruction 652 // CHECK-ERROR: cmle c0.16b, v1.16b, #16 653 // CHECK-ERROR: ^ 654 //---------------------------------------------------------------------- 655 // Vector Compare Mask Less Than Zero (Signed Integer) 656 //---------------------------------------------------------------------- 657 // Mismatched vector types and invalid imm 658 cmlt c0.8h, v1.16b, #0 659 cmlt c0.8h, v1.8h, #-15 660 661 // CHECK-ERROR: error: invalid operand for instruction 662 // CHECK-ERROR: cmlt c0.8h, v1.16b, #0 663 // CHECK-ERROR: ^ 664 // CHECK-ERROR: error: invalid operand for instruction 665 // CHECK-ERROR: cmlt c0.8h, v1.8h, #-15 666 // CHECK-ERROR: ^ 667 668 //---------------------------------------------------------------------- 669 // Vector Compare Mask Equal to Zero (Floating Point) 670 //---------------------------------------------------------------------- 671 672 // Mismatched and invalid vector types, invalid imm 673 fcmeq v0.2d, v1.2s, #0.0 674 fcmeq v0.16b, v1.16b, #0.0 675 fcmeq v0.8b, v1.4h, #1.0 676 fcmeq v0.8b, v1.4h, #1 677 678 // CHECK-ERROR: error: invalid operand for instruction 679 // CHECK-ERROR: fcmeq v0.2d, v1.2s, #0.0 680 // CHECK-ERROR: ^ 681 // CHECK-ERROR: error: invalid operand for instruction 682 // CHECK-ERROR: fcmeq v0.16b, v1.16b, #0.0 683 // CHECK-ERROR: ^ 684 685 686 // CHECK-ERROR: error: expected floating-point constant #0.0 687 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1.0 688 // CHECK-ERROR: ^ 689 // CHECK-ERROR: error: invalid operand for instruction 690 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1 691 // CHECK-ERROR: ^ 692 693 //---------------------------------------------------------------------- 694 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point) 695 //---------------------------------------------------------------------- 696 697 // Mismatched and invalid vector types, invalid imm 698 fcmge v31.4s, v29.2s, #0.0 699 fcmge v3.8b, v8.2s, #0.0 700 fcmle v17.8h, v15.2d, #-1.0 701 fcmle v17.8h, v15.2d, #2 702 703 // CHECK-ERROR: error: invalid operand for instruction 704 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0 705 // CHECK-ERROR: ^ 706 // CHECK-ERROR: error: invalid operand for instruction 707 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0 708 // CHECK-ERROR: ^ 709 710 711 // CHECK-ERROR: error: expected floating-point constant #0.0 712 // CHECK-ERROR: fcmle v17.8h, v15.2d, #-1.0 713 // CHECK-ERROR: ^ 714 // CHECK-ERROR: error: invalid operand for instruction 715 // CHECK-ERROR: fcmle v17.8h, v15.2d, #2 716 // CHECK-ERROR: ^ 717 718 //---------------------------------------------------------------------- 719 // Vector Compare Mask Greater Than Zero (Floating Point) 720 //---------------------------------------------------------------------- 721 // Mismatched and invalid vector types, invalid imm 722 fcmgt v0.2d, v31.2s, #0.0 723 fcmgt v4.4s, v7.4h, #0.0 724 fcmlt v29.2d, v5.2d, #255.0 725 fcmlt v29.2d, v5.2d, #255 726 727 // CHECK-ERROR: error: invalid operand for instruction 728 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0 729 // CHECK-ERROR: ^ 730 // CHECK-ERROR: error: invalid operand for instruction 731 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0 732 // CHECK-ERROR: ^ 733 734 735 // CHECK-ERROR: error: expected floating-point constant #0.0 736 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255.0 737 // CHECK-ERROR: ^ 738 // CHECK-ERROR: error: invalid operand for instruction 739 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255 740 // CHECK-ERROR: ^ 741 742 //---------------------------------------------------------------------- 743 // Vector Compare Mask Less Than or Equal To Zero (Floating Point) 744 //---------------------------------------------------------------------- 745 // Mismatched and invalid vector types, invalid imm 746 fcmge v31.4s, v29.2s, #0.0 747 fcmge v3.8b, v8.2s, #0.0 748 fcmle v17.2d, v15.2d, #15.0 749 fcmle v17.2d, v15.2d, #15 750 751 // CHECK-ERROR: error: invalid operand for instruction 752 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0 753 // CHECK-ERROR: ^ 754 // CHECK-ERROR: error: invalid operand for instruction 755 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0 756 // CHECK-ERROR: ^ 757 758 759 // CHECK-ERROR: error: expected floating-point constant #0.0 760 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15.0 761 // CHECK-ERROR: ^ 762 // CHECK-ERROR: error: invalid operand for instruction 763 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15 764 // CHECK-ERROR: ^ 765 766 //---------------------------------------------------------------------- 767 // Vector Compare Mask Less Than Zero (Floating Point) 768 //---------------------------------------------------------------------- 769 // Mismatched and invalid vector types, invalid imm 770 fcmgt v0.2d, v31.2s, #0.0 771 fcmgt v4.4s, v7.4h, #0.0 772 fcmlt v29.2d, v5.2d, #16.0 773 fcmlt v29.2d, v5.2d, #2 774 775 // CHECK-ERROR: error: invalid operand for instruction 776 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0 777 // CHECK-ERROR: ^ 778 // CHECK-ERROR: error: invalid operand for instruction 779 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0 780 // CHECK-ERROR: ^ 781 782 783 // CHECK-ERROR: error: expected floating-point constant #0.0 784 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #16.0 785 // CHECK-ERROR: ^ 786 // CHECK-ERROR: error: invalid operand for instruction 787 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #2 788 // CHECK-ERROR: ^ 789 790 /----------------------------------------------------------------------- 791 // Vector Integer Halving Add (Signed) 792 // Vector Integer Halving Add (Unsigned) 793 // Vector Integer Halving Sub (Signed) 794 // Vector Integer Halving Sub (Unsigned) 795 //---------------------------------------------------------------------- 796 // Mismatched and invalid vector types (2d) 797 shadd v0.2d, v1.2d, v2.2d 798 uhadd v4.2s, v5.2s, v5.4h 799 shsub v11.4h, v12.8h, v13.4h 800 uhsub v31.16b, v29.8b, v28.8b 801 802 // CHECK-ERROR: error: invalid operand for instruction 803 // CHECK-ERROR: shadd v0.2d, v1.2d, v2.2d 804 // CHECK-ERROR: ^ 805 // CHECK-ERROR: error: invalid operand for instruction 806 // CHECK-ERROR: uhadd v4.2s, v5.2s, v5.4h 807 // CHECK-ERROR: ^ 808 // CHECK-ERROR: error: invalid operand for instruction 809 // CHECK-ERROR: shsub v11.4h, v12.8h, v13.4h 810 // CHECK-ERROR: ^ 811 // CHECK-ERROR: error: invalid operand for instruction 812 // CHECK-ERROR: uhsub v31.16b, v29.8b, v28.8b 813 // CHECK-ERROR: ^ 814 815 //---------------------------------------------------------------------- 816 // Vector Integer Rouding Halving Add (Signed) 817 // Vector Integer Rouding Halving Add (Unsigned) 818 //---------------------------------------------------------------------- 819 820 // Mismatched and invalid vector types (2d) 821 srhadd v0.2s, v1.2s, v2.2d 822 urhadd v0.16b, v1.16b, v2.8h 823 824 // CHECK-ERROR: error: invalid operand for instruction 825 // CHECK-ERROR: srhadd v0.2s, v1.2s, v2.2d 826 // CHECK-ERROR: ^ 827 // CHECK-ERROR: error: invalid operand for instruction 828 // CHECK-ERROR: urhadd v0.16b, v1.16b, v2.8h 829 // CHECK-ERROR: ^ 830 831 //---------------------------------------------------------------------- 832 // Vector Integer Saturating Add (Signed) 833 // Vector Integer Saturating Add (Unsigned) 834 // Vector Integer Saturating Sub (Signed) 835 // Vector Integer Saturating Sub (Unsigned) 836 //---------------------------------------------------------------------- 837 838 // Mismatched vector types 839 sqadd v0.2s, v1.2s, v2.2d 840 uqadd v31.8h, v1.4h, v2.4h 841 sqsub v10.8h, v1.16b, v2.16b 842 uqsub v31.8b, v1.8b, v2.4s 843 844 // CHECK-ERROR: error: invalid operand for instruction 845 // CHECK-ERROR: sqadd v0.2s, v1.2s, v2.2d 846 // CHECK-ERROR: ^ 847 // CHECK-ERROR: error: invalid operand for instruction 848 // CHECK-ERROR: uqadd v31.8h, v1.4h, v2.4h 849 // CHECK-ERROR: ^ 850 // CHECK-ERROR: error: invalid operand for instruction 851 // CHECK-ERROR: sqsub v10.8h, v1.16b, v2.16b 852 // CHECK-ERROR: ^ 853 // CHECK-ERROR: error: invalid operand for instruction 854 // CHECK-ERROR: uqsub v31.8b, v1.8b, v2.4s 855 // CHECK-ERROR: ^ 856 857 //---------------------------------------------------------------------- 858 // Scalar Integer Saturating Add (Signed) 859 // Scalar Integer Saturating Add (Unsigned) 860 // Scalar Integer Saturating Sub (Signed) 861 // Scalar Integer Saturating Sub (Unsigned) 862 //---------------------------------------------------------------------- 863 864 // Mismatched registers 865 sqadd d0, s31, d2 866 uqadd s0, s1, d2 867 sqsub b0, b2, s18 868 uqsub h1, h2, d2 869 870 // CHECK-ERROR: error: invalid operand for instruction 871 // CHECK-ERROR: sqadd d0, s31, d2 872 // CHECK-ERROR: ^ 873 // CHECK-ERROR: error: invalid operand for instruction 874 // CHECK-ERROR: uqadd s0, s1, d2 875 // CHECK-ERROR: ^ 876 // CHECK-ERROR: error: invalid operand for instruction 877 // CHECK-ERROR: sqsub b0, b2, s18 878 // CHECK-ERROR: ^ 879 // CHECK-ERROR: error: invalid operand for instruction 880 // CHECK-ERROR: uqsub h1, h2, d2 881 // CHECK-ERROR: ^ 882 883 //---------------------------------------------------------------------- 884 // Scalar Integer Saturating Doubling Multiply Half High (Signed) 885 //---------------------------------------------------------------------- 886 887 sqdmulh h10, s11, h12 888 sqdmulh s20, h21, s2 889 890 // CHECK-ERROR: error: invalid operand for instruction 891 // CHECK-ERROR: sqdmulh h10, s11, h12 892 // CHECK-ERROR: ^ 893 // CHECK-ERROR: error: invalid operand for instruction 894 // CHECK-ERROR: sqdmulh s20, h21, s2 895 // CHECK-ERROR: ^ 896 897 //------------------------------------------------------------------------ 898 // Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed) 899 //------------------------------------------------------------------------ 900 901 sqrdmulh h10, s11, h12 902 sqrdmulh s20, h21, s2 903 904 // CHECK-ERROR: error: invalid operand for instruction 905 // CHECK-ERROR: sqrdmulh h10, s11, h12 906 // CHECK-ERROR: ^ 907 // CHECK-ERROR: error: invalid operand for instruction 908 // CHECK-ERROR: sqrdmulh s20, h21, s2 909 // CHECK-ERROR: ^ 910 911 //---------------------------------------------------------------------- 912 // Vector Shift Left (Signed and Unsigned Integer) 913 //---------------------------------------------------------------------- 914 // Mismatched vector types 915 sshl v0.4s, v15.2s, v16.2s 916 ushl v1.16b, v25.16b, v6.8h 917 918 // CHECK-ERROR: error: invalid operand for instruction 919 // CHECK-ERROR: sshl v0.4s, v15.2s, v16.2s 920 // CHECK-ERROR: ^ 921 // CHECK-ERROR: error: invalid operand for instruction 922 // CHECK-ERROR: ushl v1.16b, v25.16b, v6.8h 923 // CHECK-ERROR: ^ 924 925 //---------------------------------------------------------------------- 926 // Vector Saturating Shift Left (Signed and Unsigned Integer) 927 //---------------------------------------------------------------------- 928 // Mismatched vector types 929 sqshl v0.2s, v15.4s, v16.2d 930 uqshl v1.8b, v25.4h, v6.8h 931 932 // CHECK-ERROR: error: invalid operand for instruction 933 // CHECK-ERROR: sqshl v0.2s, v15.4s, v16.2d 934 // CHECK-ERROR: ^ 935 // CHECK-ERROR: error: invalid operand for instruction 936 // CHECK-ERROR: uqshl v1.8b, v25.4h, v6.8h 937 // CHECK-ERROR: ^ 938 939 //---------------------------------------------------------------------- 940 // Vector Rouding Shift Left (Signed and Unsigned Integer) 941 //---------------------------------------------------------------------- 942 // Mismatched vector types 943 srshl v0.8h, v15.8h, v16.16b 944 urshl v1.2d, v25.2d, v6.4s 945 946 // CHECK-ERROR: error: invalid operand for instruction 947 // CHECK-ERROR: srshl v0.8h, v15.8h, v16.16b 948 // CHECK-ERROR: ^ 949 // CHECK-ERROR: error: invalid operand for instruction 950 // CHECK-ERROR: urshl v1.2d, v25.2d, v6.4s 951 // CHECK-ERROR: ^ 952 953 //---------------------------------------------------------------------- 954 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer) 955 //---------------------------------------------------------------------- 956 // Mismatched vector types 957 sqrshl v0.2s, v15.8h, v16.16b 958 uqrshl v1.4h, v25.4h, v6.2d 959 960 // CHECK-ERROR: error: invalid operand for instruction 961 // CHECK-ERROR: sqrshl v0.2s, v15.8h, v16.16b 962 // CHECK-ERROR: ^ 963 // CHECK-ERROR: error: invalid operand for instruction 964 // CHECK-ERROR: uqrshl v1.4h, v25.4h, v6.2d 965 // CHECK-ERROR: ^ 966 967 //---------------------------------------------------------------------- 968 // Scalar Integer Shift Left (Signed, Unsigned) 969 //---------------------------------------------------------------------- 970 // Mismatched and invalid vector types 971 sshl d0, d1, s2 972 ushl b2, b0, b1 973 974 // CHECK-ERROR: error: invalid operand for instruction 975 // CHECK-ERROR: sshl d0, d1, s2 976 // CHECK-ERROR: ^ 977 // CHECK-ERROR: error: invalid operand for instruction 978 // CHECK-ERROR: ushl b2, b0, b1 979 // CHECK-ERROR: ^ 980 981 //---------------------------------------------------------------------- 982 // Scalar Integer Saturating Shift Left (Signed, Unsigned) 983 //---------------------------------------------------------------------- 984 985 // Mismatched vector types 986 sqshl b0, s1, b0 987 uqshl h0, b1, h0 988 sqshl s0, h1, s0 989 uqshl d0, b1, d0 990 991 // CHECK-ERROR: error: invalid operand for instruction 992 // CHECK-ERROR: sqshl b0, s1, b0 993 // CHECK-ERROR: ^ 994 // CHECK-ERROR: error: invalid operand for instruction 995 // CHECK-ERROR: uqshl h0, b1, h0 996 // CHECK-ERROR: ^ 997 // CHECK-ERROR: error: invalid operand for instruction 998 // CHECK-ERROR: sqshl s0, h1, s0 999 // CHECK-ERROR: ^ 1000 // CHECK-ERROR: error: invalid operand for instruction 1001 // CHECK-ERROR: uqshl d0, b1, d0 1002 // CHECK-ERROR: ^ 1003 1004 //---------------------------------------------------------------------- 1005 // Scalar Integer Rouding Shift Left (Signed, Unsigned) 1006 //---------------------------------------------------------------------- 1007 // Mismatched and invalid vector types 1008 srshl h0, h1, h2 1009 urshl s0, s1, s2 1010 1011 // CHECK-ERROR: error: invalid operand for instruction 1012 // CHECK-ERROR: srshl h0, h1, h2 1013 // CHECK-ERROR: ^ 1014 // CHECK-ERROR: error: invalid operand for instruction 1015 // CHECK-ERROR: urshl s0, s1, s2 1016 // CHECK-ERROR: ^ 1017 1018 1019 //---------------------------------------------------------------------- 1020 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned) 1021 //---------------------------------------------------------------------- 1022 1023 // Mismatched vector types 1024 sqrshl b0, b1, s0 1025 uqrshl h0, h1, b0 1026 sqrshl s0, s1, h0 1027 uqrshl d0, d1, b0 1028 1029 // CHECK-ERROR: error: invalid operand for instruction 1030 // CHECK-ERROR: sqrshl b0, b1, s0 1031 // CHECK-ERROR: ^ 1032 // CHECK-ERROR: error: invalid operand for instruction 1033 // CHECK-ERROR: uqrshl h0, h1, b0 1034 // CHECK-ERROR: ^ 1035 // CHECK-ERROR: error: invalid operand for instruction 1036 // CHECK-ERROR: sqrshl s0, s1, h0 1037 // CHECK-ERROR: ^ 1038 // CHECK-ERROR: error: invalid operand for instruction 1039 // CHECK-ERROR: uqrshl d0, d1, b0 1040 // CHECK-ERROR: ^ 1041 1042 1043 //---------------------------------------------------------------------- 1044 // Vector Maximum (Signed, Unsigned) 1045 //---------------------------------------------------------------------- 1046 // Mismatched and invalid vector types 1047 smax v0.2d, v1.2d, v2.2d 1048 umax v0.4h, v1.4h, v2.2s 1049 1050 // CHECK-ERROR: error: invalid operand for instruction 1051 // CHECK-ERROR: smax v0.2d, v1.2d, v2.2d 1052 // CHECK-ERROR: ^ 1053 // CHECK-ERROR: error: invalid operand for instruction 1054 // CHECK-ERROR: umax v0.4h, v1.4h, v2.2s 1055 // CHECK-ERROR: ^ 1056 1057 //---------------------------------------------------------------------- 1058 // Vector Minimum (Signed, Unsigned) 1059 //---------------------------------------------------------------------- 1060 // Mismatched and invalid vector types 1061 smin v0.2d, v1.2d, v2.2d 1062 umin v0.2s, v1.2s, v2.8b 1063 1064 // CHECK-ERROR: error: invalid operand for instruction 1065 // CHECK-ERROR: smin v0.2d, v1.2d, v2.2d 1066 // CHECK-ERROR: ^ 1067 // CHECK-ERROR: error: invalid operand for instruction 1068 // CHECK-ERROR: umin v0.2s, v1.2s, v2.8b 1069 // CHECK-ERROR: ^ 1070 1071 1072 //---------------------------------------------------------------------- 1073 // Vector Maximum (Floating Point) 1074 //---------------------------------------------------------------------- 1075 // Mismatched and invalid vector types 1076 fmax v0.2s, v1.2s, v2.4s 1077 fmax v0.8b, v1.8b, v2.8b 1078 1079 // CHECK-ERROR: error: invalid operand for instruction 1080 // CHECK-ERROR: fmax v0.2s, v1.2s, v2.4s 1081 // CHECK-ERROR: ^ 1082 // CHECK-ERROR: error: invalid operand for instruction 1083 // CHECK-ERROR: fmax v0.8b, v1.8b, v2.8b 1084 // CHECK-ERROR: ^ 1085 //---------------------------------------------------------------------- 1086 // Vector Minimum (Floating Point) 1087 //---------------------------------------------------------------------- 1088 // Mismatched and invalid vector types 1089 fmin v0.4s, v1.4s, v2.2d 1090 fmin v0.8h, v1.8h, v2.8h 1091 1092 // CHECK-ERROR: error: invalid operand for instruction 1093 // CHECK-ERROR: fmin v0.4s, v1.4s, v2.2d 1094 // CHECK-ERROR: ^ 1095 // CHECK-ERROR: error: instruction requires: fullfp16 1096 // CHECK-ERROR: fmin v0.8h, v1.8h, v2.8h 1097 // CHECK-ERROR: ^ 1098 1099 //---------------------------------------------------------------------- 1100 // Vector maxNum (Floating Point) 1101 //---------------------------------------------------------------------- 1102 // Mismatched and invalid vector types 1103 fmaxnm v0.2s, v1.2s, v2.2d 1104 fmaxnm v0.4h, v1.8h, v2.4h 1105 1106 // CHECK-ERROR: error: invalid operand for instruction 1107 // CHECK-ERROR: fmaxnm v0.2s, v1.2s, v2.2d 1108 // CHECK-ERROR: ^ 1109 // CHECK-ERROR: error: invalid operand for instruction 1110 // CHECK-ERROR: fmaxnm v0.4h, v1.8h, v2.4h 1111 // CHECK-ERROR: ^ 1112 1113 //---------------------------------------------------------------------- 1114 // Vector minNum (Floating Point) 1115 //---------------------------------------------------------------------- 1116 // Mismatched and invalid vector types 1117 fminnm v0.4s, v1.2s, v2.4s 1118 fminnm v0.16b, v0.16b, v0.16b 1119 1120 // CHECK-ERROR: error: invalid operand for instruction 1121 // CHECK-ERROR: fminnm v0.4s, v1.2s, v2.4s 1122 // CHECK-ERROR: ^ 1123 // CHECK-ERROR: error: invalid operand for instruction 1124 // CHECK-ERROR: fminnm v0.16b, v0.16b, v0.16b 1125 // CHECK-ERROR: ^ 1126 1127 1128 //---------------------------------------------------------------------- 1129 // Vector Maximum Pairwise (Signed, Unsigned) 1130 //---------------------------------------------------------------------- 1131 // Mismatched and invalid vector types 1132 smaxp v0.2d, v1.2d, v2.2d 1133 umaxp v0.4h, v1.4h, v2.2s 1134 1135 // CHECK-ERROR: error: invalid operand for instruction 1136 // CHECK-ERROR: smaxp v0.2d, v1.2d, v2.2d 1137 // CHECK-ERROR: ^ 1138 // CHECK-ERROR: error: invalid operand for instruction 1139 // CHECK-ERROR: umaxp v0.4h, v1.4h, v2.2s 1140 // CHECK-ERROR: ^ 1141 1142 //---------------------------------------------------------------------- 1143 // Vector Minimum Pairwise (Signed, Unsigned) 1144 //---------------------------------------------------------------------- 1145 // Mismatched and invalid vector types 1146 sminp v0.2d, v1.2d, v2.2d 1147 uminp v0.2s, v1.2s, v2.8b 1148 1149 // CHECK-ERROR: error: invalid operand for instruction 1150 // CHECK-ERROR: sminp v0.2d, v1.2d, v2.2d 1151 // CHECK-ERROR: ^ 1152 // CHECK-ERROR: error: invalid operand for instruction 1153 // CHECK-ERROR: uminp v0.2s, v1.2s, v2.8b 1154 // CHECK-ERROR: ^ 1155 1156 1157 //---------------------------------------------------------------------- 1158 // Vector Maximum Pairwise (Floating Point) 1159 //---------------------------------------------------------------------- 1160 // Mismatched and invalid vector types 1161 fmaxp v0.2s, v1.2s, v2.4s 1162 fmaxp v0.8b, v1.8b, v2.8b 1163 1164 // CHECK-ERROR: error: invalid operand for instruction 1165 // CHECK-ERROR: fmaxp v0.2s, v1.2s, v2.4s 1166 // CHECK-ERROR: ^ 1167 // CHECK-ERROR: error: invalid operand for instruction 1168 // CHECK-ERROR: fmaxp v0.8b, v1.8b, v2.8b 1169 // CHECK-ERROR: ^ 1170 //---------------------------------------------------------------------- 1171 // Vector Minimum Pairwise (Floating Point) 1172 //---------------------------------------------------------------------- 1173 // Mismatched and invalid vector types 1174 fminp v0.4s, v1.4s, v2.2d 1175 fminp v0.8h, v1.8h, v2.8h 1176 1177 // CHECK-ERROR: error: invalid operand for instruction 1178 // CHECK-ERROR: fminp v0.4s, v1.4s, v2.2d 1179 // CHECK-ERROR: ^ 1180 // CHECK-ERROR: error: instruction requires: fullfp16 1181 // CHECK-ERROR: fminp v0.8h, v1.8h, v2.8h 1182 // CHECK-ERROR: ^ 1183 1184 //---------------------------------------------------------------------- 1185 // Vector maxNum Pairwise (Floating Point) 1186 //---------------------------------------------------------------------- 1187 // Mismatched and invalid vector types 1188 fmaxnmp v0.2s, v1.2s, v2.2d 1189 fmaxnmp v0.4h, v1.8h, v2.4h 1190 1191 // CHECK-ERROR: error: invalid operand for instruction 1192 // CHECK-ERROR: fmaxnmp v0.2s, v1.2s, v2.2d 1193 // CHECK-ERROR: ^ 1194 // CHECK-ERROR: error: invalid operand for instruction 1195 // CHECK-ERROR: fmaxnmp v0.4h, v1.8h, v2.4h 1196 // CHECK-ERROR: ^ 1197 1198 //---------------------------------------------------------------------- 1199 // Vector minNum Pairwise (Floating Point) 1200 //---------------------------------------------------------------------- 1201 // Mismatched and invalid vector types 1202 fminnmp v0.4s, v1.2s, v2.4s 1203 fminnmp v0.16b, v0.16b, v0.16b 1204 1205 // CHECK-ERROR: error: invalid operand for instruction 1206 // CHECK-ERROR: fminnmp v0.4s, v1.2s, v2.4s 1207 // CHECK-ERROR: ^ 1208 // CHECK-ERROR: error: invalid operand for instruction 1209 // CHECK-ERROR: fminnmp v0.16b, v0.16b, v0.16b 1210 // CHECK-ERROR: ^ 1211 1212 1213 //---------------------------------------------------------------------- 1214 // Vector Add Pairwise (Integer) 1215 //---------------------------------------------------------------------- 1216 1217 // Mismatched vector types 1218 addp v0.16b, v1.8b, v2.8b 1219 1220 // CHECK-ERROR: error: invalid operand for instruction 1221 // CHECK-ERROR: addp v0.16b, v1.8b, v2.8b 1222 // CHECK-ERROR: ^ 1223 1224 //---------------------------------------------------------------------- 1225 // Vector Add Pairwise (Floating Point) 1226 //---------------------------------------------------------------------- 1227 // Mismatched and invalid vector types 1228 faddp v0.16b, v1.8b, v2.8b 1229 faddp v0.2d, v1.2d, v2.8h 1230 1231 // CHECK-ERROR: error: invalid operand for instruction 1232 // CHECK-ERROR: faddp v0.16b, v1.8b, v2.8b 1233 // CHECK-ERROR: ^ 1234 // CHECK-ERROR: error: invalid operand for instruction 1235 // CHECK-ERROR: faddp v0.2d, v1.2d, v2.8h 1236 // CHECK-ERROR: ^ 1237 1238 1239 //---------------------------------------------------------------------- 1240 // Vector Saturating Doubling Multiply High 1241 //---------------------------------------------------------------------- 1242 // Mismatched and invalid vector types 1243 sqdmulh v2.4h, v25.8h, v3.4h 1244 sqdmulh v12.2d, v5.2d, v13.2d 1245 sqdmulh v3.8b, v1.8b, v30.8b 1246 1247 // CHECK-ERROR: error: invalid operand for instruction 1248 // CHECK-ERROR: sqdmulh v2.4h, v25.8h, v3.4h 1249 // CHECK-ERROR: ^ 1250 // CHECK-ERROR: error: invalid operand for instruction 1251 // CHECK-ERROR: sqdmulh v12.2d, v5.2d, v13.2d 1252 // CHECK-ERROR: ^ 1253 // CHECK-ERROR: error: invalid operand for instruction 1254 // CHECK-ERROR: sqdmulh v3.8b, v1.8b, v30.8b 1255 // CHECK-ERROR: ^ 1256 1257 //---------------------------------------------------------------------- 1258 // Vector Saturating Rouding Doubling Multiply High 1259 //---------------------------------------------------------------------- 1260 // Mismatched and invalid vector types 1261 sqrdmulh v2.2s, v25.4s, v3.4s 1262 sqrdmulh v12.16b, v5.16b, v13.16b 1263 sqrdmulh v3.4h, v1.4h, v30.2d 1264 1265 1266 // CHECK-ERROR: error: invalid operand for instruction 1267 // CHECK-ERROR: sqrdmulh v2.2s, v25.4s, v3.4s 1268 // CHECK-ERROR: ^ 1269 // CHECK-ERROR: error: invalid operand for instruction 1270 // CHECK-ERROR: sqrdmulh v12.16b, v5.16b, v13.16b 1271 // CHECK-ERROR: ^ 1272 // CHECK-ERROR: error: invalid operand for instruction 1273 // CHECK-ERROR: sqrdmulh v3.4h, v1.4h, v30.2d 1274 // CHECK-ERROR: ^ 1275 1276 //---------------------------------------------------------------------- 1277 // Vector Multiply Extended 1278 //---------------------------------------------------------------------- 1279 // Mismatched and invalid vector types 1280 fmulx v21.2s, v5.2s, v13.2d 1281 fmulx v1.4h, v25.4h, v3.4h 1282 1283 // CHECK-ERROR: error: invalid operand for instruction 1284 // CHECK-ERROR: fmulx v21.2s, v5.2s, v13.2d 1285 // CHECK-ERROR: ^ 1286 // CHECK-ERROR: error: instruction requires: fullfp16 1287 // CHECK-ERROR: fmulx v1.4h, v25.4h, v3.4h 1288 // CHECK-ERROR: ^ 1289 1290 //------------------------------------------------------------------------------ 1291 // Vector Shift Left by Immediate 1292 //------------------------------------------------------------------------------ 1293 // Mismatched vector types and out of range 1294 shl v0.4s, v15,2s, #3 1295 shl v0.2d, v17.4s, #3 1296 shl v0.8b, v31.8b, #-1 1297 shl v0.8b, v31.8b, #8 1298 shl v0.4s, v21.4s, #32 1299 shl v0.2d, v1.2d, #64 1300 1301 1302 // CHECK-ERROR: error: unexpected token in argument list 1303 // CHECK-ERROR: shl v0.4s, v15,2s, #3 1304 // CHECK-ERROR: ^ 1305 1306 // CHECK-ERROR: error: invalid operand for instruction 1307 // CHECK-ERROR: shl v0.2d, v17.4s, #3 1308 // CHECK-ERROR: ^ 1309 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1310 // CHECK-ERROR: shl v0.8b, v31.8b, #-1 1311 // CHECK-ERROR: ^ 1312 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1313 // CHECK-ERROR: shl v0.8b, v31.8b, #8 1314 // CHECK-ERROR: ^ 1315 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 1316 // CHECK-ERROR: shl v0.4s, v21.4s, #32 1317 // CHECK-ERROR: ^ 1318 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 1319 // CHECK-ERROR: shl v0.2d, v1.2d, #64 1320 // CHECK-ERROR: ^ 1321 1322 //---------------------------------------------------------------------- 1323 // Vector Shift Left Long by Immediate 1324 //---------------------------------------------------------------------- 1325 // Mismatched vector types 1326 sshll v0.4s, v15.2s, #3 1327 ushll v1.16b, v25.16b, #6 1328 sshll2 v0.2d, v3.8s, #15 1329 ushll2 v1.4s, v25.4s, #7 1330 1331 // Out of range 1332 sshll v0.8h, v1.8b, #-1 1333 sshll v0.8h, v1.8b, #9 1334 ushll v0.4s, v1.4h, #17 1335 ushll v0.2d, v1.2s, #33 1336 sshll2 v0.8h, v1.16b, #9 1337 sshll2 v0.4s, v1.8h, #17 1338 ushll2 v0.2d, v1.4s, #33 1339 1340 // CHECK-ERROR: error: invalid operand for instruction 1341 // CHECK-ERROR: sshll v0.4s, v15.2s, #3 1342 // CHECK-ERROR: ^ 1343 // CHECK-ERROR: error: invalid operand for instruction 1344 // CHECK-ERROR: ushll v1.16b, v25.16b, #6 1345 // CHECK-ERROR: ^ 1346 // CHECK-ERROR: error: invalid operand for instruction 1347 // CHECK-ERROR: sshll2 v0.2d, v3.8s, #15 1348 // CHECK-ERROR: ^ 1349 // CHECK-ERROR: error: invalid operand for instruction 1350 // CHECK-ERROR: ushll2 v1.4s, v25.4s, #7 1351 // CHECK-ERROR: ^ 1352 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1353 // CHECK-ERROR: sshll v0.8h, v1.8b, #-1 1354 // CHECK-ERROR: ^ 1355 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1356 // CHECK-ERROR: sshll v0.8h, v1.8b, #9 1357 // CHECK-ERROR: ^ 1358 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 1359 // CHECK-ERROR: ushll v0.4s, v1.4h, #17 1360 // CHECK-ERROR: ^ 1361 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 1362 // CHECK-ERROR: ushll v0.2d, v1.2s, #33 1363 // CHECK-ERROR: ^ 1364 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1365 // CHECK-ERROR: sshll2 v0.8h, v1.16b, #9 1366 // CHECK-ERROR: ^ 1367 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 1368 // CHECK-ERROR: sshll2 v0.4s, v1.8h, #17 1369 // CHECK-ERROR: ^ 1370 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 1371 // CHECK-ERROR: ushll2 v0.2d, v1.4s, #33 1372 // CHECK-ERROR: ^ 1373 1374 1375 //------------------------------------------------------------------------------ 1376 // Vector shift right by immediate 1377 //------------------------------------------------------------------------------ 1378 sshr v0.8b, v1.8h, #3 1379 sshr v0.4h, v1.4s, #3 1380 sshr v0.2s, v1.2d, #3 1381 sshr v0.16b, v1.16b, #9 1382 sshr v0.8h, v1.8h, #17 1383 sshr v0.4s, v1.4s, #33 1384 sshr v0.2d, v1.2d, #65 1385 1386 // CHECK-ERROR: error: invalid operand for instruction 1387 // CHECK-ERROR: sshr v0.8b, v1.8h, #3 1388 // CHECK-ERROR: ^ 1389 // CHECK-ERROR: error: invalid operand for instruction 1390 // CHECK-ERROR: sshr v0.4h, v1.4s, #3 1391 // CHECK-ERROR: ^ 1392 // CHECK-ERROR: error: invalid operand for instruction 1393 // CHECK-ERROR: sshr v0.2s, v1.2d, #3 1394 // CHECK-ERROR: ^ 1395 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1396 // CHECK-ERROR: sshr v0.16b, v1.16b, #9 1397 // CHECK-ERROR: ^ 1398 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1399 // CHECK-ERROR: sshr v0.8h, v1.8h, #17 1400 // CHECK-ERROR: ^ 1401 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1402 // CHECK-ERROR: sshr v0.4s, v1.4s, #33 1403 // CHECK-ERROR: ^ 1404 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1405 // CHECK-ERROR: sshr v0.2d, v1.2d, #65 1406 // CHECK-ERROR: ^ 1407 1408 //------------------------------------------------------------------------------ 1409 // Vector shift right by immediate 1410 //------------------------------------------------------------------------------ 1411 ushr v0.8b, v1.8h, #3 1412 ushr v0.4h, v1.4s, #3 1413 ushr v0.2s, v1.2d, #3 1414 ushr v0.16b, v1.16b, #9 1415 ushr v0.8h, v1.8h, #17 1416 ushr v0.4s, v1.4s, #33 1417 ushr v0.2d, v1.2d, #65 1418 1419 // CHECK-ERROR: error: invalid operand for instruction 1420 // CHECK-ERROR: ushr v0.8b, v1.8h, #3 1421 // CHECK-ERROR: ^ 1422 // CHECK-ERROR: error: invalid operand for instruction 1423 // CHECK-ERROR: ushr v0.4h, v1.4s, #3 1424 // CHECK-ERROR: ^ 1425 // CHECK-ERROR: error: invalid operand for instruction 1426 // CHECK-ERROR: ushr v0.2s, v1.2d, #3 1427 // CHECK-ERROR: ^ 1428 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1429 // CHECK-ERROR: ushr v0.16b, v1.16b, #9 1430 // CHECK-ERROR: ^ 1431 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1432 // CHECK-ERROR: ushr v0.8h, v1.8h, #17 1433 // CHECK-ERROR: ^ 1434 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1435 // CHECK-ERROR: ushr v0.4s, v1.4s, #33 1436 // CHECK-ERROR: ^ 1437 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1438 // CHECK-ERROR: ushr v0.2d, v1.2d, #65 1439 // CHECK-ERROR: ^ 1440 1441 //------------------------------------------------------------------------------ 1442 // Vector shift right and accumulate by immediate 1443 //------------------------------------------------------------------------------ 1444 ssra v0.8b, v1.8h, #3 1445 ssra v0.4h, v1.4s, #3 1446 ssra v0.2s, v1.2d, #3 1447 ssra v0.16b, v1.16b, #9 1448 ssra v0.8h, v1.8h, #17 1449 ssra v0.4s, v1.4s, #33 1450 ssra v0.2d, v1.2d, #65 1451 1452 // CHECK-ERROR: error: invalid operand for instruction 1453 // CHECK-ERROR: ssra v0.8b, v1.8h, #3 1454 // CHECK-ERROR: ^ 1455 // CHECK-ERROR: error: invalid operand for instruction 1456 // CHECK-ERROR: ssra v0.4h, v1.4s, #3 1457 // CHECK-ERROR: ^ 1458 // CHECK-ERROR: error: invalid operand for instruction 1459 // CHECK-ERROR: ssra v0.2s, v1.2d, #3 1460 // CHECK-ERROR: ^ 1461 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1462 // CHECK-ERROR: ssra v0.16b, v1.16b, #9 1463 // CHECK-ERROR: ^ 1464 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1465 // CHECK-ERROR: ssra v0.8h, v1.8h, #17 1466 // CHECK-ERROR: ^ 1467 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1468 // CHECK-ERROR: ssra v0.4s, v1.4s, #33 1469 // CHECK-ERROR: ^ 1470 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1471 // CHECK-ERROR: ssra v0.2d, v1.2d, #65 1472 // CHECK-ERROR: ^ 1473 1474 //------------------------------------------------------------------------------ 1475 // Vector shift right and accumulate by immediate 1476 //------------------------------------------------------------------------------ 1477 usra v0.8b, v1.8h, #3 1478 usra v0.4h, v1.4s, #3 1479 usra v0.2s, v1.2d, #3 1480 usra v0.16b, v1.16b, #9 1481 usra v0.8h, v1.8h, #17 1482 usra v0.4s, v1.4s, #33 1483 usra v0.2d, v1.2d, #65 1484 1485 // CHECK-ERROR: error: invalid operand for instruction 1486 // CHECK-ERROR: usra v0.8b, v1.8h, #3 1487 // CHECK-ERROR: ^ 1488 // CHECK-ERROR: error: invalid operand for instruction 1489 // CHECK-ERROR: usra v0.4h, v1.4s, #3 1490 // CHECK-ERROR: ^ 1491 // CHECK-ERROR: error: invalid operand for instruction 1492 // CHECK-ERROR: usra v0.2s, v1.2d, #3 1493 // CHECK-ERROR: ^ 1494 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1495 // CHECK-ERROR: usra v0.16b, v1.16b, #9 1496 // CHECK-ERROR: ^ 1497 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1498 // CHECK-ERROR: usra v0.8h, v1.8h, #17 1499 // CHECK-ERROR: ^ 1500 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1501 // CHECK-ERROR: usra v0.4s, v1.4s, #33 1502 // CHECK-ERROR: ^ 1503 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1504 // CHECK-ERROR: usra v0.2d, v1.2d, #65 1505 // CHECK-ERROR: ^ 1506 1507 //------------------------------------------------------------------------------ 1508 // Vector rounding shift right by immediate 1509 //------------------------------------------------------------------------------ 1510 srshr v0.8b, v1.8h, #3 1511 srshr v0.4h, v1.4s, #3 1512 srshr v0.2s, v1.2d, #3 1513 srshr v0.16b, v1.16b, #9 1514 srshr v0.8h, v1.8h, #17 1515 srshr v0.4s, v1.4s, #33 1516 srshr v0.2d, v1.2d, #65 1517 1518 // CHECK-ERROR: error: invalid operand for instruction 1519 // CHECK-ERROR: srshr v0.8b, v1.8h, #3 1520 // CHECK-ERROR: ^ 1521 // CHECK-ERROR: error: invalid operand for instruction 1522 // CHECK-ERROR: srshr v0.4h, v1.4s, #3 1523 // CHECK-ERROR: ^ 1524 // CHECK-ERROR: error: invalid operand for instruction 1525 // CHECK-ERROR: srshr v0.2s, v1.2d, #3 1526 // CHECK-ERROR: ^ 1527 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1528 // CHECK-ERROR: srshr v0.16b, v1.16b, #9 1529 // CHECK-ERROR: ^ 1530 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1531 // CHECK-ERROR: srshr v0.8h, v1.8h, #17 1532 // CHECK-ERROR: ^ 1533 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1534 // CHECK-ERROR: srshr v0.4s, v1.4s, #33 1535 // CHECK-ERROR: ^ 1536 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1537 // CHECK-ERROR: srshr v0.2d, v1.2d, #65 1538 // CHECK-ERROR: ^ 1539 1540 //------------------------------------------------------------------------------ 1541 // Vecotr rounding shift right by immediate 1542 //------------------------------------------------------------------------------ 1543 urshr v0.8b, v1.8h, #3 1544 urshr v0.4h, v1.4s, #3 1545 urshr v0.2s, v1.2d, #3 1546 urshr v0.16b, v1.16b, #9 1547 urshr v0.8h, v1.8h, #17 1548 urshr v0.4s, v1.4s, #33 1549 urshr v0.2d, v1.2d, #65 1550 1551 // CHECK-ERROR: error: invalid operand for instruction 1552 // CHECK-ERROR: urshr v0.8b, v1.8h, #3 1553 // CHECK-ERROR: ^ 1554 // CHECK-ERROR: error: invalid operand for instruction 1555 // CHECK-ERROR: urshr v0.4h, v1.4s, #3 1556 // CHECK-ERROR: ^ 1557 // CHECK-ERROR: error: invalid operand for instruction 1558 // CHECK-ERROR: urshr v0.2s, v1.2d, #3 1559 // CHECK-ERROR: ^ 1560 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1561 // CHECK-ERROR: urshr v0.16b, v1.16b, #9 1562 // CHECK-ERROR: ^ 1563 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1564 // CHECK-ERROR: urshr v0.8h, v1.8h, #17 1565 // CHECK-ERROR: ^ 1566 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1567 // CHECK-ERROR: urshr v0.4s, v1.4s, #33 1568 // CHECK-ERROR: ^ 1569 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1570 // CHECK-ERROR: urshr v0.2d, v1.2d, #65 1571 // CHECK-ERROR: ^ 1572 1573 //------------------------------------------------------------------------------ 1574 // Vector rounding shift right and accumulate by immediate 1575 //------------------------------------------------------------------------------ 1576 srsra v0.8b, v1.8h, #3 1577 srsra v0.4h, v1.4s, #3 1578 srsra v0.2s, v1.2d, #3 1579 srsra v0.16b, v1.16b, #9 1580 srsra v0.8h, v1.8h, #17 1581 srsra v0.4s, v1.4s, #33 1582 srsra v0.2d, v1.2d, #65 1583 1584 // CHECK-ERROR: error: invalid operand for instruction 1585 // CHECK-ERROR: srsra v0.8b, v1.8h, #3 1586 // CHECK-ERROR: ^ 1587 // CHECK-ERROR: error: invalid operand for instruction 1588 // CHECK-ERROR: srsra v0.4h, v1.4s, #3 1589 // CHECK-ERROR: ^ 1590 // CHECK-ERROR: error: invalid operand for instruction 1591 // CHECK-ERROR: srsra v0.2s, v1.2d, #3 1592 // CHECK-ERROR: ^ 1593 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1594 // CHECK-ERROR: srsra v0.16b, v1.16b, #9 1595 // CHECK-ERROR: ^ 1596 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1597 // CHECK-ERROR: srsra v0.8h, v1.8h, #17 1598 // CHECK-ERROR: ^ 1599 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1600 // CHECK-ERROR: srsra v0.4s, v1.4s, #33 1601 // CHECK-ERROR: ^ 1602 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1603 // CHECK-ERROR: srsra v0.2d, v1.2d, #65 1604 // CHECK-ERROR: ^ 1605 1606 //------------------------------------------------------------------------------ 1607 // Vector rounding shift right and accumulate by immediate 1608 //------------------------------------------------------------------------------ 1609 ursra v0.8b, v1.8h, #3 1610 ursra v0.4h, v1.4s, #3 1611 ursra v0.2s, v1.2d, #3 1612 ursra v0.16b, v1.16b, #9 1613 ursra v0.8h, v1.8h, #17 1614 ursra v0.4s, v1.4s, #33 1615 ursra v0.2d, v1.2d, #65 1616 1617 // CHECK-ERROR: error: invalid operand for instruction 1618 // CHECK-ERROR: ursra v0.8b, v1.8h, #3 1619 // CHECK-ERROR: ^ 1620 // CHECK-ERROR: error: invalid operand for instruction 1621 // CHECK-ERROR: ursra v0.4h, v1.4s, #3 1622 // CHECK-ERROR: ^ 1623 // CHECK-ERROR: error: invalid operand for instruction 1624 // CHECK-ERROR: ursra v0.2s, v1.2d, #3 1625 // CHECK-ERROR: ^ 1626 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1627 // CHECK-ERROR: ursra v0.16b, v1.16b, #9 1628 // CHECK-ERROR: ^ 1629 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1630 // CHECK-ERROR: ursra v0.8h, v1.8h, #17 1631 // CHECK-ERROR: ^ 1632 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1633 // CHECK-ERROR: ursra v0.4s, v1.4s, #33 1634 // CHECK-ERROR: ^ 1635 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1636 // CHECK-ERROR: ursra v0.2d, v1.2d, #65 1637 // CHECK-ERROR: ^ 1638 1639 //------------------------------------------------------------------------------ 1640 // Vector shift right and insert by immediate 1641 //------------------------------------------------------------------------------ 1642 sri v0.8b, v1.8h, #3 1643 sri v0.4h, v1.4s, #3 1644 sri v0.2s, v1.2d, #3 1645 sri v0.16b, v1.16b, #9 1646 sri v0.8h, v1.8h, #17 1647 sri v0.4s, v1.4s, #33 1648 sri v0.2d, v1.2d, #65 1649 1650 // CHECK-ERROR: error: invalid operand for instruction 1651 // CHECK-ERROR: sri v0.8b, v1.8h, #3 1652 // CHECK-ERROR: ^ 1653 // CHECK-ERROR: error: invalid operand for instruction 1654 // CHECK-ERROR: sri v0.4h, v1.4s, #3 1655 // CHECK-ERROR: ^ 1656 // CHECK-ERROR: error: invalid operand for instruction 1657 // CHECK-ERROR: sri v0.2s, v1.2d, #3 1658 // CHECK-ERROR: ^ 1659 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1660 // CHECK-ERROR: sri v0.16b, v1.16b, #9 1661 // CHECK-ERROR: ^ 1662 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1663 // CHECK-ERROR: sri v0.8h, v1.8h, #17 1664 // CHECK-ERROR: ^ 1665 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1666 // CHECK-ERROR: sri v0.4s, v1.4s, #33 1667 // CHECK-ERROR: ^ 1668 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 1669 // CHECK-ERROR: sri v0.2d, v1.2d, #65 1670 // CHECK-ERROR: ^ 1671 1672 //------------------------------------------------------------------------------ 1673 // Vector shift left and insert by immediate 1674 //------------------------------------------------------------------------------ 1675 sli v0.8b, v1.8h, #3 1676 sli v0.4h, v1.4s, #3 1677 sli v0.2s, v1.2d, #3 1678 sli v0.16b, v1.16b, #8 1679 sli v0.8h, v1.8h, #16 1680 sli v0.4s, v1.4s, #32 1681 sli v0.2d, v1.2d, #64 1682 1683 // CHECK-ERROR: error: invalid operand for instruction 1684 // CHECK-ERROR: sli v0.8b, v1.8h, #3 1685 // CHECK-ERROR: ^ 1686 // CHECK-ERROR: error: invalid operand for instruction 1687 // CHECK-ERROR: sli v0.4h, v1.4s, #3 1688 // CHECK-ERROR: ^ 1689 // CHECK-ERROR: error: invalid operand for instruction 1690 // CHECK-ERROR: sli v0.2s, v1.2d, #3 1691 // CHECK-ERROR: ^ 1692 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1693 // CHECK-ERROR: sli v0.16b, v1.16b, #8 1694 // CHECK-ERROR: ^ 1695 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 1696 // CHECK-ERROR: sli v0.8h, v1.8h, #16 1697 // CHECK-ERROR: ^ 1698 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 1699 // CHECK-ERROR: sli v0.4s, v1.4s, #32 1700 // CHECK-ERROR: ^ 1701 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 1702 // CHECK-ERROR: sli v0.2d, v1.2d, #64 1703 // CHECK-ERROR: ^ 1704 1705 //------------------------------------------------------------------------------ 1706 // Vector saturating shift left unsigned by immediate 1707 //------------------------------------------------------------------------------ 1708 sqshlu v0.8b, v1.8h, #3 1709 sqshlu v0.4h, v1.4s, #3 1710 sqshlu v0.2s, v1.2d, #3 1711 sqshlu v0.16b, v1.16b, #8 1712 sqshlu v0.8h, v1.8h, #16 1713 sqshlu v0.4s, v1.4s, #32 1714 sqshlu v0.2d, v1.2d, #64 1715 1716 // CHECK-ERROR: error: invalid operand for instruction 1717 // CHECK-ERROR: sqshlu v0.8b, v1.8h, #3 1718 // CHECK-ERROR: ^ 1719 // CHECK-ERROR: error: invalid operand for instruction 1720 // CHECK-ERROR: sqshlu v0.4h, v1.4s, #3 1721 // CHECK-ERROR: ^ 1722 // CHECK-ERROR: error: invalid operand for instruction 1723 // CHECK-ERROR: sqshlu v0.2s, v1.2d, #3 1724 // CHECK-ERROR: ^ 1725 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1726 // CHECK-ERROR: sqshlu v0.16b, v1.16b, #8 1727 // CHECK-ERROR: ^ 1728 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 1729 // CHECK-ERROR: sqshlu v0.8h, v1.8h, #16 1730 // CHECK-ERROR: ^ 1731 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 1732 // CHECK-ERROR: sqshlu v0.4s, v1.4s, #32 1733 // CHECK-ERROR: ^ 1734 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 1735 // CHECK-ERROR: sqshlu v0.2d, v1.2d, #64 1736 // CHECK-ERROR: ^ 1737 1738 //------------------------------------------------------------------------------ 1739 // Vector saturating shift left by immediate 1740 //------------------------------------------------------------------------------ 1741 sqshl v0.8b, v1.8h, #3 1742 sqshl v0.4h, v1.4s, #3 1743 sqshl v0.2s, v1.2d, #3 1744 sqshl v0.16b, v1.16b, #8 1745 sqshl v0.8h, v1.8h, #16 1746 sqshl v0.4s, v1.4s, #32 1747 sqshl v0.2d, v1.2d, #64 1748 1749 // CHECK-ERROR: error: invalid operand for instruction 1750 // CHECK-ERROR: sqshl v0.8b, v1.8h, #3 1751 // CHECK-ERROR: ^ 1752 // CHECK-ERROR: error: invalid operand for instruction 1753 // CHECK-ERROR: sqshl v0.4h, v1.4s, #3 1754 // CHECK-ERROR: ^ 1755 // CHECK-ERROR: error: invalid operand for instruction 1756 // CHECK-ERROR: sqshl v0.2s, v1.2d, #3 1757 // CHECK-ERROR: ^ 1758 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1759 // CHECK-ERROR: sqshl v0.16b, v1.16b, #8 1760 // CHECK-ERROR: ^ 1761 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 1762 // CHECK-ERROR: sqshl v0.8h, v1.8h, #16 1763 // CHECK-ERROR: ^ 1764 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 1765 // CHECK-ERROR: sqshl v0.4s, v1.4s, #32 1766 // CHECK-ERROR: ^ 1767 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 1768 // CHECK-ERROR: sqshl v0.2d, v1.2d, #64 1769 // CHECK-ERROR: ^ 1770 1771 //------------------------------------------------------------------------------ 1772 // Vector saturating shift left by immediate 1773 //------------------------------------------------------------------------------ 1774 uqshl v0.8b, v1.8h, #3 1775 uqshl v0.4h, v1.4s, #3 1776 uqshl v0.2s, v1.2d, #3 1777 uqshl v0.16b, v1.16b, #8 1778 uqshl v0.8h, v1.8h, #16 1779 uqshl v0.4s, v1.4s, #32 1780 uqshl v0.2d, v1.2d, #64 1781 1782 // CHECK-ERROR: error: invalid operand for instruction 1783 // CHECK-ERROR: uqshl v0.8b, v1.8h, #3 1784 // CHECK-ERROR: ^ 1785 // CHECK-ERROR: error: invalid operand for instruction 1786 // CHECK-ERROR: uqshl v0.4h, v1.4s, #3 1787 // CHECK-ERROR: ^ 1788 // CHECK-ERROR: error: invalid operand for instruction 1789 // CHECK-ERROR: uqshl v0.2s, v1.2d, #3 1790 // CHECK-ERROR: ^ 1791 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 1792 // CHECK-ERROR: uqshl v0.16b, v1.16b, #8 1793 // CHECK-ERROR: ^ 1794 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 1795 // CHECK-ERROR: uqshl v0.8h, v1.8h, #16 1796 // CHECK-ERROR: ^ 1797 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 1798 // CHECK-ERROR: uqshl v0.4s, v1.4s, #32 1799 // CHECK-ERROR: ^ 1800 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 1801 // CHECK-ERROR: uqshl v0.2d, v1.2d, #64 1802 // CHECK-ERROR: ^ 1803 1804 //------------------------------------------------------------------------------ 1805 // Vector shift right narrow by immediate 1806 //------------------------------------------------------------------------------ 1807 shrn v0.8b, v1.8b, #3 1808 shrn v0.4h, v1.4h, #3 1809 shrn v0.2s, v1.2s, #3 1810 shrn2 v0.16b, v1.8h, #17 1811 shrn2 v0.8h, v1.4s, #33 1812 shrn2 v0.4s, v1.2d, #65 1813 1814 // CHECK-ERROR: error: invalid operand for instruction 1815 // CHECK-ERROR: shrn v0.8b, v1.8b, #3 1816 // CHECK-ERROR: ^ 1817 // CHECK-ERROR: error: invalid operand for instruction 1818 // CHECK-ERROR: shrn v0.4h, v1.4h, #3 1819 // CHECK-ERROR: ^ 1820 // CHECK-ERROR: error: invalid operand for instruction 1821 // CHECK-ERROR: shrn v0.2s, v1.2s, #3 1822 // CHECK-ERROR: ^ 1823 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1824 // CHECK-ERROR: shrn2 v0.16b, v1.8h, #17 1825 // CHECK-ERROR: ^ 1826 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1827 // CHECK-ERROR: shrn2 v0.8h, v1.4s, #33 1828 // CHECK-ERROR: ^ 1829 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1830 // CHECK-ERROR: shrn2 v0.4s, v1.2d, #65 1831 // CHECK-ERROR: ^ 1832 1833 //------------------------------------------------------------------------------ 1834 // Vector saturating shift right unsigned narrow by immediate 1835 //------------------------------------------------------------------------------ 1836 sqshrun v0.8b, v1.8b, #3 1837 sqshrun v0.4h, v1.4h, #3 1838 sqshrun v0.2s, v1.2s, #3 1839 sqshrun2 v0.16b, v1.8h, #17 1840 sqshrun2 v0.8h, v1.4s, #33 1841 sqshrun2 v0.4s, v1.2d, #65 1842 1843 // CHECK-ERROR: error: invalid operand for instruction 1844 // CHECK-ERROR: sqshrun v0.8b, v1.8b, #3 1845 // CHECK-ERROR: ^ 1846 // CHECK-ERROR: error: invalid operand for instruction 1847 // CHECK-ERROR: sqshrun v0.4h, v1.4h, #3 1848 // CHECK-ERROR: ^ 1849 // CHECK-ERROR: error: invalid operand for instruction 1850 // CHECK-ERROR: sqshrun v0.2s, v1.2s, #3 1851 // CHECK-ERROR: ^ 1852 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1853 // CHECK-ERROR: sqshrun2 v0.16b, v1.8h, #17 1854 // CHECK-ERROR: ^ 1855 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1856 // CHECK-ERROR: sqshrun2 v0.8h, v1.4s, #33 1857 // CHECK-ERROR: ^ 1858 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1859 // CHECK-ERROR: sqshrun2 v0.4s, v1.2d, #65 1860 // CHECK-ERROR: ^ 1861 1862 //------------------------------------------------------------------------------ 1863 // Vector rounding shift right narrow by immediate 1864 //------------------------------------------------------------------------------ 1865 rshrn v0.8b, v1.8b, #3 1866 rshrn v0.4h, v1.4h, #3 1867 rshrn v0.2s, v1.2s, #3 1868 rshrn2 v0.16b, v1.8h, #17 1869 rshrn2 v0.8h, v1.4s, #33 1870 rshrn2 v0.4s, v1.2d, #65 1871 1872 // CHECK-ERROR: error: invalid operand for instruction 1873 // CHECK-ERROR: rshrn v0.8b, v1.8b, #3 1874 // CHECK-ERROR: ^ 1875 // CHECK-ERROR: error: invalid operand for instruction 1876 // CHECK-ERROR: rshrn v0.4h, v1.4h, #3 1877 // CHECK-ERROR: ^ 1878 // CHECK-ERROR: error: invalid operand for instruction 1879 // CHECK-ERROR: rshrn v0.2s, v1.2s, #3 1880 // CHECK-ERROR: ^ 1881 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1882 // CHECK-ERROR: rshrn2 v0.16b, v1.8h, #17 1883 // CHECK-ERROR: ^ 1884 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1885 // CHECK-ERROR: rshrn2 v0.8h, v1.4s, #33 1886 // CHECK-ERROR: ^ 1887 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1888 // CHECK-ERROR: rshrn2 v0.4s, v1.2d, #65 1889 // CHECK-ERROR: ^ 1890 1891 //------------------------------------------------------------------------------ 1892 // Vector saturating shift right rounded unsigned narrow by immediate 1893 //------------------------------------------------------------------------------ 1894 sqrshrun v0.8b, v1.8b, #3 1895 sqrshrun v0.4h, v1.4h, #3 1896 sqrshrun v0.2s, v1.2s, #3 1897 sqrshrun2 v0.16b, v1.8h, #17 1898 sqrshrun2 v0.8h, v1.4s, #33 1899 sqrshrun2 v0.4s, v1.2d, #65 1900 1901 // CHECK-ERROR: error: invalid operand for instruction 1902 // CHECK-ERROR: sqrshrun v0.8b, v1.8b, #3 1903 // CHECK-ERROR: ^ 1904 // CHECK-ERROR: error: invalid operand for instruction 1905 // CHECK-ERROR: sqrshrun v0.4h, v1.4h, #3 1906 // CHECK-ERROR: ^ 1907 // CHECK-ERROR: error: invalid operand for instruction 1908 // CHECK-ERROR: sqrshrun v0.2s, v1.2s, #3 1909 // CHECK-ERROR: ^ 1910 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1911 // CHECK-ERROR: sqrshrun2 v0.16b, v1.8h, #17 1912 // CHECK-ERROR: ^ 1913 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1914 // CHECK-ERROR: sqrshrun2 v0.8h, v1.4s, #33 1915 // CHECK-ERROR: ^ 1916 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1917 // CHECK-ERROR: sqrshrun2 v0.4s, v1.2d, #65 1918 // CHECK-ERROR: ^ 1919 1920 //------------------------------------------------------------------------------ 1921 // Vector saturating shift right narrow by immediate 1922 //------------------------------------------------------------------------------ 1923 sqshrn v0.8b, v1.8b, #3 1924 sqshrn v0.4h, v1.4h, #3 1925 sqshrn v0.2s, v1.2s, #3 1926 sqshrn2 v0.16b, v1.8h, #17 1927 sqshrn2 v0.8h, v1.4s, #33 1928 sqshrn2 v0.4s, v1.2d, #65 1929 1930 // CHECK-ERROR: error: invalid operand for instruction 1931 // CHECK-ERROR: sqshrn v0.8b, v1.8b, #3 1932 // CHECK-ERROR: ^ 1933 // CHECK-ERROR: error: invalid operand for instruction 1934 // CHECK-ERROR: sqshrn v0.4h, v1.4h, #3 1935 // CHECK-ERROR: ^ 1936 // CHECK-ERROR: error: invalid operand for instruction 1937 // CHECK-ERROR: sqshrn v0.2s, v1.2s, #3 1938 // CHECK-ERROR: ^ 1939 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1940 // CHECK-ERROR: sqshrn2 v0.16b, v1.8h, #17 1941 // CHECK-ERROR: ^ 1942 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1943 // CHECK-ERROR: sqshrn2 v0.8h, v1.4s, #33 1944 // CHECK-ERROR: ^ 1945 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1946 // CHECK-ERROR: sqshrn2 v0.4s, v1.2d, #65 1947 // CHECK-ERROR: ^ 1948 1949 //------------------------------------------------------------------------------ 1950 // Vector saturating shift right narrow by immediate 1951 //------------------------------------------------------------------------------ 1952 uqshrn v0.8b, v1.8b, #3 1953 uqshrn v0.4h, v1.4h, #3 1954 uqshrn v0.2s, v1.2s, #3 1955 uqshrn2 v0.16b, v1.8h, #17 1956 uqshrn2 v0.8h, v1.4s, #33 1957 uqshrn2 v0.4s, v1.2d, #65 1958 1959 // CHECK-ERROR: error: invalid operand for instruction 1960 // CHECK-ERROR: uqshrn v0.8b, v1.8b, #3 1961 // CHECK-ERROR: ^ 1962 // CHECK-ERROR: error: invalid operand for instruction 1963 // CHECK-ERROR: uqshrn v0.4h, v1.4h, #3 1964 // CHECK-ERROR: ^ 1965 // CHECK-ERROR: error: invalid operand for instruction 1966 // CHECK-ERROR: uqshrn v0.2s, v1.2s, #3 1967 // CHECK-ERROR: ^ 1968 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1969 // CHECK-ERROR: uqshrn2 v0.16b, v1.8h, #17 1970 // CHECK-ERROR: ^ 1971 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 1972 // CHECK-ERROR: uqshrn2 v0.8h, v1.4s, #33 1973 // CHECK-ERROR: ^ 1974 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 1975 // CHECK-ERROR: uqshrn2 v0.4s, v1.2d, #65 1976 // CHECK-ERROR: ^ 1977 1978 //------------------------------------------------------------------------------ 1979 // Vector saturating shift right rounded narrow by immediate 1980 //------------------------------------------------------------------------------ 1981 sqrshrn v0.8b, v1.8b, #3 1982 sqrshrn v0.4h, v1.4h, #3 1983 sqrshrn v0.2s, v1.2s, #3 1984 sqrshrn2 v0.16b, v1.8h, #17 1985 sqrshrn2 v0.8h, v1.4s, #33 1986 sqrshrn2 v0.4s, v1.2d, #65 1987 1988 // CHECK-ERROR: error: invalid operand for instruction 1989 // CHECK-ERROR: sqrshrn v0.8b, v1.8b, #3 1990 // CHECK-ERROR: ^ 1991 // CHECK-ERROR: error: invalid operand for instruction 1992 // CHECK-ERROR: sqrshrn v0.4h, v1.4h, #3 1993 // CHECK-ERROR: ^ 1994 // CHECK-ERROR: error: invalid operand for instruction 1995 // CHECK-ERROR: sqrshrn v0.2s, v1.2s, #3 1996 // CHECK-ERROR: ^ 1997 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 1998 // CHECK-ERROR: sqrshrn2 v0.16b, v1.8h, #17 1999 // CHECK-ERROR: ^ 2000 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 2001 // CHECK-ERROR: sqrshrn2 v0.8h, v1.4s, #33 2002 // CHECK-ERROR: ^ 2003 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 2004 // CHECK-ERROR: sqrshrn2 v0.4s, v1.2d, #65 2005 // CHECK-ERROR: ^ 2006 2007 //------------------------------------------------------------------------------ 2008 // Vector saturating shift right rounded narrow by immediate 2009 //------------------------------------------------------------------------------ 2010 uqrshrn v0.8b, v1.8b, #3 2011 uqrshrn v0.4h, v1.4h, #3 2012 uqrshrn v0.2s, v1.2s, #3 2013 uqrshrn2 v0.16b, v1.8h, #17 2014 uqrshrn2 v0.8h, v1.4s, #33 2015 uqrshrn2 v0.4s, v1.2d, #65 2016 2017 // CHECK-ERROR: error: invalid operand for instruction 2018 // CHECK-ERROR: uqrshrn v0.8b, v1.8b, #3 2019 // CHECK-ERROR: ^ 2020 // CHECK-ERROR: error: invalid operand for instruction 2021 // CHECK-ERROR: uqrshrn v0.4h, v1.4h, #3 2022 // CHECK-ERROR: ^ 2023 // CHECK-ERROR: error: invalid operand for instruction 2024 // CHECK-ERROR: uqrshrn v0.2s, v1.2s, #3 2025 // CHECK-ERROR: ^ 2026 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 2027 // CHECK-ERROR: uqrshrn2 v0.16b, v1.8h, #17 2028 // CHECK-ERROR: ^ 2029 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 2030 // CHECK-ERROR: uqrshrn2 v0.8h, v1.4s, #33 2031 // CHECK-ERROR: ^ 2032 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 2033 // CHECK-ERROR: uqrshrn2 v0.4s, v1.2d, #65 2034 // CHECK-ERROR: ^ 2035 2036 //------------------------------------------------------------------------------ 2037 // Fixed-point convert to floating-point 2038 //------------------------------------------------------------------------------ 2039 scvtf v0.2s, v1.2d, #3 2040 scvtf v0.4s, v1.4h, #3 2041 scvtf v0.2d, v1.2s, #3 2042 ucvtf v0.2s, v1.2s, #33 2043 ucvtf v0.4s, v1.4s, #33 2044 ucvtf v0.2d, v1.2d, #65 2045 2046 // CHECK-ERROR: error: invalid operand for instruction 2047 // CHECK-ERROR: scvtf v0.2s, v1.2d, #3 2048 // CHECK-ERROR: ^ 2049 // CHECK-ERROR: error: invalid operand for instruction 2050 // CHECK-ERROR: scvtf v0.4s, v1.4h, #3 2051 // CHECK-ERROR: ^ 2052 // CHECK-ERROR: error: invalid operand for instruction 2053 // CHECK-ERROR: scvtf v0.2d, v1.2s, #3 2054 // CHECK-ERROR: ^ 2055 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 2056 // CHECK-ERROR: ucvtf v0.2s, v1.2s, #33 2057 // CHECK-ERROR: ^ 2058 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 2059 // CHECK-ERROR: ucvtf v0.4s, v1.4s, #33 2060 // CHECK-ERROR: ^ 2061 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 2062 // CHECK-ERROR: ucvtf v0.2d, v1.2d, #65 2063 // CHECK-ERROR: ^ 2064 2065 //------------------------------------------------------------------------------ 2066 // Floating-point convert to fixed-point 2067 //------------------------------------------------------------------------------ 2068 fcvtzs v0.2s, v1.2d, #3 2069 fcvtzs v0.4s, v1.4h, #3 2070 fcvtzs v0.2d, v1.2s, #3 2071 fcvtzu v0.2s, v1.2s, #33 2072 fcvtzu v0.4s, v1.4s, #33 2073 fcvtzu v0.2d, v1.2d, #65 2074 2075 // CHECK-ERROR: error: invalid operand for instruction 2076 // CHECK-ERROR: fcvtzs v0.2s, v1.2d, #3 2077 // CHECK-ERROR: ^ 2078 // CHECK-ERROR: error: invalid operand for instruction 2079 // CHECK-ERROR: fcvtzs v0.4s, v1.4h, #3 2080 // CHECK-ERROR: ^ 2081 // CHECK-ERROR: error: invalid operand for instruction 2082 // CHECK-ERROR: fcvtzs v0.2d, v1.2s, #3 2083 // CHECK-ERROR: ^ 2084 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 2085 // CHECK-ERROR: fcvtzu v0.2s, v1.2s, #33 2086 // CHECK-ERROR: ^ 2087 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 2088 // CHECK-ERROR: fcvtzu v0.4s, v1.4s, #33 2089 // CHECK-ERROR: ^ 2090 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 2091 // CHECK-ERROR: fcvtzu v0.2d, v1.2d, #65 2092 // CHECK-ERROR: ^ 2093 2094 //---------------------------------------------------------------------- 2095 // Vector operation on 3 operands with different types 2096 //---------------------------------------------------------------------- 2097 2098 // Mismatched and invalid vector types 2099 saddl v0.8h, v1.8h, v2.8b 2100 saddl v0.4s, v1.4s, v2.4h 2101 saddl v0.2d, v1.2d, v2.2s 2102 2103 // CHECK-ERROR: error: invalid operand for instruction 2104 // CHECK-ERROR: saddl v0.8h, v1.8h, v2.8b 2105 // CHECK-ERROR: ^ 2106 // CHECK-ERROR: error: invalid operand for instruction 2107 // CHECK-ERROR: saddl v0.4s, v1.4s, v2.4h 2108 // CHECK-ERROR: ^ 2109 // CHECK-ERROR: error: invalid operand for instruction 2110 // CHECK-ERROR: saddl v0.2d, v1.2d, v2.2s 2111 // CHECK-ERROR: ^ 2112 2113 saddl2 v0.4s, v1.8s, v2.8h 2114 saddl2 v0.8h, v1.16h, v2.16b 2115 saddl2 v0.2d, v1.4d, v2.4s 2116 2117 // CHECK-ERROR: error: invalid operand for instruction 2118 // CHECK-ERROR: saddl2 v0.4s, v1.8s, v2.8h 2119 // CHECK-ERROR: ^ 2120 // CHECK-ERROR: error: invalid operand for instruction 2121 // CHECK-ERROR: saddl2 v0.8h, v1.16h, v2.16b 2122 // CHECK-ERROR: ^ 2123 // CHECK-ERROR: error: invalid operand for instruction 2124 // CHECK-ERROR: saddl2 v0.2d, v1.4d, v2.4s 2125 // CHECK-ERROR: ^ 2126 2127 uaddl v0.8h, v1.8h, v2.8b 2128 uaddl v0.4s, v1.4s, v2.4h 2129 uaddl v0.2d, v1.2d, v2.2s 2130 2131 // CHECK-ERROR: error: invalid operand for instruction 2132 // CHECK-ERROR: uaddl v0.8h, v1.8h, v2.8b 2133 // CHECK-ERROR: ^ 2134 // CHECK-ERROR: error: invalid operand for instruction 2135 // CHECK-ERROR: uaddl v0.4s, v1.4s, v2.4h 2136 // CHECK-ERROR: ^ 2137 // CHECK-ERROR: error: invalid operand for instruction 2138 // CHECK-ERROR: uaddl v0.2d, v1.2d, v2.2s 2139 // CHECK-ERROR: ^ 2140 2141 uaddl2 v0.8h, v1.16h, v2.16b 2142 uaddl2 v0.4s, v1.8s, v2.8h 2143 uaddl2 v0.2d, v1.4d, v2.4s 2144 2145 // CHECK-ERROR: error: invalid operand for instruction 2146 // CHECK-ERROR: uaddl2 v0.8h, v1.16h, v2.16b 2147 // CHECK-ERROR: ^ 2148 // CHECK-ERROR: error: invalid operand for instruction 2149 // CHECK-ERROR: uaddl2 v0.4s, v1.8s, v2.8h 2150 // CHECK-ERROR: ^ 2151 // CHECK-ERROR: error: invalid operand for instruction 2152 // CHECK-ERROR: uaddl2 v0.2d, v1.4d, v2.4s 2153 // CHECK-ERROR: ^ 2154 2155 ssubl v0.8h, v1.8h, v2.8b 2156 ssubl v0.4s, v1.4s, v2.4h 2157 ssubl v0.2d, v1.2d, v2.2s 2158 2159 // CHECK-ERROR: error: invalid operand for instruction 2160 // CHECK-ERROR: ssubl v0.8h, v1.8h, v2.8b 2161 // CHECK-ERROR: ^ 2162 // CHECK-ERROR: error: invalid operand for instruction 2163 // CHECK-ERROR: ssubl v0.4s, v1.4s, v2.4h 2164 // CHECK-ERROR: ^ 2165 // CHECK-ERROR: error: invalid operand for instruction 2166 // CHECK-ERROR: ssubl v0.2d, v1.2d, v2.2s 2167 // CHECK-ERROR: ^ 2168 2169 ssubl2 v0.8h, v1.16h, v2.16b 2170 ssubl2 v0.4s, v1.8s, v2.8h 2171 ssubl2 v0.2d, v1.4d, v2.4s 2172 2173 // CHECK-ERROR: error: invalid operand for instruction 2174 // CHECK-ERROR: ssubl2 v0.8h, v1.16h, v2.16b 2175 // CHECK-ERROR: ^ 2176 // CHECK-ERROR: error: invalid operand for instruction 2177 // CHECK-ERROR: ssubl2 v0.4s, v1.8s, v2.8h 2178 // CHECK-ERROR: ^ 2179 // CHECK-ERROR: error: invalid operand for instruction 2180 // CHECK-ERROR: ssubl2 v0.2d, v1.4d, v2.4s 2181 // CHECK-ERROR: ^ 2182 2183 usubl v0.8h, v1.8h, v2.8b 2184 usubl v0.4s, v1.4s, v2.4h 2185 usubl v0.2d, v1.2d, v2.2s 2186 2187 // CHECK-ERROR: error: invalid operand for instruction 2188 // CHECK-ERROR: usubl v0.8h, v1.8h, v2.8b 2189 // CHECK-ERROR: ^ 2190 // CHECK-ERROR: error: invalid operand for instruction 2191 // CHECK-ERROR: usubl v0.4s, v1.4s, v2.4h 2192 // CHECK-ERROR: ^ 2193 // CHECK-ERROR: error: invalid operand for instruction 2194 // CHECK-ERROR: usubl v0.2d, v1.2d, v2.2s 2195 // CHECK-ERROR: ^ 2196 2197 usubl2 v0.8h, v1.16h, v2.16b 2198 usubl2 v0.4s, v1.8s, v2.8h 2199 usubl2 v0.2d, v1.4d, v2.4s 2200 2201 // CHECK-ERROR: error: invalid operand for instruction 2202 // CHECK-ERROR: usubl2 v0.8h, v1.16h, v2.16b 2203 // CHECK-ERROR: ^ 2204 // CHECK-ERROR: error: invalid operand for instruction 2205 // CHECK-ERROR: usubl2 v0.4s, v1.8s, v2.8h 2206 // CHECK-ERROR: ^ 2207 // CHECK-ERROR: error: invalid operand for instruction 2208 // CHECK-ERROR: usubl2 v0.2d, v1.4d, v2.4s 2209 // CHECK-ERROR: ^ 2210 2211 sabal v0.8h, v1.8h, v2.8b 2212 sabal v0.4s, v1.4s, v2.4h 2213 sabal v0.2d, v1.2d, v2.2s 2214 2215 // CHECK-ERROR: error: invalid operand for instruction 2216 // CHECK-ERROR: sabal v0.8h, v1.8h, v2.8b 2217 // CHECK-ERROR: ^ 2218 // CHECK-ERROR: error: invalid operand for instruction 2219 // CHECK-ERROR: sabal v0.4s, v1.4s, v2.4h 2220 // CHECK-ERROR: ^ 2221 // CHECK-ERROR: error: invalid operand for instruction 2222 // CHECK-ERROR: sabal v0.2d, v1.2d, v2.2s 2223 // CHECK-ERROR: ^ 2224 2225 sabal2 v0.8h, v1.16h, v2.16b 2226 sabal2 v0.4s, v1.8s, v2.8h 2227 sabal2 v0.2d, v1.4d, v2.4s 2228 2229 // CHECK-ERROR: error: invalid operand for instruction 2230 // CHECK-ERROR: sabal2 v0.8h, v1.16h, v2.16b 2231 // CHECK-ERROR: ^ 2232 // CHECK-ERROR: error: invalid operand for instruction 2233 // CHECK-ERROR: sabal2 v0.4s, v1.8s, v2.8h 2234 // CHECK-ERROR: ^ 2235 // CHECK-ERROR: error: invalid operand for instruction 2236 // CHECK-ERROR: sabal2 v0.2d, v1.4d, v2.4s 2237 // CHECK-ERROR: ^ 2238 2239 uabal v0.8h, v1.8h, v2.8b 2240 uabal v0.4s, v1.4s, v2.4h 2241 uabal v0.2d, v1.2d, v2.2s 2242 2243 // CHECK-ERROR: error: invalid operand for instruction 2244 // CHECK-ERROR: uabal v0.8h, v1.8h, v2.8b 2245 // CHECK-ERROR: ^ 2246 // CHECK-ERROR: error: invalid operand for instruction 2247 // CHECK-ERROR: uabal v0.4s, v1.4s, v2.4h 2248 // CHECK-ERROR: ^ 2249 // CHECK-ERROR: error: invalid operand for instruction 2250 // CHECK-ERROR: uabal v0.2d, v1.2d, v2.2s 2251 // CHECK-ERROR: ^ 2252 2253 uabal2 v0.8h, v1.16h, v2.16b 2254 uabal2 v0.4s, v1.8s, v2.8h 2255 uabal2 v0.2d, v1.4d, v2.4s 2256 2257 // CHECK-ERROR: error: invalid operand for instruction 2258 // CHECK-ERROR: uabal2 v0.8h, v1.16h, v2.16b 2259 // CHECK-ERROR: ^ 2260 // CHECK-ERROR: error: invalid operand for instruction 2261 // CHECK-ERROR: uabal2 v0.4s, v1.8s, v2.8h 2262 // CHECK-ERROR: ^ 2263 // CHECK-ERROR: error: invalid operand for instruction 2264 // CHECK-ERROR: uabal2 v0.2d, v1.4d, v2.4s 2265 // CHECK-ERROR: ^ 2266 2267 sabdl v0.8h, v1.8h, v2.8b 2268 sabdl v0.4s, v1.4s, v2.4h 2269 sabdl v0.2d, v1.2d, v2.2s 2270 2271 // CHECK-ERROR: error: invalid operand for instruction 2272 // CHECK-ERROR: sabdl v0.8h, v1.8h, v2.8b 2273 // CHECK-ERROR: ^ 2274 // CHECK-ERROR: error: invalid operand for instruction 2275 // CHECK-ERROR: sabdl v0.4s, v1.4s, v2.4h 2276 // CHECK-ERROR: ^ 2277 // CHECK-ERROR: error: invalid operand for instruction 2278 // CHECK-ERROR: sabdl v0.2d, v1.2d, v2.2s 2279 // CHECK-ERROR: ^ 2280 2281 sabdl2 v0.8h, v1.16h, v2.16b 2282 sabdl2 v0.4s, v1.8s, v2.8h 2283 sabdl2 v0.2d, v1.4d, v2.4s 2284 2285 // CHECK-ERROR: error: invalid operand for instruction 2286 // CHECK-ERROR: sabdl2 v0.8h, v1.16h, v2.16b 2287 // CHECK-ERROR: ^ 2288 // CHECK-ERROR: error: invalid operand for instruction 2289 // CHECK-ERROR: sabdl2 v0.4s, v1.8s, v2.8h 2290 // CHECK-ERROR: ^ 2291 // CHECK-ERROR: error: invalid operand for instruction 2292 // CHECK-ERROR: sabdl2 v0.2d, v1.4d, v2.4s 2293 // CHECK-ERROR: ^ 2294 2295 uabdl v0.8h, v1.8h, v2.8b 2296 uabdl v0.4s, v1.4s, v2.4h 2297 uabdl v0.2d, v1.2d, v2.2s 2298 2299 // CHECK-ERROR: error: invalid operand for instruction 2300 // CHECK-ERROR: uabdl v0.8h, v1.8h, v2.8b 2301 // CHECK-ERROR: ^ 2302 // CHECK-ERROR: error: invalid operand for instruction 2303 // CHECK-ERROR: uabdl v0.4s, v1.4s, v2.4h 2304 // CHECK-ERROR: ^ 2305 // CHECK-ERROR: error: invalid operand for instruction 2306 // CHECK-ERROR: uabdl v0.2d, v1.2d, v2.2s 2307 // CHECK-ERROR: ^ 2308 2309 uabdl2 v0.8h, v1.16h, v2.16b 2310 uabdl2 v0.4s, v1.8s, v2.8h 2311 uabdl2 v0.2d, v1.4d, v2.4s 2312 2313 // CHECK-ERROR: error: invalid operand for instruction 2314 // CHECK-ERROR: uabdl2 v0.8h, v1.16h, v2.16b 2315 // CHECK-ERROR: ^ 2316 // CHECK-ERROR: error: invalid operand for instruction 2317 // CHECK-ERROR: uabdl2 v0.4s, v1.8s, v2.8h 2318 // CHECK-ERROR: ^ 2319 // CHECK-ERROR: error: invalid operand for instruction 2320 // CHECK-ERROR: uabdl2 v0.2d, v1.4d, v2.4s 2321 // CHECK-ERROR: ^ 2322 2323 smlal v0.8h, v1.8h, v2.8b 2324 smlal v0.4s, v1.4s, v2.4h 2325 smlal v0.2d, v1.2d, v2.2s 2326 2327 // CHECK-ERROR: error: invalid operand for instruction 2328 // CHECK-ERROR: smlal v0.8h, v1.8h, v2.8b 2329 // CHECK-ERROR: ^ 2330 // CHECK-ERROR: error: invalid operand for instruction 2331 // CHECK-ERROR: smlal v0.4s, v1.4s, v2.4h 2332 // CHECK-ERROR: ^ 2333 // CHECK-ERROR: error: invalid operand for instruction 2334 // CHECK-ERROR: smlal v0.2d, v1.2d, v2.2s 2335 // CHECK-ERROR: ^ 2336 2337 smlal2 v0.8h, v1.16h, v2.16b 2338 smlal2 v0.4s, v1.8s, v2.8h 2339 smlal2 v0.2d, v1.4d, v2.4s 2340 2341 // CHECK-ERROR: error: invalid operand for instruction 2342 // CHECK-ERROR: smlal2 v0.8h, v1.16h, v2.16b 2343 // CHECK-ERROR: ^ 2344 // CHECK-ERROR: error: invalid operand for instruction 2345 // CHECK-ERROR: smlal2 v0.4s, v1.8s, v2.8h 2346 // CHECK-ERROR: ^ 2347 // CHECK-ERROR: error: invalid operand for instruction 2348 // CHECK-ERROR: smlal2 v0.2d, v1.4d, v2.4s 2349 // CHECK-ERROR: ^ 2350 2351 umlal v0.8h, v1.8h, v2.8b 2352 umlal v0.4s, v1.4s, v2.4h 2353 umlal v0.2d, v1.2d, v2.2s 2354 2355 // CHECK-ERROR: error: invalid operand for instruction 2356 // CHECK-ERROR: umlal v0.8h, v1.8h, v2.8b 2357 // CHECK-ERROR: ^ 2358 // CHECK-ERROR: error: invalid operand for instruction 2359 // CHECK-ERROR: umlal v0.4s, v1.4s, v2.4h 2360 // CHECK-ERROR: ^ 2361 // CHECK-ERROR: error: invalid operand for instruction 2362 // CHECK-ERROR: umlal v0.2d, v1.2d, v2.2s 2363 // CHECK-ERROR: ^ 2364 2365 umlal2 v0.8h, v1.16h, v2.16b 2366 umlal2 v0.4s, v1.8s, v2.8h 2367 umlal2 v0.2d, v1.4d, v2.4s 2368 2369 // CHECK-ERROR: error: invalid operand for instruction 2370 // CHECK-ERROR: umlal2 v0.8h, v1.16h, v2.16b 2371 // CHECK-ERROR: ^ 2372 // CHECK-ERROR: error: invalid operand for instruction 2373 // CHECK-ERROR: umlal2 v0.4s, v1.8s, v2.8h 2374 // CHECK-ERROR: ^ 2375 // CHECK-ERROR: error: invalid operand for instruction 2376 // CHECK-ERROR: umlal2 v0.2d, v1.4d, v2.4s 2377 // CHECK-ERROR: ^ 2378 2379 smlsl v0.8h, v1.8h, v2.8b 2380 smlsl v0.4s, v1.4s, v2.4h 2381 smlsl v0.2d, v1.2d, v2.2s 2382 2383 // CHECK-ERROR: error: invalid operand for instruction 2384 // CHECK-ERROR: smlsl v0.8h, v1.8h, v2.8b 2385 // CHECK-ERROR: ^ 2386 // CHECK-ERROR: error: invalid operand for instruction 2387 // CHECK-ERROR: smlsl v0.4s, v1.4s, v2.4h 2388 // CHECK-ERROR: ^ 2389 // CHECK-ERROR: error: invalid operand for instruction 2390 // CHECK-ERROR: smlsl v0.2d, v1.2d, v2.2s 2391 // CHECK-ERROR: ^ 2392 2393 smlsl2 v0.8h, v1.16h, v2.16b 2394 smlsl2 v0.4s, v1.8s, v2.8h 2395 smlsl2 v0.2d, v1.4d, v2.4s 2396 2397 // CHECK-ERROR: error: invalid operand for instruction 2398 // CHECK-ERROR: smlsl2 v0.8h, v1.16h, v2.16b 2399 // CHECK-ERROR: ^ 2400 // CHECK-ERROR: error: invalid operand for instruction 2401 // CHECK-ERROR: smlsl2 v0.4s, v1.8s, v2.8h 2402 // CHECK-ERROR: ^ 2403 // CHECK-ERROR: error: invalid operand for instruction 2404 // CHECK-ERROR: smlsl2 v0.2d, v1.4d, v2.4s 2405 // CHECK-ERROR: ^ 2406 2407 umlsl v0.8h, v1.8h, v2.8b 2408 umlsl v0.4s, v1.4s, v2.4h 2409 umlsl v0.2d, v1.2d, v2.2s 2410 2411 // CHECK-ERROR: error: invalid operand for instruction 2412 // CHECK-ERROR: umlsl v0.8h, v1.8h, v2.8b 2413 // CHECK-ERROR: ^ 2414 // CHECK-ERROR: error: invalid operand for instruction 2415 // CHECK-ERROR: umlsl v0.4s, v1.4s, v2.4h 2416 // CHECK-ERROR: ^ 2417 // CHECK-ERROR: error: invalid operand for instruction 2418 // CHECK-ERROR: umlsl v0.2d, v1.2d, v2.2s 2419 // CHECK-ERROR: ^ 2420 2421 umlsl2 v0.8h, v1.16h, v2.16b 2422 umlsl2 v0.4s, v1.8s, v2.8h 2423 umlsl2 v0.2d, v1.4d, v2.4s 2424 2425 // CHECK-ERROR: error: invalid operand for instruction 2426 // CHECK-ERROR: umlsl2 v0.8h, v1.16h, v2.16b 2427 // CHECK-ERROR: ^ 2428 // CHECK-ERROR: error: invalid operand for instruction 2429 // CHECK-ERROR: umlsl2 v0.4s, v1.8s, v2.8h 2430 // CHECK-ERROR: ^ 2431 // CHECK-ERROR: error: invalid operand for instruction 2432 // CHECK-ERROR: umlsl2 v0.2d, v1.4d, v2.4s 2433 // CHECK-ERROR: ^ 2434 2435 smull v0.8h, v1.8h, v2.8b 2436 smull v0.4s, v1.4s, v2.4h 2437 smull v0.2d, v1.2d, v2.2s 2438 2439 // CHECK-ERROR: error: invalid operand for instruction 2440 // CHECK-ERROR: smull v0.8h, v1.8h, v2.8b 2441 // CHECK-ERROR: ^ 2442 // CHECK-ERROR: error: invalid operand for instruction 2443 // CHECK-ERROR: smull v0.4s, v1.4s, v2.4h 2444 // CHECK-ERROR: ^ 2445 // CHECK-ERROR: error: invalid operand for instruction 2446 // CHECK-ERROR: smull v0.2d, v1.2d, v2.2s 2447 // CHECK-ERROR: ^ 2448 2449 smull2 v0.8h, v1.16h, v2.16b 2450 smull2 v0.4s, v1.8s, v2.8h 2451 smull2 v0.2d, v1.4d, v2.4s 2452 2453 // CHECK-ERROR: error: invalid operand for instruction 2454 // CHECK-ERROR: smull2 v0.8h, v1.16h, v2.16b 2455 // CHECK-ERROR: ^ 2456 // CHECK-ERROR: error: invalid operand for instruction 2457 // CHECK-ERROR: smull2 v0.4s, v1.8s, v2.8h 2458 // CHECK-ERROR: ^ 2459 // CHECK-ERROR: error: invalid operand for instruction 2460 // CHECK-ERROR: smull2 v0.2d, v1.4d, v2.4s 2461 // CHECK-ERROR: ^ 2462 2463 umull v0.8h, v1.8h, v2.8b 2464 umull v0.4s, v1.4s, v2.4h 2465 umull v0.2d, v1.2d, v2.2s 2466 2467 // CHECK-ERROR: error: invalid operand for instruction 2468 // CHECK-ERROR: umull v0.8h, v1.8h, v2.8b 2469 // CHECK-ERROR: ^ 2470 // CHECK-ERROR: error: invalid operand for instruction 2471 // CHECK-ERROR: umull v0.4s, v1.4s, v2.4h 2472 // CHECK-ERROR: ^ 2473 // CHECK-ERROR: error: invalid operand for instruction 2474 // CHECK-ERROR: umull v0.2d, v1.2d, v2.2s 2475 // CHECK-ERROR: ^ 2476 2477 umull2 v0.8h, v1.16h, v2.16b 2478 umull2 v0.4s, v1.8s, v2.8h 2479 umull2 v0.2d, v1.4d, v2.4s 2480 2481 // CHECK-ERROR: error: invalid operand for instruction 2482 // CHECK-ERROR: umull2 v0.8h, v1.16h, v2.16b 2483 // CHECK-ERROR: ^ 2484 // CHECK-ERROR: error: invalid operand for instruction 2485 // CHECK-ERROR: umull2 v0.4s, v1.8s, v2.8h 2486 // CHECK-ERROR: ^ 2487 // CHECK-ERROR: error: invalid operand for instruction 2488 // CHECK-ERROR: umull2 v0.2d, v1.4d, v2.4s 2489 // CHECK-ERROR: ^ 2490 2491 //------------------------------------------------------------------------------ 2492 // Long - Variant 2 2493 //------------------------------------------------------------------------------ 2494 2495 sqdmlal v0.4s, v1.4s, v2.4h 2496 sqdmlal v0.2d, v1.2d, v2.2s 2497 2498 // CHECK-ERROR: error: invalid operand for instruction 2499 // CHECK-ERROR: sqdmlal v0.4s, v1.4s, v2.4h 2500 // CHECK-ERROR: ^ 2501 // CHECK-ERROR: error: invalid operand for instruction 2502 // CHECK-ERROR: sqdmlal v0.2d, v1.2d, v2.2s 2503 // CHECK-ERROR: ^ 2504 2505 sqdmlal2 v0.4s, v1.8s, v2.8h 2506 sqdmlal2 v0.2d, v1.4d, v2.4s 2507 2508 // CHECK-ERROR: error: invalid operand for instruction 2509 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8s, v2.8h 2510 // CHECK-ERROR: ^ 2511 // CHECK-ERROR: error: invalid operand for instruction 2512 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4d, v2.4s 2513 // CHECK-ERROR: ^ 2514 2515 // Mismatched vector types 2516 sqdmlal v0.8h, v1.8b, v2.8b 2517 sqdmlal2 v0.8h, v1.16b, v2.16b 2518 2519 // CHECK-ERROR: error: invalid operand for instruction 2520 // CHECK-ERROR: sqdmlal v0.8h, v1.8b, v2.8b 2521 // CHECK-ERROR: ^ 2522 // CHECK-ERROR: error: invalid operand for instruction 2523 // CHECK-ERROR: sqdmlal2 v0.8h, v1.16b, v2.16b 2524 // CHECK-ERROR: ^ 2525 2526 sqdmlsl v0.4s, v1.4s, v2.4h 2527 sqdmlsl v0.2d, v1.2d, v2.2s 2528 2529 // CHECK-ERROR: error: invalid operand for instruction 2530 // CHECK-ERROR: sqdmlsl v0.4s, v1.4s, v2.4h 2531 // CHECK-ERROR: ^ 2532 // CHECK-ERROR: error: invalid operand for instruction 2533 // CHECK-ERROR: sqdmlsl v0.2d, v1.2d, v2.2s 2534 // CHECK-ERROR: ^ 2535 2536 sqdmlsl2 v0.4s, v1.8s, v2.8h 2537 sqdmlsl2 v0.2d, v1.4d, v2.4s 2538 2539 // CHECK-ERROR: error: invalid operand for instruction 2540 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8s, v2.8h 2541 // CHECK-ERROR: ^ 2542 // CHECK-ERROR: error: invalid operand for instruction 2543 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4d, v2.4s 2544 // CHECK-ERROR: ^ 2545 2546 // Mismatched vector types 2547 sqdmlsl v0.8h, v1.8b, v2.8b 2548 sqdmlsl2 v0.8h, v1.16b, v2.16b 2549 2550 // CHECK-ERROR: error: invalid operand for instruction 2551 // CHECK-ERROR: sqdmlsl v0.8h, v1.8b, v2.8b 2552 // CHECK-ERROR: ^ 2553 // CHECK-ERROR: error: invalid operand for instruction 2554 // CHECK-ERROR: sqdmlsl2 v0.8h, v1.16b, v2.16b 2555 // CHECK-ERROR: ^ 2556 2557 2558 sqdmull v0.4s, v1.4s, v2.4h 2559 sqdmull v0.2d, v1.2d, v2.2s 2560 2561 // CHECK-ERROR: error: invalid operand for instruction 2562 // CHECK-ERROR: sqdmull v0.4s, v1.4s, v2.4h 2563 // CHECK-ERROR: ^ 2564 // CHECK-ERROR: error: invalid operand for instruction 2565 // CHECK-ERROR: sqdmull v0.2d, v1.2d, v2.2s 2566 // CHECK-ERROR: ^ 2567 2568 sqdmull2 v0.4s, v1.8s, v2.8h 2569 sqdmull2 v0.2d, v1.4d, v2.4s 2570 2571 // CHECK-ERROR: error: invalid operand for instruction 2572 // CHECK-ERROR: sqdmull2 v0.4s, v1.8s, v2.8h 2573 // CHECK-ERROR: ^ 2574 // CHECK-ERROR: error: invalid operand for instruction 2575 // CHECK-ERROR: sqdmull2 v0.2d, v1.4d, v2.4s 2576 // CHECK-ERROR: ^ 2577 2578 // Mismatched vector types 2579 sqdmull v0.8h, v1.8b, v2.8b 2580 sqdmull2 v0.8h, v1.16b, v2.16b 2581 2582 // CHECK-ERROR: error: invalid operand for instruction 2583 // CHECK-ERROR: sqdmull v0.8h, v1.8b, v2.8b 2584 // CHECK-ERROR: ^ 2585 // CHECK-ERROR: error: invalid operand for instruction 2586 // CHECK-ERROR: sqdmull2 v0.8h, v1.16b, v2.16b 2587 // CHECK-ERROR: ^ 2588 2589 2590 //------------------------------------------------------------------------------ 2591 // Long - Variant 3 2592 //------------------------------------------------------------------------------ 2593 2594 pmull v0.8h, v1.8h, v2.8b 2595 2596 // CHECK-ERROR: error: invalid operand for instruction 2597 // CHECK-ERROR: pmull v0.8h, v1.8h, v2.8b 2598 // CHECK-ERROR: ^ 2599 2600 pmull v0.1q, v1.2d, v2.2d 2601 2602 // CHECK-ERROR: error: invalid operand for instruction 2603 // CHECK-ERROR: pmull v0.1q, v1.2d, v2.2d 2604 // CHECK-ERROR: ^ 2605 2606 // Mismatched vector types 2607 pmull v0.4s, v1.4h, v2.4h 2608 pmull v0.2d, v1.2s, v2.2s 2609 2610 // CHECK-ERROR: error: invalid operand for instruction 2611 // CHECK-ERROR: pmull v0.4s, v1.4h, v2.4h 2612 // CHECK-ERROR: ^ 2613 // CHECK-ERROR: error: invalid operand for instruction 2614 // CHECK-ERROR: pmull v0.2d, v1.2s, v2.2s 2615 // CHECK-ERROR: ^ 2616 2617 2618 pmull2 v0.8h, v1.16h, v2.16b 2619 2620 // CHECK-ERROR: error: invalid operand for instruction 2621 // CHECK-ERROR: pmull2 v0.8h, v1.16h, v2.16b 2622 // CHECK-ERROR: ^ 2623 2624 pmull2 v0.q, v1.2d, v2.2d 2625 2626 // CHECK-ERROR: error: invalid operand for instruction 2627 // CHECK-ERROR: pmull2 v0.q, v1.2d, v2.2d 2628 // CHECK-ERROR: ^ 2629 2630 // Mismatched vector types 2631 pmull2 v0.4s, v1.8h v2.8h 2632 pmull2 v0.2d, v1.4s, v2.4s 2633 2634 2635 // CHECK-ERROR: error: unexpected token in argument list 2636 // CHECK-ERROR: pmull2 v0.4s, v1.8h v2.8h 2637 // CHECK-ERROR: ^ 2638 2639 // CHECK-ERROR: error: invalid operand for instruction 2640 // CHECK-ERROR: pmull2 v0.2d, v1.4s, v2.4s 2641 // CHECK-ERROR: ^ 2642 2643 //------------------------------------------------------------------------------ 2644 // Widen 2645 //------------------------------------------------------------------------------ 2646 2647 saddw v0.8h, v1.8h, v2.8h 2648 saddw v0.4s, v1.4s, v2.4s 2649 saddw v0.2d, v1.2d, v2.2d 2650 2651 // CHECK-ERROR: error: invalid operand for instruction 2652 // CHECK-ERROR: saddw v0.8h, v1.8h, v2.8h 2653 // CHECK-ERROR: ^ 2654 // CHECK-ERROR: error: invalid operand for instruction 2655 // CHECK-ERROR: saddw v0.4s, v1.4s, v2.4s 2656 // CHECK-ERROR: ^ 2657 // CHECK-ERROR: error: invalid operand for instruction 2658 // CHECK-ERROR: saddw v0.2d, v1.2d, v2.2d 2659 // CHECK-ERROR: ^ 2660 2661 saddw2 v0.8h, v1.8h, v2.16h 2662 saddw2 v0.4s, v1.4s, v2.8s 2663 saddw2 v0.2d, v1.2d, v2.4d 2664 2665 // CHECK-ERROR: error: invalid operand for instruction 2666 // CHECK-ERROR: saddw2 v0.8h, v1.8h, v2.16h 2667 // CHECK-ERROR: ^ 2668 // CHECK-ERROR: error: invalid operand for instruction 2669 // CHECK-ERROR: saddw2 v0.4s, v1.4s, v2.8s 2670 // CHECK-ERROR: ^ 2671 // CHECK-ERROR: error: invalid operand for instruction 2672 // CHECK-ERROR: saddw2 v0.2d, v1.2d, v2.4d 2673 // CHECK-ERROR: ^ 2674 2675 uaddw v0.8h, v1.8h, v2.8h 2676 uaddw v0.4s, v1.4s, v2.4s 2677 uaddw v0.2d, v1.2d, v2.2d 2678 2679 // CHECK-ERROR: error: invalid operand for instruction 2680 // CHECK-ERROR: uaddw v0.8h, v1.8h, v2.8h 2681 // CHECK-ERROR: ^ 2682 // CHECK-ERROR: error: invalid operand for instruction 2683 // CHECK-ERROR: uaddw v0.4s, v1.4s, v2.4s 2684 // CHECK-ERROR: ^ 2685 // CHECK-ERROR: error: invalid operand for instruction 2686 // CHECK-ERROR: uaddw v0.2d, v1.2d, v2.2d 2687 // CHECK-ERROR: ^ 2688 2689 uaddw2 v0.8h, v1.8h, v2.16h 2690 uaddw2 v0.4s, v1.4s, v2.8s 2691 uaddw2 v0.2d, v1.2d, v2.4d 2692 2693 // CHECK-ERROR: error: invalid operand for instruction 2694 // CHECK-ERROR: uaddw2 v0.8h, v1.8h, v2.16h 2695 // CHECK-ERROR: ^ 2696 // CHECK-ERROR: error: invalid operand for instruction 2697 // CHECK-ERROR: uaddw2 v0.4s, v1.4s, v2.8s 2698 // CHECK-ERROR: ^ 2699 // CHECK-ERROR: error: invalid operand for instruction 2700 // CHECK-ERROR: uaddw2 v0.2d, v1.2d, v2.4d 2701 // CHECK-ERROR: ^ 2702 2703 ssubw v0.8h, v1.8h, v2.8h 2704 ssubw v0.4s, v1.4s, v2.4s 2705 ssubw v0.2d, v1.2d, v2.2d 2706 2707 // CHECK-ERROR: error: invalid operand for instruction 2708 // CHECK-ERROR: ssubw v0.8h, v1.8h, v2.8h 2709 // CHECK-ERROR: ^ 2710 // CHECK-ERROR: error: invalid operand for instruction 2711 // CHECK-ERROR: ssubw v0.4s, v1.4s, v2.4s 2712 // CHECK-ERROR: ^ 2713 // CHECK-ERROR: error: invalid operand for instruction 2714 // CHECK-ERROR: ssubw v0.2d, v1.2d, v2.2d 2715 // CHECK-ERROR: ^ 2716 2717 ssubw2 v0.8h, v1.8h, v2.16h 2718 ssubw2 v0.4s, v1.4s, v2.8s 2719 ssubw2 v0.2d, v1.2d, v2.4d 2720 2721 // CHECK-ERROR: error: invalid operand for instruction 2722 // CHECK-ERROR: ssubw2 v0.8h, v1.8h, v2.16h 2723 // CHECK-ERROR: ^ 2724 // CHECK-ERROR: error: invalid operand for instruction 2725 // CHECK-ERROR: ssubw2 v0.4s, v1.4s, v2.8s 2726 // CHECK-ERROR: ^ 2727 // CHECK-ERROR: error: invalid operand for instruction 2728 // CHECK-ERROR: ssubw2 v0.2d, v1.2d, v2.4d 2729 // CHECK-ERROR: ^ 2730 2731 usubw v0.8h, v1.8h, v2.8h 2732 usubw v0.4s, v1.4s, v2.4s 2733 usubw v0.2d, v1.2d, v2.2d 2734 2735 // CHECK-ERROR: error: invalid operand for instruction 2736 // CHECK-ERROR: usubw v0.8h, v1.8h, v2.8h 2737 // CHECK-ERROR: ^ 2738 // CHECK-ERROR: error: invalid operand for instruction 2739 // CHECK-ERROR: usubw v0.4s, v1.4s, v2.4s 2740 // CHECK-ERROR: ^ 2741 // CHECK-ERROR: error: invalid operand for instruction 2742 // CHECK-ERROR: usubw v0.2d, v1.2d, v2.2d 2743 // CHECK-ERROR: ^ 2744 2745 usubw2 v0.8h, v1.8h, v2.16h 2746 usubw2 v0.4s, v1.4s, v2.8s 2747 usubw2 v0.2d, v1.2d, v2.4d 2748 2749 // CHECK-ERROR: error: invalid operand for instruction 2750 // CHECK-ERROR: usubw2 v0.8h, v1.8h, v2.16h 2751 // CHECK-ERROR: ^ 2752 // CHECK-ERROR: error: invalid operand for instruction 2753 // CHECK-ERROR: usubw2 v0.4s, v1.4s, v2.8s 2754 // CHECK-ERROR: ^ 2755 // CHECK-ERROR: error: invalid operand for instruction 2756 // CHECK-ERROR: usubw2 v0.2d, v1.2d, v2.4d 2757 // CHECK-ERROR: ^ 2758 2759 //------------------------------------------------------------------------------ 2760 // Narrow 2761 //------------------------------------------------------------------------------ 2762 2763 addhn v0.8b, v1.8h, v2.8d 2764 addhn v0.4h, v1.4s, v2.4h 2765 addhn v0.2s, v1.2d, v2.2s 2766 2767 // CHECK-ERROR: error: invalid operand for instruction 2768 // CHECK-ERROR: addhn v0.8b, v1.8h, v2.8d 2769 // CHECK-ERROR: ^ 2770 // CHECK-ERROR: error: invalid operand for instruction 2771 // CHECK-ERROR: addhn v0.4h, v1.4s, v2.4h 2772 // CHECK-ERROR: ^ 2773 // CHECK-ERROR: error: invalid operand for instruction 2774 // CHECK-ERROR: addhn v0.2s, v1.2d, v2.2s 2775 // CHECK-ERROR: ^ 2776 2777 addhn2 v0.16b, v1.8h, v2.8b 2778 addhn2 v0.8h, v1.4s, v2.4h 2779 addhn2 v0.4s, v1.2d, v2.2s 2780 2781 // CHECK-ERROR: error: invalid operand for instruction 2782 // CHECK-ERROR: addhn2 v0.16b, v1.8h, v2.8b 2783 // CHECK-ERROR: ^ 2784 // CHECK-ERROR: error: invalid operand for instruction 2785 // CHECK-ERROR: addhn2 v0.8h, v1.4s, v2.4h 2786 // CHECK-ERROR: ^ 2787 // CHECK-ERROR: error: invalid operand for instruction 2788 // CHECK-ERROR: addhn2 v0.4s, v1.2d, v2.2s 2789 // CHECK-ERROR: ^ 2790 2791 raddhn v0.8b, v1.8h, v2.8b 2792 raddhn v0.4h, v1.4s, v2.4h 2793 raddhn v0.2s, v1.2d, v2.2s 2794 2795 // CHECK-ERROR: error: invalid operand for instruction 2796 // CHECK-ERROR: raddhn v0.8b, v1.8h, v2.8b 2797 // CHECK-ERROR: ^ 2798 // CHECK-ERROR: error: invalid operand for instruction 2799 // CHECK-ERROR: raddhn v0.4h, v1.4s, v2.4h 2800 // CHECK-ERROR: ^ 2801 // CHECK-ERROR: error: invalid operand for instruction 2802 // CHECK-ERROR: raddhn v0.2s, v1.2d, v2.2s 2803 // CHECK-ERROR: ^ 2804 2805 raddhn2 v0.16b, v1.8h, v2.8b 2806 raddhn2 v0.8h, v1.4s, v2.4h 2807 raddhn2 v0.4s, v1.2d, v2.2s 2808 2809 // CHECK-ERROR: error: invalid operand for instruction 2810 // CHECK-ERROR: raddhn2 v0.16b, v1.8h, v2.8b 2811 // CHECK-ERROR: ^ 2812 // CHECK-ERROR: error: invalid operand for instruction 2813 // CHECK-ERROR: raddhn2 v0.8h, v1.4s, v2.4h 2814 // CHECK-ERROR: ^ 2815 // CHECK-ERROR: error: invalid operand for instruction 2816 // CHECK-ERROR: raddhn2 v0.4s, v1.2d, v2.2s 2817 // CHECK-ERROR: ^ 2818 2819 rsubhn v0.8b, v1.8h, v2.8b 2820 rsubhn v0.4h, v1.4s, v2.4h 2821 rsubhn v0.2s, v1.2d, v2.2s 2822 2823 // CHECK-ERROR: error: invalid operand for instruction 2824 // CHECK-ERROR: rsubhn v0.8b, v1.8h, v2.8b 2825 // CHECK-ERROR: ^ 2826 // CHECK-ERROR: error: invalid operand for instruction 2827 // CHECK-ERROR: rsubhn v0.4h, v1.4s, v2.4h 2828 // CHECK-ERROR: ^ 2829 // CHECK-ERROR: error: invalid operand for instruction 2830 // CHECK-ERROR: rsubhn v0.2s, v1.2d, v2.2s 2831 // CHECK-ERROR: ^ 2832 2833 rsubhn2 v0.16b, v1.8h, v2.8b 2834 rsubhn2 v0.8h, v1.4s, v2.4h 2835 rsubhn2 v0.4s, v1.2d, v2.2s 2836 2837 // CHECK-ERROR: error: invalid operand for instruction 2838 // CHECK-ERROR: rsubhn2 v0.16b, v1.8h, v2.8b 2839 // CHECK-ERROR: ^ 2840 // CHECK-ERROR: error: invalid operand for instruction 2841 // CHECK-ERROR: rsubhn2 v0.8h, v1.4s, v2.4h 2842 // CHECK-ERROR: ^ 2843 // CHECK-ERROR: error: invalid operand for instruction 2844 // CHECK-ERROR: rsubhn2 v0.4s, v1.2d, v2.2s 2845 // CHECK-ERROR: ^ 2846 2847 //---------------------------------------------------------------------- 2848 // Scalar Reduce Add Pairwise (Integer) 2849 //---------------------------------------------------------------------- 2850 // invalid vector types 2851 addp s0, d1.2d 2852 addp d0, d1.2s 2853 2854 // CHECK-ERROR: error: invalid operand for instruction 2855 // CHECK-ERROR: addp s0, d1.2d 2856 // CHECK-ERROR: ^ 2857 // CHECK-ERROR: error: invalid operand for instruction 2858 // CHECK-ERROR: addp d0, d1.2s 2859 // CHECK-ERROR: ^ 2860 2861 //---------------------------------------------------------------------- 2862 // Scalar Reduce Add Pairwise (Floating Point) 2863 //---------------------------------------------------------------------- 2864 // invalid vector types 2865 faddp s0, d1.2d 2866 faddp d0, d1.2s 2867 2868 // CHECK-ERROR: error: invalid operand for instruction 2869 // CHECK-ERROR: faddp s0, d1.2d 2870 // CHECK-ERROR: ^ 2871 // CHECK-ERROR: error: invalid operand for instruction 2872 // CHECK-ERROR: faddp d0, d1.2s 2873 // CHECK-ERROR: ^ 2874 2875 //---------------------------------------------------------------------- 2876 // Scalar Reduce Maximum Pairwise (Floating Point) 2877 //---------------------------------------------------------------------- 2878 // mismatched and invalid vector types 2879 fmaxp s0, v1.2d 2880 fmaxp d31, v2.2s 2881 fmaxp h3, v2.2s 2882 2883 // CHECK-ERROR: error: invalid operand for instruction 2884 // CHECK-ERROR: fmaxp s0, v1.2d 2885 // CHECK-ERROR: ^ 2886 // CHECK-ERROR: error: invalid operand for instruction 2887 // CHECK-ERROR: fmaxp d31, v2.2s 2888 // CHECK-ERROR: ^ 2889 // CHECK-ERROR: error: invalid operand for instruction 2890 // CHECK-ERROR: fmaxp h3, v2.2s 2891 // CHECK-ERROR: ^ 2892 2893 2894 //---------------------------------------------------------------------- 2895 // Scalar Reduce Minimum Pairwise (Floating Point) 2896 //---------------------------------------------------------------------- 2897 // mismatched and invalid vector types 2898 fminp s0, v1.4h 2899 fminp d31, v2.8h 2900 fminp b3, v2.2s 2901 2902 // CHECK-ERROR: error: invalid operand for instruction 2903 // CHECK-ERROR: fminp s0, v1.4h 2904 // CHECK-ERROR: ^ 2905 // CHECK-ERROR: error: invalid operand for instruction 2906 // CHECK-ERROR: fminp d31, v2.8h 2907 // CHECK-ERROR: ^ 2908 // CHECK-ERROR: error: invalid operand for instruction 2909 // CHECK-ERROR: fminp b3, v2.2s 2910 // CHECK-ERROR: ^ 2911 2912 2913 //---------------------------------------------------------------------- 2914 // Scalar Reduce maxNum Pairwise (Floating Point) 2915 //---------------------------------------------------------------------- 2916 // mismatched and invalid vector types 2917 fmaxnmp s0, v1.8b 2918 fmaxnmp d31, v2.16b 2919 fmaxnmp v1.2s, v2.2s 2920 2921 // CHECK-ERROR: error: invalid operand for instruction 2922 // CHECK-ERROR: fmaxnmp s0, v1.8b 2923 // CHECK-ERROR: ^ 2924 // CHECK-ERROR: error: invalid operand for instruction 2925 // CHECK-ERROR: fmaxnmp d31, v2.16b 2926 // CHECK-ERROR: ^ 2927 // CHECK-ERROR: error: too few operands for instruction 2928 // CHECK-ERROR: fmaxnmp v1.2s, v2.2s 2929 // CHECK-ERROR: ^ 2930 2931 //---------------------------------------------------------------------- 2932 // Scalar Reduce minNum Pairwise (Floating Point) 2933 //---------------------------------------------------------------------- 2934 // mismatched and invalid vector types 2935 fminnmp s0, v1.2d 2936 fminnmp d31, v2.4s 2937 fminnmp v1.4s, v2.2d 2938 2939 // CHECK-ERROR: error: invalid operand for instruction 2940 // CHECK-ERROR: fminnmp s0, v1.2d 2941 // CHECK-ERROR: ^ 2942 // CHECK-ERROR: error: invalid operand for instruction 2943 // CHECK-ERROR: fminnmp d31, v2.4s 2944 // CHECK-ERROR: ^ 2945 // CHECK-ERROR: error: invalid operand for instruction 2946 // CHECK-ERROR: fminnmp v1.4s, v2.2d 2947 // CHECK-ERROR: ^ 2948 2949 mla v0.2d, v1.2d, v16.d[1] 2950 mla v0.2s, v1.2s, v2.s[4] 2951 mla v0.4s, v1.4s, v2.s[4] 2952 mla v0.2h, v1.2h, v2.h[1] 2953 mla v0.4h, v1.4h, v2.h[8] 2954 mla v0.8h, v1.8h, v2.h[8] 2955 mla v0.4h, v1.4h, v16.h[2] 2956 mla v0.8h, v1.8h, v16.h[2] 2957 2958 // CHECK-ERROR: error: invalid operand for instruction 2959 // CHECK-ERROR: mla v0.2d, v1.2d, v16.d[1] 2960 // CHECK-ERROR: ^ 2961 // CHECK-ERROR: vector lane must be an integer in range 2962 // CHECK-ERROR: mla v0.2s, v1.2s, v2.s[4] 2963 // CHECK-ERROR: ^ 2964 // CHECK-ERROR: vector lane must be an integer in range 2965 // CHECK-ERROR: mla v0.4s, v1.4s, v2.s[4] 2966 // CHECK-ERROR: ^ 2967 // CHECK-ERROR: error: invalid operand for instruction 2968 // CHECK-ERROR: mla v0.2h, v1.2h, v2.h[1] 2969 // CHECK-ERROR: ^ 2970 // CHECK-ERROR: vector lane must be an integer in range 2971 // CHECK-ERROR: mla v0.4h, v1.4h, v2.h[8] 2972 // CHECK-ERROR: ^ 2973 // CHECK-ERROR: vector lane must be an integer in range 2974 // CHECK-ERROR: mla v0.8h, v1.8h, v2.h[8] 2975 // CHECK-ERROR: ^ 2976 // CHECK-ERROR: error: invalid operand for instruction 2977 // CHECK-ERROR: mla v0.4h, v1.4h, v16.h[2] 2978 // CHECK-ERROR: ^ 2979 // CHECK-ERROR: error: invalid operand for instruction 2980 // CHECK-ERROR: mla v0.8h, v1.8h, v16.h[2] 2981 // CHECK-ERROR: ^ 2982 2983 mls v0.2d, v1.2d, v16.d[1] 2984 mls v0.2s, v1.2s, v2.s[4] 2985 mls v0.4s, v1.4s, v2.s[4] 2986 mls v0.2h, v1.2h, v2.h[1] 2987 mls v0.4h, v1.4h, v2.h[8] 2988 mls v0.8h, v1.8h, v2.h[8] 2989 mls v0.4h, v1.4h, v16.h[2] 2990 mls v0.8h, v1.8h, v16.h[2] 2991 2992 // CHECK-ERROR: error: invalid operand for instruction 2993 // CHECK-ERROR: mls v0.2d, v1.2d, v16.d[1] 2994 // CHECK-ERROR: ^ 2995 // CHECK-ERROR: vector lane must be an integer in range 2996 // CHECK-ERROR: mls v0.2s, v1.2s, v2.s[4] 2997 // CHECK-ERROR: ^ 2998 // CHECK-ERROR: vector lane must be an integer in range 2999 // CHECK-ERROR: mls v0.4s, v1.4s, v2.s[4] 3000 // CHECK-ERROR: ^ 3001 // CHECK-ERROR: error: invalid operand for instruction 3002 // CHECK-ERROR: mls v0.2h, v1.2h, v2.h[1] 3003 // CHECK-ERROR: ^ 3004 // CHECK-ERROR: vector lane must be an integer in range 3005 // CHECK-ERROR: mls v0.4h, v1.4h, v2.h[8] 3006 // CHECK-ERROR: ^ 3007 // CHECK-ERROR: vector lane must be an integer in range 3008 // CHECK-ERROR: mls v0.8h, v1.8h, v2.h[8] 3009 // CHECK-ERROR: ^ 3010 // CHECK-ERROR: error: invalid operand for instruction 3011 // CHECK-ERROR: mls v0.4h, v1.4h, v16.h[2] 3012 // CHECK-ERROR: ^ 3013 // CHECK-ERROR: error: invalid operand for instruction 3014 // CHECK-ERROR: mls v0.8h, v1.8h, v16.h[2] 3015 // CHECK-ERROR: ^ 3016 3017 fmla v0.4h, v1.4h, v2.h[2] 3018 fmla v0.8h, v1.8h, v2.h[2] 3019 fmla v0.2s, v1.2s, v2.s[4] 3020 fmla v0.2s, v1.2s, v22.s[4] 3021 fmla v3.4s, v8.4s, v2.s[4] 3022 fmla v3.4s, v8.4s, v22.s[4] 3023 fmla v0.2d, v1.2d, v2.d[2] 3024 fmla v0.2d, v1.2d, v22.d[2] 3025 3026 // CHECK-ERROR: error: instruction requires: fullfp16 3027 // CHECK-ERROR: fmla v0.4h, v1.4h, v2.h[2] 3028 // CHECK-ERROR: ^ 3029 // CHECK-ERROR: error: instruction requires: fullfp16 3030 // CHECK-ERROR: fmla v0.8h, v1.8h, v2.h[2] 3031 // CHECK-ERROR: ^ 3032 // CHECK-ERROR: vector lane must be an integer in range 3033 // CHECK-ERROR: fmla v0.2s, v1.2s, v2.s[4] 3034 // CHECK-ERROR: ^ 3035 // CHECK-ERROR: vector lane must be an integer in range 3036 // CHECK-ERROR: fmla v0.2s, v1.2s, v22.s[4] 3037 // CHECK-ERROR: ^ 3038 // CHECK-ERROR: vector lane must be an integer in range 3039 // CHECK-ERROR: fmla v3.4s, v8.4s, v2.s[4] 3040 // CHECK-ERROR: ^ 3041 // CHECK-ERROR: vector lane must be an integer in range 3042 // CHECK-ERROR: fmla v3.4s, v8.4s, v22.s[4] 3043 // CHECK-ERROR: ^ 3044 // CHECK-ERROR: vector lane must be an integer in range 3045 // CHECK-ERROR: fmla v0.2d, v1.2d, v2.d[2] 3046 // CHECK-ERROR: ^ 3047 // CHECK-ERROR: vector lane must be an integer in range 3048 // CHECK-ERROR: fmla v0.2d, v1.2d, v22.d[2] 3049 // CHECK-ERROR: ^ 3050 3051 fmls v0.4h, v1.4h, v2.h[2] 3052 fmls v0.8h, v1.8h, v2.h[2] 3053 fmls v0.2s, v1.2s, v2.s[4] 3054 fmls v0.2s, v1.2s, v22.s[4] 3055 fmls v3.4s, v8.4s, v2.s[4] 3056 fmls v3.4s, v8.4s, v22.s[4] 3057 fmls v0.2d, v1.2d, v2.d[2] 3058 fmls v0.2d, v1.2d, v22.d[2] 3059 3060 // CHECK-ERROR: error: instruction requires: fullfp16 3061 // CHECK-ERROR: fmls v0.4h, v1.4h, v2.h[2] 3062 // CHECK-ERROR: ^ 3063 // CHECK-ERROR: error: instruction requires: fullfp16 3064 // CHECK-ERROR: fmls v0.8h, v1.8h, v2.h[2] 3065 // CHECK-ERROR: ^ 3066 // CHECK-ERROR: vector lane must be an integer in range 3067 // CHECK-ERROR: fmls v0.2s, v1.2s, v2.s[4] 3068 // CHECK-ERROR: ^ 3069 // CHECK-ERROR: vector lane must be an integer in range 3070 // CHECK-ERROR: fmls v0.2s, v1.2s, v22.s[4] 3071 // CHECK-ERROR: ^ 3072 // CHECK-ERROR: vector lane must be an integer in range 3073 // CHECK-ERROR: fmls v3.4s, v8.4s, v2.s[4] 3074 // CHECK-ERROR: ^ 3075 // CHECK-ERROR: vector lane must be an integer in range 3076 // CHECK-ERROR: fmls v3.4s, v8.4s, v22.s[4] 3077 // CHECK-ERROR: ^ 3078 // CHECK-ERROR: vector lane must be an integer in range 3079 // CHECK-ERROR: fmls v0.2d, v1.2d, v2.d[2] 3080 // CHECK-ERROR: ^ 3081 // CHECK-ERROR: vector lane must be an integer in range 3082 // CHECK-ERROR: fmls v0.2d, v1.2d, v22.d[2] 3083 // CHECK-ERROR: ^ 3084 3085 smlal v0.4h, v1.4h, v2.h[2] 3086 smlal v0.4s, v1.4h, v2.h[8] 3087 smlal v0.4s, v1.4h, v16.h[2] 3088 smlal v0.2s, v1.2s, v2.s[1] 3089 smlal v0.2d, v1.2s, v2.s[4] 3090 smlal v0.2d, v1.2s, v22.s[4] 3091 smlal2 v0.4h, v1.8h, v1.h[2] 3092 smlal2 v0.4s, v1.8h, v1.h[8] 3093 smlal2 v0.4s, v1.8h, v16.h[2] 3094 smlal2 v0.2s, v1.4s, v1.s[2] 3095 smlal2 v0.2d, v1.4s, v1.s[4] 3096 smlal2 v0.2d, v1.4s, v22.s[4] 3097 3098 // CHECK-ERROR: error: invalid operand for instruction 3099 // CHECK-ERROR: smlal v0.4h, v1.4h, v2.h[2] 3100 // CHECK-ERROR: ^ 3101 // CHECK-ERROR: vector lane must be an integer in range 3102 // CHECK-ERROR: smlal v0.4s, v1.4h, v2.h[8] 3103 // CHECK-ERROR: ^ 3104 // CHECK-ERROR: error: invalid operand for instruction 3105 // CHECK-ERROR: smlal v0.4s, v1.4h, v16.h[2] 3106 // CHECK-ERROR: ^ 3107 // CHECK-ERROR: error: invalid operand for instruction 3108 // CHECK-ERROR: smlal v0.2s, v1.2s, v2.s[1] 3109 // CHECK-ERROR: ^ 3110 // CHECK-ERROR: vector lane must be an integer in range 3111 // CHECK-ERROR: smlal v0.2d, v1.2s, v2.s[4] 3112 // CHECK-ERROR: ^ 3113 // CHECK-ERROR: vector lane must be an integer in range 3114 // CHECK-ERROR: smlal v0.2d, v1.2s, v22.s[4] 3115 // CHECK-ERROR: ^ 3116 // CHECK-ERROR: error: invalid operand for instruction 3117 // CHECK-ERROR: smlal2 v0.4h, v1.8h, v1.h[2] 3118 // CHECK-ERROR: ^ 3119 // CHECK-ERROR: vector lane must be an integer in range 3120 // CHECK-ERROR: smlal2 v0.4s, v1.8h, v1.h[8] 3121 // CHECK-ERROR: ^ 3122 // CHECK-ERROR: error: invalid operand for instruction 3123 // CHECK-ERROR: smlal2 v0.4s, v1.8h, v16.h[2] 3124 // CHECK-ERROR: ^ 3125 // CHECK-ERROR: error: invalid operand for instruction 3126 // CHECK-ERROR: smlal2 v0.2s, v1.4s, v1.s[2] 3127 // CHECK-ERROR: ^ 3128 // CHECK-ERROR: vector lane must be an integer in range 3129 // CHECK-ERROR: smlal2 v0.2d, v1.4s, v1.s[4] 3130 // CHECK-ERROR: ^ 3131 // CHECK-ERROR: vector lane must be an integer in range 3132 // CHECK-ERROR: smlal2 v0.2d, v1.4s, v22.s[4] 3133 // CHECK-ERROR: ^ 3134 3135 smlsl v0.4h, v1.4h, v2.h[2] 3136 smlsl v0.4s, v1.4h, v2.h[8] 3137 smlsl v0.4s, v1.4h, v16.h[2] 3138 smlsl v0.2s, v1.2s, v2.s[1] 3139 smlsl v0.2d, v1.2s, v2.s[4] 3140 smlsl v0.2d, v1.2s, v22.s[4] 3141 smlsl2 v0.4h, v1.8h, v1.h[2] 3142 smlsl2 v0.4s, v1.8h, v1.h[8] 3143 smlsl2 v0.4s, v1.8h, v16.h[2] 3144 smlsl2 v0.2s, v1.4s, v1.s[2] 3145 smlsl2 v0.2d, v1.4s, v1.s[4] 3146 smlsl2 v0.2d, v1.4s, v22.s[4] 3147 3148 // CHECK-ERROR: error: invalid operand for instruction 3149 // CHECK-ERROR: smlsl v0.4h, v1.4h, v2.h[2] 3150 // CHECK-ERROR: ^ 3151 // CHECK-ERROR: vector lane must be an integer in range 3152 // CHECK-ERROR: smlsl v0.4s, v1.4h, v2.h[8] 3153 // CHECK-ERROR: ^ 3154 // CHECK-ERROR: error: invalid operand for instruction 3155 // CHECK-ERROR: smlsl v0.4s, v1.4h, v16.h[2] 3156 // CHECK-ERROR: ^ 3157 // CHECK-ERROR: error: invalid operand for instruction 3158 // CHECK-ERROR: smlsl v0.2s, v1.2s, v2.s[1] 3159 // CHECK-ERROR: ^ 3160 // CHECK-ERROR: vector lane must be an integer in range 3161 // CHECK-ERROR: smlsl v0.2d, v1.2s, v2.s[4] 3162 // CHECK-ERROR: ^ 3163 // CHECK-ERROR: vector lane must be an integer in range 3164 // CHECK-ERROR: smlsl v0.2d, v1.2s, v22.s[4] 3165 // CHECK-ERROR: ^ 3166 // CHECK-ERROR: error: invalid operand for instruction 3167 // CHECK-ERROR: smlsl2 v0.4h, v1.8h, v1.h[2] 3168 // CHECK-ERROR: ^ 3169 // CHECK-ERROR: vector lane must be an integer in range 3170 // CHECK-ERROR: smlsl2 v0.4s, v1.8h, v1.h[8] 3171 // CHECK-ERROR: ^ 3172 // CHECK-ERROR: error: invalid operand for instruction 3173 // CHECK-ERROR: smlsl2 v0.4s, v1.8h, v16.h[2] 3174 // CHECK-ERROR: ^ 3175 // CHECK-ERROR: error: invalid operand for instruction 3176 // CHECK-ERROR: smlsl2 v0.2s, v1.4s, v1.s[2] 3177 // CHECK-ERROR: ^ 3178 // CHECK-ERROR: vector lane must be an integer in range 3179 // CHECK-ERROR: smlsl2 v0.2d, v1.4s, v1.s[4] 3180 // CHECK-ERROR: ^ 3181 // CHECK-ERROR: vector lane must be an integer in range 3182 // CHECK-ERROR: smlsl2 v0.2d, v1.4s, v22.s[4] 3183 // CHECK-ERROR: ^ 3184 3185 umlal v0.4h, v1.4h, v2.h[2] 3186 umlal v0.4s, v1.4h, v2.h[8] 3187 umlal v0.4s, v1.4h, v16.h[2] 3188 umlal v0.2s, v1.2s, v2.s[1] 3189 umlal v0.2d, v1.2s, v2.s[4] 3190 umlal v0.2d, v1.2s, v22.s[4] 3191 umlal2 v0.4h, v1.8h, v1.h[2] 3192 umlal2 v0.4s, v1.8h, v1.h[8] 3193 umlal2 v0.4s, v1.8h, v16.h[2] 3194 umlal2 v0.2s, v1.4s, v1.s[2] 3195 umlal2 v0.2d, v1.4s, v1.s[4] 3196 umlal2 v0.2d, v1.4s, v22.s[4] 3197 3198 // CHECK-ERROR: error: invalid operand for instruction 3199 // CHECK-ERROR: umlal v0.4h, v1.4h, v2.h[2] 3200 // CHECK-ERROR: ^ 3201 // CHECK-ERROR: vector lane must be an integer in range 3202 // CHECK-ERROR: umlal v0.4s, v1.4h, v2.h[8] 3203 // CHECK-ERROR: ^ 3204 // CHECK-ERROR: error: invalid operand for instruction 3205 // CHECK-ERROR: umlal v0.4s, v1.4h, v16.h[2] 3206 // CHECK-ERROR: ^ 3207 // CHECK-ERROR: error: invalid operand for instruction 3208 // CHECK-ERROR: umlal v0.2s, v1.2s, v2.s[1] 3209 // CHECK-ERROR: ^ 3210 // CHECK-ERROR: vector lane must be an integer in range 3211 // CHECK-ERROR: umlal v0.2d, v1.2s, v2.s[4] 3212 // CHECK-ERROR: ^ 3213 // CHECK-ERROR: vector lane must be an integer in range 3214 // CHECK-ERROR: umlal v0.2d, v1.2s, v22.s[4] 3215 // CHECK-ERROR: ^ 3216 // CHECK-ERROR: error: invalid operand for instruction 3217 // CHECK-ERROR: umlal2 v0.4h, v1.8h, v1.h[2] 3218 // CHECK-ERROR: ^ 3219 // CHECK-ERROR: vector lane must be an integer in range 3220 // CHECK-ERROR: umlal2 v0.4s, v1.8h, v1.h[8] 3221 // CHECK-ERROR: ^ 3222 // CHECK-ERROR: error: invalid operand for instruction 3223 // CHECK-ERROR: umlal2 v0.4s, v1.8h, v16.h[2] 3224 // CHECK-ERROR: ^ 3225 // CHECK-ERROR: error: invalid operand for instruction 3226 // CHECK-ERROR: umlal2 v0.2s, v1.4s, v1.s[2] 3227 // CHECK-ERROR: ^ 3228 // CHECK-ERROR: vector lane must be an integer in range 3229 // CHECK-ERROR: umlal2 v0.2d, v1.4s, v1.s[4] 3230 // CHECK-ERROR: ^ 3231 // CHECK-ERROR: vector lane must be an integer in range 3232 // CHECK-ERROR: umlal2 v0.2d, v1.4s, v22.s[4] 3233 // CHECK-ERROR: ^ 3234 3235 umlsl v0.4h, v1.4h, v2.h[2] 3236 umlsl v0.4s, v1.4h, v2.h[8] 3237 umlsl v0.4s, v1.4h, v16.h[2] 3238 umlsl v0.2s, v1.2s, v2.s[3] 3239 umlsl v0.2d, v1.2s, v2.s[4] 3240 umlsl v0.2d, v1.2s, v22.s[4] 3241 umlsl2 v0.4h, v1.8h, v1.h[2] 3242 umlsl2 v0.4s, v1.8h, v1.h[8] 3243 umlsl2 v0.4s, v1.8h, v16.h[2] 3244 umlsl2 v0.2s, v1.4s, v1.s[2] 3245 umlsl2 v0.2d, v1.4s, v1.s[4] 3246 umlsl2 v0.2d, v1.4s, v22.s[4] 3247 3248 // CHECK-ERROR: error: invalid operand for instruction 3249 // CHECK-ERROR: umlsl v0.4h, v1.4h, v2.h[2] 3250 // CHECK-ERROR: ^ 3251 // CHECK-ERROR: vector lane must be an integer in range 3252 // CHECK-ERROR: umlsl v0.4s, v1.4h, v2.h[8] 3253 // CHECK-ERROR: ^ 3254 // CHECK-ERROR: error: invalid operand for instruction 3255 // CHECK-ERROR: umlsl v0.4s, v1.4h, v16.h[2] 3256 // CHECK-ERROR: ^ 3257 // CHECK-ERROR: error: invalid operand for instruction 3258 // CHECK-ERROR: umlsl v0.2s, v1.2s, v2.s[3] 3259 // CHECK-ERROR: ^ 3260 // CHECK-ERROR: vector lane must be an integer in range 3261 // CHECK-ERROR: umlsl v0.2d, v1.2s, v2.s[4] 3262 // CHECK-ERROR: ^ 3263 // CHECK-ERROR: vector lane must be an integer in range 3264 // CHECK-ERROR: umlsl v0.2d, v1.2s, v22.s[4] 3265 // CHECK-ERROR: ^ 3266 // CHECK-ERROR: error: invalid operand for instruction 3267 // CHECK-ERROR: umlsl2 v0.4h, v1.8h, v1.h[2] 3268 // CHECK-ERROR: ^ 3269 // CHECK-ERROR: vector lane must be an integer in range 3270 // CHECK-ERROR: umlsl2 v0.4s, v1.8h, v1.h[8] 3271 // CHECK-ERROR: ^ 3272 // CHECK-ERROR: error: invalid operand for instruction 3273 // CHECK-ERROR: umlsl2 v0.4s, v1.8h, v16.h[2] 3274 // CHECK-ERROR: ^ 3275 // CHECK-ERROR: error: invalid operand for instruction 3276 // CHECK-ERROR: umlsl2 v0.2s, v1.4s, v1.s[2] 3277 // CHECK-ERROR: ^ 3278 // CHECK-ERROR: vector lane must be an integer in range 3279 // CHECK-ERROR: umlsl2 v0.2d, v1.4s, v1.s[4] 3280 // CHECK-ERROR: ^ 3281 // CHECK-ERROR: vector lane must be an integer in range 3282 // CHECK-ERROR: umlsl2 v0.2d, v1.4s, v22.s[4] 3283 // CHECK-ERROR: ^ 3284 3285 sqdmlal v0.4h, v1.4h, v2.h[2] 3286 sqdmlal v0.4s, v1.4h, v2.h[8] 3287 sqdmlal v0.4s, v1.4h, v16.h[2] 3288 sqdmlal v0.2s, v1.2s, v2.s[3] 3289 sqdmlal v0.2d, v1.2s, v2.s[4] 3290 sqdmlal v0.2d, v1.2s, v22.s[4] 3291 sqdmlal2 v0.4h, v1.8h, v1.h[2] 3292 sqdmlal2 v0.4s, v1.8h, v1.h[8] 3293 sqdmlal2 v0.4s, v1.8h, v16.h[2] 3294 sqdmlal2 v0.2s, v1.4s, v1.s[2] 3295 sqdmlal2 v0.2d, v1.4s, v1.s[4] 3296 sqdmlal2 v0.2d, v1.4s, v22.s[4] 3297 3298 // CHECK-ERROR: error: invalid operand for instruction 3299 // CHECK-ERROR: sqdmlal v0.4h, v1.4h, v2.h[2] 3300 // CHECK-ERROR: ^ 3301 // CHECK-ERROR: vector lane must be an integer in range 3302 // CHECK-ERROR: sqdmlal v0.4s, v1.4h, v2.h[8] 3303 // CHECK-ERROR: ^ 3304 // CHECK-ERROR: error: invalid operand for instruction 3305 // CHECK-ERROR: sqdmlal v0.4s, v1.4h, v16.h[2] 3306 // CHECK-ERROR: ^ 3307 // CHECK-ERROR: error: invalid operand for instruction 3308 // CHECK-ERROR: sqdmlal v0.2s, v1.2s, v2.s[3] 3309 // CHECK-ERROR: ^ 3310 // CHECK-ERROR: vector lane must be an integer in range 3311 // CHECK-ERROR: sqdmlal v0.2d, v1.2s, v2.s[4] 3312 // CHECK-ERROR: ^ 3313 // CHECK-ERROR: vector lane must be an integer in range 3314 // CHECK-ERROR: sqdmlal v0.2d, v1.2s, v22.s[4] 3315 // CHECK-ERROR: ^ 3316 // CHECK-ERROR: error: invalid operand for instruction 3317 // CHECK-ERROR: sqdmlal2 v0.4h, v1.8h, v1.h[2] 3318 // CHECK-ERROR: ^ 3319 // CHECK-ERROR: vector lane must be an integer in range 3320 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v1.h[8] 3321 // CHECK-ERROR: ^ 3322 // CHECK-ERROR: error: invalid operand for instruction 3323 // CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v16.h[2] 3324 // CHECK-ERROR: ^ 3325 // CHECK-ERROR: error: invalid operand for instruction 3326 // CHECK-ERROR: sqdmlal2 v0.2s, v1.4s, v1.s[2] 3327 // CHECK-ERROR: ^ 3328 // CHECK-ERROR: vector lane must be an integer in range 3329 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v1.s[4] 3330 // CHECK-ERROR: ^ 3331 // CHECK-ERROR: vector lane must be an integer in range 3332 // CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v22.s[4] 3333 // CHECK-ERROR: ^ 3334 3335 sqdmlsl v0.4h, v1.4h, v2.h[2] 3336 sqdmlsl v0.4s, v1.4h, v2.h[8] 3337 sqdmlsl v0.4s, v1.4h, v16.h[2] 3338 sqdmlsl v0.2s, v1.2s, v2.s[3] 3339 sqdmlsl v0.2d, v1.2s, v2.s[4] 3340 sqdmlsl v0.2d, v1.2s, v22.s[4] 3341 sqdmlsl2 v0.4h, v1.8h, v1.h[2] 3342 sqdmlsl2 v0.4s, v1.8h, v1.h[8] 3343 sqdmlsl2 v0.4s, v1.8h, v16.h[2] 3344 sqdmlsl2 v0.2s, v1.4s, v1.s[2] 3345 sqdmlsl2 v0.2d, v1.4s, v1.s[4] 3346 sqdmlsl2 v0.2d, v1.4s, v22.s[4] 3347 3348 // CHECK-ERROR: error: invalid operand for instruction 3349 // CHECK-ERROR: sqdmlsl v0.4h, v1.4h, v2.h[2] 3350 // CHECK-ERROR: ^ 3351 // CHECK-ERROR: vector lane must be an integer in range 3352 // CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v2.h[8] 3353 // CHECK-ERROR: ^ 3354 // CHECK-ERROR: error: invalid operand for instruction 3355 // CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v16.h[2] 3356 // CHECK-ERROR: ^ 3357 // CHECK-ERROR: error: invalid operand for instruction 3358 // CHECK-ERROR: sqdmlsl v0.2s, v1.2s, v2.s[3] 3359 // CHECK-ERROR: ^ 3360 // CHECK-ERROR: vector lane must be an integer in range 3361 // CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v2.s[4] 3362 // CHECK-ERROR: ^ 3363 // CHECK-ERROR: vector lane must be an integer in range 3364 // CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v22.s[4] 3365 // CHECK-ERROR: ^ 3366 // CHECK-ERROR: error: invalid operand for instruction 3367 // CHECK-ERROR: sqdmlsl2 v0.4h, v1.8h, v1.h[2] 3368 // CHECK-ERROR: ^ 3369 // CHECK-ERROR: vector lane must be an integer in range 3370 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v1.h[8] 3371 // CHECK-ERROR: ^ 3372 // CHECK-ERROR: error: invalid operand for instruction 3373 // CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v16.h[2] 3374 // CHECK-ERROR: ^ 3375 // CHECK-ERROR: error: invalid operand for instruction 3376 // CHECK-ERROR: sqdmlsl2 v0.2s, v1.4s, v1.s[2] 3377 // CHECK-ERROR: ^ 3378 // CHECK-ERROR: vector lane must be an integer in range 3379 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v1.s[4] 3380 // CHECK-ERROR: ^ 3381 // CHECK-ERROR: vector lane must be an integer in range 3382 // CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v22.s[4] 3383 // CHECK-ERROR: ^ 3384 3385 mul v0.4h, v1.4h, v2.h[8] 3386 mul v0.4h, v1.4h, v16.h[8] 3387 mul v0.8h, v1.8h, v2.h[8] 3388 mul v0.8h, v1.8h, v16.h[8] 3389 mul v0.2s, v1.2s, v2.s[4] 3390 mul v0.2s, v1.2s, v22.s[4] 3391 mul v0.4s, v1.4s, v2.s[4] 3392 mul v0.4s, v1.4s, v22.s[4] 3393 mul v0.2d, v1.2d, v2.d[1] 3394 3395 // CHECK-ERROR: vector lane must be an integer in range 3396 // CHECK-ERROR: mul v0.4h, v1.4h, v2.h[8] 3397 // CHECK-ERROR: ^ 3398 // CHECK-ERROR: error: invalid operand for instruction 3399 // CHECK-ERROR: mul v0.4h, v1.4h, v16.h[8] 3400 // CHECK-ERROR: ^ 3401 // CHECK-ERROR: vector lane must be an integer in range 3402 // CHECK-ERROR: mul v0.8h, v1.8h, v2.h[8] 3403 // CHECK-ERROR: ^ 3404 // CHECK-ERROR: invalid operand for instruction 3405 // CHECK-ERROR: mul v0.8h, v1.8h, v16.h[8] 3406 // CHECK-ERROR: ^ 3407 // CHECK-ERROR: vector lane must be an integer in range 3408 // CHECK-ERROR: mul v0.2s, v1.2s, v2.s[4] 3409 // CHECK-ERROR: ^ 3410 // CHECK-ERROR: vector lane must be an integer in range 3411 // CHECK-ERROR: mul v0.2s, v1.2s, v22.s[4] 3412 // CHECK-ERROR: ^ 3413 // CHECK-ERROR: vector lane must be an integer in range 3414 // CHECK-ERROR: mul v0.4s, v1.4s, v2.s[4] 3415 // CHECK-ERROR: ^ 3416 // CHECK-ERROR: vector lane must be an integer in range 3417 // CHECK-ERROR: mul v0.4s, v1.4s, v22.s[4] 3418 // CHECK-ERROR: ^ 3419 3420 fmul v0.4h, v1.4h, v2.h[4] 3421 fmul v0.2s, v1.2s, v2.s[4] 3422 fmul v0.2s, v1.2s, v22.s[4] 3423 fmul v0.4s, v1.4s, v2.s[4] 3424 fmul v0.4s, v1.4s, v22.s[4] 3425 fmul v0.2d, v1.2d, v2.d[2] 3426 fmul v0.2d, v1.2d, v22.d[2] 3427 3428 // CHECK-ERROR: error: invalid operand for instruction 3429 // CHECK-ERROR: mul v0.2d, v1.2d, v2.d[1] 3430 // CHECK-ERROR: ^ 3431 // CHECK-ERROR: error: instruction requires: fullfp16 3432 // CHECK-ERROR: fmul v0.4h, v1.4h, v2.h[4] 3433 // CHECK-ERROR: ^ 3434 // CHECK-ERROR: vector lane must be an integer in range 3435 // CHECK-ERROR: fmul v0.2s, v1.2s, v2.s[4] 3436 // CHECK-ERROR: ^ 3437 // CHECK-ERROR: vector lane must be an integer in range 3438 // CHECK-ERROR: fmul v0.2s, v1.2s, v22.s[4] 3439 // CHECK-ERROR: ^ 3440 // CHECK-ERROR: vector lane must be an integer in range 3441 // CHECK-ERROR: fmul v0.4s, v1.4s, v2.s[4] 3442 // CHECK-ERROR: ^ 3443 // CHECK-ERROR: vector lane must be an integer in range 3444 // CHECK-ERROR: fmul v0.4s, v1.4s, v22.s[4] 3445 // CHECK-ERROR: ^ 3446 // CHECK-ERROR: vector lane must be an integer in range 3447 // CHECK-ERROR: fmul v0.2d, v1.2d, v2.d[2] 3448 // CHECK-ERROR: ^ 3449 // CHECK-ERROR: vector lane must be an integer in range 3450 // CHECK-ERROR: fmul v0.2d, v1.2d, v22.d[2] 3451 // CHECK-ERROR: ^ 3452 3453 fmulx v0.4h, v1.4h, v2.h[4] 3454 fmulx v0.2s, v1.2s, v2.s[4] 3455 fmulx v0.2s, v1.2s, v22.s[4] 3456 fmulx v0.4s, v1.4s, v2.s[4] 3457 fmulx v0.4s, v1.4s, v22.s[4] 3458 fmulx v0.2d, v1.2d, v2.d[2] 3459 fmulx v0.2d, v1.2d, v22.d[2] 3460 3461 // CHECK-ERROR: error: instruction requires: fullfp16 3462 // CHECK-ERROR: fmulx v0.4h, v1.4h, v2.h[4] 3463 // CHECK-ERROR: ^ 3464 // CHECK-ERROR: vector lane must be an integer in range 3465 // CHECK-ERROR: fmulx v0.2s, v1.2s, v2.s[4] 3466 // CHECK-ERROR: ^ 3467 // CHECK-ERROR: vector lane must be an integer in range 3468 // CHECK-ERROR: fmulx v0.2s, v1.2s, v22.s[4] 3469 // CHECK-ERROR: ^ 3470 // CHECK-ERROR: vector lane must be an integer in range 3471 // CHECK-ERROR: fmulx v0.4s, v1.4s, v2.s[4] 3472 // CHECK-ERROR: ^ 3473 // CHECK-ERROR: vector lane must be an integer in range 3474 // CHECK-ERROR: fmulx v0.4s, v1.4s, v22.s[4] 3475 // CHECK-ERROR: ^ 3476 // CHECK-ERROR: vector lane must be an integer in range 3477 // CHECK-ERROR: fmulx v0.2d, v1.2d, v2.d[2] 3478 // CHECK-ERROR: ^ 3479 // CHECK-ERROR: vector lane must be an integer in range 3480 // CHECK-ERROR: fmulx v0.2d, v1.2d, v22.d[2] 3481 // CHECK-ERROR: ^ 3482 3483 smull v0.4h, v1.4h, v2.h[2] 3484 smull v0.4s, v1.4h, v2.h[8] 3485 smull v0.4s, v1.4h, v16.h[4] 3486 smull v0.2s, v1.2s, v2.s[2] 3487 smull v0.2d, v1.2s, v2.s[4] 3488 smull v0.2d, v1.2s, v22.s[4] 3489 smull2 v0.4h, v1.8h, v2.h[2] 3490 smull2 v0.4s, v1.8h, v2.h[8] 3491 smull2 v0.4s, v1.8h, v16.h[4] 3492 smull2 v0.2s, v1.4s, v2.s[2] 3493 smull2 v0.2d, v1.4s, v2.s[4] 3494 smull2 v0.2d, v1.4s, v22.s[4] 3495 3496 // CHECK-ERROR: error: invalid operand for instruction 3497 // CHECK-ERROR: smull v0.4h, v1.4h, v2.h[2] 3498 // CHECK-ERROR: ^ 3499 // CHECK-ERROR: vector lane must be an integer in range 3500 // CHECK-ERROR: smull v0.4s, v1.4h, v2.h[8] 3501 // CHECK-ERROR: ^ 3502 // CHECK-ERROR: error: invalid operand for instruction 3503 // CHECK-ERROR: smull v0.4s, v1.4h, v16.h[4] 3504 // CHECK-ERROR: ^ 3505 // CHECK-ERROR: error: invalid operand for instruction 3506 // CHECK-ERROR: smull v0.2s, v1.2s, v2.s[2] 3507 // CHECK-ERROR: ^ 3508 // CHECK-ERROR: vector lane must be an integer in range 3509 // CHECK-ERROR: smull v0.2d, v1.2s, v2.s[4] 3510 // CHECK-ERROR: ^ 3511 // CHECK-ERROR: vector lane must be an integer in range 3512 // CHECK-ERROR: smull v0.2d, v1.2s, v22.s[4] 3513 // CHECK-ERROR: ^ 3514 // CHECK-ERROR: error: invalid operand for instruction 3515 // CHECK-ERROR: smull2 v0.4h, v1.8h, v2.h[2] 3516 // CHECK-ERROR: ^ 3517 // CHECK-ERROR: vector lane must be an integer in range 3518 // CHECK-ERROR: smull2 v0.4s, v1.8h, v2.h[8] 3519 // CHECK-ERROR: ^ 3520 // CHECK-ERROR: error: invalid operand for instruction 3521 // CHECK-ERROR: smull2 v0.4s, v1.8h, v16.h[4] 3522 // CHECK-ERROR: ^ 3523 // CHECK-ERROR: error: invalid operand for instruction 3524 // CHECK-ERROR: smull2 v0.2s, v1.4s, v2.s[2] 3525 // CHECK-ERROR: ^ 3526 // CHECK-ERROR: vector lane must be an integer in range 3527 // CHECK-ERROR: smull2 v0.2d, v1.4s, v2.s[4] 3528 // CHECK-ERROR: ^ 3529 // CHECK-ERROR: vector lane must be an integer in range 3530 // CHECK-ERROR: smull2 v0.2d, v1.4s, v22.s[4] 3531 // CHECK-ERROR: ^ 3532 3533 umull v0.4h, v1.4h, v2.h[2] 3534 umull v0.4s, v1.4h, v2.h[8] 3535 umull v0.4s, v1.4h, v16.h[4] 3536 umull v0.2s, v1.2s, v2.s[2] 3537 umull v0.2d, v1.2s, v2.s[4] 3538 umull v0.2d, v1.2s, v22.s[4] 3539 umull2 v0.4h, v1.8h, v2.h[2] 3540 umull2 v0.4s, v1.8h, v2.h[8] 3541 umull2 v0.4s, v1.8h, v16.h[4] 3542 umull2 v0.2s, v1.4s, v2.s[2] 3543 umull2 v0.2d, v1.4s, v2.s[4] 3544 umull2 v0.2d, v1.4s, v22.s[4] 3545 3546 // CHECK-ERROR: error: invalid operand for instruction 3547 // CHECK-ERROR: umull v0.4h, v1.4h, v2.h[2] 3548 // CHECK-ERROR: ^ 3549 // CHECK-ERROR: vector lane must be an integer in range 3550 // CHECK-ERROR: umull v0.4s, v1.4h, v2.h[8] 3551 // CHECK-ERROR: ^ 3552 // CHECK-ERROR: error: invalid operand for instruction 3553 // CHECK-ERROR: umull v0.4s, v1.4h, v16.h[4] 3554 // CHECK-ERROR: ^ 3555 // CHECK-ERROR: error: invalid operand for instruction 3556 // CHECK-ERROR: umull v0.2s, v1.2s, v2.s[2] 3557 // CHECK-ERROR: ^ 3558 // CHECK-ERROR: vector lane must be an integer in range 3559 // CHECK-ERROR: umull v0.2d, v1.2s, v2.s[4] 3560 // CHECK-ERROR: ^ 3561 // CHECK-ERROR: vector lane must be an integer in range 3562 // CHECK-ERROR: umull v0.2d, v1.2s, v22.s[4] 3563 // CHECK-ERROR: ^ 3564 // CHECK-ERROR: error: invalid operand for instruction 3565 // CHECK-ERROR: umull2 v0.4h, v1.8h, v2.h[2] 3566 // CHECK-ERROR: ^ 3567 // CHECK-ERROR: vector lane must be an integer in range 3568 // CHECK-ERROR: umull2 v0.4s, v1.8h, v2.h[8] 3569 // CHECK-ERROR: ^ 3570 // CHECK-ERROR: error: invalid operand for instruction 3571 // CHECK-ERROR: umull2 v0.4s, v1.8h, v16.h[4] 3572 // CHECK-ERROR: ^ 3573 // CHECK-ERROR: error: invalid operand for instruction 3574 // CHECK-ERROR: umull2 v0.2s, v1.4s, v2.s[2] 3575 // CHECK-ERROR: ^ 3576 // CHECK-ERROR: vector lane must be an integer in range 3577 // CHECK-ERROR: umull2 v0.2d, v1.4s, v2.s[4] 3578 // CHECK-ERROR: ^ 3579 // CHECK-ERROR: vector lane must be an integer in range 3580 // CHECK-ERROR: umull2 v0.2d, v1.4s, v22.s[4] 3581 // CHECK-ERROR: ^ 3582 3583 sqdmull v0.4h, v1.4h, v2.h[2] 3584 sqdmull v0.4s, v1.4h, v2.h[8] 3585 sqdmull v0.4s, v1.4h, v16.h[4] 3586 sqdmull v0.2s, v1.2s, v2.s[2] 3587 sqdmull v0.2d, v1.2s, v2.s[4] 3588 sqdmull v0.2d, v1.2s, v22.s[4] 3589 sqdmull2 v0.4h, v1.8h, v2.h[2] 3590 sqdmull2 v0.4s, v1.8h, v2.h[8] 3591 sqdmull2 v0.4s, v1.8h, v16.h[4] 3592 sqdmull2 v0.2s, v1.4s, v2.s[2] 3593 sqdmull2 v0.2d, v1.4s, v2.s[4] 3594 sqdmull2 v0.2d, v1.4s, v22.s[4] 3595 3596 // CHECK-ERROR: error: invalid operand for instruction 3597 // CHECK-ERROR: sqdmull v0.4h, v1.4h, v2.h[2] 3598 // CHECK-ERROR: ^ 3599 // CHECK-ERROR: vector lane must be an integer in range 3600 // CHECK-ERROR: sqdmull v0.4s, v1.4h, v2.h[8] 3601 // CHECK-ERROR: ^ 3602 // CHECK-ERROR: error: invalid operand for instruction 3603 // CHECK-ERROR: sqdmull v0.4s, v1.4h, v16.h[4] 3604 // CHECK-ERROR: ^ 3605 // CHECK-ERROR: error: invalid operand for instruction 3606 // CHECK-ERROR: sqdmull v0.2s, v1.2s, v2.s[2] 3607 // CHECK-ERROR: ^ 3608 // CHECK-ERROR: vector lane must be an integer in range 3609 // CHECK-ERROR: sqdmull v0.2d, v1.2s, v2.s[4] 3610 // CHECK-ERROR: ^ 3611 // CHECK-ERROR: vector lane must be an integer in range 3612 // CHECK-ERROR: sqdmull v0.2d, v1.2s, v22.s[4] 3613 // CHECK-ERROR: ^ 3614 // CHECK-ERROR: error: invalid operand for instruction 3615 // CHECK-ERROR: sqdmull2 v0.4h, v1.8h, v2.h[2] 3616 // CHECK-ERROR: ^ 3617 // CHECK-ERROR: vector lane must be an integer in range 3618 // CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v2.h[8] 3619 // CHECK-ERROR: ^ 3620 // CHECK-ERROR: error: invalid operand for instruction 3621 // CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v16.h[4] 3622 // CHECK-ERROR: ^ 3623 // CHECK-ERROR: error: invalid operand for instruction 3624 // CHECK-ERROR: sqdmull2 v0.2s, v1.4s, v2.s[2] 3625 // CHECK-ERROR: ^ 3626 // CHECK-ERROR: vector lane must be an integer in range 3627 // CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v2.s[4] 3628 // CHECK-ERROR: ^ 3629 // CHECK-ERROR: vector lane must be an integer in range 3630 // CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v22.s[4] 3631 // CHECK-ERROR: ^ 3632 3633 sqdmulh v0.4h, v1.4h, v2.h[8] 3634 sqdmulh v0.4h, v1.4h, v16.h[2] 3635 sqdmulh v0.8h, v1.8h, v2.h[8] 3636 sqdmulh v0.8h, v1.8h, v16.h[2] 3637 sqdmulh v0.2s, v1.2s, v2.s[4] 3638 sqdmulh v0.2s, v1.2s, v22.s[4] 3639 sqdmulh v0.4s, v1.4s, v2.s[4] 3640 sqdmulh v0.4s, v1.4s, v22.s[4] 3641 sqdmulh v0.2d, v1.2d, v22.d[1] 3642 3643 // CHECK-ERROR: vector lane must be an integer in range 3644 // CHECK-ERROR: sqdmulh v0.4h, v1.4h, v2.h[8] 3645 // CHECK-ERROR: ^ 3646 // CHECK-ERROR: error: invalid operand for instruction 3647 // CHECK-ERROR: sqdmulh v0.4h, v1.4h, v16.h[2] 3648 // CHECK-ERROR: ^ 3649 // CHECK-ERROR: vector lane must be an integer in range 3650 // CHECK-ERROR: sqdmulh v0.8h, v1.8h, v2.h[8] 3651 // CHECK-ERROR: ^ 3652 // CHECK-ERROR: error: invalid operand for instruction 3653 // CHECK-ERROR: sqdmulh v0.8h, v1.8h, v16.h[2] 3654 // CHECK-ERROR: ^ 3655 // CHECK-ERROR: vector lane must be an integer in range 3656 // CHECK-ERROR: sqdmulh v0.2s, v1.2s, v2.s[4] 3657 // CHECK-ERROR: ^ 3658 // CHECK-ERROR: vector lane must be an integer in range 3659 // CHECK-ERROR: sqdmulh v0.2s, v1.2s, v22.s[4] 3660 // CHECK-ERROR: ^ 3661 // CHECK-ERROR: vector lane must be an integer in range 3662 // CHECK-ERROR: sqdmulh v0.4s, v1.4s, v2.s[4] 3663 // CHECK-ERROR: ^ 3664 // CHECK-ERROR: vector lane must be an integer in range 3665 // CHECK-ERROR: sqdmulh v0.4s, v1.4s, v22.s[4] 3666 // CHECK-ERROR: ^ 3667 // CHECK-ERROR: error: invalid operand for instruction 3668 // CHECK-ERROR: sqdmulh v0.2d, v1.2d, v22.d[1] 3669 // CHECK-ERROR: ^ 3670 3671 sqrdmulh v0.4h, v1.4h, v2.h[8] 3672 sqrdmulh v0.4h, v1.4h, v16.h[2] 3673 sqrdmulh v0.8h, v1.8h, v2.h[8] 3674 sqrdmulh v0.8h, v1.8h, v16.h[2] 3675 sqrdmulh v0.2s, v1.2s, v2.s[4] 3676 sqrdmulh v0.2s, v1.2s, v22.s[4] 3677 sqrdmulh v0.4s, v1.4s, v2.s[4] 3678 sqrdmulh v0.4s, v1.4s, v22.s[4] 3679 sqrdmulh v0.2d, v1.2d, v22.d[1] 3680 3681 // CHECK-ERROR: vector lane must be an integer in range 3682 // CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v2.h[8] 3683 // CHECK-ERROR: ^ 3684 // CHECK-ERROR: error: invalid operand for instruction 3685 // CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v16.h[2] 3686 // CHECK-ERROR: ^ 3687 // CHECK-ERROR: vector lane must be an integer in range 3688 // CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v2.h[8] 3689 // CHECK-ERROR: ^ 3690 // CHECK-ERROR: error: invalid operand for instruction 3691 // CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v16.h[2] 3692 // CHECK-ERROR: ^ 3693 // CHECK-ERROR: vector lane must be an integer in range 3694 // CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v2.s[4] 3695 // CHECK-ERROR: ^ 3696 // CHECK-ERROR: vector lane must be an integer in range 3697 // CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v22.s[4] 3698 // CHECK-ERROR: ^ 3699 // CHECK-ERROR: vector lane must be an integer in range 3700 // CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v2.s[4] 3701 // CHECK-ERROR: ^ 3702 // CHECK-ERROR: vector lane must be an integer in range 3703 // CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v22.s[4] 3704 // CHECK-ERROR: ^ 3705 // CHECK-ERROR: error: invalid operand for instruction 3706 // CHECK-ERROR: sqrdmulh v0.2d, v1.2d, v22.d[1] 3707 // CHECK-ERROR: ^ 3708 3709 //---------------------------------------------------------------------- 3710 // Across vectors 3711 //---------------------------------------------------------------------- 3712 3713 saddlv b0, v1.8b 3714 saddlv b0, v1.16b 3715 saddlv h0, v1.4h 3716 saddlv h0, v1.8h 3717 saddlv s0, v1.2s 3718 saddlv s0, v1.4s 3719 saddlv d0, v1.2s 3720 3721 // CHECK-ERROR: error: invalid operand for instruction 3722 // CHECK-ERROR: saddlv b0, v1.8b 3723 // CHECK-ERROR: ^ 3724 // CHECK-ERROR: error: invalid operand for instruction 3725 // CHECK-ERROR: saddlv b0, v1.16b 3726 // CHECK-ERROR: ^ 3727 // CHECK-ERROR: error: invalid operand for instruction 3728 // CHECK-ERROR: saddlv h0, v1.4h 3729 // CHECK-ERROR: ^ 3730 // CHECK-ERROR: error: invalid operand for instruction 3731 // CHECK-ERROR: saddlv h0, v1.8h 3732 // CHECK-ERROR: ^ 3733 // CHECK-ERROR: error: invalid operand for instruction 3734 // CHECK-ERROR: saddlv s0, v1.2s 3735 // CHECK-ERROR: ^ 3736 // CHECK-ERROR: error: invalid operand for instruction 3737 // CHECK-ERROR: saddlv s0, v1.4s 3738 // CHECK-ERROR: ^ 3739 // CHECK-ERROR: error: invalid operand for instruction 3740 // CHECK-ERROR: saddlv d0, v1.2s 3741 // CHECK-ERROR: ^ 3742 3743 uaddlv b0, v1.8b 3744 uaddlv b0, v1.16b 3745 uaddlv h0, v1.4h 3746 uaddlv h0, v1.8h 3747 uaddlv s0, v1.2s 3748 uaddlv s0, v1.4s 3749 uaddlv d0, v1.2s 3750 3751 // CHECK-ERROR: error: invalid operand for instruction 3752 // CHECK-ERROR: uaddlv b0, v1.8b 3753 // CHECK-ERROR: ^ 3754 // CHECK-ERROR: error: invalid operand for instruction 3755 // CHECK-ERROR: uaddlv b0, v1.16b 3756 // CHECK-ERROR: ^ 3757 // CHECK-ERROR: error: invalid operand for instruction 3758 // CHECK-ERROR: uaddlv h0, v1.4h 3759 // CHECK-ERROR: ^ 3760 // CHECK-ERROR: error: invalid operand for instruction 3761 // CHECK-ERROR: uaddlv h0, v1.8h 3762 // CHECK-ERROR: ^ 3763 // CHECK-ERROR: error: invalid operand for instruction 3764 // CHECK-ERROR: uaddlv s0, v1.2s 3765 // CHECK-ERROR: ^ 3766 // CHECK-ERROR: error: invalid operand for instruction 3767 // CHECK-ERROR: uaddlv s0, v1.4s 3768 // CHECK-ERROR: ^ 3769 // CHECK-ERROR: error: invalid operand for instruction 3770 // CHECK-ERROR: uaddlv d0, v1.2s 3771 // CHECK-ERROR: ^ 3772 3773 smaxv s0, v1.2s 3774 sminv s0, v1.2s 3775 umaxv s0, v1.2s 3776 uminv s0, v1.2s 3777 addv s0, v1.2s 3778 3779 // CHECK-ERROR: error: invalid operand for instruction 3780 // CHECK-ERROR: smaxv s0, v1.2s 3781 // CHECK-ERROR: ^ 3782 // CHECK-ERROR: error: invalid operand for instruction 3783 // CHECK-ERROR: sminv s0, v1.2s 3784 // CHECK-ERROR: ^ 3785 // CHECK-ERROR: error: invalid operand for instruction 3786 // CHECK-ERROR: umaxv s0, v1.2s 3787 // CHECK-ERROR: ^ 3788 // CHECK-ERROR: error: invalid operand for instruction 3789 // CHECK-ERROR: uminv s0, v1.2s 3790 // CHECK-ERROR: ^ 3791 // CHECK-ERROR: error: invalid operand for instruction 3792 // CHECK-ERROR: addv s0, v1.2s 3793 // CHECK-ERROR: ^ 3794 3795 smaxv d0, v1.2d 3796 sminv d0, v1.2d 3797 umaxv d0, v1.2d 3798 uminv d0, v1.2d 3799 addv d0, v1.2d 3800 3801 // CHECK-ERROR: error: invalid operand for instruction 3802 // CHECK-ERROR: smaxv d0, v1.2d 3803 // CHECK-ERROR: ^ 3804 // CHECK-ERROR: error: invalid operand for instruction 3805 // CHECK-ERROR: sminv d0, v1.2d 3806 // CHECK-ERROR: ^ 3807 // CHECK-ERROR: error: invalid operand for instruction 3808 // CHECK-ERROR: umaxv d0, v1.2d 3809 // CHECK-ERROR: ^ 3810 // CHECK-ERROR: error: invalid operand for instruction 3811 // CHECK-ERROR: uminv d0, v1.2d 3812 // CHECK-ERROR: ^ 3813 // CHECK-ERROR: error: invalid operand for instruction 3814 // CHECK-ERROR: addv d0, v1.2d 3815 // CHECK-ERROR: ^ 3816 3817 fmaxnmv b0, v1.16b 3818 fminnmv b0, v1.16b 3819 fmaxv b0, v1.16b 3820 fminv b0, v1.16b 3821 3822 // CHECK-ERROR: error: invalid operand for instruction 3823 // CHECK-ERROR: fmaxnmv b0, v1.16b 3824 // CHECK-ERROR: ^ 3825 // CHECK-ERROR: error: invalid operand for instruction 3826 // CHECK-ERROR: fminnmv b0, v1.16b 3827 // CHECK-ERROR: ^ 3828 // CHECK-ERROR: error: invalid operand for instruction 3829 // CHECK-ERROR: fmaxv b0, v1.16b 3830 // CHECK-ERROR: ^ 3831 // CHECK-ERROR: error: invalid operand for instruction 3832 // CHECK-ERROR: fminv b0, v1.16b 3833 // CHECK-ERROR: ^ 3834 3835 fmaxnmv h0, v1.8h 3836 fminnmv h0, v1.8h 3837 fmaxv h0, v1.8h 3838 fminv h0, v1.8h 3839 3840 // CHECK-ERROR: error: instruction requires: fullfp16 3841 // CHECK-ERROR: fmaxnmv h0, v1.8h 3842 // CHECK-ERROR: ^ 3843 // CHECK-ERROR: error: instruction requires: fullfp16 3844 // CHECK-ERROR: fminnmv h0, v1.8h 3845 // CHECK-ERROR: ^ 3846 // CHECK-ERROR: error: instruction requires: fullfp16 3847 // CHECK-ERROR: fmaxv h0, v1.8h 3848 // CHECK-ERROR: ^ 3849 // CHECK-ERROR: error: instruction requires: fullfp16 3850 // CHECK-ERROR: fminv h0, v1.8h 3851 // CHECK-ERROR: ^ 3852 3853 fmaxnmv d0, v1.2d 3854 fminnmv d0, v1.2d 3855 fmaxv d0, v1.2d 3856 fminv d0, v1.2d 3857 3858 // CHECK-ERROR: error: invalid operand for instruction 3859 // CHECK-ERROR: fmaxnmv d0, v1.2d 3860 // CHECK-ERROR: ^ 3861 // CHECK-ERROR: error: invalid operand for instruction 3862 // CHECK-ERROR: fminnmv d0, v1.2d 3863 // CHECK-ERROR: ^ 3864 // CHECK-ERROR: error: invalid operand for instruction 3865 // CHECK-ERROR: fmaxv d0, v1.2d 3866 // CHECK-ERROR: ^ 3867 // CHECK-ERROR: error: invalid operand for instruction 3868 // CHECK-ERROR: fminv d0, v1.2d 3869 // CHECK-ERROR: ^ 3870 3871 //---------------------------------------------------------------------- 3872 // Floating-point Multiply Extended 3873 //---------------------------------------------------------------------- 3874 3875 fmulx s20, h22, s15 3876 fmulx d23, d11, s1 3877 3878 // CHECK-ERROR: error: invalid operand for instruction 3879 // CHECK-ERROR: fmulx s20, h22, s15 3880 // CHECK-ERROR: ^ 3881 // CHECK-ERROR: error: invalid operand for instruction 3882 // CHECK-ERROR: fmulx d23, d11, s1 3883 // CHECK-ERROR: ^ 3884 3885 //---------------------------------------------------------------------- 3886 // Floating-point Reciprocal Step 3887 //---------------------------------------------------------------------- 3888 3889 frecps s21, s16, h13 3890 frecps d22, s30, d21 3891 3892 // CHECK-ERROR: error: invalid operand for instruction 3893 // CHECK-ERROR: frecps s21, s16, h13 3894 // CHECK-ERROR: ^ 3895 // CHECK-ERROR: error: invalid operand for instruction 3896 // CHECK-ERROR: frecps d22, s30, d21 3897 // CHECK-ERROR: ^ 3898 3899 //---------------------------------------------------------------------- 3900 // Floating-point Reciprocal Square Root Step 3901 //---------------------------------------------------------------------- 3902 3903 frsqrts s21, h5, s12 3904 frsqrts d8, s22, d18 3905 3906 // CHECK-ERROR: error: invalid operand for instruction 3907 // CHECK-ERROR: frsqrts s21, h5, s12 3908 // CHECK-ERROR: ^ 3909 // CHECK-ERROR: error: invalid operand for instruction 3910 // CHECK-ERROR: frsqrts d8, s22, d18 3911 // CHECK-ERROR: ^ 3912 3913 //---------------------------------------------------------------------- 3914 // Vector load/store multiple N-element structure (class SIMD lselem) 3915 //---------------------------------------------------------------------- 3916 ld1 {x3}, [x2] 3917 ld1 {v4}, [x0] 3918 ld1 {v32.16b}, [x0] 3919 ld1 {v15.8h}, [x32] 3920 // CHECK-ERROR: error: vector register expected 3921 // CHECK-ERROR: ld1 {x3}, [x2] 3922 // CHECK-ERROR: ^ 3923 // CHECK-ERROR: error: invalid operand for instruction 3924 // CHECK-ERROR: ld1 {v4}, [x0] 3925 // CHECK-ERROR: ^ 3926 // CHECK-ERROR: error: vector register expected 3927 // CHECK-ERROR: ld1 {v32.16b}, [x0] 3928 // CHECK-ERROR: ^ 3929 // CHECK-ERROR: error: invalid operand for instruction 3930 // CHECK-ERROR: ld1 {v15.8h}, [x32] 3931 // CHECK-ERROR: ^ 3932 3933 ld1 {v0.16b, v2.16b}, [x0] 3934 ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0] 3935 ld1 v0.8b, v1.8b}, [x0] 3936 ld1 {v0.8h-v4.8h}, [x0] 3937 ld1 {v1.8h-v1.8h}, [x0] 3938 ld1 {v15.8h-v17.4h}, [x15] 3939 ld1 {v0.8b-v2.8b, [x0] 3940 // CHECK-ERROR: error: registers must be sequential 3941 // CHECK-ERROR: ld1 {v0.16b, v2.16b}, [x0] 3942 // CHECK-ERROR: ^ 3943 // CHECK-ERROR: error: invalid number of vectors 3944 // CHECK-ERROR: ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0] 3945 // CHECK-ERROR: ^ 3946 // CHECK-ERROR: error: unexpected token in argument list 3947 // CHECK-ERROR: ld1 v0.8b, v1.8b}, [x0] 3948 // CHECK-ERROR: ^ 3949 // CHECK-ERROR: error: invalid number of vectors 3950 // CHECK-ERROR: ld1 {v0.8h-v4.8h}, [x0] 3951 // CHECK-ERROR: ^ 3952 // CHECK-ERROR: error: invalid number of vectors 3953 // CHECK-ERROR: ld1 {v1.8h-v1.8h}, [x0] 3954 // CHECK-ERROR: ^ 3955 // CHECK-ERROR: error: mismatched register size suffix 3956 // CHECK-ERROR: ld1 {v15.8h-v17.4h}, [x15] 3957 // CHECK-ERROR: ^ 3958 // CHECK-ERROR: error: '}' expected 3959 // CHECK-ERROR: ld1 {v0.8b-v2.8b, [x0] 3960 // CHECK-ERROR: ^ 3961 3962 ld2 {v15.8h, v16.4h}, [x15] 3963 ld2 {v0.8b, v2.8b}, [x0] 3964 ld2 {v15.4h, v16.4h, v17.4h}, [x32] 3965 ld2 {v15.8h-v16.4h}, [x15] 3966 ld2 {v0.2d-v2.2d}, [x0] 3967 // CHECK-ERROR: error: mismatched register size suffix 3968 // CHECK-ERROR: ld2 {v15.8h, v16.4h}, [x15] 3969 // CHECK-ERROR: ^ 3970 // CHECK-ERROR: error: registers must be sequential 3971 // CHECK-ERROR: ld2 {v0.8b, v2.8b}, [x0] 3972 // CHECK-ERROR: ^ 3973 // CHECK-ERROR: ld2 {v15.4h, v16.4h, v17.4h}, [x32] 3974 // CHECK-ERROR: ^ 3975 // CHECK-ERROR: error: mismatched register size suffix 3976 // CHECK-ERROR: ld2 {v15.8h-v16.4h}, [x15] 3977 // CHECK-ERROR: ^ 3978 // CHECK-ERROR: error: invalid operand for instruction 3979 // CHECK-ERROR: ld2 {v0.2d-v2.2d}, [x0] 3980 // CHECK-ERROR: ^ 3981 3982 ld3 {v15.8h, v16.8h, v17.4h}, [x15] 3983 ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0] 3984 ld3 {v0.8b, v2.8b, v3.8b}, [x0] 3985 ld3 {v15.8h-v17.4h}, [x15] 3986 ld3 {v31.4s-v2.4s}, [sp] 3987 // CHECK-ERROR: error: mismatched register size suffix 3988 // CHECK-ERROR: ld3 {v15.8h, v16.8h, v17.4h}, [x15] 3989 // CHECK-ERROR: ^ 3990 // CHECK-ERROR: error: mismatched register size suffix 3991 // CHECK-ERROR: ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0] 3992 // CHECK-ERROR: ^ 3993 // CHECK-ERROR: error: registers must be sequential 3994 // CHECK-ERROR: ld3 {v0.8b, v2.8b, v3.8b}, [x0] 3995 // CHECK-ERROR: ^ 3996 // CHECK-ERROR: error: mismatched register size suffix 3997 // CHECK-ERROR: ld3 {v15.8h-v17.4h}, [x15] 3998 // CHECK-ERROR: ^ 3999 // CHECK-ERROR: error: invalid operand for instruction 4000 // CHECK-ERROR: ld3 {v31.4s-v2.4s}, [sp] 4001 // CHECK-ERROR: ^ 4002 4003 ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15] 4004 ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0] 4005 ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31] 4006 ld4 {v15.8h-v18.4h}, [x15] 4007 ld4 {v31.2s-v1.2s}, [x31] 4008 // CHECK-ERROR: error: mismatched register size suffix 4009 // CHECK-ERROR: ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15] 4010 // CHECK-ERROR: ^ 4011 // CHECK-ERROR: error: registers must be sequential 4012 // CHECK-ERROR: ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0] 4013 // CHECK-ERROR: ^ 4014 // CHECK-ERROR: error: invalid number of vectors 4015 // CHECK-ERROR: ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31] 4016 // CHECK-ERROR: ^ 4017 // CHECK-ERROR: error: mismatched register size suffix 4018 // CHECK-ERROR: ld4 {v15.8h-v18.4h}, [x15] 4019 // CHECK-ERROR: ^ 4020 // CHECK-ERROR: error: invalid operand for instruction 4021 // CHECK-ERROR: ld4 {v31.2s-v1.2s}, [x31] 4022 // CHECK-ERROR: ^ 4023 4024 st1 {x3}, [x2] 4025 st1 {v4}, [x0] 4026 st1 {v32.16b}, [x0] 4027 st1 {v15.8h}, [x32] 4028 // CHECK-ERROR: error: vector register expected 4029 // CHECK-ERROR: st1 {x3}, [x2] 4030 // CHECK-ERROR: ^ 4031 // CHECK-ERROR: error: invalid operand for instruction 4032 // CHECK-ERROR: st1 {v4}, [x0] 4033 // CHECK-ERROR: ^ 4034 // CHECK-ERROR: error: vector register expected 4035 // CHECK-ERROR: st1 {v32.16b}, [x0] 4036 // CHECK-ERROR: ^ 4037 // CHECK-ERROR: error: invalid operand for instruction 4038 // CHECK-ERROR: st1 {v15.8h}, [x32] 4039 // CHECK-ERROR: ^ 4040 4041 st1 {v0.16b, v2.16b}, [x0] 4042 st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0] 4043 st1 v0.8b, v1.8b}, [x0] 4044 st1 {v0.8h-v4.8h}, [x0] 4045 st1 {v1.8h-v1.8h}, [x0] 4046 st1 {v15.8h-v17.4h}, [x15] 4047 st1 {v0.8b-v2.8b, [x0] 4048 // CHECK-ERROR: error: registers must be sequential 4049 // CHECK-ERROR: st1 {v0.16b, v2.16b}, [x0] 4050 // CHECK-ERROR: ^ 4051 // CHECK-ERROR: error: invalid number of vectors 4052 // CHECK-ERROR: st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0] 4053 // CHECK-ERROR: ^ 4054 // CHECK-ERROR: error: unexpected token in argument list 4055 // CHECK-ERROR: st1 v0.8b, v1.8b}, [x0] 4056 // CHECK-ERROR: ^ 4057 // CHECK-ERROR: error: invalid number of vectors 4058 // CHECK-ERROR: st1 {v0.8h-v4.8h}, [x0] 4059 // CHECK-ERROR: ^ 4060 // CHECK-ERROR: error: invalid number of vectors 4061 // CHECK-ERROR: st1 {v1.8h-v1.8h}, [x0] 4062 // CHECK-ERROR: ^ 4063 // CHECK-ERROR: error: mismatched register size suffix 4064 // CHECK-ERROR: st1 {v15.8h-v17.4h}, [x15] 4065 // CHECK-ERROR: ^ 4066 // CHECK-ERROR: error: '}' expected 4067 // CHECK-ERROR: st1 {v0.8b-v2.8b, [x0] 4068 // CHECK-ERROR: ^ 4069 4070 st2 {v15.8h, v16.4h}, [x15] 4071 st2 {v0.8b, v2.8b}, [x0] 4072 st2 {v15.4h, v16.4h, v17.4h}, [x30] 4073 st2 {v15.8h-v16.4h}, [x15] 4074 st2 {v0.2d-v2.2d}, [x0] 4075 // CHECK-ERROR: error: mismatched register size suffix 4076 // CHECK-ERROR: st2 {v15.8h, v16.4h}, [x15] 4077 // CHECK-ERROR: ^ 4078 // CHECK-ERROR: error: registers must be sequential 4079 // CHECK-ERROR: st2 {v0.8b, v2.8b}, [x0] 4080 // CHECK-ERROR: ^ 4081 // CHECK-ERROR: error: invalid operand for instruction 4082 // CHECK-ERROR: st2 {v15.4h, v16.4h, v17.4h}, [x30] 4083 // CHECK-ERROR: ^ 4084 // CHECK-ERROR: error: mismatched register size suffix 4085 // CHECK-ERROR: st2 {v15.8h-v16.4h}, [x15] 4086 // CHECK-ERROR: ^ 4087 // CHECK-ERROR: error: invalid operand for instruction 4088 // CHECK-ERROR: st2 {v0.2d-v2.2d}, [x0] 4089 // CHECK-ERROR: ^ 4090 4091 st3 {v15.8h, v16.8h, v17.4h}, [x15] 4092 st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0] 4093 st3 {v0.8b, v2.8b, v3.8b}, [x0] 4094 st3 {v15.8h-v17.4h}, [x15] 4095 st3 {v31.4s-v2.4s}, [sp] 4096 // CHECK-ERROR: error: mismatched register size suffix 4097 // CHECK-ERROR: st3 {v15.8h, v16.8h, v17.4h}, [x15] 4098 // CHECK-ERROR: ^ 4099 // CHECK-ERROR: error: mismatched register size suffix 4100 // CHECK-ERROR: st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0] 4101 // CHECK-ERROR: ^ 4102 // CHECK-ERROR: error: registers must be sequential 4103 // CHECK-ERROR: st3 {v0.8b, v2.8b, v3.8b}, [x0] 4104 // CHECK-ERROR: ^ 4105 // CHECK-ERROR: error: mismatched register size suffix 4106 // CHECK-ERROR: st3 {v15.8h-v17.4h}, [x15] 4107 // CHECK-ERROR: ^ 4108 // CHECK-ERROR: error: invalid operand for instruction 4109 // CHECK-ERROR: st3 {v31.4s-v2.4s}, [sp] 4110 // CHECK-ERROR: ^ 4111 4112 st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15] 4113 st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0] 4114 st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31] 4115 st4 {v15.8h-v18.4h}, [x15] 4116 st4 {v31.2s-v1.2s}, [x31] 4117 // CHECK-ERROR: error: mismatched register size suffix 4118 // CHECK-ERROR: st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15] 4119 // CHECK-ERROR: ^ 4120 // CHECK-ERROR: error: registers must be sequential 4121 // CHECK-ERROR: st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0] 4122 // CHECK-ERROR: ^ 4123 // CHECK-ERROR: error: invalid number of vectors 4124 // CHECK-ERROR: st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31] 4125 // CHECK-ERROR: ^ 4126 // CHECK-ERROR: error: mismatched register size suffix 4127 // CHECK-ERROR: st4 {v15.8h-v18.4h}, [x15] 4128 // CHECK-ERROR: ^ 4129 // CHECK-ERROR: error: invalid operand for instruction 4130 // CHECK-ERROR: st4 {v31.2s-v1.2s}, [x31] 4131 // CHECK-ERROR: ^ 4132 4133 //---------------------------------------------------------------------- 4134 // Vector post-index load/store multiple N-element structure 4135 // (class SIMD lselem-post) 4136 //---------------------------------------------------------------------- 4137 ld1 {v0.16b}, [x0], #8 4138 ld1 {v0.8h, v1.16h}, [x0], x1 4139 ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24 4140 // CHECK-ERROR: error: invalid operand for instruction 4141 // CHECK-ERROR: ld1 {v0.16b}, [x0], #8 4142 // CHECK-ERROR: ^ 4143 // CHECK-ERROR: error: invalid vector kind qualifier 4144 // CHECK-ERROR: ld1 {v0.8h, v1.16h}, [x0], x1 4145 // CHECK-ERROR: ^ 4146 // CHECK-ERROR: error: invalid operand for instruction 4147 // CHECK-ERROR: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24 4148 // CHECK-ERROR: ^ 4149 4150 ld2 {v0.16b, v1.16b}, [x0], #16 4151 ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48 4152 ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1 4153 // CHECK-ERROR: error: invalid operand for instruction 4154 // CHECK-ERROR: ld2 {v0.16b, v1.16b}, [x0], #16 4155 // CHECK-ERROR: ^ 4156 // CHECK-ERROR: error: invalid operand for instruction 4157 // CHECK-ERROR: ld3 {v5.2s, v6.2s, v7.2s}, [x1], #48 4158 // CHECK-ERROR: ^ 4159 // CHECK-ERROR: error: mismatched register size suffix 4160 // CHECK-ERROR: ld4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1 4161 // CHECK-ERROR: ^ 4162 4163 st1 {v0.16b}, [x0], #8 4164 st1 {v0.8h, v1.16h}, [x0], x1 4165 st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24 4166 // CHECK-ERROR: error: invalid operand for instruction 4167 // CHECK-ERROR: st1 {v0.16b}, [x0], #8 4168 // CHECK-ERROR: ^ 4169 // CHECK-ERROR: error: invalid vector kind qualifier 4170 // CHECK-ERROR: st1 {v0.8h, v1.16h}, [x0], x1 4171 // CHECK-ERROR: ^ 4172 // CHECK-ERROR: error: invalid operand for instruction 4173 // CHECK-ERROR: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], #24 4174 ^ 4175 4176 st2 {v0.16b, v1.16b}, [x0], #16 4177 st3 {v5.2s, v6.2s, v7.2s}, [x1], #48 4178 st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1 4179 // CHECK-ERROR: error: invalid operand for instruction 4180 // CHECK-ERROR: st2 {v0.16b, v1.16b}, [x0], #16 4181 // CHECK-ERROR: ^ 4182 // CHECK-ERROR: error: invalid operand for instruction 4183 // CHECK-ERROR: st3 {v5.2s, v6.2s, v7.2s}, [x1], #48 4184 // CHECK-ERROR: ^ 4185 // CHECK-ERROR: error: mismatched register size suffix 4186 // CHECK-ERROR: st4 {v31.2d, v0.2d, v1.2d, v2.1d}, [x3], x1 4187 // CHECK-ERROR: ^ 4188 4189 //------------------------------------------------------------------------------ 4190 // Load single N-element structure to all lanes of N consecutive 4191 // registers (N = 1,2,3,4) 4192 //------------------------------------------------------------------------------ 4193 ld1r {x1}, [x0] 4194 ld2r {v31.4s, v0.2s}, [sp] 4195 ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0] 4196 ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp] 4197 // CHECK-ERROR: error: vector register expected 4198 // CHECK-ERROR: ld1r {x1}, [x0] 4199 // CHECK-ERROR: ^ 4200 // CHECK-ERROR: error: mismatched register size suffix 4201 // CHECK-ERROR: ld2r {v31.4s, v0.2s}, [sp] 4202 // CHECK-ERROR: ^ 4203 // CHECK-ERROR: error: invalid operand for instruction 4204 // CHECK-ERROR: ld3r {v0.8b, v1.8b, v2.8b, v3.8b}, [x0] 4205 // CHECK-ERROR: ^ 4206 // CHECK-ERROR: error: mismatched register size suffix 4207 // CHECK-ERROR: ld4r {v31.2s, v0.2s, v1.2d, v2.2s}, [sp] 4208 // CHECK-ERROR: ^ 4209 4210 //------------------------------------------------------------------------------ 4211 // Load/Store single N-element structure to/from one lane of N consecutive 4212 // registers (N = 1, 2,3,4) 4213 //------------------------------------------------------------------------------ 4214 ld1 {v0.b}[16], [x0] 4215 ld2 {v15.h, v16.h}[8], [x15] 4216 ld3 {v31.s, v0.s, v1.s}[-1], [sp] 4217 ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0] 4218 // CHECK-ERROR: vector lane must be an integer in range 4219 // CHECK-ERROR: ld1 {v0.b}[16], [x0] 4220 // CHECK-ERROR: ^ 4221 // CHECK-ERROR: vector lane must be an integer in range 4222 // CHECK-ERROR: ld2 {v15.h, v16.h}[8], [x15] 4223 // CHECK-ERROR: ^ 4224 // CHECK-ERROR: error: vector lane must be an integer in range 4225 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.s}[-1], [sp] 4226 // CHECK-ERROR: ^ 4227 // CHECK-ERROR: vector lane must be an integer in range 4228 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[2], [x0] 4229 // CHECK-ERROR: ^ 4230 4231 st1 {v0.d}[16], [x0] 4232 st2 {v31.s, v0.s}[3], [8] 4233 st3 {v15.h, v16.h, v17.h}[-1], [x15] 4234 st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0] 4235 // CHECK-ERROR: vector lane must be an integer in range 4236 // CHECK-ERROR: st1 {v0.d}[16], [x0] 4237 // CHECK-ERROR: ^ 4238 // CHECK-ERROR: error: invalid operand for instruction 4239 // CHECK-ERROR: st2 {v31.s, v0.s}[3], [8] 4240 // CHECK-ERROR: ^ 4241 // CHECK-ERROR: error: vector lane must be an integer in range 4242 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[-1], [x15] 4243 // CHECK-ERROR: ^ 4244 // CHECK-ERROR: vector lane must be an integer in range 4245 // CHECK-ERROR: st4 {v0.d, v1.d, v2.d, v3.d}[2], [x0] 4246 // CHECK-ERROR: ^ 4247 4248 //------------------------------------------------------------------------------ 4249 // Post-index of load single N-element structure to all lanes of N consecutive 4250 // registers (N = 1,2,3,4) 4251 //------------------------------------------------------------------------------ 4252 ld1r {v15.8h}, [x15], #5 4253 ld2r {v0.2d, v1.2d}, [x0], #7 4254 ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1 4255 ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp 4256 // CHECK-ERROR: error: invalid operand for instruction 4257 // CHECK-ERROR: ld1r {v15.8h}, [x15], #5 4258 // CHECK-ERROR: ^ 4259 // CHECK-ERROR: error: invalid operand for instruction 4260 // CHECK-ERROR: ld2r {v0.2d, v1.2d}, [x0], #7 4261 // CHECK-ERROR: ^ 4262 // CHECK-ERROR: error: invalid operand for instruction 4263 // CHECK-ERROR: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #1 4264 // CHECK-ERROR: ^ 4265 // CHECK-ERROR: error: invalid operand for instruction 4266 // CHECK-ERROR: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], sp 4267 // CHECK-ERROR: ^ 4268 4269 //------------------------------------------------------------------------------ 4270 // Post-index of Load/Store single N-element structure to/from one lane of N 4271 // consecutive registers (N = 1, 2,3,4) 4272 //------------------------------------------------------------------------------ 4273 ld1 {v0.b}[0], [x0], #2 4274 ld2 {v15.h, v16.h}[0], [x15], #3 4275 ld3 {v31.s, v0.s, v1.d}[0], [sp], x9 4276 ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24 4277 // CHECK-ERROR: error: invalid operand for instruction 4278 // CHECK-ERROR: ld1 {v0.b}[0], [x0], #2 4279 // CHECK-ERROR: ^ 4280 // CHECK-ERROR: error: invalid operand for instruction 4281 // CHECK-ERROR: ld2 {v15.h, v16.h}[0], [x15], #3 4282 // CHECK-ERROR: ^ 4283 // CHECK-ERROR: error: mismatched register size suffix 4284 // CHECK-ERROR: ld3 {v31.s, v0.s, v1.d}[0], [sp], x9 4285 // CHECK-ERROR: ^ 4286 // CHECK-ERROR: error: invalid operand for instruction 4287 // CHECK-ERROR: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24 4288 // CHECK-ERROR: ^ 4289 4290 st1 {v0.d}[0], [x0], #7 4291 st2 {v31.s, v0.s}[0], [sp], #6 4292 st3 {v15.h, v16.h, v17.h}[0], [x15], #8 4293 st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1 4294 // CHECK-ERROR: error: invalid operand for instruction 4295 // CHECK-ERROR: st1 {v0.d}[0], [x0], #7 4296 // CHECK-ERROR: ^ 4297 // CHECK-ERROR: error: invalid operand for instruction 4298 // CHECK-ERROR: st2 {v31.s, v0.s}[0], [sp], #6 4299 // CHECK-ERROR: ^ 4300 // CHECK-ERROR: error: invalid operand for instruction 4301 // CHECK-ERROR: st3 {v15.h, v16.h, v17.h}[0], [x15], #8 4302 // CHECK-ERROR: ^ 4303 // CHECK-ERROR: error: invalid operand for instruction 4304 // CHECK-ERROR: st4 {v0.b, v1.b, v2.b, v3.b}[1], [x0], #1 4305 // CHECK-ERROR: ^ 4306 4307 4308 ins v2.b[16], w1 4309 ins v7.h[8], w14 4310 ins v20.s[5], w30 4311 ins v1.d[2], x7 4312 ins v2.b[3], b1 4313 ins v7.h[2], h14 4314 ins v20.s[1], s30 4315 ins v1.d[0], d7 4316 4317 // CHECK-ERROR: vector lane must be an integer in range 4318 // CHECK-ERROR: ins v2.b[16], w1 4319 // CHECK-ERROR: ^ 4320 // CHECK-ERROR: vector lane must be an integer in range 4321 // CHECK-ERROR: ins v7.h[8], w14 4322 // CHECK-ERROR: ^ 4323 // CHECK-ERROR: vector lane must be an integer in range 4324 // CHECK-ERROR: ins v20.s[5], w30 4325 // CHECK-ERROR: ^ 4326 // CHECK-ERROR: vector lane must be an integer in range 4327 // CHECK-ERROR: ins v1.d[2], x7 4328 // CHECK-ERROR: ^ 4329 // CHECK-ERROR: error: invalid operand for instruction 4330 // CHECK-ERROR: ins v2.b[3], b1 4331 // CHECK-ERROR: ^ 4332 // CHECK-ERROR: error: invalid operand for instruction 4333 // CHECK-ERROR: ins v7.h[2], h14 4334 // CHECK-ERROR: ^ 4335 // CHECK-ERROR: error: invalid operand for instruction 4336 // CHECK-ERROR: ins v20.s[1], s30 4337 // CHECK-ERROR: ^ 4338 // CHECK-ERROR: error: invalid operand for instruction 4339 // CHECK-ERROR: ins v1.d[0], d7 4340 // CHECK-ERROR: ^ 4341 4342 smov w1, v0.b[16] 4343 smov w14, v6.h[8] 4344 smov x1, v0.b[16] 4345 smov x14, v6.h[8] 4346 smov x20, v9.s[5] 4347 smov w1, v0.d[0] 4348 smov w14, v6.d[1] 4349 smov x1, v0.d[0] 4350 smov x14, v6.d[1] 4351 smov x20, v9.d[0] 4352 4353 // CHECK-ERROR: vector lane must be an integer in range 4354 // CHECK-ERROR: smov w1, v0.b[16] 4355 // CHECK-ERROR: ^ 4356 // CHECK-ERROR: vector lane must be an integer in range 4357 // CHECK-ERROR: smov w14, v6.h[8] 4358 // CHECK-ERROR: ^ 4359 // CHECK-ERROR: vector lane must be an integer in range 4360 // CHECK-ERROR: smov x1, v0.b[16] 4361 // CHECK-ERROR: ^ 4362 // CHECK-ERROR: vector lane must be an integer in range 4363 // CHECK-ERROR: smov x14, v6.h[8] 4364 // CHECK-ERROR: ^ 4365 // CHECK-ERROR: vector lane must be an integer in range 4366 // CHECK-ERROR: smov x20, v9.s[5] 4367 // CHECK-ERROR: ^ 4368 // CHECK-ERROR: error: invalid operand for instruction 4369 // CHECK-ERROR: smov w1, v0.d[0] 4370 // CHECK-ERROR: ^ 4371 // CHECK-ERROR: error: invalid operand for instruction 4372 // CHECK-ERROR: smov w14, v6.d[1] 4373 // CHECK-ERROR: ^ 4374 // CHECK-ERROR: error: invalid operand for instruction 4375 // CHECK-ERROR: smov x1, v0.d[0] 4376 // CHECK-ERROR: ^ 4377 // CHECK-ERROR: error: invalid operand for instruction 4378 // CHECK-ERROR: smov x14, v6.d[1] 4379 // CHECK-ERROR: ^ 4380 // CHECK-ERROR: error: invalid operand for instruction 4381 // CHECK-ERROR: smov x20, v9.d[0] 4382 // CHECK-ERROR: ^ 4383 4384 umov w1, v0.b[16] 4385 umov w14, v6.h[8] 4386 umov w20, v9.s[5] 4387 umov x7, v18.d[3] 4388 umov w1, v0.d[0] 4389 umov s20, v9.s[2] 4390 umov d7, v18.d[1] 4391 4392 // CHECK-ERROR: vector lane must be an integer in range 4393 // CHECK-ERROR: umov w1, v0.b[16] 4394 // CHECK-ERROR: ^ 4395 // CHECK-ERROR: vector lane must be an integer in range 4396 // CHECK-ERROR: umov w14, v6.h[8] 4397 // CHECK-ERROR: ^ 4398 // CHECK-ERROR: vector lane must be an integer in range 4399 // CHECK-ERROR: umov w20, v9.s[5] 4400 // CHECK-ERROR: ^ 4401 // CHECK-ERROR: vector lane must be an integer in range 4402 // CHECK-ERROR: umov x7, v18.d[3] 4403 // CHECK-ERROR: ^ 4404 // CHECK-ERROR: error: invalid operand for instruction 4405 // CHECK-ERROR: umov w1, v0.d[0] 4406 // CHECK-ERROR: ^ 4407 // CHECK-ERROR: error: invalid operand for instruction 4408 // CHECK-ERROR: umov s20, v9.s[2] 4409 // CHECK-ERROR: ^ 4410 // CHECK-ERROR: error: invalid operand for instruction 4411 // CHECK-ERROR: umov d7, v18.d[1] 4412 // CHECK-ERROR: ^ 4413 4414 Ins v1.h[2], v3.b[6] 4415 Ins v6.h[7], v7.s[2] 4416 Ins v15.d[0], v22.s[2] 4417 Ins v0.d[0], v4.b[1] 4418 4419 // CHECK-ERROR: error: invalid operand for instruction 4420 // CHECK-ERROR: Ins v1.h[2], v3.b[6] 4421 // CHECK-ERROR: ^ 4422 // CHECK-ERROR: error: invalid operand for instruction 4423 // CHECK-ERROR: Ins v6.h[7], v7.s[2] 4424 // CHECK-ERROR: ^ 4425 // CHECK-ERROR: error: invalid operand for instruction 4426 // CHECK-ERROR: Ins v15.d[0], v22.s[2] 4427 // CHECK-ERROR: ^ 4428 // CHECK-ERROR: error: invalid operand for instruction 4429 // CHECK-ERROR: Ins v0.d[0], v4.b[1] 4430 // CHECK-ERROR: ^ 4431 4432 dup v1.8h, v2.b[2] 4433 dup v11.4s, v7.h[7] 4434 dup v17.2d, v20.s[0] 4435 dup v1.16b, v2.h[2] 4436 dup v11.8h, v7.s[3] 4437 dup v17.4s, v20.d[0] 4438 dup v5.2d, v1.b[1] 4439 4440 // CHECK-ERROR: error: invalid operand for instruction 4441 // CHECK-ERROR: dup v1.8h, v2.b[2] 4442 // CHECK-ERROR: ^ 4443 // CHECK-ERROR: error: invalid operand for instruction 4444 // CHECK-ERROR: dup v11.4s, v7.h[7] 4445 // CHECK-ERROR: ^ 4446 // CHECK-ERROR: error: invalid operand for instruction 4447 // CHECK-ERROR: dup v17.2d, v20.s[0] 4448 // CHECK-ERROR: ^ 4449 // CHECK-ERROR: error: invalid operand for instruction 4450 // CHECK-ERROR: dup v1.16b, v2.h[2] 4451 // CHECK-ERROR: ^ 4452 // CHECK-ERROR: invalid operand for instruction 4453 // CHECK-ERROR: dup v11.8h, v7.s[3] 4454 // CHECK-ERROR: ^ 4455 // CHECK-ERROR: invalid operand for instruction 4456 // CHECK-ERROR: dup v17.4s, v20.d[0] 4457 // CHECK-ERROR: ^ 4458 // CHECK-ERROR: invalid operand for instruction 4459 // CHECK-ERROR: dup v5.2d, v1.b[1] 4460 // CHECK-ERROR: ^ 4461 4462 dup v1.8b, b1 4463 dup v11.4h, h14 4464 dup v17.2s, s30 4465 dup v1.16b, d2 4466 dup v11.8s, w16 4467 dup v17.4d, w28 4468 dup v5.2d, w0 4469 4470 // CHECK-ERROR: error: invalid operand for instruction 4471 // CHECK-ERROR: dup v1.8b, b1 4472 // CHECK-ERROR: ^ 4473 // CHECK-ERROR: error: invalid operand for instruction 4474 // CHECK-ERROR: dup v11.4h, h14 4475 // CHECK-ERROR: ^ 4476 // CHECK-ERROR: error: invalid operand for instruction 4477 // CHECK-ERROR: dup v17.2s, s30 4478 // CHECK-ERROR: ^ 4479 // CHECK-ERROR: error: invalid operand for instruction 4480 // CHECK-ERROR: dup v1.16b, d2 4481 // CHECK-ERROR: ^ 4482 // CHECK-ERROR: error: invalid operand for instruction 4483 // CHECK-ERROR: dup v11.8s, w16 4484 // CHECK-ERROR: ^ 4485 // CHECK-ERROR: error: invalid operand for instruction 4486 // CHECK-ERROR: dup v17.4d, w28 4487 // CHECK-ERROR: ^ 4488 // CHECK-ERROR: error: invalid operand for instruction 4489 // CHECK-ERROR: dup v5.2d, w0 4490 // CHECK-ERROR: ^ 4491 4492 //---------------------------------------------------------------------- 4493 // Scalar Compare Bitwise Equal 4494 //---------------------------------------------------------------------- 4495 4496 cmeq b20, d21, d22 4497 4498 // CHECK-ERROR: error: invalid operand for instruction 4499 // CHECK-ERROR: cmeq b20, d21, d22 4500 // CHECK-ERROR: ^ 4501 4502 //---------------------------------------------------------------------- 4503 // Scalar Compare Bitwise Equal To Zero 4504 //---------------------------------------------------------------------- 4505 4506 cmeq d20, b21, #0 4507 4508 // CHECK-ERROR: error: invalid operand for instruction 4509 // CHECK-ERROR: cmeq d20, b21, #0 4510 // CHECK-ERROR: ^ 4511 4512 //---------------------------------------------------------------------- 4513 // Scalar Compare Unsigned Higher Or Same 4514 //---------------------------------------------------------------------- 4515 4516 cmhs b20, d21, d22 4517 4518 // CHECK-ERROR: error: invalid operand for instruction 4519 // CHECK-ERROR: cmhs b20, d21, d22 4520 // CHECK-ERROR: ^ 4521 4522 4523 //---------------------------------------------------------------------- 4524 // Scalar Compare Signed Greather Than Or Equal 4525 //---------------------------------------------------------------------- 4526 4527 cmge b20, d21, d22 4528 4529 // CHECK-ERROR: error: invalid operand for instruction 4530 // CHECK-ERROR: cmge b20, d21, d22 4531 // CHECK-ERROR: ^ 4532 4533 //---------------------------------------------------------------------- 4534 // Scalar Compare Signed Greather Than Or Equal To Zero 4535 //---------------------------------------------------------------------- 4536 4537 cmge d20, b21, #0 4538 4539 // CHECK-ERROR: error: invalid operand for instruction 4540 // CHECK-ERROR: cmge d20, b21, #0 4541 // CHECK-ERROR: ^ 4542 4543 //---------------------------------------------------------------------- 4544 // Scalar Compare Unsigned Higher 4545 //---------------------------------------------------------------------- 4546 4547 cmhi b20, d21, d22 4548 4549 // CHECK-ERROR: error: invalid operand for instruction 4550 // CHECK-ERROR: cmhi b20, d21, d22 4551 // CHECK-ERROR: ^ 4552 4553 //---------------------------------------------------------------------- 4554 // Scalar Compare Signed Greater Than 4555 //---------------------------------------------------------------------- 4556 4557 cmgt b20, d21, d22 4558 4559 // CHECK-ERROR: error: invalid operand for instruction 4560 // CHECK-ERROR: cmgt b20, d21, d22 4561 // CHECK-ERROR: ^ 4562 4563 //---------------------------------------------------------------------- 4564 // Scalar Compare Signed Greater Than Zero 4565 //---------------------------------------------------------------------- 4566 4567 cmgt d20, b21, #0 4568 4569 // CHECK-ERROR: error: invalid operand for instruction 4570 // CHECK-ERROR: cmgt d20, b21, #0 4571 // CHECK-ERROR: ^ 4572 4573 //---------------------------------------------------------------------- 4574 // Scalar Compare Signed Less Than Or Equal To Zero 4575 //---------------------------------------------------------------------- 4576 4577 cmle d20, b21, #0 4578 4579 // CHECK-ERROR: error: invalid operand for instruction 4580 // CHECK-ERROR: cmle d20, b21, #0 4581 // CHECK-ERROR: ^ 4582 4583 //---------------------------------------------------------------------- 4584 // Scalar Compare Less Than Zero 4585 //---------------------------------------------------------------------- 4586 4587 cmlt d20, b21, #0 4588 4589 // CHECK-ERROR: error: invalid operand for instruction 4590 // CHECK-ERROR: cmlt d20, b21, #0 4591 // CHECK-ERROR: ^ 4592 4593 //---------------------------------------------------------------------- 4594 // Scalar Compare Bitwise Test Bits 4595 //---------------------------------------------------------------------- 4596 4597 cmtst b20, d21, d22 4598 4599 // CHECK-ERROR: error: invalid operand for instruction 4600 // CHECK-ERROR: cmtst b20, d21, d22 4601 // CHECK-ERROR: ^ 4602 4603 //---------------------------------------------------------------------- 4604 // Scalar Floating-point Compare Mask Equal 4605 //---------------------------------------------------------------------- 4606 4607 fcmeq s10, h11, s12 4608 fcmeq d20, s21, d22 4609 4610 // CHECK-ERROR: error: invalid operand for instruction 4611 // CHECK-ERROR: fcmeq s10, h11, s12 4612 // CHECK-ERROR: ^ 4613 // CHECK-ERROR: error: invalid operand for instruction 4614 // CHECK-ERROR: fcmeq d20, s21, d22 4615 // CHECK-ERROR: ^ 4616 4617 //---------------------------------------------------------------------- 4618 // Scalar Floating-point Compare Mask Equal To Zero 4619 //---------------------------------------------------------------------- 4620 4621 fcmeq h10, s11, #0.0 4622 fcmeq d20, s21, #0.0 4623 4624 // CHECK-ERROR: error: invalid operand for instruction 4625 // CHECK-ERROR: fcmeq h10, s11, #0.0 4626 // CHECK-ERROR: ^ 4627 // CHECK-ERROR: error: invalid operand for instruction 4628 // CHECK-ERROR: fcmeq d20, s21, #0.0 4629 // CHECK-ERROR: ^ 4630 4631 //---------------------------------------------------------------------- 4632 // Scalar Floating-point Compare Mask Greater Than Or Equal 4633 //---------------------------------------------------------------------- 4634 4635 fcmge s10, h11, s12 4636 fcmge d20, s21, d22 4637 4638 // CHECK-ERROR: error: invalid operand for instruction 4639 // CHECK-ERROR: fcmge s10, h11, s12 4640 // CHECK-ERROR: ^ 4641 // CHECK-ERROR: error: invalid operand for instruction 4642 // CHECK-ERROR: fcmge d20, s21, d22 4643 // CHECK-ERROR: ^ 4644 4645 //---------------------------------------------------------------------- 4646 // Scalar Floating-point Compare Mask Greater Than Or Equal To Zero 4647 //---------------------------------------------------------------------- 4648 4649 fcmge h10, s11, #0.0 4650 fcmge d20, s21, #0.0 4651 4652 // CHECK-ERROR: error: invalid operand for instruction 4653 // CHECK-ERROR: fcmge h10, s11, #0.0 4654 // CHECK-ERROR: ^ 4655 // CHECK-ERROR: error: invalid operand for instruction 4656 // CHECK-ERROR: fcmge d20, s21, #0.0 4657 // CHECK-ERROR: ^ 4658 4659 //---------------------------------------------------------------------- 4660 // Scalar Floating-point Compare Mask Greather Than 4661 //---------------------------------------------------------------------- 4662 4663 fcmgt s10, h11, s12 4664 fcmgt d20, s21, d22 4665 4666 // CHECK-ERROR: error: invalid operand for instruction 4667 // CHECK-ERROR: fcmgt s10, h11, s12 4668 // CHECK-ERROR: ^ 4669 // CHECK-ERROR: error: invalid operand for instruction 4670 // CHECK-ERROR: fcmgt d20, s21, d22 4671 // CHECK-ERROR: ^ 4672 4673 //---------------------------------------------------------------------- 4674 // Scalar Floating-point Compare Mask Greather Than Zero 4675 //---------------------------------------------------------------------- 4676 4677 fcmgt h10, s11, #0.0 4678 fcmgt d20, s21, #0.0 4679 4680 // CHECK-ERROR: error: invalid operand for instruction 4681 // CHECK-ERROR: fcmgt h10, s11, #0.0 4682 // CHECK-ERROR: ^ 4683 // CHECK-ERROR: error: invalid operand for instruction 4684 // CHECK-ERROR: fcmgt d20, s21, #0.0 4685 // CHECK-ERROR: ^ 4686 4687 //---------------------------------------------------------------------- 4688 // Scalar Floating-point Compare Mask Less Than Or Equal To Zero 4689 //---------------------------------------------------------------------- 4690 4691 fcmle h10, s11, #0.0 4692 fcmle d20, s21, #0.0 4693 4694 // CHECK-ERROR: error: invalid operand for instruction 4695 // CHECK-ERROR: fcmle h10, s11, #0.0 4696 // CHECK-ERROR: ^ 4697 // CHECK-ERROR: error: invalid operand for instruction 4698 // CHECK-ERROR: fcmle d20, s21, #0.0 4699 // CHECK-ERROR: ^ 4700 4701 //---------------------------------------------------------------------- 4702 // Scalar Floating-point Compare Mask Less Than 4703 //---------------------------------------------------------------------- 4704 4705 fcmlt h10, s11, #0.0 4706 fcmlt d20, s21, #0.0 4707 4708 // CHECK-ERROR: error: invalid operand for instruction 4709 // CHECK-ERROR: fcmlt h10, s11, #0.0 4710 // CHECK-ERROR: ^ 4711 // CHECK-ERROR: error: invalid operand for instruction 4712 // CHECK-ERROR: fcmlt d20, s21, #0.0 4713 // CHECK-ERROR: ^ 4714 4715 //---------------------------------------------------------------------- 4716 // Scalar Floating-point Absolute Compare Mask Greater Than Or Equal 4717 //---------------------------------------------------------------------- 4718 4719 facge s10, h11, s12 4720 facge d20, s21, d22 4721 4722 // CHECK-ERROR: error: invalid operand for instruction 4723 // CHECK-ERROR: facge s10, h11, s12 4724 // CHECK-ERROR: ^ 4725 // CHECK-ERROR: error: invalid operand for instruction 4726 // CHECK-ERROR: facge d20, s21, d22 4727 // CHECK-ERROR: ^ 4728 4729 //---------------------------------------------------------------------- 4730 // Scalar Floating-point Absolute Compare Mask Greater Than 4731 //---------------------------------------------------------------------- 4732 4733 facgt s10, h11, s12 4734 facgt d20, d21, s22 4735 4736 // CHECK-ERROR: error: invalid operand for instruction 4737 // CHECK-ERROR: facgt s10, h11, s12 4738 // CHECK-ERROR: ^ 4739 // CHECK-ERROR: error: invalid operand for instruction 4740 // CHECK-ERROR: facgt d20, d21, s22 4741 // CHECK-ERROR: ^ 4742 4743 //---------------------------------------------------------------------- 4744 // Scalar Signed Saturating Accumulated of Unsigned Value 4745 //---------------------------------------------------------------------- 4746 4747 suqadd b0, h1 4748 suqadd h0, s1 4749 suqadd s0, d1 4750 suqadd d0, b0 4751 4752 // CHECK-ERROR: error: invalid operand for instruction 4753 // CHECK-ERROR: suqadd b0, h1 4754 // CHECK-ERROR: ^ 4755 // CHECK-ERROR: error: invalid operand for instruction 4756 // CHECK-ERROR: suqadd h0, s1 4757 // CHECK-ERROR: ^ 4758 // CHECK-ERROR: error: invalid operand for instruction 4759 // CHECK-ERROR: suqadd s0, d1 4760 // CHECK-ERROR: ^ 4761 // CHECK-ERROR: error: invalid operand for instruction 4762 // CHECK-ERROR: suqadd d0, b0 4763 // CHECK-ERROR: ^ 4764 4765 //---------------------------------------------------------------------- 4766 // Scalar Unsigned Saturating Accumulated of Signed Value 4767 //---------------------------------------------------------------------- 4768 4769 usqadd b0, h1 4770 usqadd h0, s1 4771 usqadd s0, d1 4772 usqadd d0, b1 4773 4774 // CHECK-ERROR: error: invalid operand for instruction 4775 // CHECK-ERROR: usqadd b0, h1 4776 // CHECK-ERROR: ^ 4777 // CHECK-ERROR: error: invalid operand for instruction 4778 // CHECK-ERROR: usqadd h0, s1 4779 // CHECK-ERROR: ^ 4780 // CHECK-ERROR: error: invalid operand for instruction 4781 // CHECK-ERROR: usqadd s0, d1 4782 // CHECK-ERROR: ^ 4783 // CHECK-ERROR: error: invalid operand for instruction 4784 // CHECK-ERROR: usqadd d0, b1 4785 // CHECK-ERROR: ^ 4786 4787 //---------------------------------------------------------------------- 4788 // Scalar Absolute Value 4789 //---------------------------------------------------------------------- 4790 4791 abs d29, s24 4792 4793 // CHECK-ERROR: error: invalid operand for instruction 4794 // CHECK-ERROR: abs d29, s24 4795 // CHECK-ERROR: ^ 4796 4797 //---------------------------------------------------------------------- 4798 // Scalar Negate 4799 //---------------------------------------------------------------------- 4800 4801 neg d29, s24 4802 4803 // CHECK-ERROR: error: invalid operand for instruction 4804 // CHECK-ERROR: neg d29, s24 4805 // CHECK-ERROR: ^ 4806 4807 //---------------------------------------------------------------------- 4808 // Signed Saturating Doubling Multiply-Add Long 4809 //---------------------------------------------------------------------- 4810 4811 sqdmlal s17, h27, s12 4812 sqdmlal d19, s24, d12 4813 4814 // CHECK-ERROR: error: invalid operand for instruction 4815 // CHECK-ERROR: sqdmlal s17, h27, s12 4816 // CHECK-ERROR: ^ 4817 // CHECK-ERROR: error: invalid operand for instruction 4818 // CHECK-ERROR: sqdmlal d19, s24, d12 4819 // CHECK-ERROR: ^ 4820 4821 //---------------------------------------------------------------------- 4822 // Signed Saturating Doubling Multiply-Subtract Long 4823 //---------------------------------------------------------------------- 4824 4825 sqdmlsl s14, h12, s25 4826 sqdmlsl d12, s23, d13 4827 4828 // CHECK-ERROR: error: invalid operand for instruction 4829 // CHECK-ERROR: sqdmlsl s14, h12, s25 4830 // CHECK-ERROR: ^ 4831 // CHECK-ERROR: error: invalid operand for instruction 4832 // CHECK-ERROR: sqdmlsl d12, s23, d13 4833 // CHECK-ERROR: ^ 4834 4835 //---------------------------------------------------------------------- 4836 // Signed Saturating Doubling Multiply Long 4837 //---------------------------------------------------------------------- 4838 4839 sqdmull s12, h22, s12 4840 sqdmull d15, s22, d12 4841 4842 // CHECK-ERROR: error: invalid operand for instruction 4843 // CHECK-ERROR: sqdmull s12, h22, s12 4844 // CHECK-ERROR: ^ 4845 // CHECK-ERROR: error: invalid operand for instruction 4846 // CHECK-ERROR: sqdmull d15, s22, d12 4847 // CHECK-ERROR: ^ 4848 4849 //---------------------------------------------------------------------- 4850 // Scalar Signed Saturating Extract Unsigned Narrow 4851 //---------------------------------------------------------------------- 4852 4853 sqxtun b19, b14 4854 sqxtun h21, h15 4855 sqxtun s20, s12 4856 4857 // CHECK-ERROR: error: invalid operand for instruction 4858 // CHECK-ERROR: sqxtun b19, b14 4859 // CHECK-ERROR: ^ 4860 // CHECK-ERROR: error: invalid operand for instruction 4861 // CHECK-ERROR: sqxtun h21, h15 4862 // CHECK-ERROR: ^ 4863 // CHECK-ERROR: error: invalid operand for instruction 4864 // CHECK-ERROR: sqxtun s20, s12 4865 // CHECK-ERROR: ^ 4866 4867 //---------------------------------------------------------------------- 4868 // Scalar Signed Saturating Extract Signed Narrow 4869 //---------------------------------------------------------------------- 4870 4871 sqxtn b18, b18 4872 sqxtn h20, h17 4873 sqxtn s19, s14 4874 4875 // CHECK-ERROR: error: invalid operand for instruction 4876 // CHECK-ERROR: sqxtn b18, b18 4877 // CHECK-ERROR: ^ 4878 // CHECK-ERROR: error: invalid operand for instruction 4879 // CHECK-ERROR: sqxtn h20, h17 4880 // CHECK-ERROR: ^ 4881 // CHECK-ERROR: error: invalid operand for instruction 4882 // CHECK-ERROR: sqxtn s19, s14 4883 // CHECK-ERROR: ^ 4884 4885 4886 //---------------------------------------------------------------------- 4887 // Scalar Unsigned Saturating Extract Narrow 4888 //---------------------------------------------------------------------- 4889 4890 uqxtn b18, b18 4891 uqxtn h20, h17 4892 uqxtn s19, s14 4893 4894 // CHECK-ERROR: error: invalid operand for instruction 4895 // CHECK-ERROR: uqxtn b18, b18 4896 // CHECK-ERROR: ^ 4897 // CHECK-ERROR: error: invalid operand for instruction 4898 // CHECK-ERROR: uqxtn h20, h17 4899 // CHECK-ERROR: ^ 4900 // CHECK-ERROR: error: invalid operand for instruction 4901 // CHECK-ERROR: uqxtn s19, s14 4902 // CHECK-ERROR: ^ 4903 4904 //---------------------------------------------------------------------- 4905 // Scalar Signed Shift Right (Immediate) 4906 //---------------------------------------------------------------------- 4907 sshr d15, d16, #99 4908 4909 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 4910 // CHECK-ERROR: sshr d15, d16, #99 4911 // CHECK-ERROR: ^ 4912 4913 sshr d15, s16, #31 4914 4915 // CHECK-ERROR: error: invalid operand for instruction 4916 // CHECK-ERROR: sshr d15, s16, #31 4917 // CHECK-ERROR: ^ 4918 4919 //---------------------------------------------------------------------- 4920 // Scalar Unsigned Shift Right (Immediate) 4921 //---------------------------------------------------------------------- 4922 4923 ushr d10, d17, #99 4924 4925 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 4926 // CHECK-ERROR: ushr d10, d17, #99 4927 // CHECK-ERROR: ^ 4928 4929 //---------------------------------------------------------------------- 4930 // Scalar Signed Rounding Shift Right (Immediate) 4931 //---------------------------------------------------------------------- 4932 4933 srshr d19, d18, #99 4934 4935 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 4936 // CHECK-ERROR: srshr d19, d18, #99 4937 // CHECK-ERROR: ^ 4938 4939 //---------------------------------------------------------------------- 4940 // Scalar Unigned Rounding Shift Right (Immediate) 4941 //---------------------------------------------------------------------- 4942 4943 urshr d20, d23, #99 4944 4945 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 4946 // CHECK-ERROR: urshr d20, d23, #99 4947 // CHECK-ERROR: ^ 4948 4949 //---------------------------------------------------------------------- 4950 // Scalar Signed Shift Right and Accumulate (Immediate) 4951 //---------------------------------------------------------------------- 4952 4953 ssra d18, d12, #99 4954 4955 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 4956 // CHECK-ERROR: ssra d18, d12, #99 4957 // CHECK-ERROR: ^ 4958 4959 //---------------------------------------------------------------------- 4960 // Scalar Unsigned Shift Right and Accumulate (Immediate) 4961 //---------------------------------------------------------------------- 4962 4963 usra d20, d13, #99 4964 4965 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 4966 // CHECK-ERROR: usra d20, d13, #99 4967 // CHECK-ERROR: ^ 4968 4969 //---------------------------------------------------------------------- 4970 // Scalar Signed Rounding Shift Right and Accumulate (Immediate) 4971 //---------------------------------------------------------------------- 4972 4973 srsra d15, d11, #99 4974 4975 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 4976 // CHECK-ERROR: srsra d15, d11, #99 4977 // CHECK-ERROR: ^ 4978 4979 //---------------------------------------------------------------------- 4980 // Scalar Unsigned Rounding Shift Right and Accumulate (Immediate) 4981 //---------------------------------------------------------------------- 4982 4983 ursra d18, d10, #99 4984 4985 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 4986 // CHECK-ERROR: ursra d18, d10, #99 4987 // CHECK-ERROR: ^ 4988 4989 //---------------------------------------------------------------------- 4990 // Scalar Shift Left (Immediate) 4991 //---------------------------------------------------------------------- 4992 4993 shl d7, d10, #99 4994 4995 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 4996 // CHECK-ERROR: shl d7, d10, #99 4997 // CHECK-ERROR: ^ 4998 4999 shl d7, s16, #31 5000 5001 // CHECK-ERROR: error: invalid operand for instruction 5002 // CHECK-ERROR: shl d7, s16, #31 5003 // CHECK-ERROR: ^ 5004 5005 //---------------------------------------------------------------------- 5006 // Signed Saturating Shift Left (Immediate) 5007 //---------------------------------------------------------------------- 5008 5009 sqshl b11, b19, #99 5010 sqshl h13, h18, #99 5011 sqshl s14, s17, #99 5012 sqshl d15, d16, #99 5013 5014 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 5015 // CHECK-ERROR: sqshl b11, b19, #99 5016 // CHECK-ERROR: ^ 5017 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 5018 // CHECK-ERROR: sqshl h13, h18, #99 5019 // CHECK-ERROR: ^ 5020 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 5021 // CHECK-ERROR: sqshl s14, s17, #99 5022 // CHECK-ERROR: ^ 5023 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 5024 // CHECK-ERROR: sqshl d15, d16, #99 5025 // CHECK-ERROR: ^ 5026 5027 //---------------------------------------------------------------------- 5028 // Unsigned Saturating Shift Left (Immediate) 5029 //---------------------------------------------------------------------- 5030 5031 uqshl b18, b15, #99 5032 uqshl h11, h18, #99 5033 uqshl s14, s19, #99 5034 uqshl d15, d12, #99 5035 5036 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 5037 // CHECK-ERROR: uqshl b18, b15, #99 5038 // CHECK-ERROR: ^ 5039 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 5040 // CHECK-ERROR: uqshl h11, h18, #99 5041 // CHECK-ERROR: ^ 5042 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 5043 // CHECK-ERROR: uqshl s14, s19, #99 5044 // CHECK-ERROR: ^ 5045 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 5046 // CHECK-ERROR: uqshl d15, d12, #99 5047 // CHECK-ERROR: ^ 5048 5049 //---------------------------------------------------------------------- 5050 // Signed Saturating Shift Left Unsigned (Immediate) 5051 //---------------------------------------------------------------------- 5052 5053 sqshlu b15, b18, #99 5054 sqshlu h19, h17, #99 5055 sqshlu s16, s14, #99 5056 sqshlu d11, d13, #99 5057 5058 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7] 5059 // CHECK-ERROR: sqshlu b15, b18, #99 5060 // CHECK-ERROR: ^ 5061 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 15] 5062 // CHECK-ERROR: sqshlu h19, h17, #99 5063 // CHECK-ERROR: ^ 5064 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31] 5065 // CHECK-ERROR: sqshlu s16, s14, #99 5066 // CHECK-ERROR: ^ 5067 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 5068 // CHECK-ERROR: sqshlu d11, d13, #99 5069 // CHECK-ERROR: ^ 5070 5071 //---------------------------------------------------------------------- 5072 // Shift Right And Insert (Immediate) 5073 //---------------------------------------------------------------------- 5074 5075 sri d10, d12, #99 5076 5077 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 5078 // CHECK-ERROR: sri d10, d12, #99 5079 // CHECK-ERROR: ^ 5080 5081 //---------------------------------------------------------------------- 5082 // Shift Left And Insert (Immediate) 5083 //---------------------------------------------------------------------- 5084 5085 sli d10, d14, #99 5086 5087 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 63] 5088 // CHECK-ERROR: sli d10, d14, #99 5089 // CHECK-ERROR: ^ 5090 5091 //---------------------------------------------------------------------- 5092 // Signed Saturating Shift Right Narrow (Immediate) 5093 //---------------------------------------------------------------------- 5094 5095 sqshrn b10, h15, #99 5096 sqshrn h17, s10, #99 5097 sqshrn s18, d10, #99 5098 5099 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 5100 // CHECK-ERROR: sqshrn b10, h15, #99 5101 // CHECK-ERROR: ^ 5102 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 5103 // CHECK-ERROR: sqshrn h17, s10, #99 5104 // CHECK-ERROR: ^ 5105 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5106 // CHECK-ERROR: sqshrn s18, d10, #99 5107 // CHECK-ERROR: ^ 5108 5109 //---------------------------------------------------------------------- 5110 // Unsigned Saturating Shift Right Narrow (Immediate) 5111 //---------------------------------------------------------------------- 5112 5113 uqshrn b12, h10, #99 5114 uqshrn h10, s14, #99 5115 uqshrn s10, d12, #99 5116 5117 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 5118 // CHECK-ERROR: uqshrn b12, h10, #99 5119 // CHECK-ERROR: ^ 5120 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 5121 // CHECK-ERROR: uqshrn h10, s14, #99 5122 // CHECK-ERROR: ^ 5123 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5124 // CHECK-ERROR: uqshrn s10, d12, #99 5125 // CHECK-ERROR: ^ 5126 5127 //---------------------------------------------------------------------- 5128 // Signed Saturating Rounded Shift Right Narrow (Immediate) 5129 //---------------------------------------------------------------------- 5130 5131 sqrshrn b10, h13, #99 5132 sqrshrn h15, s10, #99 5133 sqrshrn s15, d12, #99 5134 5135 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 5136 // CHECK-ERROR: sqrshrn b10, h13, #99 5137 // CHECK-ERROR: ^ 5138 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 5139 // CHECK-ERROR: sqrshrn h15, s10, #99 5140 // CHECK-ERROR: ^ 5141 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5142 // CHECK-ERROR: sqrshrn s15, d12, #99 5143 // CHECK-ERROR: ^ 5144 5145 //---------------------------------------------------------------------- 5146 // Unsigned Saturating Rounded Shift Right Narrow (Immediate) 5147 //---------------------------------------------------------------------- 5148 5149 uqrshrn b10, h12, #99 5150 uqrshrn h12, s10, #99 5151 uqrshrn s10, d10, #99 5152 5153 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 5154 // CHECK-ERROR: uqrshrn b10, h12, #99 5155 // CHECK-ERROR: ^ 5156 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 5157 // CHECK-ERROR: uqrshrn h12, s10, #99 5158 // CHECK-ERROR: ^ 5159 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5160 // CHECK-ERROR: uqrshrn s10, d10, #99 5161 // CHECK-ERROR: ^ 5162 5163 //---------------------------------------------------------------------- 5164 // Signed Saturating Shift Right Unsigned Narrow (Immediate) 5165 //---------------------------------------------------------------------- 5166 5167 sqshrun b15, h10, #99 5168 sqshrun h20, s14, #99 5169 sqshrun s10, d15, #99 5170 5171 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 5172 // CHECK-ERROR: sqshrun b15, h10, #99 5173 // CHECK-ERROR: ^ 5174 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 5175 // CHECK-ERROR: sqshrun h20, s14, #99 5176 // CHECK-ERROR: ^ 5177 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5178 // CHECK-ERROR: sqshrun s10, d15, #99 5179 // CHECK-ERROR: ^ 5180 5181 //---------------------------------------------------------------------- 5182 // Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate) 5183 //---------------------------------------------------------------------- 5184 5185 sqrshrun b17, h10, #99 5186 sqrshrun h10, s13, #99 5187 sqrshrun s22, d16, #99 5188 5189 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 8] 5190 // CHECK-ERROR: sqrshrun b17, h10, #99 5191 // CHECK-ERROR: ^ 5192 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 16] 5193 // CHECK-ERROR: sqrshrun h10, s13, #99 5194 // CHECK-ERROR: ^ 5195 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5196 // CHECK-ERROR: sqrshrun s22, d16, #99 5197 // CHECK-ERROR: ^ 5198 5199 //---------------------------------------------------------------------- 5200 // Scalar Signed Fixed-point Convert To Floating-Point (Immediate) 5201 //---------------------------------------------------------------------- 5202 5203 scvtf s22, s13, #0 5204 scvtf s22, s13, #33 5205 scvtf d21, d12, #65 5206 scvtf d21, s12, #31 5207 5208 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5209 // CHECK-ERROR: scvtf s22, s13, #0 5210 // CHECK-ERROR: ^ 5211 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5212 // CHECK-ERROR: scvtf s22, s13, #33 5213 // CHECK-ERROR: ^ 5214 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 5215 // CHECK-ERROR: scvtf d21, d12, #65 5216 // CHECK-ERROR: ^ 5217 // CHECK-ERROR: error: invalid operand for instruction 5218 // CHECK-ERROR: scvtf d21, s12, #31 5219 // CHECK-ERROR: ^ 5220 5221 //---------------------------------------------------------------------- 5222 // Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate) 5223 //---------------------------------------------------------------------- 5224 5225 ucvtf s22, s13, #34 5226 ucvtf d21, d14, #65 5227 ucvtf d21, s14, #64 5228 5229 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 5230 // CHECK-ERROR: ucvtf s22, s13, #34 5231 // CHECK-ERROR: ^ 5232 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 5233 // CHECK-ERROR: ucvtf d21, d14, #65 5234 // CHECK-ERROR: ^ 5235 // CHECK-ERROR: error: invalid operand for instruction 5236 // CHECK-ERROR: ucvtf d21, s14, #64 5237 // CHECK-ERROR: ^ 5238 5239 //------------------------------------------------------------------------------ 5240 // Element reverse 5241 //------------------------------------------------------------------------------ 5242 rev64 v6.2d, v8.2d 5243 rev32 v30.2s, v31.2s 5244 rev32 v30.4s, v31.4s 5245 rev32 v30.2d, v31.2d 5246 rev16 v21.4h, v1.4h 5247 rev16 v21.8h, v1.8h 5248 rev16 v21.2s, v1.2s 5249 rev16 v21.4s, v1.4s 5250 rev16 v21.2d, v1.2d 5251 5252 // CHECK-ERROR: error: invalid operand for instruction 5253 // CHECK-ERROR: rev64 v6.2d, v8.2d 5254 // CHECK-ERROR: ^ 5255 // CHECK-ERROR: error: invalid operand for instruction 5256 // CHECK-ERROR: rev32 v30.2s, v31.2s 5257 // CHECK-ERROR: ^ 5258 // CHECK-ERROR: error: invalid operand for instruction 5259 // CHECK-ERROR: rev32 v30.4s, v31.4s 5260 // CHECK-ERROR: ^ 5261 // CHECK-ERROR: error: invalid operand for instruction 5262 // CHECK-ERROR: rev32 v30.2d, v31.2d 5263 // CHECK-ERROR: ^ 5264 // CHECK-ERROR: error: invalid operand for instruction 5265 // CHECK-ERROR: rev16 v21.4h, v1.4h 5266 // CHECK-ERROR: ^ 5267 // CHECK-ERROR: error: invalid operand for instruction 5268 // CHECK-ERROR: rev16 v21.8h, v1.8h 5269 // CHECK-ERROR: ^ 5270 // CHECK-ERROR: error: invalid operand for instruction 5271 // CHECK-ERROR: rev16 v21.2s, v1.2s 5272 // CHECK-ERROR: ^ 5273 // CHECK-ERROR: error: invalid operand for instruction 5274 // CHECK-ERROR: rev16 v21.4s, v1.4s 5275 // CHECK-ERROR: ^ 5276 // CHECK-ERROR: error: invalid operand for instruction 5277 // CHECK-ERROR: rev16 v21.2d, v1.2d 5278 // CHECK-ERROR: ^ 5279 5280 //------------------------------------------------------------------------------ 5281 // Signed integer pairwise add long 5282 //------------------------------------------------------------------------------ 5283 5284 saddlp v3.8h, v21.8h 5285 saddlp v8.8b, v5.8b 5286 saddlp v9.8h, v1.4s 5287 saddlp v0.4s, v1.2d 5288 5289 // CHECK-ERROR: error: invalid operand for instruction 5290 // CHECK-ERROR: saddlp v3.8h, v21.8h 5291 // CHECK-ERROR: ^ 5292 // CHECK-ERROR: error: invalid operand for instruction 5293 // CHECK-ERROR: saddlp v8.8b, v5.8b 5294 // CHECK-ERROR: ^ 5295 // CHECK-ERROR: error: invalid operand for instruction 5296 // CHECK-ERROR: saddlp v9.8h, v1.4s 5297 // CHECK-ERROR: ^ 5298 // CHECK-ERROR: error: invalid operand for instruction 5299 // CHECK-ERROR: saddlp v0.4s, v1.2d 5300 // CHECK-ERROR: ^ 5301 5302 //------------------------------------------------------------------------------ 5303 // Unsigned integer pairwise add long 5304 //------------------------------------------------------------------------------ 5305 5306 uaddlp v3.8h, v21.8h 5307 uaddlp v8.8b, v5.8b 5308 uaddlp v9.8h, v1.4s 5309 uaddlp v0.4s, v1.2d 5310 5311 // CHECK-ERROR: error: invalid operand for instruction 5312 // CHECK-ERROR: uaddlp v3.8h, v21.8h 5313 // CHECK-ERROR: ^ 5314 // CHECK-ERROR: error: invalid operand for instruction 5315 // CHECK-ERROR: uaddlp v8.8b, v5.8b 5316 // CHECK-ERROR: ^ 5317 // CHECK-ERROR: error: invalid operand for instruction 5318 // CHECK-ERROR: uaddlp v9.8h, v1.4s 5319 // CHECK-ERROR: ^ 5320 // CHECK-ERROR: error: invalid operand for instruction 5321 // CHECK-ERROR: uaddlp v0.4s, v1.2d 5322 // CHECK-ERROR: ^ 5323 5324 //------------------------------------------------------------------------------ 5325 // Signed integer pairwise add and accumulate long 5326 //------------------------------------------------------------------------------ 5327 5328 sadalp v3.16b, v21.16b 5329 sadalp v8.4h, v5.4h 5330 sadalp v9.4s, v1.4s 5331 sadalp v0.4h, v1.2s 5332 sadalp v12.2d, v4.8h 5333 5334 // CHECK-ERROR: error: invalid operand for instruction 5335 // CHECK-ERROR: sadalp v3.16b, v21.16b 5336 // CHECK-ERROR: ^ 5337 // CHECK-ERROR: error: invalid operand for instruction 5338 // CHECK-ERROR: sadalp v8.4h, v5.4h 5339 // CHECK-ERROR: ^ 5340 // CHECK-ERROR: error: invalid operand for instruction 5341 // CHECK-ERROR: sadalp v9.4s, v1.4s 5342 // CHECK-ERROR: ^ 5343 // CHECK-ERROR: error: invalid operand for instruction 5344 // CHECK-ERROR: sadalp v0.4h, v1.2s 5345 // CHECK-ERROR: ^ 5346 // CHECK-ERROR: error: invalid operand for instruction 5347 // CHECK-ERROR: sadalp v12.2d, v4.8h 5348 // CHECK-ERROR: ^ 5349 5350 //------------------------------------------------------------------------------ 5351 // Unsigned integer pairwise add and accumulate long 5352 //------------------------------------------------------------------------------ 5353 5354 uadalp v3.16b, v21.16b 5355 uadalp v8.4h, v5.4h 5356 uadalp v9.4s, v1.4s 5357 uadalp v0.4h, v1.2s 5358 uadalp v12.2d, v4.8h 5359 5360 // CHECK-ERROR: error: invalid operand for instruction 5361 // CHECK-ERROR: uadalp v3.16b, v21.16b 5362 // CHECK-ERROR: ^ 5363 // CHECK-ERROR: error: invalid operand for instruction 5364 // CHECK-ERROR: uadalp v8.4h, v5.4h 5365 // CHECK-ERROR: ^ 5366 // CHECK-ERROR: error: invalid operand for instruction 5367 // CHECK-ERROR: uadalp v9.4s, v1.4s 5368 // CHECK-ERROR: ^ 5369 // CHECK-ERROR: error: invalid operand for instruction 5370 // CHECK-ERROR: uadalp v0.4h, v1.2s 5371 // CHECK-ERROR: ^ 5372 // CHECK-ERROR: error: invalid operand for instruction 5373 // CHECK-ERROR: uadalp v12.2d, v4.8h 5374 // CHECK-ERROR: ^ 5375 5376 //------------------------------------------------------------------------------ 5377 // Signed integer saturating accumulate of unsigned value 5378 //------------------------------------------------------------------------------ 5379 5380 suqadd v0.16b, v31.8b 5381 suqadd v1.8b, v9.8h 5382 suqadd v13.4h, v21.4s 5383 suqadd v4.2s, v0.2d 5384 5385 // CHECK-ERROR: error: invalid operand for instruction 5386 // CHECK-ERROR: suqadd v0.16b, v31.8b 5387 // CHECK-ERROR: ^ 5388 // CHECK-ERROR: error: invalid operand for instruction 5389 // CHECK-ERROR: suqadd v1.8b, v9.8h 5390 // CHECK-ERROR: ^ 5391 // CHECK-ERROR: error: invalid operand for instruction 5392 // CHECK-ERROR: suqadd v13.4h, v21.4s 5393 // CHECK-ERROR: ^ 5394 // CHECK-ERROR: error: invalid operand for instruction 5395 // CHECK-ERROR: suqadd v4.2s, v0.2d 5396 // CHECK-ERROR: ^ 5397 5398 //------------------------------------------------------------------------------ 5399 // Unsigned integer saturating accumulate of signed value 5400 //------------------------------------------------------------------------------ 5401 5402 usqadd v0.16b, v31.8b 5403 usqadd v2.8h, v4.4h 5404 usqadd v13.4h, v21.4s 5405 usqadd v4.2s, v0.2d 5406 5407 // CHECK-ERROR: error: invalid operand for instruction 5408 // CHECK-ERROR: usqadd v0.16b, v31.8b 5409 // CHECK-ERROR: ^ 5410 // CHECK-ERROR: error: invalid operand for instruction 5411 // CHECK-ERROR: usqadd v2.8h, v4.4h 5412 // CHECK-ERROR: ^ 5413 // CHECK-ERROR: error: invalid operand for instruction 5414 // CHECK-ERROR: usqadd v13.4h, v21.4s 5415 // CHECK-ERROR: ^ 5416 // CHECK-ERROR: error: invalid operand for instruction 5417 // CHECK-ERROR: usqadd v4.2s, v0.2d 5418 // CHECK-ERROR: ^ 5419 5420 //------------------------------------------------------------------------------ 5421 // Integer saturating absolute 5422 //------------------------------------------------------------------------------ 5423 5424 sqabs v0.16b, v31.8b 5425 sqabs v2.8h, v4.4h 5426 sqabs v6.4s, v8.2s 5427 sqabs v6.2d, v8.2s 5428 5429 // CHECK-ERROR: error: invalid operand for instruction 5430 // CHECK-ERROR: sqabs v0.16b, v31.8b 5431 // CHECK-ERROR: ^ 5432 // CHECK-ERROR: error: invalid operand for instruction 5433 // CHECK-ERROR: sqabs v2.8h, v4.4h 5434 // CHECK-ERROR: ^ 5435 // CHECK-ERROR: error: invalid operand for instruction 5436 // CHECK-ERROR: sqabs v6.4s, v8.2s 5437 // CHECK-ERROR: ^ 5438 // CHECK-ERROR: error: invalid operand for instruction 5439 // CHECK-ERROR: sqabs v6.2d, v8.2s 5440 // CHECK-ERROR: ^ 5441 5442 //------------------------------------------------------------------------------ 5443 // Signed integer saturating negate 5444 //------------------------------------------------------------------------------ 5445 5446 sqneg v0.16b, v31.8b 5447 sqneg v2.8h, v4.4h 5448 sqneg v6.4s, v8.2s 5449 sqneg v6.2d, v8.2s 5450 5451 // CHECK-ERROR: error: invalid operand for instruction 5452 // CHECK-ERROR: sqneg v0.16b, v31.8b 5453 // CHECK-ERROR: ^ 5454 // CHECK-ERROR: error: invalid operand for instruction 5455 // CHECK-ERROR: sqneg v2.8h, v4.4h 5456 // CHECK-ERROR: ^ 5457 // CHECK-ERROR: error: invalid operand for instruction 5458 // CHECK-ERROR: sqneg v6.4s, v8.2s 5459 // CHECK-ERROR: ^ 5460 // CHECK-ERROR: error: invalid operand for instruction 5461 // CHECK-ERROR: sqneg v6.2d, v8.2s 5462 // CHECK-ERROR: ^ 5463 5464 //------------------------------------------------------------------------------ 5465 // Integer absolute 5466 //------------------------------------------------------------------------------ 5467 5468 abs v0.16b, v31.8b 5469 abs v2.8h, v4.4h 5470 abs v6.4s, v8.2s 5471 abs v6.2d, v8.2s 5472 5473 // CHECK-ERROR: error: invalid operand for instruction 5474 // CHECK-ERROR: abs v0.16b, v31.8b 5475 // CHECK-ERROR: ^ 5476 // CHECK-ERROR: error: invalid operand for instruction 5477 // CHECK-ERROR: abs v2.8h, v4.4h 5478 // CHECK-ERROR: ^ 5479 // CHECK-ERROR: error: invalid operand for instruction 5480 // CHECK-ERROR: abs v6.4s, v8.2s 5481 // CHECK-ERROR: ^ 5482 // CHECK-ERROR: error: invalid operand for instruction 5483 // CHECK-ERROR: abs v6.2d, v8.2s 5484 // CHECK-ERROR: ^ 5485 5486 //------------------------------------------------------------------------------ 5487 // Integer count leading sign bits 5488 //------------------------------------------------------------------------------ 5489 5490 cls v0.2d, v31.2d 5491 5492 // CHECK-ERROR: error: invalid operand for instruction 5493 // CHECK-ERROR: cls v0.2d, v31.2d 5494 // CHECK-ERROR: ^ 5495 5496 //------------------------------------------------------------------------------ 5497 // Integer count leading zeros 5498 //------------------------------------------------------------------------------ 5499 5500 clz v0.2d, v31.2d 5501 5502 // CHECK-ERROR: error: invalid operand for instruction 5503 // CHECK-ERROR: clz v0.2d, v31.2d 5504 // CHECK-ERROR: ^ 5505 5506 //------------------------------------------------------------------------------ 5507 // Population count 5508 //------------------------------------------------------------------------------ 5509 5510 cnt v2.8h, v4.8h 5511 cnt v6.4s, v8.4s 5512 cnt v6.2d, v8.2d 5513 cnt v13.4h, v21.4h 5514 cnt v4.2s, v0.2s 5515 5516 // CHECK-ERROR: error: invalid operand for instruction 5517 // CHECK-ERROR: cnt v2.8h, v4.8h 5518 // CHECK-ERROR: ^ 5519 // CHECK-ERROR: error: invalid operand for instruction 5520 // CHECK-ERROR: cnt v6.4s, v8.4s 5521 // CHECK-ERROR: ^ 5522 // CHECK-ERROR: error: invalid operand for instruction 5523 // CHECK-ERROR: cnt v6.2d, v8.2d 5524 // CHECK-ERROR: ^ 5525 // CHECK-ERROR: error: invalid operand for instruction 5526 // CHECK-ERROR: cnt v13.4h, v21.4h 5527 // CHECK-ERROR: ^ 5528 // CHECK-ERROR: error: invalid operand for instruction 5529 // CHECK-ERROR: cnt v4.2s, v0.2s 5530 // CHECK-ERROR: ^ 5531 5532 5533 //------------------------------------------------------------------------------ 5534 // Bitwise NOT 5535 //------------------------------------------------------------------------------ 5536 5537 not v2.8h, v4.8h 5538 not v6.4s, v8.4s 5539 not v6.2d, v8.2d 5540 not v13.4h, v21.4h 5541 not v4.2s, v0.2s 5542 5543 // CHECK-ERROR: error: invalid operand for instruction 5544 // CHECK-ERROR: not v2.8h, v4.8h 5545 // CHECK-ERROR: ^ 5546 // CHECK-ERROR: error: invalid operand for instruction 5547 // CHECK-ERROR: not v6.4s, v8.4s 5548 // CHECK-ERROR: ^ 5549 // CHECK-ERROR: error: invalid operand for instruction 5550 // CHECK-ERROR: not v6.2d, v8.2d 5551 // CHECK-ERROR: ^ 5552 // CHECK-ERROR: error: invalid operand for instruction 5553 // CHECK-ERROR: not v13.4h, v21.4h 5554 // CHECK-ERROR: ^ 5555 // CHECK-ERROR: error: invalid operand for instruction 5556 // CHECK-ERROR: not v4.2s, v0.2s 5557 // CHECK-ERROR: ^ 5558 5559 //------------------------------------------------------------------------------ 5560 // Bitwise reverse 5561 //------------------------------------------------------------------------------ 5562 5563 rbit v2.8h, v4.8h 5564 rbit v6.4s, v8.4s 5565 rbit v6.2d, v8.2d 5566 rbit v13.4h, v21.4h 5567 rbit v4.2s, v0.2s 5568 5569 // CHECK-ERROR: error: invalid operand for instruction 5570 // CHECK-ERROR: rbit v2.8h, v4.8h 5571 // CHECK-ERROR: ^ 5572 // CHECK-ERROR: error: invalid operand for instruction 5573 // CHECK-ERROR: rbit v6.4s, v8.4s 5574 // CHECK-ERROR: ^ 5575 // CHECK-ERROR: error: invalid operand for instruction 5576 // CHECK-ERROR: rbit v6.2d, v8.2d 5577 // CHECK-ERROR: ^ 5578 // CHECK-ERROR: error: invalid operand for instruction 5579 // CHECK-ERROR: rbit v13.4h, v21.4h 5580 // CHECK-ERROR: ^ 5581 // CHECK-ERROR: error: invalid operand for instruction 5582 // CHECK-ERROR: rbit v4.2s, v0.2s 5583 // CHECK-ERROR: ^ 5584 5585 //------------------------------------------------------------------------------ 5586 // Floating-point absolute 5587 //------------------------------------------------------------------------------ 5588 5589 fabs v0.16b, v31.16b 5590 fabs v2.8h, v4.8h 5591 fabs v1.8b, v9.8b 5592 fabs v13.4h, v21.4h 5593 5594 // CHECK-ERROR: error: invalid operand for instruction 5595 // CHECK-ERROR: fabs v0.16b, v31.16b 5596 // CHECK-ERROR: ^ 5597 // CHECK-ERROR: error: instruction requires: fullfp16 5598 // CHECK-ERROR: fabs v2.8h, v4.8h 5599 // CHECK-ERROR: ^ 5600 // CHECK-ERROR: error: invalid operand for instruction 5601 // CHECK-ERROR: fabs v1.8b, v9.8b 5602 // CHECK-ERROR: ^ 5603 // CHECK-ERROR: error: instruction requires: fullfp16 5604 // CHECK-ERROR: fabs v13.4h, v21.4h 5605 // CHECK-ERROR: ^ 5606 5607 //------------------------------------------------------------------------------ 5608 // Floating-point negate 5609 //------------------------------------------------------------------------------ 5610 5611 fneg v0.16b, v31.16b 5612 fneg v2.8h, v4.8h 5613 fneg v1.8b, v9.8b 5614 fneg v13.4h, v21.4h 5615 5616 // CHECK-ERROR: error: invalid operand for instruction 5617 // CHECK-ERROR: fneg v0.16b, v31.16b 5618 // CHECK-ERROR: ^ 5619 // CHECK-ERROR: error: instruction requires: fullfp16 5620 // CHECK-ERROR: fneg v2.8h, v4.8h 5621 // CHECK-ERROR: ^ 5622 // CHECK-ERROR: error: invalid operand for instruction 5623 // CHECK-ERROR: fneg v1.8b, v9.8b 5624 // CHECK-ERROR: ^ 5625 // CHECK-ERROR: error: instruction requires: fullfp16 5626 // CHECK-ERROR: fneg v13.4h, v21.4h 5627 // CHECK-ERROR: ^ 5628 5629 //------------------------------------------------------------------------------ 5630 // Integer extract and narrow 5631 //------------------------------------------------------------------------------ 5632 5633 xtn v0.16b, v31.8h 5634 xtn v2.8h, v4.4s 5635 xtn v6.4s, v8.2d 5636 xtn2 v1.8b, v9.8h 5637 xtn2 v13.4h, v21.4s 5638 xtn2 v4.2s, v0.2d 5639 5640 // CHECK-ERROR: error: invalid operand for instruction 5641 // CHECK-ERROR: xtn v0.16b, v31.8h 5642 // CHECK-ERROR: ^ 5643 // CHECK-ERROR: error: invalid operand for instruction 5644 // CHECK-ERROR: xtn v2.8h, v4.4s 5645 // CHECK-ERROR: ^ 5646 // CHECK-ERROR: error: invalid operand for instruction 5647 // CHECK-ERROR: xtn v6.4s, v8.2d 5648 // CHECK-ERROR: ^ 5649 // CHECK-ERROR: error: invalid operand for instruction 5650 // CHECK-ERROR: xtn2 v1.8b, v9.8h 5651 // CHECK-ERROR: ^ 5652 // CHECK-ERROR: error: invalid operand for instruction 5653 // CHECK-ERROR: xtn2 v13.4h, v21.4s 5654 // CHECK-ERROR: ^ 5655 // CHECK-ERROR: error: invalid operand for instruction 5656 // CHECK-ERROR: xtn2 v4.2s, v0.2d 5657 // CHECK-ERROR: ^ 5658 5659 //------------------------------------------------------------------------------ 5660 // Signed integer saturating extract and unsigned narrow 5661 //------------------------------------------------------------------------------ 5662 5663 sqxtun v0.16b, v31.8h 5664 sqxtun v2.8h, v4.4s 5665 sqxtun v6.4s, v8.2d 5666 sqxtun2 v1.8b, v9.8h 5667 sqxtun2 v13.4h, v21.4s 5668 sqxtun2 v4.2s, v0.2d 5669 5670 // CHECK-ERROR: error: invalid operand for instruction 5671 // CHECK-ERROR: sqxtun v0.16b, v31.8h 5672 // CHECK-ERROR: ^ 5673 // CHECK-ERROR: error: invalid operand for instruction 5674 // CHECK-ERROR: sqxtun v2.8h, v4.4s 5675 // CHECK-ERROR: ^ 5676 // CHECK-ERROR: error: invalid operand for instruction 5677 // CHECK-ERROR: sqxtun v6.4s, v8.2d 5678 // CHECK-ERROR: ^ 5679 // CHECK-ERROR: error: invalid operand for instruction 5680 // CHECK-ERROR: sqxtun2 v1.8b, v9.8h 5681 // CHECK-ERROR: ^ 5682 // CHECK-ERROR: error: invalid operand for instruction 5683 // CHECK-ERROR: sqxtun2 v13.4h, v21.4s 5684 // CHECK-ERROR: ^ 5685 // CHECK-ERROR: error: invalid operand for instruction 5686 // CHECK-ERROR: sqxtun2 v4.2s, v0.2d 5687 // CHECK-ERROR: ^ 5688 5689 //------------------------------------------------------------------------------ 5690 // Signed integer saturating extract and narrow 5691 //------------------------------------------------------------------------------ 5692 5693 sqxtn v0.16b, v31.8h 5694 sqxtn v2.8h, v4.4s 5695 sqxtn v6.4s, v8.2d 5696 sqxtn2 v1.8b, v9.8h 5697 sqxtn2 v13.4h, v21.4s 5698 sqxtn2 v4.2s, v0.2d 5699 5700 // CHECK-ERROR: error: invalid operand for instruction 5701 // CHECK-ERROR: sqxtn v0.16b, v31.8h 5702 // CHECK-ERROR: ^ 5703 // CHECK-ERROR: error: invalid operand for instruction 5704 // CHECK-ERROR: sqxtn v2.8h, v4.4s 5705 // CHECK-ERROR: ^ 5706 // CHECK-ERROR: error: invalid operand for instruction 5707 // CHECK-ERROR: sqxtn v6.4s, v8.2d 5708 // CHECK-ERROR: ^ 5709 // CHECK-ERROR: error: invalid operand for instruction 5710 // CHECK-ERROR: sqxtn2 v1.8b, v9.8h 5711 // CHECK-ERROR: ^ 5712 // CHECK-ERROR: error: invalid operand for instruction 5713 // CHECK-ERROR: sqxtn2 v13.4h, v21.4s 5714 // CHECK-ERROR: ^ 5715 // CHECK-ERROR: error: invalid operand for instruction 5716 // CHECK-ERROR: sqxtn2 v4.2s, v0.2d 5717 // CHECK-ERROR: ^ 5718 5719 //------------------------------------------------------------------------------ 5720 // Unsigned integer saturating extract and narrow 5721 //------------------------------------------------------------------------------ 5722 5723 uqxtn v0.16b, v31.8h 5724 uqxtn v2.8h, v4.4s 5725 uqxtn v6.4s, v8.2d 5726 uqxtn2 v1.8b, v9.8h 5727 uqxtn2 v13.4h, v21.4s 5728 uqxtn2 v4.2s, v0.2d 5729 5730 // CHECK-ERROR: error: invalid operand for instruction 5731 // CHECK-ERROR: uqxtn v0.16b, v31.8h 5732 // CHECK-ERROR: ^ 5733 // CHECK-ERROR: error: invalid operand for instruction 5734 // CHECK-ERROR: uqxtn v2.8h, v4.4s 5735 // CHECK-ERROR: ^ 5736 // CHECK-ERROR: error: invalid operand for instruction 5737 // CHECK-ERROR: uqxtn v6.4s, v8.2d 5738 // CHECK-ERROR: ^ 5739 // CHECK-ERROR: error: invalid operand for instruction 5740 // CHECK-ERROR: uqxtn2 v1.8b, v9.8h 5741 // CHECK-ERROR: ^ 5742 // CHECK-ERROR: error: invalid operand for instruction 5743 // CHECK-ERROR: uqxtn2 v13.4h, v21.4s 5744 // CHECK-ERROR: ^ 5745 // CHECK-ERROR: error: invalid operand for instruction 5746 // CHECK-ERROR: uqxtn2 v4.2s, v0.2d 5747 // CHECK-ERROR: ^ 5748 5749 //------------------------------------------------------------------------------ 5750 // Integer shift left long 5751 //------------------------------------------------------------------------------ 5752 5753 shll2 v2.8h, v4.16b, #7 5754 shll2 v6.4s, v8.8h, #15 5755 shll2 v6.2d, v8.4s, #31 5756 shll v2.8h, v4.16b, #8 5757 shll v6.4s, v8.8h, #16 5758 shll v6.2d, v8.4s, #32 5759 shll v2.8h, v4.8b, #8 5760 shll v6.4s, v8.4h, #16 5761 shll v6.2d, v8.2s, #32 5762 shll2 v2.8h, v4.8b, #5 5763 shll2 v6.4s, v8.4h, #14 5764 shll2 v6.2d, v8.2s, #1 5765 5766 // CHECK-ERROR: error: invalid operand for instruction 5767 // CHECK-ERROR: shll2 v2.8h, v4.16b, #7 5768 // CHECK-ERROR: ^ 5769 // CHECK-ERROR: error: invalid operand for instruction 5770 // CHECK-ERROR: shll2 v6.4s, v8.8h, #15 5771 // CHECK-ERROR: ^ 5772 // CHECK-ERROR: error: invalid operand for instruction 5773 // CHECK-ERROR: shll2 v6.2d, v8.4s, #31 5774 // CHECK-ERROR: ^ 5775 // CHECK-ERROR: error: invalid operand for instruction 5776 // CHECK-ERROR: shll v2.8h, v4.16b, #8 5777 // CHECK-ERROR: ^ 5778 // CHECK-ERROR: error: invalid operand for instruction 5779 // CHECK-ERROR: shll v6.4s, v8.8h, #16 5780 // CHECK-ERROR: ^ 5781 // CHECK-ERROR: error: invalid operand for instruction 5782 // CHECK-ERROR: shll v6.2d, v8.4s, #32 5783 // CHECK-ERROR: ^ 5784 // CHECK-ERROR: error: invalid operand for instruction 5785 // CHECK-ERROR: shll2 v2.8h, v4.8b, #5 5786 // CHECK-ERROR: ^ 5787 // CHECK-ERROR: error: invalid operand for instruction 5788 // CHECK-ERROR: shll2 v6.4s, v8.4h, #14 5789 // CHECK-ERROR: ^ 5790 // CHECK-ERROR: error: invalid operand for instruction 5791 // CHECK-ERROR: shll2 v6.2d, v8.2s, #1 5792 // CHECK-ERROR: ^ 5793 5794 //------------------------------------------------------------------------------ 5795 // Floating-point convert downsize 5796 //------------------------------------------------------------------------------ 5797 5798 fcvtn v2.8h, v4.4s 5799 fcvtn v6.4s, v8.2d 5800 fcvtn2 v13.4h, v21.4s 5801 fcvtn2 v4.2s, v0.2d 5802 5803 // CHECK-ERROR: error: invalid operand for instruction 5804 // CHECK-ERROR: fcvtn v2.8h, v4.4s 5805 // CHECK-ERROR: ^ 5806 // CHECK-ERROR: error: invalid operand for instruction 5807 // CHECK-ERROR: fcvtn v6.4s, v8.2d 5808 // CHECK-ERROR: ^ 5809 // CHECK-ERROR: error: invalid operand for instruction 5810 // CHECK-ERROR: fcvtn2 v13.4h, v21.4s 5811 // CHECK-ERROR: ^ 5812 // CHECK-ERROR: error: invalid operand for instruction 5813 // CHECK-ERROR: fcvtn2 v4.2s, v0.2d 5814 // CHECK-ERROR: ^ 5815 5816 //------------------------------------------------------------------------------ 5817 // Floating-point convert downsize with inexact 5818 //------------------------------------------------------------------------------ 5819 5820 fcvtxn v6.4s, v8.2d 5821 fcvtxn2 v4.2s, v0.2d 5822 5823 // CHECK-ERROR: error: invalid operand for instruction 5824 // CHECK-ERROR: fcvtxn v6.4s, v8.2d 5825 // CHECK-ERROR: ^ 5826 // CHECK-ERROR: error: invalid operand for instruction 5827 // CHECK-ERROR: fcvtxn2 v4.2s, v0.2d 5828 // CHECK-ERROR: ^ 5829 5830 //------------------------------------------------------------------------------ 5831 // Floating-point convert upsize 5832 //------------------------------------------------------------------------------ 5833 5834 fcvtl2 v9.4s, v1.4h 5835 fcvtl2 v0.2d, v1.2s 5836 fcvtl v12.4s, v4.8h 5837 fcvtl v17.2d, v28.4s 5838 5839 // CHECK-ERROR: error: invalid operand for instruction 5840 // CHECK-ERROR: fcvtl2 v9.4s, v1.4h 5841 // CHECK-ERROR: ^ 5842 // CHECK-ERROR: error: invalid operand for instruction 5843 // CHECK-ERROR: fcvtl2 v0.2d, v1.2s 5844 // CHECK-ERROR: ^ 5845 // CHECK-ERROR: error: invalid operand for instruction 5846 // CHECK-ERROR: fcvtl v12.4s, v4.8h 5847 // CHECK-ERROR: ^ 5848 // CHECK-ERROR: error: invalid operand for instruction 5849 // CHECK-ERROR: fcvtl v17.2d, v28.4s 5850 // CHECK-ERROR: ^ 5851 5852 //------------------------------------------------------------------------------ 5853 // Floating-point round to integral 5854 //------------------------------------------------------------------------------ 5855 5856 frintn v0.16b, v31.16b 5857 frintn v2.8h, v4.8h 5858 frintn v1.8b, v9.8b 5859 frintn v13.4h, v21.4h 5860 5861 frinta v0.16b, v31.16b 5862 frinta v2.8h, v4.8h 5863 frinta v1.8b, v9.8b 5864 frinta v13.4h, v21.4h 5865 5866 frintp v0.16b, v31.16b 5867 frintp v2.8h, v4.8h 5868 frintp v1.8b, v9.8b 5869 frintp v13.4h, v21.4h 5870 5871 frintm v0.16b, v31.16b 5872 frintm v2.8h, v4.8h 5873 frintm v1.8b, v9.8b 5874 frintm v13.4h, v21.4h 5875 5876 frintx v0.16b, v31.16b 5877 frintx v2.8h, v4.8h 5878 frintx v1.8b, v9.8b 5879 frintx v13.4h, v21.4h 5880 5881 frintz v0.16b, v31.16b 5882 frintz v2.8h, v4.8h 5883 frintz v1.8b, v9.8b 5884 frintz v13.4h, v21.4h 5885 5886 frinti v0.16b, v31.16b 5887 frinti v2.8h, v4.8h 5888 frinti v1.8b, v9.8b 5889 frinti v13.4h, v21.4h 5890 5891 fcvtns v0.16b, v31.16b 5892 fcvtns v2.8h, v4.8h 5893 fcvtns v1.8b, v9.8b 5894 fcvtns v13.4h, v21.4h 5895 5896 fcvtnu v0.16b, v31.16b 5897 fcvtnu v2.8h, v4.8h 5898 fcvtnu v1.8b, v9.8b 5899 fcvtnu v13.4h, v21.4h 5900 5901 fcvtps v0.16b, v31.16b 5902 fcvtps v2.8h, v4.8h 5903 fcvtps v1.8b, v9.8b 5904 fcvtps v13.4h, v21.4h 5905 5906 fcvtpu v0.16b, v31.16b 5907 fcvtpu v2.8h, v4.8h 5908 fcvtpu v1.8b, v9.8b 5909 fcvtpu v13.4h, v21.4h 5910 5911 fcvtms v0.16b, v31.16b 5912 fcvtms v2.8h, v4.8h 5913 fcvtms v1.8b, v9.8b 5914 fcvtms v13.4h, v21.4h 5915 5916 fcvtmu v0.16b, v31.16b 5917 fcvtmu v2.8h, v4.8h 5918 fcvtmu v1.8b, v9.8b 5919 fcvtmu v13.4h, v21.4h 5920 5921 fcvtzs v0.16b, v31.16b 5922 fcvtzs v2.8h, v4.8h 5923 fcvtzs v1.8b, v9.8b 5924 fcvtzs v13.4h, v21.4h 5925 5926 fcvtzu v0.16b, v31.16b 5927 fcvtzu v2.8h, v4.8h 5928 fcvtzu v1.8b, v9.8b 5929 fcvtzu v13.4h, v21.4h 5930 5931 fcvtas v0.16b, v31.16b 5932 fcvtas v2.8h, v4.8h 5933 fcvtas v1.8b, v9.8b 5934 fcvtas v13.4h, v21.4h 5935 5936 fcvtau v0.16b, v31.16b 5937 fcvtau v2.8h, v4.8h 5938 fcvtau v1.8b, v9.8b 5939 fcvtau v13.4h, v21.4h 5940 5941 urecpe v0.16b, v31.16b 5942 urecpe v2.8h, v4.8h 5943 urecpe v1.8b, v9.8b 5944 urecpe v13.4h, v21.4h 5945 urecpe v1.2d, v9.2d 5946 5947 ursqrte v0.16b, v31.16b 5948 ursqrte v2.8h, v4.8h 5949 ursqrte v1.8b, v9.8b 5950 ursqrte v13.4h, v21.4h 5951 ursqrte v1.2d, v9.2d 5952 5953 scvtf v0.16b, v31.16b 5954 scvtf v2.8h, v4.8h 5955 scvtf v1.8b, v9.8b 5956 scvtf v13.4h, v21.4h 5957 5958 ucvtf v0.16b, v31.16b 5959 ucvtf v2.8h, v4.8h 5960 ucvtf v1.8b, v9.8b 5961 ucvtf v13.4h, v21.4h 5962 5963 frecpe v0.16b, v31.16b 5964 frecpe v2.8h, v4.8h 5965 frecpe v1.8b, v9.8b 5966 frecpe v13.4h, v21.4h 5967 5968 frsqrte v0.16b, v31.16b 5969 frsqrte v2.8h, v4.8h 5970 frsqrte v1.8b, v9.8b 5971 frsqrte v13.4h, v21.4h 5972 5973 fsqrt v0.16b, v31.16b 5974 fsqrt v2.8h, v4.8h 5975 fsqrt v1.8b, v9.8b 5976 fsqrt v13.4h, v21.4h 5977 5978 // CHECK-ERROR: error: invalid operand for instruction 5979 // CHECK-ERROR: frintn v0.16b, v31.16b 5980 // CHECK-ERROR: ^ 5981 // CHECK-ERROR: error: instruction requires: fullfp16 5982 // CHECK-ERROR: frintn v2.8h, v4.8h 5983 // CHECK-ERROR: ^ 5984 // CHECK-ERROR: error: invalid operand for instruction 5985 // CHECK-ERROR: frintn v1.8b, v9.8b 5986 // CHECK-ERROR: ^ 5987 // CHECK-ERROR: error: instruction requires: fullfp16 5988 // CHECK-ERROR: frintn v13.4h, v21.4h 5989 // CHECK-ERROR: ^ 5990 // CHECK-ERROR: error: invalid operand for instruction 5991 // CHECK-ERROR: frinta v0.16b, v31.16b 5992 // CHECK-ERROR: ^ 5993 // CHECK-ERROR: error: instruction requires: fullfp16 5994 // CHECK-ERROR: frinta v2.8h, v4.8h 5995 // CHECK-ERROR: ^ 5996 // CHECK-ERROR: error: invalid operand for instruction 5997 // CHECK-ERROR: frinta v1.8b, v9.8b 5998 // CHECK-ERROR: ^ 5999 // CHECK-ERROR: error: instruction requires: fullfp16 6000 // CHECK-ERROR: frinta v13.4h, v21.4h 6001 // CHECK-ERROR: ^ 6002 // CHECK-ERROR: error: invalid operand for instruction 6003 // CHECK-ERROR: frintp v0.16b, v31.16b 6004 // CHECK-ERROR: ^ 6005 // CHECK-ERROR: error: instruction requires: fullfp16 6006 // CHECK-ERROR: frintp v2.8h, v4.8h 6007 // CHECK-ERROR: ^ 6008 // CHECK-ERROR: error: invalid operand for instruction 6009 // CHECK-ERROR: frintp v1.8b, v9.8b 6010 // CHECK-ERROR: ^ 6011 // CHECK-ERROR: error: instruction requires: fullfp16 6012 // CHECK-ERROR: frintp v13.4h, v21.4h 6013 // CHECK-ERROR: ^ 6014 // CHECK-ERROR: error: invalid operand for instruction 6015 // CHECK-ERROR: frintm v0.16b, v31.16b 6016 // CHECK-ERROR: ^ 6017 // CHECK-ERROR: error: instruction requires: fullfp16 6018 // CHECK-ERROR: frintm v2.8h, v4.8h 6019 // CHECK-ERROR: ^ 6020 // CHECK-ERROR: error: invalid operand for instruction 6021 // CHECK-ERROR: frintm v1.8b, v9.8b 6022 // CHECK-ERROR: ^ 6023 // CHECK-ERROR: error: instruction requires: fullfp16 6024 // CHECK-ERROR: frintm v13.4h, v21.4h 6025 // CHECK-ERROR: ^ 6026 // CHECK-ERROR: error: invalid operand for instruction 6027 // CHECK-ERROR: frintx v0.16b, v31.16b 6028 // CHECK-ERROR: ^ 6029 // CHECK-ERROR: error: instruction requires: fullfp16 6030 // CHECK-ERROR: frintx v2.8h, v4.8h 6031 // CHECK-ERROR: ^ 6032 // CHECK-ERROR: error: invalid operand for instruction 6033 // CHECK-ERROR: frintx v1.8b, v9.8b 6034 // CHECK-ERROR: ^ 6035 // CHECK-ERROR: error: instruction requires: fullfp16 6036 // CHECK-ERROR: frintx v13.4h, v21.4h 6037 // CHECK-ERROR: ^ 6038 // CHECK-ERROR: error: invalid operand for instruction 6039 // CHECK-ERROR: frintz v0.16b, v31.16b 6040 // CHECK-ERROR: ^ 6041 // CHECK-ERROR: error: instruction requires: fullfp16 6042 // CHECK-ERROR: frintz v2.8h, v4.8h 6043 // CHECK-ERROR: ^ 6044 // CHECK-ERROR: error: invalid operand for instruction 6045 // CHECK-ERROR: frintz v1.8b, v9.8b 6046 // CHECK-ERROR: ^ 6047 // CHECK-ERROR: error: instruction requires: fullfp16 6048 // CHECK-ERROR: frintz v13.4h, v21.4h 6049 // CHECK-ERROR: ^ 6050 // CHECK-ERROR: error: invalid operand for instruction 6051 // CHECK-ERROR: frinti v0.16b, v31.16b 6052 // CHECK-ERROR: ^ 6053 // CHECK-ERROR: error: instruction requires: fullfp16 6054 // CHECK-ERROR: frinti v2.8h, v4.8h 6055 // CHECK-ERROR: ^ 6056 // CHECK-ERROR: error: invalid operand for instruction 6057 // CHECK-ERROR: frinti v1.8b, v9.8b 6058 // CHECK-ERROR: ^ 6059 // CHECK-ERROR: error: instruction requires: fullfp16 6060 // CHECK-ERROR: frinti v13.4h, v21.4h 6061 // CHECK-ERROR: ^ 6062 // CHECK-ERROR: error: invalid operand for instruction 6063 // CHECK-ERROR: fcvtns v0.16b, v31.16b 6064 // CHECK-ERROR: ^ 6065 // CHECK-ERROR: error: instruction requires: fullfp16 6066 // CHECK-ERROR: fcvtns v2.8h, v4.8h 6067 // CHECK-ERROR: ^ 6068 // CHECK-ERROR: error: invalid operand for instruction 6069 // CHECK-ERROR: fcvtns v1.8b, v9.8b 6070 // CHECK-ERROR: ^ 6071 // CHECK-ERROR: error: instruction requires: fullfp16 6072 // CHECK-ERROR: fcvtns v13.4h, v21.4h 6073 // CHECK-ERROR: ^ 6074 // CHECK-ERROR: error: invalid operand for instruction 6075 // CHECK-ERROR: fcvtnu v0.16b, v31.16b 6076 // CHECK-ERROR: ^ 6077 // CHECK-ERROR: error: instruction requires: fullfp16 6078 // CHECK-ERROR: fcvtnu v2.8h, v4.8h 6079 // CHECK-ERROR: ^ 6080 // CHECK-ERROR: error: invalid operand for instruction 6081 // CHECK-ERROR: fcvtnu v1.8b, v9.8b 6082 // CHECK-ERROR: ^ 6083 // CHECK-ERROR: error: instruction requires: fullfp16 6084 // CHECK-ERROR: fcvtnu v13.4h, v21.4h 6085 // CHECK-ERROR: ^ 6086 // CHECK-ERROR: error: invalid operand for instruction 6087 // CHECK-ERROR: fcvtps v0.16b, v31.16b 6088 // CHECK-ERROR: ^ 6089 // CHECK-ERROR: error: instruction requires: fullfp16 6090 // CHECK-ERROR: fcvtps v2.8h, v4.8h 6091 // CHECK-ERROR: ^ 6092 // CHECK-ERROR: error: invalid operand for instruction 6093 // CHECK-ERROR: fcvtps v1.8b, v9.8b 6094 // CHECK-ERROR: ^ 6095 // CHECK-ERROR: error: instruction requires: fullfp16 6096 // CHECK-ERROR: fcvtps v13.4h, v21.4h 6097 // CHECK-ERROR: ^ 6098 // CHECK-ERROR: error: invalid operand for instruction 6099 // CHECK-ERROR: fcvtpu v0.16b, v31.16b 6100 // CHECK-ERROR: ^ 6101 // CHECK-ERROR: error: instruction requires: fullfp16 6102 // CHECK-ERROR: fcvtpu v2.8h, v4.8h 6103 // CHECK-ERROR: ^ 6104 // CHECK-ERROR: error: invalid operand for instruction 6105 // CHECK-ERROR: fcvtpu v1.8b, v9.8b 6106 // CHECK-ERROR: ^ 6107 // CHECK-ERROR: error: instruction requires: fullfp16 6108 // CHECK-ERROR: fcvtpu v13.4h, v21.4h 6109 // CHECK-ERROR: ^ 6110 // CHECK-ERROR: error: invalid operand for instruction 6111 // CHECK-ERROR: fcvtms v0.16b, v31.16b 6112 // CHECK-ERROR: ^ 6113 // CHECK-ERROR: error: instruction requires: fullfp16 6114 // CHECK-ERROR: fcvtms v2.8h, v4.8h 6115 // CHECK-ERROR: ^ 6116 // CHECK-ERROR: error: invalid operand for instruction 6117 // CHECK-ERROR: fcvtms v1.8b, v9.8b 6118 // CHECK-ERROR: ^ 6119 // CHECK-ERROR: error: instruction requires: fullfp16 6120 // CHECK-ERROR: fcvtms v13.4h, v21.4h 6121 // CHECK-ERROR: ^ 6122 // CHECK-ERROR: error: invalid operand for instruction 6123 // CHECK-ERROR: fcvtmu v0.16b, v31.16b 6124 // CHECK-ERROR: ^ 6125 // CHECK-ERROR: error: instruction requires: fullfp16 6126 // CHECK-ERROR: fcvtmu v2.8h, v4.8h 6127 // CHECK-ERROR: ^ 6128 // CHECK-ERROR: error: invalid operand for instruction 6129 // CHECK-ERROR: fcvtmu v1.8b, v9.8b 6130 // CHECK-ERROR: ^ 6131 // CHECK-ERROR: error: instruction requires: fullfp16 6132 // CHECK-ERROR: fcvtmu v13.4h, v21.4h 6133 // CHECK-ERROR: ^ 6134 // CHECK-ERROR: error: invalid operand for instruction 6135 // CHECK-ERROR: fcvtzs v0.16b, v31.16b 6136 // CHECK-ERROR: ^ 6137 // CHECK-ERROR: error: instruction requires: fullfp16 6138 // CHECK-ERROR: fcvtzs v2.8h, v4.8h 6139 // CHECK-ERROR: ^ 6140 // CHECK-ERROR: error: invalid operand for instruction 6141 // CHECK-ERROR: fcvtzs v1.8b, v9.8b 6142 // CHECK-ERROR: ^ 6143 // CHECK-ERROR: error: instruction requires: fullfp16 6144 // CHECK-ERROR: fcvtzs v13.4h, v21.4h 6145 // CHECK-ERROR: ^ 6146 // CHECK-ERROR: error: invalid operand for instruction 6147 // CHECK-ERROR: fcvtzu v0.16b, v31.16b 6148 // CHECK-ERROR: ^ 6149 // CHECK-ERROR: error: instruction requires: fullfp16 6150 // CHECK-ERROR: fcvtzu v2.8h, v4.8h 6151 // CHECK-ERROR: ^ 6152 // CHECK-ERROR: error: invalid operand for instruction 6153 // CHECK-ERROR: fcvtzu v1.8b, v9.8b 6154 // CHECK-ERROR: ^ 6155 // CHECK-ERROR: error: instruction requires: fullfp16 6156 // CHECK-ERROR: fcvtzu v13.4h, v21.4h 6157 // CHECK-ERROR: ^ 6158 // CHECK-ERROR: error: invalid operand for instruction 6159 // CHECK-ERROR: fcvtas v0.16b, v31.16b 6160 // CHECK-ERROR: ^ 6161 // CHECK-ERROR: error: instruction requires: fullfp16 6162 // CHECK-ERROR: fcvtas v2.8h, v4.8h 6163 // CHECK-ERROR: ^ 6164 // CHECK-ERROR: error: invalid operand for instruction 6165 // CHECK-ERROR: fcvtas v1.8b, v9.8b 6166 // CHECK-ERROR: ^ 6167 // CHECK-ERROR: error: instruction requires: fullfp16 6168 // CHECK-ERROR: fcvtas v13.4h, v21.4h 6169 // CHECK-ERROR: ^ 6170 // CHECK-ERROR: error: invalid operand for instruction 6171 // CHECK-ERROR: fcvtau v0.16b, v31.16b 6172 // CHECK-ERROR: ^ 6173 // CHECK-ERROR: error: instruction requires: fullfp16 6174 // CHECK-ERROR: fcvtau v2.8h, v4.8h 6175 // CHECK-ERROR: ^ 6176 // CHECK-ERROR: error: invalid operand for instruction 6177 // CHECK-ERROR: fcvtau v1.8b, v9.8b 6178 // CHECK-ERROR: ^ 6179 // CHECK-ERROR: error: instruction requires: fullfp16 6180 // CHECK-ERROR: fcvtau v13.4h, v21.4h 6181 // CHECK-ERROR: ^ 6182 // CHECK-ERROR: error: invalid operand for instruction 6183 // CHECK-ERROR: urecpe v0.16b, v31.16b 6184 // CHECK-ERROR: ^ 6185 // CHECK-ERROR: error: invalid operand for instruction 6186 // CHECK-ERROR: urecpe v2.8h, v4.8h 6187 // CHECK-ERROR: ^ 6188 // CHECK-ERROR: error: invalid operand for instruction 6189 // CHECK-ERROR: urecpe v1.8b, v9.8b 6190 // CHECK-ERROR: ^ 6191 // CHECK-ERROR: error: invalid operand for instruction 6192 // CHECK-ERROR: urecpe v13.4h, v21.4h 6193 // CHECK-ERROR: ^ 6194 // CHECK-ERROR: error: invalid operand for instruction 6195 // CHECK-ERROR: urecpe v1.2d, v9.2d 6196 // CHECK-ERROR: ^ 6197 // CHECK-ERROR: error: invalid operand for instruction 6198 // CHECK-ERROR: ursqrte v0.16b, v31.16b 6199 // CHECK-ERROR: ^ 6200 // CHECK-ERROR: error: invalid operand for instruction 6201 // CHECK-ERROR: ursqrte v2.8h, v4.8h 6202 // CHECK-ERROR: ^ 6203 // CHECK-ERROR: error: invalid operand for instruction 6204 // CHECK-ERROR: ursqrte v1.8b, v9.8b 6205 // CHECK-ERROR: ^ 6206 // CHECK-ERROR: error: invalid operand for instruction 6207 // CHECK-ERROR: ursqrte v13.4h, v21.4h 6208 // CHECK-ERROR: ^ 6209 // CHECK-ERROR: error: invalid operand for instruction 6210 // CHECK-ERROR: ursqrte v1.2d, v9.2d 6211 // CHECK-ERROR: ^ 6212 // CHECK-ERROR: error: invalid operand for instruction 6213 // CHECK-ERROR: scvtf v0.16b, v31.16b 6214 // CHECK-ERROR: ^ 6215 // CHECK-ERROR: error: instruction requires: fullfp16 6216 // CHECK-ERROR: scvtf v2.8h, v4.8h 6217 // CHECK-ERROR: ^ 6218 // CHECK-ERROR: error: invalid operand for instruction 6219 // CHECK-ERROR: scvtf v1.8b, v9.8b 6220 // CHECK-ERROR: ^ 6221 // CHECK-ERROR: error: instruction requires: fullfp16 6222 // CHECK-ERROR: scvtf v13.4h, v21.4h 6223 // CHECK-ERROR: ^ 6224 // CHECK-ERROR: error: invalid operand for instruction 6225 // CHECK-ERROR: ucvtf v0.16b, v31.16b 6226 // CHECK-ERROR: ^ 6227 // CHECK-ERROR: error: instruction requires: fullfp16 6228 // CHECK-ERROR: ucvtf v2.8h, v4.8h 6229 // CHECK-ERROR: ^ 6230 // CHECK-ERROR: error: invalid operand for instruction 6231 // CHECK-ERROR: ucvtf v1.8b, v9.8b 6232 // CHECK-ERROR: ^ 6233 // CHECK-ERROR: error: instruction requires: fullfp16 6234 // CHECK-ERROR: ucvtf v13.4h, v21.4h 6235 // CHECK-ERROR: ^ 6236 // CHECK-ERROR: error: invalid operand for instruction 6237 // CHECK-ERROR: frecpe v0.16b, v31.16b 6238 // CHECK-ERROR: ^ 6239 // CHECK-ERROR: error: instruction requires: fullfp16 6240 // CHECK-ERROR: frecpe v2.8h, v4.8h 6241 // CHECK-ERROR: ^ 6242 // CHECK-ERROR: error: invalid operand for instruction 6243 // CHECK-ERROR: frecpe v1.8b, v9.8b 6244 // CHECK-ERROR: ^ 6245 // CHECK-ERROR: error: instruction requires: fullfp16 6246 // CHECK-ERROR: frecpe v13.4h, v21.4h 6247 // CHECK-ERROR: ^ 6248 // CHECK-ERROR: error: invalid operand for instruction 6249 // CHECK-ERROR: frsqrte v0.16b, v31.16b 6250 // CHECK-ERROR: ^ 6251 // CHECK-ERROR: error: instruction requires: fullfp16 6252 // CHECK-ERROR: frsqrte v2.8h, v4.8h 6253 // CHECK-ERROR: ^ 6254 // CHECK-ERROR: error: invalid operand for instruction 6255 // CHECK-ERROR: frsqrte v1.8b, v9.8b 6256 // CHECK-ERROR: ^ 6257 // CHECK-ERROR: error: instruction requires: fullfp16 6258 // CHECK-ERROR: frsqrte v13.4h, v21.4h 6259 // CHECK-ERROR: ^ 6260 // CHECK-ERROR: error: invalid operand for instruction 6261 // CHECK-ERROR: fsqrt v0.16b, v31.16b 6262 // CHECK-ERROR: ^ 6263 // CHECK-ERROR: error: instruction requires: fullfp16 6264 // CHECK-ERROR: fsqrt v2.8h, v4.8h 6265 // CHECK-ERROR: ^ 6266 // CHECK-ERROR: error: invalid operand for instruction 6267 // CHECK-ERROR: fsqrt v1.8b, v9.8b 6268 // CHECK-ERROR: ^ 6269 // CHECK-ERROR: error: instruction requires: fullfp16 6270 // CHECK-ERROR: fsqrt v13.4h, v21.4h 6271 // CHECK-ERROR: ^ 6272 6273 //---------------------------------------------------------------------- 6274 // Scalar Floating-point Convert To Signed Fixed-point (Immediate) 6275 //---------------------------------------------------------------------- 6276 6277 fcvtzs s21, s12, #0 6278 fcvtzs d21, d12, #65 6279 fcvtzs s21, d12, #1 6280 6281 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 6282 // CHECK-ERROR: fcvtzs s21, s12, #0 6283 // CHECK-ERROR: ^ 6284 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 6285 // CHECK-ERROR: fcvtzs d21, d12, #65 6286 // CHECK-ERROR: ^ 6287 // CHECK-ERROR: error: invalid operand for instruction 6288 // CHECK-ERROR: fcvtzs s21, d12, #1 6289 // CHECK-ERROR: ^ 6290 6291 //---------------------------------------------------------------------- 6292 // Scalar Floating-point Convert To Unsigned Fixed-point (Immediate) 6293 //---------------------------------------------------------------------- 6294 6295 fcvtzu s21, s12, #33 6296 fcvtzu d21, d12, #0 6297 fcvtzu s21, d12, #1 6298 6299 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 32] 6300 // CHECK-ERROR: fcvtzu s21, s12, #33 6301 // CHECK-ERROR: ^ 6302 // CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [1, 64] 6303 // CHECK-ERROR: fcvtzu d21, d12, #0 6304 // CHECK-ERROR: ^ 6305 // CHECK-ERROR: error: invalid operand for instruction 6306 // CHECK-ERROR: fcvtzu s21, d12, #1 6307 // CHECK-ERROR: ^ 6308 6309 //---------------------------------------------------------------------- 6310 // Scalar Unsigned Saturating Extract Narrow 6311 //---------------------------------------------------------------------- 6312 6313 aese v0.8h, v1.8h 6314 aese v0.4s, v1.4s 6315 aese v0.2d, v1.2d 6316 aesd v0.8h, v1.8h 6317 aesmc v0.8h, v1.8h 6318 aesimc v0.8h, v1.8h 6319 6320 // CHECK: error: invalid operand for instruction 6321 // CHECK: aese v0.8h, v1.8h 6322 // CHECK: ^ 6323 // CHECK: error: invalid operand for instruction 6324 // CHECK: aese v0.4s, v1.4s 6325 // CHECK: ^ 6326 // CHECK: error: invalid operand for instruction 6327 // CHECK: aese v0.2d, v1.2d 6328 // CHECK: ^ 6329 // CHECK: error: invalid operand for instruction 6330 // CHECK: aesd v0.8h, v1.8h 6331 // CHECK: ^ 6332 // CHECK: error: invalid operand for instruction 6333 // CHECK: aesmc v0.8h, v1.8h 6334 // CHECK: ^ 6335 // CHECK: error: invalid operand for instruction 6336 // CHECK: aesimc v0.8h, v1.8h 6337 // CHECK: ^ 6338 6339 sha1h b0, b1 6340 sha1h h0, h1 6341 sha1h d0, d1 6342 sha1h q0, q1 6343 sha1su1 v0.16b, v1.16b 6344 sha1su1 v0.8h, v1.8h 6345 sha1su1 v0.2d, v1.2d 6346 sha256su0 v0.16b, v1.16b 6347 6348 // CHECK: error: invalid operand for instruction 6349 // CHECK: sha1h b0, b1 6350 // CHECK: ^ 6351 // CHECK: error: invalid operand for instruction 6352 // CHECK: sha1h h0, h1 6353 // CHECK: ^ 6354 // CHECK: error: invalid operand for instruction 6355 // CHECK: sha1h d0, d1 6356 // CHECK: ^ 6357 // CHECK: error: invalid operand for instruction 6358 // CHECK: sha1h q0, q1 6359 // CHECK: ^ 6360 // CHECK: error: invalid operand for instruction 6361 // CHECK: sha1su1 v0.16b, v1.16b 6362 // CHECK: ^ 6363 // CHECK: error: invalid operand for instruction 6364 // CHECK: sha1su1 v0.8h, v1.8h 6365 // CHECK: ^ 6366 // CHECK: error: invalid operand for instruction 6367 // CHECK: sha1su1 v0.2d, v1.2d 6368 // CHECK: ^ 6369 // CHECK: error: invalid operand for instruction 6370 // CHECK: sha256su0 v0.16b, v1.16b 6371 // CHECK: ^ 6372 6373 sha1c q0, q1, v2.4s 6374 sha1p q0, q1, v2.4s 6375 sha1m q0, q1, v2.4s 6376 sha1su0 v0.16b, v1.16b, v2.16b 6377 sha1su0 v0.8h, v1.8h, v2.8h 6378 sha1su0 v0.2d, v1.2d, v2.2d 6379 sha256h q0, q1, q2 6380 sha256h v0.4s, v1.4s, v2.4s 6381 sha256h2 q0, q1, q2 6382 sha256su1 v0.16b, v1.16b, v2.16b 6383 6384 // CHECK: error: invalid operand for instruction 6385 // CHECK: sha1c q0, q1, v2.4s 6386 // CHECK: ^ 6387 // CHECK: error: invalid operand for instruction 6388 // CHECK: sha1p q0, q1, v2.4s 6389 // CHECK: ^ 6390 // CHECK: error: invalid operand for instruction 6391 // CHECK: sha1m q0, q1, v2.4s 6392 // CHECK: ^ 6393 // CHECK: error: invalid operand for instruction 6394 // CHECK: sha1su0 v0.16b, v1.16b, v2.16b 6395 // CHECK: ^ 6396 // CHECK: error: invalid operand for instruction 6397 // CHECK: sha1su0 v0.8h, v1.8h, v2.8h 6398 // CHECK: ^ 6399 // CHECK: error: invalid operand for instruction 6400 // CHECK: sha1su0 v0.2d, v1.2d, v2.2d 6401 // CHECK: ^ 6402 // CHECK: error: too few operands for instruction 6403 // CHECK: sha256h q0, q1, q2 6404 // CHECK: ^ 6405 // CHECK: error: invalid operand for instruction 6406 // CHECK: sha256h v0.4s, v1.4s, v2.4s 6407 // CHECK: ^ 6408 // CHECK: error: too few operands for instruction 6409 // CHECK: sha256h2 q0, q1, q2 6410 // CHECK: ^ 6411 // CHECK: error: invalid operand for instruction 6412 // CHECK: sha256su1 v0.16b, v1.16b, v2.16b 6413 // CHECK: ^ 6414 6415 //---------------------------------------------------------------------- 6416 // Bitwise extract 6417 //---------------------------------------------------------------------- 6418 6419 ext v0.8b, v1.8b, v2.4h, #0x3 6420 ext v0.4h, v1.4h, v2.4h, #0x3 6421 ext v0.2s, v1.2s, v2.2s, #0x1 6422 ext v0.1d, v1.1d, v2.1d, #0x0 6423 6424 // CHECK-ERROR: error: invalid operand for instruction 6425 // CHECK-ERROR: ext v0.8b, v1.8b, v2.4h, #0x3 6426 // CHECK-ERROR: ^ 6427 // CHECK-ERROR: error: invalid operand for instruction 6428 // CHECK-ERROR: ext v0.4h, v1.4h, v2.4h, #0x3 6429 // CHECK-ERROR: ^ 6430 // CHECK-ERROR: error: invalid operand for instruction 6431 // CHECK-ERROR: ext v0.2s, v1.2s, v2.2s, #0x1 6432 // CHECK-ERROR: ^ 6433 // CHECK-ERROR: error: invalid operand for instruction 6434 // CHECK-ERROR: ext v0.1d, v1.1d, v2.1d, #0x0 6435 // CHECK-ERROR: ^ 6436 6437 ext v0.16b, v1.16b, v2.8h, #0x3 6438 ext v0.8h, v1.8h, v2.8h, #0x3 6439 ext v0.4s, v1.4s, v2.4s, #0x1 6440 ext v0.2d, v1.2d, v2.2d, #0x0 6441 6442 // CHECK-ERROR: error: invalid operand for instruction 6443 // CHECK-ERROR: ext v0.16b, v1.16b, v2.8h, #0x3 6444 // CHECK-ERROR: ^ 6445 // CHECK-ERROR: error: invalid operand for instruction 6446 // CHECK-ERROR: ext v0.8h, v1.8h, v2.8h, #0x3 6447 // CHECK-ERROR: ^ 6448 // CHECK-ERROR: error: invalid operand for instruction 6449 // CHECK-ERROR: ext v0.4s, v1.4s, v2.4s, #0x1 6450 // CHECK-ERROR: ^ 6451 // CHECK-ERROR: error: invalid operand for instruction 6452 // CHECK-ERROR: ext v0.2d, v1.2d, v2.2d, #0x0 6453 // CHECK-ERROR: ^ 6454 6455 6456 //---------------------------------------------------------------------- 6457 // Permutation with 3 vectors 6458 //---------------------------------------------------------------------- 6459 6460 uzp1 v0.16b, v1.8b, v2.8b 6461 uzp1 v0.8b, v1.4b, v2.4b 6462 uzp1 v0.8h, v1.4h, v2.4h 6463 uzp1 v0.4h, v1.2h, v2.2h 6464 uzp1 v0.4s, v1.2s, v2.2s 6465 uzp1 v0.2s, v1.1s, v2.1s 6466 uzp1 v0.2d, v1.1d, v2.1d 6467 uzp1 v0.1d, v1.1d, v2.1d 6468 6469 // CHECK-ERROR: error: invalid operand for instruction 6470 // CHECK-ERROR: uzp1 v0.16b, v1.8b, v2.8b 6471 // CHECK-ERROR: ^ 6472 // CHECK-ERROR: error: invalid operand for instruction 6473 // CHECK-ERROR: uzp1 v0.8b, v1.4b, v2.4b 6474 // CHECK-ERROR: ^ 6475 // CHECK-ERROR: error: invalid operand for instruction 6476 // CHECK-ERROR: uzp1 v0.8h, v1.4h, v2.4h 6477 // CHECK-ERROR: ^ 6478 // CHECK-ERROR: error: invalid operand for instruction 6479 // CHECK-ERROR: uzp1 v0.4h, v1.2h, v2.2h 6480 // CHECK-ERROR: ^ 6481 // CHECK-ERROR: error: invalid operand for instruction 6482 // CHECK-ERROR: uzp1 v0.4s, v1.2s, v2.2s 6483 // CHECK-ERROR: ^ 6484 // CHECK-ERROR: error: invalid operand for instruction 6485 // CHECK-ERROR: uzp1 v0.2s, v1.1s, v2.1s 6486 // CHECK-ERROR: ^ 6487 // CHECK-ERROR: error: invalid operand for instruction 6488 // CHECK-ERROR: uzp1 v0.2d, v1.1d, v2.1d 6489 // CHECK-ERROR: ^ 6490 // CHECK-ERROR: error: invalid operand for instruction 6491 // CHECK-ERROR: uzp1 v0.1d, v1.1d, v2.1d 6492 // CHECK-ERROR: ^ 6493 6494 uzp2 v0.16b, v1.8b, v2.8b 6495 uzp2 v0.8b, v1.4b, v2.4b 6496 uzp2 v0.8h, v1.4h, v2.4h 6497 uzp2 v0.4h, v1.2h, v2.2h 6498 uzp2 v0.4s, v1.2s, v2.2s 6499 uzp2 v0.2s, v1.1s, v2.1s 6500 uzp2 v0.2d, v1.1d, v2.1d 6501 uzp2 v0.1d, v1.1d, v2.1d 6502 6503 // CHECK-ERROR: error: invalid operand for instruction 6504 // CHECK-ERROR: uzp2 v0.16b, v1.8b, v2.8b 6505 // CHECK-ERROR: ^ 6506 // CHECK-ERROR: error: invalid operand for instruction 6507 // CHECK-ERROR: uzp2 v0.8b, v1.4b, v2.4b 6508 // CHECK-ERROR: ^ 6509 // CHECK-ERROR: error: invalid operand for instruction 6510 // CHECK-ERROR: uzp2 v0.8h, v1.4h, v2.4h 6511 // CHECK-ERROR: ^ 6512 // CHECK-ERROR: error: invalid operand for instruction 6513 // CHECK-ERROR: uzp2 v0.4h, v1.2h, v2.2h 6514 // CHECK-ERROR: ^ 6515 // CHECK-ERROR: error: invalid operand for instruction 6516 // CHECK-ERROR: uzp2 v0.4s, v1.2s, v2.2s 6517 // CHECK-ERROR: ^ 6518 // CHECK-ERROR: error: invalid operand for instruction 6519 // CHECK-ERROR: uzp2 v0.2s, v1.1s, v2.1s 6520 // CHECK-ERROR: ^ 6521 // CHECK-ERROR: error: invalid operand for instruction 6522 // CHECK-ERROR: uzp2 v0.2d, v1.1d, v2.1d 6523 // CHECK-ERROR: ^ 6524 // CHECK-ERROR: error: invalid operand for instruction 6525 // CHECK-ERROR: uzp2 v0.1d, v1.1d, v2.1d 6526 // CHECK-ERROR: ^ 6527 6528 zip1 v0.16b, v1.8b, v2.8b 6529 zip1 v0.8b, v1.4b, v2.4b 6530 zip1 v0.8h, v1.4h, v2.4h 6531 zip1 v0.4h, v1.2h, v2.2h 6532 zip1 v0.4s, v1.2s, v2.2s 6533 zip1 v0.2s, v1.1s, v2.1s 6534 zip1 v0.2d, v1.1d, v2.1d 6535 zip1 v0.1d, v1.1d, v2.1d 6536 6537 // CHECK-ERROR: error: invalid operand for instruction 6538 // CHECK-ERROR: zip1 v0.16b, v1.8b, v2.8b 6539 // CHECK-ERROR: ^ 6540 // CHECK-ERROR: error: invalid operand for instruction 6541 // CHECK-ERROR: zip1 v0.8b, v1.4b, v2.4b 6542 // CHECK-ERROR: ^ 6543 // CHECK-ERROR: error: invalid operand for instruction 6544 // CHECK-ERROR: zip1 v0.8h, v1.4h, v2.4h 6545 // CHECK-ERROR: ^ 6546 // CHECK-ERROR: error: invalid operand for instruction 6547 // CHECK-ERROR: zip1 v0.4h, v1.2h, v2.2h 6548 // CHECK-ERROR: ^ 6549 // CHECK-ERROR: error: invalid operand for instruction 6550 // CHECK-ERROR: zip1 v0.4s, v1.2s, v2.2s 6551 // CHECK-ERROR: ^ 6552 // CHECK-ERROR: error: invalid operand for instruction 6553 // CHECK-ERROR: zip1 v0.2s, v1.1s, v2.1s 6554 // CHECK-ERROR: ^ 6555 // CHECK-ERROR: error: invalid operand for instruction 6556 // CHECK-ERROR: zip1 v0.2d, v1.1d, v2.1d 6557 // CHECK-ERROR: ^ 6558 // CHECK-ERROR: error: invalid operand for instruction 6559 // CHECK-ERROR: zip1 v0.1d, v1.1d, v2.1d 6560 // CHECK-ERROR: ^ 6561 6562 zip2 v0.16b, v1.8b, v2.8b 6563 zip2 v0.8b, v1.4b, v2.4b 6564 zip2 v0.8h, v1.4h, v2.4h 6565 zip2 v0.4h, v1.2h, v2.2h 6566 zip2 v0.4s, v1.2s, v2.2s 6567 zip2 v0.2s, v1.1s, v2.1s 6568 zip2 v0.2d, v1.1d, v2.1d 6569 zip2 v0.1d, v1.1d, v2.1d 6570 6571 // CHECK-ERROR: error: invalid operand for instruction 6572 // CHECK-ERROR: zip2 v0.16b, v1.8b, v2.8b 6573 // CHECK-ERROR: ^ 6574 // CHECK-ERROR: error: invalid operand for instruction 6575 // CHECK-ERROR: zip2 v0.8b, v1.4b, v2.4b 6576 // CHECK-ERROR: ^ 6577 // CHECK-ERROR: error: invalid operand for instruction 6578 // CHECK-ERROR: zip2 v0.8h, v1.4h, v2.4h 6579 // CHECK-ERROR: ^ 6580 // CHECK-ERROR: error: invalid operand for instruction 6581 // CHECK-ERROR: zip2 v0.4h, v1.2h, v2.2h 6582 // CHECK-ERROR: ^ 6583 // CHECK-ERROR: error: invalid operand for instruction 6584 // CHECK-ERROR: zip2 v0.4s, v1.2s, v2.2s 6585 // CHECK-ERROR: ^ 6586 // CHECK-ERROR: error: invalid operand for instruction 6587 // CHECK-ERROR: zip2 v0.2s, v1.1s, v2.1s 6588 // CHECK-ERROR: ^ 6589 // CHECK-ERROR: error: invalid operand for instruction 6590 // CHECK-ERROR: zip2 v0.2d, v1.1d, v2.1d 6591 // CHECK-ERROR: ^ 6592 // CHECK-ERROR: error: invalid operand for instruction 6593 // CHECK-ERROR: zip2 v0.1d, v1.1d, v2.1d 6594 // CHECK-ERROR: ^ 6595 6596 trn1 v0.16b, v1.8b, v2.8b 6597 trn1 v0.8b, v1.4b, v2.4b 6598 trn1 v0.8h, v1.4h, v2.4h 6599 trn1 v0.4h, v1.2h, v2.2h 6600 trn1 v0.4s, v1.2s, v2.2s 6601 trn1 v0.2s, v1.1s, v2.1s 6602 trn1 v0.2d, v1.1d, v2.1d 6603 trn1 v0.1d, v1.1d, v2.1d 6604 6605 // CHECK-ERROR: error: invalid operand for instruction 6606 // CHECK-ERROR: trn1 v0.16b, v1.8b, v2.8b 6607 // CHECK-ERROR: ^ 6608 // CHECK-ERROR: error: invalid operand for instruction 6609 // CHECK-ERROR: trn1 v0.8b, v1.4b, v2.4b 6610 // CHECK-ERROR: ^ 6611 // CHECK-ERROR: error: invalid operand for instruction 6612 // CHECK-ERROR: trn1 v0.8h, v1.4h, v2.4h 6613 // CHECK-ERROR: ^ 6614 // CHECK-ERROR: error: invalid operand for instruction 6615 // CHECK-ERROR: trn1 v0.4h, v1.2h, v2.2h 6616 // CHECK-ERROR: ^ 6617 // CHECK-ERROR: error: invalid operand for instruction 6618 // CHECK-ERROR: trn1 v0.4s, v1.2s, v2.2s 6619 // CHECK-ERROR: ^ 6620 // CHECK-ERROR: error: invalid operand for instruction 6621 // CHECK-ERROR: trn1 v0.2s, v1.1s, v2.1s 6622 // CHECK-ERROR: ^ 6623 // CHECK-ERROR: error: invalid operand for instruction 6624 // CHECK-ERROR: trn1 v0.2d, v1.1d, v2.1d 6625 // CHECK-ERROR: ^ 6626 // CHECK-ERROR: error: invalid operand for instruction 6627 // CHECK-ERROR: trn1 v0.1d, v1.1d, v2.1d 6628 // CHECK-ERROR: ^ 6629 6630 trn2 v0.16b, v1.8b, v2.8b 6631 trn2 v0.8b, v1.4b, v2.4b 6632 trn2 v0.8h, v1.4h, v2.4h 6633 trn2 v0.4h, v1.2h, v2.2h 6634 trn2 v0.4s, v1.2s, v2.2s 6635 trn2 v0.2s, v1.1s, v2.1s 6636 trn2 v0.2d, v1.1d, v2.1d 6637 trn2 v0.1d, v1.1d, v2.1d 6638 6639 // CHECK-ERROR: error: invalid operand for instruction 6640 // CHECK-ERROR: trn2 v0.16b, v1.8b, v2.8b 6641 // CHECK-ERROR: ^ 6642 // CHECK-ERROR: error: invalid operand for instruction 6643 // CHECK-ERROR: trn2 v0.8b, v1.4b, v2.4b 6644 // CHECK-ERROR: ^ 6645 // CHECK-ERROR: error: invalid operand for instruction 6646 // CHECK-ERROR: trn2 v0.8h, v1.4h, v2.4h 6647 // CHECK-ERROR: ^ 6648 // CHECK-ERROR: error: invalid operand for instruction 6649 // CHECK-ERROR: trn2 v0.4h, v1.2h, v2.2h 6650 // CHECK-ERROR: ^ 6651 // CHECK-ERROR: error: invalid operand for instruction 6652 // CHECK-ERROR: trn2 v0.4s, v1.2s, v2.2s 6653 // CHECK-ERROR: ^ 6654 // CHECK-ERROR: error: invalid operand for instruction 6655 // CHECK-ERROR: trn2 v0.2s, v1.1s, v2.1s 6656 // CHECK-ERROR: ^ 6657 // CHECK-ERROR: error: invalid operand for instruction 6658 // CHECK-ERROR: trn2 v0.2d, v1.1d, v2.1d 6659 // CHECK-ERROR: ^ 6660 // CHECK-ERROR: error: invalid operand for instruction 6661 // CHECK-ERROR: trn2 v0.1d, v1.1d, v2.1d 6662 // CHECK-ERROR: ^ 6663 6664 //---------------------------------------------------------------------- 6665 // Permutation with 3 vectors 6666 //---------------------------------------------------------------------- 6667 6668 uzp1 v0.16b, v1.8b, v2.8b 6669 uzp1 v0.8b, v1.4b, v2.4b 6670 uzp1 v0.8h, v1.4h, v2.4h 6671 uzp1 v0.4h, v1.2h, v2.2h 6672 uzp1 v0.4s, v1.2s, v2.2s 6673 uzp1 v0.2s, v1.1s, v2.1s 6674 uzp1 v0.2d, v1.1d, v2.1d 6675 uzp1 v0.1d, v1.1d, v2.1d 6676 6677 // CHECK-ERROR: error: invalid operand for instruction 6678 // CHECK-ERROR: uzp1 v0.16b, v1.8b, v2.8b 6679 // CHECK-ERROR: ^ 6680 // CHECK-ERROR: error: invalid operand for instruction 6681 // CHECK-ERROR: uzp1 v0.8b, v1.4b, v2.4b 6682 // CHECK-ERROR: ^ 6683 // CHECK-ERROR: error: invalid operand for instruction 6684 // CHECK-ERROR: uzp1 v0.8h, v1.4h, v2.4h 6685 // CHECK-ERROR: ^ 6686 // CHECK-ERROR: error: invalid operand for instruction 6687 // CHECK-ERROR: uzp1 v0.4h, v1.2h, v2.2h 6688 // CHECK-ERROR: ^ 6689 // CHECK-ERROR: error: invalid operand for instruction 6690 // CHECK-ERROR: uzp1 v0.4s, v1.2s, v2.2s 6691 // CHECK-ERROR: ^ 6692 // CHECK-ERROR: error: invalid operand for instruction 6693 // CHECK-ERROR: uzp1 v0.2s, v1.1s, v2.1s 6694 // CHECK-ERROR: ^ 6695 // CHECK-ERROR: error: invalid operand for instruction 6696 // CHECK-ERROR: uzp1 v0.2d, v1.1d, v2.1d 6697 // CHECK-ERROR: ^ 6698 // CHECK-ERROR: error: invalid operand for instruction 6699 // CHECK-ERROR: uzp1 v0.1d, v1.1d, v2.1d 6700 // CHECK-ERROR: ^ 6701 6702 uzp2 v0.16b, v1.8b, v2.8b 6703 uzp2 v0.8b, v1.4b, v2.4b 6704 uzp2 v0.8h, v1.4h, v2.4h 6705 uzp2 v0.4h, v1.2h, v2.2h 6706 uzp2 v0.4s, v1.2s, v2.2s 6707 uzp2 v0.2s, v1.1s, v2.1s 6708 uzp2 v0.2d, v1.1d, v2.1d 6709 uzp2 v0.1d, v1.1d, v2.1d 6710 6711 // CHECK-ERROR: error: invalid operand for instruction 6712 // CHECK-ERROR: uzp2 v0.16b, v1.8b, v2.8b 6713 // CHECK-ERROR: ^ 6714 // CHECK-ERROR: error: invalid operand for instruction 6715 // CHECK-ERROR: uzp2 v0.8b, v1.4b, v2.4b 6716 // CHECK-ERROR: ^ 6717 // CHECK-ERROR: error: invalid operand for instruction 6718 // CHECK-ERROR: uzp2 v0.8h, v1.4h, v2.4h 6719 // CHECK-ERROR: ^ 6720 // CHECK-ERROR: error: invalid operand for instruction 6721 // CHECK-ERROR: uzp2 v0.4h, v1.2h, v2.2h 6722 // CHECK-ERROR: ^ 6723 // CHECK-ERROR: error: invalid operand for instruction 6724 // CHECK-ERROR: uzp2 v0.4s, v1.2s, v2.2s 6725 // CHECK-ERROR: ^ 6726 // CHECK-ERROR: error: invalid operand for instruction 6727 // CHECK-ERROR: uzp2 v0.2s, v1.1s, v2.1s 6728 // CHECK-ERROR: ^ 6729 // CHECK-ERROR: error: invalid operand for instruction 6730 // CHECK-ERROR: uzp2 v0.2d, v1.1d, v2.1d 6731 // CHECK-ERROR: ^ 6732 // CHECK-ERROR: error: invalid operand for instruction 6733 // CHECK-ERROR: uzp2 v0.1d, v1.1d, v2.1d 6734 // CHECK-ERROR: ^ 6735 6736 zip1 v0.16b, v1.8b, v2.8b 6737 zip1 v0.8b, v1.4b, v2.4b 6738 zip1 v0.8h, v1.4h, v2.4h 6739 zip1 v0.4h, v1.2h, v2.2h 6740 zip1 v0.4s, v1.2s, v2.2s 6741 zip1 v0.2s, v1.1s, v2.1s 6742 zip1 v0.2d, v1.1d, v2.1d 6743 zip1 v0.1d, v1.1d, v2.1d 6744 6745 // CHECK-ERROR: error: invalid operand for instruction 6746 // CHECK-ERROR: zip1 v0.16b, v1.8b, v2.8b 6747 // CHECK-ERROR: ^ 6748 // CHECK-ERROR: error: invalid operand for instruction 6749 // CHECK-ERROR: zip1 v0.8b, v1.4b, v2.4b 6750 // CHECK-ERROR: ^ 6751 // CHECK-ERROR: error: invalid operand for instruction 6752 // CHECK-ERROR: zip1 v0.8h, v1.4h, v2.4h 6753 // CHECK-ERROR: ^ 6754 // CHECK-ERROR: error: invalid operand for instruction 6755 // CHECK-ERROR: zip1 v0.4h, v1.2h, v2.2h 6756 // CHECK-ERROR: ^ 6757 // CHECK-ERROR: error: invalid operand for instruction 6758 // CHECK-ERROR: zip1 v0.4s, v1.2s, v2.2s 6759 // CHECK-ERROR: ^ 6760 // CHECK-ERROR: error: invalid operand for instruction 6761 // CHECK-ERROR: zip1 v0.2s, v1.1s, v2.1s 6762 // CHECK-ERROR: ^ 6763 // CHECK-ERROR: error: invalid operand for instruction 6764 // CHECK-ERROR: zip1 v0.2d, v1.1d, v2.1d 6765 // CHECK-ERROR: ^ 6766 // CHECK-ERROR: error: invalid operand for instruction 6767 // CHECK-ERROR: zip1 v0.1d, v1.1d, v2.1d 6768 // CHECK-ERROR: ^ 6769 6770 zip2 v0.16b, v1.8b, v2.8b 6771 zip2 v0.8b, v1.4b, v2.4b 6772 zip2 v0.8h, v1.4h, v2.4h 6773 zip2 v0.4h, v1.2h, v2.2h 6774 zip2 v0.4s, v1.2s, v2.2s 6775 zip2 v0.2s, v1.1s, v2.1s 6776 zip2 v0.2d, v1.1d, v2.1d 6777 zip2 v0.1d, v1.1d, v2.1d 6778 6779 // CHECK-ERROR: error: invalid operand for instruction 6780 // CHECK-ERROR: zip2 v0.16b, v1.8b, v2.8b 6781 // CHECK-ERROR: ^ 6782 // CHECK-ERROR: error: invalid operand for instruction 6783 // CHECK-ERROR: zip2 v0.8b, v1.4b, v2.4b 6784 // CHECK-ERROR: ^ 6785 // CHECK-ERROR: error: invalid operand for instruction 6786 // CHECK-ERROR: zip2 v0.8h, v1.4h, v2.4h 6787 // CHECK-ERROR: ^ 6788 // CHECK-ERROR: error: invalid operand for instruction 6789 // CHECK-ERROR: zip2 v0.4h, v1.2h, v2.2h 6790 // CHECK-ERROR: ^ 6791 // CHECK-ERROR: error: invalid operand for instruction 6792 // CHECK-ERROR: zip2 v0.4s, v1.2s, v2.2s 6793 // CHECK-ERROR: ^ 6794 // CHECK-ERROR: error: invalid operand for instruction 6795 // CHECK-ERROR: zip2 v0.2s, v1.1s, v2.1s 6796 // CHECK-ERROR: ^ 6797 // CHECK-ERROR: error: invalid operand for instruction 6798 // CHECK-ERROR: zip2 v0.2d, v1.1d, v2.1d 6799 // CHECK-ERROR: ^ 6800 // CHECK-ERROR: error: invalid operand for instruction 6801 // CHECK-ERROR: zip2 v0.1d, v1.1d, v2.1d 6802 // CHECK-ERROR: ^ 6803 6804 trn1 v0.16b, v1.8b, v2.8b 6805 trn1 v0.8b, v1.4b, v2.4b 6806 trn1 v0.8h, v1.4h, v2.4h 6807 trn1 v0.4h, v1.2h, v2.2h 6808 trn1 v0.4s, v1.2s, v2.2s 6809 trn1 v0.2s, v1.1s, v2.1s 6810 trn1 v0.2d, v1.1d, v2.1d 6811 trn1 v0.1d, v1.1d, v2.1d 6812 6813 // CHECK-ERROR: error: invalid operand for instruction 6814 // CHECK-ERROR: trn1 v0.16b, v1.8b, v2.8b 6815 // CHECK-ERROR: ^ 6816 // CHECK-ERROR: error: invalid operand for instruction 6817 // CHECK-ERROR: trn1 v0.8b, v1.4b, v2.4b 6818 // CHECK-ERROR: ^ 6819 // CHECK-ERROR: error: invalid operand for instruction 6820 // CHECK-ERROR: trn1 v0.8h, v1.4h, v2.4h 6821 // CHECK-ERROR: ^ 6822 // CHECK-ERROR: error: invalid operand for instruction 6823 // CHECK-ERROR: trn1 v0.4h, v1.2h, v2.2h 6824 // CHECK-ERROR: ^ 6825 // CHECK-ERROR: error: invalid operand for instruction 6826 // CHECK-ERROR: trn1 v0.4s, v1.2s, v2.2s 6827 // CHECK-ERROR: ^ 6828 // CHECK-ERROR: error: invalid operand for instruction 6829 // CHECK-ERROR: trn1 v0.2s, v1.1s, v2.1s 6830 // CHECK-ERROR: ^ 6831 // CHECK-ERROR: error: invalid operand for instruction 6832 // CHECK-ERROR: trn1 v0.2d, v1.1d, v2.1d 6833 // CHECK-ERROR: ^ 6834 // CHECK-ERROR: error: invalid operand for instruction 6835 // CHECK-ERROR: trn1 v0.1d, v1.1d, v2.1d 6836 // CHECK-ERROR: ^ 6837 6838 trn2 v0.16b, v1.8b, v2.8b 6839 trn2 v0.8b, v1.4b, v2.4b 6840 trn2 v0.8h, v1.4h, v2.4h 6841 trn2 v0.4h, v1.2h, v2.2h 6842 trn2 v0.4s, v1.2s, v2.2s 6843 trn2 v0.2s, v1.1s, v2.1s 6844 trn2 v0.2d, v1.1d, v2.1d 6845 trn2 v0.1d, v1.1d, v2.1d 6846 6847 // CHECK-ERROR: error: invalid operand for instruction 6848 // CHECK-ERROR: trn2 v0.16b, v1.8b, v2.8b 6849 // CHECK-ERROR: ^ 6850 // CHECK-ERROR: error: invalid operand for instruction 6851 // CHECK-ERROR: trn2 v0.8b, v1.4b, v2.4b 6852 // CHECK-ERROR: ^ 6853 // CHECK-ERROR: error: invalid operand for instruction 6854 // CHECK-ERROR: trn2 v0.8h, v1.4h, v2.4h 6855 // CHECK-ERROR: ^ 6856 // CHECK-ERROR: error: invalid operand for instruction 6857 // CHECK-ERROR: trn2 v0.4h, v1.2h, v2.2h 6858 // CHECK-ERROR: ^ 6859 // CHECK-ERROR: error: invalid operand for instruction 6860 // CHECK-ERROR: trn2 v0.4s, v1.2s, v2.2s 6861 // CHECK-ERROR: ^ 6862 // CHECK-ERROR: error: invalid operand for instruction 6863 // CHECK-ERROR: trn2 v0.2s, v1.1s, v2.1s 6864 // CHECK-ERROR: ^ 6865 // CHECK-ERROR: error: invalid operand for instruction 6866 // CHECK-ERROR: trn2 v0.2d, v1.1d, v2.1d 6867 // CHECK-ERROR: ^ 6868 // CHECK-ERROR: error: invalid operand for instruction 6869 // CHECK-ERROR: trn2 v0.1d, v1.1d, v2.1d 6870 // CHECK-ERROR: ^ 6871 6872 //---------------------------------------------------------------------- 6873 // Floating Point multiply (scalar, by element) 6874 //---------------------------------------------------------------------- 6875 // mismatched and invalid vector types 6876 fmul s0, s1, v1.h[0] 6877 fmul h0, h1, v1.s[0] 6878 // invalid lane 6879 fmul s2, s29, v10.s[4] 6880 6881 // CHECK-ERROR: error: invalid operand for instruction 6882 // CHECK-ERROR: fmul s0, s1, v1.h[0] 6883 // CHECK-ERROR: ^ 6884 // CHECK-ERROR: error: invalid operand for instruction 6885 // CHECK-ERROR: fmul h0, h1, v1.s[0] 6886 // CHECK-ERROR: ^ 6887 // CHECK-ERROR: vector lane must be an integer in range 6888 // CHECK-ERROR: fmul s2, s29, v10.s[4] 6889 // CHECK-ERROR: ^ 6890 6891 //---------------------------------------------------------------------- 6892 // Floating Point multiply extended (scalar, by element) 6893 //---------------------------------------------------------------------- 6894 // mismatched and invalid vector types 6895 fmulx d0, d1, v1.b[0] 6896 fmulx h0, h1, v1.d[0] 6897 // invalid lane 6898 fmulx d2, d29, v10.d[3] 6899 6900 // CHECK-ERROR: error: invalid operand for instruction 6901 // CHECK-ERROR: fmulx d0, d1, v1.b[0] 6902 // CHECK-ERROR: ^ 6903 // CHECK-ERROR: error: invalid operand for instruction 6904 // CHECK-ERROR: fmulx h0, h1, v1.d[0] 6905 // CHECK-ERROR: ^ 6906 // CHECK-ERROR: vector lane must be an integer in range 6907 // CHECK-ERROR: fmulx d2, d29, v10.d[3] 6908 // CHECK-ERROR: ^ 6909 6910 //---------------------------------------------------------------------- 6911 // Floating Point fused multiply-add (scalar, by element) 6912 //---------------------------------------------------------------------- 6913 // mismatched and invalid vector types 6914 fmla b0, b1, v1.b[0] 6915 fmla d30, s11, v1.d[1] 6916 // invalid lane 6917 fmla s16, s22, v16.s[5] 6918 6919 // CHECK-ERROR: error: invalid operand for instruction 6920 // CHECK-ERROR: fmla b0, b1, v1.b[0] 6921 // CHECK-ERROR: ^ 6922 // CHECK-ERROR: error: invalid operand for instruction 6923 // CHECK-ERROR: fmla d30, s11, v1.d[1] 6924 // CHECK-ERROR: ^ 6925 // CHECK-ERROR: vector lane must be an integer in range 6926 // CHECK-ERROR: fmla s16, s22, v16.s[5] 6927 // CHECK-ERROR: ^ 6928 6929 //---------------------------------------------------------------------- 6930 // Floating Point fused multiply-subtract (scalar, by element) 6931 //---------------------------------------------------------------------- 6932 // mismatched and invalid vector types 6933 fmls s29, h10, v28.s[1] 6934 fmls h7, h17, v26.s[2] 6935 // invalid lane 6936 fmls d16, d22, v16.d[-1] 6937 6938 // CHECK-ERROR: error: invalid operand for instruction 6939 // CHECK-ERROR: fmls s29, h10, v28.s[1] 6940 // CHECK-ERROR: ^ 6941 // CHECK-ERROR: error: invalid operand for instruction 6942 // CHECK-ERROR: fmls h7, h17, v26.s[2] 6943 // CHECK-ERROR: ^ 6944 // CHECK-ERROR: error: vector lane must be an integer in range [0, 1] 6945 // CHECK-ERROR: fmls d16, d22, v16.d[-1] 6946 // CHECK-ERROR: ^ 6947 6948 //---------------------------------------------------------------------- 6949 // Scalar Signed saturating doubling multiply-add long 6950 // (scalar, by element) 6951 //---------------------------------------------------------------------- 6952 // mismatched and invalid vector types 6953 sqdmlal s0, h0, v0.s[0] 6954 sqdmlal s8, s9, v14.s[1] 6955 // invalid lane 6956 sqdmlal d4, s5, v1.s[5] 6957 // invalid vector index 6958 sqdmlal s0, h0, v17.h[0] 6959 6960 // CHECK-ERROR: error: invalid operand for instruction 6961 // CHECK-ERROR: sqdmlal s0, h0, v0.s[0] 6962 // CHECK-ERROR: ^ 6963 // CHECK-ERROR: error: invalid operand for instruction 6964 // CHECK-ERROR: sqdmlal s8, s9, v14.s[1] 6965 // CHECK-ERROR: ^ 6966 // CHECK-ERROR: vector lane must be an integer in range 6967 // CHECK-ERROR: sqdmlal d4, s5, v1.s[5] 6968 // CHECK-ERROR: ^ 6969 // CHECK-ERROR: error: invalid operand for instruction 6970 // CHECK-ERROR: sqdmlal s0, h0, v17.h[0] 6971 // CHECK-ERROR: ^ 6972 6973 //---------------------------------------------------------------------- 6974 // Scalar Signed saturating doubling multiply-subtract long 6975 // (scalar, by element) 6976 //---------------------------------------------------------------------- 6977 // mismatched and invalid vector types 6978 sqdmlsl s1, h1, v1.d[0] 6979 sqdmlsl d1, h1, v13.s[0] 6980 // invalid lane 6981 sqdmlsl d1, s1, v13.s[4] 6982 // invalid vector index 6983 sqdmlsl s1, h1, v20.h[7] 6984 6985 // CHECK-ERROR: error: invalid operand for instruction 6986 // CHECK-ERROR: sqdmlsl s1, h1, v1.d[0] 6987 // CHECK-ERROR: ^ 6988 // CHECK-ERROR: error: invalid operand for instruction 6989 // CHECK-ERROR: sqdmlsl d1, h1, v13.s[0] 6990 // CHECK-ERROR: ^ 6991 // CHECK-ERROR: vector lane must be an integer in range 6992 // CHECK-ERROR: sqdmlsl d1, s1, v13.s[4] 6993 // CHECK-ERROR: ^ 6994 // CHECK-ERROR: error: invalid operand for instruction 6995 // CHECK-ERROR: sqdmlsl s1, h1, v20.h[7] 6996 // CHECK-ERROR: ^ 6997 6998 //---------------------------------------------------------------------- 6999 // Scalar Signed saturating doubling multiply long (scalar, by element) 7000 //---------------------------------------------------------------------- 7001 // mismatched and invalid vector types 7002 // invalid lane 7003 // invalid vector index 7004 // mismatched and invalid vector types 7005 sqdmull s1, h1, v1.s[1] 7006 sqdmull s1, s1, v4.s[0] 7007 // invalid lane 7008 sqdmull s12, h17, v9.h[9] 7009 // invalid vector index 7010 sqdmull s1, h1, v16.h[5] 7011 7012 // CHECK-ERROR: error: invalid operand for instruction 7013 // CHECK-ERROR: sqdmull s1, h1, v1.s[1] 7014 // CHECK-ERROR: ^ 7015 // CHECK-ERROR: error: invalid operand for instruction 7016 // CHECK-ERROR: sqdmull s1, s1, v4.s[0] 7017 // CHECK-ERROR: ^ 7018 // CHECK-ERROR: vector lane must be an integer in range 7019 // CHECK-ERROR: sqdmull s12, h17, v9.h[9] 7020 // CHECK-ERROR: ^ 7021 // CHECK-ERROR: error: invalid operand for instruction 7022 // CHECK-ERROR: sqdmull s1, h1, v16.h[5] 7023 // CHECK-ERROR: ^ 7024 7025 //---------------------------------------------------------------------- 7026 // Scalar Signed saturating doubling multiply returning 7027 // high half (scalar, by element) 7028 //---------------------------------------------------------------------- 7029 // mismatched and invalid vector types 7030 sqdmulh h0, s1, v0.h[0] 7031 sqdmulh s25, s26, v27.h[3] 7032 // invalid lane 7033 sqdmulh s25, s26, v27.s[4] 7034 // invalid vector index 7035 sqdmulh s0, h1, v30.h[0] 7036 7037 // CHECK-ERROR: error: invalid operand for instruction 7038 // CHECK-ERROR: sqdmulh h0, s1, v0.h[0] 7039 // CHECK-ERROR: ^ 7040 // CHECK-ERROR: error: invalid operand for instruction 7041 // CHECK-ERROR: sqdmulh s25, s26, v27.h[3] 7042 // CHECK-ERROR: ^ 7043 // CHECK-ERROR: vector lane must be an integer in range 7044 // CHECK-ERROR: sqdmulh s25, s26, v27.s[4] 7045 // CHECK-ERROR: ^ 7046 // CHECK-ERROR: error: invalid operand for instruction 7047 // CHECK-ERROR: sqdmulh s0, h1, v30.h[0] 7048 // CHECK-ERROR: ^ 7049 7050 //---------------------------------------------------------------------- 7051 // Scalar Signed saturating rounding doubling multiply 7052 // returning high half (scalar, by element) 7053 //---------------------------------------------------------------------- 7054 // mismatched and invalid vector types 7055 sqrdmulh h31, h30, v14.s[2] 7056 sqrdmulh s5, h6, v7.s[2] 7057 // invalid lane 7058 sqrdmulh h31, h30, v14.h[9] 7059 // invalid vector index 7060 sqrdmulh h31, h30, v20.h[4] 7061 7062 // CHECK-ERROR: error: invalid operand for instruction 7063 // CHECK-ERROR: sqrdmulh h31, h30, v14.s[2] 7064 // CHECK-ERROR: ^ 7065 // CHECK-ERROR: error: invalid operand for instruction 7066 // CHECK-ERROR: sqrdmulh s5, h6, v7.s[2] 7067 // CHECK-ERROR: ^ 7068 // CHECK-ERROR: vector lane must be an integer in range 7069 // CHECK-ERROR: sqrdmulh h31, h30, v14.h[9] 7070 // CHECK-ERROR: ^ 7071 // CHECK-ERROR: error: invalid operand for instruction 7072 // CHECK-ERROR: sqrdmulh h31, h30, v20.h[4] 7073 // CHECK-ERROR: ^ 7074 7075 //---------------------------------------------------------------------- 7076 // Scalar Duplicate element (scalar) 7077 //---------------------------------------------------------------------- 7078 // mismatched and invalid vector types 7079 dup b0, v1.d[0] 7080 dup h0, v31.b[8] 7081 dup s0, v2.h[4] 7082 dup d0, v17.s[3] 7083 // invalid lane 7084 dup d0, v17.d[4] 7085 dup s0, v1.s[7] 7086 dup h0, v31.h[16] 7087 dup b1, v3.b[16] 7088 // CHECK-ERROR: error: invalid operand for instruction 7089 // CHECK-ERROR: dup b0, v1.d[0] 7090 // CHECK-ERROR: ^ 7091 // CHECK-ERROR: error: invalid operand for instruction 7092 // CHECK-ERROR: dup h0, v31.b[8] 7093 // CHECK-ERROR: ^ 7094 // CHECK-ERROR: error: invalid operand for instruction 7095 // CHECK-ERROR: dup s0, v2.h[4] 7096 // CHECK-ERROR: ^ 7097 // CHECK-ERROR: error: invalid operand for instruction 7098 // CHECK-ERROR: dup d0, v17.s[3] 7099 // CHECK-ERROR: ^ 7100 // CHECK-ERROR: vector lane must be an integer in range 7101 // CHECK-ERROR: dup d0, v17.d[4] 7102 // CHECK-ERROR: ^ 7103 // CHECK-ERROR: vector lane must be an integer in range 7104 // CHECK-ERROR: dup s0, v1.s[7] 7105 // CHECK-ERROR: ^ 7106 // CHECK-ERROR: vector lane must be an integer in range 7107 // CHECK-ERROR: dup h0, v31.h[16] 7108 // CHECK-ERROR: ^ 7109 // CHECK-ERROR: vector lane must be an integer in range 7110 // CHECK-ERROR: dup b1, v3.b[16] 7111 // CHECK-ERROR: ^ 7112 7113 //---------------------------------------------------------------------- 7114 // Table look up 7115 //---------------------------------------------------------------------- 7116 7117 tbl v0.8b, {v1.8b}, v2.8b 7118 tbl v0.8b, {v1.8b, v2.8b}, v2.8b 7119 tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b 7120 tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b 7121 tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b 7122 7123 // CHECK-ERROR: error: invalid operand for instruction 7124 // CHECK-ERROR: tbl v0.8b, {v1.8b}, v2.8b 7125 // CHECK-ERROR: ^ 7126 // CHECK-ERROR: error: invalid operand for instruction 7127 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b}, v2.8b 7128 // CHECK-ERROR: ^ 7129 // CHECK-ERROR: error: invalid operand for instruction 7130 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b 7131 // CHECK-ERROR: ^ 7132 // CHECK-ERROR: error: invalid operand for instruction 7133 // CHECK-ERROR: tbl v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b 7134 // CHECK-ERROR: ^ 7135 // CHECK-ERROR: error: invalid number of vectors 7136 // CHECK-ERROR: tbl v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b 7137 // CHECK-ERROR: ^ 7138 7139 tbx v0.8b, {v1.8b}, v2.8b 7140 tbx v0.8b, {v1.8b, v2.8b}, v2.8b 7141 tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b 7142 tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b 7143 tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b 7144 7145 // CHECK-ERROR: error: invalid operand for instruction 7146 // CHECK-ERROR: tbx v0.8b, {v1.8b}, v2.8b 7147 // CHECK-ERROR: ^ 7148 // CHECK-ERROR: error: invalid operand for instruction 7149 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b}, v2.8b 7150 // CHECK-ERROR: ^ 7151 // CHECK-ERROR: error: invalid operand for instruction 7152 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b, v3.8b}, v2.8b 7153 // CHECK-ERROR: ^ 7154 // CHECK-ERROR: error: invalid operand for instruction 7155 // CHECK-ERROR: tbx v0.8b, {v1.8b, v2.8b, v3.8b, v4.8b}, v2.8b 7156 // CHECK-ERROR: ^ 7157 // CHECK-ERROR: error: invalid number of vectors 7158 // CHECK-ERROR: tbx v0.8b, {v1.16b, v2.16b, v3.16b, v4.16b, v5.16b}, v2.8b 7159 // CHECK-ERROR: ^ 7160 7161 //---------------------------------------------------------------------- 7162 // Scalar Floating-point Convert To Lower Precision Narrow, Rounding To 7163 // Odd 7164 //---------------------------------------------------------------------- 7165 7166 fcvtxn s0, s1 7167 7168 // CHECK-ERROR: error: invalid operand for instruction 7169 // CHECK-ERROR: fcvtxn s0, s1 7170 // CHECK-ERROR: ^ 7171 7172 //---------------------------------------------------------------------- 7173 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest 7174 // With Ties To Away 7175 //---------------------------------------------------------------------- 7176 7177 fcvtas s0, d0 7178 fcvtas d0, s0 7179 7180 // CHECK-ERROR: error: invalid operand for instruction 7181 // CHECK-ERROR: fcvtas s0, d0 7182 // CHECK-ERROR: ^ 7183 // CHECK-ERROR: error: invalid operand for instruction 7184 // CHECK-ERROR: fcvtas d0, s0 7185 // CHECK-ERROR: ^ 7186 7187 //---------------------------------------------------------------------- 7188 // Scalar Floating-point Convert To Unsigned Integer, Rounding To 7189 // Nearest With Ties To Away 7190 //---------------------------------------------------------------------- 7191 7192 fcvtau s0, d0 7193 fcvtau d0, s0 7194 7195 // CHECK-ERROR: error: invalid operand for instruction 7196 // CHECK-ERROR: fcvtau s0, d0 7197 // CHECK-ERROR: ^ 7198 // CHECK-ERROR: error: invalid operand for instruction 7199 // CHECK-ERROR: fcvtau d0, s0 7200 // CHECK-ERROR: ^ 7201 7202 //---------------------------------------------------------------------- 7203 // Scalar Floating-point Convert To Signed Integer, Rounding Toward 7204 // Minus Infinity 7205 //---------------------------------------------------------------------- 7206 7207 fcvtms s0, d0 7208 fcvtms d0, s0 7209 7210 // CHECK-ERROR: error: invalid operand for instruction 7211 // CHECK-ERROR: fcvtms s0, d0 7212 // CHECK-ERROR: ^ 7213 // CHECK-ERROR: error: invalid operand for instruction 7214 // CHECK-ERROR: fcvtms d0, s0 7215 // CHECK-ERROR: ^ 7216 7217 //---------------------------------------------------------------------- 7218 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 7219 // Minus Infinity 7220 //---------------------------------------------------------------------- 7221 7222 fcvtmu s0, d0 7223 fcvtmu d0, s0 7224 7225 // CHECK-ERROR: error: invalid operand for instruction 7226 // CHECK-ERROR: fcvtmu s0, d0 7227 // CHECK-ERROR: ^ 7228 // CHECK-ERROR: error: invalid operand for instruction 7229 // CHECK-ERROR: fcvtmu d0, s0 7230 // CHECK-ERROR: ^ 7231 7232 //---------------------------------------------------------------------- 7233 // Scalar Floating-point Convert To Signed Integer, Rounding To Nearest 7234 // With Ties To Even 7235 //---------------------------------------------------------------------- 7236 7237 fcvtns s0, d0 7238 fcvtns d0, s0 7239 7240 // CHECK-ERROR: error: invalid operand for instruction 7241 // CHECK-ERROR: fcvtns s0, d0 7242 // CHECK-ERROR: ^ 7243 // CHECK-ERROR: error: invalid operand for instruction 7244 // CHECK-ERROR: fcvtns d0, s0 7245 // CHECK-ERROR: ^ 7246 7247 //---------------------------------------------------------------------- 7248 // Scalar Floating-point Convert To Unsigned Integer, Rounding To 7249 // Nearest With Ties To Even 7250 //---------------------------------------------------------------------- 7251 7252 fcvtnu s0, d0 7253 fcvtnu d0, s0 7254 7255 // CHECK-ERROR: error: invalid operand for instruction 7256 // CHECK-ERROR: fcvtnu s0, d0 7257 // CHECK-ERROR: ^ 7258 // CHECK-ERROR: error: invalid operand for instruction 7259 // CHECK-ERROR: fcvtnu d0, s0 7260 // CHECK-ERROR: ^ 7261 7262 //---------------------------------------------------------------------- 7263 // Scalar Floating-point Convert To Signed Integer, Rounding Toward 7264 // Positive Infinity 7265 //---------------------------------------------------------------------- 7266 7267 fcvtps s0, d0 7268 fcvtps d0, s0 7269 7270 // CHECK-ERROR: error: invalid operand for instruction 7271 // CHECK-ERROR: fcvtps s0, d0 7272 // CHECK-ERROR: ^ 7273 // CHECK-ERROR: error: invalid operand for instruction 7274 // CHECK-ERROR: fcvtps d0, s0 7275 // CHECK-ERROR: ^ 7276 7277 //---------------------------------------------------------------------- 7278 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 7279 // Positive Infinity 7280 //---------------------------------------------------------------------- 7281 7282 fcvtpu s0, d0 7283 fcvtpu d0, s0 7284 7285 // CHECK-ERROR: error: invalid operand for instruction 7286 // CHECK-ERROR: fcvtpu s0, d0 7287 // CHECK-ERROR: ^ 7288 // CHECK-ERROR: error: invalid operand for instruction 7289 // CHECK-ERROR: fcvtpu d0, s0 7290 // CHECK-ERROR: ^ 7291 7292 //---------------------------------------------------------------------- 7293 // Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero 7294 //---------------------------------------------------------------------- 7295 7296 fcvtzs s0, d0 7297 fcvtzs d0, s0 7298 7299 // CHECK-ERROR: error: invalid operand for instruction 7300 // CHECK-ERROR: fcvtzs s0, d0 7301 // CHECK-ERROR: ^ 7302 // CHECK-ERROR: error: invalid operand for instruction 7303 // CHECK-ERROR: fcvtzs d0, s0 7304 // CHECK-ERROR: ^ 7305 7306 //---------------------------------------------------------------------- 7307 // Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 7308 // Zero 7309 //---------------------------------------------------------------------- 7310 7311 fcvtzu s0, d0 7312 fcvtzu d0, s0 7313 7314 // CHECK-ERROR: error: invalid operand for instruction 7315 // CHECK-ERROR: fcvtzu s0, d0 7316 // CHECK-ERROR: ^ 7317 // CHECK-ERROR: error: invalid operand for instruction 7318 // CHECK-ERROR: fcvtzu d0, s0 7319 // CHECK-ERROR: ^ 7320 7321 //---------------------------------------------------------------------- 7322 // Scalar Floating-point Absolute Difference 7323 //---------------------------------------------------------------------- 7324 7325 7326 fabd s29, d24, s20 7327 fabd d29, s24, d20 7328 7329 // CHECK-ERROR: error: invalid operand for instruction 7330 // CHECK-ERROR: fabd s29, d24, s20 7331 // CHECK-ERROR: ^ 7332 // CHECK-ERROR: error: invalid operand for instruction 7333 // CHECK-ERROR: fabd d29, s24, d20 7334 // CHECK-ERROR: ^ 7335