neon-diagnostics.s revision c439c205ba304c7ed1c88fb85c2009e49cfbd0c3
1// RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon < %s 2> %t 2// RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s 3 4//------------------------------------------------------------------------------ 5// Vector Integer Add/sub 6//------------------------------------------------------------------------------ 7 8 // Mismatched vector types 9 add v0.16b, v1.8b, v2.8b 10 sub v0.2d, v1.2d, v2.2s 11 12// CHECK-ERROR: error: invalid operand for instruction 13// CHECK-ERROR: add v0.16b, v1.8b, v2.8b 14// CHECK-ERROR: ^ 15// CHECK-ERROR: error: invalid operand for instruction 16// CHECK-ERROR: sub v0.2d, v1.2d, v2.2s 17// CHECK-ERROR: ^ 18 19//------------------------------------------------------------------------------ 20// Vector Floating-Point Add/sub 21//------------------------------------------------------------------------------ 22 23 // Mismatched and invalid vector types 24 fadd v0.2d, v1.2s, v2.2s 25 fsub v0.4s, v1.2s, v2.4s 26 fsub v0.8b, v1.8b, v2.8b 27 28// CHECK-ERROR: error: invalid operand for instruction 29// CHECK-ERROR: fadd v0.2d, v1.2s, v2.2s 30// CHECK-ERROR: ^ 31// CHECK-ERROR: error: invalid operand for instruction 32// CHECK-ERROR: fsub v0.4s, v1.2s, v2.4s 33// CHECK-ERROR: ^ 34// CHECK-ERROR: error: invalid operand for instruction 35// CHECK-ERROR: fsub v0.8b, v1.8b, v2.8b 36// CHECK-ERROR: ^ 37 38//---------------------------------------------------------------------- 39// Vector Integer Mul 40//---------------------------------------------------------------------- 41 42 // Mismatched and invalid vector types 43 mul v0.16b, v1.8b, v2.8b 44 mul v0.2d, v1.2d, v2.2d 45 46// CHECK-ERROR: error: invalid operand for instruction 47// CHECK-ERROR: mul v0.16b, v1.8b, v2.8b 48// CHECK-ERROR: ^ 49// CHECK-ERROR: error: invalid operand for instruction 50// CHECK-ERROR: mul v0.2d, v1.2d, v2.2d 51// CHECK-ERROR: ^ 52 53//---------------------------------------------------------------------- 54// Vector Floating-Point Mul/Div 55//---------------------------------------------------------------------- 56 // Mismatched vector types 57 fmul v0.16b, v1.8b, v2.8b 58 fdiv v0.2s, v1.2d, v2.2d 59 60// CHECK-ERROR: error: invalid operand for instruction 61// CHECK-ERROR: fmul v0.16b, v1.8b, v2.8b 62// CHECK-ERROR: ^ 63// CHECK-ERROR: error: invalid operand for instruction 64// CHECK-ERROR: fdiv v0.2s, v1.2d, v2.2d 65// CHECK-ERROR: ^ 66 67//---------------------------------------------------------------------- 68// Vector And Orr Eor Bsl Bit Bif, Orn, Bic, 69//---------------------------------------------------------------------- 70 // Mismatched and invalid vector types 71 and v0.8b, v1.16b, v2.8b 72 orr v0.4h, v1.4h, v2.4h 73 eor v0.2s, v1.2s, v2.2s 74 bsl v0.8b, v1.16b, v2.8b 75 bsl v0.2s, v1.2s, v2.2s 76 bit v0.2d, v1.2d, v2.2d 77 bif v0.4h, v1.4h, v2.4h 78 orn v0.8b, v1.16b, v2.16b 79 bic v0.2d, v1.2d, v2.2d 80 81// CHECK-ERROR: error: invalid operand for instruction 82// CHECK-ERROR: and v0.8b, v1.16b, v2.8b 83// CHECK-ERROR: ^ 84// CHECK-ERROR: error: invalid operand for instruction 85// CHECK-ERROR: orr v0.4h, v1.4h, v2.4h 86// CHECK-ERROR: ^ 87// CHECK-ERROR: error: invalid operand for instruction 88// CHECK-ERROR: eor v0.2s, v1.2s, v2.2s 89// CHECK-ERROR: ^ 90// CHECK-ERROR: error: invalid operand for instruction 91// CHECK-ERROR: bsl v0.8b, v1.16b, v2.8b 92// CHECK-ERROR: ^ 93// CHECK-ERROR: error: invalid operand for instruction 94// CHECK-ERROR: bsl v0.2s, v1.2s, v2.2s 95// CHECK-ERROR: ^ 96// CHECK-ERROR: error: invalid operand for instruction 97// CHECK-ERROR: bit v0.2d, v1.2d, v2.2d 98// CHECK-ERROR: ^ 99// CHECK-ERROR: error: invalid operand for instruction 100// CHECK-ERROR: bif v0.4h, v1.4h, v2.4h 101// CHECK-ERROR: ^ 102// CHECK-ERROR: error: invalid operand for instruction 103// CHECK-ERROR: orn v0.8b, v1.16b, v2.16b 104// CHECK-ERROR: ^ 105// CHECK-ERROR: error: invalid operand for instruction 106// CHECK-ERROR: bic v0.2d, v1.2d, v2.2d 107// CHECK-ERROR: ^ 108 109//---------------------------------------------------------------------- 110// Vector Integer Multiply-accumulate and Multiply-subtract 111//---------------------------------------------------------------------- 112 113 // Mismatched and invalid vector types 114 mla v0.16b, v1.8b, v2.8b 115 mls v0.2d, v1.2d, v2.2d 116 117// CHECK-ERROR: error: invalid operand for instruction 118// CHECK-ERROR: mla v0.16b, v1.8b, v2.8b 119// CHECK-ERROR: ^ 120// CHECK-ERROR: error: invalid operand for instruction 121// CHECK-ERROR: mls v0.2d, v1.2d, v2.2d 122// CHECK-ERROR: ^ 123 124//---------------------------------------------------------------------- 125// Vector Floating-Point Multiply-accumulate and Multiply-subtract 126//---------------------------------------------------------------------- 127 // Mismatched vector types 128 fmla v0.2s, v1.2d, v2.2d 129 fmls v0.16b, v1.8b, v2.8b 130 131// CHECK-ERROR: error: invalid operand for instruction 132// CHECK-ERROR: fmla v0.2s, v1.2d, v2.2d 133// CHECK-ERROR: ^ 134// CHECK-ERROR: error: invalid operand for instruction 135// CHECK-ERROR: fmls v0.16b, v1.8b, v2.8b 136// CHECK-ERROR: ^ 137 138 139//---------------------------------------------------------------------- 140// Vector Move Immediate Shifted 141// Vector Move Inverted Immediate Shifted 142// Vector Bitwise Bit Clear (AND NOT) - immediate 143// Vector Bitwise OR - immedidate 144//---------------------------------------------------------------------- 145 // out of range immediate (0 to 0xff) 146 movi v0.2s, #-1 147 mvni v1.4s, #256 148 // out of range shift (0, 8, 16, 24 and 0, 8) 149 bic v15.4h, #1, lsl #7 150 orr v31.2s, #1, lsl #25 151 movi v5.4h, #10, lsl #16 152 // invalid vector type (2s, 4s, 4h, 8h) 153 movi v5.8b, #1, lsl #8 154 155// CHECK-ERROR: error: invalid operand for instruction 156// CHECK-ERROR: movi v0.2s, #-1 157// CHECK-ERROR: ^ 158// CHECK-ERROR: error: invalid operand for instruction 159// CHECK-ERROR: mvni v1.4s, #256 160// CHECK-ERROR: ^ 161// CHECK-ERROR: error: invalid operand for instruction 162// CHECK-ERROR: bic v15.4h, #1, lsl #7 163// CHECK-ERROR: ^ 164// CHECK-ERROR: error: invalid operand for instruction 165// CHECK-ERROR: orr v31.2s, #1, lsl #25 166// CHECK-ERROR: ^ 167// CHECK-ERROR: error: invalid operand for instruction 168// CHECK-ERROR: movi v5.4h, #10, lsl #16 169// CHECK-ERROR: ^ 170// CHECK-ERROR: error: invalid operand for instruction 171// CHECK-ERROR: movi v5.8b, #1, lsl #8 172// CHECK-ERROR: ^ 173//---------------------------------------------------------------------- 174// Vector Move Immediate Masked 175// Vector Move Inverted Immediate Masked 176//---------------------------------------------------------------------- 177 // out of range immediate (0 to 0xff) 178 movi v0.2s, #-1, msl #8 179 mvni v7.4s, #256, msl #16 180 // out of range shift (8, 16) 181 movi v3.2s, #1, msl #0 182 mvni v17.4s, #255, msl #32 183 // invalid vector type (2s, 4s) 184 movi v5.4h, #31, msl #8 185 186// CHECK-ERROR: error: invalid operand for instruction 187// CHECK-ERROR: movi v0.2s, #-1, msl #8 188// CHECK-ERROR: ^ 189// CHECK-ERROR: error: invalid operand for instruction 190// CHECK-ERROR: mvni v7.4s, #256, msl #16 191// CHECK-ERROR: ^ 192// CHECK-ERROR: error: invalid operand for instruction 193// CHECK-ERROR: movi v3.2s, #1, msl #0 194// CHECK-ERROR: ^ 195// CHECK-ERROR: error: invalid operand for instruction 196// CHECK-ERROR: mvni v17.4s, #255, msl #32 197// CHECK-ERROR: ^ 198// CHECK-ERROR: error: invalid operand for instruction 199// CHECK-ERROR: movi v5.4h, #31, msl #8 200// CHECK-ERROR: ^ 201 202//---------------------------------------------------------------------- 203// Vector Immediate - per byte 204//---------------------------------------------------------------------- 205 // out of range immediate (0 to 0xff) 206 movi v0.8b, #-1 207 movi v1.16b, #256 208 209// CHECK-ERROR: error: invalid operand for instruction 210// CHECK-ERROR: movi v0.8b, #-1 211// CHECK-ERROR: ^ 212// CHECK-ERROR: error: invalid operand for instruction 213// CHECK-ERROR: movi v1.16b, #256 214// CHECK-ERROR: ^ 215 216//---------------------------------------------------------------------- 217// Scalar Floating-point Reciprocal Estimate 218//---------------------------------------------------------------------- 219 220 frecpe s19, h14 221 frecpe d13, s13 222 223// CHECK-ERROR: error: invalid operand for instruction 224// CHECK-ERROR: frecpe s19, h14 225// CHECK-ERROR: ^ 226// CHECK-ERROR: error: invalid operand for instruction 227// CHECK-ERROR: frecpe d13, s13 228// CHECK-ERROR: ^ 229 230//---------------------------------------------------------------------- 231// Scalar Floating-point Reciprocal Exponent 232//---------------------------------------------------------------------- 233 234 frecpx s18, h10 235 frecpx d16, s19 236 237// CHECK-ERROR: error: invalid operand for instruction 238// CHECK-ERROR: frecpx s18, h10 239// CHECK-ERROR: ^ 240// CHECK-ERROR: error: invalid operand for instruction 241// CHECK-ERROR: frecpx d16, s19 242// CHECK-ERROR: ^ 243 244//---------------------------------------------------------------------- 245// Scalar Floating-point Reciprocal Square Root Estimate 246//---------------------------------------------------------------------- 247 248 frsqrte s22, h13 249 frsqrte d21, s12 250 251// CHECK-ERROR: error: invalid operand for instruction 252// CHECK-ERROR: frsqrte s22, h13 253// CHECK-ERROR: ^ 254// CHECK-ERROR: error: invalid operand for instruction 255// CHECK-ERROR: frsqrte d21, s12 256// CHECK-ERROR: ^ 257 258//---------------------------------------------------------------------- 259// Vector Move Immediate - bytemask, per doubleword 260//--------------------------------------------------------------------- 261 // invalid bytemask (0x00 or 0xff) 262 movi v0.2d, #0x10ff00ff00ff00ff 263 264// CHECK:ERROR: error: invalid operand for instruction 265// CHECK:ERROR: movi v0.2d, #0x10ff00ff00ff00ff 266// CHECK:ERROR: ^ 267 268//---------------------------------------------------------------------- 269// Vector Move Immediate - bytemask, one doubleword 270//---------------------------------------------------------------------- 271 // invalid bytemask (0x00 or 0xff) 272 movi v0.2d, #0xffff00ff001f00ff 273 274// CHECK:ERROR: error: invalid operand for instruction 275// CHECK:ERROR: movi v0.2d, #0xffff00ff001f00ff 276// CHECK:ERROR: ^ 277//---------------------------------------------------------------------- 278// Vector Floating Point Move Immediate 279//---------------------------------------------------------------------- 280 // invalid vector type (2s, 4s, 2d) 281 fmov v0.4h, #1.0 282 283// CHECK:ERROR: error: invalid operand for instruction 284// CHECK:ERROR: fmov v0.4h, #1.0 285// CHECK:ERROR: ^ 286 287//---------------------------------------------------------------------- 288// Vector Move - register 289//---------------------------------------------------------------------- 290 // invalid vector type (8b, 16b) 291 mov v0.2s, v31.8b 292// CHECK:ERROR: error: invalid operand for instruction 293// CHECK:ERROR: mov v0.2s, v31.8b 294// CHECK:ERROR: ^ 295 296//---------------------------------------------------------------------- 297// Vector Absolute Difference and Accumulate (Signed, Unsigned) 298//---------------------------------------------------------------------- 299 300 // Mismatched and invalid vector types (2d) 301 saba v0.16b, v1.8b, v2.8b 302 uaba v0.2d, v1.2d, v2.2d 303 304// CHECK-ERROR: error: invalid operand for instruction 305// CHECK-ERROR: saba v0.16b, v1.8b, v2.8b 306// CHECK-ERROR: ^ 307// CHECK-ERROR: error: invalid operand for instruction 308// CHECK-ERROR: uaba v0.2d, v1.2d, v2.2d 309// CHECK-ERROR: ^ 310 311//---------------------------------------------------------------------- 312// Vector Absolute Difference and Accumulate (Signed, Unsigned) 313// Vector Absolute Difference (Signed, Unsigned) 314 315 // Mismatched and invalid vector types (2d) 316 uaba v0.16b, v1.8b, v2.8b 317 saba v0.2d, v1.2d, v2.2d 318 uabd v0.4s, v1.2s, v2.2s 319 sabd v0.4h, v1.8h, v8.8h 320 321// CHECK-ERROR: error: invalid operand for instruction 322// CHECK-ERROR: uaba v0.16b, v1.8b, v2.8b 323// CHECK-ERROR: ^ 324// CHECK-ERROR: error: invalid operand for instruction 325// CHECK-ERROR: saba v0.2d, v1.2d, v2.2d 326// CHECK-ERROR: ^ 327// CHECK-ERROR: error: invalid operand for instruction 328// CHECK-ERROR: uabd v0.4s, v1.2s, v2.2s 329// CHECK-ERROR: ^ 330// CHECK-ERROR: error: invalid operand for instruction 331// CHECK-ERROR: sabd v0.4h, v1.8h, v8.8h 332// CHECK-ERROR: ^ 333 334//---------------------------------------------------------------------- 335// Vector Absolute Difference (Floating Point) 336//---------------------------------------------------------------------- 337 // Mismatched and invalid vector types 338 fabd v0.2s, v1.4s, v2.2d 339 fabd v0.4h, v1.4h, v2.4h 340 341// CHECK-ERROR: error: invalid operand for instruction 342// CHECK-ERROR: fabd v0.2s, v1.4s, v2.2d 343// CHECK-ERROR: ^ 344// CHECK-ERROR: error: invalid operand for instruction 345// CHECK-ERROR: fabd v0.4h, v1.4h, v2.4h 346// CHECK-ERROR: ^ 347//---------------------------------------------------------------------- 348// Vector Multiply (Polynomial) 349//---------------------------------------------------------------------- 350 351 // Mismatched and invalid vector types 352 pmul v0.8b, v1.8b, v2.16b 353 pmul v0.2s, v1.2s, v2.2s 354 355// CHECK-ERROR: error: invalid operand for instruction 356// CHECK-ERROR: pmul v0.8b, v1.8b, v2.16b 357// CHECK-ERROR: ^ 358// CHECK-ERROR: error: invalid operand for instruction 359// CHECK-ERROR: pmul v0.2s, v1.2s, v2.2s 360// CHECK-ERROR: ^ 361 362//---------------------------------------------------------------------- 363// Scalar Integer Add and Sub 364//---------------------------------------------------------------------- 365 366 // Mismatched registers 367 add d0, s1, d2 368 sub s1, d1, d2 369 370// CHECK-ERROR: error: invalid operand for instruction 371// CHECK-ERROR: add d0, s1, d2 372// CHECK-ERROR: ^ 373// CHECK-ERROR: error: invalid operand for instruction 374// CHECK-ERROR: sub s1, d1, d2 375// CHECK-ERROR: ^ 376 377//---------------------------------------------------------------------- 378// Vector Reciprocal Step (Floating Point) 379//---------------------------------------------------------------------- 380 381 // Mismatched and invalid vector types 382 frecps v0.4s, v1.2d, v2.4s 383 frecps v0.8h, v1.8h, v2.8h 384 385// CHECK-ERROR: error: invalid operand for instruction 386// CHECK-ERROR: frecps v0.4s, v1.2d, v2.4s 387// CHECK-ERROR: ^ 388// CHECK-ERROR: error: invalid operand for instruction 389// CHECK-ERROR: frecps v0.8h, v1.8h, v2.8h 390// CHECK-ERROR: ^ 391 392//---------------------------------------------------------------------- 393// Vector Reciprocal Square Root Step (Floating Point) 394//---------------------------------------------------------------------- 395 396 // Mismatched and invalid vector types 397 frsqrts v0.2d, v1.2d, v2.2s 398 frsqrts v0.4h, v1.4h, v2.4h 399 400// CHECK-ERROR: error: invalid operand for instruction 401// CHECK-ERROR: frsqrts v0.2d, v1.2d, v2.2s 402// CHECK-ERROR: ^ 403// CHECK-ERROR: error: invalid operand for instruction 404// CHECK-ERROR: frsqrts v0.4h, v1.4h, v2.4h 405// CHECK-ERROR: ^ 406 407 408//---------------------------------------------------------------------- 409// Vector Absolute Compare Mask Less Than Or Equal (Floating Point) 410//---------------------------------------------------------------------- 411 412 // Mismatched and invalid vector types 413 facge v0.2d, v1.2s, v2.2d 414 facge v0.4h, v1.4h, v2.4h 415 facle v0.8h, v1.4h, v2.4h 416 417// CHECK-ERROR: error: invalid operand for instruction 418// CHECK-ERROR: facge v0.2d, v1.2s, v2.2d 419// CHECK-ERROR: ^ 420// CHECK-ERROR: error: invalid operand for instruction 421// CHECK-ERROR: facge v0.4h, v1.4h, v2.4h 422// CHECK-ERROR: ^ 423// CHECK-ERROR: error: invalid operand for instruction 424// CHECK-ERROR: facle v0.8h, v1.4h, v2.4h 425// CHECK-ERROR: ^ 426//---------------------------------------------------------------------- 427// Vector Absolute Compare Mask Less Than (Floating Point) 428//---------------------------------------------------------------------- 429 430 // Mismatched and invalid vector types 431 facgt v0.2d, v1.2d, v2.4s 432 facgt v0.8h, v1.8h, v2.8h 433 faclt v0.8b, v1.8b, v2.8b 434 435// CHECK-ERROR: error: invalid operand for instruction 436// CHECK-ERROR: facgt v0.2d, v1.2d, v2.4s 437// CHECK-ERROR: ^ 438// CHECK-ERROR: error: invalid operand for instruction 439// CHECK-ERROR: facgt v0.8h, v1.8h, v2.8h 440// CHECK-ERROR: ^ 441// CHECK-ERROR: error: invalid operand for instruction 442// CHECK-ERROR: faclt v0.8b, v1.8b, v2.8b 443// CHECK-ERROR: ^ 444 445 446//---------------------------------------------------------------------- 447// Vector Compare Mask Equal (Integer) 448//---------------------------------------------------------------------- 449 450 // Mismatched vector types 451 cmeq c0.2d, v1.2d, v2.2s 452 453// CHECK-ERROR: error: invalid operand for instruction 454// CHECK-ERROR: cmeq c0.2d, v1.2d, v2.2s 455// CHECK-ERROR: ^ 456 457//---------------------------------------------------------------------- 458// Vector Compare Mask Higher or Same (Unsigned Integer) 459// Vector Compare Mask Less or Same (Unsigned Integer) 460// CMLS is alias for CMHS with operands reversed. 461//---------------------------------------------------------------------- 462 463 // Mismatched vector types 464 cmhs c0.4h, v1.8b, v2.8b 465 cmls c0.16b, v1.16b, v2.2d 466 467// CHECK-ERROR: error: invalid operand for instruction 468// CHECK-ERROR: cmhs c0.4h, v1.8b, v2.8b 469// CHECK-ERROR: ^ 470// CHECK-ERROR: error: invalid operand for instruction 471// CHECK-ERROR: cmls c0.16b, v1.16b, v2.2d 472// CHECK-ERROR: ^ 473 474//---------------------------------------------------------------------- 475// Vector Compare Mask Greater Than or Equal (Integer) 476// Vector Compare Mask Less Than or Equal (Integer) 477// CMLE is alias for CMGE with operands reversed. 478//---------------------------------------------------------------------- 479 480 // Mismatched vector types 481 cmge c0.8h, v1.8b, v2.8b 482 cmle c0.4h, v1.2s, v2.2s 483 484// CHECK-ERROR: error: invalid operand for instruction 485// CHECK-ERROR: cmge c0.8h, v1.8b, v2.8b 486// CHECK-ERROR: ^ 487// CHECK-ERROR: error: invalid operand for instruction 488// CHECK-ERROR: cmle c0.4h, v1.2s, v2.2s 489// CHECK-ERROR: ^ 490 491//---------------------------------------------------------------------- 492// Vector Compare Mask Higher (Unsigned Integer) 493// Vector Compare Mask Lower (Unsigned Integer) 494// CMLO is alias for CMHI with operands reversed. 495//---------------------------------------------------------------------- 496 497 // Mismatched vector types 498 cmhi c0.4s, v1.4s, v2.16b 499 cmlo c0.8b, v1.8b, v2.2s 500 501// CHECK-ERROR: error: invalid operand for instruction 502// CHECK-ERROR: cmhi c0.4s, v1.4s, v2.16b 503// CHECK-ERROR: ^ 504// CHECK-ERROR: error: invalid operand for instruction 505// CHECK-ERROR: cmlo c0.8b, v1.8b, v2.2s 506// CHECK-ERROR: ^ 507 508//---------------------------------------------------------------------- 509// Vector Compare Mask Greater Than (Integer) 510// Vector Compare Mask Less Than (Integer) 511// CMLT is alias for CMGT with operands reversed. 512//---------------------------------------------------------------------- 513 514 // Mismatched vector types 515 cmgt c0.8b, v1.4s, v2.16b 516 cmlt c0.8h, v1.16b, v2.4s 517 518// CHECK-ERROR: error: invalid operand for instruction 519// CHECK-ERROR: cmgt c0.8b, v1.4s, v2.16b 520// CHECK-ERROR: ^ 521// CHECK-ERROR: error: invalid operand for instruction 522// CHECK-ERROR: cmlt c0.8h, v1.16b, v2.4s 523// CHECK-ERROR: ^ 524 525//---------------------------------------------------------------------- 526// Vector Compare Mask Bitwise Test (Integer) 527//---------------------------------------------------------------------- 528 529 // Mismatched vector types 530 cmtst c0.16b, v1.16b, v2.4s 531 532// CHECK-ERROR: error: invalid operand for instruction 533// CHECK-ERROR: cmtst c0.16b, v1.16b, v2.4s 534// CHECK-ERROR: ^ 535 536//---------------------------------------------------------------------- 537// Vector Compare Mask Equal (Floating Point) 538//---------------------------------------------------------------------- 539 540 // Mismatched and invalid vector types 541 fcmeq v0.2d, v1.2s, v2.2d 542 fcmeq v0.16b, v1.16b, v2.16b 543 fcmeq v0.8b, v1.4h, v2.4h 544 545// CHECK-ERROR: error: invalid operand for instruction 546// CHECK-ERROR: fcmeq v0.2d, v1.2s, v2.2d 547// CHECK-ERROR: ^ 548// CHECK-ERROR: error: invalid operand for instruction 549// CHECK-ERROR: fcmeq v0.16b, v1.16b, v2.16b 550// CHECK-ERROR: ^ 551// CHECK-ERROR: error: invalid operand for instruction 552// CHECK-ERROR: fcmeq v0.8b, v1.4h, v2.4h 553// CHECK-ERROR: ^ 554 555//---------------------------------------------------------------------- 556// Vector Compare Mask Greater Than Or Equal (Floating Point) 557// Vector Compare Mask Less Than Or Equal (Floating Point) 558// FCMLE is alias for FCMGE with operands reversed. 559//---------------------------------------------------------------------- 560 561 // Mismatched and invalid vector types 562 fcmge v31.4s, v29.2s, v28.4s 563 fcmge v3.8b, v8.2s, v12.2s 564 fcmle v17.8h, v15.2d, v13.2d 565 566// CHECK-ERROR: error: invalid operand for instruction 567// CHECK-ERROR: fcmge v31.4s, v29.2s, v28.4s 568// CHECK-ERROR: ^ 569// CHECK-ERROR: error: invalid operand for instruction 570// CHECK-ERROR: fcmge v3.8b, v8.2s, v12.2s 571// CHECK-ERROR: ^ 572// CHECK-ERROR: error: invalid operand for instruction 573// CHECK-ERROR: fcmle v17.8h, v15.2d, v13.2d 574// CHECK-ERROR: ^ 575 576//---------------------------------------------------------------------- 577// Vector Compare Mask Greater Than (Floating Point) 578// Vector Compare Mask Less Than (Floating Point) 579// FCMLT is alias for FCMGT with operands reversed. 580//---------------------------------------------------------------------- 581 582 // Mismatched and invalid vector types 583 fcmgt v0.2d, v31.2s, v16.2s 584 fcmgt v4.4s, v7.4s, v15.4h 585 fcmlt v29.2d, v5.2d, v2.16b 586 587// CHECK-ERROR: error: invalid operand for instruction 588// CHECK-ERROR: fcmgt v0.2d, v31.2s, v16.2s 589// CHECK-ERROR: ^ 590// CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 591// CHECK-ERROR: fcmgt v4.4s, v7.4s, v15.4h 592// CHECK-ERROR: ^ 593// CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 594// CHECK-ERROR: fcmlt v29.2d, v5.2d, v2.16b 595// CHECK-ERROR: ^ 596 597//---------------------------------------------------------------------- 598// Vector Compare Mask Equal to Zero (Integer) 599//---------------------------------------------------------------------- 600 // Mismatched vector types and invalid imm 601 // Mismatched vector types 602 cmeq c0.2d, v1.2s, #0 603 cmeq c0.2d, v1.2d, #1 604 605// CHECK-ERROR: error: invalid operand for instruction 606// CHECK-ERROR: cmeq c0.2d, v1.2s, #0 607// CHECK-ERROR: ^ 608// CHECK-ERROR: error: invalid operand for instruction 609// CHECK-ERROR: cmeq c0.2d, v1.2d, #1 610// CHECK-ERROR: ^ 611 612//---------------------------------------------------------------------- 613// Vector Compare Mask Greater Than or Equal to Zero (Signed Integer) 614//---------------------------------------------------------------------- 615 // Mismatched vector types and invalid imm 616 cmge c0.8h, v1.8b, #0 617 cmge c0.4s, v1.4s, #-1 618 619// CHECK-ERROR: error: invalid operand for instruction 620// CHECK-ERROR: cmge c0.8h, v1.8b, #0 621// CHECK-ERROR: ^ 622// CHECK-ERROR: error: invalid operand for instruction 623// CHECK-ERROR: cmge c0.4s, v1.4s, #-1 624// CHECK-ERROR: ^ 625 626//---------------------------------------------------------------------- 627// Vector Compare Mask Greater Than Zero (Signed Integer) 628//---------------------------------------------------------------------- 629 // Mismatched vector types and invalid imm 630 cmgt c0.8b, v1.4s, #0 631 cmgt c0.8b, v1.8b, #-255 632 633// CHECK-ERROR: error: invalid operand for instruction 634// CHECK-ERROR: cmgt c0.8b, v1.4s, #0 635// CHECK-ERROR: ^ 636// CHECK-ERROR: error: invalid operand for instruction 637// CHECK-ERROR: cmgt c0.8b, v1.8b, #-255 638// CHECK-ERROR: ^ 639 640//---------------------------------------------------------------------- 641// Vector Compare Mask Less Than or Equal To Zero (Signed Integer) 642//---------------------------------------------------------------------- 643 // Mismatched vector types and invalid imm 644 cmle c0.4h, v1.2s, #0 645 cmle c0.16b, v1.16b, #16 646 647// CHECK-ERROR: error: invalid operand for instruction 648// CHECK-ERROR: cmle c0.4h, v1.2s, #0 649// CHECK-ERROR: ^ 650// CHECK-ERROR: error: invalid operand for instruction 651// CHECK-ERROR: cmle c0.16b, v1.16b, #16 652// CHECK-ERROR: ^ 653//---------------------------------------------------------------------- 654// Vector Compare Mask Less Than Zero (Signed Integer) 655//---------------------------------------------------------------------- 656 // Mismatched vector types and invalid imm 657 cmlt c0.8h, v1.16b, #0 658 cmlt c0.8h, v1.8h, #-15 659 660// CHECK-ERROR: error: invalid operand for instruction 661// CHECK-ERROR: cmlt c0.8h, v1.16b, #0 662// CHECK-ERROR: ^ 663// CHECK-ERROR: error: invalid operand for instruction 664// CHECK-ERROR: cmlt c0.8h, v1.8h, #-15 665// CHECK-ERROR: ^ 666 667//---------------------------------------------------------------------- 668// Vector Compare Mask Equal to Zero (Floating Point) 669//---------------------------------------------------------------------- 670 671 // Mismatched and invalid vector types, invalid imm 672 fcmeq v0.2d, v1.2s, #0.0 673 fcmeq v0.16b, v1.16b, #0.0 674 fcmeq v0.8b, v1.4h, #1.0 675 fcmeq v0.8b, v1.4h, #1 676 677// CHECK-ERROR: error: invalid operand for instruction 678// CHECK-ERROR: fcmeq v0.2d, v1.2s, #0.0 679// CHECK-ERROR: ^ 680// CHECK-ERROR: error: invalid operand for instruction 681// CHECK-ERROR: fcmeq v0.16b, v1.16b, #0.0 682// CHECK-ERROR: ^ 683// CHECK-ERROR: error: invalid operand for instruction 684// CHECK-ERROR: fcmeq v0.8b, v1.4h, #1.0 685// CHECK-ERROR: ^ 686// CHECK-ERROR: error: Expected floating-point immediate 687// CHECK-ERROR: fcmeq v0.8b, v1.4h, #1 688// CHECK-ERROR: ^ 689//---------------------------------------------------------------------- 690// Vector Compare Mask Greater Than or Equal to Zero (Floating Point) 691//---------------------------------------------------------------------- 692 693 // Mismatched and invalid vector types, invalid imm 694 fcmge v31.4s, v29.2s, #0.0 695 fcmge v3.8b, v8.2s, #0.0 696 fcmle v17.8h, v15.2d, #-1.0 697 fcmle v17.8h, v15.2d, #0 698 699// CHECK-ERROR: error: invalid operand for instruction 700// CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0 701// CHECK-ERROR: ^ 702// CHECK-ERROR: error: invalid operand for instruction 703// CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0 704// CHECK-ERROR: ^ 705// CHECK-ERROR: error: invalid operand for instruction 706// CHECK-ERROR: fcmle v17.8h, v15.2d, #-1.0 707// CHECK-ERROR: ^ 708// CHECK-ERROR: error: Expected floating-point immediate 709// CHECK-ERROR: fcmle v17.8h, v15.2d, #0 710// CHECK-ERROR: ^ 711//---------------------------------------------------------------------- 712// Vector Compare Mask Greater Than Zero (Floating Point) 713//---------------------------------------------------------------------- 714 // Mismatched and invalid vector types, invalid imm 715 fcmgt v0.2d, v31.2s, #0.0 716 fcmgt v4.4s, v7.4h, #0.0 717 fcmlt v29.2d, v5.2d, #255.0 718 fcmlt v29.2d, v5.2d, #255 719 720// CHECK-ERROR: error: invalid operand for instruction 721// CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0 722// CHECK-ERROR: ^ 723// CHECK-ERROR: error: invalid operand for instruction 724// CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0 725// CHECK-ERROR: ^ 726// CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 727// CHECK-ERROR: fcmlt v29.2d, v5.2d, #255.0 728// CHECK-ERROR: ^ 729// CHECK-ERROR: error: Expected floating-point immediate 730// CHECK-ERROR: fcmlt v29.2d, v5.2d, #255 731// CHECK-ERROR: ^ 732 733//---------------------------------------------------------------------- 734// Vector Compare Mask Less Than or Equal To Zero (Floating Point) 735//---------------------------------------------------------------------- 736 // Mismatched and invalid vector types, invalid imm 737 fcmge v31.4s, v29.2s, #0.0 738 fcmge v3.8b, v8.2s, #0.0 739 fcmle v17.2d, v15.2d, #15.0 740 fcmle v17.2d, v15.2d, #15 741 742// CHECK-ERROR: error: invalid operand for instruction 743// CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0 744// CHECK-ERROR: ^ 745// CHECK-ERROR: error: invalid operand for instruction 746// CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0 747// CHECK-ERROR: ^ 748// CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 749// CHECK-ERROR: fcmle v17.2d, v15.2d, #15.0 750// CHECK-ERROR: ^ 751// CHECK-ERROR: error: Expected floating-point immediate 752// CHECK-ERROR: fcmle v17.2d, v15.2d, #15 753// CHECK-ERROR: ^ 754 755//---------------------------------------------------------------------- 756// Vector Compare Mask Less Than Zero (Floating Point) 757//---------------------------------------------------------------------- 758 // Mismatched and invalid vector types, invalid imm 759 fcmgt v0.2d, v31.2s, #0.0 760 fcmgt v4.4s, v7.4h, #0.0 761 fcmlt v29.2d, v5.2d, #16.0 762 fcmlt v29.2d, v5.2d, #2 763 764// CHECK-ERROR: error: invalid operand for instruction 765// CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0 766// CHECK-ERROR: ^ 767// CHECK-ERROR: error: invalid operand for instruction 768// CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0 769// CHECK-ERROR: ^ 770// CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 771// CHECK-ERROR: fcmlt v29.2d, v5.2d, #16.0 772// CHECK-ERROR: ^ 773// CHECK-ERROR: error: Expected floating-point immediate 774// CHECK-ERROR: fcmlt v29.2d, v5.2d, #2 775// CHECK-ERROR: ^ 776 777/----------------------------------------------------------------------- 778// Vector Integer Halving Add (Signed) 779// Vector Integer Halving Add (Unsigned) 780// Vector Integer Halving Sub (Signed) 781// Vector Integer Halving Sub (Unsigned) 782//---------------------------------------------------------------------- 783 // Mismatched and invalid vector types (2d) 784 shadd v0.2d, v1.2d, v2.2d 785 uhadd v4.2s, v5.2s, v5.4h 786 shsub v11.4h, v12.8h, v13.4h 787 uhsub v31.16b, v29.8b, v28.8b 788 789// CHECK-ERROR: error: invalid operand for instruction 790// CHECK-ERROR: shadd v0.2d, v1.2d, v2.2d 791// CHECK-ERROR: ^ 792// CHECK-ERROR: error: invalid operand for instruction 793// CHECK-ERROR: uhadd v4.2s, v5.2s, v5.4h 794// CHECK-ERROR: ^ 795// CHECK-ERROR: error: invalid operand for instruction 796// CHECK-ERROR: shsub v11.4h, v12.8h, v13.4h 797// CHECK-ERROR: ^ 798// CHECK-ERROR: error: invalid operand for instruction 799// CHECK-ERROR: uhsub v31.16b, v29.8b, v28.8b 800// CHECK-ERROR: ^ 801 802//---------------------------------------------------------------------- 803// Vector Integer Rouding Halving Add (Signed) 804// Vector Integer Rouding Halving Add (Unsigned) 805//---------------------------------------------------------------------- 806 807 // Mismatched and invalid vector types (2d) 808 srhadd v0.2s, v1.2s, v2.2d 809 urhadd v0.16b, v1.16b, v2.8h 810 811// CHECK-ERROR: error: invalid operand for instruction 812// CHECK-ERROR: srhadd v0.2s, v1.2s, v2.2d 813// CHECK-ERROR: ^ 814// CHECK-ERROR: error: invalid operand for instruction 815// CHECK-ERROR: urhadd v0.16b, v1.16b, v2.8h 816// CHECK-ERROR: ^ 817 818//---------------------------------------------------------------------- 819// Vector Integer Saturating Add (Signed) 820// Vector Integer Saturating Add (Unsigned) 821// Vector Integer Saturating Sub (Signed) 822// Vector Integer Saturating Sub (Unsigned) 823//---------------------------------------------------------------------- 824 825 // Mismatched vector types 826 sqadd v0.2s, v1.2s, v2.2d 827 uqadd v31.8h, v1.4h, v2.4h 828 sqsub v10.8h, v1.16b, v2.16b 829 uqsub v31.8b, v1.8b, v2.4s 830 831// CHECK-ERROR: error: invalid operand for instruction 832// CHECK-ERROR: sqadd v0.2s, v1.2s, v2.2d 833// CHECK-ERROR: ^ 834// CHECK-ERROR: error: invalid operand for instruction 835// CHECK-ERROR: uqadd v31.8h, v1.4h, v2.4h 836// CHECK-ERROR: ^ 837// CHECK-ERROR: error: invalid operand for instruction 838// CHECK-ERROR: sqsub v10.8h, v1.16b, v2.16b 839// CHECK-ERROR: ^ 840// CHECK-ERROR: error: invalid operand for instruction 841// CHECK-ERROR: uqsub v31.8b, v1.8b, v2.4s 842// CHECK-ERROR: ^ 843 844//---------------------------------------------------------------------- 845// Scalar Integer Saturating Add (Signed) 846// Scalar Integer Saturating Add (Unsigned) 847// Scalar Integer Saturating Sub (Signed) 848// Scalar Integer Saturating Sub (Unsigned) 849//---------------------------------------------------------------------- 850 851 // Mismatched registers 852 sqadd d0, s31, d2 853 uqadd s0, s1, d2 854 sqsub b0, b2, s18 855 uqsub h1, h2, d2 856 857// CHECK-ERROR: error: invalid operand for instruction 858// CHECK-ERROR: sqadd d0, s31, d2 859// CHECK-ERROR: ^ 860// CHECK-ERROR: error: invalid operand for instruction 861// CHECK-ERROR: uqadd s0, s1, d2 862// CHECK-ERROR: ^ 863// CHECK-ERROR: error: invalid operand for instruction 864// CHECK-ERROR: sqsub b0, b2, s18 865// CHECK-ERROR: ^ 866// CHECK-ERROR: error: invalid operand for instruction 867// CHECK-ERROR: uqsub h1, h2, d2 868// CHECK-ERROR: ^ 869 870//---------------------------------------------------------------------- 871// Scalar Integer Saturating Doubling Multiply Half High (Signed) 872//---------------------------------------------------------------------- 873 874 sqdmulh h10, s11, h12 875 sqdmulh s20, h21, s2 876 877// CHECK-ERROR: error: invalid operand for instruction 878// CHECK-ERROR: sqdmulh h10, s11, h12 879// CHECK-ERROR: ^ 880// CHECK-ERROR: error: invalid operand for instruction 881// CHECK-ERROR: sqdmulh s20, h21, s2 882// CHECK-ERROR: ^ 883 884//------------------------------------------------------------------------ 885// Scalar Integer Saturating Rounding Doubling Multiply Half High (Signed) 886//------------------------------------------------------------------------ 887 888 sqrdmulh h10, s11, h12 889 sqrdmulh s20, h21, s2 890 891// CHECK-ERROR: error: invalid operand for instruction 892// CHECK-ERROR: sqrdmulh h10, s11, h12 893// CHECK-ERROR: ^ 894// CHECK-ERROR: error: invalid operand for instruction 895// CHECK-ERROR: sqrdmulh s20, h21, s2 896// CHECK-ERROR: ^ 897 898//---------------------------------------------------------------------- 899// Vector Shift Left (Signed and Unsigned Integer) 900//---------------------------------------------------------------------- 901 // Mismatched vector types 902 sshl v0.4s, v15.2s, v16.2s 903 ushl v1.16b, v25.16b, v6.8h 904 905// CHECK-ERROR: error: invalid operand for instruction 906// CHECK-ERROR: sshl v0.4s, v15.2s, v16.2s 907// CHECK-ERROR: ^ 908// CHECK-ERROR: error: invalid operand for instruction 909// CHECK-ERROR: ushl v1.16b, v25.16b, v6.8h 910// CHECK-ERROR: ^ 911 912//---------------------------------------------------------------------- 913// Vector Saturating Shift Left (Signed and Unsigned Integer) 914//---------------------------------------------------------------------- 915 // Mismatched vector types 916 sqshl v0.2s, v15.4s, v16.2d 917 uqshl v1.8b, v25.4h, v6.8h 918 919// CHECK-ERROR: error: invalid operand for instruction 920// CHECK-ERROR: sqshl v0.2s, v15.4s, v16.2d 921// CHECK-ERROR: ^ 922// CHECK-ERROR: error: invalid operand for instruction 923// CHECK-ERROR: uqshl v1.8b, v25.4h, v6.8h 924// CHECK-ERROR: ^ 925 926//---------------------------------------------------------------------- 927// Vector Rouding Shift Left (Signed and Unsigned Integer) 928//---------------------------------------------------------------------- 929 // Mismatched vector types 930 srshl v0.8h, v15.8h, v16.16b 931 urshl v1.2d, v25.2d, v6.4s 932 933// CHECK-ERROR: error: invalid operand for instruction 934// CHECK-ERROR: srshl v0.8h, v15.8h, v16.16b 935// CHECK-ERROR: ^ 936// CHECK-ERROR: error: invalid operand for instruction 937// CHECK-ERROR: urshl v1.2d, v25.2d, v6.4s 938// CHECK-ERROR: ^ 939 940//---------------------------------------------------------------------- 941// Vector Saturating Rouding Shift Left (Signed and Unsigned Integer) 942//---------------------------------------------------------------------- 943 // Mismatched vector types 944 sqrshl v0.2s, v15.8h, v16.16b 945 uqrshl v1.4h, v25.4h, v6.2d 946 947// CHECK-ERROR: error: invalid operand for instruction 948// CHECK-ERROR: sqrshl v0.2s, v15.8h, v16.16b 949// CHECK-ERROR: ^ 950// CHECK-ERROR: error: invalid operand for instruction 951// CHECK-ERROR: uqrshl v1.4h, v25.4h, v6.2d 952// CHECK-ERROR: ^ 953 954//---------------------------------------------------------------------- 955// Scalar Integer Shift Left (Signed, Unsigned) 956//---------------------------------------------------------------------- 957 // Mismatched and invalid vector types 958 sshl d0, d1, s2 959 ushl b2, b0, b1 960 961// CHECK-ERROR: error: invalid operand for instruction 962// CHECK-ERROR: sshl d0, d1, s2 963// CHECK-ERROR: ^ 964// CHECK-ERROR: error: invalid operand for instruction 965// CHECK-ERROR: ushl b2, b0, b1 966// CHECK-ERROR: ^ 967 968//---------------------------------------------------------------------- 969// Scalar Integer Saturating Shift Left (Signed, Unsigned) 970//---------------------------------------------------------------------- 971 972 // Mismatched vector types 973 sqshl b0, b1, s0 974 uqshl h0, h1, b0 975 sqshl s0, s1, h0 976 uqshl d0, d1, b0 977 978// CHECK-ERROR: error: invalid operand for instruction 979// CHECK-ERROR: sqshl b0, b1, s0 980// CHECK-ERROR: ^ 981// CHECK-ERROR: error: invalid operand for instruction 982// CHECK-ERROR: uqshl h0, h1, b0 983// CHECK-ERROR: ^ 984// CHECK-ERROR: error: invalid operand for instruction 985// CHECK-ERROR: sqshl s0, s1, h0 986// CHECK-ERROR: ^ 987// CHECK-ERROR: error: invalid operand for instruction 988// CHECK-ERROR: uqshl d0, d1, b0 989// CHECK-ERROR: ^ 990 991//---------------------------------------------------------------------- 992// Scalar Integer Rouding Shift Left (Signed, Unsigned) 993//---------------------------------------------------------------------- 994 // Mismatched and invalid vector types 995 srshl h0, h1, h2 996 urshl s0, s1, s2 997 998// CHECK-ERROR: error: invalid operand for instruction 999// CHECK-ERROR: srshl h0, h1, h2 1000// CHECK-ERROR: ^ 1001// CHECK-ERROR: error: invalid operand for instruction 1002// CHECK-ERROR: urshl s0, s1, s2 1003// CHECK-ERROR: ^ 1004 1005 1006//---------------------------------------------------------------------- 1007// Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned) 1008//---------------------------------------------------------------------- 1009 1010 // Mismatched vector types 1011 sqrshl b0, b1, s0 1012 uqrshl h0, h1, b0 1013 sqrshl s0, s1, h0 1014 uqrshl d0, d1, b0 1015 1016// CHECK-ERROR: error: invalid operand for instruction 1017// CHECK-ERROR: sqrshl b0, b1, s0 1018// CHECK-ERROR: ^ 1019// CHECK-ERROR: error: invalid operand for instruction 1020// CHECK-ERROR: uqrshl h0, h1, b0 1021// CHECK-ERROR: ^ 1022// CHECK-ERROR: error: invalid operand for instruction 1023// CHECK-ERROR: sqrshl s0, s1, h0 1024// CHECK-ERROR: ^ 1025// CHECK-ERROR: error: invalid operand for instruction 1026// CHECK-ERROR: uqrshl d0, d1, b0 1027// CHECK-ERROR: ^ 1028 1029 1030//---------------------------------------------------------------------- 1031// Vector Maximum (Signed, Unsigned) 1032//---------------------------------------------------------------------- 1033 // Mismatched and invalid vector types 1034 smax v0.2d, v1.2d, v2.2d 1035 umax v0.4h, v1.4h, v2.2s 1036 1037// CHECK-ERROR: error: invalid operand for instruction 1038// CHECK-ERROR: smax v0.2d, v1.2d, v2.2d 1039// CHECK-ERROR: ^ 1040// CHECK-ERROR: error: invalid operand for instruction 1041// CHECK-ERROR: umax v0.4h, v1.4h, v2.2s 1042// CHECK-ERROR: ^ 1043 1044//---------------------------------------------------------------------- 1045// Vector Minimum (Signed, Unsigned) 1046//---------------------------------------------------------------------- 1047 // Mismatched and invalid vector types 1048 smin v0.2d, v1.2d, v2.2d 1049 umin v0.2s, v1.2s, v2.8b 1050 1051// CHECK-ERROR: error: invalid operand for instruction 1052// CHECK-ERROR: smin v0.2d, v1.2d, v2.2d 1053// CHECK-ERROR: ^ 1054// CHECK-ERROR: error: invalid operand for instruction 1055// CHECK-ERROR: umin v0.2s, v1.2s, v2.8b 1056// CHECK-ERROR: ^ 1057 1058 1059//---------------------------------------------------------------------- 1060// Vector Maximum (Floating Point) 1061//---------------------------------------------------------------------- 1062 // Mismatched and invalid vector types 1063 fmax v0.2s, v1.2s, v2.4s 1064 fmax v0.8b, v1.8b, v2.8b 1065 1066// CHECK-ERROR: error: invalid operand for instruction 1067// CHECK-ERROR: fmax v0.2s, v1.2s, v2.4s 1068// CHECK-ERROR: ^ 1069// CHECK-ERROR: error: invalid operand for instruction 1070// CHECK-ERROR: fmax v0.8b, v1.8b, v2.8b 1071// CHECK-ERROR: ^ 1072//---------------------------------------------------------------------- 1073// Vector Minimum (Floating Point) 1074//---------------------------------------------------------------------- 1075 // Mismatched and invalid vector types 1076 fmin v0.4s, v1.4s, v2.2d 1077 fmin v0.8h, v1.8h, v2.8h 1078 1079// CHECK-ERROR: error: invalid operand for instruction 1080// CHECK-ERROR: fmin v0.4s, v1.4s, v2.2d 1081// CHECK-ERROR: ^ 1082// CHECK-ERROR: error: invalid operand for instruction 1083// CHECK-ERROR: fmin v0.8h, v1.8h, v2.8h 1084// CHECK-ERROR: ^ 1085 1086//---------------------------------------------------------------------- 1087// Vector maxNum (Floating Point) 1088//---------------------------------------------------------------------- 1089 // Mismatched and invalid vector types 1090 fmaxnm v0.2s, v1.2s, v2.2d 1091 fmaxnm v0.4h, v1.8h, v2.4h 1092 1093// CHECK-ERROR: error: invalid operand for instruction 1094// CHECK-ERROR: fmaxnm v0.2s, v1.2s, v2.2d 1095// CHECK-ERROR: ^ 1096// CHECK-ERROR: error: invalid operand for instruction 1097// CHECK-ERROR: fmaxnm v0.4h, v1.8h, v2.4h 1098// CHECK-ERROR: ^ 1099 1100//---------------------------------------------------------------------- 1101// Vector minNum (Floating Point) 1102//---------------------------------------------------------------------- 1103 // Mismatched and invalid vector types 1104 fminnm v0.4s, v1.2s, v2.4s 1105 fminnm v0.16b, v0.16b, v0.16b 1106 1107// CHECK-ERROR: error: invalid operand for instruction 1108// CHECK-ERROR: fminnm v0.4s, v1.2s, v2.4s 1109// CHECK-ERROR: ^ 1110// CHECK-ERROR: error: invalid operand for instruction 1111// CHECK-ERROR: fminnm v0.16b, v0.16b, v0.16b 1112// CHECK-ERROR: ^ 1113 1114 1115//---------------------------------------------------------------------- 1116// Vector Maximum Pairwise (Signed, Unsigned) 1117//---------------------------------------------------------------------- 1118 // Mismatched and invalid vector types 1119 smaxp v0.2d, v1.2d, v2.2d 1120 umaxp v0.4h, v1.4h, v2.2s 1121 1122// CHECK-ERROR: error: invalid operand for instruction 1123// CHECK-ERROR: smaxp v0.2d, v1.2d, v2.2d 1124// CHECK-ERROR: ^ 1125// CHECK-ERROR: error: invalid operand for instruction 1126// CHECK-ERROR: umaxp v0.4h, v1.4h, v2.2s 1127// CHECK-ERROR: ^ 1128 1129//---------------------------------------------------------------------- 1130// Vector Minimum Pairwise (Signed, Unsigned) 1131//---------------------------------------------------------------------- 1132 // Mismatched and invalid vector types 1133 sminp v0.2d, v1.2d, v2.2d 1134 uminp v0.2s, v1.2s, v2.8b 1135 1136// CHECK-ERROR: error: invalid operand for instruction 1137// CHECK-ERROR: sminp v0.2d, v1.2d, v2.2d 1138// CHECK-ERROR: ^ 1139// CHECK-ERROR: error: invalid operand for instruction 1140// CHECK-ERROR: uminp v0.2s, v1.2s, v2.8b 1141// CHECK-ERROR: ^ 1142 1143 1144//---------------------------------------------------------------------- 1145// Vector Maximum Pairwise (Floating Point) 1146//---------------------------------------------------------------------- 1147 // Mismatched and invalid vector types 1148 fmaxp v0.2s, v1.2s, v2.4s 1149 fmaxp v0.8b, v1.8b, v2.8b 1150 1151// CHECK-ERROR: error: invalid operand for instruction 1152// CHECK-ERROR: fmaxp v0.2s, v1.2s, v2.4s 1153// CHECK-ERROR: ^ 1154// CHECK-ERROR: error: invalid operand for instruction 1155// CHECK-ERROR: fmaxp v0.8b, v1.8b, v2.8b 1156// CHECK-ERROR: ^ 1157//---------------------------------------------------------------------- 1158// Vector Minimum Pairwise (Floating Point) 1159//---------------------------------------------------------------------- 1160 // Mismatched and invalid vector types 1161 fminp v0.4s, v1.4s, v2.2d 1162 fminp v0.8h, v1.8h, v2.8h 1163 1164// CHECK-ERROR: error: invalid operand for instruction 1165// CHECK-ERROR: fminp v0.4s, v1.4s, v2.2d 1166// CHECK-ERROR: ^ 1167// CHECK-ERROR: error: invalid operand for instruction 1168// CHECK-ERROR: fminp v0.8h, v1.8h, v2.8h 1169// CHECK-ERROR: ^ 1170 1171//---------------------------------------------------------------------- 1172// Vector maxNum Pairwise (Floating Point) 1173//---------------------------------------------------------------------- 1174 // Mismatched and invalid vector types 1175 fmaxnmp v0.2s, v1.2s, v2.2d 1176 fmaxnmp v0.4h, v1.8h, v2.4h 1177 1178// CHECK-ERROR: error: invalid operand for instruction 1179// CHECK-ERROR: fmaxnmp v0.2s, v1.2s, v2.2d 1180// CHECK-ERROR: ^ 1181// CHECK-ERROR: error: invalid operand for instruction 1182// CHECK-ERROR: fmaxnmp v0.4h, v1.8h, v2.4h 1183// CHECK-ERROR: ^ 1184 1185//---------------------------------------------------------------------- 1186// Vector minNum Pairwise (Floating Point) 1187//---------------------------------------------------------------------- 1188 // Mismatched and invalid vector types 1189 fminnmp v0.4s, v1.2s, v2.4s 1190 fminnmp v0.16b, v0.16b, v0.16b 1191 1192// CHECK-ERROR: error: invalid operand for instruction 1193// CHECK-ERROR: fminnmp v0.4s, v1.2s, v2.4s 1194// CHECK-ERROR: ^ 1195// CHECK-ERROR: error: invalid operand for instruction 1196// CHECK-ERROR: fminnmp v0.16b, v0.16b, v0.16b 1197// CHECK-ERROR: ^ 1198 1199 1200//---------------------------------------------------------------------- 1201// Vector Add Pairwise (Integer) 1202//---------------------------------------------------------------------- 1203 1204 // Mismatched vector types 1205 addp v0.16b, v1.8b, v2.8b 1206 1207// CHECK-ERROR: error: invalid operand for instruction 1208// CHECK-ERROR: addp v0.16b, v1.8b, v2.8b 1209// CHECK-ERROR: ^ 1210 1211//---------------------------------------------------------------------- 1212// Vector Add Pairwise (Floating Point) 1213//---------------------------------------------------------------------- 1214 // Mismatched and invalid vector types 1215 faddp v0.16b, v1.8b, v2.8b 1216 faddp v0.2d, v1.2d, v2.8h 1217 1218// CHECK-ERROR: error: invalid operand for instruction 1219// CHECK-ERROR: faddp v0.16b, v1.8b, v2.8b 1220// CHECK-ERROR: ^ 1221// CHECK-ERROR: error: invalid operand for instruction 1222// CHECK-ERROR: faddp v0.2d, v1.2d, v2.8h 1223// CHECK-ERROR: ^ 1224 1225 1226//---------------------------------------------------------------------- 1227// Vector Saturating Doubling Multiply High 1228//---------------------------------------------------------------------- 1229 // Mismatched and invalid vector types 1230 sqdmulh v2.4h, v25.8h, v3.4h 1231 sqdmulh v12.2d, v5.2d, v13.2d 1232 sqdmulh v3.8b, v1.8b, v30.8b 1233 1234// CHECK-ERROR: error: invalid operand for instruction 1235// CHECK-ERROR: sqdmulh v2.4h, v25.8h, v3.4h 1236// CHECK-ERROR: ^ 1237// CHECK-ERROR: error: invalid operand for instruction 1238// CHECK-ERROR: sqdmulh v12.2d, v5.2d, v13.2d 1239// CHECK-ERROR: ^ 1240// CHECK-ERROR: error: invalid operand for instruction 1241// CHECK-ERROR: sqdmulh v3.8b, v1.8b, v30.8b 1242// CHECK-ERROR: ^ 1243 1244//---------------------------------------------------------------------- 1245// Vector Saturating Rouding Doubling Multiply High 1246//---------------------------------------------------------------------- 1247 // Mismatched and invalid vector types 1248 sqrdmulh v2.2s, v25.4s, v3.4s 1249 sqrdmulh v12.16b, v5.16b, v13.16b 1250 sqrdmulh v3.4h, v1.4h, v30.2d 1251 1252 1253// CHECK-ERROR: error: invalid operand for instruction 1254// CHECK-ERROR: sqrdmulh v2.2s, v25.4s, v3.4s 1255// CHECK-ERROR: ^ 1256// CHECK-ERROR: error: invalid operand for instruction 1257// CHECK-ERROR: sqrdmulh v12.16b, v5.16b, v13.16b 1258// CHECK-ERROR: ^ 1259// CHECK-ERROR: error: invalid operand for instruction 1260// CHECK-ERROR: sqrdmulh v3.4h, v1.4h, v30.2d 1261// CHECK-ERROR: ^ 1262 1263//---------------------------------------------------------------------- 1264// Vector Multiply Extended 1265//---------------------------------------------------------------------- 1266 // Mismatched and invalid vector types 1267 fmulx v21.2s, v5.2s, v13.2d 1268 fmulx v1.4h, v25.4h, v3.4h 1269 1270// CHECK-ERROR: error: invalid operand for instruction 1271// CHECK-ERROR: fmulx v21.2s, v5.2s, v13.2d 1272// CHECK-ERROR: ^ 1273// CHECK-ERROR: error: invalid operand for instruction 1274// CHECK-ERROR: fmulx v1.4h, v25.4h, v3.4h 1275// CHECK-ERROR: ^ 1276 1277//------------------------------------------------------------------------------ 1278// Vector Shift Left by Immediate 1279//------------------------------------------------------------------------------ 1280 // Mismatched vector types and out of range 1281 shl v0.4s, v15,2s, #3 1282 shl v0.2d, v17.4s, #3 1283 shl v0.8b, v31.8b, #-1 1284 shl v0.8b, v31.8b, #8 1285 shl v0.4s, v21.4s, #32 1286 shl v0.2d, v1.2d, #64 1287 1288// CHECK-ERROR: error: expected comma before next operand 1289// CHECK-ERROR: shl v0.4s, v15,2s, #3 1290// CHECK-ERROR: ^ 1291// CHECK-ERROR: error: invalid operand for instruction 1292// CHECK-ERROR: shl v0.2d, v17.4s, #3 1293// CHECK-ERROR: ^ 1294// CHECK-ERROR: error: expected integer in range [0, 7] 1295// CHECK-ERROR: shl v0.8b, v31.8b, #-1 1296// CHECK-ERROR: ^ 1297// CHECK-ERROR: error: expected integer in range [0, 7] 1298// CHECK-ERROR: shl v0.8b, v31.8b, #8 1299// CHECK-ERROR: ^ 1300// CHECK-ERROR: error: expected integer in range [0, 31] 1301// CHECK-ERROR: shl v0.4s, v21.4s, #32 1302// CHECK-ERROR: ^ 1303// CHECK-ERROR: error: expected integer in range [0, 63] 1304// CHECK-ERROR: shl v0.2d, v1.2d, #64 1305// CHECK-ERROR: ^ 1306 1307//---------------------------------------------------------------------- 1308// Vector Shift Left Long by Immediate 1309//---------------------------------------------------------------------- 1310 // Mismatched vector types 1311 sshll v0.4s, v15.2s, #3 1312 ushll v1.16b, v25.16b, #6 1313 sshll2 v0.2d, v3.8s, #15 1314 ushll2 v1.4s, v25.4s, #7 1315 1316 // Out of range 1317 sshll v0.8h, v1.8b, #-1 1318 sshll v0.8h, v1.8b, #9 1319 ushll v0.4s, v1.4h, #17 1320 ushll v0.2d, v1.2s, #33 1321 sshll2 v0.8h, v1.16b, #9 1322 sshll2 v0.4s, v1.8h, #17 1323 ushll2 v0.2d, v1.4s, #33 1324 1325// CHECK-ERROR: error: invalid operand for instruction 1326// CHECK-ERROR: sshll v0.4s, v15.2s, #3 1327// CHECK-ERROR: ^ 1328// CHECK-ERROR: error: invalid operand for instruction 1329// CHECK-ERROR: ushll v1.16b, v25.16b, #6 1330// CHECK-ERROR: ^ 1331// CHECK-ERROR: error: invalid operand for instruction 1332// CHECK-ERROR: sshll2 v0.2d, v3.8s, #15 1333// CHECK-ERROR: ^ 1334// CHECK-ERROR: error: invalid operand for instruction 1335// CHECK-ERROR: ushll2 v1.4s, v25.4s, #7 1336// CHECK-ERROR: ^ 1337// CHECK-ERROR: error: expected integer in range [0, 7] 1338// CHECK-ERROR: sshll v0.8h, v1.8b, #-1 1339// CHECK-ERROR: ^ 1340// CHECK-ERROR: error: expected integer in range [0, 7] 1341// CHECK-ERROR: sshll v0.8h, v1.8b, #9 1342// CHECK-ERROR: ^ 1343// CHECK-ERROR: error: expected integer in range [0, 15] 1344// CHECK-ERROR: ushll v0.4s, v1.4h, #17 1345// CHECK-ERROR: ^ 1346// CHECK-ERROR: error: expected integer in range [0, 31] 1347// CHECK-ERROR: ushll v0.2d, v1.2s, #33 1348// CHECK-ERROR: ^ 1349// CHECK-ERROR: error: expected integer in range [0, 7] 1350// CHECK-ERROR: sshll2 v0.8h, v1.16b, #9 1351// CHECK-ERROR: ^ 1352// CHECK-ERROR: error: expected integer in range [0, 15] 1353// CHECK-ERROR: sshll2 v0.4s, v1.8h, #17 1354// CHECK-ERROR: ^ 1355// CHECK-ERROR: error: expected integer in range [0, 31] 1356// CHECK-ERROR: ushll2 v0.2d, v1.4s, #33 1357// CHECK-ERROR: ^ 1358 1359 1360//------------------------------------------------------------------------------ 1361// Vector shift right by immediate 1362//------------------------------------------------------------------------------ 1363 sshr v0.8b, v1.8h, #3 1364 sshr v0.4h, v1.4s, #3 1365 sshr v0.2s, v1.2d, #3 1366 sshr v0.16b, v1.16b, #9 1367 sshr v0.8h, v1.8h, #17 1368 sshr v0.4s, v1.4s, #33 1369 sshr v0.2d, v1.2d, #65 1370 1371// CHECK-ERROR: error: invalid operand for instruction 1372// CHECK-ERROR: sshr v0.8b, v1.8h, #3 1373// CHECK-ERROR: ^ 1374// CHECK-ERROR: error: invalid operand for instruction 1375// CHECK-ERROR: sshr v0.4h, v1.4s, #3 1376// CHECK-ERROR: ^ 1377// CHECK-ERROR: error: invalid operand for instruction 1378// CHECK-ERROR: sshr v0.2s, v1.2d, #3 1379// CHECK-ERROR: ^ 1380// CHECK-ERROR: error: expected integer in range [1, 8] 1381// CHECK-ERROR: sshr v0.16b, v1.16b, #9 1382// CHECK-ERROR: ^ 1383// CHECK-ERROR: error: expected integer in range [1, 16] 1384// CHECK-ERROR: sshr v0.8h, v1.8h, #17 1385// CHECK-ERROR: ^ 1386// CHECK-ERROR: error: expected integer in range [1, 32] 1387// CHECK-ERROR: sshr v0.4s, v1.4s, #33 1388// CHECK-ERROR: ^ 1389// CHECK-ERROR: error: expected integer in range [1, 64] 1390// CHECK-ERROR: sshr v0.2d, v1.2d, #65 1391// CHECK-ERROR: ^ 1392 1393//------------------------------------------------------------------------------ 1394// Vector shift right by immediate 1395//------------------------------------------------------------------------------ 1396 ushr v0.8b, v1.8h, #3 1397 ushr v0.4h, v1.4s, #3 1398 ushr v0.2s, v1.2d, #3 1399 ushr v0.16b, v1.16b, #9 1400 ushr v0.8h, v1.8h, #17 1401 ushr v0.4s, v1.4s, #33 1402 ushr v0.2d, v1.2d, #65 1403 1404// CHECK-ERROR: error: invalid operand for instruction 1405// CHECK-ERROR: ushr v0.8b, v1.8h, #3 1406// CHECK-ERROR: ^ 1407// CHECK-ERROR: error: invalid operand for instruction 1408// CHECK-ERROR: ushr v0.4h, v1.4s, #3 1409// CHECK-ERROR: ^ 1410// CHECK-ERROR: error: invalid operand for instruction 1411// CHECK-ERROR: ushr v0.2s, v1.2d, #3 1412// CHECK-ERROR: ^ 1413// CHECK-ERROR: error: expected integer in range [1, 8] 1414// CHECK-ERROR: ushr v0.16b, v1.16b, #9 1415// CHECK-ERROR: ^ 1416// CHECK-ERROR: error: expected integer in range [1, 16] 1417// CHECK-ERROR: ushr v0.8h, v1.8h, #17 1418// CHECK-ERROR: ^ 1419// CHECK-ERROR: error: expected integer in range [1, 32] 1420// CHECK-ERROR: ushr v0.4s, v1.4s, #33 1421// CHECK-ERROR: ^ 1422// CHECK-ERROR: error: expected integer in range [1, 64] 1423// CHECK-ERROR: ushr v0.2d, v1.2d, #65 1424// CHECK-ERROR: ^ 1425 1426//------------------------------------------------------------------------------ 1427// Vector shift right and accumulate by immediate 1428//------------------------------------------------------------------------------ 1429 ssra v0.8b, v1.8h, #3 1430 ssra v0.4h, v1.4s, #3 1431 ssra v0.2s, v1.2d, #3 1432 ssra v0.16b, v1.16b, #9 1433 ssra v0.8h, v1.8h, #17 1434 ssra v0.4s, v1.4s, #33 1435 ssra v0.2d, v1.2d, #65 1436 1437// CHECK-ERROR: error: invalid operand for instruction 1438// CHECK-ERROR: ssra v0.8b, v1.8h, #3 1439// CHECK-ERROR: ^ 1440// CHECK-ERROR: error: invalid operand for instruction 1441// CHECK-ERROR: ssra v0.4h, v1.4s, #3 1442// CHECK-ERROR: ^ 1443// CHECK-ERROR: error: invalid operand for instruction 1444// CHECK-ERROR: ssra v0.2s, v1.2d, #3 1445// CHECK-ERROR: ^ 1446// CHECK-ERROR: error: expected integer in range [1, 8] 1447// CHECK-ERROR: ssra v0.16b, v1.16b, #9 1448// CHECK-ERROR: ^ 1449// CHECK-ERROR: error: expected integer in range [1, 16] 1450// CHECK-ERROR: ssra v0.8h, v1.8h, #17 1451// CHECK-ERROR: ^ 1452// CHECK-ERROR: error: expected integer in range [1, 32] 1453// CHECK-ERROR: ssra v0.4s, v1.4s, #33 1454// CHECK-ERROR: ^ 1455// CHECK-ERROR: error: expected integer in range [1, 64] 1456// CHECK-ERROR: ssra v0.2d, v1.2d, #65 1457// CHECK-ERROR: ^ 1458 1459//------------------------------------------------------------------------------ 1460// Vector shift right and accumulate by immediate 1461//------------------------------------------------------------------------------ 1462 usra v0.8b, v1.8h, #3 1463 usra v0.4h, v1.4s, #3 1464 usra v0.2s, v1.2d, #3 1465 usra v0.16b, v1.16b, #9 1466 usra v0.8h, v1.8h, #17 1467 usra v0.4s, v1.4s, #33 1468 usra v0.2d, v1.2d, #65 1469 1470// CHECK-ERROR: error: invalid operand for instruction 1471// CHECK-ERROR: usra v0.8b, v1.8h, #3 1472// CHECK-ERROR: ^ 1473// CHECK-ERROR: error: invalid operand for instruction 1474// CHECK-ERROR: usra v0.4h, v1.4s, #3 1475// CHECK-ERROR: ^ 1476// CHECK-ERROR: error: invalid operand for instruction 1477// CHECK-ERROR: usra v0.2s, v1.2d, #3 1478// CHECK-ERROR: ^ 1479// CHECK-ERROR: error: expected integer in range [1, 8] 1480// CHECK-ERROR: usra v0.16b, v1.16b, #9 1481// CHECK-ERROR: ^ 1482// CHECK-ERROR: error: expected integer in range [1, 16] 1483// CHECK-ERROR: usra v0.8h, v1.8h, #17 1484// CHECK-ERROR: ^ 1485// CHECK-ERROR: error: expected integer in range [1, 32] 1486// CHECK-ERROR: usra v0.4s, v1.4s, #33 1487// CHECK-ERROR: ^ 1488// CHECK-ERROR: error: expected integer in range [1, 64] 1489// CHECK-ERROR: usra v0.2d, v1.2d, #65 1490// CHECK-ERROR: ^ 1491 1492//------------------------------------------------------------------------------ 1493// Vector rounding shift right by immediate 1494//------------------------------------------------------------------------------ 1495 srshr v0.8b, v1.8h, #3 1496 srshr v0.4h, v1.4s, #3 1497 srshr v0.2s, v1.2d, #3 1498 srshr v0.16b, v1.16b, #9 1499 srshr v0.8h, v1.8h, #17 1500 srshr v0.4s, v1.4s, #33 1501 srshr v0.2d, v1.2d, #65 1502 1503// CHECK-ERROR: error: invalid operand for instruction 1504// CHECK-ERROR: srshr v0.8b, v1.8h, #3 1505// CHECK-ERROR: ^ 1506// CHECK-ERROR: error: invalid operand for instruction 1507// CHECK-ERROR: srshr v0.4h, v1.4s, #3 1508// CHECK-ERROR: ^ 1509// CHECK-ERROR: error: invalid operand for instruction 1510// CHECK-ERROR: srshr v0.2s, v1.2d, #3 1511// CHECK-ERROR: ^ 1512// CHECK-ERROR: error: expected integer in range [1, 8] 1513// CHECK-ERROR: srshr v0.16b, v1.16b, #9 1514// CHECK-ERROR: ^ 1515// CHECK-ERROR: error: expected integer in range [1, 16] 1516// CHECK-ERROR: srshr v0.8h, v1.8h, #17 1517// CHECK-ERROR: ^ 1518// CHECK-ERROR: error: expected integer in range [1, 32] 1519// CHECK-ERROR: srshr v0.4s, v1.4s, #33 1520// CHECK-ERROR: ^ 1521// CHECK-ERROR: error: expected integer in range [1, 64] 1522// CHECK-ERROR: srshr v0.2d, v1.2d, #65 1523// CHECK-ERROR: ^ 1524 1525//------------------------------------------------------------------------------ 1526// Vecotr rounding shift right by immediate 1527//------------------------------------------------------------------------------ 1528 urshr v0.8b, v1.8h, #3 1529 urshr v0.4h, v1.4s, #3 1530 urshr v0.2s, v1.2d, #3 1531 urshr v0.16b, v1.16b, #9 1532 urshr v0.8h, v1.8h, #17 1533 urshr v0.4s, v1.4s, #33 1534 urshr v0.2d, v1.2d, #65 1535 1536// CHECK-ERROR: error: invalid operand for instruction 1537// CHECK-ERROR: urshr v0.8b, v1.8h, #3 1538// CHECK-ERROR: ^ 1539// CHECK-ERROR: error: invalid operand for instruction 1540// CHECK-ERROR: urshr v0.4h, v1.4s, #3 1541// CHECK-ERROR: ^ 1542// CHECK-ERROR: error: invalid operand for instruction 1543// CHECK-ERROR: urshr v0.2s, v1.2d, #3 1544// CHECK-ERROR: ^ 1545// CHECK-ERROR: error: expected integer in range [1, 8] 1546// CHECK-ERROR: urshr v0.16b, v1.16b, #9 1547// CHECK-ERROR: ^ 1548// CHECK-ERROR: error: expected integer in range [1, 16] 1549// CHECK-ERROR: urshr v0.8h, v1.8h, #17 1550// CHECK-ERROR: ^ 1551// CHECK-ERROR: error: expected integer in range [1, 32] 1552// CHECK-ERROR: urshr v0.4s, v1.4s, #33 1553// CHECK-ERROR: ^ 1554// CHECK-ERROR: error: expected integer in range [1, 64] 1555// CHECK-ERROR: urshr v0.2d, v1.2d, #65 1556// CHECK-ERROR: ^ 1557 1558//------------------------------------------------------------------------------ 1559// Vector rounding shift right and accumulate by immediate 1560//------------------------------------------------------------------------------ 1561 srsra v0.8b, v1.8h, #3 1562 srsra v0.4h, v1.4s, #3 1563 srsra v0.2s, v1.2d, #3 1564 srsra v0.16b, v1.16b, #9 1565 srsra v0.8h, v1.8h, #17 1566 srsra v0.4s, v1.4s, #33 1567 srsra v0.2d, v1.2d, #65 1568 1569// CHECK-ERROR: error: invalid operand for instruction 1570// CHECK-ERROR: srsra v0.8b, v1.8h, #3 1571// CHECK-ERROR: ^ 1572// CHECK-ERROR: error: invalid operand for instruction 1573// CHECK-ERROR: srsra v0.4h, v1.4s, #3 1574// CHECK-ERROR: ^ 1575// CHECK-ERROR: error: invalid operand for instruction 1576// CHECK-ERROR: srsra v0.2s, v1.2d, #3 1577// CHECK-ERROR: ^ 1578// CHECK-ERROR: error: expected integer in range [1, 8] 1579// CHECK-ERROR: srsra v0.16b, v1.16b, #9 1580// CHECK-ERROR: ^ 1581// CHECK-ERROR: error: expected integer in range [1, 16] 1582// CHECK-ERROR: srsra v0.8h, v1.8h, #17 1583// CHECK-ERROR: ^ 1584// CHECK-ERROR: error: expected integer in range [1, 32] 1585// CHECK-ERROR: srsra v0.4s, v1.4s, #33 1586// CHECK-ERROR: ^ 1587// CHECK-ERROR: error: expected integer in range [1, 64] 1588// CHECK-ERROR: srsra v0.2d, v1.2d, #65 1589// CHECK-ERROR: ^ 1590 1591//------------------------------------------------------------------------------ 1592// Vector rounding shift right and accumulate by immediate 1593//------------------------------------------------------------------------------ 1594 ursra v0.8b, v1.8h, #3 1595 ursra v0.4h, v1.4s, #3 1596 ursra v0.2s, v1.2d, #3 1597 ursra v0.16b, v1.16b, #9 1598 ursra v0.8h, v1.8h, #17 1599 ursra v0.4s, v1.4s, #33 1600 ursra v0.2d, v1.2d, #65 1601 1602// CHECK-ERROR: error: invalid operand for instruction 1603// CHECK-ERROR: ursra v0.8b, v1.8h, #3 1604// CHECK-ERROR: ^ 1605// CHECK-ERROR: error: invalid operand for instruction 1606// CHECK-ERROR: ursra v0.4h, v1.4s, #3 1607// CHECK-ERROR: ^ 1608// CHECK-ERROR: error: invalid operand for instruction 1609// CHECK-ERROR: ursra v0.2s, v1.2d, #3 1610// CHECK-ERROR: ^ 1611// CHECK-ERROR: error: expected integer in range [1, 8] 1612// CHECK-ERROR: ursra v0.16b, v1.16b, #9 1613// CHECK-ERROR: ^ 1614// CHECK-ERROR: error: expected integer in range [1, 16] 1615// CHECK-ERROR: ursra v0.8h, v1.8h, #17 1616// CHECK-ERROR: ^ 1617// CHECK-ERROR: error: expected integer in range [1, 32] 1618// CHECK-ERROR: ursra v0.4s, v1.4s, #33 1619// CHECK-ERROR: ^ 1620// CHECK-ERROR: error: expected integer in range [1, 64] 1621// CHECK-ERROR: ursra v0.2d, v1.2d, #65 1622// CHECK-ERROR: ^ 1623 1624//------------------------------------------------------------------------------ 1625// Vector shift right and insert by immediate 1626//------------------------------------------------------------------------------ 1627 sri v0.8b, v1.8h, #3 1628 sri v0.4h, v1.4s, #3 1629 sri v0.2s, v1.2d, #3 1630 sri v0.16b, v1.16b, #9 1631 sri v0.8h, v1.8h, #17 1632 sri v0.4s, v1.4s, #33 1633 sri v0.2d, v1.2d, #65 1634 1635// CHECK-ERROR: error: invalid operand for instruction 1636// CHECK-ERROR: sri v0.8b, v1.8h, #3 1637// CHECK-ERROR: ^ 1638// CHECK-ERROR: error: invalid operand for instruction 1639// CHECK-ERROR: sri v0.4h, v1.4s, #3 1640// CHECK-ERROR: ^ 1641// CHECK-ERROR: error: invalid operand for instruction 1642// CHECK-ERROR: sri v0.2s, v1.2d, #3 1643// CHECK-ERROR: ^ 1644// CHECK-ERROR: error: expected integer in range [1, 8] 1645// CHECK-ERROR: sri v0.16b, v1.16b, #9 1646// CHECK-ERROR: ^ 1647// CHECK-ERROR: error: expected integer in range [1, 16] 1648// CHECK-ERROR: sri v0.8h, v1.8h, #17 1649// CHECK-ERROR: ^ 1650// CHECK-ERROR: error: expected integer in range [1, 32] 1651// CHECK-ERROR: sri v0.4s, v1.4s, #33 1652// CHECK-ERROR: ^ 1653// CHECK-ERROR: error: expected integer in range [1, 64] 1654// CHECK-ERROR: sri v0.2d, v1.2d, #65 1655// CHECK-ERROR: ^ 1656 1657//------------------------------------------------------------------------------ 1658// Vector shift left and insert by immediate 1659//------------------------------------------------------------------------------ 1660 sli v0.8b, v1.8h, #3 1661 sli v0.4h, v1.4s, #3 1662 sli v0.2s, v1.2d, #3 1663 sli v0.16b, v1.16b, #8 1664 sli v0.8h, v1.8h, #16 1665 sli v0.4s, v1.4s, #32 1666 sli v0.2d, v1.2d, #64 1667 1668// CHECK-ERROR: error: invalid operand for instruction 1669// CHECK-ERROR: sli v0.8b, v1.8h, #3 1670// CHECK-ERROR: ^ 1671// CHECK-ERROR: error: invalid operand for instruction 1672// CHECK-ERROR: sli v0.4h, v1.4s, #3 1673// CHECK-ERROR: ^ 1674// CHECK-ERROR: error: invalid operand for instruction 1675// CHECK-ERROR: sli v0.2s, v1.2d, #3 1676// CHECK-ERROR: ^ 1677// CHECK-ERROR: error: expected integer in range [0, 7] 1678// CHECK-ERROR: sli v0.16b, v1.16b, #8 1679// CHECK-ERROR: ^ 1680// CHECK-ERROR: error: expected integer in range [0, 15] 1681// CHECK-ERROR: sli v0.8h, v1.8h, #16 1682// CHECK-ERROR: ^ 1683// CHECK-ERROR: error: expected integer in range [0, 31] 1684// CHECK-ERROR: sli v0.4s, v1.4s, #32 1685// CHECK-ERROR: ^ 1686// CHECK-ERROR: error: expected integer in range [0, 63] 1687// CHECK-ERROR: sli v0.2d, v1.2d, #64 1688// CHECK-ERROR: ^ 1689 1690//------------------------------------------------------------------------------ 1691// Vector saturating shift left unsigned by immediate 1692//------------------------------------------------------------------------------ 1693 sqshlu v0.8b, v1.8h, #3 1694 sqshlu v0.4h, v1.4s, #3 1695 sqshlu v0.2s, v1.2d, #3 1696 sqshlu v0.16b, v1.16b, #8 1697 sqshlu v0.8h, v1.8h, #16 1698 sqshlu v0.4s, v1.4s, #32 1699 sqshlu v0.2d, v1.2d, #64 1700 1701// CHECK-ERROR: error: invalid operand for instruction 1702// CHECK-ERROR: sqshlu v0.8b, v1.8h, #3 1703// CHECK-ERROR: ^ 1704// CHECK-ERROR: error: invalid operand for instruction 1705// CHECK-ERROR: sqshlu v0.4h, v1.4s, #3 1706// CHECK-ERROR: ^ 1707// CHECK-ERROR: error: invalid operand for instruction 1708// CHECK-ERROR: sqshlu v0.2s, v1.2d, #3 1709// CHECK-ERROR: ^ 1710// CHECK-ERROR: error: expected integer in range [0, 7] 1711// CHECK-ERROR: sqshlu v0.16b, v1.16b, #8 1712// CHECK-ERROR: ^ 1713// CHECK-ERROR: error: expected integer in range [0, 15] 1714// CHECK-ERROR: sqshlu v0.8h, v1.8h, #16 1715// CHECK-ERROR: ^ 1716// CHECK-ERROR: error: expected integer in range [0, 31] 1717// CHECK-ERROR: sqshlu v0.4s, v1.4s, #32 1718// CHECK-ERROR: ^ 1719// CHECK-ERROR: error: expected integer in range [0, 63] 1720// CHECK-ERROR: sqshlu v0.2d, v1.2d, #64 1721// CHECK-ERROR: ^ 1722 1723//------------------------------------------------------------------------------ 1724// Vector saturating shift left by immediate 1725//------------------------------------------------------------------------------ 1726 sqshl v0.8b, v1.8h, #3 1727 sqshl v0.4h, v1.4s, #3 1728 sqshl v0.2s, v1.2d, #3 1729 sqshl v0.16b, v1.16b, #8 1730 sqshl v0.8h, v1.8h, #16 1731 sqshl v0.4s, v1.4s, #32 1732 sqshl v0.2d, v1.2d, #64 1733 1734// CHECK-ERROR: error: invalid operand for instruction 1735// CHECK-ERROR: sqshl v0.8b, v1.8h, #3 1736// CHECK-ERROR: ^ 1737// CHECK-ERROR: error: invalid operand for instruction 1738// CHECK-ERROR: sqshl v0.4h, v1.4s, #3 1739// CHECK-ERROR: ^ 1740// CHECK-ERROR: error: invalid operand for instruction 1741// CHECK-ERROR: sqshl v0.2s, v1.2d, #3 1742// CHECK-ERROR: ^ 1743// CHECK-ERROR: error: expected integer in range [0, 7] 1744// CHECK-ERROR: sqshl v0.16b, v1.16b, #8 1745// CHECK-ERROR: ^ 1746// CHECK-ERROR: error: expected integer in range [0, 15] 1747// CHECK-ERROR: sqshl v0.8h, v1.8h, #16 1748// CHECK-ERROR: ^ 1749// CHECK-ERROR: error: expected integer in range [0, 31] 1750// CHECK-ERROR: sqshl v0.4s, v1.4s, #32 1751// CHECK-ERROR: ^ 1752// CHECK-ERROR: error: expected integer in range [0, 63] 1753// CHECK-ERROR: sqshl v0.2d, v1.2d, #64 1754// CHECK-ERROR: ^ 1755 1756//------------------------------------------------------------------------------ 1757// Vector saturating shift left by immediate 1758//------------------------------------------------------------------------------ 1759 uqshl v0.8b, v1.8h, #3 1760 uqshl v0.4h, v1.4s, #3 1761 uqshl v0.2s, v1.2d, #3 1762 uqshl v0.16b, v1.16b, #8 1763 uqshl v0.8h, v1.8h, #16 1764 uqshl v0.4s, v1.4s, #32 1765 uqshl v0.2d, v1.2d, #64 1766 1767// CHECK-ERROR: error: invalid operand for instruction 1768// CHECK-ERROR: uqshl v0.8b, v1.8h, #3 1769// CHECK-ERROR: ^ 1770// CHECK-ERROR: error: invalid operand for instruction 1771// CHECK-ERROR: uqshl v0.4h, v1.4s, #3 1772// CHECK-ERROR: ^ 1773// CHECK-ERROR: error: invalid operand for instruction 1774// CHECK-ERROR: uqshl v0.2s, v1.2d, #3 1775// CHECK-ERROR: ^ 1776// CHECK-ERROR: error: expected integer in range [0, 7] 1777// CHECK-ERROR: uqshl v0.16b, v1.16b, #8 1778// CHECK-ERROR: ^ 1779// CHECK-ERROR: error: expected integer in range [0, 15] 1780// CHECK-ERROR: uqshl v0.8h, v1.8h, #16 1781// CHECK-ERROR: ^ 1782// CHECK-ERROR: error: expected integer in range [0, 31] 1783// CHECK-ERROR: uqshl v0.4s, v1.4s, #32 1784// CHECK-ERROR: ^ 1785// CHECK-ERROR: error: expected integer in range [0, 63] 1786// CHECK-ERROR: uqshl v0.2d, v1.2d, #64 1787// CHECK-ERROR: ^ 1788 1789//------------------------------------------------------------------------------ 1790// Vector shift right narrow by immediate 1791//------------------------------------------------------------------------------ 1792 shrn v0.8b, v1.8b, #3 1793 shrn v0.4h, v1.4h, #3 1794 shrn v0.2s, v1.2s, #3 1795 shrn2 v0.16b, v1.8h, #17 1796 shrn2 v0.8h, v1.4s, #33 1797 shrn2 v0.4s, v1.2d, #65 1798 1799// CHECK-ERROR: error: invalid operand for instruction 1800// CHECK-ERROR: shrn v0.8b, v1.8b, #3 1801// CHECK-ERROR: ^ 1802// CHECK-ERROR: error: invalid operand for instruction 1803// CHECK-ERROR: shrn v0.4h, v1.4h, #3 1804// CHECK-ERROR: ^ 1805// CHECK-ERROR: error: invalid operand for instruction 1806// CHECK-ERROR: shrn v0.2s, v1.2s, #3 1807// CHECK-ERROR: ^ 1808// CHECK-ERROR: error: expected integer in range [1, 8] 1809// CHECK-ERROR: shrn2 v0.16b, v1.8h, #17 1810// CHECK-ERROR: ^ 1811// CHECK-ERROR: error: expected integer in range [1, 16] 1812// CHECK-ERROR: shrn2 v0.8h, v1.4s, #33 1813// CHECK-ERROR: ^ 1814// CHECK-ERROR: error: expected integer in range [1, 32] 1815// CHECK-ERROR: shrn2 v0.4s, v1.2d, #65 1816// CHECK-ERROR: ^ 1817 1818//------------------------------------------------------------------------------ 1819// Vector saturating shift right unsigned narrow by immediate 1820//------------------------------------------------------------------------------ 1821 sqshrun v0.8b, v1.8b, #3 1822 sqshrun v0.4h, v1.4h, #3 1823 sqshrun v0.2s, v1.2s, #3 1824 sqshrun2 v0.16b, v1.8h, #17 1825 sqshrun2 v0.8h, v1.4s, #33 1826 sqshrun2 v0.4s, v1.2d, #65 1827 1828// CHECK-ERROR: error: invalid operand for instruction 1829// CHECK-ERROR: sqshrun v0.8b, v1.8b, #3 1830// CHECK-ERROR: ^ 1831// CHECK-ERROR: error: invalid operand for instruction 1832// CHECK-ERROR: sqshrun v0.4h, v1.4h, #3 1833// CHECK-ERROR: ^ 1834// CHECK-ERROR: error: invalid operand for instruction 1835// CHECK-ERROR: sqshrun v0.2s, v1.2s, #3 1836// CHECK-ERROR: ^ 1837// CHECK-ERROR: error: expected integer in range [1, 8] 1838// CHECK-ERROR: sqshrun2 v0.16b, v1.8h, #17 1839// CHECK-ERROR: ^ 1840// CHECK-ERROR: error: expected integer in range [1, 16] 1841// CHECK-ERROR: sqshrun2 v0.8h, v1.4s, #33 1842// CHECK-ERROR: ^ 1843// CHECK-ERROR: error: expected integer in range [1, 32] 1844// CHECK-ERROR: sqshrun2 v0.4s, v1.2d, #65 1845// CHECK-ERROR: ^ 1846 1847//------------------------------------------------------------------------------ 1848// Vector rounding shift right narrow by immediate 1849//------------------------------------------------------------------------------ 1850 rshrn v0.8b, v1.8b, #3 1851 rshrn v0.4h, v1.4h, #3 1852 rshrn v0.2s, v1.2s, #3 1853 rshrn2 v0.16b, v1.8h, #17 1854 rshrn2 v0.8h, v1.4s, #33 1855 rshrn2 v0.4s, v1.2d, #65 1856 1857// CHECK-ERROR: error: invalid operand for instruction 1858// CHECK-ERROR: rshrn v0.8b, v1.8b, #3 1859// CHECK-ERROR: ^ 1860// CHECK-ERROR: error: invalid operand for instruction 1861// CHECK-ERROR: rshrn v0.4h, v1.4h, #3 1862// CHECK-ERROR: ^ 1863// CHECK-ERROR: error: invalid operand for instruction 1864// CHECK-ERROR: rshrn v0.2s, v1.2s, #3 1865// CHECK-ERROR: ^ 1866// CHECK-ERROR: error: expected integer in range [1, 8] 1867// CHECK-ERROR: rshrn2 v0.16b, v1.8h, #17 1868// CHECK-ERROR: ^ 1869// CHECK-ERROR: error: expected integer in range [1, 16] 1870// CHECK-ERROR: rshrn2 v0.8h, v1.4s, #33 1871// CHECK-ERROR: ^ 1872// CHECK-ERROR: error: expected integer in range [1, 32] 1873// CHECK-ERROR: rshrn2 v0.4s, v1.2d, #65 1874// CHECK-ERROR: ^ 1875 1876//------------------------------------------------------------------------------ 1877// Vector saturating shift right rounded unsigned narrow by immediate 1878//------------------------------------------------------------------------------ 1879 sqrshrun v0.8b, v1.8b, #3 1880 sqrshrun v0.4h, v1.4h, #3 1881 sqrshrun v0.2s, v1.2s, #3 1882 sqrshrun2 v0.16b, v1.8h, #17 1883 sqrshrun2 v0.8h, v1.4s, #33 1884 sqrshrun2 v0.4s, v1.2d, #65 1885 1886// CHECK-ERROR: error: invalid operand for instruction 1887// CHECK-ERROR: sqrshrun v0.8b, v1.8b, #3 1888// CHECK-ERROR: ^ 1889// CHECK-ERROR: error: invalid operand for instruction 1890// CHECK-ERROR: sqrshrun v0.4h, v1.4h, #3 1891// CHECK-ERROR: ^ 1892// CHECK-ERROR: error: invalid operand for instruction 1893// CHECK-ERROR: sqrshrun v0.2s, v1.2s, #3 1894// CHECK-ERROR: ^ 1895// CHECK-ERROR: error: expected integer in range [1, 8] 1896// CHECK-ERROR: sqrshrun2 v0.16b, v1.8h, #17 1897// CHECK-ERROR: ^ 1898// CHECK-ERROR: error: expected integer in range [1, 16] 1899// CHECK-ERROR: sqrshrun2 v0.8h, v1.4s, #33 1900// CHECK-ERROR: ^ 1901// CHECK-ERROR: error: expected integer in range [1, 32] 1902// CHECK-ERROR: sqrshrun2 v0.4s, v1.2d, #65 1903// CHECK-ERROR: ^ 1904 1905//------------------------------------------------------------------------------ 1906// Vector saturating shift right narrow by immediate 1907//------------------------------------------------------------------------------ 1908 sqshrn v0.8b, v1.8b, #3 1909 sqshrn v0.4h, v1.4h, #3 1910 sqshrn v0.2s, v1.2s, #3 1911 sqshrn2 v0.16b, v1.8h, #17 1912 sqshrn2 v0.8h, v1.4s, #33 1913 sqshrn2 v0.4s, v1.2d, #65 1914 1915// CHECK-ERROR: error: invalid operand for instruction 1916// CHECK-ERROR: sqshrn v0.8b, v1.8b, #3 1917// CHECK-ERROR: ^ 1918// CHECK-ERROR: error: invalid operand for instruction 1919// CHECK-ERROR: sqshrn v0.4h, v1.4h, #3 1920// CHECK-ERROR: ^ 1921// CHECK-ERROR: error: invalid operand for instruction 1922// CHECK-ERROR: sqshrn v0.2s, v1.2s, #3 1923// CHECK-ERROR: ^ 1924// CHECK-ERROR: error: expected integer in range [1, 8] 1925// CHECK-ERROR: sqshrn2 v0.16b, v1.8h, #17 1926// CHECK-ERROR: ^ 1927// CHECK-ERROR: error: expected integer in range [1, 16] 1928// CHECK-ERROR: sqshrn2 v0.8h, v1.4s, #33 1929// CHECK-ERROR: ^ 1930// CHECK-ERROR: error: expected integer in range [1, 32] 1931// CHECK-ERROR: sqshrn2 v0.4s, v1.2d, #65 1932// CHECK-ERROR: ^ 1933 1934//------------------------------------------------------------------------------ 1935// Vector saturating shift right narrow by immediate 1936//------------------------------------------------------------------------------ 1937 uqshrn v0.8b, v1.8b, #3 1938 uqshrn v0.4h, v1.4h, #3 1939 uqshrn v0.2s, v1.2s, #3 1940 uqshrn2 v0.16b, v1.8h, #17 1941 uqshrn2 v0.8h, v1.4s, #33 1942 uqshrn2 v0.4s, v1.2d, #65 1943 1944// CHECK-ERROR: error: invalid operand for instruction 1945// CHECK-ERROR: uqshrn v0.8b, v1.8b, #3 1946// CHECK-ERROR: ^ 1947// CHECK-ERROR: error: invalid operand for instruction 1948// CHECK-ERROR: uqshrn v0.4h, v1.4h, #3 1949// CHECK-ERROR: ^ 1950// CHECK-ERROR: error: invalid operand for instruction 1951// CHECK-ERROR: uqshrn v0.2s, v1.2s, #3 1952// CHECK-ERROR: ^ 1953// CHECK-ERROR: error: expected integer in range [1, 8] 1954// CHECK-ERROR: uqshrn2 v0.16b, v1.8h, #17 1955// CHECK-ERROR: ^ 1956// CHECK-ERROR: error: expected integer in range [1, 16] 1957// CHECK-ERROR: uqshrn2 v0.8h, v1.4s, #33 1958// CHECK-ERROR: ^ 1959// CHECK-ERROR: error: expected integer in range [1, 32] 1960// CHECK-ERROR: uqshrn2 v0.4s, v1.2d, #65 1961// CHECK-ERROR: ^ 1962 1963//------------------------------------------------------------------------------ 1964// Vector saturating shift right rounded narrow by immediate 1965//------------------------------------------------------------------------------ 1966 sqrshrn v0.8b, v1.8b, #3 1967 sqrshrn v0.4h, v1.4h, #3 1968 sqrshrn v0.2s, v1.2s, #3 1969 sqrshrn2 v0.16b, v1.8h, #17 1970 sqrshrn2 v0.8h, v1.4s, #33 1971 sqrshrn2 v0.4s, v1.2d, #65 1972 1973// CHECK-ERROR: error: invalid operand for instruction 1974// CHECK-ERROR: sqrshrn v0.8b, v1.8b, #3 1975// CHECK-ERROR: ^ 1976// CHECK-ERROR: error: invalid operand for instruction 1977// CHECK-ERROR: sqrshrn v0.4h, v1.4h, #3 1978// CHECK-ERROR: ^ 1979// CHECK-ERROR: error: invalid operand for instruction 1980// CHECK-ERROR: sqrshrn v0.2s, v1.2s, #3 1981// CHECK-ERROR: ^ 1982// CHECK-ERROR: error: expected integer in range [1, 8] 1983// CHECK-ERROR: sqrshrn2 v0.16b, v1.8h, #17 1984// CHECK-ERROR: ^ 1985// CHECK-ERROR: error: expected integer in range [1, 16] 1986// CHECK-ERROR: sqrshrn2 v0.8h, v1.4s, #33 1987// CHECK-ERROR: ^ 1988// CHECK-ERROR: error: expected integer in range [1, 32] 1989// CHECK-ERROR: sqrshrn2 v0.4s, v1.2d, #65 1990// CHECK-ERROR: ^ 1991 1992//------------------------------------------------------------------------------ 1993// Vector saturating shift right rounded narrow by immediate 1994//------------------------------------------------------------------------------ 1995 uqrshrn v0.8b, v1.8b, #3 1996 uqrshrn v0.4h, v1.4h, #3 1997 uqrshrn v0.2s, v1.2s, #3 1998 uqrshrn2 v0.16b, v1.8h, #17 1999 uqrshrn2 v0.8h, v1.4s, #33 2000 uqrshrn2 v0.4s, v1.2d, #65 2001 2002// CHECK-ERROR: error: invalid operand for instruction 2003// CHECK-ERROR: uqrshrn v0.8b, v1.8b, #3 2004// CHECK-ERROR: ^ 2005// CHECK-ERROR: error: invalid operand for instruction 2006// CHECK-ERROR: uqrshrn v0.4h, v1.4h, #3 2007// CHECK-ERROR: ^ 2008// CHECK-ERROR: error: invalid operand for instruction 2009// CHECK-ERROR: uqrshrn v0.2s, v1.2s, #3 2010// CHECK-ERROR: ^ 2011// CHECK-ERROR: error: expected integer in range [1, 8] 2012// CHECK-ERROR: uqrshrn2 v0.16b, v1.8h, #17 2013// CHECK-ERROR: ^ 2014// CHECK-ERROR: error: expected integer in range [1, 16] 2015// CHECK-ERROR: uqrshrn2 v0.8h, v1.4s, #33 2016// CHECK-ERROR: ^ 2017// CHECK-ERROR: error: expected integer in range [1, 32] 2018// CHECK-ERROR: uqrshrn2 v0.4s, v1.2d, #65 2019// CHECK-ERROR: ^ 2020 2021//------------------------------------------------------------------------------ 2022// Fixed-point convert to floating-point 2023//------------------------------------------------------------------------------ 2024 scvtf v0.2s, v1.2d, #3 2025 scvtf v0.4s, v1.4h, #3 2026 scvtf v0.2d, v1.2s, #3 2027 ucvtf v0.2s, v1.2s, #33 2028 ucvtf v0.4s, v1.4s, #33 2029 ucvtf v0.2d, v1.2d, #65 2030 2031// CHECK-ERROR: error: invalid operand for instruction 2032// CHECK-ERROR: scvtf v0.2s, v1.2d, #3 2033// CHECK-ERROR: ^ 2034// CHECK-ERROR: error: invalid operand for instruction 2035// CHECK-ERROR: scvtf v0.4s, v1.4h, #3 2036// CHECK-ERROR: ^ 2037// CHECK-ERROR: error: invalid operand for instruction 2038// CHECK-ERROR: scvtf v0.2d, v1.2s, #3 2039// CHECK-ERROR: ^ 2040// CHECK-ERROR: error: expected integer in range [1, 32] 2041// CHECK-ERROR: ucvtf v0.2s, v1.2s, #33 2042// CHECK-ERROR: ^ 2043// CHECK-ERROR: error: expected integer in range [1, 32] 2044// CHECK-ERROR: ucvtf v0.4s, v1.4s, #33 2045// CHECK-ERROR: ^ 2046// CHECK-ERROR: error: expected integer in range [1, 64] 2047// CHECK-ERROR: ucvtf v0.2d, v1.2d, #65 2048// CHECK-ERROR: ^ 2049 2050//------------------------------------------------------------------------------ 2051// Floating-point convert to fixed-point 2052//------------------------------------------------------------------------------ 2053 fcvtzs v0.2s, v1.2d, #3 2054 fcvtzs v0.4s, v1.4h, #3 2055 fcvtzs v0.2d, v1.2s, #3 2056 fcvtzu v0.2s, v1.2s, #33 2057 fcvtzu v0.4s, v1.4s, #33 2058 fcvtzu v0.2d, v1.2d, #65 2059 2060// CHECK-ERROR: error: invalid operand for instruction 2061// CHECK-ERROR: fcvtzs v0.2s, v1.2d, #3 2062// CHECK-ERROR: ^ 2063// CHECK-ERROR: error: invalid operand for instruction 2064// CHECK-ERROR: fcvtzs v0.4s, v1.4h, #3 2065// CHECK-ERROR: ^ 2066// CHECK-ERROR: error: invalid operand for instruction 2067// CHECK-ERROR: fcvtzs v0.2d, v1.2s, #3 2068// CHECK-ERROR: ^ 2069// CHECK-ERROR: error: expected integer in range [1, 32] 2070// CHECK-ERROR: fcvtzu v0.2s, v1.2s, #33 2071// CHECK-ERROR: ^ 2072// CHECK-ERROR: error: expected integer in range [1, 32] 2073// CHECK-ERROR: fcvtzu v0.4s, v1.4s, #33 2074// CHECK-ERROR: ^ 2075// CHECK-ERROR: error: expected integer in range [1, 64] 2076// CHECK-ERROR: fcvtzu v0.2d, v1.2d, #65 2077// CHECK-ERROR: ^ 2078 2079//---------------------------------------------------------------------- 2080// Vector operation on 3 operands with different types 2081//---------------------------------------------------------------------- 2082 2083 // Mismatched and invalid vector types 2084 saddl v0.8h, v1.8h, v2.8b 2085 saddl v0.4s, v1.4s, v2.4h 2086 saddl v0.2d, v1.2d, v2.2s 2087 2088// CHECK-ERROR: error: invalid operand for instruction 2089// CHECK-ERROR: saddl v0.8h, v1.8h, v2.8b 2090// CHECK-ERROR: ^ 2091// CHECK-ERROR: error: invalid operand for instruction 2092// CHECK-ERROR: saddl v0.4s, v1.4s, v2.4h 2093// CHECK-ERROR: ^ 2094// CHECK-ERROR: error: invalid operand for instruction 2095// CHECK-ERROR: saddl v0.2d, v1.2d, v2.2s 2096// CHECK-ERROR: ^ 2097 2098 saddl2 v0.4s, v1.8s, v2.8h 2099 saddl2 v0.8h, v1.16h, v2.16b 2100 saddl2 v0.2d, v1.4d, v2.4s 2101 2102// CHECK-ERROR: error: invalid operand for instruction 2103// CHECK-ERROR: saddl2 v0.4s, v1.8s, v2.8h 2104// CHECK-ERROR: ^ 2105// CHECK-ERROR: error: invalid operand for instruction 2106// CHECK-ERROR: saddl2 v0.8h, v1.16h, v2.16b 2107// CHECK-ERROR: ^ 2108// CHECK-ERROR: error: invalid operand for instruction 2109// CHECK-ERROR: saddl2 v0.2d, v1.4d, v2.4s 2110// CHECK-ERROR: ^ 2111 2112 uaddl v0.8h, v1.8h, v2.8b 2113 uaddl v0.4s, v1.4s, v2.4h 2114 uaddl v0.2d, v1.2d, v2.2s 2115 2116// CHECK-ERROR: error: invalid operand for instruction 2117// CHECK-ERROR: uaddl v0.8h, v1.8h, v2.8b 2118// CHECK-ERROR: ^ 2119// CHECK-ERROR: error: invalid operand for instruction 2120// CHECK-ERROR: uaddl v0.4s, v1.4s, v2.4h 2121// CHECK-ERROR: ^ 2122// CHECK-ERROR: error: invalid operand for instruction 2123// CHECK-ERROR: uaddl v0.2d, v1.2d, v2.2s 2124// CHECK-ERROR: ^ 2125 2126 uaddl2 v0.8h, v1.16h, v2.16b 2127 uaddl2 v0.4s, v1.8s, v2.8h 2128 uaddl2 v0.2d, v1.4d, v2.4s 2129 2130// CHECK-ERROR: error: invalid operand for instruction 2131// CHECK-ERROR: uaddl2 v0.8h, v1.16h, v2.16b 2132// CHECK-ERROR: ^ 2133// CHECK-ERROR: error: invalid operand for instruction 2134// CHECK-ERROR: uaddl2 v0.4s, v1.8s, v2.8h 2135// CHECK-ERROR: ^ 2136// CHECK-ERROR: error: invalid operand for instruction 2137// CHECK-ERROR: uaddl2 v0.2d, v1.4d, v2.4s 2138// CHECK-ERROR: ^ 2139 2140 ssubl v0.8h, v1.8h, v2.8b 2141 ssubl v0.4s, v1.4s, v2.4h 2142 ssubl v0.2d, v1.2d, v2.2s 2143 2144// CHECK-ERROR: error: invalid operand for instruction 2145// CHECK-ERROR: ssubl v0.8h, v1.8h, v2.8b 2146// CHECK-ERROR: ^ 2147// CHECK-ERROR: error: invalid operand for instruction 2148// CHECK-ERROR: ssubl v0.4s, v1.4s, v2.4h 2149// CHECK-ERROR: ^ 2150// CHECK-ERROR: error: invalid operand for instruction 2151// CHECK-ERROR: ssubl v0.2d, v1.2d, v2.2s 2152// CHECK-ERROR: ^ 2153 2154 ssubl2 v0.8h, v1.16h, v2.16b 2155 ssubl2 v0.4s, v1.8s, v2.8h 2156 ssubl2 v0.2d, v1.4d, v2.4s 2157 2158// CHECK-ERROR: error: invalid operand for instruction 2159// CHECK-ERROR: ssubl2 v0.8h, v1.16h, v2.16b 2160// CHECK-ERROR: ^ 2161// CHECK-ERROR: error: invalid operand for instruction 2162// CHECK-ERROR: ssubl2 v0.4s, v1.8s, v2.8h 2163// CHECK-ERROR: ^ 2164// CHECK-ERROR: error: invalid operand for instruction 2165// CHECK-ERROR: ssubl2 v0.2d, v1.4d, v2.4s 2166// CHECK-ERROR: ^ 2167 2168 usubl v0.8h, v1.8h, v2.8b 2169 usubl v0.4s, v1.4s, v2.4h 2170 usubl v0.2d, v1.2d, v2.2s 2171 2172// CHECK-ERROR: error: invalid operand for instruction 2173// CHECK-ERROR: usubl v0.8h, v1.8h, v2.8b 2174// CHECK-ERROR: ^ 2175// CHECK-ERROR: error: invalid operand for instruction 2176// CHECK-ERROR: usubl v0.4s, v1.4s, v2.4h 2177// CHECK-ERROR: ^ 2178// CHECK-ERROR: error: invalid operand for instruction 2179// CHECK-ERROR: usubl v0.2d, v1.2d, v2.2s 2180// CHECK-ERROR: ^ 2181 2182 usubl2 v0.8h, v1.16h, v2.16b 2183 usubl2 v0.4s, v1.8s, v2.8h 2184 usubl2 v0.2d, v1.4d, v2.4s 2185 2186// CHECK-ERROR: error: invalid operand for instruction 2187// CHECK-ERROR: usubl2 v0.8h, v1.16h, v2.16b 2188// CHECK-ERROR: ^ 2189// CHECK-ERROR: error: invalid operand for instruction 2190// CHECK-ERROR: usubl2 v0.4s, v1.8s, v2.8h 2191// CHECK-ERROR: ^ 2192// CHECK-ERROR: error: invalid operand for instruction 2193// CHECK-ERROR: usubl2 v0.2d, v1.4d, v2.4s 2194// CHECK-ERROR: ^ 2195 2196 sabal v0.8h, v1.8h, v2.8b 2197 sabal v0.4s, v1.4s, v2.4h 2198 sabal v0.2d, v1.2d, v2.2s 2199 2200// CHECK-ERROR: error: invalid operand for instruction 2201// CHECK-ERROR: sabal v0.8h, v1.8h, v2.8b 2202// CHECK-ERROR: ^ 2203// CHECK-ERROR: error: invalid operand for instruction 2204// CHECK-ERROR: sabal v0.4s, v1.4s, v2.4h 2205// CHECK-ERROR: ^ 2206// CHECK-ERROR: error: invalid operand for instruction 2207// CHECK-ERROR: sabal v0.2d, v1.2d, v2.2s 2208// CHECK-ERROR: ^ 2209 2210 sabal2 v0.8h, v1.16h, v2.16b 2211 sabal2 v0.4s, v1.8s, v2.8h 2212 sabal2 v0.2d, v1.4d, v2.4s 2213 2214// CHECK-ERROR: error: invalid operand for instruction 2215// CHECK-ERROR: sabal2 v0.8h, v1.16h, v2.16b 2216// CHECK-ERROR: ^ 2217// CHECK-ERROR: error: invalid operand for instruction 2218// CHECK-ERROR: sabal2 v0.4s, v1.8s, v2.8h 2219// CHECK-ERROR: ^ 2220// CHECK-ERROR: error: invalid operand for instruction 2221// CHECK-ERROR: sabal2 v0.2d, v1.4d, v2.4s 2222// CHECK-ERROR: ^ 2223 2224 uabal v0.8h, v1.8h, v2.8b 2225 uabal v0.4s, v1.4s, v2.4h 2226 uabal v0.2d, v1.2d, v2.2s 2227 2228// CHECK-ERROR: error: invalid operand for instruction 2229// CHECK-ERROR: uabal v0.8h, v1.8h, v2.8b 2230// CHECK-ERROR: ^ 2231// CHECK-ERROR: error: invalid operand for instruction 2232// CHECK-ERROR: uabal v0.4s, v1.4s, v2.4h 2233// CHECK-ERROR: ^ 2234// CHECK-ERROR: error: invalid operand for instruction 2235// CHECK-ERROR: uabal v0.2d, v1.2d, v2.2s 2236// CHECK-ERROR: ^ 2237 2238 uabal2 v0.8h, v1.16h, v2.16b 2239 uabal2 v0.4s, v1.8s, v2.8h 2240 uabal2 v0.2d, v1.4d, v2.4s 2241 2242// CHECK-ERROR: error: invalid operand for instruction 2243// CHECK-ERROR: uabal2 v0.8h, v1.16h, v2.16b 2244// CHECK-ERROR: ^ 2245// CHECK-ERROR: error: invalid operand for instruction 2246// CHECK-ERROR: uabal2 v0.4s, v1.8s, v2.8h 2247// CHECK-ERROR: ^ 2248// CHECK-ERROR: error: invalid operand for instruction 2249// CHECK-ERROR: uabal2 v0.2d, v1.4d, v2.4s 2250// CHECK-ERROR: ^ 2251 2252 sabdl v0.8h, v1.8h, v2.8b 2253 sabdl v0.4s, v1.4s, v2.4h 2254 sabdl v0.2d, v1.2d, v2.2s 2255 2256// CHECK-ERROR: error: invalid operand for instruction 2257// CHECK-ERROR: sabdl v0.8h, v1.8h, v2.8b 2258// CHECK-ERROR: ^ 2259// CHECK-ERROR: error: invalid operand for instruction 2260// CHECK-ERROR: sabdl v0.4s, v1.4s, v2.4h 2261// CHECK-ERROR: ^ 2262// CHECK-ERROR: error: invalid operand for instruction 2263// CHECK-ERROR: sabdl v0.2d, v1.2d, v2.2s 2264// CHECK-ERROR: ^ 2265 2266 sabdl2 v0.8h, v1.16h, v2.16b 2267 sabdl2 v0.4s, v1.8s, v2.8h 2268 sabdl2 v0.2d, v1.4d, v2.4s 2269 2270// CHECK-ERROR: error: invalid operand for instruction 2271// CHECK-ERROR: sabdl2 v0.8h, v1.16h, v2.16b 2272// CHECK-ERROR: ^ 2273// CHECK-ERROR: error: invalid operand for instruction 2274// CHECK-ERROR: sabdl2 v0.4s, v1.8s, v2.8h 2275// CHECK-ERROR: ^ 2276// CHECK-ERROR: error: invalid operand for instruction 2277// CHECK-ERROR: sabdl2 v0.2d, v1.4d, v2.4s 2278// CHECK-ERROR: ^ 2279 2280 uabdl v0.8h, v1.8h, v2.8b 2281 uabdl v0.4s, v1.4s, v2.4h 2282 uabdl v0.2d, v1.2d, v2.2s 2283 2284// CHECK-ERROR: error: invalid operand for instruction 2285// CHECK-ERROR: uabdl v0.8h, v1.8h, v2.8b 2286// CHECK-ERROR: ^ 2287// CHECK-ERROR: error: invalid operand for instruction 2288// CHECK-ERROR: uabdl v0.4s, v1.4s, v2.4h 2289// CHECK-ERROR: ^ 2290// CHECK-ERROR: error: invalid operand for instruction 2291// CHECK-ERROR: uabdl v0.2d, v1.2d, v2.2s 2292// CHECK-ERROR: ^ 2293 2294 uabdl2 v0.8h, v1.16h, v2.16b 2295 uabdl2 v0.4s, v1.8s, v2.8h 2296 uabdl2 v0.2d, v1.4d, v2.4s 2297 2298// CHECK-ERROR: error: invalid operand for instruction 2299// CHECK-ERROR: uabdl2 v0.8h, v1.16h, v2.16b 2300// CHECK-ERROR: ^ 2301// CHECK-ERROR: error: invalid operand for instruction 2302// CHECK-ERROR: uabdl2 v0.4s, v1.8s, v2.8h 2303// CHECK-ERROR: ^ 2304// CHECK-ERROR: error: invalid operand for instruction 2305// CHECK-ERROR: uabdl2 v0.2d, v1.4d, v2.4s 2306// CHECK-ERROR: ^ 2307 2308 smlal v0.8h, v1.8h, v2.8b 2309 smlal v0.4s, v1.4s, v2.4h 2310 smlal v0.2d, v1.2d, v2.2s 2311 2312// CHECK-ERROR: error: invalid operand for instruction 2313// CHECK-ERROR: smlal v0.8h, v1.8h, v2.8b 2314// CHECK-ERROR: ^ 2315// CHECK-ERROR: error: invalid operand for instruction 2316// CHECK-ERROR: smlal v0.4s, v1.4s, v2.4h 2317// CHECK-ERROR: ^ 2318// CHECK-ERROR: error: invalid operand for instruction 2319// CHECK-ERROR: smlal v0.2d, v1.2d, v2.2s 2320// CHECK-ERROR: ^ 2321 2322 smlal2 v0.8h, v1.16h, v2.16b 2323 smlal2 v0.4s, v1.8s, v2.8h 2324 smlal2 v0.2d, v1.4d, v2.4s 2325 2326// CHECK-ERROR: error: invalid operand for instruction 2327// CHECK-ERROR: smlal2 v0.8h, v1.16h, v2.16b 2328// CHECK-ERROR: ^ 2329// CHECK-ERROR: error: invalid operand for instruction 2330// CHECK-ERROR: smlal2 v0.4s, v1.8s, v2.8h 2331// CHECK-ERROR: ^ 2332// CHECK-ERROR: error: invalid operand for instruction 2333// CHECK-ERROR: smlal2 v0.2d, v1.4d, v2.4s 2334// CHECK-ERROR: ^ 2335 2336 umlal v0.8h, v1.8h, v2.8b 2337 umlal v0.4s, v1.4s, v2.4h 2338 umlal v0.2d, v1.2d, v2.2s 2339 2340// CHECK-ERROR: error: invalid operand for instruction 2341// CHECK-ERROR: umlal v0.8h, v1.8h, v2.8b 2342// CHECK-ERROR: ^ 2343// CHECK-ERROR: error: invalid operand for instruction 2344// CHECK-ERROR: umlal v0.4s, v1.4s, v2.4h 2345// CHECK-ERROR: ^ 2346// CHECK-ERROR: error: invalid operand for instruction 2347// CHECK-ERROR: umlal v0.2d, v1.2d, v2.2s 2348// CHECK-ERROR: ^ 2349 2350 umlal2 v0.8h, v1.16h, v2.16b 2351 umlal2 v0.4s, v1.8s, v2.8h 2352 umlal2 v0.2d, v1.4d, v2.4s 2353 2354// CHECK-ERROR: error: invalid operand for instruction 2355// CHECK-ERROR: umlal2 v0.8h, v1.16h, v2.16b 2356// CHECK-ERROR: ^ 2357// CHECK-ERROR: error: invalid operand for instruction 2358// CHECK-ERROR: umlal2 v0.4s, v1.8s, v2.8h 2359// CHECK-ERROR: ^ 2360// CHECK-ERROR: error: invalid operand for instruction 2361// CHECK-ERROR: umlal2 v0.2d, v1.4d, v2.4s 2362// CHECK-ERROR: ^ 2363 2364 smlsl v0.8h, v1.8h, v2.8b 2365 smlsl v0.4s, v1.4s, v2.4h 2366 smlsl v0.2d, v1.2d, v2.2s 2367 2368// CHECK-ERROR: error: invalid operand for instruction 2369// CHECK-ERROR: smlsl v0.8h, v1.8h, v2.8b 2370// CHECK-ERROR: ^ 2371// CHECK-ERROR: error: invalid operand for instruction 2372// CHECK-ERROR: smlsl v0.4s, v1.4s, v2.4h 2373// CHECK-ERROR: ^ 2374// CHECK-ERROR: error: invalid operand for instruction 2375// CHECK-ERROR: smlsl v0.2d, v1.2d, v2.2s 2376// CHECK-ERROR: ^ 2377 2378 smlsl2 v0.8h, v1.16h, v2.16b 2379 smlsl2 v0.4s, v1.8s, v2.8h 2380 smlsl2 v0.2d, v1.4d, v2.4s 2381 2382// CHECK-ERROR: error: invalid operand for instruction 2383// CHECK-ERROR: smlsl2 v0.8h, v1.16h, v2.16b 2384// CHECK-ERROR: ^ 2385// CHECK-ERROR: error: invalid operand for instruction 2386// CHECK-ERROR: smlsl2 v0.4s, v1.8s, v2.8h 2387// CHECK-ERROR: ^ 2388// CHECK-ERROR: error: invalid operand for instruction 2389// CHECK-ERROR: smlsl2 v0.2d, v1.4d, v2.4s 2390// CHECK-ERROR: ^ 2391 2392 umlsl v0.8h, v1.8h, v2.8b 2393 umlsl v0.4s, v1.4s, v2.4h 2394 umlsl v0.2d, v1.2d, v2.2s 2395 2396// CHECK-ERROR: error: invalid operand for instruction 2397// CHECK-ERROR: umlsl v0.8h, v1.8h, v2.8b 2398// CHECK-ERROR: ^ 2399// CHECK-ERROR: error: invalid operand for instruction 2400// CHECK-ERROR: umlsl v0.4s, v1.4s, v2.4h 2401// CHECK-ERROR: ^ 2402// CHECK-ERROR: error: invalid operand for instruction 2403// CHECK-ERROR: umlsl v0.2d, v1.2d, v2.2s 2404// CHECK-ERROR: ^ 2405 2406 umlsl2 v0.8h, v1.16h, v2.16b 2407 umlsl2 v0.4s, v1.8s, v2.8h 2408 umlsl2 v0.2d, v1.4d, v2.4s 2409 2410// CHECK-ERROR: error: invalid operand for instruction 2411// CHECK-ERROR: umlsl2 v0.8h, v1.16h, v2.16b 2412// CHECK-ERROR: ^ 2413// CHECK-ERROR: error: invalid operand for instruction 2414// CHECK-ERROR: umlsl2 v0.4s, v1.8s, v2.8h 2415// CHECK-ERROR: ^ 2416// CHECK-ERROR: error: invalid operand for instruction 2417// CHECK-ERROR: umlsl2 v0.2d, v1.4d, v2.4s 2418// CHECK-ERROR: ^ 2419 2420 smull v0.8h, v1.8h, v2.8b 2421 smull v0.4s, v1.4s, v2.4h 2422 smull v0.2d, v1.2d, v2.2s 2423 2424// CHECK-ERROR: error: invalid operand for instruction 2425// CHECK-ERROR: smull v0.8h, v1.8h, v2.8b 2426// CHECK-ERROR: ^ 2427// CHECK-ERROR: error: invalid operand for instruction 2428// CHECK-ERROR: smull v0.4s, v1.4s, v2.4h 2429// CHECK-ERROR: ^ 2430// CHECK-ERROR: error: invalid operand for instruction 2431// CHECK-ERROR: smull v0.2d, v1.2d, v2.2s 2432// CHECK-ERROR: ^ 2433 2434 smull2 v0.8h, v1.16h, v2.16b 2435 smull2 v0.4s, v1.8s, v2.8h 2436 smull2 v0.2d, v1.4d, v2.4s 2437 2438// CHECK-ERROR: error: invalid operand for instruction 2439// CHECK-ERROR: smull2 v0.8h, v1.16h, v2.16b 2440// CHECK-ERROR: ^ 2441// CHECK-ERROR: error: invalid operand for instruction 2442// CHECK-ERROR: smull2 v0.4s, v1.8s, v2.8h 2443// CHECK-ERROR: ^ 2444// CHECK-ERROR: error: invalid operand for instruction 2445// CHECK-ERROR: smull2 v0.2d, v1.4d, v2.4s 2446// CHECK-ERROR: ^ 2447 2448 umull v0.8h, v1.8h, v2.8b 2449 umull v0.4s, v1.4s, v2.4h 2450 umull v0.2d, v1.2d, v2.2s 2451 2452// CHECK-ERROR: error: invalid operand for instruction 2453// CHECK-ERROR: umull v0.8h, v1.8h, v2.8b 2454// CHECK-ERROR: ^ 2455// CHECK-ERROR: error: invalid operand for instruction 2456// CHECK-ERROR: umull v0.4s, v1.4s, v2.4h 2457// CHECK-ERROR: ^ 2458// CHECK-ERROR: error: invalid operand for instruction 2459// CHECK-ERROR: umull v0.2d, v1.2d, v2.2s 2460// CHECK-ERROR: ^ 2461 2462 umull2 v0.8h, v1.16h, v2.16b 2463 umull2 v0.4s, v1.8s, v2.8h 2464 umull2 v0.2d, v1.4d, v2.4s 2465 2466// CHECK-ERROR: error: invalid operand for instruction 2467// CHECK-ERROR: umull2 v0.8h, v1.16h, v2.16b 2468// CHECK-ERROR: ^ 2469// CHECK-ERROR: error: invalid operand for instruction 2470// CHECK-ERROR: umull2 v0.4s, v1.8s, v2.8h 2471// CHECK-ERROR: ^ 2472// CHECK-ERROR: error: invalid operand for instruction 2473// CHECK-ERROR: umull2 v0.2d, v1.4d, v2.4s 2474// CHECK-ERROR: ^ 2475 2476//------------------------------------------------------------------------------ 2477// Long - Variant 2 2478//------------------------------------------------------------------------------ 2479 2480 sqdmlal v0.4s, v1.4s, v2.4h 2481 sqdmlal v0.2d, v1.2d, v2.2s 2482 2483// CHECK-ERROR: error: invalid operand for instruction 2484// CHECK-ERROR: sqdmlal v0.4s, v1.4s, v2.4h 2485// CHECK-ERROR: ^ 2486// CHECK-ERROR: error: invalid operand for instruction 2487// CHECK-ERROR: sqdmlal v0.2d, v1.2d, v2.2s 2488// CHECK-ERROR: ^ 2489 2490 sqdmlal2 v0.4s, v1.8s, v2.8h 2491 sqdmlal2 v0.2d, v1.4d, v2.4s 2492 2493// CHECK-ERROR: error: invalid operand for instruction 2494// CHECK-ERROR: sqdmlal2 v0.4s, v1.8s, v2.8h 2495// CHECK-ERROR: ^ 2496// CHECK-ERROR: error: invalid operand for instruction 2497// CHECK-ERROR: sqdmlal2 v0.2d, v1.4d, v2.4s 2498// CHECK-ERROR: ^ 2499 2500 // Mismatched vector types 2501 sqdmlal v0.8h, v1.8b, v2.8b 2502 sqdmlal2 v0.8h, v1.16b, v2.16b 2503 2504// CHECK-ERROR: error: invalid operand for instruction 2505// CHECK-ERROR: sqdmlal v0.8h, v1.8b, v2.8b 2506// CHECK-ERROR: ^ 2507// CHECK-ERROR: error: invalid operand for instruction 2508// CHECK-ERROR: sqdmlal2 v0.8h, v1.16b, v2.16b 2509// CHECK-ERROR: ^ 2510 2511 sqdmlsl v0.4s, v1.4s, v2.4h 2512 sqdmlsl v0.2d, v1.2d, v2.2s 2513 2514// CHECK-ERROR: error: invalid operand for instruction 2515// CHECK-ERROR: sqdmlsl v0.4s, v1.4s, v2.4h 2516// CHECK-ERROR: ^ 2517// CHECK-ERROR: error: invalid operand for instruction 2518// CHECK-ERROR: sqdmlsl v0.2d, v1.2d, v2.2s 2519// CHECK-ERROR: ^ 2520 2521 sqdmlsl2 v0.4s, v1.8s, v2.8h 2522 sqdmlsl2 v0.2d, v1.4d, v2.4s 2523 2524// CHECK-ERROR: error: invalid operand for instruction 2525// CHECK-ERROR: sqdmlsl2 v0.4s, v1.8s, v2.8h 2526// CHECK-ERROR: ^ 2527// CHECK-ERROR: error: invalid operand for instruction 2528// CHECK-ERROR: sqdmlsl2 v0.2d, v1.4d, v2.4s 2529// CHECK-ERROR: ^ 2530 2531 // Mismatched vector types 2532 sqdmlsl v0.8h, v1.8b, v2.8b 2533 sqdmlsl2 v0.8h, v1.16b, v2.16b 2534 2535// CHECK-ERROR: error: invalid operand for instruction 2536// CHECK-ERROR: sqdmlsl v0.8h, v1.8b, v2.8b 2537// CHECK-ERROR: ^ 2538// CHECK-ERROR: error: invalid operand for instruction 2539// CHECK-ERROR: sqdmlsl2 v0.8h, v1.16b, v2.16b 2540// CHECK-ERROR: ^ 2541 2542 2543 sqdmull v0.4s, v1.4s, v2.4h 2544 sqdmull v0.2d, v1.2d, v2.2s 2545 2546// CHECK-ERROR: error: invalid operand for instruction 2547// CHECK-ERROR: sqdmull v0.4s, v1.4s, v2.4h 2548// CHECK-ERROR: ^ 2549// CHECK-ERROR: error: invalid operand for instruction 2550// CHECK-ERROR: sqdmull v0.2d, v1.2d, v2.2s 2551// CHECK-ERROR: ^ 2552 2553 sqdmull2 v0.4s, v1.8s, v2.8h 2554 sqdmull2 v0.2d, v1.4d, v2.4s 2555 2556// CHECK-ERROR: error: invalid operand for instruction 2557// CHECK-ERROR: sqdmull2 v0.4s, v1.8s, v2.8h 2558// CHECK-ERROR: ^ 2559// CHECK-ERROR: error: invalid operand for instruction 2560// CHECK-ERROR: sqdmull2 v0.2d, v1.4d, v2.4s 2561// CHECK-ERROR: ^ 2562 2563 // Mismatched vector types 2564 sqdmull v0.8h, v1.8b, v2.8b 2565 sqdmull2 v0.8h, v1.16b, v2.16b 2566 2567// CHECK-ERROR: error: invalid operand for instruction 2568// CHECK-ERROR: sqdmull v0.8h, v1.8b, v2.8b 2569// CHECK-ERROR: ^ 2570// CHECK-ERROR: error: invalid operand for instruction 2571// CHECK-ERROR: sqdmull2 v0.8h, v1.16b, v2.16b 2572// CHECK-ERROR: ^ 2573 2574 2575//------------------------------------------------------------------------------ 2576// Long - Variant 3 2577//------------------------------------------------------------------------------ 2578 2579 pmull v0.8h, v1.8h, v2.8b 2580 2581// CHECK-ERROR: error: invalid operand for instruction 2582// CHECK-ERROR: pmull v0.8h, v1.8h, v2.8b 2583// CHECK-ERROR: ^ 2584 2585 // Mismatched vector types 2586 pmull v0.4s, v1.4h, v2.4h 2587 pmull v0.2d, v1.2s, v2.2s 2588 2589// CHECK-ERROR: error: invalid operand for instruction 2590// CHECK-ERROR: pmull v0.4s, v1.4h, v2.4h 2591// CHECK-ERROR: ^ 2592// CHECK-ERROR: error: invalid operand for instruction 2593// CHECK-ERROR: pmull v0.2d, v1.2s, v2.2s 2594// CHECK-ERROR: ^ 2595 2596 2597 pmull2 v0.8h, v1.16h, v2.16b 2598 2599// CHECK-ERROR: error: invalid operand for instruction 2600// CHECK-ERROR: pmull2 v0.8h, v1.16h, v2.16b 2601// CHECK-ERROR: ^ 2602 2603 // Mismatched vector types 2604 pmull2 v0.4s, v1.8h v2.8h 2605 pmull2 v0.2d, v1.4s, v2.4s 2606 2607// CHECK-ERROR: error: expected comma before next operand 2608// CHECK-ERROR: pmull2 v0.4s, v1.8h v2.8h 2609// CHECK-ERROR: ^ 2610// CHECK-ERROR: error: invalid operand for instruction 2611// CHECK-ERROR: pmull2 v0.2d, v1.4s, v2.4s 2612// CHECK-ERROR: ^ 2613 2614//------------------------------------------------------------------------------ 2615// Widen 2616//------------------------------------------------------------------------------ 2617 2618 saddw v0.8h, v1.8h, v2.8h 2619 saddw v0.4s, v1.4s, v2.4s 2620 saddw v0.2d, v1.2d, v2.2d 2621 2622// CHECK-ERROR: error: invalid operand for instruction 2623// CHECK-ERROR: saddw v0.8h, v1.8h, v2.8h 2624// CHECK-ERROR: ^ 2625// CHECK-ERROR: error: invalid operand for instruction 2626// CHECK-ERROR: saddw v0.4s, v1.4s, v2.4s 2627// CHECK-ERROR: ^ 2628// CHECK-ERROR: error: invalid operand for instruction 2629// CHECK-ERROR: saddw v0.2d, v1.2d, v2.2d 2630// CHECK-ERROR: ^ 2631 2632 saddw2 v0.8h, v1.8h, v2.16h 2633 saddw2 v0.4s, v1.4s, v2.8s 2634 saddw2 v0.2d, v1.2d, v2.4d 2635 2636// CHECK-ERROR: error: invalid operand for instruction 2637// CHECK-ERROR: saddw2 v0.8h, v1.8h, v2.16h 2638// CHECK-ERROR: ^ 2639// CHECK-ERROR: error: invalid operand for instruction 2640// CHECK-ERROR: saddw2 v0.4s, v1.4s, v2.8s 2641// CHECK-ERROR: ^ 2642// CHECK-ERROR: error: invalid operand for instruction 2643// CHECK-ERROR: saddw2 v0.2d, v1.2d, v2.4d 2644// CHECK-ERROR: ^ 2645 2646 uaddw v0.8h, v1.8h, v2.8h 2647 uaddw v0.4s, v1.4s, v2.4s 2648 uaddw v0.2d, v1.2d, v2.2d 2649 2650// CHECK-ERROR: error: invalid operand for instruction 2651// CHECK-ERROR: uaddw v0.8h, v1.8h, v2.8h 2652// CHECK-ERROR: ^ 2653// CHECK-ERROR: error: invalid operand for instruction 2654// CHECK-ERROR: uaddw v0.4s, v1.4s, v2.4s 2655// CHECK-ERROR: ^ 2656// CHECK-ERROR: error: invalid operand for instruction 2657// CHECK-ERROR: uaddw v0.2d, v1.2d, v2.2d 2658// CHECK-ERROR: ^ 2659 2660 uaddw2 v0.8h, v1.8h, v2.16h 2661 uaddw2 v0.4s, v1.4s, v2.8s 2662 uaddw2 v0.2d, v1.2d, v2.4d 2663 2664// CHECK-ERROR: error: invalid operand for instruction 2665// CHECK-ERROR: uaddw2 v0.8h, v1.8h, v2.16h 2666// CHECK-ERROR: ^ 2667// CHECK-ERROR: error: invalid operand for instruction 2668// CHECK-ERROR: uaddw2 v0.4s, v1.4s, v2.8s 2669// CHECK-ERROR: ^ 2670// CHECK-ERROR: error: invalid operand for instruction 2671// CHECK-ERROR: uaddw2 v0.2d, v1.2d, v2.4d 2672// CHECK-ERROR: ^ 2673 2674 ssubw v0.8h, v1.8h, v2.8h 2675 ssubw v0.4s, v1.4s, v2.4s 2676 ssubw v0.2d, v1.2d, v2.2d 2677 2678// CHECK-ERROR: error: invalid operand for instruction 2679// CHECK-ERROR: ssubw v0.8h, v1.8h, v2.8h 2680// CHECK-ERROR: ^ 2681// CHECK-ERROR: error: invalid operand for instruction 2682// CHECK-ERROR: ssubw v0.4s, v1.4s, v2.4s 2683// CHECK-ERROR: ^ 2684// CHECK-ERROR: error: invalid operand for instruction 2685// CHECK-ERROR: ssubw v0.2d, v1.2d, v2.2d 2686// CHECK-ERROR: ^ 2687 2688 ssubw2 v0.8h, v1.8h, v2.16h 2689 ssubw2 v0.4s, v1.4s, v2.8s 2690 ssubw2 v0.2d, v1.2d, v2.4d 2691 2692// CHECK-ERROR: error: invalid operand for instruction 2693// CHECK-ERROR: ssubw2 v0.8h, v1.8h, v2.16h 2694// CHECK-ERROR: ^ 2695// CHECK-ERROR: error: invalid operand for instruction 2696// CHECK-ERROR: ssubw2 v0.4s, v1.4s, v2.8s 2697// CHECK-ERROR: ^ 2698// CHECK-ERROR: error: invalid operand for instruction 2699// CHECK-ERROR: ssubw2 v0.2d, v1.2d, v2.4d 2700// CHECK-ERROR: ^ 2701 2702 usubw v0.8h, v1.8h, v2.8h 2703 usubw v0.4s, v1.4s, v2.4s 2704 usubw v0.2d, v1.2d, v2.2d 2705 2706// CHECK-ERROR: error: invalid operand for instruction 2707// CHECK-ERROR: usubw v0.8h, v1.8h, v2.8h 2708// CHECK-ERROR: ^ 2709// CHECK-ERROR: error: invalid operand for instruction 2710// CHECK-ERROR: usubw v0.4s, v1.4s, v2.4s 2711// CHECK-ERROR: ^ 2712// CHECK-ERROR: error: invalid operand for instruction 2713// CHECK-ERROR: usubw v0.2d, v1.2d, v2.2d 2714// CHECK-ERROR: ^ 2715 2716 usubw2 v0.8h, v1.8h, v2.16h 2717 usubw2 v0.4s, v1.4s, v2.8s 2718 usubw2 v0.2d, v1.2d, v2.4d 2719 2720// CHECK-ERROR: error: invalid operand for instruction 2721// CHECK-ERROR: usubw2 v0.8h, v1.8h, v2.16h 2722// CHECK-ERROR: ^ 2723// CHECK-ERROR: error: invalid operand for instruction 2724// CHECK-ERROR: usubw2 v0.4s, v1.4s, v2.8s 2725// CHECK-ERROR: ^ 2726// CHECK-ERROR: error: invalid operand for instruction 2727// CHECK-ERROR: usubw2 v0.2d, v1.2d, v2.4d 2728// CHECK-ERROR: ^ 2729 2730//------------------------------------------------------------------------------ 2731// Narrow 2732//------------------------------------------------------------------------------ 2733 2734 addhn v0.8b, v1.8h, v2.8d 2735 addhn v0.4h, v1.4s, v2.4h 2736 addhn v0.2s, v1.2d, v2.2s 2737 2738// CHECK-ERROR: error: invalid operand for instruction 2739// CHECK-ERROR: addhn v0.8b, v1.8h, v2.8d 2740// CHECK-ERROR: ^ 2741// CHECK-ERROR: error: invalid operand for instruction 2742// CHECK-ERROR: addhn v0.4h, v1.4s, v2.4h 2743// CHECK-ERROR: ^ 2744// CHECK-ERROR: error: invalid operand for instruction 2745// CHECK-ERROR: addhn v0.2s, v1.2d, v2.2s 2746// CHECK-ERROR: ^ 2747 2748 addhn2 v0.16b, v1.8h, v2.8b 2749 addhn2 v0.8h, v1.4s, v2.4h 2750 addhn2 v0.4s, v1.2d, v2.2s 2751 2752// CHECK-ERROR: error: invalid operand for instruction 2753// CHECK-ERROR: addhn2 v0.16b, v1.8h, v2.8b 2754// CHECK-ERROR: ^ 2755// CHECK-ERROR: error: invalid operand for instruction 2756// CHECK-ERROR: addhn2 v0.8h, v1.4s, v2.4h 2757// CHECK-ERROR: ^ 2758// CHECK-ERROR: error: invalid operand for instruction 2759// CHECK-ERROR: addhn2 v0.4s, v1.2d, v2.2s 2760// CHECK-ERROR: ^ 2761 2762 raddhn v0.8b, v1.8h, v2.8b 2763 raddhn v0.4h, v1.4s, v2.4h 2764 raddhn v0.2s, v1.2d, v2.2s 2765 2766// CHECK-ERROR: error: invalid operand for instruction 2767// CHECK-ERROR: raddhn v0.8b, v1.8h, v2.8b 2768// CHECK-ERROR: ^ 2769// CHECK-ERROR: error: invalid operand for instruction 2770// CHECK-ERROR: raddhn v0.4h, v1.4s, v2.4h 2771// CHECK-ERROR: ^ 2772// CHECK-ERROR: error: invalid operand for instruction 2773// CHECK-ERROR: raddhn v0.2s, v1.2d, v2.2s 2774// CHECK-ERROR: ^ 2775 2776 raddhn2 v0.16b, v1.8h, v2.8b 2777 raddhn2 v0.8h, v1.4s, v2.4h 2778 raddhn2 v0.4s, v1.2d, v2.2s 2779 2780// CHECK-ERROR: error: invalid operand for instruction 2781// CHECK-ERROR: raddhn2 v0.16b, v1.8h, v2.8b 2782// CHECK-ERROR: ^ 2783// CHECK-ERROR: error: invalid operand for instruction 2784// CHECK-ERROR: raddhn2 v0.8h, v1.4s, v2.4h 2785// CHECK-ERROR: ^ 2786// CHECK-ERROR: error: invalid operand for instruction 2787// CHECK-ERROR: raddhn2 v0.4s, v1.2d, v2.2s 2788// CHECK-ERROR: ^ 2789 2790 rsubhn v0.8b, v1.8h, v2.8b 2791 rsubhn v0.4h, v1.4s, v2.4h 2792 rsubhn v0.2s, v1.2d, v2.2s 2793 2794// CHECK-ERROR: error: invalid operand for instruction 2795// CHECK-ERROR: rsubhn v0.8b, v1.8h, v2.8b 2796// CHECK-ERROR: ^ 2797// CHECK-ERROR: error: invalid operand for instruction 2798// CHECK-ERROR: rsubhn v0.4h, v1.4s, v2.4h 2799// CHECK-ERROR: ^ 2800// CHECK-ERROR: error: invalid operand for instruction 2801// CHECK-ERROR: rsubhn v0.2s, v1.2d, v2.2s 2802// CHECK-ERROR: ^ 2803 2804 rsubhn2 v0.16b, v1.8h, v2.8b 2805 rsubhn2 v0.8h, v1.4s, v2.4h 2806 rsubhn2 v0.4s, v1.2d, v2.2s 2807 2808// CHECK-ERROR: error: invalid operand for instruction 2809// CHECK-ERROR: rsubhn2 v0.16b, v1.8h, v2.8b 2810// CHECK-ERROR: ^ 2811// CHECK-ERROR: error: invalid operand for instruction 2812// CHECK-ERROR: rsubhn2 v0.8h, v1.4s, v2.4h 2813// CHECK-ERROR: ^ 2814// CHECK-ERROR: error: invalid operand for instruction 2815// CHECK-ERROR: rsubhn2 v0.4s, v1.2d, v2.2s 2816// CHECK-ERROR: ^ 2817 2818//---------------------------------------------------------------------- 2819// Scalar Reduce Add Pairwise (Integer) 2820//---------------------------------------------------------------------- 2821 // invalid vector types 2822 addp s0, d1.2d 2823 addp d0, d1.2s 2824 2825// CHECK-ERROR: error: invalid operand for instruction 2826// CHECK-ERROR: addp s0, d1.2d 2827// CHECK-ERROR: ^ 2828// CHECK-ERROR: error: invalid operand for instruction 2829// CHECK-ERROR: addp d0, d1.2s 2830// CHECK-ERROR: ^ 2831 2832//---------------------------------------------------------------------- 2833// Scalar Reduce Add Pairwise (Floating Point) 2834//---------------------------------------------------------------------- 2835 // invalid vector types 2836 faddp s0, d1.2d 2837 faddp d0, d1.2s 2838 2839// CHECK-ERROR: error: invalid operand for instruction 2840// CHECK-ERROR: faddp s0, d1.2d 2841// CHECK-ERROR: ^ 2842// CHECK-ERROR: error: invalid operand for instruction 2843// CHECK-ERROR: faddp d0, d1.2s 2844// CHECK-ERROR: ^ 2845 2846//---------------------------------------------------------------------- 2847// Scalar Reduce Maximum Pairwise (Floating Point) 2848//---------------------------------------------------------------------- 2849 // mismatched and invalid vector types 2850 fmaxp s0, v1.2d 2851 fmaxp d31, v2.2s 2852 fmaxp h3, v2.2s 2853 2854// CHECK-ERROR: error: invalid operand for instruction 2855// CHECK-ERROR: fmaxp s0, v1.2d 2856// CHECK-ERROR: ^ 2857// CHECK-ERROR: error: invalid operand for instruction 2858// CHECK-ERROR: fmaxp d31, v2.2s 2859// CHECK-ERROR: ^ 2860// CHECK-ERROR: error: invalid operand for instruction 2861// CHECK-ERROR: fmaxp h3, v2.2s 2862// CHECK-ERROR: ^ 2863 2864 2865//---------------------------------------------------------------------- 2866// Scalar Reduce Minimum Pairwise (Floating Point) 2867//---------------------------------------------------------------------- 2868 // mismatched and invalid vector types 2869 fminp s0, v1.4h 2870 fminp d31, v2.8h 2871 fminp b3, v2.2s 2872 2873// CHECK-ERROR: error: invalid operand for instruction 2874// CHECK-ERROR: fminp s0, v1.4h 2875// CHECK-ERROR: ^ 2876// CHECK-ERROR: error: invalid operand for instruction 2877// CHECK-ERROR: fminp d31, v2.8h 2878// CHECK-ERROR: ^ 2879// CHECK-ERROR: error: invalid operand for instruction 2880// CHECK-ERROR: fminp b3, v2.2s 2881// CHECK-ERROR: ^ 2882 2883 2884//---------------------------------------------------------------------- 2885// Scalar Reduce maxNum Pairwise (Floating Point) 2886//---------------------------------------------------------------------- 2887 // mismatched and invalid vector types 2888 fmaxnmp s0, v1.8b 2889 fmaxnmp d31, v2.16b 2890 fmaxnmp v1.2s, v2.2s 2891 2892// CHECK-ERROR: error: invalid operand for instruction 2893// CHECK-ERROR: fmaxnmp s0, v1.8b 2894// CHECK-ERROR: ^ 2895// CHECK-ERROR: error: invalid operand for instruction 2896// CHECK-ERROR: fmaxnmp d31, v2.16b 2897// CHECK-ERROR: ^ 2898// CHECK-ERROR: error: too few operands for instruction 2899// CHECK-ERROR: fmaxnmp v1.2s, v2.2s 2900// CHECK-ERROR: ^ 2901 2902//---------------------------------------------------------------------- 2903// Scalar Reduce minNum Pairwise (Floating Point) 2904//---------------------------------------------------------------------- 2905 // mismatched and invalid vector types 2906 fminnmp s0, v1.2d 2907 fminnmp d31, v2.4s 2908 fminnmp v1.4s, v2.2d 2909 2910// CHECK-ERROR: error: invalid operand for instruction 2911// CHECK-ERROR: fminnmp s0, v1.2d 2912// CHECK-ERROR: ^ 2913// CHECK-ERROR: error: invalid operand for instruction 2914// CHECK-ERROR: fminnmp d31, v2.4s 2915// CHECK-ERROR: ^ 2916// CHECK-ERROR: error: invalid operand for instruction 2917// CHECK-ERROR: fminnmp v1.4s, v2.2d 2918// CHECK-ERROR: ^ 2919 2920 mla v0.2d, v1.2d, v16.d[1] 2921 mla v0.2s, v1.2s, v2.s[4] 2922 mla v0.4s, v1.4s, v2.s[4] 2923 mla v0.2h, v1.2h, v2.h[1] 2924 mla v0.4h, v1.4h, v2.h[8] 2925 mla v0.8h, v1.8h, v2.h[8] 2926 mla v0.4h, v1.4h, v16.h[2] 2927 mla v0.8h, v1.8h, v16.h[2] 2928 2929// CHECK-ERROR: error: invalid operand for instruction 2930// CHECK-ERROR: mla v0.2d, v1.2d, v16.d[1] 2931// CHECK-ERROR: ^ 2932// CHECK-ERROR: error: lane number incompatible with layout 2933// CHECK-ERROR: mla v0.2s, v1.2s, v2.s[4] 2934// CHECK-ERROR: ^ 2935// CHECK-ERROR: error: lane number incompatible with layout 2936// CHECK-ERROR: mla v0.4s, v1.4s, v2.s[4] 2937// CHECK-ERROR: ^ 2938// CHECK-ERROR: error: invalid operand for instruction 2939// CHECK-ERROR: mla v0.2h, v1.2h, v2.h[1] 2940// CHECK-ERROR: ^ 2941// CHECK-ERROR: error: lane number incompatible with layout 2942// CHECK-ERROR: mla v0.4h, v1.4h, v2.h[8] 2943// CHECK-ERROR: ^ 2944// CHECK-ERROR: error: lane number incompatible with layout 2945// CHECK-ERROR: mla v0.8h, v1.8h, v2.h[8] 2946// CHECK-ERROR: ^ 2947// CHECK-ERROR: error: invalid operand for instruction 2948// CHECK-ERROR: mla v0.4h, v1.4h, v16.h[2] 2949// CHECK-ERROR: ^ 2950// CHECK-ERROR: error: invalid operand for instruction 2951// CHECK-ERROR: mla v0.8h, v1.8h, v16.h[2] 2952// CHECK-ERROR: ^ 2953 2954 mls v0.2d, v1.2d, v16.d[1] 2955 mls v0.2s, v1.2s, v2.s[4] 2956 mls v0.4s, v1.4s, v2.s[4] 2957 mls v0.2h, v1.2h, v2.h[1] 2958 mls v0.4h, v1.4h, v2.h[8] 2959 mls v0.8h, v1.8h, v2.h[8] 2960 mls v0.4h, v1.4h, v16.h[2] 2961 mls v0.8h, v1.8h, v16.h[2] 2962 2963// CHECK-ERROR: error: invalid operand for instruction 2964// CHECK-ERROR: mls v0.2d, v1.2d, v16.d[1] 2965// CHECK-ERROR: ^ 2966// CHECK-ERROR: error: lane number incompatible with layout 2967// CHECK-ERROR: mls v0.2s, v1.2s, v2.s[4] 2968// CHECK-ERROR: ^ 2969// CHECK-ERROR: error: lane number incompatible with layout 2970// CHECK-ERROR: mls v0.4s, v1.4s, v2.s[4] 2971// CHECK-ERROR: ^ 2972// CHECK-ERROR: error: invalid operand for instruction 2973// CHECK-ERROR: mls v0.2h, v1.2h, v2.h[1] 2974// CHECK-ERROR: ^ 2975// CHECK-ERROR: error: lane number incompatible with layout 2976// CHECK-ERROR: mls v0.4h, v1.4h, v2.h[8] 2977// CHECK-ERROR: ^ 2978// CHECK-ERROR: error: lane number incompatible with layout 2979// CHECK-ERROR: mls v0.8h, v1.8h, v2.h[8] 2980// CHECK-ERROR: ^ 2981// CHECK-ERROR: error: invalid operand for instruction 2982// CHECK-ERROR: mls v0.4h, v1.4h, v16.h[2] 2983// CHECK-ERROR: ^ 2984// CHECK-ERROR: error: invalid operand for instruction 2985// CHECK-ERROR: mls v0.8h, v1.8h, v16.h[2] 2986// CHECK-ERROR: ^ 2987 2988 fmla v0.4h, v1.4h, v2.h[2] 2989 fmla v0.8h, v1.8h, v2.h[2] 2990 fmla v0.2s, v1.2s, v2.s[4] 2991 fmla v0.2s, v1.2s, v22.s[4] 2992 fmla v3.4s, v8.4s, v2.s[4] 2993 fmla v3.4s, v8.4s, v22.s[4] 2994 fmla v0.2d, v1.2d, v2.d[2] 2995 fmla v0.2d, v1.2d, v22.d[2] 2996 2997// CHECK-ERROR: error: invalid operand for instruction 2998// CHECK-ERROR: fmla v0.4h, v1.4h, v2.h[2] 2999// CHECK-ERROR: ^ 3000// CHECK-ERROR: error: invalid operand for instruction 3001// CHECK-ERROR: fmla v0.8h, v1.8h, v2.h[2] 3002// CHECK-ERROR: ^ 3003// CHECK-ERROR: error: lane number incompatible with layout 3004// CHECK-ERROR: fmla v0.2s, v1.2s, v2.s[4] 3005// CHECK-ERROR: ^ 3006// CHECK-ERROR: error: lane number incompatible with layout 3007// CHECK-ERROR: fmla v0.2s, v1.2s, v22.s[4] 3008// CHECK-ERROR: ^ 3009// CHECK-ERROR: error: lane number incompatible with layout 3010// CHECK-ERROR: fmla v3.4s, v8.4s, v2.s[4] 3011// CHECK-ERROR: ^ 3012// CHECK-ERROR: error: lane number incompatible with layout 3013// CHECK-ERROR: fmla v3.4s, v8.4s, v22.s[4] 3014// CHECK-ERROR: ^ 3015// CHECK-ERROR: error: lane number incompatible with layout 3016// CHECK-ERROR: fmla v0.2d, v1.2d, v2.d[2] 3017// CHECK-ERROR: ^ 3018// CHECK-ERROR: error: lane number incompatible with layout 3019// CHECK-ERROR: fmla v0.2d, v1.2d, v22.d[2] 3020// CHECK-ERROR: ^ 3021 3022 fmls v0.4h, v1.4h, v2.h[2] 3023 fmls v0.8h, v1.8h, v2.h[2] 3024 fmls v0.2s, v1.2s, v2.s[4] 3025 fmls v0.2s, v1.2s, v22.s[4] 3026 fmls v3.4s, v8.4s, v2.s[4] 3027 fmls v3.4s, v8.4s, v22.s[4] 3028 fmls v0.2d, v1.2d, v2.d[2] 3029 fmls v0.2d, v1.2d, v22.d[2] 3030 3031// CHECK-ERROR: error: invalid operand for instruction 3032// CHECK-ERROR: fmls v0.4h, v1.4h, v2.h[2] 3033// CHECK-ERROR: ^ 3034// CHECK-ERROR: error: invalid operand for instruction 3035// CHECK-ERROR: fmls v0.8h, v1.8h, v2.h[2] 3036// CHECK-ERROR: ^ 3037// CHECK-ERROR: error: lane number incompatible with layout 3038// CHECK-ERROR: fmls v0.2s, v1.2s, v2.s[4] 3039// CHECK-ERROR: ^ 3040// CHECK-ERROR: error: lane number incompatible with layout 3041// CHECK-ERROR: fmls v0.2s, v1.2s, v22.s[4] 3042// CHECK-ERROR: ^ 3043// CHECK-ERROR: error: lane number incompatible with layout 3044// CHECK-ERROR: fmls v3.4s, v8.4s, v2.s[4] 3045// CHECK-ERROR: ^ 3046// CHECK-ERROR: error: lane number incompatible with layout 3047// CHECK-ERROR: fmls v3.4s, v8.4s, v22.s[4] 3048// CHECK-ERROR: ^ 3049// CHECK-ERROR: error: lane number incompatible with layout 3050// CHECK-ERROR: fmls v0.2d, v1.2d, v2.d[2] 3051// CHECK-ERROR: ^ 3052// CHECK-ERROR: error: lane number incompatible with layout 3053// CHECK-ERROR: fmls v0.2d, v1.2d, v22.d[2] 3054// CHECK-ERROR: ^ 3055 3056 smlal v0.4h, v1.4h, v2.h[2] 3057 smlal v0.4s, v1.4h, v2.h[8] 3058 smlal v0.4s, v1.4h, v16.h[2] 3059 smlal v0.2s, v1.2s, v2.s[4] 3060 smlal v0.2d, v1.2s, v2.s[4] 3061 smlal v0.2d, v1.2s, v22.s[4] 3062 smlal2 v0.4h, v1.8h, v1.h[2] 3063 smlal2 v0.4s, v1.8h, v1.h[8] 3064 smlal2 v0.4s, v1.8h, v16.h[2] 3065 smlal2 v0.2s, v1.4s, v1.s[2] 3066 smlal2 v0.2d, v1.4s, v1.s[4] 3067 smlal2 v0.2d, v1.4s, v22.s[4] 3068 3069// CHECK-ERROR: error: invalid operand for instruction 3070// CHECK-ERROR: smlal v0.4h, v1.4h, v2.h[2] 3071// CHECK-ERROR: ^ 3072// CHECK-ERROR: error: lane number incompatible with layout 3073// CHECK-ERROR: smlal v0.4s, v1.4h, v2.h[8] 3074// CHECK-ERROR: ^ 3075// CHECK-ERROR: error: invalid operand for instruction 3076// CHECK-ERROR: smlal v0.4s, v1.4h, v16.h[2] 3077// CHECK-ERROR: ^ 3078// CHECK-ERROR: error: lane number incompatible with layout 3079// CHECK-ERROR: smlal v0.2s, v1.2s, v2.s[4] 3080// CHECK-ERROR: ^ 3081// CHECK-ERROR: error: lane number incompatible with layout 3082// CHECK-ERROR: smlal v0.2d, v1.2s, v2.s[4] 3083// CHECK-ERROR: ^ 3084// CHECK-ERROR: error: lane number incompatible with layout 3085// CHECK-ERROR: smlal v0.2d, v1.2s, v22.s[4] 3086// CHECK-ERROR: ^ 3087// CHECK-ERROR: error: invalid operand for instruction 3088// CHECK-ERROR: smlal2 v0.4h, v1.8h, v1.h[2] 3089// CHECK-ERROR: ^ 3090// CHECK-ERROR: error: lane number incompatible with layout 3091// CHECK-ERROR: smlal2 v0.4s, v1.8h, v1.h[8] 3092// CHECK-ERROR: ^ 3093// CHECK-ERROR: error: invalid operand for instruction 3094// CHECK-ERROR: smlal2 v0.4s, v1.8h, v16.h[2] 3095// CHECK-ERROR: ^ 3096// CHECK-ERROR: error: invalid operand for instruction 3097// CHECK-ERROR: smlal2 v0.2s, v1.4s, v1.s[2] 3098// CHECK-ERROR: ^ 3099// CHECK-ERROR: error: lane number incompatible with layout 3100// CHECK-ERROR: smlal2 v0.2d, v1.4s, v1.s[4] 3101// CHECK-ERROR: ^ 3102// CHECK-ERROR: error: lane number incompatible with layout 3103// CHECK-ERROR: smlal2 v0.2d, v1.4s, v22.s[4] 3104// CHECK-ERROR: ^ 3105 3106 smlsl v0.4h, v1.4h, v2.h[2] 3107 smlsl v0.4s, v1.4h, v2.h[8] 3108 smlsl v0.4s, v1.4h, v16.h[2] 3109 smlsl v0.2s, v1.2s, v2.s[4] 3110 smlsl v0.2d, v1.2s, v2.s[4] 3111 smlsl v0.2d, v1.2s, v22.s[4] 3112 smlsl2 v0.4h, v1.8h, v1.h[2] 3113 smlsl2 v0.4s, v1.8h, v1.h[8] 3114 smlsl2 v0.4s, v1.8h, v16.h[2] 3115 smlsl2 v0.2s, v1.4s, v1.s[2] 3116 smlsl2 v0.2d, v1.4s, v1.s[4] 3117 smlsl2 v0.2d, v1.4s, v22.s[4] 3118 3119// CHECK-ERROR: error: invalid operand for instruction 3120// CHECK-ERROR: smlsl v0.4h, v1.4h, v2.h[2] 3121// CHECK-ERROR: ^ 3122// CHECK-ERROR: error: lane number incompatible with layout 3123// CHECK-ERROR: smlsl v0.4s, v1.4h, v2.h[8] 3124// CHECK-ERROR: ^ 3125// CHECK-ERROR: error: invalid operand for instruction 3126// CHECK-ERROR: smlsl v0.4s, v1.4h, v16.h[2] 3127// CHECK-ERROR: ^ 3128// CHECK-ERROR: error: lane number incompatible with layout 3129// CHECK-ERROR: smlsl v0.2s, v1.2s, v2.s[4] 3130// CHECK-ERROR: ^ 3131// CHECK-ERROR: error: lane number incompatible with layout 3132// CHECK-ERROR: smlsl v0.2d, v1.2s, v2.s[4] 3133// CHECK-ERROR: ^ 3134// CHECK-ERROR: error: lane number incompatible with layout 3135// CHECK-ERROR: smlsl v0.2d, v1.2s, v22.s[4] 3136// CHECK-ERROR: ^ 3137// CHECK-ERROR: error: invalid operand for instruction 3138// CHECK-ERROR: smlsl2 v0.4h, v1.8h, v1.h[2] 3139// CHECK-ERROR: ^ 3140// CHECK-ERROR: error: lane number incompatible with layout 3141// CHECK-ERROR: smlsl2 v0.4s, v1.8h, v1.h[8] 3142// CHECK-ERROR: ^ 3143// CHECK-ERROR: error: invalid operand for instruction 3144// CHECK-ERROR: smlsl2 v0.4s, v1.8h, v16.h[2] 3145// CHECK-ERROR: ^ 3146// CHECK-ERROR: error: invalid operand for instruction 3147// CHECK-ERROR: smlsl2 v0.2s, v1.4s, v1.s[2] 3148// CHECK-ERROR: ^ 3149// CHECK-ERROR: error: lane number incompatible with layout 3150// CHECK-ERROR: smlsl2 v0.2d, v1.4s, v1.s[4] 3151// CHECK-ERROR: ^ 3152// CHECK-ERROR: error: lane number incompatible with layout 3153// CHECK-ERROR: smlsl2 v0.2d, v1.4s, v22.s[4] 3154// CHECK-ERROR: ^ 3155 3156 umlal v0.4h, v1.4h, v2.h[2] 3157 umlal v0.4s, v1.4h, v2.h[8] 3158 umlal v0.4s, v1.4h, v16.h[2] 3159 umlal v0.2s, v1.2s, v2.s[4] 3160 umlal v0.2d, v1.2s, v2.s[4] 3161 umlal v0.2d, v1.2s, v22.s[4] 3162 umlal2 v0.4h, v1.8h, v1.h[2] 3163 umlal2 v0.4s, v1.8h, v1.h[8] 3164 umlal2 v0.4s, v1.8h, v16.h[2] 3165 umlal2 v0.2s, v1.4s, v1.s[2] 3166 umlal2 v0.2d, v1.4s, v1.s[4] 3167 umlal2 v0.2d, v1.4s, v22.s[4] 3168 3169// CHECK-ERROR: error: invalid operand for instruction 3170// CHECK-ERROR: umlal v0.4h, v1.4h, v2.h[2] 3171// CHECK-ERROR: ^ 3172// CHECK-ERROR: error: lane number incompatible with layout 3173// CHECK-ERROR: umlal v0.4s, v1.4h, v2.h[8] 3174// CHECK-ERROR: ^ 3175// CHECK-ERROR: error: invalid operand for instruction 3176// CHECK-ERROR: umlal v0.4s, v1.4h, v16.h[2] 3177// CHECK-ERROR: ^ 3178// CHECK-ERROR: error: lane number incompatible with layout 3179// CHECK-ERROR: umlal v0.2s, v1.2s, v2.s[4] 3180// CHECK-ERROR: ^ 3181// CHECK-ERROR: error: lane number incompatible with layout 3182// CHECK-ERROR: umlal v0.2d, v1.2s, v2.s[4] 3183// CHECK-ERROR: ^ 3184// CHECK-ERROR: error: lane number incompatible with layout 3185// CHECK-ERROR: umlal v0.2d, v1.2s, v22.s[4] 3186// CHECK-ERROR: ^ 3187// CHECK-ERROR: error: invalid operand for instruction 3188// CHECK-ERROR: umlal2 v0.4h, v1.8h, v1.h[2] 3189// CHECK-ERROR: ^ 3190// CHECK-ERROR: error: lane number incompatible with layout 3191// CHECK-ERROR: umlal2 v0.4s, v1.8h, v1.h[8] 3192// CHECK-ERROR: ^ 3193// CHECK-ERROR: error: invalid operand for instruction 3194// CHECK-ERROR: umlal2 v0.4s, v1.8h, v16.h[2] 3195// CHECK-ERROR: ^ 3196// CHECK-ERROR: error: invalid operand for instruction 3197// CHECK-ERROR: umlal2 v0.2s, v1.4s, v1.s[2] 3198// CHECK-ERROR: ^ 3199// CHECK-ERROR: error: lane number incompatible with layout 3200// CHECK-ERROR: umlal2 v0.2d, v1.4s, v1.s[4] 3201// CHECK-ERROR: ^ 3202// CHECK-ERROR: error: lane number incompatible with layout 3203// CHECK-ERROR: umlal2 v0.2d, v1.4s, v22.s[4] 3204// CHECK-ERROR: ^ 3205 3206 umlsl v0.4h, v1.4h, v2.h[2] 3207 umlsl v0.4s, v1.4h, v2.h[8] 3208 umlsl v0.4s, v1.4h, v16.h[2] 3209 umlsl v0.2s, v1.2s, v2.s[4] 3210 umlsl v0.2d, v1.2s, v2.s[4] 3211 umlsl v0.2d, v1.2s, v22.s[4] 3212 umlsl2 v0.4h, v1.8h, v1.h[2] 3213 umlsl2 v0.4s, v1.8h, v1.h[8] 3214 umlsl2 v0.4s, v1.8h, v16.h[2] 3215 umlsl2 v0.2s, v1.4s, v1.s[2] 3216 umlsl2 v0.2d, v1.4s, v1.s[4] 3217 umlsl2 v0.2d, v1.4s, v22.s[4] 3218 3219// CHECK-ERROR: error: invalid operand for instruction 3220// CHECK-ERROR: umlsl v0.4h, v1.4h, v2.h[2] 3221// CHECK-ERROR: ^ 3222// CHECK-ERROR: error: lane number incompatible with layout 3223// CHECK-ERROR: umlsl v0.4s, v1.4h, v2.h[8] 3224// CHECK-ERROR: ^ 3225// CHECK-ERROR: error: invalid operand for instruction 3226// CHECK-ERROR: umlsl v0.4s, v1.4h, v16.h[2] 3227// CHECK-ERROR: ^ 3228// CHECK-ERROR: error: lane number incompatible with layout 3229// CHECK-ERROR: umlsl v0.2s, v1.2s, v2.s[4] 3230// CHECK-ERROR: ^ 3231// CHECK-ERROR: error: lane number incompatible with layout 3232// CHECK-ERROR: umlsl v0.2d, v1.2s, v2.s[4] 3233// CHECK-ERROR: ^ 3234// CHECK-ERROR: error: lane number incompatible with layout 3235// CHECK-ERROR: umlsl v0.2d, v1.2s, v22.s[4] 3236// CHECK-ERROR: ^ 3237// CHECK-ERROR: error: invalid operand for instruction 3238// CHECK-ERROR: umlsl2 v0.4h, v1.8h, v1.h[2] 3239// CHECK-ERROR: ^ 3240// CHECK-ERROR: error: lane number incompatible with layout 3241// CHECK-ERROR: umlsl2 v0.4s, v1.8h, v1.h[8] 3242// CHECK-ERROR: ^ 3243// CHECK-ERROR: error: invalid operand for instruction 3244// CHECK-ERROR: umlsl2 v0.4s, v1.8h, v16.h[2] 3245// CHECK-ERROR: ^ 3246// CHECK-ERROR: error: invalid operand for instruction 3247// CHECK-ERROR: umlsl2 v0.2s, v1.4s, v1.s[2] 3248// CHECK-ERROR: ^ 3249// CHECK-ERROR: error: lane number incompatible with layout 3250// CHECK-ERROR: umlsl2 v0.2d, v1.4s, v1.s[4] 3251// CHECK-ERROR: ^ 3252// CHECK-ERROR: error: lane number incompatible with layout 3253// CHECK-ERROR: umlsl2 v0.2d, v1.4s, v22.s[4] 3254// CHECK-ERROR: ^ 3255 3256 sqdmlal v0.4h, v1.4h, v2.h[2] 3257 sqdmlal v0.4s, v1.4h, v2.h[8] 3258 sqdmlal v0.4s, v1.4h, v16.h[2] 3259 sqdmlal v0.2s, v1.2s, v2.s[4] 3260 sqdmlal v0.2d, v1.2s, v2.s[4] 3261 sqdmlal v0.2d, v1.2s, v22.s[4] 3262 sqdmlal2 v0.4h, v1.8h, v1.h[2] 3263 sqdmlal2 v0.4s, v1.8h, v1.h[8] 3264 sqdmlal2 v0.4s, v1.8h, v16.h[2] 3265 sqdmlal2 v0.2s, v1.4s, v1.s[2] 3266 sqdmlal2 v0.2d, v1.4s, v1.s[4] 3267 sqdmlal2 v0.2d, v1.4s, v22.s[4] 3268 3269// CHECK-ERROR: error: invalid operand for instruction 3270// CHECK-ERROR: sqdmlal v0.4h, v1.4h, v2.h[2] 3271// CHECK-ERROR: ^ 3272// CHECK-ERROR: error: lane number incompatible with layout 3273// CHECK-ERROR: sqdmlal v0.4s, v1.4h, v2.h[8] 3274// CHECK-ERROR: ^ 3275// CHECK-ERROR: error: invalid operand for instruction 3276// CHECK-ERROR: sqdmlal v0.4s, v1.4h, v16.h[2] 3277// CHECK-ERROR: ^ 3278// CHECK-ERROR: error: lane number incompatible with layout 3279// CHECK-ERROR: sqdmlal v0.2s, v1.2s, v2.s[4] 3280// CHECK-ERROR: ^ 3281// CHECK-ERROR: error: lane number incompatible with layout 3282// CHECK-ERROR: sqdmlal v0.2d, v1.2s, v2.s[4] 3283// CHECK-ERROR: ^ 3284// CHECK-ERROR: error: lane number incompatible with layout 3285// CHECK-ERROR: sqdmlal v0.2d, v1.2s, v22.s[4] 3286// CHECK-ERROR: ^ 3287// CHECK-ERROR: error: invalid operand for instruction 3288// CHECK-ERROR: sqdmlal2 v0.4h, v1.8h, v1.h[2] 3289// CHECK-ERROR: ^ 3290// CHECK-ERROR: error: lane number incompatible with layout 3291// CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v1.h[8] 3292// CHECK-ERROR: ^ 3293// CHECK-ERROR: error: invalid operand for instruction 3294// CHECK-ERROR: sqdmlal2 v0.4s, v1.8h, v16.h[2] 3295// CHECK-ERROR: ^ 3296// CHECK-ERROR: error: invalid operand for instruction 3297// CHECK-ERROR: sqdmlal2 v0.2s, v1.4s, v1.s[2] 3298// CHECK-ERROR: ^ 3299// CHECK-ERROR: error: lane number incompatible with layout 3300// CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v1.s[4] 3301// CHECK-ERROR: ^ 3302// CHECK-ERROR: error: lane number incompatible with layout 3303// CHECK-ERROR: sqdmlal2 v0.2d, v1.4s, v22.s[4] 3304// CHECK-ERROR: ^ 3305 3306 sqdmlsl v0.4h, v1.4h, v2.h[2] 3307 sqdmlsl v0.4s, v1.4h, v2.h[8] 3308 sqdmlsl v0.4s, v1.4h, v16.h[2] 3309 sqdmlsl v0.2s, v1.2s, v2.s[4] 3310 sqdmlsl v0.2d, v1.2s, v2.s[4] 3311 sqdmlsl v0.2d, v1.2s, v22.s[4] 3312 sqdmlsl2 v0.4h, v1.8h, v1.h[2] 3313 sqdmlsl2 v0.4s, v1.8h, v1.h[8] 3314 sqdmlsl2 v0.4s, v1.8h, v16.h[2] 3315 sqdmlsl2 v0.2s, v1.4s, v1.s[2] 3316 sqdmlsl2 v0.2d, v1.4s, v1.s[4] 3317 sqdmlsl2 v0.2d, v1.4s, v22.s[4] 3318 3319// CHECK-ERROR: error: invalid operand for instruction 3320// CHECK-ERROR: sqdmlsl v0.4h, v1.4h, v2.h[2] 3321// CHECK-ERROR: ^ 3322// CHECK-ERROR: error: lane number incompatible with layout 3323// CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v2.h[8] 3324// CHECK-ERROR: ^ 3325// CHECK-ERROR: error: invalid operand for instruction 3326// CHECK-ERROR: sqdmlsl v0.4s, v1.4h, v16.h[2] 3327// CHECK-ERROR: ^ 3328// CHECK-ERROR: error: lane number incompatible with layout 3329// CHECK-ERROR: sqdmlsl v0.2s, v1.2s, v2.s[4] 3330// CHECK-ERROR: ^ 3331// CHECK-ERROR: error: lane number incompatible with layout 3332// CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v2.s[4] 3333// CHECK-ERROR: ^ 3334// CHECK-ERROR: error: lane number incompatible with layout 3335// CHECK-ERROR: sqdmlsl v0.2d, v1.2s, v22.s[4] 3336// CHECK-ERROR: ^ 3337// CHECK-ERROR: error: invalid operand for instruction 3338// CHECK-ERROR: sqdmlsl2 v0.4h, v1.8h, v1.h[2] 3339// CHECK-ERROR: ^ 3340// CHECK-ERROR: error: lane number incompatible with layout 3341// CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v1.h[8] 3342// CHECK-ERROR: ^ 3343// CHECK-ERROR: error: invalid operand for instruction 3344// CHECK-ERROR: sqdmlsl2 v0.4s, v1.8h, v16.h[2] 3345// CHECK-ERROR: ^ 3346// CHECK-ERROR: error: invalid operand for instruction 3347// CHECK-ERROR: sqdmlsl2 v0.2s, v1.4s, v1.s[2] 3348// CHECK-ERROR: ^ 3349// CHECK-ERROR: error: lane number incompatible with layout 3350// CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v1.s[4] 3351// CHECK-ERROR: ^ 3352// CHECK-ERROR: error: lane number incompatible with layout 3353// CHECK-ERROR: sqdmlsl2 v0.2d, v1.4s, v22.s[4] 3354// CHECK-ERROR: ^ 3355 3356 mul v0.4h, v1.4h, v2.h[8] 3357 mul v0.4h, v1.4h, v16.h[8] 3358 mul v0.8h, v1.8h, v2.h[8] 3359 mul v0.8h, v1.8h, v16.h[8] 3360 mul v0.2s, v1.2s, v2.s[4] 3361 mul v0.2s, v1.2s, v22.s[4] 3362 mul v0.4s, v1.4s, v2.s[4] 3363 mul v0.4s, v1.4s, v22.s[4] 3364 mul v0.2d, v1.2d, v2.d[1] 3365 3366// CHECK-ERROR: error: lane number incompatible with layout 3367// CHECK-ERROR: mul v0.4h, v1.4h, v2.h[8] 3368// CHECK-ERROR: ^ 3369// CHECK-ERROR: error: lane number incompatible with layout 3370// CHECK-ERROR: mul v0.4h, v1.4h, v16.h[8] 3371// CHECK-ERROR: ^ 3372// CHECK-ERROR: error: lane number incompatible with layout 3373// CHECK-ERROR: mul v0.8h, v1.8h, v2.h[8] 3374// CHECK-ERROR: ^ 3375// CHECK-ERROR: error: lane number incompatible with layout 3376// CHECK-ERROR: mul v0.8h, v1.8h, v16.h[8] 3377// CHECK-ERROR: ^ 3378// CHECK-ERROR: error: lane number incompatible with layout 3379// CHECK-ERROR: mul v0.2s, v1.2s, v2.s[4] 3380// CHECK-ERROR: ^ 3381// CHECK-ERROR: error: lane number incompatible with layout 3382// CHECK-ERROR: mul v0.2s, v1.2s, v22.s[4] 3383// CHECK-ERROR: ^ 3384// CHECK-ERROR: error: lane number incompatible with layout 3385// CHECK-ERROR: mul v0.4s, v1.4s, v2.s[4] 3386// CHECK-ERROR: ^ 3387// CHECK-ERROR: error: lane number incompatible with layout 3388// CHECK-ERROR: mul v0.4s, v1.4s, v22.s[4] 3389// CHECK-ERROR: ^ 3390 3391 fmul v0.4h, v1.4h, v2.h[4] 3392 fmul v0.2s, v1.2s, v2.s[4] 3393 fmul v0.2s, v1.2s, v22.s[4] 3394 fmul v0.4s, v1.4s, v2.s[4] 3395 fmul v0.4s, v1.4s, v22.s[4] 3396 fmul v0.2d, v1.2d, v2.d[2] 3397 fmul v0.2d, v1.2d, v22.d[2] 3398 3399// CHECK-ERROR: error: invalid operand for instruction 3400// CHECK-ERROR: mul v0.2d, v1.2d, v2.d[1] 3401// CHECK-ERROR: ^ 3402// CHECK-ERROR: error: invalid operand for instruction 3403// CHECK-ERROR: fmul v0.4h, v1.4h, v2.h[4] 3404// CHECK-ERROR: ^ 3405// CHECK-ERROR: error: lane number incompatible with layout 3406// CHECK-ERROR: fmul v0.2s, v1.2s, v2.s[4] 3407// CHECK-ERROR: ^ 3408// CHECK-ERROR: error: lane number incompatible with layout 3409// CHECK-ERROR: fmul v0.2s, v1.2s, v22.s[4] 3410// CHECK-ERROR: ^ 3411// CHECK-ERROR: error: lane number incompatible with layout 3412// CHECK-ERROR: fmul v0.4s, v1.4s, v2.s[4] 3413// CHECK-ERROR: ^ 3414// CHECK-ERROR: error: lane number incompatible with layout 3415// CHECK-ERROR: fmul v0.4s, v1.4s, v22.s[4] 3416// CHECK-ERROR: ^ 3417// CHECK-ERROR: error: lane number incompatible with layout 3418// CHECK-ERROR: fmul v0.2d, v1.2d, v2.d[2] 3419// CHECK-ERROR: ^ 3420// CHECK-ERROR: error: lane number incompatible with layout 3421// CHECK-ERROR: fmul v0.2d, v1.2d, v22.d[2] 3422// CHECK-ERROR: ^ 3423 3424 fmulx v0.4h, v1.4h, v2.h[4] 3425 fmulx v0.2s, v1.2s, v2.s[4] 3426 fmulx v0.2s, v1.2s, v22.s[4] 3427 fmulx v0.4s, v1.4s, v2.s[4] 3428 fmulx v0.4s, v1.4s, v22.s[4] 3429 fmulx v0.2d, v1.2d, v2.d[2] 3430 fmulx v0.2d, v1.2d, v22.d[2] 3431 3432// CHECK-ERROR: error: invalid operand for instruction 3433// CHECK-ERROR: fmulx v0.4h, v1.4h, v2.h[4] 3434// CHECK-ERROR: ^ 3435// CHECK-ERROR: error: lane number incompatible with layout 3436// CHECK-ERROR: fmulx v0.2s, v1.2s, v2.s[4] 3437// CHECK-ERROR: ^ 3438// CHECK-ERROR: error: lane number incompatible with layout 3439// CHECK-ERROR: fmulx v0.2s, v1.2s, v22.s[4] 3440// CHECK-ERROR: ^ 3441// CHECK-ERROR: error: lane number incompatible with layout 3442// CHECK-ERROR: fmulx v0.4s, v1.4s, v2.s[4] 3443// CHECK-ERROR: ^ 3444// CHECK-ERROR: error: lane number incompatible with layout 3445// CHECK-ERROR: fmulx v0.4s, v1.4s, v22.s[4] 3446// CHECK-ERROR: ^ 3447// CHECK-ERROR: error: lane number incompatible with layout 3448// CHECK-ERROR: fmulx v0.2d, v1.2d, v2.d[2] 3449// CHECK-ERROR: ^ 3450// CHECK-ERROR: error: lane number incompatible with layout 3451// CHECK-ERROR: fmulx v0.2d, v1.2d, v22.d[2] 3452// CHECK-ERROR: ^ 3453 3454 smull v0.4h, v1.4h, v2.h[2] 3455 smull v0.4s, v1.4h, v2.h[8] 3456 smull v0.4s, v1.4h, v16.h[4] 3457 smull v0.2s, v1.2s, v2.s[2] 3458 smull v0.2d, v1.2s, v2.s[4] 3459 smull v0.2d, v1.2s, v22.s[4] 3460 smull2 v0.4h, v1.8h, v2.h[2] 3461 smull2 v0.4s, v1.8h, v2.h[8] 3462 smull2 v0.4s, v1.8h, v16.h[4] 3463 smull2 v0.2s, v1.4s, v2.s[2] 3464 smull2 v0.2d, v1.4s, v2.s[4] 3465 smull2 v0.2d, v1.4s, v22.s[4] 3466 3467// CHECK-ERROR: error: invalid operand for instruction 3468// CHECK-ERROR: smull v0.4h, v1.4h, v2.h[2] 3469// CHECK-ERROR: ^ 3470// CHECK-ERROR: error: lane number incompatible with layout 3471// CHECK-ERROR: smull v0.4s, v1.4h, v2.h[8] 3472// CHECK-ERROR: ^ 3473// CHECK-ERROR: error: invalid operand for instruction 3474// CHECK-ERROR: smull v0.4s, v1.4h, v16.h[4] 3475// CHECK-ERROR: ^ 3476// CHECK-ERROR: error: invalid operand for instruction 3477// CHECK-ERROR: smull v0.2s, v1.2s, v2.s[2] 3478// CHECK-ERROR: ^ 3479// CHECK-ERROR: error: lane number incompatible with layout 3480// CHECK-ERROR: smull v0.2d, v1.2s, v2.s[4] 3481// CHECK-ERROR: ^ 3482// CHECK-ERROR: error: lane number incompatible with layout 3483// CHECK-ERROR: smull v0.2d, v1.2s, v22.s[4] 3484// CHECK-ERROR: ^ 3485// CHECK-ERROR: error: invalid operand for instruction 3486// CHECK-ERROR: smull2 v0.4h, v1.8h, v2.h[2] 3487// CHECK-ERROR: ^ 3488// CHECK-ERROR: error: lane number incompatible with layout 3489// CHECK-ERROR: smull2 v0.4s, v1.8h, v2.h[8] 3490// CHECK-ERROR: ^ 3491// CHECK-ERROR: error: invalid operand for instruction 3492// CHECK-ERROR: smull2 v0.4s, v1.8h, v16.h[4] 3493// CHECK-ERROR: ^ 3494// CHECK-ERROR: error: invalid operand for instruction 3495// CHECK-ERROR: smull2 v0.2s, v1.4s, v2.s[2] 3496// CHECK-ERROR: ^ 3497// CHECK-ERROR: error: lane number incompatible with layout 3498// CHECK-ERROR: smull2 v0.2d, v1.4s, v2.s[4] 3499// CHECK-ERROR: ^ 3500// CHECK-ERROR: error: lane number incompatible with layout 3501// CHECK-ERROR: smull2 v0.2d, v1.4s, v22.s[4] 3502// CHECK-ERROR: ^ 3503 3504 umull v0.4h, v1.4h, v2.h[2] 3505 umull v0.4s, v1.4h, v2.h[8] 3506 umull v0.4s, v1.4h, v16.h[4] 3507 umull v0.2s, v1.2s, v2.s[2] 3508 umull v0.2d, v1.2s, v2.s[4] 3509 umull v0.2d, v1.2s, v22.s[4] 3510 umull2 v0.4h, v1.8h, v2.h[2] 3511 umull2 v0.4s, v1.8h, v2.h[8] 3512 umull2 v0.4s, v1.8h, v16.h[4] 3513 umull2 v0.2s, v1.4s, v2.s[2] 3514 umull2 v0.2d, v1.4s, v2.s[4] 3515 umull2 v0.2d, v1.4s, v22.s[4] 3516 3517// CHECK-ERROR: error: invalid operand for instruction 3518// CHECK-ERROR: umull v0.4h, v1.4h, v2.h[2] 3519// CHECK-ERROR: ^ 3520// CHECK-ERROR: error: lane number incompatible with layout 3521// CHECK-ERROR: umull v0.4s, v1.4h, v2.h[8] 3522// CHECK-ERROR: ^ 3523// CHECK-ERROR: error: invalid operand for instruction 3524// CHECK-ERROR: umull v0.4s, v1.4h, v16.h[4] 3525// CHECK-ERROR: ^ 3526// CHECK-ERROR: error: invalid operand for instruction 3527// CHECK-ERROR: umull v0.2s, v1.2s, v2.s[2] 3528// CHECK-ERROR: ^ 3529// CHECK-ERROR: error: lane number incompatible with layout 3530// CHECK-ERROR: umull v0.2d, v1.2s, v2.s[4] 3531// CHECK-ERROR: ^ 3532// CHECK-ERROR: error: lane number incompatible with layout 3533// CHECK-ERROR: umull v0.2d, v1.2s, v22.s[4] 3534// CHECK-ERROR: ^ 3535// CHECK-ERROR: error: invalid operand for instruction 3536// CHECK-ERROR: umull2 v0.4h, v1.8h, v2.h[2] 3537// CHECK-ERROR: ^ 3538// CHECK-ERROR: error: lane number incompatible with layout 3539// CHECK-ERROR: umull2 v0.4s, v1.8h, v2.h[8] 3540// CHECK-ERROR: ^ 3541// CHECK-ERROR: error: invalid operand for instruction 3542// CHECK-ERROR: umull2 v0.4s, v1.8h, v16.h[4] 3543// CHECK-ERROR: ^ 3544// CHECK-ERROR: error: invalid operand for instruction 3545// CHECK-ERROR: umull2 v0.2s, v1.4s, v2.s[2] 3546// CHECK-ERROR: ^ 3547// CHECK-ERROR: error: lane number incompatible with layout 3548// CHECK-ERROR: umull2 v0.2d, v1.4s, v2.s[4] 3549// CHECK-ERROR: ^ 3550// CHECK-ERROR: error: lane number incompatible with layout 3551// CHECK-ERROR: umull2 v0.2d, v1.4s, v22.s[4] 3552// CHECK-ERROR: ^ 3553 3554 sqdmull v0.4h, v1.4h, v2.h[2] 3555 sqdmull v0.4s, v1.4h, v2.h[8] 3556 sqdmull v0.4s, v1.4h, v16.h[4] 3557 sqdmull v0.2s, v1.2s, v2.s[2] 3558 sqdmull v0.2d, v1.2s, v2.s[4] 3559 sqdmull v0.2d, v1.2s, v22.s[4] 3560 sqdmull2 v0.4h, v1.8h, v2.h[2] 3561 sqdmull2 v0.4s, v1.8h, v2.h[8] 3562 sqdmull2 v0.4s, v1.8h, v16.h[4] 3563 sqdmull2 v0.2s, v1.4s, v2.s[2] 3564 sqdmull2 v0.2d, v1.4s, v2.s[4] 3565 sqdmull2 v0.2d, v1.4s, v22.s[4] 3566 3567// CHECK-ERROR: error: invalid operand for instruction 3568// CHECK-ERROR: sqdmull v0.4h, v1.4h, v2.h[2] 3569// CHECK-ERROR: ^ 3570// CHECK-ERROR: error: lane number incompatible with layout 3571// CHECK-ERROR: sqdmull v0.4s, v1.4h, v2.h[8] 3572// CHECK-ERROR: ^ 3573// CHECK-ERROR: error: invalid operand for instruction 3574// CHECK-ERROR: sqdmull v0.4s, v1.4h, v16.h[4] 3575// CHECK-ERROR: ^ 3576// CHECK-ERROR: error: invalid operand for instruction 3577// CHECK-ERROR: sqdmull v0.2s, v1.2s, v2.s[2] 3578// CHECK-ERROR: ^ 3579// CHECK-ERROR: error: lane number incompatible with layout 3580// CHECK-ERROR: sqdmull v0.2d, v1.2s, v2.s[4] 3581// CHECK-ERROR: ^ 3582// CHECK-ERROR: error: lane number incompatible with layout 3583// CHECK-ERROR: sqdmull v0.2d, v1.2s, v22.s[4] 3584// CHECK-ERROR: ^ 3585// CHECK-ERROR: error: invalid operand for instruction 3586// CHECK-ERROR: sqdmull2 v0.4h, v1.8h, v2.h[2] 3587// CHECK-ERROR: ^ 3588// CHECK-ERROR: error: lane number incompatible with layout 3589// CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v2.h[8] 3590// CHECK-ERROR: ^ 3591// CHECK-ERROR: error: invalid operand for instruction 3592// CHECK-ERROR: sqdmull2 v0.4s, v1.8h, v16.h[4] 3593// CHECK-ERROR: ^ 3594// CHECK-ERROR: error: invalid operand for instruction 3595// CHECK-ERROR: sqdmull2 v0.2s, v1.4s, v2.s[2] 3596// CHECK-ERROR: ^ 3597// CHECK-ERROR: error: lane number incompatible with layout 3598// CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v2.s[4] 3599// CHECK-ERROR: ^ 3600// CHECK-ERROR: error: lane number incompatible with layout 3601// CHECK-ERROR: sqdmull2 v0.2d, v1.4s, v22.s[4] 3602// CHECK-ERROR: ^ 3603 3604 sqdmulh v0.4h, v1.4h, v2.h[8] 3605 sqdmulh v0.4h, v1.4h, v16.h[2] 3606 sqdmulh v0.8h, v1.8h, v2.h[8] 3607 sqdmulh v0.8h, v1.8h, v16.h[2] 3608 sqdmulh v0.2s, v1.2s, v2.s[4] 3609 sqdmulh v0.2s, v1.2s, v22.s[4] 3610 sqdmulh v0.4s, v1.4s, v2.s[4] 3611 sqdmulh v0.4s, v1.4s, v22.s[4] 3612 sqdmulh v0.2d, v1.2d, v22.d[1] 3613 3614// CHECK-ERROR: error: lane number incompatible with layout 3615// CHECK-ERROR: sqdmulh v0.4h, v1.4h, v2.h[8] 3616// CHECK-ERROR: ^ 3617// CHECK-ERROR: error: invalid operand for instruction 3618// CHECK-ERROR: sqdmulh v0.4h, v1.4h, v16.h[2] 3619// CHECK-ERROR: ^ 3620// CHECK-ERROR: error: lane number incompatible with layout 3621// CHECK-ERROR: sqdmulh v0.8h, v1.8h, v2.h[8] 3622// CHECK-ERROR: ^ 3623// CHECK-ERROR: error: invalid operand for instruction 3624// CHECK-ERROR: sqdmulh v0.8h, v1.8h, v16.h[2] 3625// CHECK-ERROR: ^ 3626// CHECK-ERROR: error: lane number incompatible with layout 3627// CHECK-ERROR: sqdmulh v0.2s, v1.2s, v2.s[4] 3628// CHECK-ERROR: ^ 3629// CHECK-ERROR: error: lane number incompatible with layout 3630// CHECK-ERROR: sqdmulh v0.2s, v1.2s, v22.s[4] 3631// CHECK-ERROR: ^ 3632// CHECK-ERROR: error: lane number incompatible with layout 3633// CHECK-ERROR: sqdmulh v0.4s, v1.4s, v2.s[4] 3634// CHECK-ERROR: ^ 3635// CHECK-ERROR: error: lane number incompatible with layout 3636// CHECK-ERROR: sqdmulh v0.4s, v1.4s, v22.s[4] 3637// CHECK-ERROR: ^ 3638// CHECK-ERROR: error: invalid operand for instruction 3639// CHECK-ERROR: sqdmulh v0.2d, v1.2d, v22.d[1] 3640// CHECK-ERROR: ^ 3641 3642 sqrdmulh v0.4h, v1.4h, v2.h[8] 3643 sqrdmulh v0.4h, v1.4h, v16.h[2] 3644 sqrdmulh v0.8h, v1.8h, v2.h[8] 3645 sqrdmulh v0.8h, v1.8h, v16.h[2] 3646 sqrdmulh v0.2s, v1.2s, v2.s[4] 3647 sqrdmulh v0.2s, v1.2s, v22.s[4] 3648 sqrdmulh v0.4s, v1.4s, v2.s[4] 3649 sqrdmulh v0.4s, v1.4s, v22.s[4] 3650 sqrdmulh v0.2d, v1.2d, v22.d[1] 3651 3652// CHECK-ERROR: error: lane number incompatible with layout 3653// CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v2.h[8] 3654// CHECK-ERROR: ^ 3655// CHECK-ERROR: error: invalid operand for instruction 3656// CHECK-ERROR: sqrdmulh v0.4h, v1.4h, v16.h[2] 3657// CHECK-ERROR: ^ 3658// CHECK-ERROR: error: lane number incompatible with layout 3659// CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v2.h[8] 3660// CHECK-ERROR: ^ 3661// CHECK-ERROR: error: invalid operand for instruction 3662// CHECK-ERROR: sqrdmulh v0.8h, v1.8h, v16.h[2] 3663// CHECK-ERROR: ^ 3664// CHECK-ERROR: error: lane number incompatible with layout 3665// CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v2.s[4] 3666// CHECK-ERROR: ^ 3667// CHECK-ERROR: error: lane number incompatible with layout 3668// CHECK-ERROR: sqrdmulh v0.2s, v1.2s, v22.s[4] 3669// CHECK-ERROR: ^ 3670// CHECK-ERROR: error: lane number incompatible with layout 3671// CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v2.s[4] 3672// CHECK-ERROR: ^ 3673// CHECK-ERROR: error: lane number incompatible with layout 3674// CHECK-ERROR: sqrdmulh v0.4s, v1.4s, v22.s[4] 3675// CHECK-ERROR: ^ 3676// CHECK-ERROR: error: invalid operand for instruction 3677// CHECK-ERROR: sqrdmulh v0.2d, v1.2d, v22.d[1] 3678// CHECK-ERROR: ^ 3679 3680//---------------------------------------------------------------------- 3681// Across vectors 3682//---------------------------------------------------------------------- 3683 3684 saddlv b0, v1.8b 3685 saddlv b0, v1.16b 3686 saddlv h0, v1.4h 3687 saddlv h0, v1.8h 3688 saddlv s0, v1.2s 3689 saddlv s0, v1.4s 3690 saddlv d0, v1.2s 3691 3692// CHECK-ERROR: error: invalid operand for instruction 3693// CHECK-ERROR: saddlv b0, v1.8b 3694// CHECK-ERROR: ^ 3695// CHECK-ERROR: error: invalid operand for instruction 3696// CHECK-ERROR: saddlv b0, v1.16b 3697// CHECK-ERROR: ^ 3698// CHECK-ERROR: error: invalid operand for instruction 3699// CHECK-ERROR: saddlv h0, v1.4h 3700// CHECK-ERROR: ^ 3701// CHECK-ERROR: error: invalid operand for instruction 3702// CHECK-ERROR: saddlv h0, v1.8h 3703// CHECK-ERROR: ^ 3704// CHECK-ERROR: error: invalid operand for instruction 3705// CHECK-ERROR: saddlv s0, v1.2s 3706// CHECK-ERROR: ^ 3707// CHECK-ERROR: error: invalid operand for instruction 3708// CHECK-ERROR: saddlv s0, v1.4s 3709// CHECK-ERROR: ^ 3710// CHECK-ERROR: error: invalid operand for instruction 3711// CHECK-ERROR: saddlv d0, v1.2s 3712// CHECK-ERROR: ^ 3713 3714 uaddlv b0, v1.8b 3715 uaddlv b0, v1.16b 3716 uaddlv h0, v1.4h 3717 uaddlv h0, v1.8h 3718 uaddlv s0, v1.2s 3719 uaddlv s0, v1.4s 3720 uaddlv d0, v1.2s 3721 3722// CHECK-ERROR: error: invalid operand for instruction 3723// CHECK-ERROR: uaddlv b0, v1.8b 3724// CHECK-ERROR: ^ 3725// CHECK-ERROR: error: invalid operand for instruction 3726// CHECK-ERROR: uaddlv b0, v1.16b 3727// CHECK-ERROR: ^ 3728// CHECK-ERROR: error: invalid operand for instruction 3729// CHECK-ERROR: uaddlv h0, v1.4h 3730// CHECK-ERROR: ^ 3731// CHECK-ERROR: error: invalid operand for instruction 3732// CHECK-ERROR: uaddlv h0, v1.8h 3733// CHECK-ERROR: ^ 3734// CHECK-ERROR: error: invalid operand for instruction 3735// CHECK-ERROR: uaddlv s0, v1.2s 3736// CHECK-ERROR: ^ 3737// CHECK-ERROR: error: invalid operand for instruction 3738// CHECK-ERROR: uaddlv s0, v1.4s 3739// CHECK-ERROR: ^ 3740// CHECK-ERROR: error: invalid operand for instruction 3741// CHECK-ERROR: uaddlv d0, v1.2s 3742// CHECK-ERROR: ^ 3743 3744 smaxv s0, v1.2s 3745 sminv s0, v1.2s 3746 umaxv s0, v1.2s 3747 uminv s0, v1.2s 3748 addv s0, v1.2s 3749 3750// CHECK-ERROR: error: invalid operand for instruction 3751// CHECK-ERROR: smaxv s0, v1.2s 3752// CHECK-ERROR: ^ 3753// CHECK-ERROR: error: invalid operand for instruction 3754// CHECK-ERROR: sminv s0, v1.2s 3755// CHECK-ERROR: ^ 3756// CHECK-ERROR: error: invalid operand for instruction 3757// CHECK-ERROR: umaxv s0, v1.2s 3758// CHECK-ERROR: ^ 3759// CHECK-ERROR: error: invalid operand for instruction 3760// CHECK-ERROR: uminv s0, v1.2s 3761// CHECK-ERROR: ^ 3762// CHECK-ERROR: error: invalid operand for instruction 3763// CHECK-ERROR: addv s0, v1.2s 3764// CHECK-ERROR: ^ 3765 3766 smaxv d0, v1.2d 3767 sminv d0, v1.2d 3768 umaxv d0, v1.2d 3769 uminv d0, v1.2d 3770 addv d0, v1.2d 3771 3772// CHECK-ERROR: error: invalid operand for instruction 3773// CHECK-ERROR: smaxv d0, v1.2d 3774// CHECK-ERROR: ^ 3775// CHECK-ERROR: error: invalid operand for instruction 3776// CHECK-ERROR: sminv d0, v1.2d 3777// CHECK-ERROR: ^ 3778// CHECK-ERROR: error: invalid operand for instruction 3779// CHECK-ERROR: umaxv d0, v1.2d 3780// CHECK-ERROR: ^ 3781// CHECK-ERROR: error: invalid operand for instruction 3782// CHECK-ERROR: uminv d0, v1.2d 3783// CHECK-ERROR: ^ 3784// CHECK-ERROR: error: invalid operand for instruction 3785// CHECK-ERROR: addv d0, v1.2d 3786// CHECK-ERROR: ^ 3787 3788 fmaxnmv b0, v1.16b 3789 fminnmv b0, v1.16b 3790 fmaxv b0, v1.16b 3791 fminv b0, v1.16b 3792 3793// CHECK-ERROR: error: invalid operand for instruction 3794// CHECK-ERROR: fmaxnmv b0, v1.16b 3795// CHECK-ERROR: ^ 3796// CHECK-ERROR: error: invalid operand for instruction 3797// CHECK-ERROR: fminnmv b0, v1.16b 3798// CHECK-ERROR: ^ 3799// CHECK-ERROR: error: invalid operand for instruction 3800// CHECK-ERROR: fmaxv b0, v1.16b 3801// CHECK-ERROR: ^ 3802// CHECK-ERROR: error: invalid operand for instruction 3803// CHECK-ERROR: fminv b0, v1.16b 3804// CHECK-ERROR: ^ 3805 3806 fmaxnmv h0, v1.8h 3807 fminnmv h0, v1.8h 3808 fmaxv h0, v1.8h 3809 fminv h0, v1.8h 3810 3811// CHECK-ERROR: error: invalid operand for instruction 3812// CHECK-ERROR: fmaxnmv h0, v1.8h 3813// CHECK-ERROR: ^ 3814// CHECK-ERROR: error: invalid operand for instruction 3815// CHECK-ERROR: fminnmv h0, v1.8h 3816// CHECK-ERROR: ^ 3817// CHECK-ERROR: error: invalid operand for instruction 3818// CHECK-ERROR: fmaxv h0, v1.8h 3819// CHECK-ERROR: ^ 3820// CHECK-ERROR: error: invalid operand for instruction 3821// CHECK-ERROR: fminv h0, v1.8h 3822// CHECK-ERROR: ^ 3823 3824 fmaxnmv d0, v1.2d 3825 fminnmv d0, v1.2d 3826 fmaxv d0, v1.2d 3827 fminv d0, v1.2d 3828 3829// CHECK-ERROR: error: invalid operand for instruction 3830// CHECK-ERROR: fmaxnmv d0, v1.2d 3831// CHECK-ERROR: ^ 3832// CHECK-ERROR: error: invalid operand for instruction 3833// CHECK-ERROR: fminnmv d0, v1.2d 3834// CHECK-ERROR: ^ 3835// CHECK-ERROR: error: invalid operand for instruction 3836// CHECK-ERROR: fmaxv d0, v1.2d 3837// CHECK-ERROR: ^ 3838// CHECK-ERROR: error: invalid operand for instruction 3839// CHECK-ERROR: fminv d0, v1.2d 3840// CHECK-ERROR: ^ 3841 3842//---------------------------------------------------------------------- 3843// Floating-point Multiply Extended 3844//---------------------------------------------------------------------- 3845 3846 fmulx s20, h22, s15 3847 fmulx d23, d11, s1 3848 3849// CHECK-ERROR: error: invalid operand for instruction 3850// CHECK-ERROR: fmulx s20, h22, s15 3851// CHECK-ERROR: ^ 3852// CHECK-ERROR: error: invalid operand for instruction 3853// CHECK-ERROR: fmulx d23, d11, s1 3854// CHECK-ERROR: ^ 3855 3856//---------------------------------------------------------------------- 3857// Floating-point Reciprocal Step 3858//---------------------------------------------------------------------- 3859 3860 frecps s21, s16, h13 3861 frecps d22, s30, d21 3862 3863// CHECK-ERROR: error: invalid operand for instruction 3864// CHECK-ERROR: frecps s21, s16, h13 3865// CHECK-ERROR: ^ 3866// CHECK-ERROR: error: invalid operand for instruction 3867// CHECK-ERROR: frecps d22, s30, d21 3868// CHECK-ERROR: ^ 3869 3870//---------------------------------------------------------------------- 3871// Floating-point Reciprocal Square Root Step 3872//---------------------------------------------------------------------- 3873 3874 frsqrts s21, h5, s12 3875 frsqrts d8, s22, d18 3876 3877// CHECK-ERROR: error: invalid operand for instruction 3878// CHECK-ERROR: frsqrts s21, h5, s12 3879// CHECK-ERROR: ^ 3880// CHECK-ERROR: error: invalid operand for instruction 3881// CHECK-ERROR: frsqrts d8, s22, d18 3882// CHECK-ERROR: ^ 3883 3884//---------------------------------------------------------------------- 3885// Vector load/store multiple N-element structure (class SIMD lselem) 3886//---------------------------------------------------------------------- 3887 ld1 {x3}, [x2] 3888 ld1 {v4}, [x0] 3889 ld1 {v32.16b}, [x0] 3890 ld1 {v15.8h}, [x32] 3891// CHECK-ERROR: error: expected vector type register 3892// CHECK-ERROR: ld1 {x3}, [x2] 3893// CHECK-ERROR: ^ 3894// CHECK-ERROR: error: expected vector type register 3895// CHECK-ERROR: ld1 {v4}, [x0] 3896// CHECK-ERROR: ^ 3897// CHECK-ERROR: error: expected vector type register 3898// CHECK-ERROR: ld1 {v32.16b}, [x0] 3899// CHECK-ERROR: ^ 3900// CHECK-ERROR: error: invalid operand for instruction 3901// CHECK-ERROR: ld1 {v15.8h}, [x32] 3902// CHECK-ERROR: ^ 3903 3904 ld1 {v0.16b, v2.16b}, [x0] 3905 ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0] 3906 ld1 v0.8b, v1.8b}, [x0] 3907 ld1 {v0.8h-v4.8h}, [x0] 3908 ld1 {v1.8h-v1.8h}, [x0] 3909 ld1 {v15.8h-v17.4h}, [x15] 3910 ld1 {v0.8b-v2.8b, [x0] 3911// CHECK-ERROR: error: invalid space between two vectors 3912// CHECK-ERROR: ld1 {v0.16b, v2.16b}, [x0] 3913// CHECK-ERROR: ^ 3914// CHECK-ERROR: error: invalid number of vectors 3915// CHECK-ERROR: ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0] 3916// CHECK-ERROR: ^ 3917// CHECK-ERROR: error: '{' expected 3918// CHECK-ERROR: ld1 v0.8b, v1.8b}, [x0] 3919// CHECK-ERROR: ^ 3920// CHECK-ERROR: error: invalid number of vectors 3921// CHECK-ERROR: ld1 {v0.8h-v4.8h}, [x0] 3922// CHECK-ERROR: ^ 3923// CHECK-ERROR: error: invalid number of vectors 3924// CHECK-ERROR: ld1 {v1.8h-v1.8h}, [x0] 3925// CHECK-ERROR: ^ 3926// CHECK-ERROR: error: expected the same vector layout 3927// CHECK-ERROR: ld1 {v15.8h-v17.4h}, [x15] 3928// CHECK-ERROR: ^ 3929// CHECK-ERROR: error: '}' expected 3930// CHECK-ERROR: ld1 {v0.8b-v2.8b, [x0] 3931// CHECK-ERROR: ^ 3932 3933 ld2 {v15.8h, v16.4h}, [x15] 3934 ld2 {v0.8b, v2.8b}, [x0] 3935 ld2 {v15.4h, v16.4h, v17.4h}, [x32] 3936 ld2 {v15.8h-v16.4h}, [x15] 3937 ld2 {v0.2d-v2.2d}, [x0] 3938// CHECK-ERROR: error: invalid space between two vectors 3939// CHECK-ERROR: ld2 {v15.8h, v16.4h}, [x15] 3940// CHECK-ERROR: ^ 3941// CHECK-ERROR: error: invalid space between two vectors 3942// CHECK-ERROR: ld2 {v0.8b, v2.8b}, [x0] 3943// CHECK-ERROR: ^ 3944// CHECK-ERROR: error: invalid operand for instruction 3945// CHECK-ERROR: ld2 {v15.4h, v16.4h, v17.4h}, [x32] 3946// CHECK-ERROR: ^ 3947// CHECK-ERROR: error: expected the same vector layout 3948// CHECK-ERROR: ld2 {v15.8h-v16.4h}, [x15] 3949// CHECK-ERROR: ^ 3950// CHECK-ERROR: error: invalid operand for instruction 3951// CHECK-ERROR: ld2 {v0.2d-v2.2d}, [x0] 3952// CHECK-ERROR: ^ 3953 3954 ld3 {v15.8h, v16.8h, v17.4h}, [x15] 3955 ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0] 3956 ld3 {v0.8b, v2.8b, v3.8b}, [x0] 3957 ld3 {v15.8h-v17.4h}, [x15] 3958 ld3 {v31.4s-v2.4s}, [sp] 3959// CHECK-ERROR: error: invalid space between two vectors 3960// CHECK-ERROR: ld3 {v15.8h, v16.8h, v17.4h}, [x15] 3961// CHECK-ERROR: ^ 3962// CHECK-ERROR: error: expected vector type register 3963// CHECK-ERROR: ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0] 3964// CHECK-ERROR: ^ 3965// CHECK-ERROR: error: invalid space between two vectors 3966// CHECK-ERROR: ld3 {v0.8b, v2.8b, v3.8b}, [x0] 3967// CHECK-ERROR: ^ 3968// CHECK-ERROR: error: expected the same vector layout 3969// CHECK-ERROR: ld3 {v15.8h-v17.4h}, [x15] 3970// CHECK-ERROR: ^ 3971// CHECK-ERROR: error: invalid operand for instruction 3972// CHECK-ERROR: ld3 {v31.4s-v2.4s}, [sp] 3973// CHECK-ERROR: ^ 3974 3975 ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15] 3976 ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0] 3977 ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31] 3978 ld4 {v15.8h-v18.4h}, [x15] 3979 ld4 {v31.2s-v1.2s}, [x31] 3980// CHECK-ERROR: error: invalid space between two vectors 3981// CHECK-ERROR: ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15] 3982// CHECK-ERROR: ^ 3983// CHECK-ERROR: error: invalid space between two vectors 3984// CHECK-ERROR: ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0] 3985// CHECK-ERROR: ^ 3986// CHECK-ERROR: error: invalid number of vectors 3987// CHECK-ERROR: ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31] 3988// CHECK-ERROR: ^ 3989// CHECK-ERROR: error: expected the same vector layout 3990// CHECK-ERROR: ld4 {v15.8h-v18.4h}, [x15] 3991// CHECK-ERROR: ^ 3992// CHECK-ERROR: error: invalid operand for instruction 3993// CHECK-ERROR: ld4 {v31.2s-v1.2s}, [x31] 3994// CHECK-ERROR: ^ 3995 3996 st1 {x3}, [x2] 3997 st1 {v4}, [x0] 3998 st1 {v32.16b}, [x0] 3999 st1 {v15.8h}, [x32] 4000// CHECK-ERROR: error: expected vector type register 4001// CHECK-ERROR: st1 {x3}, [x2] 4002// CHECK-ERROR: ^ 4003// CHECK-ERROR: error: expected vector type register 4004// CHECK-ERROR: st1 {v4}, [x0] 4005// CHECK-ERROR: ^ 4006// CHECK-ERROR: error: expected vector type register 4007// CHECK-ERROR: st1 {v32.16b}, [x0] 4008// CHECK-ERROR: ^ 4009// CHECK-ERROR: error: invalid operand for instruction 4010// CHECK-ERROR: st1 {v15.8h}, [x32] 4011// CHECK-ERROR: ^ 4012 4013 st1 {v0.16b, v2.16b}, [x0] 4014 st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0] 4015 st1 v0.8b, v1.8b}, [x0] 4016 st1 {v0.8h-v4.8h}, [x0] 4017 st1 {v1.8h-v1.8h}, [x0] 4018 st1 {v15.8h-v17.4h}, [x15] 4019 st1 {v0.8b-v2.8b, [x0] 4020// CHECK-ERROR: error: invalid space between two vectors 4021// CHECK-ERROR: st1 {v0.16b, v2.16b}, [x0] 4022// CHECK-ERROR: ^ 4023// CHECK-ERROR: error: invalid number of vectors 4024// CHECK-ERROR: st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0] 4025// CHECK-ERROR: ^ 4026// CHECK-ERROR: error: '{' expected 4027// CHECK-ERROR: st1 v0.8b, v1.8b}, [x0] 4028// CHECK-ERROR: ^ 4029// CHECK-ERROR: error: invalid number of vectors 4030// CHECK-ERROR: st1 {v0.8h-v4.8h}, [x0] 4031// CHECK-ERROR: ^ 4032// CHECK-ERROR: error: invalid number of vectors 4033// CHECK-ERROR: st1 {v1.8h-v1.8h}, [x0] 4034// CHECK-ERROR: ^ 4035// CHECK-ERROR: error: expected the same vector layout 4036// CHECK-ERROR: st1 {v15.8h-v17.4h}, [x15] 4037// CHECK-ERROR: ^ 4038// CHECK-ERROR: error: '}' expected 4039// CHECK-ERROR: st1 {v0.8b-v2.8b, [x0] 4040// CHECK-ERROR: ^ 4041 4042 st2 {v15.8h, v16.4h}, [x15] 4043 st2 {v0.8b, v2.8b}, [x0] 4044 st2 {v15.4h, v16.4h, v17.4h}, [x30] 4045 st2 {v15.8h-v16.4h}, [x15] 4046 st2 {v0.2d-v2.2d}, [x0] 4047// CHECK-ERROR: error: invalid space between two vectors 4048// CHECK-ERROR: st2 {v15.8h, v16.4h}, [x15] 4049// CHECK-ERROR: ^ 4050// CHECK-ERROR: error: invalid space between two vectors 4051// CHECK-ERROR: st2 {v0.8b, v2.8b}, [x0] 4052// CHECK-ERROR: ^ 4053// CHECK-ERROR: error: invalid operand for instruction 4054// CHECK-ERROR: st2 {v15.4h, v16.4h, v17.4h}, [x30] 4055// CHECK-ERROR: ^ 4056// CHECK-ERROR: error: expected the same vector layout 4057// CHECK-ERROR: st2 {v15.8h-v16.4h}, [x15] 4058// CHECK-ERROR: ^ 4059// CHECK-ERROR: error: invalid operand for instruction 4060// CHECK-ERROR: st2 {v0.2d-v2.2d}, [x0] 4061// CHECK-ERROR: ^ 4062 4063 st3 {v15.8h, v16.8h, v17.4h}, [x15] 4064 st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0] 4065 st3 {v0.8b, v2.8b, v3.8b}, [x0] 4066 st3 {v15.8h-v17.4h}, [x15] 4067 st3 {v31.4s-v2.4s}, [sp] 4068// CHECK-ERROR: error: invalid space between two vectors 4069// CHECK-ERROR: st3 {v15.8h, v16.8h, v17.4h}, [x15] 4070// CHECK-ERROR: ^ 4071// CHECK-ERROR: error: expected vector type register 4072// CHECK-ERROR: st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0] 4073// CHECK-ERROR: ^ 4074// CHECK-ERROR: error: invalid space between two vectors 4075// CHECK-ERROR: st3 {v0.8b, v2.8b, v3.8b}, [x0] 4076// CHECK-ERROR: ^ 4077// CHECK-ERROR: error: expected the same vector layout 4078// CHECK-ERROR: st3 {v15.8h-v17.4h}, [x15] 4079// CHECK-ERROR: ^ 4080// CHECK-ERROR: error: invalid operand for instruction 4081// CHECK-ERROR: st3 {v31.4s-v2.4s}, [sp] 4082// CHECK-ERROR: ^ 4083 4084 st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15] 4085 st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0] 4086 st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31] 4087 st4 {v15.8h-v18.4h}, [x15] 4088 st4 {v31.2s-v1.2s}, [x31] 4089// CHECK-ERROR: error: invalid space between two vectors 4090// CHECK-ERROR: st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15] 4091// CHECK-ERROR: ^ 4092// CHECK-ERROR: error: invalid space between two vectors 4093// CHECK-ERROR: st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0] 4094// CHECK-ERROR: ^ 4095// CHECK-ERROR: error: invalid number of vectors 4096// CHECK-ERROR: st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31] 4097// CHECK-ERROR: ^ 4098// CHECK-ERROR: error: expected the same vector layout 4099// CHECK-ERROR: st4 {v15.8h-v18.4h}, [x15] 4100// CHECK-ERROR: ^ 4101// CHECK-ERROR: error: invalid operand for instruction 4102// CHECK-ERROR: st4 {v31.2s-v1.2s}, [x31] 4103// CHECK-ERROR: ^ 4104 4105 ins v2.b[16], w1 4106 ins v7.h[8], w14 4107 ins v20.s[5], w30 4108 ins v1.d[2], x7 4109 ins v2.b[3], b1 4110 ins v7.h[2], h14 4111 ins v20.s[1], s30 4112 ins v1.d[0], d7 4113 4114// CHECK-ERROR: error: lane number incompatible with layout 4115// CHECK-ERROR: ins v2.b[16], w1 4116// CHECK-ERROR: ^ 4117// CHECK-ERROR: error: lane number incompatible with layout 4118// CHECK-ERROR: ins v7.h[8], w14 4119// CHECK-ERROR: ^ 4120// CHECK-ERROR: error: lane number incompatible with layout 4121// CHECK-ERROR: ins v20.s[5], w30 4122// CHECK-ERROR: ^ 4123// CHECK-ERROR: error: lane number incompatible with layout 4124// CHECK-ERROR: ins v1.d[2], x7 4125// CHECK-ERROR: ^ 4126// CHECK-ERROR: error: invalid operand for instruction 4127// CHECK-ERROR: ins v2.b[3], b1 4128// CHECK-ERROR: ^ 4129// CHECK-ERROR: error: invalid operand for instruction 4130// CHECK-ERROR: ins v7.h[2], h14 4131// CHECK-ERROR: ^ 4132// CHECK-ERROR: error: invalid operand for instruction 4133// CHECK-ERROR: ins v20.s[1], s30 4134// CHECK-ERROR: ^ 4135// CHECK-ERROR: error: invalid operand for instruction 4136// CHECK-ERROR: ins v1.d[0], d7 4137// CHECK-ERROR: ^ 4138 4139 smov w1, v0.b[16] 4140 smov w14, v6.h[8] 4141 smov x1, v0.b[16] 4142 smov x14, v6.h[8] 4143 smov x20, v9.s[5] 4144 smov w1, v0.d[0] 4145 smov w14, v6.d[1] 4146 smov x1, v0.d[0] 4147 smov x14, v6.d[1] 4148 smov x20, v9.d[0] 4149 4150// CHECK-ERROR error: lane number incompatible with layout 4151// CHECK-ERROR smov w1, v0.b[16] 4152// CHECK-ERROR ^ 4153// CHECK-ERROR error: lane number incompatible with layout 4154// CHECK-ERROR smov w14, v6.h[8] 4155// CHECK-ERROR ^ 4156// CHECK-ERROR error: lane number incompatible with layout 4157// CHECK-ERROR smov x1, v0.b[16] 4158// CHECK-ERROR ^ 4159// CHECK-ERROR error: lane number incompatible with layout 4160// CHECK-ERROR smov x14, v6.h[8] 4161// CHECK-ERROR ^ 4162// CHECK-ERROR error: lane number incompatible with layout 4163// CHECK-ERROR smov x20, v9.s[5] 4164// CHECK-ERROR ^ 4165// CHECK-ERROR error: invalid operand for instruction 4166// CHECK-ERROR smov w1, v0.d[0] 4167// CHECK-ERROR ^ 4168// CHECK-ERROR error: invalid operand for instruction 4169// CHECK-ERROR smov w14, v6.d[1] 4170// CHECK-ERROR ^ 4171// CHECK-ERROR error: invalid operand for instruction 4172// CHECK-ERROR smov x1, v0.d[0] 4173// CHECK-ERROR ^ 4174// CHECK-ERROR error: invalid operand for instruction 4175// CHECK-ERROR smov x14, v6.d[1] 4176// CHECK-ERROR ^ 4177// CHECK-ERROR error: invalid operand for instruction 4178// CHECK-ERROR smov x20, v9.d[0] 4179// CHECK-ERROR ^ 4180 4181 umov w1, v0.b[16] 4182 umov w14, v6.h[8] 4183 umov w20, v9.s[5] 4184 umov x7, v18.d[3] 4185 umov w1, v0.d[0] 4186 umov s20, v9.s[2] 4187 umov d7, v18.d[1] 4188 4189// CHECK-ERROR error: lane number incompatible with layout 4190// CHECK-ERROR umov w1, v0.b[16] 4191// CHECK-ERROR ^ 4192// CHECK-ERROR error: lane number incompatible with layout 4193// CHECK-ERROR umov w14, v6.h[8] 4194// CHECK-ERROR ^ 4195// CHECK-ERROR error: lane number incompatible with layout 4196// CHECK-ERROR umov w20, v9.s[5] 4197// CHECK-ERROR ^ 4198// CHECK-ERROR error: lane number incompatible with layout 4199// CHECK-ERROR umov x7, v18.d[3] 4200// CHECK-ERROR ^ 4201// CHECK-ERROR error: invalid operand for instruction 4202// CHECK-ERROR umov w1, v0.d[0] 4203// CHECK-ERROR ^ 4204// CHECK-ERROR error: invalid operand for instruction 4205// CHECK-ERROR umov s20, v9.s[2] 4206// CHECK-ERROR ^ 4207// CHECK-ERROR error: invalid operand for instruction 4208// CHECK-ERROR umov d7, v18.d[1] 4209// CHECK-ERROR ^ 4210 4211 Ins v1.h[2], v3.b[6] 4212 Ins v6.h[7], v7.s[2] 4213 Ins v15.d[0], v22.s[2] 4214 Ins v0.d[0], v4.b[1] 4215 4216// CHECK-ERROR error: invalid operand for instruction 4217// CHECK-ERROR Ins v1.h[2], v3.b[6] 4218// CHECK-ERROR ^ 4219// CHECK-ERROR error: invalid operand for instruction 4220// CHECK-ERROR Ins v6.h[7], v7.s[2] 4221// CHECK-ERROR ^ 4222// CHECK-ERROR error: invalid operand for instruction 4223// CHECK-ERROR Ins v15.d[0], v22.s[2] 4224// CHECK-ERROR ^ 4225// CHECK-ERROR error: invalid operand for instruction 4226// CHECK-ERROR Ins v0.d[0], v4.b[1] 4227// CHECK-ERROR ^ 4228 4229 dup v1.8h, v2.b[2] 4230 dup v11.4s, v7.h[7] 4231 dup v17.2d, v20.s[0] 4232 dup v1.16b, v2.h[2] 4233 dup v11.8h, v7.s[3] 4234 dup v17.4s, v20.d[0] 4235 dup v5.2d, v1.b[1] 4236 4237// CHECK-ERROR error: invalid operand for instruction 4238// CHECK-ERROR dup v1.8h, v2.b[2] 4239// CHECK-ERROR ^ 4240// CHECK-ERROR error: invalid operand for instruction 4241// CHECK-ERROR dup v11.4s, v7.h[7] 4242// CHECK-ERROR ^ 4243// CHECK-ERROR error: invalid operand for instruction 4244// CHECK-ERROR dup v17.2d, v20.s[0] 4245// CHECK-ERROR ^ 4246// CHECK-ERROR error: invalid operand for instruction 4247// CHECK-ERROR dup v1.16b, v2.h[2] 4248// CHECK-ERROR ^ 4249// CHECK-ERROR invalid operand for instruction 4250// CHECK-ERROR dup v11.8h, v7.s[3] 4251// CHECK-ERROR ^ 4252// CHECK-ERROR invalid operand for instruction 4253// CHECK-ERROR dup v17.4s, v20.d[0] 4254// CHECK-ERROR ^ 4255// CHECK-ERROR invalid operand for instruction 4256// CHECK-ERROR dup v5.2d, v1.b[1] 4257// CHECK-ERROR ^ 4258 4259 dup v1.8b, b1 4260 dup v11.4h, h14 4261 dup v17.2s, s30 4262 dup v1.16b, d2 4263 dup v11.8s, w16 4264 dup v17.4d, w28 4265 dup v5.2d, w0 4266 4267// CHECK-ERROR error: invalid operand for instruction 4268// CHECK-ERROR dup v1.8b, b1 4269// CHECK-ERROR ^ 4270// CHECK-ERROR error: invalid operand for instruction 4271// CHECK-ERROR dup v11.4h, h14 4272// CHECK-ERROR ^ 4273// CHECK-ERROR error: invalid operand for instruction 4274// CHECK-ERROR dup v17.2s, s30 4275// CHECK-ERROR ^ 4276// CHECK-ERROR error: invalid operand for instruction 4277// CHECK-ERROR dup v1.16b, d2 4278// CHECK-ERROR ^ 4279// CHECK-ERROR error: invalid operand for instruction 4280// CHECK-ERROR dup v11.8s, w16 4281// CHECK-ERROR ^ 4282// CHECK-ERROR error: invalid operand for instruction 4283// CHECK-ERROR dup v17.4d, w28 4284// CHECK-ERROR ^ 4285// CHECK-ERROR error: invalid operand for instruction 4286// CHECK-ERROR dup v5.2d, w0 4287// CHECK-ERROR ^ 4288 4289//---------------------------------------------------------------------- 4290// Scalar Compare Bitwise Equal 4291//---------------------------------------------------------------------- 4292 4293 cmeq b20, d21, d22 4294 4295// CHECK-ERROR: error: invalid operand for instruction 4296// CHECK-ERROR: cmeq b20, d21, d22 4297// CHECK-ERROR: ^ 4298 4299//---------------------------------------------------------------------- 4300// Scalar Compare Bitwise Equal To Zero 4301//---------------------------------------------------------------------- 4302 4303 cmeq d20, b21, #0 4304 4305// CHECK-ERROR: error: invalid operand for instruction 4306// CHECK-ERROR: cmeq d20, b21, #0 4307// CHECK-ERROR: ^ 4308 4309//---------------------------------------------------------------------- 4310// Scalar Compare Unsigned Higher Or Same 4311//---------------------------------------------------------------------- 4312 4313 cmhs b20, d21, d22 4314 4315// CHECK-ERROR: error: invalid operand for instruction 4316// CHECK-ERROR: cmhs b20, d21, d22 4317// CHECK-ERROR: ^ 4318 4319 4320//---------------------------------------------------------------------- 4321// Scalar Compare Signed Greather Than Or Equal 4322//---------------------------------------------------------------------- 4323 4324 cmge b20, d21, d22 4325 4326// CHECK-ERROR: error: invalid operand for instruction 4327// CHECK-ERROR: cmge b20, d21, d22 4328// CHECK-ERROR: ^ 4329 4330//---------------------------------------------------------------------- 4331// Scalar Compare Signed Greather Than Or Equal To Zero 4332//---------------------------------------------------------------------- 4333 4334 cmge d20, b21, #0 4335 4336// CHECK-ERROR: error: invalid operand for instruction 4337// CHECK-ERROR: cmge d20, b21, #0 4338// CHECK-ERROR: ^ 4339 4340//---------------------------------------------------------------------- 4341// Scalar Compare Unsigned Higher 4342//---------------------------------------------------------------------- 4343 4344 cmhi b20, d21, d22 4345 4346// CHECK-ERROR: error: invalid operand for instruction 4347// CHECK-ERROR: cmhi b20, d21, d22 4348// CHECK-ERROR: ^ 4349 4350//---------------------------------------------------------------------- 4351// Scalar Compare Signed Greater Than 4352//---------------------------------------------------------------------- 4353 4354 cmgt b20, d21, d22 4355 4356// CHECK-ERROR: error: invalid operand for instruction 4357// CHECK-ERROR: cmgt b20, d21, d22 4358// CHECK-ERROR: ^ 4359 4360//---------------------------------------------------------------------- 4361// Scalar Compare Signed Greater Than Zero 4362//---------------------------------------------------------------------- 4363 4364 cmgt d20, b21, #0 4365 4366// CHECK-ERROR: error: invalid operand for instruction 4367// CHECK-ERROR: cmgt d20, b21, #0 4368// CHECK-ERROR: ^ 4369 4370//---------------------------------------------------------------------- 4371// Scalar Compare Signed Less Than Or Equal To Zero 4372//---------------------------------------------------------------------- 4373 4374 cmle d20, b21, #0 4375 4376// CHECK-ERROR: error: invalid operand for instruction 4377// CHECK-ERROR: cmle d20, b21, #0 4378// CHECK-ERROR: ^ 4379 4380//---------------------------------------------------------------------- 4381// Scalar Compare Less Than Zero 4382//---------------------------------------------------------------------- 4383 4384 cmlt d20, b21, #0 4385 4386// CHECK-ERROR: error: invalid operand for instruction 4387// CHECK-ERROR: cmlt d20, b21, #0 4388// CHECK-ERROR: ^ 4389 4390//---------------------------------------------------------------------- 4391// Scalar Compare Bitwise Test Bits 4392//---------------------------------------------------------------------- 4393 4394 cmtst b20, d21, d22 4395 4396// CHECK-ERROR: error: invalid operand for instruction 4397// CHECK-ERROR: cmtst b20, d21, d22 4398// CHECK-ERROR: ^ 4399 4400//---------------------------------------------------------------------- 4401// Scalar Signed Saturating Accumulated of Unsigned Value 4402//---------------------------------------------------------------------- 4403 4404 suqadd b0, h1 4405 suqadd h0, s1 4406 suqadd s0, d1 4407 suqadd d0, b0 4408 4409// CHECK-ERROR: error: invalid operand for instruction 4410// CHECK-ERROR: suqadd b0, h1 4411// CHECK-ERROR: ^ 4412// CHECK-ERROR: error: invalid operand for instruction 4413// CHECK-ERROR: suqadd h0, s1 4414// CHECK-ERROR: ^ 4415// CHECK-ERROR: error: invalid operand for instruction 4416// CHECK-ERROR: suqadd s0, d1 4417// CHECK-ERROR: ^ 4418// CHECK-ERROR: error: invalid operand for instruction 4419// CHECK-ERROR: suqadd d0, b0 4420// CHECK-ERROR: ^ 4421 4422//---------------------------------------------------------------------- 4423// Scalar Unsigned Saturating Accumulated of Signed Value 4424//---------------------------------------------------------------------- 4425 4426 usqadd b0, h1 4427 usqadd h0, s1 4428 usqadd s0, d1 4429 usqadd d0, b1 4430 4431// CHECK-ERROR: error: invalid operand for instruction 4432// CHECK-ERROR: usqadd b0, h1 4433// CHECK-ERROR: ^ 4434// CHECK-ERROR: error: invalid operand for instruction 4435// CHECK-ERROR: usqadd h0, s1 4436// CHECK-ERROR: ^ 4437// CHECK-ERROR: error: invalid operand for instruction 4438// CHECK-ERROR: usqadd s0, d1 4439// CHECK-ERROR: ^ 4440// CHECK-ERROR: error: invalid operand for instruction 4441// CHECK-ERROR: usqadd d0, b1 4442// CHECK-ERROR: ^ 4443 4444//---------------------------------------------------------------------- 4445// Scalar Absolute Value 4446//---------------------------------------------------------------------- 4447 4448 abs d29, s24 4449 4450// CHECK-ERROR: error: invalid operand for instruction 4451// CHECK-ERROR: abs d29, s24 4452// CHECK-ERROR: ^ 4453 4454//---------------------------------------------------------------------- 4455// Scalar Negate 4456//---------------------------------------------------------------------- 4457 4458 neg d29, s24 4459 4460// CHECK-ERROR: error: invalid operand for instruction 4461// CHECK-ERROR: neg d29, s24 4462// CHECK-ERROR: ^ 4463 4464//---------------------------------------------------------------------- 4465// Signed Saturating Doubling Multiply-Add Long 4466//---------------------------------------------------------------------- 4467 4468 sqdmlal s17, h27, s12 4469 sqdmlal d19, s24, d12 4470 4471// CHECK-ERROR: error: invalid operand for instruction 4472// CHECK-ERROR: sqdmlal s17, h27, s12 4473// CHECK-ERROR: ^ 4474// CHECK-ERROR: error: invalid operand for instruction 4475// CHECK-ERROR: sqdmlal d19, s24, d12 4476// CHECK-ERROR: ^ 4477 4478//---------------------------------------------------------------------- 4479// Signed Saturating Doubling Multiply-Subtract Long 4480//---------------------------------------------------------------------- 4481 4482 sqdmlsl s14, h12, s25 4483 sqdmlsl d12, s23, d13 4484 4485// CHECK-ERROR: error: invalid operand for instruction 4486// CHECK-ERROR: sqdmlsl s14, h12, s25 4487// CHECK-ERROR: ^ 4488// CHECK-ERROR: error: invalid operand for instruction 4489// CHECK-ERROR: sqdmlsl d12, s23, d13 4490// CHECK-ERROR: ^ 4491 4492//---------------------------------------------------------------------- 4493// Signed Saturating Doubling Multiply Long 4494//---------------------------------------------------------------------- 4495 4496 sqdmull s12, h22, s12 4497 sqdmull d15, s22, d12 4498 4499// CHECK-ERROR: error: invalid operand for instruction 4500// CHECK-ERROR: sqdmull s12, h22, s12 4501// CHECK-ERROR: ^ 4502// CHECK-ERROR: error: invalid operand for instruction 4503// CHECK-ERROR: sqdmull d15, s22, d12 4504// CHECK-ERROR: ^ 4505 4506//---------------------------------------------------------------------- 4507// Scalar Signed Saturating Extract Unsigned Narrow 4508//---------------------------------------------------------------------- 4509 4510 sqxtun b19, b14 4511 sqxtun h21, h15 4512 sqxtun s20, s12 4513 4514// CHECK-ERROR: error: invalid operand for instruction 4515// CHECK-ERROR: sqxtun b19, b14 4516// CHECK-ERROR: ^ 4517// CHECK-ERROR: error: invalid operand for instruction 4518// CHECK-ERROR: sqxtun h21, h15 4519// CHECK-ERROR: ^ 4520// CHECK-ERROR: error: invalid operand for instruction 4521// CHECK-ERROR: sqxtun s20, s12 4522// CHECK-ERROR: ^ 4523 4524//---------------------------------------------------------------------- 4525// Scalar Signed Saturating Extract Signed Narrow 4526//---------------------------------------------------------------------- 4527 4528 sqxtn b18, b18 4529 sqxtn h20, h17 4530 sqxtn s19, s14 4531 4532// CHECK-ERROR: error: invalid operand for instruction 4533// CHECK-ERROR: sqxtn b18, b18 4534// CHECK-ERROR: ^ 4535// CHECK-ERROR: error: invalid operand for instruction 4536// CHECK-ERROR: sqxtn h20, h17 4537// CHECK-ERROR: ^ 4538// CHECK-ERROR: error: invalid operand for instruction 4539// CHECK-ERROR: sqxtn s19, s14 4540// CHECK-ERROR: ^ 4541 4542 4543//---------------------------------------------------------------------- 4544// Scalar Unsigned Saturating Extract Narrow 4545//---------------------------------------------------------------------- 4546 4547 uqxtn b18, b18 4548 uqxtn h20, h17 4549 uqxtn s19, s14 4550 4551// CHECK-ERROR: error: invalid operand for instruction 4552// CHECK-ERROR: uqxtn b18, b18 4553// CHECK-ERROR: ^ 4554// CHECK-ERROR: error: invalid operand for instruction 4555// CHECK-ERROR: uqxtn h20, h17 4556// CHECK-ERROR: ^ 4557// CHECK-ERROR: error: invalid operand for instruction 4558// CHECK-ERROR: uqxtn s19, s14 4559// CHECK-ERROR: ^ 4560