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 //---------------------------------------------------------------------- 218 // Vector Move Immediate - bytemask, per doubleword 219 //--------------------------------------------------------------------- 220 // invalid bytemask (0x00 or 0xff) 221 movi v0.2d, #0x10ff00ff00ff00ff 222 223 // CHECK:ERROR: error: invalid operand for instruction 224 // CHECK:ERROR: movi v0.2d, #0x10ff00ff00ff00ff 225 // CHECK:ERROR: ^ 226 227 //---------------------------------------------------------------------- 228 // Vector Move Immediate - bytemask, one doubleword 229 //---------------------------------------------------------------------- 230 // invalid bytemask (0x00 or 0xff) 231 movi v0.2d, #0xffff00ff001f00ff 232 233 // CHECK:ERROR: error: invalid operand for instruction 234 // CHECK:ERROR: movi v0.2d, #0xffff00ff001f00ff 235 // CHECK:ERROR: ^ 236 //---------------------------------------------------------------------- 237 // Vector Floating Point Move Immediate 238 //---------------------------------------------------------------------- 239 // invalid vector type (2s, 4s, 2d) 240 fmov v0.4h, #1.0 241 242 // CHECK:ERROR: error: invalid operand for instruction 243 // CHECK:ERROR: fmov v0.4h, #1.0 244 // CHECK:ERROR: ^ 245 246 //---------------------------------------------------------------------- 247 // Vector Move - register 248 //---------------------------------------------------------------------- 249 // invalid vector type (8b, 16b) 250 mov v0.2s, v31.8b 251 // CHECK:ERROR: error: invalid operand for instruction 252 // CHECK:ERROR: mov v0.2s, v31.8b 253 // CHECK:ERROR: ^ 254 255 //---------------------------------------------------------------------- 256 // Vector Absolute Difference and Accumulate (Signed, Unsigned) 257 //---------------------------------------------------------------------- 258 259 // Mismatched and invalid vector types (2d) 260 saba v0.16b, v1.8b, v2.8b 261 uaba v0.2d, v1.2d, v2.2d 262 263 // CHECK-ERROR: error: invalid operand for instruction 264 // CHECK-ERROR: saba v0.16b, v1.8b, v2.8b 265 // CHECK-ERROR: ^ 266 // CHECK-ERROR: error: invalid operand for instruction 267 // CHECK-ERROR: uaba v0.2d, v1.2d, v2.2d 268 // CHECK-ERROR: ^ 269 270 //---------------------------------------------------------------------- 271 // Vector Absolute Difference and Accumulate (Signed, Unsigned) 272 // Vector Absolute Difference (Signed, Unsigned) 273 274 // Mismatched and invalid vector types (2d) 275 uaba v0.16b, v1.8b, v2.8b 276 saba v0.2d, v1.2d, v2.2d 277 uabd v0.4s, v1.2s, v2.2s 278 sabd v0.4h, v1.8h, v8.8h 279 280 // CHECK-ERROR: error: invalid operand for instruction 281 // CHECK-ERROR: uaba v0.16b, v1.8b, v2.8b 282 // CHECK-ERROR: ^ 283 // CHECK-ERROR: error: invalid operand for instruction 284 // CHECK-ERROR: saba v0.2d, v1.2d, v2.2d 285 // CHECK-ERROR: ^ 286 // CHECK-ERROR: error: invalid operand for instruction 287 // CHECK-ERROR: uabd v0.4s, v1.2s, v2.2s 288 // CHECK-ERROR: ^ 289 // CHECK-ERROR: error: invalid operand for instruction 290 // CHECK-ERROR: sabd v0.4h, v1.8h, v8.8h 291 // CHECK-ERROR: ^ 292 293 //---------------------------------------------------------------------- 294 // Vector Absolute Difference (Floating Point) 295 //---------------------------------------------------------------------- 296 // Mismatched and invalid vector types 297 fabd v0.2s, v1.4s, v2.2d 298 fabd v0.4h, v1.4h, v2.4h 299 300 // CHECK-ERROR: error: invalid operand for instruction 301 // CHECK-ERROR: fabd v0.2s, v1.4s, v2.2d 302 // CHECK-ERROR: ^ 303 // CHECK-ERROR: error: invalid operand for instruction 304 // CHECK-ERROR: fabd v0.4h, v1.4h, v2.4h 305 // CHECK-ERROR: ^ 306 //---------------------------------------------------------------------- 307 // Vector Multiply (Polynomial) 308 //---------------------------------------------------------------------- 309 310 // Mismatched and invalid vector types 311 pmul v0.8b, v1.8b, v2.16b 312 pmul v0.2s, v1.2s, v2.2s 313 314 // CHECK-ERROR: error: invalid operand for instruction 315 // CHECK-ERROR: pmul v0.8b, v1.8b, v2.16b 316 // CHECK-ERROR: ^ 317 // CHECK-ERROR: error: invalid operand for instruction 318 // CHECK-ERROR: pmul v0.2s, v1.2s, v2.2s 319 // CHECK-ERROR: ^ 320 321 //---------------------------------------------------------------------- 322 // Scalar Integer Add and Sub 323 //---------------------------------------------------------------------- 324 325 // Mismatched registers 326 add d0, s1, d2 327 sub s1, d1, d2 328 329 // CHECK-ERROR: error: invalid operand for instruction 330 // CHECK-ERROR: add d0, s1, d2 331 // CHECK-ERROR: ^ 332 // CHECK-ERROR: error: invalid operand for instruction 333 // CHECK-ERROR: sub s1, d1, d2 334 // CHECK-ERROR: ^ 335 336 //---------------------------------------------------------------------- 337 // Vector Reciprocal Step (Floating Point) 338 //---------------------------------------------------------------------- 339 340 // Mismatched and invalid vector types 341 frecps v0.4s, v1.2d, v2.4s 342 frecps v0.8h, v1.8h, v2.8h 343 344 // CHECK-ERROR: error: invalid operand for instruction 345 // CHECK-ERROR: frecps v0.4s, v1.2d, v2.4s 346 // CHECK-ERROR: ^ 347 // CHECK-ERROR: error: invalid operand for instruction 348 // CHECK-ERROR: frecps v0.8h, v1.8h, v2.8h 349 // CHECK-ERROR: ^ 350 351 //---------------------------------------------------------------------- 352 // Vector Reciprocal Square Root Step (Floating Point) 353 //---------------------------------------------------------------------- 354 355 // Mismatched and invalid vector types 356 frsqrts v0.2d, v1.2d, v2.2s 357 frsqrts v0.4h, v1.4h, v2.4h 358 359 // CHECK-ERROR: error: invalid operand for instruction 360 // CHECK-ERROR: frsqrts v0.2d, v1.2d, v2.2s 361 // CHECK-ERROR: ^ 362 // CHECK-ERROR: error: invalid operand for instruction 363 // CHECK-ERROR: frsqrts v0.4h, v1.4h, v2.4h 364 // CHECK-ERROR: ^ 365 366 367 //---------------------------------------------------------------------- 368 // Vector Absolute Compare Mask Less Than Or Equal (Floating Point) 369 //---------------------------------------------------------------------- 370 371 // Mismatched and invalid vector types 372 facge v0.2d, v1.2s, v2.2d 373 facge v0.4h, v1.4h, v2.4h 374 facle v0.8h, v1.4h, v2.4h 375 376 // CHECK-ERROR: error: invalid operand for instruction 377 // CHECK-ERROR: facge v0.2d, v1.2s, v2.2d 378 // CHECK-ERROR: ^ 379 // CHECK-ERROR: error: invalid operand for instruction 380 // CHECK-ERROR: facge v0.4h, v1.4h, v2.4h 381 // CHECK-ERROR: ^ 382 // CHECK-ERROR: error: invalid operand for instruction 383 // CHECK-ERROR: facle v0.8h, v1.4h, v2.4h 384 // CHECK-ERROR: ^ 385 //---------------------------------------------------------------------- 386 // Vector Absolute Compare Mask Less Than (Floating Point) 387 //---------------------------------------------------------------------- 388 389 // Mismatched and invalid vector types 390 facgt v0.2d, v1.2d, v2.4s 391 facgt v0.8h, v1.8h, v2.8h 392 faclt v0.8b, v1.8b, v2.8b 393 394 // CHECK-ERROR: error: invalid operand for instruction 395 // CHECK-ERROR: facgt v0.2d, v1.2d, v2.4s 396 // CHECK-ERROR: ^ 397 // CHECK-ERROR: error: invalid operand for instruction 398 // CHECK-ERROR: facgt v0.8h, v1.8h, v2.8h 399 // CHECK-ERROR: ^ 400 // CHECK-ERROR: error: invalid operand for instruction 401 // CHECK-ERROR: faclt v0.8b, v1.8b, v2.8b 402 // CHECK-ERROR: ^ 403 404 405 //---------------------------------------------------------------------- 406 // Vector Compare Mask Equal (Integer) 407 //---------------------------------------------------------------------- 408 409 // Mismatched vector types 410 cmeq c0.2d, v1.2d, v2.2s 411 412 // CHECK-ERROR: error: invalid operand for instruction 413 // CHECK-ERROR: cmeq c0.2d, v1.2d, v2.2s 414 // CHECK-ERROR: ^ 415 416 //---------------------------------------------------------------------- 417 // Vector Compare Mask Higher or Same (Unsigned Integer) 418 // Vector Compare Mask Less or Same (Unsigned Integer) 419 // CMLS is alias for CMHS with operands reversed. 420 //---------------------------------------------------------------------- 421 422 // Mismatched vector types 423 cmhs c0.4h, v1.8b, v2.8b 424 cmls c0.16b, v1.16b, v2.2d 425 426 // CHECK-ERROR: error: invalid operand for instruction 427 // CHECK-ERROR: cmhs c0.4h, v1.8b, v2.8b 428 // CHECK-ERROR: ^ 429 // CHECK-ERROR: error: invalid operand for instruction 430 // CHECK-ERROR: cmls c0.16b, v1.16b, v2.2d 431 // CHECK-ERROR: ^ 432 433 //---------------------------------------------------------------------- 434 // Vector Compare Mask Greater Than or Equal (Integer) 435 // Vector Compare Mask Less Than or Equal (Integer) 436 // CMLE is alias for CMGE with operands reversed. 437 //---------------------------------------------------------------------- 438 439 // Mismatched vector types 440 cmge c0.8h, v1.8b, v2.8b 441 cmle c0.4h, v1.2s, v2.2s 442 443 // CHECK-ERROR: error: invalid operand for instruction 444 // CHECK-ERROR: cmge c0.8h, v1.8b, v2.8b 445 // CHECK-ERROR: ^ 446 // CHECK-ERROR: error: invalid operand for instruction 447 // CHECK-ERROR: cmle c0.4h, v1.2s, v2.2s 448 // CHECK-ERROR: ^ 449 450 //---------------------------------------------------------------------- 451 // Vector Compare Mask Higher (Unsigned Integer) 452 // Vector Compare Mask Lower (Unsigned Integer) 453 // CMLO is alias for CMHI with operands reversed. 454 //---------------------------------------------------------------------- 455 456 // Mismatched vector types 457 cmhi c0.4s, v1.4s, v2.16b 458 cmlo c0.8b, v1.8b, v2.2s 459 460 // CHECK-ERROR: error: invalid operand for instruction 461 // CHECK-ERROR: cmhi c0.4s, v1.4s, v2.16b 462 // CHECK-ERROR: ^ 463 // CHECK-ERROR: error: invalid operand for instruction 464 // CHECK-ERROR: cmlo c0.8b, v1.8b, v2.2s 465 // CHECK-ERROR: ^ 466 467 //---------------------------------------------------------------------- 468 // Vector Compare Mask Greater Than (Integer) 469 // Vector Compare Mask Less Than (Integer) 470 // CMLT is alias for CMGT with operands reversed. 471 //---------------------------------------------------------------------- 472 473 // Mismatched vector types 474 cmgt c0.8b, v1.4s, v2.16b 475 cmlt c0.8h, v1.16b, v2.4s 476 477 // CHECK-ERROR: error: invalid operand for instruction 478 // CHECK-ERROR: cmgt c0.8b, v1.4s, v2.16b 479 // CHECK-ERROR: ^ 480 // CHECK-ERROR: error: invalid operand for instruction 481 // CHECK-ERROR: cmlt c0.8h, v1.16b, v2.4s 482 // CHECK-ERROR: ^ 483 484 //---------------------------------------------------------------------- 485 // Vector Compare Mask Bitwise Test (Integer) 486 //---------------------------------------------------------------------- 487 488 // Mismatched vector types 489 cmtst c0.16b, v1.16b, v2.4s 490 491 // CHECK-ERROR: error: invalid operand for instruction 492 // CHECK-ERROR: cmtst c0.16b, v1.16b, v2.4s 493 // CHECK-ERROR: ^ 494 495 //---------------------------------------------------------------------- 496 // Vector Compare Mask Equal (Floating Point) 497 //---------------------------------------------------------------------- 498 499 // Mismatched and invalid vector types 500 fcmeq v0.2d, v1.2s, v2.2d 501 fcmeq v0.16b, v1.16b, v2.16b 502 fcmeq v0.8b, v1.4h, v2.4h 503 504 // CHECK-ERROR: error: invalid operand for instruction 505 // CHECK-ERROR: fcmeq v0.2d, v1.2s, v2.2d 506 // CHECK-ERROR: ^ 507 // CHECK-ERROR: error: invalid operand for instruction 508 // CHECK-ERROR: fcmeq v0.16b, v1.16b, v2.16b 509 // CHECK-ERROR: ^ 510 // CHECK-ERROR: error: invalid operand for instruction 511 // CHECK-ERROR: fcmeq v0.8b, v1.4h, v2.4h 512 // CHECK-ERROR: ^ 513 514 //---------------------------------------------------------------------- 515 // Vector Compare Mask Greater Than Or Equal (Floating Point) 516 // Vector Compare Mask Less Than Or Equal (Floating Point) 517 // FCMLE is alias for FCMGE with operands reversed. 518 //---------------------------------------------------------------------- 519 520 // Mismatched and invalid vector types 521 fcmge v31.4s, v29.2s, v28.4s 522 fcmge v3.8b, v8.2s, v12.2s 523 fcmle v17.8h, v15.2d, v13.2d 524 525 // CHECK-ERROR: error: invalid operand for instruction 526 // CHECK-ERROR: fcmge v31.4s, v29.2s, v28.4s 527 // CHECK-ERROR: ^ 528 // CHECK-ERROR: error: invalid operand for instruction 529 // CHECK-ERROR: fcmge v3.8b, v8.2s, v12.2s 530 // CHECK-ERROR: ^ 531 // CHECK-ERROR: error: invalid operand for instruction 532 // CHECK-ERROR: fcmle v17.8h, v15.2d, v13.2d 533 // CHECK-ERROR: ^ 534 535 //---------------------------------------------------------------------- 536 // Vector Compare Mask Greater Than (Floating Point) 537 // Vector Compare Mask Less Than (Floating Point) 538 // FCMLT is alias for FCMGT with operands reversed. 539 //---------------------------------------------------------------------- 540 541 // Mismatched and invalid vector types 542 fcmgt v0.2d, v31.2s, v16.2s 543 fcmgt v4.4s, v7.4s, v15.4h 544 fcmlt v29.2d, v5.2d, v2.16b 545 546 // CHECK-ERROR: error: invalid operand for instruction 547 // CHECK-ERROR: fcmgt v0.2d, v31.2s, v16.2s 548 // CHECK-ERROR: ^ 549 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 550 // CHECK-ERROR: fcmgt v4.4s, v7.4s, v15.4h 551 // CHECK-ERROR: ^ 552 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 553 // CHECK-ERROR: fcmlt v29.2d, v5.2d, v2.16b 554 // CHECK-ERROR: ^ 555 556 //---------------------------------------------------------------------- 557 // Vector Compare Mask Equal to Zero (Integer) 558 //---------------------------------------------------------------------- 559 // Mismatched vector types and invalid imm 560 // Mismatched vector types 561 cmeq c0.2d, v1.2s, #0 562 cmeq c0.2d, v1.2d, #1 563 564 // CHECK-ERROR: error: invalid operand for instruction 565 // CHECK-ERROR: cmeq c0.2d, v1.2s, #0 566 // CHECK-ERROR: ^ 567 // CHECK-ERROR: error: invalid operand for instruction 568 // CHECK-ERROR: cmeq c0.2d, v1.2d, #1 569 // CHECK-ERROR: ^ 570 571 //---------------------------------------------------------------------- 572 // Vector Compare Mask Greater Than or Equal to Zero (Signed Integer) 573 //---------------------------------------------------------------------- 574 // Mismatched vector types and invalid imm 575 cmge c0.8h, v1.8b, #0 576 cmge c0.4s, v1.4s, #-1 577 578 // CHECK-ERROR: error: invalid operand for instruction 579 // CHECK-ERROR: cmge c0.8h, v1.8b, #0 580 // CHECK-ERROR: ^ 581 // CHECK-ERROR: error: invalid operand for instruction 582 // CHECK-ERROR: cmge c0.4s, v1.4s, #-1 583 // CHECK-ERROR: ^ 584 585 //---------------------------------------------------------------------- 586 // Vector Compare Mask Greater Than Zero (Signed Integer) 587 //---------------------------------------------------------------------- 588 // Mismatched vector types and invalid imm 589 cmgt c0.8b, v1.4s, #0 590 cmgt c0.8b, v1.8b, #-255 591 592 // CHECK-ERROR: error: invalid operand for instruction 593 // CHECK-ERROR: cmgt c0.8b, v1.4s, #0 594 // CHECK-ERROR: ^ 595 // CHECK-ERROR: error: invalid operand for instruction 596 // CHECK-ERROR: cmgt c0.8b, v1.8b, #-255 597 // CHECK-ERROR: ^ 598 599 //---------------------------------------------------------------------- 600 // Vector Compare Mask Less Than or Equal To Zero (Signed Integer) 601 //---------------------------------------------------------------------- 602 // Mismatched vector types and invalid imm 603 cmle c0.4h, v1.2s, #0 604 cmle c0.16b, v1.16b, #16 605 606 // CHECK-ERROR: error: invalid operand for instruction 607 // CHECK-ERROR: cmle c0.4h, v1.2s, #0 608 // CHECK-ERROR: ^ 609 // CHECK-ERROR: error: invalid operand for instruction 610 // CHECK-ERROR: cmle c0.16b, v1.16b, #16 611 // CHECK-ERROR: ^ 612 //---------------------------------------------------------------------- 613 // Vector Compare Mask Less Than Zero (Signed Integer) 614 //---------------------------------------------------------------------- 615 // Mismatched vector types and invalid imm 616 cmlt c0.8h, v1.16b, #0 617 cmlt c0.8h, v1.8h, #-15 618 619 // CHECK-ERROR: error: invalid operand for instruction 620 // CHECK-ERROR: cmlt c0.8h, v1.16b, #0 621 // CHECK-ERROR: ^ 622 // CHECK-ERROR: error: invalid operand for instruction 623 // CHECK-ERROR: cmlt c0.8h, v1.8h, #-15 624 // CHECK-ERROR: ^ 625 626 //---------------------------------------------------------------------- 627 // Vector Compare Mask Equal to Zero (Floating Point) 628 //---------------------------------------------------------------------- 629 630 // Mismatched and invalid vector types, invalid imm 631 fcmeq v0.2d, v1.2s, #0.0 632 fcmeq v0.16b, v1.16b, #0.0 633 fcmeq v0.8b, v1.4h, #1.0 634 fcmeq v0.8b, v1.4h, #1 635 636 // CHECK-ERROR: error: invalid operand for instruction 637 // CHECK-ERROR: fcmeq v0.2d, v1.2s, #0.0 638 // CHECK-ERROR: ^ 639 // CHECK-ERROR: error: invalid operand for instruction 640 // CHECK-ERROR: fcmeq v0.16b, v1.16b, #0.0 641 // CHECK-ERROR: ^ 642 // CHECK-ERROR: error: invalid operand for instruction 643 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1.0 644 // CHECK-ERROR: ^ 645 // CHECK-ERROR: error: Expected floating-point immediate 646 // CHECK-ERROR: fcmeq v0.8b, v1.4h, #1 647 // CHECK-ERROR: ^ 648 //---------------------------------------------------------------------- 649 // Vector Compare Mask Greater Than or Equal to Zero (Floating Point) 650 //---------------------------------------------------------------------- 651 652 // Mismatched and invalid vector types, invalid imm 653 fcmge v31.4s, v29.2s, #0.0 654 fcmge v3.8b, v8.2s, #0.0 655 fcmle v17.8h, v15.2d, #-1.0 656 fcmle v17.8h, v15.2d, #0 657 658 // CHECK-ERROR: error: invalid operand for instruction 659 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0 660 // CHECK-ERROR: ^ 661 // CHECK-ERROR: error: invalid operand for instruction 662 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0 663 // CHECK-ERROR: ^ 664 // CHECK-ERROR: error: invalid operand for instruction 665 // CHECK-ERROR: fcmle v17.8h, v15.2d, #-1.0 666 // CHECK-ERROR: ^ 667 // CHECK-ERROR: error: Expected floating-point immediate 668 // CHECK-ERROR: fcmle v17.8h, v15.2d, #0 669 // CHECK-ERROR: ^ 670 //---------------------------------------------------------------------- 671 // Vector Compare Mask Greater Than Zero (Floating Point) 672 //---------------------------------------------------------------------- 673 // Mismatched and invalid vector types, invalid imm 674 fcmgt v0.2d, v31.2s, #0.0 675 fcmgt v4.4s, v7.4h, #0.0 676 fcmlt v29.2d, v5.2d, #255.0 677 fcmlt v29.2d, v5.2d, #255 678 679 // CHECK-ERROR: error: invalid operand for instruction 680 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0 681 // CHECK-ERROR: ^ 682 // CHECK-ERROR: error: invalid operand for instruction 683 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0 684 // CHECK-ERROR: ^ 685 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 686 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255.0 687 // CHECK-ERROR: ^ 688 // CHECK-ERROR: error: Expected floating-point immediate 689 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #255 690 // CHECK-ERROR: ^ 691 692 //---------------------------------------------------------------------- 693 // Vector Compare Mask Less Than or Equal To Zero (Floating Point) 694 //---------------------------------------------------------------------- 695 // Mismatched and invalid vector types, invalid imm 696 fcmge v31.4s, v29.2s, #0.0 697 fcmge v3.8b, v8.2s, #0.0 698 fcmle v17.2d, v15.2d, #15.0 699 fcmle v17.2d, v15.2d, #15 700 701 // CHECK-ERROR: error: invalid operand for instruction 702 // CHECK-ERROR: fcmge v31.4s, v29.2s, #0.0 703 // CHECK-ERROR: ^ 704 // CHECK-ERROR: error: invalid operand for instruction 705 // CHECK-ERROR: fcmge v3.8b, v8.2s, #0.0 706 // CHECK-ERROR: ^ 707 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 708 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15.0 709 // CHECK-ERROR: ^ 710 // CHECK-ERROR: error: Expected floating-point immediate 711 // CHECK-ERROR: fcmle v17.2d, v15.2d, #15 712 // CHECK-ERROR: ^ 713 714 //---------------------------------------------------------------------- 715 // Vector Compare Mask Less Than Zero (Floating Point) 716 //---------------------------------------------------------------------- 717 // Mismatched and invalid vector types, invalid imm 718 fcmgt v0.2d, v31.2s, #0.0 719 fcmgt v4.4s, v7.4h, #0.0 720 fcmlt v29.2d, v5.2d, #16.0 721 fcmlt v29.2d, v5.2d, #2 722 723 // CHECK-ERROR: error: invalid operand for instruction 724 // CHECK-ERROR: fcmgt v0.2d, v31.2s, #0.0 725 // CHECK-ERROR: ^ 726 // CHECK-ERROR: error: invalid operand for instruction 727 // CHECK-ERROR: fcmgt v4.4s, v7.4h, #0.0 728 // CHECK-ERROR: ^ 729 // CHECK-ERROR: error: expected floating-point constant #0.0 or invalid register type 730 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #16.0 731 // CHECK-ERROR: ^ 732 // CHECK-ERROR: error: Expected floating-point immediate 733 // CHECK-ERROR: fcmlt v29.2d, v5.2d, #2 734 // CHECK-ERROR: ^ 735 736 /----------------------------------------------------------------------- 737 // Vector Integer Halving Add (Signed) 738 // Vector Integer Halving Add (Unsigned) 739 // Vector Integer Halving Sub (Signed) 740 // Vector Integer Halving Sub (Unsigned) 741 //---------------------------------------------------------------------- 742 // Mismatched and invalid vector types (2d) 743 shadd v0.2d, v1.2d, v2.2d 744 uhadd v4.2s, v5.2s, v5.4h 745 shsub v11.4h, v12.8h, v13.4h 746 uhsub v31.16b, v29.8b, v28.8b 747 748 // CHECK-ERROR: error: invalid operand for instruction 749 // CHECK-ERROR: shadd v0.2d, v1.2d, v2.2d 750 // CHECK-ERROR: ^ 751 // CHECK-ERROR: error: invalid operand for instruction 752 // CHECK-ERROR: uhadd v4.2s, v5.2s, v5.4h 753 // CHECK-ERROR: ^ 754 // CHECK-ERROR: error: invalid operand for instruction 755 // CHECK-ERROR: shsub v11.4h, v12.8h, v13.4h 756 // CHECK-ERROR: ^ 757 // CHECK-ERROR: error: invalid operand for instruction 758 // CHECK-ERROR: uhsub v31.16b, v29.8b, v28.8b 759 // CHECK-ERROR: ^ 760 761 //---------------------------------------------------------------------- 762 // Vector Integer Rouding Halving Add (Signed) 763 // Vector Integer Rouding Halving Add (Unsigned) 764 //---------------------------------------------------------------------- 765 766 // Mismatched and invalid vector types (2d) 767 srhadd v0.2s, v1.2s, v2.2d 768 urhadd v0.16b, v1.16b, v2.8h 769 770 // CHECK-ERROR: error: invalid operand for instruction 771 // CHECK-ERROR: srhadd v0.2s, v1.2s, v2.2d 772 // CHECK-ERROR: ^ 773 // CHECK-ERROR: error: invalid operand for instruction 774 // CHECK-ERROR: urhadd v0.16b, v1.16b, v2.8h 775 // CHECK-ERROR: ^ 776 777 //---------------------------------------------------------------------- 778 // Vector Integer Saturating Add (Signed) 779 // Vector Integer Saturating Add (Unsigned) 780 // Vector Integer Saturating Sub (Signed) 781 // Vector Integer Saturating Sub (Unsigned) 782 //---------------------------------------------------------------------- 783 784 // Mismatched vector types 785 sqadd v0.2s, v1.2s, v2.2d 786 uqadd v31.8h, v1.4h, v2.4h 787 sqsub v10.8h, v1.16b, v2.16b 788 uqsub v31.8b, v1.8b, v2.4s 789 790 // CHECK-ERROR: error: invalid operand for instruction 791 // CHECK-ERROR: sqadd v0.2s, v1.2s, v2.2d 792 // CHECK-ERROR: ^ 793 // CHECK-ERROR: error: invalid operand for instruction 794 // CHECK-ERROR: uqadd v31.8h, v1.4h, v2.4h 795 // CHECK-ERROR: ^ 796 // CHECK-ERROR: error: invalid operand for instruction 797 // CHECK-ERROR: sqsub v10.8h, v1.16b, v2.16b 798 // CHECK-ERROR: ^ 799 // CHECK-ERROR: error: invalid operand for instruction 800 // CHECK-ERROR: uqsub v31.8b, v1.8b, v2.4s 801 // CHECK-ERROR: ^ 802 803 //---------------------------------------------------------------------- 804 // Scalar Integer Saturating Add (Signed) 805 // Scalar Integer Saturating Add (Unsigned) 806 // Scalar Integer Saturating Sub (Signed) 807 // Scalar Integer Saturating Sub (Unsigned) 808 //---------------------------------------------------------------------- 809 810 // Mismatched registers 811 sqadd d0, s31, d2 812 uqadd s0, s1, d2 813 sqsub b0, b2, s18 814 uqsub h1, h2, d2 815 816 // CHECK-ERROR: error: invalid operand for instruction 817 // CHECK-ERROR: sqadd d0, s31, d2 818 // CHECK-ERROR: ^ 819 // CHECK-ERROR: error: invalid operand for instruction 820 // CHECK-ERROR: uqadd s0, s1, d2 821 // CHECK-ERROR: ^ 822 // CHECK-ERROR: error: invalid operand for instruction 823 // CHECK-ERROR: sqsub b0, b2, s18 824 // CHECK-ERROR: ^ 825 // CHECK-ERROR: error: invalid operand for instruction 826 // CHECK-ERROR: uqsub h1, h2, d2 827 // CHECK-ERROR: ^ 828 829 830 //---------------------------------------------------------------------- 831 // Vector Shift Left (Signed and Unsigned Integer) 832 //---------------------------------------------------------------------- 833 // Mismatched vector types 834 sshl v0.4s, v15.2s, v16.2s 835 ushl v1.16b, v25.16b, v6.8h 836 837 // CHECK-ERROR: error: invalid operand for instruction 838 // CHECK-ERROR: sshl v0.4s, v15.2s, v16.2s 839 // CHECK-ERROR: ^ 840 // CHECK-ERROR: error: invalid operand for instruction 841 // CHECK-ERROR: ushl v1.16b, v25.16b, v6.8h 842 // CHECK-ERROR: ^ 843 844 //---------------------------------------------------------------------- 845 // Vector Saturating Shift Left (Signed and Unsigned Integer) 846 //---------------------------------------------------------------------- 847 // Mismatched vector types 848 sqshl v0.2s, v15.2s, v16.2d 849 uqshl v1.8b, v25.4h, v6.8h 850 851 // CHECK-ERROR: error: invalid operand for instruction 852 // CHECK-ERROR: sqshl v0.2s, v15.2s, v16.2d 853 // CHECK-ERROR: ^ 854 // CHECK-ERROR: error: invalid operand for instruction 855 // CHECK-ERROR: uqshl v1.8b, v25.4h, v6.8h 856 // CHECK-ERROR: ^ 857 858 //---------------------------------------------------------------------- 859 // Vector Rouding Shift Left (Signed and Unsigned Integer) 860 //---------------------------------------------------------------------- 861 // Mismatched vector types 862 srshl v0.8h, v15.8h, v16.16b 863 urshl v1.2d, v25.2d, v6.4s 864 865 // CHECK-ERROR: error: invalid operand for instruction 866 // CHECK-ERROR: srshl v0.8h, v15.8h, v16.16b 867 // CHECK-ERROR: ^ 868 // CHECK-ERROR: error: invalid operand for instruction 869 // CHECK-ERROR: urshl v1.2d, v25.2d, v6.4s 870 // CHECK-ERROR: ^ 871 872 //---------------------------------------------------------------------- 873 // Vector Saturating Rouding Shift Left (Signed and Unsigned Integer) 874 //---------------------------------------------------------------------- 875 // Mismatched vector types 876 sqrshl v0.2s, v15.8h, v16.16b 877 uqrshl v1.4h, v25.4h, v6.2d 878 879 // CHECK-ERROR: error: invalid operand for instruction 880 // CHECK-ERROR: sqrshl v0.2s, v15.8h, v16.16b 881 // CHECK-ERROR: ^ 882 // CHECK-ERROR: error: invalid operand for instruction 883 // CHECK-ERROR: uqrshl v1.4h, v25.4h, v6.2d 884 // CHECK-ERROR: ^ 885 886 //---------------------------------------------------------------------- 887 // Scalar Integer Shift Left (Signed, Unsigned) 888 //---------------------------------------------------------------------- 889 // Mismatched and invalid vector types 890 sshl d0, d1, s2 891 ushl b2, b0, b1 892 893 // CHECK-ERROR: error: invalid operand for instruction 894 // CHECK-ERROR: sshl d0, d1, s2 895 // CHECK-ERROR: ^ 896 // CHECK-ERROR: error: invalid operand for instruction 897 // CHECK-ERROR: ushl b2, b0, b1 898 // CHECK-ERROR: ^ 899 900 //---------------------------------------------------------------------- 901 // Scalar Integer Saturating Shift Left (Signed, Unsigned) 902 //---------------------------------------------------------------------- 903 904 // Mismatched vector types 905 sqshl b0, b1, s0 906 uqshl h0, h1, b0 907 sqshl s0, s1, h0 908 uqshl d0, d1, b0 909 910 // CHECK-ERROR: error: invalid operand for instruction 911 // CHECK-ERROR: sqshl b0, b1, s0 912 // CHECK-ERROR: ^ 913 // CHECK-ERROR: error: invalid operand for instruction 914 // CHECK-ERROR: uqshl h0, h1, b0 915 // CHECK-ERROR: ^ 916 // CHECK-ERROR: error: invalid operand for instruction 917 // CHECK-ERROR: sqshl s0, s1, h0 918 // CHECK-ERROR: ^ 919 // CHECK-ERROR: error: invalid operand for instruction 920 // CHECK-ERROR: uqshl d0, d1, b0 921 // CHECK-ERROR: ^ 922 923 //---------------------------------------------------------------------- 924 // Scalar Integer Rouding Shift Left (Signed, Unsigned) 925 //---------------------------------------------------------------------- 926 // Mismatched and invalid vector types 927 srshl h0, h1, h2 928 urshl s0, s1, s2 929 930 // CHECK-ERROR: error: invalid operand for instruction 931 // CHECK-ERROR: srshl h0, h1, h2 932 // CHECK-ERROR: ^ 933 // CHECK-ERROR: error: invalid operand for instruction 934 // CHECK-ERROR: urshl s0, s1, s2 935 // CHECK-ERROR: ^ 936 937 938 //---------------------------------------------------------------------- 939 // Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned) 940 //---------------------------------------------------------------------- 941 942 // Mismatched vector types 943 sqrshl b0, b1, s0 944 uqrshl h0, h1, b0 945 sqrshl s0, s1, h0 946 uqrshl d0, d1, b0 947 948 // CHECK-ERROR: error: invalid operand for instruction 949 // CHECK-ERROR: sqrshl b0, b1, s0 950 // CHECK-ERROR: ^ 951 // CHECK-ERROR: error: invalid operand for instruction 952 // CHECK-ERROR: uqrshl h0, h1, b0 953 // CHECK-ERROR: ^ 954 // CHECK-ERROR: error: invalid operand for instruction 955 // CHECK-ERROR: sqrshl s0, s1, h0 956 // CHECK-ERROR: ^ 957 // CHECK-ERROR: error: invalid operand for instruction 958 // CHECK-ERROR: uqrshl d0, d1, b0 959 // CHECK-ERROR: ^ 960 961 962 //---------------------------------------------------------------------- 963 // Vector Maximum (Signed, Unsigned) 964 //---------------------------------------------------------------------- 965 // Mismatched and invalid vector types 966 smax v0.2d, v1.2d, v2.2d 967 umax v0.4h, v1.4h, v2.2s 968 969 // CHECK-ERROR: error: invalid operand for instruction 970 // CHECK-ERROR: smax v0.2d, v1.2d, v2.2d 971 // CHECK-ERROR: ^ 972 // CHECK-ERROR: error: invalid operand for instruction 973 // CHECK-ERROR: umax v0.4h, v1.4h, v2.2s 974 // CHECK-ERROR: ^ 975 976 //---------------------------------------------------------------------- 977 // Vector Minimum (Signed, Unsigned) 978 //---------------------------------------------------------------------- 979 // Mismatched and invalid vector types 980 smin v0.2d, v1.2d, v2.2d 981 umin v0.2s, v1.2s, v2.8b 982 983 // CHECK-ERROR: error: invalid operand for instruction 984 // CHECK-ERROR: smin v0.2d, v1.2d, v2.2d 985 // CHECK-ERROR: ^ 986 // CHECK-ERROR: error: invalid operand for instruction 987 // CHECK-ERROR: umin v0.2s, v1.2s, v2.8b 988 // CHECK-ERROR: ^ 989 990 991 //---------------------------------------------------------------------- 992 // Vector Maximum (Floating Point) 993 //---------------------------------------------------------------------- 994 // Mismatched and invalid vector types 995 fmax v0.2s, v1.2s, v2.4s 996 fmax v0.8b, v1.8b, v2.8b 997 998 // CHECK-ERROR: error: invalid operand for instruction 999 // CHECK-ERROR: fmax v0.2s, v1.2s, v2.4s 1000 // CHECK-ERROR: ^ 1001 // CHECK-ERROR: error: invalid operand for instruction 1002 // CHECK-ERROR: fmax v0.8b, v1.8b, v2.8b 1003 // CHECK-ERROR: ^ 1004 //---------------------------------------------------------------------- 1005 // Vector Minimum (Floating Point) 1006 //---------------------------------------------------------------------- 1007 // Mismatched and invalid vector types 1008 fmin v0.4s, v1.4s, v2.2d 1009 fmin v0.8h, v1.8h, v2.8h 1010 1011 // CHECK-ERROR: error: invalid operand for instruction 1012 // CHECK-ERROR: fmin v0.4s, v1.4s, v2.2d 1013 // CHECK-ERROR: ^ 1014 // CHECK-ERROR: error: invalid operand for instruction 1015 // CHECK-ERROR: fmin v0.8h, v1.8h, v2.8h 1016 // CHECK-ERROR: ^ 1017 1018 //---------------------------------------------------------------------- 1019 // Vector maxNum (Floating Point) 1020 //---------------------------------------------------------------------- 1021 // Mismatched and invalid vector types 1022 fmaxnm v0.2s, v1.2s, v2.2d 1023 fmaxnm v0.4h, v1.8h, v2.4h 1024 1025 // CHECK-ERROR: error: invalid operand for instruction 1026 // CHECK-ERROR: fmaxnm v0.2s, v1.2s, v2.2d 1027 // CHECK-ERROR: ^ 1028 // CHECK-ERROR: error: invalid operand for instruction 1029 // CHECK-ERROR: fmaxnm v0.4h, v1.8h, v2.4h 1030 // CHECK-ERROR: ^ 1031 1032 //---------------------------------------------------------------------- 1033 // Vector minNum (Floating Point) 1034 //---------------------------------------------------------------------- 1035 // Mismatched and invalid vector types 1036 fminnm v0.4s, v1.2s, v2.4s 1037 fminnm v0.16b, v0.16b, v0.16b 1038 1039 // CHECK-ERROR: error: invalid operand for instruction 1040 // CHECK-ERROR: fminnm v0.4s, v1.2s, v2.4s 1041 // CHECK-ERROR: ^ 1042 // CHECK-ERROR: error: invalid operand for instruction 1043 // CHECK-ERROR: fminnm v0.16b, v0.16b, v0.16b 1044 // CHECK-ERROR: ^ 1045 1046 1047 //---------------------------------------------------------------------- 1048 // Vector Maximum Pairwise (Signed, Unsigned) 1049 //---------------------------------------------------------------------- 1050 // Mismatched and invalid vector types 1051 smaxp v0.2d, v1.2d, v2.2d 1052 umaxp v0.4h, v1.4h, v2.2s 1053 1054 // CHECK-ERROR: error: invalid operand for instruction 1055 // CHECK-ERROR: smaxp v0.2d, v1.2d, v2.2d 1056 // CHECK-ERROR: ^ 1057 // CHECK-ERROR: error: invalid operand for instruction 1058 // CHECK-ERROR: umaxp v0.4h, v1.4h, v2.2s 1059 // CHECK-ERROR: ^ 1060 1061 //---------------------------------------------------------------------- 1062 // Vector Minimum Pairwise (Signed, Unsigned) 1063 //---------------------------------------------------------------------- 1064 // Mismatched and invalid vector types 1065 sminp v0.2d, v1.2d, v2.2d 1066 uminp v0.2s, v1.2s, v2.8b 1067 1068 // CHECK-ERROR: error: invalid operand for instruction 1069 // CHECK-ERROR: sminp v0.2d, v1.2d, v2.2d 1070 // CHECK-ERROR: ^ 1071 // CHECK-ERROR: error: invalid operand for instruction 1072 // CHECK-ERROR: uminp v0.2s, v1.2s, v2.8b 1073 // CHECK-ERROR: ^ 1074 1075 1076 //---------------------------------------------------------------------- 1077 // Vector Maximum Pairwise (Floating Point) 1078 //---------------------------------------------------------------------- 1079 // Mismatched and invalid vector types 1080 fmaxp v0.2s, v1.2s, v2.4s 1081 fmaxp v0.8b, v1.8b, v2.8b 1082 1083 // CHECK-ERROR: error: invalid operand for instruction 1084 // CHECK-ERROR: fmaxp v0.2s, v1.2s, v2.4s 1085 // CHECK-ERROR: ^ 1086 // CHECK-ERROR: error: invalid operand for instruction 1087 // CHECK-ERROR: fmaxp v0.8b, v1.8b, v2.8b 1088 // CHECK-ERROR: ^ 1089 //---------------------------------------------------------------------- 1090 // Vector Minimum Pairwise (Floating Point) 1091 //---------------------------------------------------------------------- 1092 // Mismatched and invalid vector types 1093 fminp v0.4s, v1.4s, v2.2d 1094 fminp v0.8h, v1.8h, v2.8h 1095 1096 // CHECK-ERROR: error: invalid operand for instruction 1097 // CHECK-ERROR: fminp v0.4s, v1.4s, v2.2d 1098 // CHECK-ERROR: ^ 1099 // CHECK-ERROR: error: invalid operand for instruction 1100 // CHECK-ERROR: fminp v0.8h, v1.8h, v2.8h 1101 // CHECK-ERROR: ^ 1102 1103 //---------------------------------------------------------------------- 1104 // Vector maxNum Pairwise (Floating Point) 1105 //---------------------------------------------------------------------- 1106 // Mismatched and invalid vector types 1107 fmaxnmp v0.2s, v1.2s, v2.2d 1108 fmaxnmp v0.4h, v1.8h, v2.4h 1109 1110 // CHECK-ERROR: error: invalid operand for instruction 1111 // CHECK-ERROR: fmaxnmp v0.2s, v1.2s, v2.2d 1112 // CHECK-ERROR: ^ 1113 // CHECK-ERROR: error: invalid operand for instruction 1114 // CHECK-ERROR: fmaxnmp v0.4h, v1.8h, v2.4h 1115 // CHECK-ERROR: ^ 1116 1117 //---------------------------------------------------------------------- 1118 // Vector minNum Pairwise (Floating Point) 1119 //---------------------------------------------------------------------- 1120 // Mismatched and invalid vector types 1121 fminnmp v0.4s, v1.2s, v2.4s 1122 fminnmp v0.16b, v0.16b, v0.16b 1123 1124 // CHECK-ERROR: error: invalid operand for instruction 1125 // CHECK-ERROR: fminnmp v0.4s, v1.2s, v2.4s 1126 // CHECK-ERROR: ^ 1127 // CHECK-ERROR: error: invalid operand for instruction 1128 // CHECK-ERROR: fminnmp v0.16b, v0.16b, v0.16b 1129 // CHECK-ERROR: ^ 1130 1131 1132 //---------------------------------------------------------------------- 1133 // Vector Add Pairwise (Integer) 1134 //---------------------------------------------------------------------- 1135 1136 // Mismatched vector types 1137 addp v0.16b, v1.8b, v2.8b 1138 1139 // CHECK-ERROR: error: invalid operand for instruction 1140 // CHECK-ERROR: addp v0.16b, v1.8b, v2.8b 1141 // CHECK-ERROR: ^ 1142 1143 //---------------------------------------------------------------------- 1144 // Vector Add Pairwise (Floating Point) 1145 //---------------------------------------------------------------------- 1146 // Mismatched and invalid vector types 1147 faddp v0.16b, v1.8b, v2.8b 1148 faddp v0.2d, v1.2d, v2.8h 1149 1150 // CHECK-ERROR: error: invalid operand for instruction 1151 // CHECK-ERROR: faddp v0.16b, v1.8b, v2.8b 1152 // CHECK-ERROR: ^ 1153 // CHECK-ERROR: error: invalid operand for instruction 1154 // CHECK-ERROR: faddp v0.2d, v1.2d, v2.8h 1155 // CHECK-ERROR: ^ 1156 1157 1158 //---------------------------------------------------------------------- 1159 // Vector Saturating Doubling Multiply High 1160 //---------------------------------------------------------------------- 1161 // Mismatched and invalid vector types 1162 sqdmulh v2.4h, v25.8h, v3.4h 1163 sqdmulh v12.2d, v5.2d, v13.2d 1164 sqdmulh v3.8b, v1.8b, v30.8b 1165 1166 // CHECK-ERROR: error: invalid operand for instruction 1167 // CHECK-ERROR: sqdmulh v2.4h, v25.8h, v3.4h 1168 // CHECK-ERROR: ^ 1169 // CHECK-ERROR: error: invalid operand for instruction 1170 // CHECK-ERROR: sqdmulh v12.2d, v5.2d, v13.2d 1171 // CHECK-ERROR: ^ 1172 // CHECK-ERROR: error: invalid operand for instruction 1173 // CHECK-ERROR: sqdmulh v3.8b, v1.8b, v30.8b 1174 // CHECK-ERROR: ^ 1175 1176 //---------------------------------------------------------------------- 1177 // Vector Saturating Rouding Doubling Multiply High 1178 //---------------------------------------------------------------------- 1179 // Mismatched and invalid vector types 1180 sqrdmulh v2.2s, v25.4s, v3.4s 1181 sqrdmulh v12.16b, v5.16b, v13.16b 1182 sqrdmulh v3.4h, v1.4h, v30.2d 1183 1184 1185 // CHECK-ERROR: error: invalid operand for instruction 1186 // CHECK-ERROR: sqrdmulh v2.2s, v25.4s, v3.4s 1187 // CHECK-ERROR: ^ 1188 // CHECK-ERROR: error: invalid operand for instruction 1189 // CHECK-ERROR: sqrdmulh v12.16b, v5.16b, v13.16b 1190 // CHECK-ERROR: ^ 1191 // CHECK-ERROR: error: invalid operand for instruction 1192 // CHECK-ERROR: sqrdmulh v3.4h, v1.4h, v30.2d 1193 // CHECK-ERROR: ^ 1194 1195 //---------------------------------------------------------------------- 1196 // Vector Multiply Extended 1197 //---------------------------------------------------------------------- 1198 // Mismatched and invalid vector types 1199 fmulx v21.2s, v5.2s, v13.2d 1200 fmulx v1.4h, v25.4h, v3.4h 1201 1202 // CHECK-ERROR: error: invalid operand for instruction 1203 // CHECK-ERROR: fmulx v21.2s, v5.2s, v13.2d 1204 // CHECK-ERROR: ^ 1205 // CHECK-ERROR: error: invalid operand for instruction 1206 // CHECK-ERROR: fmulx v1.4h, v25.4h, v3.4h 1207 // CHECK-ERROR: ^ 1208