fp_and_simd.c revision c7a4cbba84a0645e6d9951b08dfaa62bd5e22960
1 2#include <stdio.h> 3#include <assert.h> 4#include <malloc.h> // memalign 5#include <string.h> // memset 6#include <math.h> // isnormal 7 8typedef unsigned char UChar; 9typedef unsigned short int UShort; 10typedef unsigned int UInt; 11typedef signed int Int; 12typedef unsigned char UChar; 13typedef unsigned long long int ULong; 14 15typedef unsigned char Bool; 16#define False ((Bool)0) 17#define True ((Bool)1) 18 19 20#define ITERS 1 21 22typedef 23 enum { TySF=1234, TyDF, TyB, TyH, TyS, TyD, TyNONE } 24 LaneTy; 25 26union _V128 { 27 UChar u8[16]; 28 UShort u16[8]; 29 UInt u32[4]; 30 ULong u64[2]; 31 float f32[4]; 32 double f64[2]; 33}; 34typedef union _V128 V128; 35 36static inline UChar randUChar ( void ) 37{ 38 static UInt seed = 80021; 39 seed = 1103515245 * seed + 12345; 40 return (seed >> 17) & 0xFF; 41} 42 43static ULong randULong ( LaneTy ty ) 44{ 45 Int i; 46 ULong r = 0; 47 for (i = 0; i < 8; i++) { 48 r = (r << 8) | (ULong)(0xFF & randUChar()); 49 } 50 return r; 51} 52 53/* Generates a random V128. Ensures that that it contains normalised 54 FP numbers when viewed as either F32x4 or F64x2, so that it is 55 reasonable to use in FP test cases. */ 56static void randV128 ( /*OUT*/V128* v, LaneTy ty ) 57{ 58 static UInt nCalls = 0, nIters = 0; 59 Int i; 60 nCalls++; 61 while (1) { 62 nIters++; 63 for (i = 0; i < 16; i++) { 64 v->u8[i] = randUChar(); 65 } 66 if (isnormal(v->f32[0]) && isnormal(v->f32[1]) && isnormal(v->f32[2]) 67 && isnormal(v->f32[3]) && isnormal(v->f64[0]) && isnormal(v->f64[1])) 68 break; 69 } 70 if (0 == (nCalls & 0xFF)) 71 printf("randV128: %u calls, %u iters\n", nCalls, nIters); 72} 73 74static void showV128 ( V128* v ) 75{ 76 Int i; 77 for (i = 15; i >= 0; i--) 78 printf("%02x", (Int)v->u8[i]); 79} 80 81__attribute__((unused)) 82static void* memalign16(size_t szB) 83{ 84 void* x; 85 x = memalign(16, szB); 86 assert(x); 87 assert(0 == ((16-1) & (unsigned long)x)); 88 return x; 89} 90 91 92/* ---------------------------------------------------------------- */ 93/* -- Test functions -- */ 94/* ---------------------------------------------------------------- */ 95 96/* Note this also sets the destination register to a known value (0x55..55) 97 since it can sometimes be an input to the instruction too. */ 98#define GEN_UNARY_TEST(INSN,SUFFIXD,SUFFIXN) \ 99 __attribute__((noinline)) \ 100 static void test_##INSN##_##SUFFIXD##_##SUFFIXN ( LaneTy ty ) { \ 101 Int i; \ 102 for (i = 0; i < ITERS; i++) { \ 103 V128 block[2]; \ 104 memset(block, 0x55, sizeof(block)); \ 105 randV128(&block[0], ty); \ 106 randV128(&block[1], ty); \ 107 __asm__ __volatile__( \ 108 "ldr q7, [%0, #0] ; " \ 109 "ldr q8, [%0, #16] ; " \ 110 #INSN " v8." #SUFFIXD ", v7." #SUFFIXN " ; " \ 111 "str q8, [%0, #16] " \ 112 : : "r"(&block[0]) : "memory", "v7", "v8" \ 113 ); \ 114 printf(#INSN " v8." #SUFFIXD ", v7." #SUFFIXN); \ 115 showV128(&block[0]); printf(" "); \ 116 showV128(&block[1]); printf("\n"); \ 117 } \ 118 } 119 120 121/* Note this also sets the destination register to a known value (0x55..55) 122 since it can sometimes be an input to the instruction too. */ 123#define GEN_BINARY_TEST(INSN,SUFFIXD,SUFFIXN,SUFFIXM) \ 124 __attribute__((noinline)) \ 125 static void test_##INSN##_##SUFFIXD##_##SUFFIXN##_##SUFFIXM ( LaneTy ty ) { \ 126 Int i; \ 127 for (i = 0; i < ITERS; i++) { \ 128 V128 block[3]; \ 129 memset(block, 0x55, sizeof(block)); \ 130 randV128(&block[0], ty); \ 131 randV128(&block[1], ty); \ 132 randV128(&block[2], ty); \ 133 __asm__ __volatile__( \ 134 "ldr q7, [%0, #0] ; " \ 135 "ldr q8, [%0, #16] ; " \ 136 "ldr q9, [%0, #32] ; " \ 137 #INSN " v9." #SUFFIXD ", v7." #SUFFIXN ", v8." #SUFFIXM " ; " \ 138 "str q9, [%0, #32] " \ 139 : : "r"(&block[0]) : "memory", "v7", "v8", "v9" \ 140 ); \ 141 printf(#INSN " v9." #SUFFIXD \ 142 ", v7." #SUFFIXN ", v8." #SUFFIXM " "); \ 143 showV128(&block[0]); printf(" "); \ 144 showV128(&block[1]); printf(" "); \ 145 showV128(&block[2]); printf("\n"); \ 146 } \ 147 } 148 149 150/* Note this also sets the destination register to a known value (0x55..55) 151 since it can sometimes be an input to the instruction too. */ 152#define GEN_SHIFT_TEST(INSN,SUFFIXD,SUFFIXN,AMOUNT) \ 153 __attribute__((noinline)) \ 154 static void test_##INSN##_##SUFFIXD##_##SUFFIXN##_##AMOUNT ( LaneTy ty ) { \ 155 Int i; \ 156 for (i = 0; i < ITERS; i++) { \ 157 V128 block[2]; \ 158 memset(block, 0x55, sizeof(block)); \ 159 randV128(&block[0], ty); \ 160 randV128(&block[1], ty); \ 161 __asm__ __volatile__( \ 162 "ldr q7, [%0, #0] ; " \ 163 "ldr q8, [%0, #16] ; " \ 164 #INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " ; " \ 165 "str q8, [%0, #16] " \ 166 : : "r"(&block[0]) : "memory", "v7", "v8" \ 167 ); \ 168 printf(#INSN " v8." #SUFFIXD ", v7." #SUFFIXN ", #" #AMOUNT " "); \ 169 showV128(&block[0]); printf(" "); \ 170 showV128(&block[1]); printf("\n"); \ 171 } \ 172 } 173 174 175/* Generate a test that involves one integer reg and one vector reg, 176 with no bias as towards which is input or output. */ 177#define GEN_ONEINT_ONEVEC_TEST(TESTNAME,INSN,INTREGNO,VECREGNO) \ 178 __attribute__((noinline)) \ 179 static void test_##TESTNAME ( LaneTy ty ) { \ 180 Int i; \ 181 for (i = 0; i < ITERS; i++) { \ 182 V128 block[4]; \ 183 memset(block, 0x55, sizeof(block)); \ 184 randV128(&block[0], ty); \ 185 randV128(&block[1], ty); \ 186 randV128(&block[2], ty); \ 187 randV128(&block[3], ty); \ 188 __asm__ __volatile__( \ 189 "ldr q"#VECREGNO", [%0, #0] ; " \ 190 "ldr x"#INTREGNO", [%0, #16] ; " \ 191 INSN " ; " \ 192 "str q"#VECREGNO", [%0, #32] ; " \ 193 "str x"#INTREGNO", [%0, #48] ; " \ 194 : : "r"(&block[0]) : "memory", "v"#VECREGNO, "x"#INTREGNO \ 195 ); \ 196 printf(INSN " "); \ 197 showV128(&block[0]); printf(" "); \ 198 showV128(&block[1]); printf(" "); \ 199 showV128(&block[2]); printf(" "); \ 200 showV128(&block[3]); printf("\n"); \ 201 } \ 202 } 203 204 205/* Generate a test that involves two vector regs, 206 with no bias as towards which is input or output. 207 It's OK to use x10 as scratch.*/ 208#define GEN_TWOVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO) \ 209 __attribute__((noinline)) \ 210 static void test_##TESTNAME ( LaneTy ty ) { \ 211 Int i; \ 212 for (i = 0; i < ITERS; i++) { \ 213 V128 block[4]; \ 214 memset(block, 0x55, sizeof(block)); \ 215 randV128(&block[0], ty); \ 216 randV128(&block[1], ty); \ 217 randV128(&block[2], ty); \ 218 randV128(&block[3], ty); \ 219 __asm__ __volatile__( \ 220 "ldr q"#VECREG1NO", [%0, #0] ; " \ 221 "ldr q"#VECREG2NO", [%0, #16] ; " \ 222 INSN " ; " \ 223 "str q"#VECREG1NO", [%0, #32] ; " \ 224 "str q"#VECREG2NO", [%0, #48] ; " \ 225 : : "r"(&block[0]) \ 226 : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "x10" \ 227 ); \ 228 printf(INSN " "); \ 229 showV128(&block[0]); printf(" "); \ 230 showV128(&block[1]); printf(" "); \ 231 showV128(&block[2]); printf(" "); \ 232 showV128(&block[3]); printf("\n"); \ 233 } \ 234 } 235 236 237/* Generate a test that involves three vector regs, 238 with no bias as towards which is input or output. It's also OK 239 to use v16, v17, v18 as scratch. */ 240#define GEN_THREEVEC_TEST(TESTNAME,INSN,VECREG1NO,VECREG2NO,VECREG3NO) \ 241 __attribute__((noinline)) \ 242 static void test_##TESTNAME ( LaneTy ty ) { \ 243 Int i; \ 244 for (i = 0; i < ITERS; i++) { \ 245 V128 block[6]; \ 246 memset(block, 0x55, sizeof(block)); \ 247 randV128(&block[0], ty); \ 248 randV128(&block[1], ty); \ 249 randV128(&block[2], ty); \ 250 randV128(&block[3], ty); \ 251 randV128(&block[4], ty); \ 252 randV128(&block[5], ty); \ 253 __asm__ __volatile__( \ 254 "ldr q"#VECREG1NO", [%0, #0] ; " \ 255 "ldr q"#VECREG2NO", [%0, #16] ; " \ 256 "ldr q"#VECREG3NO", [%0, #32] ; " \ 257 INSN " ; " \ 258 "str q"#VECREG1NO", [%0, #48] ; " \ 259 "str q"#VECREG2NO", [%0, #64] ; " \ 260 "str q"#VECREG3NO", [%0, #80] ; " \ 261 : : "r"(&block[0]) \ 262 : "memory", "v"#VECREG1NO, "v"#VECREG2NO, "v"#VECREG3NO, \ 263 "v16", "v17", "v18" \ 264 ); \ 265 printf(INSN " "); \ 266 showV128(&block[0]); printf(" "); \ 267 showV128(&block[1]); printf(" "); \ 268 showV128(&block[2]); printf(" "); \ 269 showV128(&block[3]); printf(" "); \ 270 showV128(&block[4]); printf(" "); \ 271 showV128(&block[5]); printf("\n"); \ 272 } \ 273 } 274 275 276void test_UMINV ( void ) 277{ 278 int i; 279 V128 block[2]; 280 281 /* -- 4s -- */ 282 283 for (i = 0; i < 10; i++) { 284 memset(&block, 0x55, sizeof(block)); 285 randV128(&block[0], TyS); 286 randV128(&block[1], TyS); 287 __asm__ __volatile__( 288 "ldr q7, [%0, #0] ; " 289 "uminv s8, v7.4s ; " 290 "str q8, [%0, #16] " 291 : : "r"(&block[0]) : "memory", "v7", "v8" 292 ); 293 printf("UMINV v8, v7.4s "); 294 showV128(&block[0]); printf(" "); 295 showV128(&block[1]); printf("\n"); 296 } 297 298 /* -- 8h -- */ 299 300 for (i = 0; i < 10; i++) { 301 memset(&block, 0x55, sizeof(block)); 302 randV128(&block[0], TyH); 303 randV128(&block[1], TyH); 304 __asm__ __volatile__( 305 "ldr q7, [%0, #0] ; " 306 "uminv h8, v7.8h ; " 307 "str q8, [%0, #16] " 308 : : "r"(&block[0]) : "memory", "v7", "v8" 309 ); 310 printf("UMINV h8, v7.8h "); 311 showV128(&block[0]); printf(" "); 312 showV128(&block[1]); printf("\n"); 313 } 314 315 /* -- 4h -- */ 316 317 for (i = 0; i < 10; i++) { 318 memset(&block, 0x55, sizeof(block)); 319 randV128(&block[0], TyH); 320 randV128(&block[1], TyH); 321 __asm__ __volatile__( 322 "ldr q7, [%0, #0] ; " 323 "uminv h8, v7.4h ; " 324 "str q8, [%0, #16] " 325 : : "r"(&block[0]) : "memory", "v7", "v8" 326 ); 327 printf("UMINV h8, v7.4h "); 328 showV128(&block[0]); printf(" "); 329 showV128(&block[1]); printf("\n"); 330 } 331 332 /* -- 16b -- */ 333 334 for (i = 0; i < 10; i++) { 335 memset(&block, 0x55, sizeof(block)); 336 randV128(&block[0], TyB); 337 randV128(&block[1], TyB); 338 __asm__ __volatile__( 339 "ldr q7, [%0, #0] ; " 340 "uminv b8, v7.16b ; " 341 "str q8, [%0, #16] " 342 : : "r"(&block[0]) : "memory", "v7", "v8" 343 ); 344 printf("UMINV b8, v7.16b "); 345 showV128(&block[0]); printf(" "); 346 showV128(&block[1]); printf("\n"); 347 } 348 349 /* -- 8b -- */ 350 351 for (i = 0; i < 10; i++) { 352 memset(&block, 0x55, sizeof(block)); 353 randV128(&block[0], TyB); 354 randV128(&block[1], TyB); 355 __asm__ __volatile__( 356 "ldr q7, [%0, #0] ; " 357 "uminv b8, v7.8b ; " 358 "str q8, [%0, #16] " 359 : : "r"(&block[0]) : "memory", "v7", "v8" 360 ); 361 printf("UMINV b8, v7.8b "); 362 showV128(&block[0]); printf(" "); 363 showV128(&block[1]); printf("\n"); 364 } 365 366} 367 368 369void test_UMAXV ( void ) 370{ 371 int i; 372 V128 block[2]; 373 374 /* -- 4s -- */ 375 376 for (i = 0; i < 10; i++) { 377 memset(&block, 0x55, sizeof(block)); 378 randV128(&block[0], TyS); 379 randV128(&block[1], TyS); 380 __asm__ __volatile__( 381 "ldr q7, [%0, #0] ; " 382 "umaxv s8, v7.4s ; " 383 "str q8, [%0, #16] " 384 : : "r"(&block[0]) : "memory", "v7", "v8" 385 ); 386 printf("UMAXV v8, v7.4s "); 387 showV128(&block[0]); printf(" "); 388 showV128(&block[1]); printf("\n"); 389 } 390 391 /* -- 8h -- */ 392 393 for (i = 0; i < 10; i++) { 394 memset(&block, 0x55, sizeof(block)); 395 randV128(&block[0], TyH); 396 randV128(&block[1], TyH); 397 __asm__ __volatile__( 398 "ldr q7, [%0, #0] ; " 399 "umaxv h8, v7.8h ; " 400 "str q8, [%0, #16] " 401 : : "r"(&block[0]) : "memory", "v7", "v8" 402 ); 403 printf("UMAXV h8, v7.8h "); 404 showV128(&block[0]); printf(" "); 405 showV128(&block[1]); printf("\n"); 406 } 407 408 /* -- 4h -- */ 409 410 for (i = 0; i < 10; i++) { 411 memset(&block, 0x55, sizeof(block)); 412 randV128(&block[0], TyH); 413 randV128(&block[1], TyH); 414 __asm__ __volatile__( 415 "ldr q7, [%0, #0] ; " 416 "umaxv h8, v7.4h ; " 417 "str q8, [%0, #16] " 418 : : "r"(&block[0]) : "memory", "v7", "v8" 419 ); 420 printf("UMAXV h8, v7.4h "); 421 showV128(&block[0]); printf(" "); 422 showV128(&block[1]); printf("\n"); 423 } 424 425 /* -- 16b -- */ 426 427 for (i = 0; i < 10; i++) { 428 memset(&block, 0x55, sizeof(block)); 429 randV128(&block[0], TyB); 430 randV128(&block[1], TyB); 431 __asm__ __volatile__( 432 "ldr q7, [%0, #0] ; " 433 "umaxv b8, v7.16b ; " 434 "str q8, [%0, #16] " 435 : : "r"(&block[0]) : "memory", "v7", "v8" 436 ); 437 printf("UMAXV b8, v7.16b "); 438 showV128(&block[0]); printf(" "); 439 showV128(&block[1]); printf("\n"); 440 } 441 442 /* -- 8b -- */ 443 444 for (i = 0; i < 10; i++) { 445 memset(&block, 0x55, sizeof(block)); 446 randV128(&block[0], TyB); 447 randV128(&block[1], TyB); 448 __asm__ __volatile__( 449 "ldr q7, [%0, #0] ; " 450 "umaxv b8, v7.8b ; " 451 "str q8, [%0, #16] " 452 : : "r"(&block[0]) : "memory", "v7", "v8" 453 ); 454 printf("UMAXV b8, v7.8b "); 455 showV128(&block[0]); printf(" "); 456 showV128(&block[1]); printf("\n"); 457 } 458 459} 460 461 462void test_INS_general ( void ) 463{ 464 V128 block[3]; 465 466 /* -- D[0..1] -- */ 467 468 memset(&block, 0x55, sizeof(block)); 469 block[1].u64[0] = randULong(TyD); 470 __asm__ __volatile__( 471 "ldr q7, [%0, #0] ; " 472 "ldr x19, [%0, #16] ; " 473 "ins v7.d[0], x19 ; " 474 "str q7, [%0, #32] " 475 : : "r"(&block[0]) : "memory", "x19", "v7" 476 ); 477 printf("INS v7.u64[0],x19 "); 478 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 479 showV128(&block[2]); printf("\n"); 480 481 memset(&block, 0x55, sizeof(block)); 482 block[1].u64[0] = randULong(TyD); 483 __asm__ __volatile__( 484 "ldr q7, [%0, #0] ; " 485 "ldr x19, [%0, #16] ; " 486 "ins v7.d[1], x19 ; " 487 "str q7, [%0, #32] " 488 : : "r"(&block[0]) : "memory", "x19", "v7" 489 ); 490 printf("INS v7.d[1],x19 "); 491 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 492 showV128(&block[2]); printf("\n"); 493 494 /* -- S[0..3] -- */ 495 496 memset(&block, 0x55, sizeof(block)); 497 block[1].u64[0] = randULong(TyS); 498 __asm__ __volatile__( 499 "ldr q7, [%0, #0] ; " 500 "ldr x19, [%0, #16] ; " 501 "ins v7.s[0], w19 ; " 502 "str q7, [%0, #32] " 503 : : "r"(&block[0]) : "memory", "x19", "v7" 504 ); 505 printf("INS v7.s[0],x19 "); 506 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 507 showV128(&block[2]); printf("\n"); 508 509 memset(&block, 0x55, sizeof(block)); 510 block[1].u64[0] = randULong(TyS); 511 __asm__ __volatile__( 512 "ldr q7, [%0, #0] ; " 513 "ldr x19, [%0, #16] ; " 514 "ins v7.s[1], w19 ; " 515 "str q7, [%0, #32] " 516 : : "r"(&block[0]) : "memory", "x19", "v7" 517 ); 518 printf("INS v7.s[1],x19 "); 519 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 520 showV128(&block[2]); printf("\n"); 521 522 memset(&block, 0x55, sizeof(block)); 523 block[1].u64[0] = randULong(TyS); 524 __asm__ __volatile__( 525 "ldr q7, [%0, #0] ; " 526 "ldr x19, [%0, #16] ; " 527 "ins v7.s[2], w19 ; " 528 "str q7, [%0, #32] " 529 : : "r"(&block[0]) : "memory", "x19", "v7" 530 ); 531 printf("INS v7.s[2],x19 "); 532 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 533 showV128(&block[2]); printf("\n"); 534 535 memset(&block, 0x55, sizeof(block)); 536 block[1].u64[0] = randULong(TyS); 537 __asm__ __volatile__( 538 "ldr q7, [%0, #0] ; " 539 "ldr x19, [%0, #16] ; " 540 "ins v7.s[3], w19 ; " 541 "str q7, [%0, #32] " 542 : : "r"(&block[0]) : "memory", "x19", "v7" 543 ); 544 printf("INS v7.s[3],x19 "); 545 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 546 showV128(&block[2]); printf("\n"); 547 548 /* -- H[0..7] -- */ 549 550 memset(&block, 0x55, sizeof(block)); 551 block[1].u64[0] = randULong(TyH); 552 __asm__ __volatile__( 553 "ldr q7, [%0, #0] ; " 554 "ldr x19, [%0, #16] ; " 555 "ins v7.h[0], w19 ; " 556 "str q7, [%0, #32] " 557 : : "r"(&block[0]) : "memory", "x19", "v7" 558 ); 559 printf("INS v7.h[0],x19 "); 560 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 561 showV128(&block[2]); printf("\n"); 562 563 memset(&block, 0x55, sizeof(block)); 564 block[1].u64[0] = randULong(TyH); 565 __asm__ __volatile__( 566 "ldr q7, [%0, #0] ; " 567 "ldr x19, [%0, #16] ; " 568 "ins v7.h[1], w19 ; " 569 "str q7, [%0, #32] " 570 : : "r"(&block[0]) : "memory", "x19", "v7" 571 ); 572 printf("INS v7.h[1],x19 "); 573 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 574 showV128(&block[2]); printf("\n"); 575 576 memset(&block, 0x55, sizeof(block)); 577 block[1].u64[0] = randULong(TyH); 578 __asm__ __volatile__( 579 "ldr q7, [%0, #0] ; " 580 "ldr x19, [%0, #16] ; " 581 "ins v7.h[2], w19 ; " 582 "str q7, [%0, #32] " 583 : : "r"(&block[0]) : "memory", "x19", "v7" 584 ); 585 printf("INS v7.h[2],x19 "); 586 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 587 showV128(&block[2]); printf("\n"); 588 589 memset(&block, 0x55, sizeof(block)); 590 block[1].u64[0] = randULong(TyH); 591 __asm__ __volatile__( 592 "ldr q7, [%0, #0] ; " 593 "ldr x19, [%0, #16] ; " 594 "ins v7.h[3], w19 ; " 595 "str q7, [%0, #32] " 596 : : "r"(&block[0]) : "memory", "x19", "v7" 597 ); 598 printf("INS v7.h[3],x19 "); 599 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 600 showV128(&block[2]); printf("\n"); 601 602 memset(&block, 0x55, sizeof(block)); 603 block[1].u64[0] = randULong(TyH); 604 __asm__ __volatile__( 605 "ldr q7, [%0, #0] ; " 606 "ldr x19, [%0, #16] ; " 607 "ins v7.h[4], w19 ; " 608 "str q7, [%0, #32] " 609 : : "r"(&block[0]) : "memory", "x19", "v7" 610 ); 611 printf("INS v7.h[4],x19 "); 612 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 613 showV128(&block[2]); printf("\n"); 614 615 memset(&block, 0x55, sizeof(block)); 616 block[1].u64[0] = randULong(TyH); 617 __asm__ __volatile__( 618 "ldr q7, [%0, #0] ; " 619 "ldr x19, [%0, #16] ; " 620 "ins v7.h[5], w19 ; " 621 "str q7, [%0, #32] " 622 : : "r"(&block[0]) : "memory", "x19", "v7" 623 ); 624 printf("INS v7.h[5],x19 "); 625 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 626 showV128(&block[2]); printf("\n"); 627 628 memset(&block, 0x55, sizeof(block)); 629 block[1].u64[0] = randULong(TyH); 630 __asm__ __volatile__( 631 "ldr q7, [%0, #0] ; " 632 "ldr x19, [%0, #16] ; " 633 "ins v7.h[6], w19 ; " 634 "str q7, [%0, #32] " 635 : : "r"(&block[0]) : "memory", "x19", "v7" 636 ); 637 printf("INS v7.h[6],x19 "); 638 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 639 showV128(&block[2]); printf("\n"); 640 641 memset(&block, 0x55, sizeof(block)); 642 block[1].u64[0] = randULong(TyH); 643 __asm__ __volatile__( 644 "ldr q7, [%0, #0] ; " 645 "ldr x19, [%0, #16] ; " 646 "ins v7.h[7], w19 ; " 647 "str q7, [%0, #32] " 648 : : "r"(&block[0]) : "memory", "x19", "v7" 649 ); 650 printf("INS v7.h[7],x19 "); 651 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 652 showV128(&block[2]); printf("\n"); 653 654 /* -- B[0,15] -- */ 655 656 memset(&block, 0x55, sizeof(block)); 657 block[1].u64[0] = randULong(TyB); 658 __asm__ __volatile__( 659 "ldr q7, [%0, #0] ; " 660 "ldr x19, [%0, #16] ; " 661 "ins v7.b[0], w19 ; " 662 "str q7, [%0, #32] " 663 : : "r"(&block[0]) : "memory", "x19", "v7" 664 ); 665 printf("INS v7.b[0],x19 "); 666 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 667 showV128(&block[2]); printf("\n"); 668 669 memset(&block, 0x55, sizeof(block)); 670 block[1].u64[0] = randULong(TyB); 671 __asm__ __volatile__( 672 "ldr q7, [%0, #0] ; " 673 "ldr x19, [%0, #16] ; " 674 "ins v7.b[15], w19 ; " 675 "str q7, [%0, #32] " 676 : : "r"(&block[0]) : "memory", "x19", "v7" 677 ); 678 printf("INS v7.b[15],x19 "); 679 showV128(&block[0]); printf(" %016llx ", block[1].u64[0]); 680 showV128(&block[2]); printf("\n"); 681} 682 683 684 685void test_SMINV ( void ) 686{ 687 int i; 688 V128 block[2]; 689 690 /* -- 4s -- */ 691 692 for (i = 0; i < 10; i++) { 693 memset(&block, 0x55, sizeof(block)); 694 randV128(&block[0], TyS); 695 randV128(&block[1], TyS); 696 __asm__ __volatile__( 697 "ldr q7, [%0, #0] ; " 698 "sminv s8, v7.4s ; " 699 "str q8, [%0, #16] " 700 : : "r"(&block[0]) : "memory", "v7", "v8" 701 ); 702 printf("SMINV v8, v7.4s "); 703 showV128(&block[0]); printf(" "); 704 showV128(&block[1]); printf("\n"); 705 } 706 707 /* -- 8h -- */ 708 709 for (i = 0; i < 10; i++) { 710 memset(&block, 0x55, sizeof(block)); 711 randV128(&block[0], TyH); 712 randV128(&block[1], TyH); 713 __asm__ __volatile__( 714 "ldr q7, [%0, #0] ; " 715 "sminv h8, v7.8h ; " 716 "str q8, [%0, #16] " 717 : : "r"(&block[0]) : "memory", "v7", "v8" 718 ); 719 printf("SMINV h8, v7.8h "); 720 showV128(&block[0]); printf(" "); 721 showV128(&block[1]); printf("\n"); 722 } 723 724 /* -- 4h -- */ 725 726 for (i = 0; i < 10; i++) { 727 memset(&block, 0x55, sizeof(block)); 728 randV128(&block[0], TyH); 729 randV128(&block[1], TyH); 730 __asm__ __volatile__( 731 "ldr q7, [%0, #0] ; " 732 "sminv h8, v7.4h ; " 733 "str q8, [%0, #16] " 734 : : "r"(&block[0]) : "memory", "v7", "v8" 735 ); 736 printf("SMINV h8, v7.4h "); 737 showV128(&block[0]); printf(" "); 738 showV128(&block[1]); printf("\n"); 739 } 740 741 /* -- 16b -- */ 742 743 for (i = 0; i < 10; i++) { 744 memset(&block, 0x55, sizeof(block)); 745 randV128(&block[0], TyB); 746 randV128(&block[1], TyB); 747 __asm__ __volatile__( 748 "ldr q7, [%0, #0] ; " 749 "sminv b8, v7.16b ; " 750 "str q8, [%0, #16] " 751 : : "r"(&block[0]) : "memory", "v7", "v8" 752 ); 753 printf("SMINV b8, v7.16b "); 754 showV128(&block[0]); printf(" "); 755 showV128(&block[1]); printf("\n"); 756 } 757 758 /* -- 8b -- */ 759 760 for (i = 0; i < 10; i++) { 761 memset(&block, 0x55, sizeof(block)); 762 randV128(&block[0], TyB); 763 randV128(&block[1], TyB); 764 __asm__ __volatile__( 765 "ldr q7, [%0, #0] ; " 766 "sminv b8, v7.8b ; " 767 "str q8, [%0, #16] " 768 : : "r"(&block[0]) : "memory", "v7", "v8" 769 ); 770 printf("SMINV b8, v7.8b "); 771 showV128(&block[0]); printf(" "); 772 showV128(&block[1]); printf("\n"); 773 } 774 775} 776 777 778void test_SMAXV ( void ) 779{ 780 int i; 781 V128 block[2]; 782 783 /* -- 4s -- */ 784 785 for (i = 0; i < 10; i++) { 786 memset(&block, 0x55, sizeof(block)); 787 randV128(&block[0], TyS); 788 randV128(&block[1], TyS); 789 __asm__ __volatile__( 790 "ldr q7, [%0, #0] ; " 791 "smaxv s8, v7.4s ; " 792 "str q8, [%0, #16] " 793 : : "r"(&block[0]) : "memory", "v7", "v8" 794 ); 795 printf("SMAXV v8, v7.4s "); 796 showV128(&block[0]); printf(" "); 797 showV128(&block[1]); printf("\n"); 798 } 799 800 /* -- 8h -- */ 801 802 for (i = 0; i < 10; i++) { 803 memset(&block, 0x55, sizeof(block)); 804 randV128(&block[0], TyH); 805 randV128(&block[1], TyH); 806 __asm__ __volatile__( 807 "ldr q7, [%0, #0] ; " 808 "smaxv h8, v7.8h ; " 809 "str q8, [%0, #16] " 810 : : "r"(&block[0]) : "memory", "v7", "v8" 811 ); 812 printf("SMAXV h8, v7.8h "); 813 showV128(&block[0]); printf(" "); 814 showV128(&block[1]); printf("\n"); 815 } 816 817 /* -- 4h -- */ 818 819 for (i = 0; i < 10; i++) { 820 memset(&block, 0x55, sizeof(block)); 821 randV128(&block[0], TyH); 822 randV128(&block[1], TyH); 823 __asm__ __volatile__( 824 "ldr q7, [%0, #0] ; " 825 "smaxv h8, v7.4h ; " 826 "str q8, [%0, #16] " 827 : : "r"(&block[0]) : "memory", "v7", "v8" 828 ); 829 printf("SMAXV h8, v7.4h "); 830 showV128(&block[0]); printf(" "); 831 showV128(&block[1]); printf("\n"); 832 } 833 834 /* -- 16b -- */ 835 836 for (i = 0; i < 10; i++) { 837 memset(&block, 0x55, sizeof(block)); 838 randV128(&block[0], TyB); 839 randV128(&block[1], TyB); 840 __asm__ __volatile__( 841 "ldr q7, [%0, #0] ; " 842 "smaxv b8, v7.16b ; " 843 "str q8, [%0, #16] " 844 : : "r"(&block[0]) : "memory", "v7", "v8" 845 ); 846 printf("SMAXV b8, v7.16b "); 847 showV128(&block[0]); printf(" "); 848 showV128(&block[1]); printf("\n"); 849 } 850 851 /* -- 8b -- */ 852 853 for (i = 0; i < 10; i++) { 854 memset(&block, 0x55, sizeof(block)); 855 randV128(&block[0], TyB); 856 randV128(&block[1], TyB); 857 __asm__ __volatile__( 858 "ldr q7, [%0, #0] ; " 859 "smaxv b8, v7.8b ; " 860 "str q8, [%0, #16] " 861 : : "r"(&block[0]) : "memory", "v7", "v8" 862 ); 863 printf("SMAXV b8, v7.8b "); 864 showV128(&block[0]); printf(" "); 865 showV128(&block[1]); printf("\n"); 866 } 867 868} 869 870 871GEN_BINARY_TEST(umax, 4s, 4s, 4s) 872GEN_BINARY_TEST(umax, 2s, 2s, 2s) 873GEN_BINARY_TEST(umax, 8h, 8h, 8h) 874GEN_BINARY_TEST(umax, 4h, 4h, 4h) 875GEN_BINARY_TEST(umax, 16b, 16b, 16b) 876GEN_BINARY_TEST(umax, 8b, 8b, 8b) 877 878GEN_BINARY_TEST(umin, 4s, 4s, 4s) 879GEN_BINARY_TEST(umin, 2s, 2s, 2s) 880GEN_BINARY_TEST(umin, 8h, 8h, 8h) 881GEN_BINARY_TEST(umin, 4h, 4h, 4h) 882GEN_BINARY_TEST(umin, 16b, 16b, 16b) 883GEN_BINARY_TEST(umin, 8b, 8b, 8b) 884 885GEN_BINARY_TEST(smax, 4s, 4s, 4s) 886GEN_BINARY_TEST(smax, 2s, 2s, 2s) 887GEN_BINARY_TEST(smax, 8h, 8h, 8h) 888GEN_BINARY_TEST(smax, 4h, 4h, 4h) 889GEN_BINARY_TEST(smax, 16b, 16b, 16b) 890GEN_BINARY_TEST(smax, 8b, 8b, 8b) 891 892GEN_BINARY_TEST(smin, 4s, 4s, 4s) 893GEN_BINARY_TEST(smin, 2s, 2s, 2s) 894GEN_BINARY_TEST(smin, 8h, 8h, 8h) 895GEN_BINARY_TEST(smin, 4h, 4h, 4h) 896GEN_BINARY_TEST(smin, 16b, 16b, 16b) 897GEN_BINARY_TEST(smin, 8b, 8b, 8b) 898 899GEN_BINARY_TEST(add, 2d, 2d, 2d) 900GEN_BINARY_TEST(add, 4s, 4s, 4s) 901GEN_BINARY_TEST(add, 2s, 2s, 2s) 902GEN_BINARY_TEST(add, 8h, 8h, 8h) 903GEN_BINARY_TEST(add, 4h, 4h, 4h) 904GEN_BINARY_TEST(add, 16b, 16b, 16b) 905GEN_BINARY_TEST(add, 8b, 8b, 8b) 906 907GEN_BINARY_TEST(sub, 2d, 2d, 2d) 908GEN_BINARY_TEST(sub, 4s, 4s, 4s) 909GEN_BINARY_TEST(sub, 2s, 2s, 2s) 910GEN_BINARY_TEST(sub, 8h, 8h, 8h) 911GEN_BINARY_TEST(sub, 4h, 4h, 4h) 912GEN_BINARY_TEST(sub, 16b, 16b, 16b) 913GEN_BINARY_TEST(sub, 8b, 8b, 8b) 914 915GEN_BINARY_TEST(mul, 4s, 4s, 4s) 916GEN_BINARY_TEST(mul, 2s, 2s, 2s) 917GEN_BINARY_TEST(mul, 8h, 8h, 8h) 918GEN_BINARY_TEST(mul, 4h, 4h, 4h) 919GEN_BINARY_TEST(mul, 16b, 16b, 16b) 920GEN_BINARY_TEST(mul, 8b, 8b, 8b) 921 922GEN_BINARY_TEST(mla, 4s, 4s, 4s) 923GEN_BINARY_TEST(mla, 2s, 2s, 2s) 924GEN_BINARY_TEST(mla, 8h, 8h, 8h) 925GEN_BINARY_TEST(mla, 4h, 4h, 4h) 926GEN_BINARY_TEST(mla, 16b, 16b, 16b) 927GEN_BINARY_TEST(mla, 8b, 8b, 8b) 928 929GEN_BINARY_TEST(mls, 4s, 4s, 4s) 930GEN_BINARY_TEST(mls, 2s, 2s, 2s) 931GEN_BINARY_TEST(mls, 8h, 8h, 8h) 932GEN_BINARY_TEST(mls, 4h, 4h, 4h) 933GEN_BINARY_TEST(mls, 16b, 16b, 16b) 934GEN_BINARY_TEST(mls, 8b, 8b, 8b) 935 936GEN_BINARY_TEST(and, 16b, 16b, 16b) 937GEN_BINARY_TEST(and, 8b, 8b, 8b) 938 939GEN_BINARY_TEST(bic, 16b, 16b, 16b) 940GEN_BINARY_TEST(bic, 8b, 8b, 8b) 941 942GEN_BINARY_TEST(orr, 16b, 16b, 16b) 943GEN_BINARY_TEST(orr, 8b, 8b, 8b) 944 945GEN_BINARY_TEST(orn, 16b, 16b, 16b) 946GEN_BINARY_TEST(orn, 8b, 8b, 8b) 947 948GEN_BINARY_TEST(eor, 16b, 16b, 16b) 949GEN_BINARY_TEST(eor, 8b, 8b, 8b) 950 951GEN_BINARY_TEST(bsl, 16b, 16b, 16b) 952GEN_BINARY_TEST(bsl, 8b, 8b, 8b) 953 954GEN_BINARY_TEST(bit, 16b, 16b, 16b) 955GEN_BINARY_TEST(bit, 8b, 8b, 8b) 956 957GEN_BINARY_TEST(bif, 16b, 16b, 16b) 958GEN_BINARY_TEST(bif, 8b, 8b, 8b) 959 960GEN_BINARY_TEST(cmeq, 2d, 2d, 2d) 961GEN_BINARY_TEST(cmeq, 4s, 4s, 4s) 962GEN_BINARY_TEST(cmeq, 2s, 2s, 2s) 963GEN_BINARY_TEST(cmeq, 8h, 8h, 8h) 964GEN_BINARY_TEST(cmeq, 4h, 4h, 4h) 965GEN_BINARY_TEST(cmeq, 16b, 16b, 16b) 966GEN_BINARY_TEST(cmeq, 8b, 8b, 8b) 967 968GEN_BINARY_TEST(cmtst, 2d, 2d, 2d) 969GEN_BINARY_TEST(cmtst, 4s, 4s, 4s) 970GEN_BINARY_TEST(cmtst, 2s, 2s, 2s) 971GEN_BINARY_TEST(cmtst, 8h, 8h, 8h) 972GEN_BINARY_TEST(cmtst, 4h, 4h, 4h) 973GEN_BINARY_TEST(cmtst, 16b, 16b, 16b) 974GEN_BINARY_TEST(cmtst, 8b, 8b, 8b) 975 976GEN_BINARY_TEST(cmhi, 2d, 2d, 2d) 977GEN_BINARY_TEST(cmhi, 4s, 4s, 4s) 978GEN_BINARY_TEST(cmhi, 2s, 2s, 2s) 979GEN_BINARY_TEST(cmhi, 8h, 8h, 8h) 980GEN_BINARY_TEST(cmhi, 4h, 4h, 4h) 981GEN_BINARY_TEST(cmhi, 16b, 16b, 16b) 982GEN_BINARY_TEST(cmhi, 8b, 8b, 8b) 983 984GEN_BINARY_TEST(cmgt, 2d, 2d, 2d) 985GEN_BINARY_TEST(cmgt, 4s, 4s, 4s) 986GEN_BINARY_TEST(cmgt, 2s, 2s, 2s) 987GEN_BINARY_TEST(cmgt, 8h, 8h, 8h) 988GEN_BINARY_TEST(cmgt, 4h, 4h, 4h) 989GEN_BINARY_TEST(cmgt, 16b, 16b, 16b) 990GEN_BINARY_TEST(cmgt, 8b, 8b, 8b) 991 992GEN_BINARY_TEST(cmhs, 2d, 2d, 2d) 993GEN_BINARY_TEST(cmhs, 4s, 4s, 4s) 994GEN_BINARY_TEST(cmhs, 2s, 2s, 2s) 995GEN_BINARY_TEST(cmhs, 8h, 8h, 8h) 996GEN_BINARY_TEST(cmhs, 4h, 4h, 4h) 997GEN_BINARY_TEST(cmhs, 16b, 16b, 16b) 998GEN_BINARY_TEST(cmhs, 8b, 8b, 8b) 999 1000GEN_BINARY_TEST(cmge, 2d, 2d, 2d) 1001GEN_BINARY_TEST(cmge, 4s, 4s, 4s) 1002GEN_BINARY_TEST(cmge, 2s, 2s, 2s) 1003GEN_BINARY_TEST(cmge, 8h, 8h, 8h) 1004GEN_BINARY_TEST(cmge, 4h, 4h, 4h) 1005GEN_BINARY_TEST(cmge, 16b, 16b, 16b) 1006GEN_BINARY_TEST(cmge, 8b, 8b, 8b) 1007 1008GEN_SHIFT_TEST(ushr, 2d, 2d, 1) 1009GEN_SHIFT_TEST(ushr, 2d, 2d, 13) 1010GEN_SHIFT_TEST(ushr, 2d, 2d, 64) 1011GEN_SHIFT_TEST(sshr, 2d, 2d, 1) 1012GEN_SHIFT_TEST(sshr, 2d, 2d, 13) 1013GEN_SHIFT_TEST(sshr, 2d, 2d, 64) 1014GEN_SHIFT_TEST(shl, 2d, 2d, 0) 1015GEN_SHIFT_TEST(shl, 2d, 2d, 13) 1016GEN_SHIFT_TEST(shl, 2d, 2d, 63) 1017 1018GEN_SHIFT_TEST(ushr, 4s, 4s, 1) 1019GEN_SHIFT_TEST(ushr, 4s, 4s, 13) 1020GEN_SHIFT_TEST(ushr, 4s, 4s, 32) 1021GEN_SHIFT_TEST(sshr, 4s, 4s, 1) 1022GEN_SHIFT_TEST(sshr, 4s, 4s, 13) 1023GEN_SHIFT_TEST(sshr, 4s, 4s, 32) 1024GEN_SHIFT_TEST(shl, 4s, 4s, 0) 1025GEN_SHIFT_TEST(shl, 4s, 4s, 13) 1026GEN_SHIFT_TEST(shl, 4s, 4s, 31) 1027 1028GEN_SHIFT_TEST(ushr, 2s, 2s, 1) 1029GEN_SHIFT_TEST(ushr, 2s, 2s, 13) 1030GEN_SHIFT_TEST(ushr, 2s, 2s, 32) 1031GEN_SHIFT_TEST(sshr, 2s, 2s, 1) 1032GEN_SHIFT_TEST(sshr, 2s, 2s, 13) 1033GEN_SHIFT_TEST(sshr, 2s, 2s, 32) 1034GEN_SHIFT_TEST(shl, 2s, 2s, 0) 1035GEN_SHIFT_TEST(shl, 2s, 2s, 13) 1036GEN_SHIFT_TEST(shl, 2s, 2s, 31) 1037 1038GEN_SHIFT_TEST(ushr, 8h, 8h, 1) 1039GEN_SHIFT_TEST(ushr, 8h, 8h, 13) 1040GEN_SHIFT_TEST(ushr, 8h, 8h, 16) 1041GEN_SHIFT_TEST(sshr, 8h, 8h, 1) 1042GEN_SHIFT_TEST(sshr, 8h, 8h, 13) 1043GEN_SHIFT_TEST(sshr, 8h, 8h, 16) 1044GEN_SHIFT_TEST(shl, 8h, 8h, 0) 1045GEN_SHIFT_TEST(shl, 8h, 8h, 13) 1046GEN_SHIFT_TEST(shl, 8h, 8h, 15) 1047 1048GEN_SHIFT_TEST(ushr, 4h, 4h, 1) 1049GEN_SHIFT_TEST(ushr, 4h, 4h, 13) 1050GEN_SHIFT_TEST(ushr, 4h, 4h, 16) 1051GEN_SHIFT_TEST(sshr, 4h, 4h, 1) 1052GEN_SHIFT_TEST(sshr, 4h, 4h, 13) 1053GEN_SHIFT_TEST(sshr, 4h, 4h, 16) 1054GEN_SHIFT_TEST(shl, 4h, 4h, 0) 1055GEN_SHIFT_TEST(shl, 4h, 4h, 13) 1056GEN_SHIFT_TEST(shl, 4h, 4h, 15) 1057 1058GEN_SHIFT_TEST(ushr, 16b, 16b, 1) 1059GEN_SHIFT_TEST(ushr, 16b, 16b, 8) 1060GEN_SHIFT_TEST(sshr, 16b, 16b, 1) 1061GEN_SHIFT_TEST(sshr, 16b, 16b, 8) 1062GEN_SHIFT_TEST(shl, 16b, 16b, 0) 1063GEN_SHIFT_TEST(shl, 16b, 16b, 7) 1064 1065GEN_SHIFT_TEST(ushr, 8b, 8b, 1) 1066GEN_SHIFT_TEST(ushr, 8b, 8b, 8) 1067GEN_SHIFT_TEST(sshr, 8b, 8b, 1) 1068GEN_SHIFT_TEST(sshr, 8b, 8b, 8) 1069GEN_SHIFT_TEST(shl, 8b, 8b, 0) 1070GEN_SHIFT_TEST(shl, 8b, 8b, 7) 1071 1072GEN_SHIFT_TEST(ushll, 2d, 2s, 0) 1073GEN_SHIFT_TEST(ushll, 2d, 2s, 15) 1074GEN_SHIFT_TEST(ushll, 2d, 2s, 31) 1075GEN_SHIFT_TEST(ushll2, 2d, 4s, 0) 1076GEN_SHIFT_TEST(ushll2, 2d, 4s, 15) 1077GEN_SHIFT_TEST(ushll2, 2d, 4s, 31) 1078GEN_SHIFT_TEST(ushll, 4s, 4h, 0) 1079GEN_SHIFT_TEST(ushll, 4s, 4h, 7) 1080GEN_SHIFT_TEST(ushll, 4s, 4h, 15) 1081GEN_SHIFT_TEST(ushll2, 4s, 8h, 0) 1082GEN_SHIFT_TEST(ushll2, 4s, 8h, 7) 1083GEN_SHIFT_TEST(ushll2, 4s, 8h, 15) 1084GEN_SHIFT_TEST(ushll, 8h, 8b, 0) 1085GEN_SHIFT_TEST(ushll, 8h, 8b, 3) 1086GEN_SHIFT_TEST(ushll, 8h, 8b, 7) 1087GEN_SHIFT_TEST(ushll2, 8h, 16b, 0) 1088GEN_SHIFT_TEST(ushll2, 8h, 16b, 3) 1089GEN_SHIFT_TEST(ushll2, 8h, 16b, 7) 1090 1091GEN_SHIFT_TEST(sshll, 2d, 2s, 0) 1092GEN_SHIFT_TEST(sshll, 2d, 2s, 15) 1093GEN_SHIFT_TEST(sshll, 2d, 2s, 31) 1094GEN_SHIFT_TEST(sshll2, 2d, 4s, 0) 1095GEN_SHIFT_TEST(sshll2, 2d, 4s, 15) 1096GEN_SHIFT_TEST(sshll2, 2d, 4s, 31) 1097GEN_SHIFT_TEST(sshll, 4s, 4h, 0) 1098GEN_SHIFT_TEST(sshll, 4s, 4h, 7) 1099GEN_SHIFT_TEST(sshll, 4s, 4h, 15) 1100GEN_SHIFT_TEST(sshll2, 4s, 8h, 0) 1101GEN_SHIFT_TEST(sshll2, 4s, 8h, 7) 1102GEN_SHIFT_TEST(sshll2, 4s, 8h, 15) 1103GEN_SHIFT_TEST(sshll, 8h, 8b, 0) 1104GEN_SHIFT_TEST(sshll, 8h, 8b, 3) 1105GEN_SHIFT_TEST(sshll, 8h, 8b, 7) 1106GEN_SHIFT_TEST(sshll2, 8h, 16b, 0) 1107GEN_SHIFT_TEST(sshll2, 8h, 16b, 3) 1108GEN_SHIFT_TEST(sshll2, 8h, 16b, 7) 1109 1110 1111GEN_UNARY_TEST(xtn, 2s, 2d) 1112GEN_UNARY_TEST(xtn2, 4s, 2d) 1113GEN_UNARY_TEST(xtn, 4h, 4s) 1114GEN_UNARY_TEST(xtn2, 8h, 4s) 1115GEN_UNARY_TEST(xtn, 8b, 8h) 1116GEN_UNARY_TEST(xtn2, 16b, 8h) 1117 1118GEN_ONEINT_ONEVEC_TEST(umov_x_d0, "umov x9, v10.d[0]", 9, 10) 1119GEN_ONEINT_ONEVEC_TEST(umov_x_d1, "umov x9, v10.d[1]", 9, 10) 1120GEN_ONEINT_ONEVEC_TEST(umov_w_s0, "umov w9, v10.s[0]", 9, 10) 1121GEN_ONEINT_ONEVEC_TEST(umov_w_s3, "umov w9, v10.s[3]", 9, 10) 1122GEN_ONEINT_ONEVEC_TEST(umov_w_h0, "umov w9, v10.h[0]", 9, 10) 1123GEN_ONEINT_ONEVEC_TEST(umov_w_h7, "umov w9, v10.h[7]", 9, 10) 1124GEN_ONEINT_ONEVEC_TEST(umov_w_b0, "umov w9, v10.b[0]", 9, 10) 1125GEN_ONEINT_ONEVEC_TEST(umov_w_b15, "umov w9, v10.b[15]", 9, 10) 1126 1127GEN_ONEINT_ONEVEC_TEST(smov_x_s0, "smov x9, v10.s[0]", 9, 10) 1128GEN_ONEINT_ONEVEC_TEST(smov_x_s3, "smov x9, v10.s[3]", 9, 10) 1129GEN_ONEINT_ONEVEC_TEST(smov_x_h0, "smov x9, v10.h[0]", 9, 10) 1130GEN_ONEINT_ONEVEC_TEST(smov_x_h7, "smov x9, v10.h[7]", 9, 10) 1131GEN_ONEINT_ONEVEC_TEST(smov_w_h0, "smov w9, v10.h[0]", 9, 10) 1132GEN_ONEINT_ONEVEC_TEST(smov_w_h7, "smov w9, v10.h[7]", 9, 10) 1133GEN_ONEINT_ONEVEC_TEST(smov_x_b0, "smov x9, v10.b[0]", 9, 10) 1134GEN_ONEINT_ONEVEC_TEST(smov_x_b15, "smov x9, v10.b[15]", 9, 10) 1135GEN_ONEINT_ONEVEC_TEST(smov_w_b0, "smov w9, v10.b[0]", 9, 10) 1136GEN_ONEINT_ONEVEC_TEST(smov_w_b15, "smov w9, v10.b[15]", 9, 10) 1137 1138GEN_TWOVEC_TEST(fcvtn_2s_2d, "fcvtn v22.2s, v23.2d", 22, 23) 1139GEN_TWOVEC_TEST(fcvtn_4s_2d, "fcvtn2 v22.4s, v23.2d", 22, 23) 1140 1141GEN_UNARY_TEST(neg, 2d, 2d) 1142GEN_UNARY_TEST(neg, 4s, 4s) 1143GEN_UNARY_TEST(neg, 2s, 2s) 1144GEN_UNARY_TEST(neg, 8h, 8h) 1145GEN_UNARY_TEST(neg, 4h, 4h) 1146GEN_UNARY_TEST(neg, 16b, 16b) 1147GEN_UNARY_TEST(neg, 8b, 8b) 1148 1149GEN_BINARY_TEST(fadd, 2d, 2d, 2d) 1150GEN_BINARY_TEST(fadd, 4s, 4s, 4s) 1151GEN_BINARY_TEST(fadd, 2s, 2s, 2s) 1152GEN_BINARY_TEST(fsub, 2d, 2d, 2d) 1153GEN_BINARY_TEST(fsub, 4s, 4s, 4s) 1154GEN_BINARY_TEST(fsub, 2s, 2s, 2s) 1155GEN_BINARY_TEST(fmul, 2d, 2d, 2d) 1156GEN_BINARY_TEST(fmul, 4s, 4s, 4s) 1157GEN_BINARY_TEST(fmul, 2s, 2s, 2s) 1158GEN_BINARY_TEST(fdiv, 2d, 2d, 2d) 1159GEN_BINARY_TEST(fdiv, 4s, 4s, 4s) 1160GEN_BINARY_TEST(fdiv, 2s, 2s, 2s) 1161GEN_BINARY_TEST(fmla, 2d, 2d, 2d) 1162GEN_BINARY_TEST(fmla, 4s, 4s, 4s) 1163GEN_BINARY_TEST(fmla, 2s, 2s, 2s) 1164GEN_BINARY_TEST(fmls, 2d, 2d, 2d) 1165GEN_BINARY_TEST(fmls, 4s, 4s, 4s) 1166GEN_BINARY_TEST(fmls, 2s, 2s, 2s) 1167GEN_BINARY_TEST(fabd, 2d, 2d, 2d) 1168GEN_BINARY_TEST(fabd, 4s, 4s, 4s) 1169GEN_BINARY_TEST(fabd, 2s, 2s, 2s) 1170 1171GEN_THREEVEC_TEST(add_d_d_d, "add d21, d22, d23", 21, 22, 23) 1172GEN_THREEVEC_TEST(sub_d_d_d, "sub d21, d22, d23", 21, 22, 23) 1173 1174/* overkill -- don't need two vecs, only one */ 1175GEN_TWOVEC_TEST(fmov_d_imm_01, "fmov d22, #0.125", 22, 23) 1176GEN_TWOVEC_TEST(fmov_d_imm_02, "fmov d22, #-4.0", 22, 23) 1177GEN_TWOVEC_TEST(fmov_d_imm_03, "fmov d22, #1.0", 22, 23) 1178GEN_TWOVEC_TEST(fmov_s_imm_01, "fmov s22, #0.125", 22, 23) 1179GEN_TWOVEC_TEST(fmov_s_imm_02, "fmov s22, #-4.0", 22, 23) 1180GEN_TWOVEC_TEST(fmov_s_imm_03, "fmov s22, #-1.0", 22, 23) 1181 1182GEN_ONEINT_ONEVEC_TEST(fmov_s_w, "fmov s7, w15", 15, 7) 1183GEN_ONEINT_ONEVEC_TEST(fmov_d_x, "fmov d7, x15", 15, 7) 1184GEN_ONEINT_ONEVEC_TEST(fmov_d1_x, "fmov v7.d[1], x15", 15, 7) 1185GEN_ONEINT_ONEVEC_TEST(fmov_w_s, "fmov w15, s7", 15, 7) 1186GEN_ONEINT_ONEVEC_TEST(fmov_x_d, "fmov x15, d7", 15, 7) 1187GEN_ONEINT_ONEVEC_TEST(fmov_x_d1, "fmov x15, v7.d[1]", 15, 7) 1188 1189GEN_TWOVEC_TEST(fmov_2d_imm_01, "fmov v22.2d, #0.125", 22, 23) 1190GEN_TWOVEC_TEST(fmov_2d_imm_02, "fmov v22.2d, #-4.0", 22, 23) 1191GEN_TWOVEC_TEST(fmov_2d_imm_03, "fmov v22.2d, #1.0", 22, 23) 1192GEN_TWOVEC_TEST(fmov_4s_imm_01, "fmov v22.4s, #0.125", 22, 23) 1193GEN_TWOVEC_TEST(fmov_4s_imm_02, "fmov v22.4s, #-4.0", 22, 23) 1194GEN_TWOVEC_TEST(fmov_4s_imm_03, "fmov v22.4s, #1.0", 22, 23) 1195GEN_TWOVEC_TEST(fmov_2s_imm_01, "fmov v22.2s, #0.125", 22, 23) 1196GEN_TWOVEC_TEST(fmov_2s_imm_02, "fmov v22.2s, #-4.0", 22, 23) 1197GEN_TWOVEC_TEST(fmov_2s_imm_03, "fmov v22.2s, #1.0", 22, 23) 1198 1199GEN_TWOVEC_TEST(scvtf_s_s, "scvtf s7, s8", 7, 8) 1200GEN_TWOVEC_TEST(scvtf_d_d, "scvtf d7, d8", 7, 8) 1201GEN_TWOVEC_TEST(ucvtf_s_s, "ucvtf s7, s8", 7, 8) 1202GEN_TWOVEC_TEST(ucvtf_d_d, "ucvtf d7, d8", 7, 8) 1203 1204GEN_ONEINT_ONEVEC_TEST(scvtf_s_w, "scvtf s7, w15", 15, 7) 1205GEN_ONEINT_ONEVEC_TEST(scvtf_d_w, "scvtf d7, w15", 15, 7) 1206GEN_ONEINT_ONEVEC_TEST(scvtf_s_x, "scvtf s7, x15", 15, 7) 1207GEN_ONEINT_ONEVEC_TEST(scvtf_d_x, "scvtf d7, x15", 15, 7) 1208GEN_ONEINT_ONEVEC_TEST(ucvtf_s_w, "ucvtf s7, w15", 15, 7) 1209GEN_ONEINT_ONEVEC_TEST(ucvtf_d_w, "ucvtf d7, w15", 15, 7) 1210GEN_ONEINT_ONEVEC_TEST(ucvtf_s_x, "ucvtf s7, x15", 15, 7) 1211GEN_ONEINT_ONEVEC_TEST(ucvtf_d_x, "ucvtf d7, x15", 15, 7) 1212 1213GEN_THREEVEC_TEST(fadd_d_d_d, "fadd d2, d11, d29", 2, 11, 29) 1214GEN_THREEVEC_TEST(fadd_s_s_s, "fadd s2, s11, s29", 2, 11, 29) 1215GEN_THREEVEC_TEST(fsub_d_d_d, "fsub d2, d11, d29", 2, 11, 29) 1216GEN_THREEVEC_TEST(fsub_s_s_s, "fsub s2, s11, s29", 2, 11, 29) 1217GEN_THREEVEC_TEST(fmul_d_d_d, "fmul d2, d11, d29", 2, 11, 29) 1218GEN_THREEVEC_TEST(fmul_s_s_s, "fmul s2, s11, s29", 2, 11, 29) 1219GEN_THREEVEC_TEST(fdiv_d_d_d, "fdiv d2, d11, d29", 2, 11, 29) 1220GEN_THREEVEC_TEST(fdiv_s_s_s, "fdiv s2, s11, s29", 2, 11, 29) 1221GEN_THREEVEC_TEST(fnmul_d_d_d, "fnmul d2, d11, d29", 2, 11, 29) 1222GEN_THREEVEC_TEST(fnmul_s_s_s, "fnmul s2, s11, s29", 2, 11, 29) 1223 1224GEN_THREEVEC_TEST(fabd_d_d_d, "fabd d2, d11, d29", 2, 11, 29) 1225GEN_THREEVEC_TEST(fabd_s_s_s, "fabd s2, s11, s29", 2, 11, 29) 1226 1227GEN_TWOVEC_TEST(fmov_d_d, "fmov d22, d23", 22, 23) 1228GEN_TWOVEC_TEST(fmov_s_s, "fmov s22, s23", 22, 23) 1229GEN_TWOVEC_TEST(fabs_d_d, "fabs d22, d23", 22, 23) 1230GEN_TWOVEC_TEST(fabs_s_s, "fabs s22, s23", 22, 23) 1231GEN_TWOVEC_TEST(fneg_d_d, "fneg d22, d23", 22, 23) 1232GEN_TWOVEC_TEST(fneg_s_s, "fneg s22, s23", 22, 23) 1233GEN_TWOVEC_TEST(fsqrt_d_d, "fsqrt d22, d23", 22, 23) 1234GEN_TWOVEC_TEST(fsqrt_s_s, "fsqrt s22, s23", 22, 23) 1235 1236GEN_UNARY_TEST(fneg, 2d, 2d) 1237GEN_UNARY_TEST(fneg, 4s, 4s) 1238GEN_UNARY_TEST(fneg, 2s, 2s) 1239GEN_UNARY_TEST(fabs, 2d, 2d) 1240GEN_UNARY_TEST(fabs, 4s, 4s) 1241GEN_UNARY_TEST(fabs, 2s, 2s) 1242 1243GEN_BINARY_TEST(fcmeq, 2d, 2d, 2d) 1244GEN_BINARY_TEST(fcmeq, 4s, 4s, 4s) 1245GEN_BINARY_TEST(fcmeq, 2s, 2s, 2s) 1246GEN_BINARY_TEST(fcmge, 2d, 2d, 2d) 1247GEN_BINARY_TEST(fcmge, 4s, 4s, 4s) 1248GEN_BINARY_TEST(fcmge, 2s, 2s, 2s) 1249GEN_BINARY_TEST(fcmgt, 2d, 2d, 2d) 1250GEN_BINARY_TEST(fcmgt, 4s, 4s, 4s) 1251GEN_BINARY_TEST(fcmgt, 2s, 2s, 2s) 1252GEN_BINARY_TEST(facge, 2d, 2d, 2d) 1253GEN_BINARY_TEST(facge, 4s, 4s, 4s) 1254GEN_BINARY_TEST(facge, 2s, 2s, 2s) 1255GEN_BINARY_TEST(facgt, 2d, 2d, 2d) 1256GEN_BINARY_TEST(facgt, 4s, 4s, 4s) 1257GEN_BINARY_TEST(facgt, 2s, 2s, 2s) 1258 1259// Uses v15 as the first table entry 1260GEN_THREEVEC_TEST( 1261 tbl_16b_1reg, "tbl v21.16b, {v15.16b}, v23.16b", 21, 15, 23) 1262// and v15 ^ v21 as the second table entry 1263GEN_THREEVEC_TEST( 1264 tbl_16b_2reg, "eor v16.16b, v15.16b, v21.16b ; " 1265 "tbl v21.16b, {v15.16b, v16.16b}, v23.16b", 21, 15, 23) 1266// and v15 ^ v23 as the third table entry 1267GEN_THREEVEC_TEST( 1268 tbl_16b_3reg, "eor v16.16b, v15.16b, v21.16b ; " 1269 "eor v17.16b, v15.16b, v23.16b ; " 1270 "tbl v21.16b, {v15.16b, v16.16b, v17.16b}, v23.16b", 1271 21, 15, 23) 1272// and v21 ^ v23 as the fourth table entry 1273GEN_THREEVEC_TEST( 1274 tbl_16b_4reg, "eor v16.16b, v15.16b, v21.16b ; " 1275 "eor v17.16b, v15.16b, v23.16b ; " 1276 "eor v18.16b, v21.16b, v23.16b ; " 1277 "tbl v21.16b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.16b", 1278 21, 15, 23) 1279 1280// Same register scheme for tbl .8b, tbx .16b, tbx.8b 1281GEN_THREEVEC_TEST( 1282 tbl_8b_1reg, "tbl v21.8b, {v15.16b}, v23.8b", 21, 15, 23) 1283GEN_THREEVEC_TEST( 1284 tbl_8b_2reg, "eor v16.16b, v15.16b, v21.16b ; " 1285 "tbl v21.8b, {v15.16b, v16.16b}, v23.8b", 21, 15, 23) 1286GEN_THREEVEC_TEST( 1287 tbl_8b_3reg, "eor v16.16b, v15.16b, v21.16b ; " 1288 "eor v17.16b, v15.16b, v23.16b ; " 1289 "tbl v21.8b, {v15.16b, v16.16b, v17.16b}, v23.8b", 1290 21, 15, 23) 1291GEN_THREEVEC_TEST( 1292 tbl_8b_4reg, "eor v16.16b, v15.16b, v21.16b ; " 1293 "eor v17.16b, v15.16b, v23.16b ; " 1294 "eor v18.16b, v21.16b, v23.16b ; " 1295 "tbl v21.8b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.8b", 1296 21, 15, 23) 1297 1298GEN_THREEVEC_TEST( 1299 tbx_16b_1reg, "tbx v21.16b, {v15.16b}, v23.16b", 21, 15, 23) 1300GEN_THREEVEC_TEST( 1301 tbx_16b_2reg, "eor v16.16b, v15.16b, v21.16b ; " 1302 "tbx v21.16b, {v15.16b, v16.16b}, v23.16b", 21, 15, 23) 1303GEN_THREEVEC_TEST( 1304 tbx_16b_3reg, "eor v16.16b, v15.16b, v21.16b ; " 1305 "eor v17.16b, v15.16b, v23.16b ; " 1306 "tbx v21.16b, {v15.16b, v16.16b, v17.16b}, v23.16b", 1307 21, 15, 23) 1308GEN_THREEVEC_TEST( 1309 tbx_16b_4reg, "eor v16.16b, v15.16b, v21.16b ; " 1310 "eor v17.16b, v15.16b, v23.16b ; " 1311 "eor v18.16b, v21.16b, v23.16b ; " 1312 "tbx v21.16b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.16b", 1313 21, 15, 23) 1314 1315// Same register scheme for tbx .8b, tbx .16b, tbx.8b 1316GEN_THREEVEC_TEST( 1317 tbx_8b_1reg, "tbx v21.8b, {v15.16b}, v23.8b", 21, 15, 23) 1318GEN_THREEVEC_TEST( 1319 tbx_8b_2reg, "eor v16.16b, v15.16b, v21.16b ; " 1320 "tbx v21.8b, {v15.16b, v16.16b}, v23.8b", 21, 15, 23) 1321GEN_THREEVEC_TEST( 1322 tbx_8b_3reg, "eor v16.16b, v15.16b, v21.16b ; " 1323 "eor v17.16b, v15.16b, v23.16b ; " 1324 "tbx v21.8b, {v15.16b, v16.16b, v17.16b}, v23.8b", 1325 21, 15, 23) 1326GEN_THREEVEC_TEST( 1327 tbx_8b_4reg, "eor v16.16b, v15.16b, v21.16b ; " 1328 "eor v17.16b, v15.16b, v23.16b ; " 1329 "eor v18.16b, v21.16b, v23.16b ; " 1330 "tbx v21.8b, {v15.16b, v16.16b, v17.16b, v18.16b}, v23.8b", 1331 21, 15, 23) 1332 1333GEN_TWOVEC_TEST(cmge_zero_2d_2d, "cmge v5.2d, v22.2d, #0", 5, 22) 1334GEN_TWOVEC_TEST(cmge_zero_4s_4s, "cmge v5.4s, v22.4s, #0", 5, 22) 1335GEN_TWOVEC_TEST(cmge_zero_2s_2s, "cmge v5.2s, v22.2s, #0", 5, 22) 1336GEN_TWOVEC_TEST(cmge_zero_8h_8h, "cmge v5.8h, v22.8h, #0", 5, 22) 1337GEN_TWOVEC_TEST(cmge_zero_4h_4h, "cmge v5.4h, v22.4h, #0", 5, 22) 1338GEN_TWOVEC_TEST(cmge_zero_16b_16b, "cmge v5.16b, v22.16b, #0", 5, 22) 1339GEN_TWOVEC_TEST(cmge_zero_8b_8b, "cmge v5.8b, v22.8b, #0", 5, 22) 1340 1341GEN_TWOVEC_TEST(cmgt_zero_2d_2d, "cmgt v5.2d, v22.2d, #0", 5, 22) 1342GEN_TWOVEC_TEST(cmgt_zero_4s_4s, "cmgt v5.4s, v22.4s, #0", 5, 22) 1343GEN_TWOVEC_TEST(cmgt_zero_2s_2s, "cmgt v5.2s, v22.2s, #0", 5, 22) 1344GEN_TWOVEC_TEST(cmgt_zero_8h_8h, "cmgt v5.8h, v22.8h, #0", 5, 22) 1345GEN_TWOVEC_TEST(cmgt_zero_4h_4h, "cmgt v5.4h, v22.4h, #0", 5, 22) 1346GEN_TWOVEC_TEST(cmgt_zero_16b_16b, "cmgt v5.16b, v22.16b, #0", 5, 22) 1347GEN_TWOVEC_TEST(cmgt_zero_8b_8b, "cmgt v5.8b, v22.8b, #0", 5, 22) 1348 1349GEN_TWOVEC_TEST(cmle_zero_2d_2d, "cmle v5.2d, v22.2d, #0", 5, 22) 1350GEN_TWOVEC_TEST(cmle_zero_4s_4s, "cmle v5.4s, v22.4s, #0", 5, 22) 1351GEN_TWOVEC_TEST(cmle_zero_2s_2s, "cmle v5.2s, v22.2s, #0", 5, 22) 1352GEN_TWOVEC_TEST(cmle_zero_8h_8h, "cmle v5.8h, v22.8h, #0", 5, 22) 1353GEN_TWOVEC_TEST(cmle_zero_4h_4h, "cmle v5.4h, v22.4h, #0", 5, 22) 1354GEN_TWOVEC_TEST(cmle_zero_16b_16b, "cmle v5.16b, v22.16b, #0", 5, 22) 1355GEN_TWOVEC_TEST(cmle_zero_8b_8b, "cmle v5.8b, v22.8b, #0", 5, 22) 1356 1357GEN_TWOVEC_TEST(cmeq_zero_2d_2d, "cmeq v5.2d, v22.2d, #0", 5, 22) 1358GEN_TWOVEC_TEST(cmeq_zero_4s_4s, "cmeq v5.4s, v22.4s, #0", 5, 22) 1359GEN_TWOVEC_TEST(cmeq_zero_2s_2s, "cmeq v5.2s, v22.2s, #0", 5, 22) 1360GEN_TWOVEC_TEST(cmeq_zero_8h_8h, "cmeq v5.8h, v22.8h, #0", 5, 22) 1361GEN_TWOVEC_TEST(cmeq_zero_4h_4h, "cmeq v5.4h, v22.4h, #0", 5, 22) 1362GEN_TWOVEC_TEST(cmeq_zero_16b_16b, "cmeq v5.16b, v22.16b, #0", 5, 22) 1363GEN_TWOVEC_TEST(cmeq_zero_8b_8b, "cmeq v5.8b, v22.8b, #0", 5, 22) 1364 1365GEN_TWOVEC_TEST(cmlt_zero_2d_2d, "cmlt v5.2d, v22.2d, #0", 5, 22) 1366GEN_TWOVEC_TEST(cmlt_zero_4s_4s, "cmlt v5.4s, v22.4s, #0", 5, 22) 1367GEN_TWOVEC_TEST(cmlt_zero_2s_2s, "cmlt v5.2s, v22.2s, #0", 5, 22) 1368GEN_TWOVEC_TEST(cmlt_zero_8h_8h, "cmlt v5.8h, v22.8h, #0", 5, 22) 1369GEN_TWOVEC_TEST(cmlt_zero_4h_4h, "cmlt v5.4h, v22.4h, #0", 5, 22) 1370GEN_TWOVEC_TEST(cmlt_zero_16b_16b, "cmlt v5.16b, v22.16b, #0", 5, 22) 1371GEN_TWOVEC_TEST(cmlt_zero_8b_8b, "cmlt v5.8b, v22.8b, #0", 5, 22) 1372 1373GEN_TWOVEC_TEST(abs_d_d, "abs d22, d23", 22, 23) 1374GEN_TWOVEC_TEST(neg_d_d, "neg d22, d23", 22, 23) 1375 1376GEN_UNARY_TEST(abs, 2d, 2d) 1377GEN_UNARY_TEST(abs, 4s, 4s) 1378GEN_UNARY_TEST(abs, 2s, 2s) 1379GEN_UNARY_TEST(abs, 8h, 8h) 1380GEN_UNARY_TEST(abs, 4h, 4h) 1381GEN_UNARY_TEST(abs, 16b, 16b) 1382GEN_UNARY_TEST(abs, 8b, 8b) 1383 1384GEN_BINARY_TEST(addhn, 2s, 2d, 2d) 1385GEN_BINARY_TEST(addhn2, 4s, 2d, 2d) 1386GEN_BINARY_TEST(addhn, 4h, 4s, 4s) 1387GEN_BINARY_TEST(addhn2, 8h, 4s, 4s) 1388GEN_BINARY_TEST(addhn, 8b, 8h, 8h) 1389GEN_BINARY_TEST(addhn2, 16b, 8h, 8h) 1390GEN_BINARY_TEST(subhn, 2s, 2d, 2d) 1391GEN_BINARY_TEST(subhn2, 4s, 2d, 2d) 1392GEN_BINARY_TEST(subhn, 4h, 4s, 4s) 1393GEN_BINARY_TEST(subhn2, 8h, 4s, 4s) 1394GEN_BINARY_TEST(subhn, 8b, 8h, 8h) 1395GEN_BINARY_TEST(subhn2, 16b, 8h, 8h) 1396GEN_BINARY_TEST(raddhn, 2s, 2d, 2d) 1397GEN_BINARY_TEST(raddhn2, 4s, 2d, 2d) 1398GEN_BINARY_TEST(raddhn, 4h, 4s, 4s) 1399GEN_BINARY_TEST(raddhn2, 8h, 4s, 4s) 1400GEN_BINARY_TEST(raddhn, 8b, 8h, 8h) 1401GEN_BINARY_TEST(raddhn2, 16b, 8h, 8h) 1402GEN_BINARY_TEST(rsubhn, 2s, 2d, 2d) 1403GEN_BINARY_TEST(rsubhn2, 4s, 2d, 2d) 1404GEN_BINARY_TEST(rsubhn, 4h, 4s, 4s) 1405GEN_BINARY_TEST(rsubhn2, 8h, 4s, 4s) 1406GEN_BINARY_TEST(rsubhn, 8b, 8h, 8h) 1407GEN_BINARY_TEST(rsubhn2, 16b, 8h, 8h) 1408 1409GEN_TWOVEC_TEST(addp_d_2d, "addp d22, v23.2d", 22, 23) 1410 1411GEN_BINARY_TEST(addp, 2d, 2d, 2d) 1412GEN_BINARY_TEST(addp, 4s, 4s, 4s) 1413GEN_BINARY_TEST(addp, 2s, 2s, 2s) 1414GEN_BINARY_TEST(addp, 8h, 8h, 8h) 1415GEN_BINARY_TEST(addp, 4h, 4h, 4h) 1416GEN_BINARY_TEST(addp, 16b, 16b, 16b) 1417GEN_BINARY_TEST(addp, 8b, 8b, 8b) 1418 1419GEN_TWOVEC_TEST(addv_s_4s, "addv s22, v23.4s", 22, 23) 1420GEN_TWOVEC_TEST(addv_h_8h, "addv h22, v23.8h", 22, 23) 1421GEN_TWOVEC_TEST(addv_h_4h, "addv h22, v23.4h", 22, 23) 1422GEN_TWOVEC_TEST(addv_b_16b, "addv b22, v23.16b", 22, 23) 1423GEN_TWOVEC_TEST(addv_b_8b, "addv b22, v23.8b", 22, 23) 1424 1425/* overkill -- don't need two vecs, only one */ 1426GEN_TWOVEC_TEST(orr_8h_0x5A_lsl0, "orr v22.8h, #0x5A, LSL #0", 22, 23) 1427GEN_TWOVEC_TEST(orr_8h_0xA5_lsl8, "orr v22.8h, #0xA5, LSL #8", 22, 23) 1428GEN_TWOVEC_TEST(orr_4h_0x5A_lsl0, "orr v22.4h, #0x5A, LSL #0", 22, 23) 1429GEN_TWOVEC_TEST(orr_4h_0xA5_lsl8, "orr v22.4h, #0xA5, LSL #8", 22, 23) 1430GEN_TWOVEC_TEST(orr_4s_0x5A_lsl0, "orr v22.4s, #0x5A, LSL #0", 22, 23) 1431GEN_TWOVEC_TEST(orr_4s_0x6B_lsl8, "orr v22.4s, #0x6B, LSL #8", 22, 23) 1432GEN_TWOVEC_TEST(orr_4s_0x49_lsl16, "orr v22.4s, #0x49, LSL #16", 22, 23) 1433GEN_TWOVEC_TEST(orr_4s_0x3D_lsl24, "orr v22.4s, #0x3D, LSL #24", 22, 23) 1434GEN_TWOVEC_TEST(orr_2s_0x5A_lsl0, "orr v22.2s, #0x5A, LSL #0", 22, 23) 1435GEN_TWOVEC_TEST(orr_2s_0x6B_lsl8, "orr v22.2s, #0x6B, LSL #8", 22, 23) 1436GEN_TWOVEC_TEST(orr_2s_0x49_lsl16, "orr v22.2s, #0x49, LSL #16", 22, 23) 1437GEN_TWOVEC_TEST(orr_2s_0x3D_lsl24, "orr v22.2s, #0x3D, LSL #24", 22, 23) 1438GEN_TWOVEC_TEST(bic_8h_0x5A_lsl0, "bic v22.8h, #0x5A, LSL #0", 22, 23) 1439GEN_TWOVEC_TEST(bic_8h_0xA5_lsl8, "bic v22.8h, #0xA5, LSL #8", 22, 23) 1440GEN_TWOVEC_TEST(bic_4h_0x5A_lsl0, "bic v22.4h, #0x5A, LSL #0", 22, 23) 1441GEN_TWOVEC_TEST(bic_4h_0xA5_lsl8, "bic v22.4h, #0xA5, LSL #8", 22, 23) 1442GEN_TWOVEC_TEST(bic_4s_0x5A_lsl0, "bic v22.4s, #0x5A, LSL #0", 22, 23) 1443GEN_TWOVEC_TEST(bic_4s_0x6B_lsl8, "bic v22.4s, #0x6B, LSL #8", 22, 23) 1444GEN_TWOVEC_TEST(bic_4s_0x49_lsl16, "bic v22.4s, #0x49, LSL #16", 22, 23) 1445GEN_TWOVEC_TEST(bic_4s_0x3D_lsl24, "bic v22.4s, #0x3D, LSL #24", 22, 23) 1446GEN_TWOVEC_TEST(bic_2s_0x5A_lsl0, "bic v22.2s, #0x5A, LSL #0", 22, 23) 1447GEN_TWOVEC_TEST(bic_2s_0x6B_lsl8, "bic v22.2s, #0x6B, LSL #8", 22, 23) 1448GEN_TWOVEC_TEST(bic_2s_0x49_lsl16, "bic v22.2s, #0x49, LSL #16", 22, 23) 1449GEN_TWOVEC_TEST(bic_2s_0x3D_lsl24, "bic v22.2s, #0x3D, LSL #24", 22, 23) 1450 1451GEN_UNARY_TEST(cls, 4s, 4s) 1452GEN_UNARY_TEST(cls, 2s, 2s) 1453GEN_UNARY_TEST(cls, 8h, 8h) 1454GEN_UNARY_TEST(cls, 4h, 4h) 1455GEN_UNARY_TEST(cls, 16b, 16b) 1456GEN_UNARY_TEST(cls, 8b, 8b) 1457 1458GEN_UNARY_TEST(clz, 4s, 4s) 1459GEN_UNARY_TEST(clz, 2s, 2s) 1460GEN_UNARY_TEST(clz, 8h, 8h) 1461GEN_UNARY_TEST(clz, 4h, 4h) 1462GEN_UNARY_TEST(clz, 16b, 16b) 1463GEN_UNARY_TEST(clz, 8b, 8b) 1464 1465GEN_THREEVEC_TEST(cmeq_d_d_d, "cmeq d2, d11, d29", 2, 11, 29) 1466GEN_THREEVEC_TEST(cmge_d_d_d, "cmge d2, d11, d29", 2, 11, 29) 1467GEN_THREEVEC_TEST(cmgt_d_d_d, "cmgt d2, d11, d29", 2, 11, 29) 1468GEN_THREEVEC_TEST(cmhi_d_d_d, "cmhi d2, d11, d29", 2, 11, 29) 1469GEN_THREEVEC_TEST(cmhs_d_d_d, "cmhs d2, d11, d29", 2, 11, 29) 1470GEN_THREEVEC_TEST(cmtst_d_d_d, "cmtst d2, d11, d29", 2, 11, 29) 1471 1472GEN_TWOVEC_TEST(cmeq_zero_d_d, "cmeq d2, d11, #0", 2, 11) 1473GEN_TWOVEC_TEST(cmge_zero_d_d, "cmge d2, d11, #0", 2, 11) 1474GEN_TWOVEC_TEST(cmgt_zero_d_d, "cmgt d2, d11, #0", 2, 11) 1475GEN_TWOVEC_TEST(cmle_zero_d_d, "cmle d2, d11, #0", 2, 11) 1476GEN_TWOVEC_TEST(cmlt_zero_d_d, "cmlt d2, d11, #0", 2, 11) 1477 1478GEN_UNARY_TEST(cnt, 16b, 16b) 1479GEN_UNARY_TEST(cnt, 8b, 8b) 1480 1481GEN_TWOVEC_TEST(dup_d_d0, "dup d22, v23.d[0]", 22, 23) 1482GEN_TWOVEC_TEST(dup_d_d1, "dup d22, v23.d[1]", 22, 23) 1483GEN_TWOVEC_TEST(dup_s_s0, "dup s22, v23.s[0]", 22, 23) 1484GEN_TWOVEC_TEST(dup_s_s3, "dup s22, v23.s[3]", 22, 23) 1485GEN_TWOVEC_TEST(dup_h_h0, "dup h22, v23.h[0]", 22, 23) 1486GEN_TWOVEC_TEST(dup_h_h6, "dup h22, v23.h[6]", 22, 23) 1487GEN_TWOVEC_TEST(dup_b_b0, "dup b0, v23.b[0]", 22, 23) 1488GEN_TWOVEC_TEST(dup_b_b13, "dup b13, v23.b[13]", 22, 23) 1489 1490GEN_TWOVEC_TEST(dup_2d_d0, "dup v9.2d, v17.d[0]", 9, 17) 1491GEN_TWOVEC_TEST(dup_2d_d1, "dup v9.2d, v17.d[1]", 9, 17) 1492GEN_TWOVEC_TEST(dup_4s_s0, "dup v9.4s, v17.s[0]", 9, 17) 1493GEN_TWOVEC_TEST(dup_4s_s3, "dup v9.4s, v17.s[3]", 9, 17) 1494GEN_TWOVEC_TEST(dup_2s_s0, "dup v9.2s, v17.s[0]", 9, 17) 1495GEN_TWOVEC_TEST(dup_2s_s2, "dup v9.2s, v17.s[2]", 9, 17) 1496GEN_TWOVEC_TEST(dup_8h_h0, "dup v9.8h, v17.h[0]", 9, 17) 1497GEN_TWOVEC_TEST(dup_8h_h6, "dup v9.8h, v17.h[6]", 9, 17) 1498GEN_TWOVEC_TEST(dup_4h_h1, "dup v9.4h, v17.h[1]", 9, 17) 1499GEN_TWOVEC_TEST(dup_4h_h5, "dup v9.4h, v17.h[5]", 9, 17) 1500GEN_TWOVEC_TEST(dup_16b_b2, "dup v9.16b, v17.b[2]", 9, 17) 1501GEN_TWOVEC_TEST(dup_16b_b12, "dup v9.16b, v17.b[12]", 9, 17) 1502GEN_TWOVEC_TEST(dup_8b_b3, "dup v9.8b, v17.b[3]", 9, 17) 1503GEN_TWOVEC_TEST(dup_8b_b13, "dup v9.8b, v17.b[13]", 9, 17) 1504 1505GEN_TWOVEC_TEST(dup_2d_x, "mov x10, v17.d[0]; dup v9.2d, x10", 9, 17) 1506GEN_TWOVEC_TEST(dup_4s_w, "mov x10, v17.d[0]; dup v9.4s, w10", 9, 17) 1507GEN_TWOVEC_TEST(dup_2s_w, "mov x10, v17.d[0]; dup v9.2s, w10", 9, 17) 1508GEN_TWOVEC_TEST(dup_8h_w, "mov x10, v17.d[0]; dup v9.8h, w10", 9, 17) 1509GEN_TWOVEC_TEST(dup_4h_w, "mov x10, v17.d[0]; dup v9.4h, w10", 9, 17) 1510GEN_TWOVEC_TEST(dup_16b_w, "mov x10, v17.d[0]; dup v9.16b, w10", 9, 17) 1511GEN_TWOVEC_TEST(dup_8b_w, "mov x10, v17.d[0]; dup v9.8b, w10", 9, 17) 1512 1513GEN_THREEVEC_TEST(ext_16b_16b_16b_0x0, 1514 "ext v2.16b, v11.16b, v29.16b, #0", 2, 11, 29) 1515GEN_THREEVEC_TEST(ext_16b_16b_16b_0x7, 1516 "ext v2.16b, v11.16b, v29.16b, #7", 2, 11, 29) 1517GEN_THREEVEC_TEST(ext_16b_16b_16b_0x8, 1518 "ext v2.16b, v11.16b, v29.16b, #8", 2, 11, 29) 1519GEN_THREEVEC_TEST(ext_16b_16b_16b_0x9, 1520 "ext v2.16b, v11.16b, v29.16b, #9", 2, 11, 29) 1521GEN_THREEVEC_TEST(ext_16b_16b_16b_0xF, 1522 "ext v2.16b, v11.16b, v29.16b, #15", 2, 11, 29) 1523 1524GEN_THREEVEC_TEST(ext_8b_8b_8b_0x0, 1525 "ext v2.8b, v11.8b, v29.8b, #0", 2, 11, 29) 1526GEN_THREEVEC_TEST(ext_8b_8b_8b_0x1, 1527 "ext v2.8b, v11.8b, v29.8b, #1", 2, 11, 29) 1528GEN_THREEVEC_TEST(ext_8b_8b_8b_0x6, 1529 "ext v2.8b, v11.8b, v29.8b, #6", 2, 11, 29) 1530GEN_THREEVEC_TEST(ext_8b_8b_8b_0x7, 1531 "ext v2.8b, v11.8b, v29.8b, #7", 2, 11, 29) 1532 1533 1534GEN_TWOVEC_TEST(ins_d0_d0, "ins v3.d[0], v24.d[0]", 3, 24) 1535GEN_TWOVEC_TEST(ins_d0_d1, "ins v3.d[0], v24.d[1]", 3, 24) 1536GEN_TWOVEC_TEST(ins_d1_d0, "ins v3.d[1], v24.d[0]", 3, 24) 1537GEN_TWOVEC_TEST(ins_d1_d1, "ins v3.d[1], v24.d[1]", 3, 24) 1538 1539GEN_TWOVEC_TEST(ins_s0_s2, "ins v3.s[0], v24.s[2]", 3, 24) 1540GEN_TWOVEC_TEST(ins_s3_s0, "ins v3.s[3], v24.s[0]", 3, 24) 1541GEN_TWOVEC_TEST(ins_s2_s1, "ins v3.s[2], v24.s[1]", 3, 24) 1542GEN_TWOVEC_TEST(ins_s1_s3, "ins v3.s[1], v24.s[3]", 3, 24) 1543 1544GEN_TWOVEC_TEST(ins_h0_h6, "ins v3.h[0], v24.h[6]", 3, 24) 1545GEN_TWOVEC_TEST(ins_h7_h0, "ins v3.h[7], v24.h[0]", 3, 24) 1546GEN_TWOVEC_TEST(ins_h6_h1, "ins v3.h[6], v24.h[1]", 3, 24) 1547GEN_TWOVEC_TEST(ins_h1_h7, "ins v3.h[1], v24.h[7]", 3, 24) 1548 1549GEN_TWOVEC_TEST(ins_b0_b14, "ins v3.b[0], v24.b[14]", 3, 24) 1550GEN_TWOVEC_TEST(ins_b15_b8, "ins v3.b[15], v24.b[8]", 3, 24) 1551GEN_TWOVEC_TEST(ins_b13_b9, "ins v3.b[13], v24.b[9]", 3, 24) 1552GEN_TWOVEC_TEST(ins_b5_b12, "ins v3.b[5], v24.b[12]", 3, 24) 1553 1554GEN_THREEVEC_TEST(mla_4s_4s_s0, "mla v2.4s, v11.4s, v29.s[0]", 2, 11, 29) 1555GEN_THREEVEC_TEST(mla_4s_4s_s3, "mla v2.4s, v11.4s, v29.s[3]", 2, 11, 29) 1556GEN_THREEVEC_TEST(mla_2s_2s_s0, "mla v2.2s, v11.2s, v29.s[0]", 2, 11, 29) 1557GEN_THREEVEC_TEST(mla_2s_2s_s3, "mla v2.2s, v11.2s, v29.s[3]", 2, 11, 29) 1558// For the 'h' version of these, Rm can only be <= 15 (!) 1559GEN_THREEVEC_TEST(mla_8h_8h_h1, "mla v2.8h, v11.8h, v2.h[1]", 2, 11, 9) 1560GEN_THREEVEC_TEST(mla_8h_8h_h5, "mla v2.8h, v11.8h, v2.h[5]", 2, 11, 9) 1561GEN_THREEVEC_TEST(mla_4h_4h_h2, "mla v2.4h, v11.4h, v2.h[2]", 2, 11, 9) 1562GEN_THREEVEC_TEST(mla_4h_4h_h7, "mla v2.4h, v11.4h, v2.h[7]", 2, 11, 9) 1563 1564GEN_THREEVEC_TEST(mls_4s_4s_s0, "mls v2.4s, v11.4s, v29.s[0]", 2, 11, 29) 1565GEN_THREEVEC_TEST(mls_4s_4s_s3, "mls v2.4s, v11.4s, v29.s[3]", 2, 11, 29) 1566GEN_THREEVEC_TEST(mls_2s_2s_s0, "mls v2.2s, v11.2s, v29.s[0]", 2, 11, 29) 1567GEN_THREEVEC_TEST(mls_2s_2s_s3, "mls v2.2s, v11.2s, v29.s[3]", 2, 11, 29) 1568// For the 'h' version of these, Rm can only be <= 15 (!) 1569GEN_THREEVEC_TEST(mls_8h_8h_h1, "mls v2.8h, v11.8h, v2.h[1]", 2, 11, 9) 1570GEN_THREEVEC_TEST(mls_8h_8h_h5, "mls v2.8h, v11.8h, v2.h[5]", 2, 11, 9) 1571GEN_THREEVEC_TEST(mls_4h_4h_h2, "mls v2.4h, v11.4h, v2.h[2]", 2, 11, 9) 1572GEN_THREEVEC_TEST(mls_4h_4h_h7, "mls v2.4h, v11.4h, v2.h[7]", 2, 11, 9) 1573 1574GEN_THREEVEC_TEST(mul_4s_4s_s0, "mul v2.4s, v11.4s, v29.s[0]", 2, 11, 29) 1575GEN_THREEVEC_TEST(mul_4s_4s_s3, "mul v2.4s, v11.4s, v29.s[3]", 2, 11, 29) 1576GEN_THREEVEC_TEST(mul_2s_2s_s0, "mul v2.2s, v11.2s, v29.s[0]", 2, 11, 29) 1577GEN_THREEVEC_TEST(mul_2s_2s_s3, "mul v2.2s, v11.2s, v29.s[3]", 2, 11, 29) 1578// For the 'h' version of these, Rm can only be <= 15 (!) 1579GEN_THREEVEC_TEST(mul_8h_8h_h1, "mul v2.8h, v11.8h, v2.h[1]", 2, 11, 9) 1580GEN_THREEVEC_TEST(mul_8h_8h_h5, "mul v2.8h, v11.8h, v2.h[5]", 2, 11, 9) 1581GEN_THREEVEC_TEST(mul_4h_4h_h2, "mul v2.4h, v11.4h, v2.h[2]", 2, 11, 9) 1582GEN_THREEVEC_TEST(mul_4h_4h_h7, "mul v2.4h, v11.4h, v2.h[7]", 2, 11, 9) 1583 1584/* overkill -- don't need two vecs, only one */ 1585GEN_TWOVEC_TEST(movi_16b_0x9C_lsl0, "movi v22.16b, #0x9C, LSL #0", 22, 23) 1586GEN_TWOVEC_TEST(movi_8b_0x8B_lsl0, "movi v22.8b, #0x8B, LSL #0", 22, 23) 1587GEN_TWOVEC_TEST(movi_8h_0x5A_lsl0, "movi v22.8h, #0x5A, LSL #0", 22, 23) 1588GEN_TWOVEC_TEST(movi_8h_0xA5_lsl8, "movi v22.8h, #0xA5, LSL #8", 22, 23) 1589GEN_TWOVEC_TEST(movi_4h_0x5A_lsl0, "movi v22.4h, #0x5A, LSL #0", 22, 23) 1590GEN_TWOVEC_TEST(movi_4h_0xA5_lsl8, "movi v22.4h, #0xA5, LSL #8", 22, 23) 1591GEN_TWOVEC_TEST(movi_4s_0x5A_lsl0, "movi v22.4s, #0x5A, LSL #0", 22, 23) 1592GEN_TWOVEC_TEST(movi_4s_0x6B_lsl8, "movi v22.4s, #0x6B, LSL #8", 22, 23) 1593GEN_TWOVEC_TEST(movi_4s_0x49_lsl16, "movi v22.4s, #0x49, LSL #16", 22, 23) 1594GEN_TWOVEC_TEST(movi_4s_0x3D_lsl24, "movi v22.4s, #0x3D, LSL #24", 22, 23) 1595GEN_TWOVEC_TEST(movi_2s_0x5A_lsl0, "movi v22.2s, #0x5A, LSL #0", 22, 23) 1596GEN_TWOVEC_TEST(movi_2s_0x6B_lsl8, "movi v22.2s, #0x6B, LSL #8", 22, 23) 1597GEN_TWOVEC_TEST(movi_2s_0x49_lsl16, "movi v22.2s, #0x49, LSL #16", 22, 23) 1598GEN_TWOVEC_TEST(movi_2s_0x3D_lsl24, "movi v22.2s, #0x3D, LSL #24", 22, 23) 1599GEN_TWOVEC_TEST(movi_4s_0x6B_msl8, "movi v22.4s, #0x6B, MSL #8", 22, 23) 1600GEN_TWOVEC_TEST(movi_4s_0x94_msl16, "movi v22.4s, #0x94, MSL #16", 22, 23) 1601GEN_TWOVEC_TEST(movi_2s_0x7A_msl8, "movi v22.2s, #0x7A, MSL #8", 22, 23) 1602GEN_TWOVEC_TEST(movi_2s_0xA5_msl16, "movi v22.2s, #0xA5, MSL #16", 22, 23) 1603 1604GEN_TWOVEC_TEST(movi_d_0xA5, "movi d22, #0xFF00FF0000FF00FF", 22, 23) 1605GEN_TWOVEC_TEST(movi_2d_0xB4, "movi v22.2d, #0xFF00FFFF00FF0000", 22, 23) 1606 1607/* overkill -- don't need two vecs, only one */ 1608GEN_TWOVEC_TEST(mvni_8h_0x5A_lsl0, "mvni v22.8h, #0x5A, LSL #0", 22, 23) 1609GEN_TWOVEC_TEST(mvni_8h_0xA5_lsl8, "mvni v22.8h, #0xA5, LSL #8", 22, 23) 1610GEN_TWOVEC_TEST(mvni_4h_0x5A_lsl0, "mvni v22.4h, #0x5A, LSL #0", 22, 23) 1611GEN_TWOVEC_TEST(mvni_4h_0xA5_lsl8, "mvni v22.4h, #0xA5, LSL #8", 22, 23) 1612GEN_TWOVEC_TEST(mvni_4s_0x5A_lsl0, "mvni v22.4s, #0x5A, LSL #0", 22, 23) 1613GEN_TWOVEC_TEST(mvni_4s_0x6B_lsl8, "mvni v22.4s, #0x6B, LSL #8", 22, 23) 1614GEN_TWOVEC_TEST(mvni_4s_0x49_lsl16, "mvni v22.4s, #0x49, LSL #16", 22, 23) 1615GEN_TWOVEC_TEST(mvni_4s_0x3D_lsl24, "mvni v22.4s, #0x3D, LSL #24", 22, 23) 1616GEN_TWOVEC_TEST(mvni_2s_0x5A_lsl0, "mvni v22.2s, #0x5A, LSL #0", 22, 23) 1617GEN_TWOVEC_TEST(mvni_2s_0x6B_lsl8, "mvni v22.2s, #0x6B, LSL #8", 22, 23) 1618GEN_TWOVEC_TEST(mvni_2s_0x49_lsl16, "mvni v22.2s, #0x49, LSL #16", 22, 23) 1619GEN_TWOVEC_TEST(mvni_2s_0x3D_lsl24, "mvni v22.2s, #0x3D, LSL #24", 22, 23) 1620GEN_TWOVEC_TEST(mvni_4s_0x6B_msl8, "mvni v22.4s, #0x6B, MSL #8", 22, 23) 1621GEN_TWOVEC_TEST(mvni_4s_0x94_msl16, "mvni v22.4s, #0x94, MSL #16", 22, 23) 1622GEN_TWOVEC_TEST(mvni_2s_0x7A_msl8, "mvni v22.2s, #0x7A, MSL #8", 22, 23) 1623GEN_TWOVEC_TEST(mvni_2s_0xA5_msl16, "mvni v22.2s, #0xA5, MSL #16", 22, 23) 1624 1625GEN_UNARY_TEST(not, 16b, 16b) 1626GEN_UNARY_TEST(not, 8b, 8b) 1627 1628GEN_BINARY_TEST(pmul, 16b, 16b, 16b) 1629GEN_BINARY_TEST(pmul, 8b, 8b, 8b) 1630 1631GEN_BINARY_TEST(pmull, 8h, 8b, 8b) 1632GEN_BINARY_TEST(pmull2, 8h, 16b, 16b) 1633//GEN_BINARY_TEST(pmull, 1q, 1d, 1d) 1634//GEN_BINARY_TEST(pmull, 1q, 2d, 2d) 1635 1636GEN_UNARY_TEST(rbit, 16b, 16b) 1637GEN_UNARY_TEST(rbit, 8b, 8b) 1638GEN_UNARY_TEST(rev16, 16b, 16b) 1639GEN_UNARY_TEST(rev16, 8b, 8b) 1640GEN_UNARY_TEST(rev32, 16b, 16b) 1641GEN_UNARY_TEST(rev32, 8b, 8b) 1642GEN_UNARY_TEST(rev32, 8h, 8h) 1643GEN_UNARY_TEST(rev32, 4h, 4h) 1644GEN_UNARY_TEST(rev64, 16b, 16b) 1645GEN_UNARY_TEST(rev64, 8b, 8b) 1646GEN_UNARY_TEST(rev64, 8h, 8h) 1647GEN_UNARY_TEST(rev64, 4h, 4h) 1648GEN_UNARY_TEST(rev64, 4s, 4s) 1649GEN_UNARY_TEST(rev64, 2s, 2s) 1650 1651GEN_BINARY_TEST(saba, 4s, 4s, 4s) 1652GEN_BINARY_TEST(saba, 2s, 2s, 2s) 1653GEN_BINARY_TEST(saba, 8h, 8h, 8h) 1654GEN_BINARY_TEST(saba, 4h, 4h, 4h) 1655GEN_BINARY_TEST(saba, 16b, 16b, 16b) 1656GEN_BINARY_TEST(saba, 8b, 8b, 8b) 1657 1658GEN_BINARY_TEST(uaba, 4s, 4s, 4s) 1659GEN_BINARY_TEST(uaba, 2s, 2s, 2s) 1660GEN_BINARY_TEST(uaba, 8h, 8h, 8h) 1661GEN_BINARY_TEST(uaba, 4h, 4h, 4h) 1662GEN_BINARY_TEST(uaba, 16b, 16b, 16b) 1663GEN_BINARY_TEST(uaba, 8b, 8b, 8b) 1664 1665GEN_THREEVEC_TEST(sabal_2d_2s_2s, "sabal v2.2d, v11.2s, v29.2s", 2, 11, 29) 1666GEN_THREEVEC_TEST(sabal2_2d_4s_4s, "sabal2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 1667 1668GEN_THREEVEC_TEST(sabal_4s_4h_4h, "sabal v2.4s, v11.4h, v29.4h", 2, 11, 29) 1669GEN_THREEVEC_TEST(sabal2_4s_8h_8h, "sabal2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 1670 1671GEN_THREEVEC_TEST(sabal_8h_8b_8b, "sabal v2.8h, v11.8b, v29.8b", 2, 11, 29) 1672GEN_THREEVEC_TEST(sabal2_8h_16b_16b, 1673 "sabal2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 1674 1675GEN_THREEVEC_TEST(uabal_2d_2s_2s, "uabal v2.2d, v11.2s, v29.2s", 2, 11, 29) 1676GEN_THREEVEC_TEST(uabal2_2d_4s_4s, "uabal2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 1677 1678GEN_THREEVEC_TEST(uabal_4s_4h_4h, "uabal v2.4s, v11.4h, v29.4h", 2, 11, 29) 1679GEN_THREEVEC_TEST(uabal2_4s_8h_8h, "uabal2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 1680 1681GEN_THREEVEC_TEST(uabal_8h_8b_8b, "uabal v2.8h, v11.8b, v29.8b", 2, 11, 29) 1682GEN_THREEVEC_TEST(uabal2_8h_16b_16b, 1683 "uabal2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 1684 1685GEN_THREEVEC_TEST(sabd_4s_4s_4s, "sabd v2.4s, v11.4s, v29.4s", 2, 11, 29) 1686GEN_THREEVEC_TEST(sabd_2s_2s_2s, "sabd v2.2s, v11.2s, v29.2s", 2, 11, 29) 1687GEN_THREEVEC_TEST(sabd_8h_8h_8h, "sabd v2.8h, v11.8h, v29.8h", 2, 11, 29) 1688GEN_THREEVEC_TEST(sabd_4h_4h_4h, "sabd v2.4h, v11.4h, v29.4h", 2, 11, 29) 1689GEN_THREEVEC_TEST(sabd_16b_16b_16b, "sabd v2.16b, v11.16b, v29.16b", 2, 11, 29) 1690GEN_THREEVEC_TEST(sabd_8b_8b_8b, "sabd v2.8b, v11.8b, v29.8b", 2, 11, 29) 1691 1692GEN_THREEVEC_TEST(uabd_4s_4s_4s, "uabd v2.4s, v11.4s, v29.4s", 2, 11, 29) 1693GEN_THREEVEC_TEST(uabd_2s_2s_2s, "uabd v2.2s, v11.2s, v29.2s", 2, 11, 29) 1694GEN_THREEVEC_TEST(uabd_8h_8h_8h, "uabd v2.8h, v11.8h, v29.8h", 2, 11, 29) 1695GEN_THREEVEC_TEST(uabd_4h_4h_4h, "uabd v2.4h, v11.4h, v29.4h", 2, 11, 29) 1696GEN_THREEVEC_TEST(uabd_16b_16b_16b, "uabd v2.16b, v11.16b, v29.16b", 2, 11, 29) 1697GEN_THREEVEC_TEST(uabd_8b_8b_8b, "uabd v2.8b, v11.8b, v29.8b", 2, 11, 29) 1698 1699GEN_THREEVEC_TEST(sabdl_2d_2s_2s, "sabdl v2.2d, v11.2s, v29.2s", 2, 11, 29) 1700GEN_THREEVEC_TEST(sabdl2_2d_4s_4s, "sabdl2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 1701 1702GEN_THREEVEC_TEST(sabdl_4s_4h_4h, "sabdl v2.4s, v11.4h, v29.4h", 2, 11, 29) 1703GEN_THREEVEC_TEST(sabdl2_4s_8h_8h, "sabdl2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 1704 1705GEN_THREEVEC_TEST(sabdl_8h_8b_8b, "sabdl v2.8h, v11.8b, v29.8b", 2, 11, 29) 1706GEN_THREEVEC_TEST(sabdl2_8h_16b_16b, 1707 "sabdl2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 1708 1709GEN_THREEVEC_TEST(uabdl_2d_2s_2s, "uabdl v2.2d, v11.2s, v29.2s", 2, 11, 29) 1710GEN_THREEVEC_TEST(uabdl2_2d_4s_4s, "uabdl2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 1711 1712GEN_THREEVEC_TEST(uabdl_4s_4h_4h, "uabdl v2.4s, v11.4h, v29.4h", 2, 11, 29) 1713GEN_THREEVEC_TEST(uabdl2_4s_8h_8h, "uabdl2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 1714 1715GEN_THREEVEC_TEST(uabdl_8h_8b_8b, "uabdl v2.8h, v11.8b, v29.8b", 2, 11, 29) 1716GEN_THREEVEC_TEST(uabdl2_8h_16b_16b, 1717 "uabdl2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 1718 1719GEN_TWOVEC_TEST(sadalp_4h_8b, "sadalp v3.4h, v19.8b", 3, 19) 1720GEN_TWOVEC_TEST(sadalp_8h_16b, "sadalp v3.8h, v19.16b", 3, 19) 1721GEN_TWOVEC_TEST(sadalp_2s_4h, "sadalp v3.2s, v19.4h", 3, 19) 1722GEN_TWOVEC_TEST(sadalp_4s_8h, "sadalp v3.4s, v19.8h", 3, 19) 1723GEN_TWOVEC_TEST(sadalp_1d_2s, "sadalp v3.1d, v19.2s", 3, 19) 1724GEN_TWOVEC_TEST(sadalp_2d_4s, "sadalp v3.2d, v19.4s", 3, 19) 1725 1726GEN_TWOVEC_TEST(uadalp_4h_8b, "uadalp v3.4h, v19.8b", 3, 19) 1727GEN_TWOVEC_TEST(uadalp_8h_16b, "uadalp v3.8h, v19.16b", 3, 19) 1728GEN_TWOVEC_TEST(uadalp_2s_4h, "uadalp v3.2s, v19.4h", 3, 19) 1729GEN_TWOVEC_TEST(uadalp_4s_8h, "uadalp v3.4s, v19.8h", 3, 19) 1730GEN_TWOVEC_TEST(uadalp_1d_2s, "uadalp v3.1d, v19.2s", 3, 19) 1731GEN_TWOVEC_TEST(uadalp_2d_4s, "uadalp v3.2d, v19.4s", 3, 19) 1732 1733GEN_THREEVEC_TEST(saddl_2d_2s_2s, "saddl v2.2d, v11.2s, v29.2s", 2, 11, 29) 1734GEN_THREEVEC_TEST(saddl2_2d_4s_4s, "saddl2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 1735 1736GEN_THREEVEC_TEST(saddl_4s_4h_4h, "saddl v2.4s, v11.4h, v29.4h", 2, 11, 29) 1737GEN_THREEVEC_TEST(saddl2_4s_8h_8h, "saddl2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 1738 1739GEN_THREEVEC_TEST(saddl_8h_8b_8b, "saddl v2.8h, v11.8b, v29.8b", 2, 11, 29) 1740GEN_THREEVEC_TEST(saddl2_8h_16b_16b, 1741 "saddl2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 1742 1743GEN_THREEVEC_TEST(uaddl_2d_2s_2s, "uaddl v2.2d, v11.2s, v29.2s", 2, 11, 29) 1744GEN_THREEVEC_TEST(uaddl2_2d_4s_4s, "uaddl2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 1745 1746GEN_THREEVEC_TEST(uaddl_4s_4h_4h, "uaddl v2.4s, v11.4h, v29.4h", 2, 11, 29) 1747GEN_THREEVEC_TEST(uaddl2_4s_8h_8h, "uaddl2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 1748 1749GEN_THREEVEC_TEST(uaddl_8h_8b_8b, "uaddl v2.8h, v11.8b, v29.8b", 2, 11, 29) 1750GEN_THREEVEC_TEST(uaddl2_8h_16b_16b, 1751 "uaddl2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 1752 1753GEN_THREEVEC_TEST(ssubl_2d_2s_2s, "ssubl v2.2d, v11.2s, v29.2s", 2, 11, 29) 1754GEN_THREEVEC_TEST(ssubl2_2d_4s_4s, "ssubl2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 1755 1756GEN_THREEVEC_TEST(ssubl_4s_4h_4h, "ssubl v2.4s, v11.4h, v29.4h", 2, 11, 29) 1757GEN_THREEVEC_TEST(ssubl2_4s_8h_8h, "ssubl2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 1758 1759GEN_THREEVEC_TEST(ssubl_8h_8b_8b, "ssubl v2.8h, v11.8b, v29.8b", 2, 11, 29) 1760GEN_THREEVEC_TEST(ssubl2_8h_16b_16b, 1761 "ssubl2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 1762 1763GEN_THREEVEC_TEST(usubl_2d_2s_2s, "usubl v2.2d, v11.2s, v29.2s", 2, 11, 29) 1764GEN_THREEVEC_TEST(usubl2_2d_4s_4s, "usubl2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 1765 1766GEN_THREEVEC_TEST(usubl_4s_4h_4h, "usubl v2.4s, v11.4h, v29.4h", 2, 11, 29) 1767GEN_THREEVEC_TEST(usubl2_4s_8h_8h, "usubl2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 1768 1769GEN_THREEVEC_TEST(usubl_8h_8b_8b, "usubl v2.8h, v11.8b, v29.8b", 2, 11, 29) 1770GEN_THREEVEC_TEST(usubl2_8h_16b_16b, 1771 "usubl2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 1772 1773GEN_TWOVEC_TEST(saddlp_4h_8b, "saddlp v3.4h, v19.8b", 3, 19) 1774GEN_TWOVEC_TEST(saddlp_8h_16b, "saddlp v3.8h, v19.16b", 3, 19) 1775GEN_TWOVEC_TEST(saddlp_2s_4h, "saddlp v3.2s, v19.4h", 3, 19) 1776GEN_TWOVEC_TEST(saddlp_4s_8h, "saddlp v3.4s, v19.8h", 3, 19) 1777GEN_TWOVEC_TEST(saddlp_1d_2s, "saddlp v3.1d, v19.2s", 3, 19) 1778GEN_TWOVEC_TEST(saddlp_2d_4s, "saddlp v3.2d, v19.4s", 3, 19) 1779 1780GEN_TWOVEC_TEST(uaddlp_4h_8b, "uaddlp v3.4h, v19.8b", 3, 19) 1781GEN_TWOVEC_TEST(uaddlp_8h_16b, "uaddlp v3.8h, v19.16b", 3, 19) 1782GEN_TWOVEC_TEST(uaddlp_2s_4h, "uaddlp v3.2s, v19.4h", 3, 19) 1783GEN_TWOVEC_TEST(uaddlp_4s_8h, "uaddlp v3.4s, v19.8h", 3, 19) 1784GEN_TWOVEC_TEST(uaddlp_1d_2s, "uaddlp v3.1d, v19.2s", 3, 19) 1785GEN_TWOVEC_TEST(uaddlp_2d_4s, "uaddlp v3.2d, v19.4s", 3, 19) 1786 1787GEN_TWOVEC_TEST(saddlv_h_16b, "saddlv h3, v19.16b", 3, 19) 1788GEN_TWOVEC_TEST(saddlv_h_8b, "saddlv h3, v19.8b", 3, 19) 1789GEN_TWOVEC_TEST(saddlv_s_8h, "saddlv s3, v19.8h", 3, 19) 1790GEN_TWOVEC_TEST(saddlv_s_4h, "saddlv s3, v19.4h", 3, 19) 1791GEN_TWOVEC_TEST(saddlv_d_4s, "saddlv d3, v19.4s", 3, 19) 1792 1793GEN_TWOVEC_TEST(uaddlv_h_16b, "uaddlv h3, v19.16b", 3, 19) 1794GEN_TWOVEC_TEST(uaddlv_h_8b, "uaddlv h3, v19.8b", 3, 19) 1795GEN_TWOVEC_TEST(uaddlv_s_8h, "uaddlv s3, v19.8h", 3, 19) 1796GEN_TWOVEC_TEST(uaddlv_s_4h, "uaddlv s3, v19.4h", 3, 19) 1797GEN_TWOVEC_TEST(uaddlv_d_4s, "uaddlv d3, v19.4s", 3, 19) 1798 1799GEN_THREEVEC_TEST(saddw2_8h_8h_16b, "saddw2 v5.8h, v13.8h, v31.16b", 5, 13, 31) 1800GEN_THREEVEC_TEST(saddw_8h_8h_8b, "saddw v5.8h, v13.8h, v31.8b", 5, 13, 31) 1801GEN_THREEVEC_TEST(saddw2_4s_4s_8h, "saddw2 v5.4s, v13.4s, v31.8h", 5, 13, 31) 1802GEN_THREEVEC_TEST(saddw_4s_4s_4h, "saddw v5.4s, v13.4s, v31.4h", 5, 13, 31) 1803GEN_THREEVEC_TEST(saddw2_2d_2d_4s, "saddw2 v5.2d, v13.2d, v31.4s", 5, 13, 31) 1804GEN_THREEVEC_TEST(saddw_2d_2d_2s, "saddw v5.2d, v13.2d, v31.2s", 5, 13, 31) 1805 1806GEN_THREEVEC_TEST(uaddw2_8h_8h_16b, "uaddw2 v5.8h, v13.8h, v31.16b", 5, 13, 31) 1807GEN_THREEVEC_TEST(uaddw_8h_8h_8b, "uaddw v5.8h, v13.8h, v31.8b", 5, 13, 31) 1808GEN_THREEVEC_TEST(uaddw2_4s_4s_8h, "uaddw2 v5.4s, v13.4s, v31.8h", 5, 13, 31) 1809GEN_THREEVEC_TEST(uaddw_4s_4s_4h, "uaddw v5.4s, v13.4s, v31.4h", 5, 13, 31) 1810GEN_THREEVEC_TEST(uaddw2_2d_2d_4s, "uaddw2 v5.2d, v13.2d, v31.4s", 5, 13, 31) 1811GEN_THREEVEC_TEST(uaddw_2d_2d_2s, "uaddw v5.2d, v13.2d, v31.2s", 5, 13, 31) 1812 1813GEN_THREEVEC_TEST(ssubw2_8h_8h_16b, "ssubw2 v5.8h, v13.8h, v31.16b", 5, 13, 31) 1814GEN_THREEVEC_TEST(ssubw_8h_8h_8b, "ssubw v5.8h, v13.8h, v31.8b", 5, 13, 31) 1815GEN_THREEVEC_TEST(ssubw2_4s_4s_8h, "ssubw2 v5.4s, v13.4s, v31.8h", 5, 13, 31) 1816GEN_THREEVEC_TEST(ssubw_4s_4s_4h, "ssubw v5.4s, v13.4s, v31.4h", 5, 13, 31) 1817GEN_THREEVEC_TEST(ssubw2_2d_2d_4s, "ssubw2 v5.2d, v13.2d, v31.4s", 5, 13, 31) 1818GEN_THREEVEC_TEST(ssubw_2d_2d_2s, "ssubw v5.2d, v13.2d, v31.2s", 5, 13, 31) 1819 1820GEN_THREEVEC_TEST(usubw2_8h_8h_16b, "usubw2 v5.8h, v13.8h, v31.16b", 5, 13, 31) 1821GEN_THREEVEC_TEST(usubw_8h_8h_8b, "usubw v5.8h, v13.8h, v31.8b", 5, 13, 31) 1822GEN_THREEVEC_TEST(usubw2_4s_4s_8h, "usubw2 v5.4s, v13.4s, v31.8h", 5, 13, 31) 1823GEN_THREEVEC_TEST(usubw_4s_4s_4h, "usubw v5.4s, v13.4s, v31.4h", 5, 13, 31) 1824GEN_THREEVEC_TEST(usubw2_2d_2d_4s, "usubw2 v5.2d, v13.2d, v31.4s", 5, 13, 31) 1825GEN_THREEVEC_TEST(usubw_2d_2d_2s, "usubw v5.2d, v13.2d, v31.2s", 5, 13, 31) 1826 1827GEN_THREEVEC_TEST(shadd_4s_4s_4s, "shadd v2.4s, v11.4s, v29.4s", 2, 11, 29) 1828GEN_THREEVEC_TEST(shadd_2s_2s_2s, "shadd v2.2s, v11.2s, v29.2s", 2, 11, 29) 1829GEN_THREEVEC_TEST(shadd_8h_8h_8h, "shadd v2.8h, v11.8h, v29.8h", 2, 11, 29) 1830GEN_THREEVEC_TEST(shadd_4h_4h_4h, "shadd v2.4h, v11.4h, v29.4h", 2, 11, 29) 1831GEN_THREEVEC_TEST(shadd_16b_16b_16b,"shadd v2.16b, v11.16b, v29.16b", 2, 11, 29) 1832GEN_THREEVEC_TEST(shadd_8b_8b_8b, "shadd v2.8b, v11.8b, v29.8b", 2, 11, 29) 1833 1834GEN_THREEVEC_TEST(uhadd_4s_4s_4s, "uhadd v2.4s, v11.4s, v29.4s", 2, 11, 29) 1835GEN_THREEVEC_TEST(uhadd_2s_2s_2s, "uhadd v2.2s, v11.2s, v29.2s", 2, 11, 29) 1836GEN_THREEVEC_TEST(uhadd_8h_8h_8h, "uhadd v2.8h, v11.8h, v29.8h", 2, 11, 29) 1837GEN_THREEVEC_TEST(uhadd_4h_4h_4h, "uhadd v2.4h, v11.4h, v29.4h", 2, 11, 29) 1838GEN_THREEVEC_TEST(uhadd_16b_16b_16b,"uhadd v2.16b, v11.16b, v29.16b", 2, 11, 29) 1839GEN_THREEVEC_TEST(uhadd_8b_8b_8b, "uhadd v2.8b, v11.8b, v29.8b", 2, 11, 29) 1840 1841GEN_THREEVEC_TEST(shsub_4s_4s_4s, "shsub v2.4s, v11.4s, v29.4s", 2, 11, 29) 1842GEN_THREEVEC_TEST(shsub_2s_2s_2s, "shsub v2.2s, v11.2s, v29.2s", 2, 11, 29) 1843GEN_THREEVEC_TEST(shsub_8h_8h_8h, "shsub v2.8h, v11.8h, v29.8h", 2, 11, 29) 1844GEN_THREEVEC_TEST(shsub_4h_4h_4h, "shsub v2.4h, v11.4h, v29.4h", 2, 11, 29) 1845GEN_THREEVEC_TEST(shsub_16b_16b_16b,"shsub v2.16b, v11.16b, v29.16b", 2, 11, 29) 1846GEN_THREEVEC_TEST(shsub_8b_8b_8b, "shsub v2.8b, v11.8b, v29.8b", 2, 11, 29) 1847 1848GEN_THREEVEC_TEST(uhsub_4s_4s_4s, "uhsub v2.4s, v11.4s, v29.4s", 2, 11, 29) 1849GEN_THREEVEC_TEST(uhsub_2s_2s_2s, "uhsub v2.2s, v11.2s, v29.2s", 2, 11, 29) 1850GEN_THREEVEC_TEST(uhsub_8h_8h_8h, "uhsub v2.8h, v11.8h, v29.8h", 2, 11, 29) 1851GEN_THREEVEC_TEST(uhsub_4h_4h_4h, "uhsub v2.4h, v11.4h, v29.4h", 2, 11, 29) 1852GEN_THREEVEC_TEST(uhsub_16b_16b_16b,"uhsub v2.16b, v11.16b, v29.16b", 2, 11, 29) 1853GEN_THREEVEC_TEST(uhsub_8b_8b_8b, "uhsub v2.8b, v11.8b, v29.8b", 2, 11, 29) 1854 1855GEN_TWOVEC_TEST(shll_8h_8b_8, "shll v3.8h, v24.8b, #8", 3, 24) 1856GEN_TWOVEC_TEST(shll2_8h_16b_8, "shll2 v3.8h, v24.16b, #8", 3, 24) 1857GEN_TWOVEC_TEST(shll_4s_4h_16, "shll v3.4s, v24.4h, #16", 3, 24) 1858GEN_TWOVEC_TEST(shll2_4s_8h_16, "shll2 v3.4s, v24.8h, #16", 3, 24) 1859GEN_TWOVEC_TEST(shll_2d_2s_32, "shll v3.2d, v24.2s, #32", 3, 24) 1860GEN_TWOVEC_TEST(shll2_2d_4s_32, "shll2 v3.2d, v24.4s, #32", 3, 24) 1861 1862GEN_TWOVEC_TEST(shrn_2s_2d_1, "shrn v4.2s, v29.2d, #1", 4, 29) 1863GEN_TWOVEC_TEST(shrn_2s_2d_32, "shrn v4.2s, v29.2d, #32", 4, 29) 1864GEN_TWOVEC_TEST(shrn2_4s_2d_1, "shrn2 v4.4s, v29.2d, #1", 4, 29) 1865GEN_TWOVEC_TEST(shrn2_4s_2d_32, "shrn2 v4.4s, v29.2d, #32", 4, 29) 1866GEN_TWOVEC_TEST(shrn_4h_4s_1, "shrn v4.4h, v29.4s, #1", 4, 29) 1867GEN_TWOVEC_TEST(shrn_4h_4s_16, "shrn v4.4h, v29.4s, #16", 4, 29) 1868GEN_TWOVEC_TEST(shrn2_8h_4s_1, "shrn2 v4.8h, v29.4s, #1", 4, 29) 1869GEN_TWOVEC_TEST(shrn2_8h_4s_16, "shrn2 v4.8h, v29.4s, #16", 4, 29) 1870GEN_TWOVEC_TEST(shrn_8b_8h_1, "shrn v4.8b, v29.8h, #1", 4, 29) 1871GEN_TWOVEC_TEST(shrn_8b_8h_8, "shrn v4.8b, v29.8h, #8", 4, 29) 1872GEN_TWOVEC_TEST(shrn2_16b_8h_1, "shrn2 v4.16b, v29.8h, #1", 4, 29) 1873GEN_TWOVEC_TEST(shrn2_16b_8h_8, "shrn2 v4.16b, v29.8h, #8", 4, 29) 1874 1875GEN_TWOVEC_TEST(rshrn_2s_2d_1, "rshrn v4.2s, v29.2d, #1", 4, 29) 1876GEN_TWOVEC_TEST(rshrn_2s_2d_32, "rshrn v4.2s, v29.2d, #32", 4, 29) 1877GEN_TWOVEC_TEST(rshrn2_4s_2d_1, "rshrn2 v4.4s, v29.2d, #1", 4, 29) 1878GEN_TWOVEC_TEST(rshrn2_4s_2d_32, "rshrn2 v4.4s, v29.2d, #32", 4, 29) 1879GEN_TWOVEC_TEST(rshrn_4h_4s_1, "rshrn v4.4h, v29.4s, #1", 4, 29) 1880GEN_TWOVEC_TEST(rshrn_4h_4s_16, "rshrn v4.4h, v29.4s, #16", 4, 29) 1881GEN_TWOVEC_TEST(rshrn2_8h_4s_1, "rshrn2 v4.8h, v29.4s, #1", 4, 29) 1882GEN_TWOVEC_TEST(rshrn2_8h_4s_16, "rshrn2 v4.8h, v29.4s, #16", 4, 29) 1883GEN_TWOVEC_TEST(rshrn_8b_8h_1, "rshrn v4.8b, v29.8h, #1", 4, 29) 1884GEN_TWOVEC_TEST(rshrn_8b_8h_8, "rshrn v4.8b, v29.8h, #8", 4, 29) 1885GEN_TWOVEC_TEST(rshrn2_16b_8h_1, "rshrn2 v4.16b, v29.8h, #1", 4, 29) 1886GEN_TWOVEC_TEST(rshrn2_16b_8h_8, "rshrn2 v4.16b, v29.8h, #8", 4, 29) 1887 1888GEN_TWOVEC_TEST(sli_d_d_0, "sli d5, d28, #0", 5, 28) 1889GEN_TWOVEC_TEST(sli_d_d_32, "sli d5, d28, #32", 5, 28) 1890GEN_TWOVEC_TEST(sli_d_d_63, "sli d5, d28, #63", 5, 28) 1891GEN_TWOVEC_TEST(sri_d_d_1, "sri d5, d28, #1", 5, 28) 1892GEN_TWOVEC_TEST(sri_d_d_33, "sri d5, d28, #33", 5, 28) 1893GEN_TWOVEC_TEST(sri_d_d_64, "sri d5, d28, #64", 5, 28) 1894 1895GEN_TWOVEC_TEST(sli_2d_2d_0, "sli v6.2d, v27.2d, #0", 6, 27) 1896GEN_TWOVEC_TEST(sli_2d_2d_32, "sli v6.2d, v27.2d, #32", 6, 27) 1897GEN_TWOVEC_TEST(sli_2d_2d_63, "sli v6.2d, v27.2d, #63", 6, 27) 1898GEN_TWOVEC_TEST(sli_4s_4s_0, "sli v6.4s, v27.4s, #0", 6, 27) 1899GEN_TWOVEC_TEST(sli_4s_4s_16, "sli v6.4s, v27.4s, #16", 6, 27) 1900GEN_TWOVEC_TEST(sli_4s_4s_31, "sli v6.4s, v27.4s, #31", 6, 27) 1901GEN_TWOVEC_TEST(sli_2s_2s_0, "sli v6.2s, v27.2s, #0", 6, 27) 1902GEN_TWOVEC_TEST(sli_2s_2s_16, "sli v6.2s, v27.2s, #16", 6, 27) 1903GEN_TWOVEC_TEST(sli_2s_2s_31, "sli v6.2s, v27.2s, #31", 6, 27) 1904GEN_TWOVEC_TEST(sli_8h_8h_0, "sli v6.8h, v27.8h, #0", 6, 27) 1905GEN_TWOVEC_TEST(sli_8h_8h_8, "sli v6.8h, v27.8h, #8", 6, 27) 1906GEN_TWOVEC_TEST(sli_8h_8h_15, "sli v6.8h, v27.8h, #15", 6, 27) 1907GEN_TWOVEC_TEST(sli_4h_4h_0, "sli v6.4h, v27.4h, #0", 6, 27) 1908GEN_TWOVEC_TEST(sli_4h_4h_8, "sli v6.4h, v27.4h, #8", 6, 27) 1909GEN_TWOVEC_TEST(sli_4h_4h_15, "sli v6.4h, v27.4h, #15", 6, 27) 1910GEN_TWOVEC_TEST(sli_16b_16b_0, "sli v6.16b, v27.16b, #0", 6, 27) 1911GEN_TWOVEC_TEST(sli_16b_16b_3, "sli v6.16b, v27.16b, #3", 6, 27) 1912GEN_TWOVEC_TEST(sli_16b_16b_7, "sli v6.16b, v27.16b, #7", 6, 27) 1913GEN_TWOVEC_TEST(sli_8b_8b_0, "sli v6.8b, v27.8b, #0", 6, 27) 1914GEN_TWOVEC_TEST(sli_8b_8b_3, "sli v6.8b, v27.8b, #3", 6, 27) 1915GEN_TWOVEC_TEST(sli_8b_8b_7, "sli v6.8b, v27.8b, #7", 6, 27) 1916 1917GEN_TWOVEC_TEST(sri_2d_2d_1, "sri v6.2d, v27.2d, #1", 6, 27) 1918GEN_TWOVEC_TEST(sri_2d_2d_33, "sri v6.2d, v27.2d, #33", 6, 27) 1919GEN_TWOVEC_TEST(sri_2d_2d_64, "sri v6.2d, v27.2d, #64", 6, 27) 1920GEN_TWOVEC_TEST(sri_4s_4s_1, "sri v6.4s, v27.4s, #1", 6, 27) 1921GEN_TWOVEC_TEST(sri_4s_4s_17, "sri v6.4s, v27.4s, #17", 6, 27) 1922GEN_TWOVEC_TEST(sri_4s_4s_32, "sri v6.4s, v27.4s, #32", 6, 27) 1923GEN_TWOVEC_TEST(sri_2s_2s_1, "sri v6.2s, v27.2s, #1", 6, 27) 1924GEN_TWOVEC_TEST(sri_2s_2s_17, "sri v6.2s, v27.2s, #17", 6, 27) 1925GEN_TWOVEC_TEST(sri_2s_2s_32, "sri v6.2s, v27.2s, #32", 6, 27) 1926GEN_TWOVEC_TEST(sri_8h_8h_1, "sri v6.8h, v27.8h, #1", 6, 27) 1927GEN_TWOVEC_TEST(sri_8h_8h_8, "sri v6.8h, v27.8h, #8", 6, 27) 1928GEN_TWOVEC_TEST(sri_8h_8h_16, "sri v6.8h, v27.8h, #16", 6, 27) 1929GEN_TWOVEC_TEST(sri_4h_4h_1, "sri v6.4h, v27.4h, #1", 6, 27) 1930GEN_TWOVEC_TEST(sri_4h_4h_8, "sri v6.4h, v27.4h, #8", 6, 27) 1931GEN_TWOVEC_TEST(sri_4h_4h_16, "sri v6.4h, v27.4h, #16", 6, 27) 1932GEN_TWOVEC_TEST(sri_16b_16b_1, "sri v6.16b, v27.16b, #1", 6, 27) 1933GEN_TWOVEC_TEST(sri_16b_16b_4, "sri v6.16b, v27.16b, #4", 6, 27) 1934GEN_TWOVEC_TEST(sri_16b_16b_8, "sri v6.16b, v27.16b, #8", 6, 27) 1935GEN_TWOVEC_TEST(sri_8b_8b_1, "sri v6.8b, v27.8b, #1", 6, 27) 1936GEN_TWOVEC_TEST(sri_8b_8b_4, "sri v6.8b, v27.8b, #4", 6, 27) 1937GEN_TWOVEC_TEST(sri_8b_8b_8, "sri v6.8b, v27.8b, #8", 6, 27) 1938 1939GEN_BINARY_TEST(smaxp, 4s, 4s, 4s) 1940GEN_BINARY_TEST(smaxp, 2s, 2s, 2s) 1941GEN_BINARY_TEST(smaxp, 8h, 8h, 8h) 1942GEN_BINARY_TEST(smaxp, 4h, 4h, 4h) 1943GEN_BINARY_TEST(smaxp, 16b, 16b, 16b) 1944GEN_BINARY_TEST(smaxp, 8b, 8b, 8b) 1945 1946GEN_BINARY_TEST(umaxp, 4s, 4s, 4s) 1947GEN_BINARY_TEST(umaxp, 2s, 2s, 2s) 1948GEN_BINARY_TEST(umaxp, 8h, 8h, 8h) 1949GEN_BINARY_TEST(umaxp, 4h, 4h, 4h) 1950GEN_BINARY_TEST(umaxp, 16b, 16b, 16b) 1951GEN_BINARY_TEST(umaxp, 8b, 8b, 8b) 1952 1953GEN_BINARY_TEST(sminp, 4s, 4s, 4s) 1954GEN_BINARY_TEST(sminp, 2s, 2s, 2s) 1955GEN_BINARY_TEST(sminp, 8h, 8h, 8h) 1956GEN_BINARY_TEST(sminp, 4h, 4h, 4h) 1957GEN_BINARY_TEST(sminp, 16b, 16b, 16b) 1958GEN_BINARY_TEST(sminp, 8b, 8b, 8b) 1959 1960GEN_BINARY_TEST(uminp, 4s, 4s, 4s) 1961GEN_BINARY_TEST(uminp, 2s, 2s, 2s) 1962GEN_BINARY_TEST(uminp, 8h, 8h, 8h) 1963GEN_BINARY_TEST(uminp, 4h, 4h, 4h) 1964GEN_BINARY_TEST(uminp, 16b, 16b, 16b) 1965GEN_BINARY_TEST(uminp, 8b, 8b, 8b) 1966 1967GEN_THREEVEC_TEST(smlal_2d_2s_s0, "smlal v29.2d, v20.2s, v3.s[0]", 29, 20, 3) 1968GEN_THREEVEC_TEST(smlal_2d_2s_s3, "smlal v29.2d, v20.2s, v3.s[3]", 29, 20, 3) 1969GEN_THREEVEC_TEST(smlal2_2d_4s_s1, "smlal2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3) 1970GEN_THREEVEC_TEST(smlal2_2d_4s_s2, "smlal2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3) 1971GEN_THREEVEC_TEST(smlal_4s_4h_h0, "smlal v29.4s, v20.4h, v3.h[0]", 29, 20, 3) 1972GEN_THREEVEC_TEST(smlal_4s_4h_h7, "smlal v29.4s, v20.4h, v3.h[7]", 29, 20, 3) 1973GEN_THREEVEC_TEST(smlal2_4s_8h_h1, "smlal2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 1974GEN_THREEVEC_TEST(smlal2_4s_8h_h4, "smlal2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 1975 1976GEN_THREEVEC_TEST(umlal_2d_2s_s0, "umlal v29.2d, v20.2s, v3.s[0]", 29, 20, 3) 1977GEN_THREEVEC_TEST(umlal_2d_2s_s3, "umlal v29.2d, v20.2s, v3.s[3]", 29, 20, 3) 1978GEN_THREEVEC_TEST(umlal2_2d_4s_s1, "umlal2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3) 1979GEN_THREEVEC_TEST(umlal2_2d_4s_s2, "umlal2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3) 1980GEN_THREEVEC_TEST(umlal_4s_4h_h0, "umlal v29.4s, v20.4h, v3.h[0]", 29, 20, 3) 1981GEN_THREEVEC_TEST(umlal_4s_4h_h7, "umlal v29.4s, v20.4h, v3.h[7]", 29, 20, 3) 1982GEN_THREEVEC_TEST(umlal2_4s_8h_h1, "umlal2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 1983GEN_THREEVEC_TEST(umlal2_4s_8h_h4, "umlal2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 1984 1985GEN_THREEVEC_TEST(smlsl_2d_2s_s0, "smlsl v29.2d, v20.2s, v3.s[0]", 29, 20, 3) 1986GEN_THREEVEC_TEST(smlsl_2d_2s_s3, "smlsl v29.2d, v20.2s, v3.s[3]", 29, 20, 3) 1987GEN_THREEVEC_TEST(smlsl2_2d_4s_s1, "smlsl2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3) 1988GEN_THREEVEC_TEST(smlsl2_2d_4s_s2, "smlsl2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3) 1989GEN_THREEVEC_TEST(smlsl_4s_4h_h0, "smlsl v29.4s, v20.4h, v3.h[0]", 29, 20, 3) 1990GEN_THREEVEC_TEST(smlsl_4s_4h_h7, "smlsl v29.4s, v20.4h, v3.h[7]", 29, 20, 3) 1991GEN_THREEVEC_TEST(smlsl2_4s_8h_h1, "smlsl2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 1992GEN_THREEVEC_TEST(smlsl2_4s_8h_h4, "smlsl2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 1993 1994GEN_THREEVEC_TEST(umlsl_2d_2s_s0, "umlsl v29.2d, v20.2s, v3.s[0]", 29, 20, 3) 1995GEN_THREEVEC_TEST(umlsl_2d_2s_s3, "umlsl v29.2d, v20.2s, v3.s[3]", 29, 20, 3) 1996GEN_THREEVEC_TEST(umlsl2_2d_4s_s1, "umlsl2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3) 1997GEN_THREEVEC_TEST(umlsl2_2d_4s_s2, "umlsl2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3) 1998GEN_THREEVEC_TEST(umlsl_4s_4h_h0, "umlsl v29.4s, v20.4h, v3.h[0]", 29, 20, 3) 1999GEN_THREEVEC_TEST(umlsl_4s_4h_h7, "umlsl v29.4s, v20.4h, v3.h[7]", 29, 20, 3) 2000GEN_THREEVEC_TEST(umlsl2_4s_8h_h1, "umlsl2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 2001GEN_THREEVEC_TEST(umlsl2_4s_8h_h4, "umlsl2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 2002 2003GEN_THREEVEC_TEST(smull_2d_2s_s0, "smull v29.2d, v20.2s, v3.s[0]", 29, 20, 3) 2004GEN_THREEVEC_TEST(smull_2d_2s_s3, "smull v29.2d, v20.2s, v3.s[3]", 29, 20, 3) 2005GEN_THREEVEC_TEST(smull2_2d_4s_s1, "smull2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3) 2006GEN_THREEVEC_TEST(smull2_2d_4s_s2, "smull2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3) 2007GEN_THREEVEC_TEST(smull_4s_4h_h0, "smull v29.4s, v20.4h, v3.h[0]", 29, 20, 3) 2008GEN_THREEVEC_TEST(smull_4s_4h_h7, "smull v29.4s, v20.4h, v3.h[7]", 29, 20, 3) 2009GEN_THREEVEC_TEST(smull2_4s_8h_h1, "smull2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 2010GEN_THREEVEC_TEST(smull2_4s_8h_h4, "smull2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 2011 2012GEN_THREEVEC_TEST(umull_2d_2s_s0, "umull v29.2d, v20.2s, v3.s[0]", 29, 20, 3) 2013GEN_THREEVEC_TEST(umull_2d_2s_s3, "umull v29.2d, v20.2s, v3.s[3]", 29, 20, 3) 2014GEN_THREEVEC_TEST(umull2_2d_4s_s1, "umull2 v29.2d, v20.4s, v3.s[1]", 29, 20, 3) 2015GEN_THREEVEC_TEST(umull2_2d_4s_s2, "umull2 v29.2d, v20.4s, v3.s[2]", 29, 20, 3) 2016GEN_THREEVEC_TEST(umull_4s_4h_h0, "umull v29.4s, v20.4h, v3.h[0]", 29, 20, 3) 2017GEN_THREEVEC_TEST(umull_4s_4h_h7, "umull v29.4s, v20.4h, v3.h[7]", 29, 20, 3) 2018GEN_THREEVEC_TEST(umull2_4s_8h_h1, "umull2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 2019GEN_THREEVEC_TEST(umull2_4s_8h_h4, "umull2 v29.4s, v20.8h, v3.h[1]", 29, 20, 3) 2020 2021GEN_THREEVEC_TEST(smlal_2d_2s_2s, "smlal v2.2d, v11.2s, v29.2s", 2, 11, 29) 2022GEN_THREEVEC_TEST(smlal2_2d_4s_4s, "smlal2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 2023 2024GEN_THREEVEC_TEST(smlal_4s_4h_4h, "smlal v2.4s, v11.4h, v29.4h", 2, 11, 29) 2025GEN_THREEVEC_TEST(smlal2_4s_8h_8h, "smlal2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 2026 2027GEN_THREEVEC_TEST(smlal_8h_8b_8b, "smlal v2.8h, v11.8b, v29.8b", 2, 11, 29) 2028GEN_THREEVEC_TEST(smlal2_8h_16b_16b, 2029 "smlal2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 2030 2031GEN_THREEVEC_TEST(umlal_2d_2s_2s, "umlal v2.2d, v11.2s, v29.2s", 2, 11, 29) 2032GEN_THREEVEC_TEST(umlal2_2d_4s_4s, "umlal2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 2033 2034GEN_THREEVEC_TEST(umlal_4s_4h_4h, "umlal v2.4s, v11.4h, v29.4h", 2, 11, 29) 2035GEN_THREEVEC_TEST(umlal2_4s_8h_8h, "umlal2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 2036 2037GEN_THREEVEC_TEST(umlal_8h_8b_8b, "umlal v2.8h, v11.8b, v29.8b", 2, 11, 29) 2038GEN_THREEVEC_TEST(umlal2_8h_16b_16b, 2039 "umlal2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 2040 2041GEN_THREEVEC_TEST(smlsl_2d_2s_2s, "smlsl v2.2d, v11.2s, v29.2s", 2, 11, 29) 2042GEN_THREEVEC_TEST(smlsl2_2d_4s_4s, "smlsl2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 2043 2044GEN_THREEVEC_TEST(smlsl_4s_4h_4h, "smlsl v2.4s, v11.4h, v29.4h", 2, 11, 29) 2045GEN_THREEVEC_TEST(smlsl2_4s_8h_8h, "smlsl2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 2046 2047GEN_THREEVEC_TEST(smlsl_8h_8b_8b, "smlsl v2.8h, v11.8b, v29.8b", 2, 11, 29) 2048GEN_THREEVEC_TEST(smlsl2_8h_16b_16b, 2049 "smlsl2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 2050 2051GEN_THREEVEC_TEST(umlsl_2d_2s_2s, "umlsl v2.2d, v11.2s, v29.2s", 2, 11, 29) 2052GEN_THREEVEC_TEST(umlsl2_2d_4s_4s, "umlsl2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 2053 2054GEN_THREEVEC_TEST(umlsl_4s_4h_4h, "umlsl v2.4s, v11.4h, v29.4h", 2, 11, 29) 2055GEN_THREEVEC_TEST(umlsl2_4s_8h_8h, "umlsl2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 2056 2057GEN_THREEVEC_TEST(umlsl_8h_8b_8b, "umlsl v2.8h, v11.8b, v29.8b", 2, 11, 29) 2058GEN_THREEVEC_TEST(umlsl2_8h_16b_16b, 2059 "umlsl2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 2060 2061GEN_THREEVEC_TEST(smull_2d_2s_2s, "smull v2.2d, v11.2s, v29.2s", 2, 11, 29) 2062GEN_THREEVEC_TEST(smull2_2d_4s_4s, "smull2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 2063 2064GEN_THREEVEC_TEST(smull_4s_4h_4h, "smull v2.4s, v11.4h, v29.4h", 2, 11, 29) 2065GEN_THREEVEC_TEST(smull2_4s_8h_8h, "smull2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 2066 2067GEN_THREEVEC_TEST(smull_8h_8b_8b, "smull v2.8h, v11.8b, v29.8b", 2, 11, 29) 2068GEN_THREEVEC_TEST(smull2_8h_16b_16b, 2069 "smull2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 2070 2071GEN_THREEVEC_TEST(umull_2d_2s_2s, "umull v2.2d, v11.2s, v29.2s", 2, 11, 29) 2072GEN_THREEVEC_TEST(umull2_2d_4s_4s, "umull2 v2.2d, v11.4s, v29.4s", 2, 11, 29) 2073 2074GEN_THREEVEC_TEST(umull_4s_4h_4h, "umull v2.4s, v11.4h, v29.4h", 2, 11, 29) 2075GEN_THREEVEC_TEST(umull2_4s_8h_8h, "umull2 v2.4s, v11.8h, v29.8h", 2, 11, 29) 2076 2077GEN_THREEVEC_TEST(umull_8h_8b_8b, "umull v2.8h, v11.8b, v29.8b", 2, 11, 29) 2078GEN_THREEVEC_TEST(umull2_8h_16b_16b, 2079 "umull2 v2.8h, v11.16b, v29.16b", 2, 11, 29) 2080 2081GEN_TWOVEC_TEST(sqabs_d_d, "sqabs d7, d30", 7, 30) 2082GEN_TWOVEC_TEST(sqabs_s_s, "sqabs s7, s30", 7, 30) 2083GEN_TWOVEC_TEST(sqabs_h_h, "sqabs h7, h30", 7, 30) 2084GEN_TWOVEC_TEST(sqabs_b_b, "sqabs b7, b30", 7, 30) 2085 2086GEN_TWOVEC_TEST(sqneg_d_d, "sqneg d7, d30", 7, 30) 2087GEN_TWOVEC_TEST(sqneg_s_s, "sqneg s7, s30", 7, 30) 2088GEN_TWOVEC_TEST(sqneg_h_h, "sqneg h7, h30", 7, 30) 2089GEN_TWOVEC_TEST(sqneg_b_b, "sqneg b7, b30", 7, 30) 2090 2091GEN_UNARY_TEST(sqabs, 2d, 2d) 2092GEN_UNARY_TEST(sqabs, 4s, 4s) 2093GEN_UNARY_TEST(sqabs, 2s, 2s) 2094GEN_UNARY_TEST(sqabs, 8h, 8h) 2095GEN_UNARY_TEST(sqabs, 4h, 4h) 2096GEN_UNARY_TEST(sqabs, 16b, 16b) 2097GEN_UNARY_TEST(sqabs, 8b, 8b) 2098 2099GEN_UNARY_TEST(sqneg, 2d, 2d) 2100GEN_UNARY_TEST(sqneg, 4s, 4s) 2101GEN_UNARY_TEST(sqneg, 2s, 2s) 2102GEN_UNARY_TEST(sqneg, 8h, 8h) 2103GEN_UNARY_TEST(sqneg, 4h, 4h) 2104GEN_UNARY_TEST(sqneg, 16b, 16b) 2105GEN_UNARY_TEST(sqneg, 8b, 8b) 2106 2107GEN_THREEVEC_TEST(sqadd_d_d_d, "sqadd d1, d2, d4", 1, 2, 4) 2108GEN_THREEVEC_TEST(sqadd_s_s_s, "sqadd s1, s2, s4", 1, 2, 4) 2109GEN_THREEVEC_TEST(sqadd_h_h_h, "sqadd h1, h2, h4", 1, 2, 4) 2110GEN_THREEVEC_TEST(sqadd_b_b_b, "sqadd b1, b2, b4", 1, 2, 4) 2111GEN_THREEVEC_TEST(sqadd_2d_2d_2d, "sqadd v1.2d, v2.2d, v4.2d", 1, 2, 4) 2112GEN_THREEVEC_TEST(sqadd_4s_4s_4s, "sqadd v1.4s, v2.4s, v4.4s", 1, 2, 4) 2113GEN_THREEVEC_TEST(sqadd_2s_2s_2s, "sqadd v1.2s, v2.2s, v4.2s", 1, 2, 4) 2114GEN_THREEVEC_TEST(sqadd_8h_8h_8h, "sqadd v1.8h, v2.8h, v4.8h", 1, 2, 4) 2115GEN_THREEVEC_TEST(sqadd_4h_4h_4h, "sqadd v1.4h, v2.4h, v4.4h", 1, 2, 4) 2116GEN_THREEVEC_TEST(sqadd_16b_16b_16b, "sqadd v1.16b, v2.16b, v4.16b", 1, 2, 4) 2117GEN_THREEVEC_TEST(sqadd_8b_8b_8b, "sqadd v1.8b, v2.8b, v4.8b", 1, 2, 4) 2118 2119GEN_THREEVEC_TEST(uqadd_d_d_d, "uqadd d1, d2, d4", 1, 2, 4) 2120GEN_THREEVEC_TEST(uqadd_s_s_s, "uqadd s1, s2, s4", 1, 2, 4) 2121GEN_THREEVEC_TEST(uqadd_h_h_h, "uqadd h1, h2, h4", 1, 2, 4) 2122GEN_THREEVEC_TEST(uqadd_b_b_b, "uqadd b1, b2, b4", 1, 2, 4) 2123GEN_THREEVEC_TEST(uqadd_2d_2d_2d, "uqadd v1.2d, v2.2d, v4.2d", 1, 2, 4) 2124GEN_THREEVEC_TEST(uqadd_4s_4s_4s, "uqadd v1.4s, v2.4s, v4.4s", 1, 2, 4) 2125GEN_THREEVEC_TEST(uqadd_2s_2s_2s, "uqadd v1.2s, v2.2s, v4.2s", 1, 2, 4) 2126GEN_THREEVEC_TEST(uqadd_8h_8h_8h, "uqadd v1.8h, v2.8h, v4.8h", 1, 2, 4) 2127GEN_THREEVEC_TEST(uqadd_4h_4h_4h, "uqadd v1.4h, v2.4h, v4.4h", 1, 2, 4) 2128GEN_THREEVEC_TEST(uqadd_16b_16b_16b, "uqadd v1.16b, v2.16b, v4.16b", 1, 2, 4) 2129GEN_THREEVEC_TEST(uqadd_8b_8b_8b, "uqadd v1.8b, v2.8b, v4.8b", 1, 2, 4) 2130 2131GEN_THREEVEC_TEST(sqsub_d_d_d, "sqsub d1, d2, d4", 1, 2, 4) 2132GEN_THREEVEC_TEST(sqsub_s_s_s, "sqsub s1, s2, s4", 1, 2, 4) 2133GEN_THREEVEC_TEST(sqsub_h_h_h, "sqsub h1, h2, h4", 1, 2, 4) 2134GEN_THREEVEC_TEST(sqsub_b_b_b, "sqsub b1, b2, b4", 1, 2, 4) 2135GEN_THREEVEC_TEST(sqsub_2d_2d_2d, "sqsub v1.2d, v2.2d, v4.2d", 1, 2, 4) 2136GEN_THREEVEC_TEST(sqsub_4s_4s_4s, "sqsub v1.4s, v2.4s, v4.4s", 1, 2, 4) 2137GEN_THREEVEC_TEST(sqsub_2s_2s_2s, "sqsub v1.2s, v2.2s, v4.2s", 1, 2, 4) 2138GEN_THREEVEC_TEST(sqsub_8h_8h_8h, "sqsub v1.8h, v2.8h, v4.8h", 1, 2, 4) 2139GEN_THREEVEC_TEST(sqsub_4h_4h_4h, "sqsub v1.4h, v2.4h, v4.4h", 1, 2, 4) 2140GEN_THREEVEC_TEST(sqsub_16b_16b_16b, "sqsub v1.16b, v2.16b, v4.16b", 1, 2, 4) 2141GEN_THREEVEC_TEST(sqsub_8b_8b_8b, "sqsub v1.8b, v2.8b, v4.8b", 1, 2, 4) 2142 2143GEN_THREEVEC_TEST(uqsub_d_d_d, "uqsub d1, d2, d4", 1, 2, 4) 2144GEN_THREEVEC_TEST(uqsub_s_s_s, "uqsub s1, s2, s4", 1, 2, 4) 2145GEN_THREEVEC_TEST(uqsub_h_h_h, "uqsub h1, h2, h4", 1, 2, 4) 2146GEN_THREEVEC_TEST(uqsub_b_b_b, "uqsub b1, b2, b4", 1, 2, 4) 2147GEN_THREEVEC_TEST(uqsub_2d_2d_2d, "uqsub v1.2d, v2.2d, v4.2d", 1, 2, 4) 2148GEN_THREEVEC_TEST(uqsub_4s_4s_4s, "uqsub v1.4s, v2.4s, v4.4s", 1, 2, 4) 2149GEN_THREEVEC_TEST(uqsub_2s_2s_2s, "uqsub v1.2s, v2.2s, v4.2s", 1, 2, 4) 2150GEN_THREEVEC_TEST(uqsub_8h_8h_8h, "uqsub v1.8h, v2.8h, v4.8h", 1, 2, 4) 2151GEN_THREEVEC_TEST(uqsub_4h_4h_4h, "uqsub v1.4h, v2.4h, v4.4h", 1, 2, 4) 2152GEN_THREEVEC_TEST(uqsub_16b_16b_16b, "uqsub v1.16b, v2.16b, v4.16b", 1, 2, 4) 2153GEN_THREEVEC_TEST(uqsub_8b_8b_8b, "uqsub v1.8b, v2.8b, v4.8b", 1, 2, 4) 2154 2155GEN_THREEVEC_TEST(sqdmlal_d_s_s0, "sqdmlal d31, s30, v29.s[0]", 31,30,29) 2156GEN_THREEVEC_TEST(sqdmlal_d_s_s3, "sqdmlal d31, s30, v29.s[3]", 31,30,29) 2157GEN_THREEVEC_TEST(sqdmlal_s_h_h1, "sqdmlal s31, h30, v13.h[1]", 31,30,13) 2158GEN_THREEVEC_TEST(sqdmlal_s_h_h5, "sqdmlal s31, h30, v13.h[5]", 31,30,13) 2159 2160GEN_THREEVEC_TEST(sqdmlsl_d_s_s0, "sqdmlsl d31, s30, v29.s[0]", 31,30,29) 2161GEN_THREEVEC_TEST(sqdmlsl_d_s_s3, "sqdmlsl d31, s30, v29.s[3]", 31,30,29) 2162GEN_THREEVEC_TEST(sqdmlsl_s_h_h1, "sqdmlsl s31, h30, v13.h[1]", 31,30,13) 2163GEN_THREEVEC_TEST(sqdmlsl_s_h_h5, "sqdmlsl s31, h30, v13.h[5]", 31,30,13) 2164 2165GEN_THREEVEC_TEST(sqdmull_d_s_s0, "sqdmull d31, s30, v29.s[0]", 31,30,29) 2166GEN_THREEVEC_TEST(sqdmull_d_s_s3, "sqdmull d31, s30, v29.s[3]", 31,30,29) 2167GEN_THREEVEC_TEST(sqdmull_s_h_h1, "sqdmull s31, h30, v13.h[1]", 31,30,13) 2168GEN_THREEVEC_TEST(sqdmull_s_h_h5, "sqdmull s31, h30, v13.h[5]", 31,30,13) 2169 2170GEN_THREEVEC_TEST(sqdmlal_2d_2s_s0, "sqdmlal v29.2d, v20.2s, v3.s[0]",29,20,3) 2171GEN_THREEVEC_TEST(sqdmlal_2d_2s_s3, "sqdmlal v29.2d, v20.2s, v3.s[3]",29,20,3) 2172GEN_THREEVEC_TEST(sqdmlal2_2d_4s_s1,"sqdmlal2 v29.2d, v20.4s, v3.s[1]",29,20,3) 2173GEN_THREEVEC_TEST(sqdmlal2_2d_4s_s2,"sqdmlal2 v29.2d, v20.4s, v3.s[2]",29,20,3) 2174GEN_THREEVEC_TEST(sqdmlal_4s_4h_h0, "sqdmlal v29.4s, v20.4h, v3.h[0]",29,20,3) 2175GEN_THREEVEC_TEST(sqdmlal_4s_4h_h7, "sqdmlal v29.4s, v20.4h, v3.h[7]",29,20,3) 2176GEN_THREEVEC_TEST(sqdmlal2_4s_8h_h1,"sqdmlal2 v29.4s, v20.8h, v3.h[1]",29,20,3) 2177GEN_THREEVEC_TEST(sqdmlal2_4s_8h_h4,"sqdmlal2 v29.4s, v20.8h, v3.h[1]",29,20,3) 2178 2179GEN_THREEVEC_TEST(sqdmlsl_2d_2s_s0, "sqdmlsl v29.2d, v20.2s, v3.s[0]",29,20,3) 2180GEN_THREEVEC_TEST(sqdmlsl_2d_2s_s3, "sqdmlsl v29.2d, v20.2s, v3.s[3]",29,20,3) 2181GEN_THREEVEC_TEST(sqdmlsl2_2d_4s_s1,"sqdmlsl2 v29.2d, v20.4s, v3.s[1]",29,20,3) 2182GEN_THREEVEC_TEST(sqdmlsl2_2d_4s_s2,"sqdmlsl2 v29.2d, v20.4s, v3.s[2]",29,20,3) 2183GEN_THREEVEC_TEST(sqdmlsl_4s_4h_h0, "sqdmlsl v29.4s, v20.4h, v3.h[0]",29,20,3) 2184GEN_THREEVEC_TEST(sqdmlsl_4s_4h_h7, "sqdmlsl v29.4s, v20.4h, v3.h[7]",29,20,3) 2185GEN_THREEVEC_TEST(sqdmlsl2_4s_8h_h1,"sqdmlsl2 v29.4s, v20.8h, v3.h[1]",29,20,3) 2186GEN_THREEVEC_TEST(sqdmlsl2_4s_8h_h4,"sqdmlsl2 v29.4s, v20.8h, v3.h[1]",29,20,3) 2187 2188GEN_THREEVEC_TEST(sqdmull_2d_2s_s0, "sqdmull v29.2d, v20.2s, v3.s[0]",29,20,3) 2189GEN_THREEVEC_TEST(sqdmull_2d_2s_s3, "sqdmull v29.2d, v20.2s, v3.s[3]",29,20,3) 2190GEN_THREEVEC_TEST(sqdmull2_2d_4s_s1,"sqdmull2 v29.2d, v20.4s, v3.s[1]",29,20,3) 2191GEN_THREEVEC_TEST(sqdmull2_2d_4s_s2,"sqdmull2 v29.2d, v20.4s, v3.s[2]",29,20,3) 2192GEN_THREEVEC_TEST(sqdmull_4s_4h_h0, "sqdmull v29.4s, v20.4h, v3.h[0]",29,20,3) 2193GEN_THREEVEC_TEST(sqdmull_4s_4h_h7, "sqdmull v29.4s, v20.4h, v3.h[7]",29,20,3) 2194GEN_THREEVEC_TEST(sqdmull2_4s_8h_h1,"sqdmull2 v29.4s, v20.8h, v3.h[1]",29,20,3) 2195GEN_THREEVEC_TEST(sqdmull2_4s_8h_h4,"sqdmull2 v29.4s, v20.8h, v3.h[1]",29,20,3) 2196 2197GEN_THREEVEC_TEST(sqdmlal_d_s_s, "sqdmlal d0, s8, s16", 0, 8, 16) 2198GEN_THREEVEC_TEST(sqdmlal_s_h_h, "sqdmlal s0, h8, h16", 0, 8, 16) 2199GEN_THREEVEC_TEST(sqdmlsl_d_s_s, "sqdmlsl d0, s8, s16", 0, 8, 16) 2200GEN_THREEVEC_TEST(sqdmlsl_s_h_h, "sqdmlsl s0, h8, h16", 0, 8, 16) 2201GEN_THREEVEC_TEST(sqdmull_d_s_s, "sqdmull d0, s8, s16", 0, 8, 16) 2202GEN_THREEVEC_TEST(sqdmull_s_h_h, "sqdmull s0, h8, h16", 0, 8, 16) 2203 2204GEN_THREEVEC_TEST(sqdmlal_2d_2s_2s, "sqdmlal v2.2d, v11.2s, v29.2s", 2,11,29) 2205GEN_THREEVEC_TEST(sqdmlal2_2d_4s_4s, "sqdmlal2 v2.2d, v11.4s, v29.4s", 2,11,29) 2206GEN_THREEVEC_TEST(sqdmlal_4s_4h_4h, "sqdmlal v2.4s, v11.4h, v29.4h", 2,11,29) 2207GEN_THREEVEC_TEST(sqdmlal2_4s_8h_8h, "sqdmlal2 v2.4s, v11.8h, v29.8h", 2,11,29) 2208 2209GEN_THREEVEC_TEST(sqdmlsl_2d_2s_2s, "sqdmlsl v2.2d, v11.2s, v29.2s", 2,11,29) 2210GEN_THREEVEC_TEST(sqdmlsl2_2d_4s_4s, "sqdmlsl2 v2.2d, v11.4s, v29.4s", 2,11,29) 2211GEN_THREEVEC_TEST(sqdmlsl_4s_4h_4h, "sqdmlsl v2.4s, v11.4h, v29.4h", 2,11,29) 2212GEN_THREEVEC_TEST(sqdmlsl2_4s_8h_8h, "sqdmlsl2 v2.4s, v11.8h, v29.8h", 2,11,29) 2213 2214GEN_THREEVEC_TEST(sqdmull_2d_2s_2s, "sqdmull v2.2d, v11.2s, v29.2s", 2,11,29) 2215GEN_THREEVEC_TEST(sqdmull2_2d_4s_4s, "sqdmull2 v2.2d, v11.4s, v29.4s", 2,11,29) 2216GEN_THREEVEC_TEST(sqdmull_4s_4h_4h, "sqdmull v2.4s, v11.4h, v29.4h", 2,11,29) 2217GEN_THREEVEC_TEST(sqdmull2_4s_8h_8h, "sqdmull2 v2.4s, v11.8h, v29.8h", 2,11,29) 2218 2219GEN_THREEVEC_TEST(sqdmulh_s_s_s1, "sqdmulh s0, s1, v2.s[1]", 0,1,2) 2220GEN_THREEVEC_TEST(sqdmulh_s_s_s3, "sqdmulh s0, s1, v2.s[3]", 0,1,2) 2221GEN_THREEVEC_TEST(sqdmulh_h_h_h2, "sqdmulh h0, h1, v2.h[2]", 0,1,2) 2222GEN_THREEVEC_TEST(sqdmulh_h_h_h7, "sqdmulh h0, h1, v2.h[7]", 0,1,2) 2223 2224GEN_THREEVEC_TEST(sqrdmulh_s_s_s1, "sqrdmulh s0, s1, v2.s[1]", 0,1,2) 2225GEN_THREEVEC_TEST(sqrdmulh_s_s_s3, "sqrdmulh s0, s1, v2.s[3]", 0,1,2) 2226GEN_THREEVEC_TEST(sqrdmulh_h_h_h2, "sqrdmulh h0, h1, v2.h[2]", 0,1,2) 2227GEN_THREEVEC_TEST(sqrdmulh_h_h_h7, "sqrdmulh h0, h1, v2.h[7]", 0,1,2) 2228 2229GEN_THREEVEC_TEST(sqdmulh_4s_4s_s1, "sqdmulh v0.4s, v1.4s, v2.s[1]", 0,1,2) 2230GEN_THREEVEC_TEST(sqdmulh_4s_4s_s3, "sqdmulh v0.4s, v1.4s, v2.s[3]", 0,1,2) 2231GEN_THREEVEC_TEST(sqdmulh_2s_2s_s1, "sqdmulh v0.2s, v1.2s, v2.s[1]", 0,1,2) 2232GEN_THREEVEC_TEST(sqdmulh_2s_2s_s3, "sqdmulh v0.2s, v1.2s, v2.s[3]", 0,1,2) 2233GEN_THREEVEC_TEST(sqdmulh_8h_8h_h2, "sqdmulh v0.8h, v1.8h, v2.h[2]", 0,1,2) 2234GEN_THREEVEC_TEST(sqdmulh_8h_8h_h7, "sqdmulh v0.8h, v1.8h, v2.h[7]", 0,1,2) 2235GEN_THREEVEC_TEST(sqdmulh_4h_4h_h2, "sqdmulh v0.4h, v1.4h, v2.h[2]", 0,1,2) 2236GEN_THREEVEC_TEST(sqdmulh_4h_4h_h7, "sqdmulh v0.4h, v1.4h, v2.h[7]", 0,1,2) 2237 2238GEN_THREEVEC_TEST(sqrdmulh_4s_4s_s1, "sqrdmulh v0.4s, v1.4s, v2.s[1]", 0,1,2) 2239GEN_THREEVEC_TEST(sqrdmulh_4s_4s_s3, "sqrdmulh v0.4s, v1.4s, v2.s[3]", 0,1,2) 2240GEN_THREEVEC_TEST(sqrdmulh_2s_2s_s1, "sqrdmulh v0.2s, v1.2s, v2.s[1]", 0,1,2) 2241GEN_THREEVEC_TEST(sqrdmulh_2s_2s_s3, "sqrdmulh v0.2s, v1.2s, v2.s[3]", 0,1,2) 2242GEN_THREEVEC_TEST(sqrdmulh_8h_8h_h2, "sqrdmulh v0.8h, v1.8h, v2.h[2]", 0,1,2) 2243GEN_THREEVEC_TEST(sqrdmulh_8h_8h_h7, "sqrdmulh v0.8h, v1.8h, v2.h[7]", 0,1,2) 2244GEN_THREEVEC_TEST(sqrdmulh_4h_4h_h2, "sqrdmulh v0.4h, v1.4h, v2.h[2]", 0,1,2) 2245GEN_THREEVEC_TEST(sqrdmulh_4h_4h_h7, "sqrdmulh v0.4h, v1.4h, v2.h[7]", 0,1,2) 2246 2247GEN_THREEVEC_TEST(sqdmulh_s_s_s, "sqdmulh s1, s2, s4", 1, 2, 4) 2248GEN_THREEVEC_TEST(sqdmulh_h_h_h, "sqdmulh h1, h2, h4", 1, 2, 4) 2249GEN_THREEVEC_TEST(sqrdmulh_s_s_s, "sqrdmulh s1, s2, s4", 1, 2, 4) 2250GEN_THREEVEC_TEST(sqrdmulh_h_h_h, "sqrdmulh h1, h2, h4", 1, 2, 4) 2251 2252GEN_THREEVEC_TEST(sqdmulh_4s_4s_4s, "sqdmulh v1.4s, v2.4s, v4.4s", 1, 2, 4) 2253GEN_THREEVEC_TEST(sqdmulh_2s_2s_2s, "sqdmulh v1.2s, v2.2s, v4.2s", 1, 2, 4) 2254GEN_THREEVEC_TEST(sqdmulh_8h_8h_8h, "sqdmulh v1.8h, v2.8h, v4.8h", 1, 2, 4) 2255GEN_THREEVEC_TEST(sqdmulh_4h_4h_4h, "sqdmulh v1.4h, v2.4h, v4.4h", 1, 2, 4) 2256GEN_THREEVEC_TEST(sqrdmulh_4s_4s_4s, "sqrdmulh v1.4s, v2.4s, v4.4s", 1, 2, 4) 2257GEN_THREEVEC_TEST(sqrdmulh_2s_2s_2s, "sqrdmulh v1.2s, v2.2s, v4.2s", 1, 2, 4) 2258GEN_THREEVEC_TEST(sqrdmulh_8h_8h_8h, "sqrdmulh v1.8h, v2.8h, v4.8h", 1, 2, 4) 2259GEN_THREEVEC_TEST(sqrdmulh_4h_4h_4h, "sqrdmulh v1.4h, v2.4h, v4.4h", 1, 2, 4) 2260 2261GEN_THREEVEC_TEST(sqshl_d_d_d, "sqshl d1, d2, d4", 1, 2, 4) 2262GEN_THREEVEC_TEST(sqshl_s_s_s, "sqshl s1, s2, s4", 1, 2, 4) 2263GEN_THREEVEC_TEST(sqshl_h_h_h, "sqshl h1, h2, h4", 1, 2, 4) 2264GEN_THREEVEC_TEST(sqshl_b_b_b, "sqshl b1, b2, b4", 1, 2, 4) 2265GEN_THREEVEC_TEST(sqshl_2d_2d_2d, "sqshl v1.2d, v2.2d, v4.2d", 1, 2, 4) 2266GEN_THREEVEC_TEST(sqshl_4s_4s_4s, "sqshl v1.4s, v2.4s, v4.4s", 1, 2, 4) 2267GEN_THREEVEC_TEST(sqshl_2s_2s_2s, "sqshl v1.2s, v2.2s, v4.2s", 1, 2, 4) 2268GEN_THREEVEC_TEST(sqshl_8h_8h_8h, "sqshl v1.8h, v2.8h, v4.8h", 1, 2, 4) 2269GEN_THREEVEC_TEST(sqshl_4h_4h_4h, "sqshl v1.4h, v2.4h, v4.4h", 1, 2, 4) 2270GEN_THREEVEC_TEST(sqshl_16b_16b_16b, "sqshl v1.16b, v2.16b, v4.16b", 1, 2, 4) 2271GEN_THREEVEC_TEST(sqshl_8b_8b_8b, "sqshl v1.8b, v2.8b, v4.8b", 1, 2, 4) 2272 2273GEN_THREEVEC_TEST(uqshl_d_d_d, "uqshl d1, d2, d4", 1, 2, 4) 2274GEN_THREEVEC_TEST(uqshl_s_s_s, "uqshl s1, s2, s4", 1, 2, 4) 2275GEN_THREEVEC_TEST(uqshl_h_h_h, "uqshl h1, h2, h4", 1, 2, 4) 2276GEN_THREEVEC_TEST(uqshl_b_b_b, "uqshl b1, b2, b4", 1, 2, 4) 2277GEN_THREEVEC_TEST(uqshl_2d_2d_2d, "uqshl v1.2d, v2.2d, v4.2d", 1, 2, 4) 2278GEN_THREEVEC_TEST(uqshl_4s_4s_4s, "uqshl v1.4s, v2.4s, v4.4s", 1, 2, 4) 2279GEN_THREEVEC_TEST(uqshl_2s_2s_2s, "uqshl v1.2s, v2.2s, v4.2s", 1, 2, 4) 2280GEN_THREEVEC_TEST(uqshl_8h_8h_8h, "uqshl v1.8h, v2.8h, v4.8h", 1, 2, 4) 2281GEN_THREEVEC_TEST(uqshl_4h_4h_4h, "uqshl v1.4h, v2.4h, v4.4h", 1, 2, 4) 2282GEN_THREEVEC_TEST(uqshl_16b_16b_16b, "uqshl v1.16b, v2.16b, v4.16b", 1, 2, 4) 2283GEN_THREEVEC_TEST(uqshl_8b_8b_8b, "uqshl v1.8b, v2.8b, v4.8b", 1, 2, 4) 2284 2285GEN_THREEVEC_TEST(sqrshl_d_d_d, "sqrshl d1, d2, d4", 1, 2, 4) 2286GEN_THREEVEC_TEST(sqrshl_s_s_s, "sqrshl s1, s2, s4", 1, 2, 4) 2287GEN_THREEVEC_TEST(sqrshl_h_h_h, "sqrshl h1, h2, h4", 1, 2, 4) 2288GEN_THREEVEC_TEST(sqrshl_b_b_b, "sqrshl b1, b2, b4", 1, 2, 4) 2289GEN_THREEVEC_TEST(sqrshl_2d_2d_2d, "sqrshl v1.2d, v2.2d, v4.2d", 1, 2, 4) 2290GEN_THREEVEC_TEST(sqrshl_4s_4s_4s, "sqrshl v1.4s, v2.4s, v4.4s", 1, 2, 4) 2291GEN_THREEVEC_TEST(sqrshl_2s_2s_2s, "sqrshl v1.2s, v2.2s, v4.2s", 1, 2, 4) 2292GEN_THREEVEC_TEST(sqrshl_8h_8h_8h, "sqrshl v1.8h, v2.8h, v4.8h", 1, 2, 4) 2293GEN_THREEVEC_TEST(sqrshl_4h_4h_4h, "sqrshl v1.4h, v2.4h, v4.4h", 1, 2, 4) 2294GEN_THREEVEC_TEST(sqrshl_16b_16b_16b, "sqrshl v1.16b, v2.16b, v4.16b", 1, 2, 4) 2295GEN_THREEVEC_TEST(sqrshl_8b_8b_8b, "sqrshl v1.8b, v2.8b, v4.8b", 1, 2, 4) 2296 2297GEN_THREEVEC_TEST(uqrshl_d_d_d, "uqrshl d1, d2, d4", 1, 2, 4) 2298GEN_THREEVEC_TEST(uqrshl_s_s_s, "uqrshl s1, s2, s4", 1, 2, 4) 2299GEN_THREEVEC_TEST(uqrshl_h_h_h, "uqrshl h1, h2, h4", 1, 2, 4) 2300GEN_THREEVEC_TEST(uqrshl_b_b_b, "uqrshl b1, b2, b4", 1, 2, 4) 2301GEN_THREEVEC_TEST(uqrshl_2d_2d_2d, "uqrshl v1.2d, v2.2d, v4.2d", 1, 2, 4) 2302GEN_THREEVEC_TEST(uqrshl_4s_4s_4s, "uqrshl v1.4s, v2.4s, v4.4s", 1, 2, 4) 2303GEN_THREEVEC_TEST(uqrshl_2s_2s_2s, "uqrshl v1.2s, v2.2s, v4.2s", 1, 2, 4) 2304GEN_THREEVEC_TEST(uqrshl_8h_8h_8h, "uqrshl v1.8h, v2.8h, v4.8h", 1, 2, 4) 2305GEN_THREEVEC_TEST(uqrshl_4h_4h_4h, "uqrshl v1.4h, v2.4h, v4.4h", 1, 2, 4) 2306GEN_THREEVEC_TEST(uqrshl_16b_16b_16b, "uqrshl v1.16b, v2.16b, v4.16b", 1, 2, 4) 2307GEN_THREEVEC_TEST(uqrshl_8b_8b_8b, "uqrshl v1.8b, v2.8b, v4.8b", 1, 2, 4) 2308 2309GEN_TWOVEC_TEST(sqrshrn_s_d_1, "sqrshrn s2, d5, #1", 2, 5) 2310GEN_TWOVEC_TEST(sqrshrn_s_d_17, "sqrshrn s2, d5, #17", 2, 5) 2311GEN_TWOVEC_TEST(sqrshrn_s_d_32, "sqrshrn s2, d5, #32", 2, 5) 2312GEN_TWOVEC_TEST(sqrshrn_h_s_1, "sqrshrn h2, s5, #1", 2, 5) 2313GEN_TWOVEC_TEST(sqrshrn_h_s_9, "sqrshrn h2, s5, #9", 2, 5) 2314GEN_TWOVEC_TEST(sqrshrn_h_s_16, "sqrshrn h2, s5, #16", 2, 5) 2315GEN_TWOVEC_TEST(sqrshrn_b_h_1, "sqrshrn b2, h5, #1", 2, 5) 2316GEN_TWOVEC_TEST(sqrshrn_b_h_4, "sqrshrn b2, h5, #4", 2, 5) 2317GEN_TWOVEC_TEST(sqrshrn_b_h_8, "sqrshrn b2, h5, #8", 2, 5) 2318 2319GEN_TWOVEC_TEST(uqrshrn_s_d_1, "uqrshrn s2, d5, #1", 2, 5) 2320GEN_TWOVEC_TEST(uqrshrn_s_d_17, "uqrshrn s2, d5, #17", 2, 5) 2321GEN_TWOVEC_TEST(uqrshrn_s_d_32, "uqrshrn s2, d5, #32", 2, 5) 2322GEN_TWOVEC_TEST(uqrshrn_h_s_1, "uqrshrn h2, s5, #1", 2, 5) 2323GEN_TWOVEC_TEST(uqrshrn_h_s_9, "uqrshrn h2, s5, #9", 2, 5) 2324GEN_TWOVEC_TEST(uqrshrn_h_s_16, "uqrshrn h2, s5, #16", 2, 5) 2325GEN_TWOVEC_TEST(uqrshrn_b_h_1, "uqrshrn b2, h5, #1", 2, 5) 2326GEN_TWOVEC_TEST(uqrshrn_b_h_4, "uqrshrn b2, h5, #4", 2, 5) 2327GEN_TWOVEC_TEST(uqrshrn_b_h_8, "uqrshrn b2, h5, #8", 2, 5) 2328 2329GEN_TWOVEC_TEST(sqshrn_s_d_1, "sqshrn s2, d5, #1", 2, 5) 2330GEN_TWOVEC_TEST(sqshrn_s_d_17, "sqshrn s2, d5, #17", 2, 5) 2331GEN_TWOVEC_TEST(sqshrn_s_d_32, "sqshrn s2, d5, #32", 2, 5) 2332GEN_TWOVEC_TEST(sqshrn_h_s_1, "sqshrn h2, s5, #1", 2, 5) 2333GEN_TWOVEC_TEST(sqshrn_h_s_9, "sqshrn h2, s5, #9", 2, 5) 2334GEN_TWOVEC_TEST(sqshrn_h_s_16, "sqshrn h2, s5, #16", 2, 5) 2335GEN_TWOVEC_TEST(sqshrn_b_h_1, "sqshrn b2, h5, #1", 2, 5) 2336GEN_TWOVEC_TEST(sqshrn_b_h_4, "sqshrn b2, h5, #4", 2, 5) 2337GEN_TWOVEC_TEST(sqshrn_b_h_8, "sqshrn b2, h5, #8", 2, 5) 2338 2339GEN_TWOVEC_TEST(uqshrn_s_d_1, "uqshrn s2, d5, #1", 2, 5) 2340GEN_TWOVEC_TEST(uqshrn_s_d_17, "uqshrn s2, d5, #17", 2, 5) 2341GEN_TWOVEC_TEST(uqshrn_s_d_32, "uqshrn s2, d5, #32", 2, 5) 2342GEN_TWOVEC_TEST(uqshrn_h_s_1, "uqshrn h2, s5, #1", 2, 5) 2343GEN_TWOVEC_TEST(uqshrn_h_s_9, "uqshrn h2, s5, #9", 2, 5) 2344GEN_TWOVEC_TEST(uqshrn_h_s_16, "uqshrn h2, s5, #16", 2, 5) 2345GEN_TWOVEC_TEST(uqshrn_b_h_1, "uqshrn b2, h5, #1", 2, 5) 2346GEN_TWOVEC_TEST(uqshrn_b_h_4, "uqshrn b2, h5, #4", 2, 5) 2347GEN_TWOVEC_TEST(uqshrn_b_h_8, "uqshrn b2, h5, #8", 2, 5) 2348 2349GEN_TWOVEC_TEST(sqrshrun_s_d_1, "sqrshrun s2, d5, #1", 2, 5) 2350GEN_TWOVEC_TEST(sqrshrun_s_d_17, "sqrshrun s2, d5, #17", 2, 5) 2351GEN_TWOVEC_TEST(sqrshrun_s_d_32, "sqrshrun s2, d5, #32", 2, 5) 2352GEN_TWOVEC_TEST(sqrshrun_h_s_1, "sqrshrun h2, s5, #1", 2, 5) 2353GEN_TWOVEC_TEST(sqrshrun_h_s_9, "sqrshrun h2, s5, #9", 2, 5) 2354GEN_TWOVEC_TEST(sqrshrun_h_s_16, "sqrshrun h2, s5, #16", 2, 5) 2355GEN_TWOVEC_TEST(sqrshrun_b_h_1, "sqrshrun b2, h5, #1", 2, 5) 2356GEN_TWOVEC_TEST(sqrshrun_b_h_4, "sqrshrun b2, h5, #4", 2, 5) 2357GEN_TWOVEC_TEST(sqrshrun_b_h_8, "sqrshrun b2, h5, #8", 2, 5) 2358 2359GEN_TWOVEC_TEST(sqshrun_s_d_1, "sqshrun s2, d5, #1", 2, 5) 2360GEN_TWOVEC_TEST(sqshrun_s_d_17, "sqshrun s2, d5, #17", 2, 5) 2361GEN_TWOVEC_TEST(sqshrun_s_d_32, "sqshrun s2, d5, #32", 2, 5) 2362GEN_TWOVEC_TEST(sqshrun_h_s_1, "sqshrun h2, s5, #1", 2, 5) 2363GEN_TWOVEC_TEST(sqshrun_h_s_9, "sqshrun h2, s5, #9", 2, 5) 2364GEN_TWOVEC_TEST(sqshrun_h_s_16, "sqshrun h2, s5, #16", 2, 5) 2365GEN_TWOVEC_TEST(sqshrun_b_h_1, "sqshrun b2, h5, #1", 2, 5) 2366GEN_TWOVEC_TEST(sqshrun_b_h_4, "sqshrun b2, h5, #4", 2, 5) 2367GEN_TWOVEC_TEST(sqshrun_b_h_8, "sqshrun b2, h5, #8", 2, 5) 2368 2369GEN_TWOVEC_TEST(sqrshrn_2s_2d_1, "sqrshrn v4.2s, v29.2d, #1", 4, 29) 2370GEN_TWOVEC_TEST(sqrshrn_2s_2d_17, "sqrshrn v4.2s, v29.2d, #17", 4, 29) 2371GEN_TWOVEC_TEST(sqrshrn_2s_2d_32, "sqrshrn v4.2s, v29.2d, #32", 4, 29) 2372GEN_TWOVEC_TEST(sqrshrn2_4s_2d_1, "sqrshrn2 v4.4s, v29.2d, #1", 4, 29) 2373GEN_TWOVEC_TEST(sqrshrn2_4s_2d_17, "sqrshrn2 v4.4s, v29.2d, #17", 4, 29) 2374GEN_TWOVEC_TEST(sqrshrn2_4s_2d_32, "sqrshrn2 v4.4s, v29.2d, #32", 4, 29) 2375GEN_TWOVEC_TEST(sqrshrn_4h_4s_1, "sqrshrn v4.4h, v29.4s, #1", 4, 29) 2376GEN_TWOVEC_TEST(sqrshrn_4h_4s_9, "sqrshrn v4.4h, v29.4s, #9", 4, 29) 2377GEN_TWOVEC_TEST(sqrshrn_4h_4s_16, "sqrshrn v4.4h, v29.4s, #16", 4, 29) 2378GEN_TWOVEC_TEST(sqrshrn2_8h_4s_1, "sqrshrn2 v4.8h, v29.4s, #1", 4, 29) 2379GEN_TWOVEC_TEST(sqrshrn2_8h_4s_9, "sqrshrn2 v4.8h, v29.4s, #9", 4, 29) 2380GEN_TWOVEC_TEST(sqrshrn2_8h_4s_16, "sqrshrn2 v4.8h, v29.4s, #16", 4, 29) 2381GEN_TWOVEC_TEST(sqrshrn_8b_8h_1, "sqrshrn v4.8b, v29.8h, #1", 4, 29) 2382GEN_TWOVEC_TEST(sqrshrn_8b_8h_4, "sqrshrn v4.8b, v29.8h, #4", 4, 29) 2383GEN_TWOVEC_TEST(sqrshrn_8b_8h_8, "sqrshrn v4.8b, v29.8h, #8", 4, 29) 2384GEN_TWOVEC_TEST(sqrshrn2_16b_8h_1, "sqrshrn2 v4.16b, v29.8h, #1", 4, 29) 2385GEN_TWOVEC_TEST(sqrshrn2_16b_8h_4, "sqrshrn2 v4.16b, v29.8h, #4", 4, 29) 2386GEN_TWOVEC_TEST(sqrshrn2_16b_8h_8, "sqrshrn2 v4.16b, v29.8h, #8", 4, 29) 2387 2388GEN_TWOVEC_TEST(uqrshrn_2s_2d_1, "uqrshrn v4.2s, v29.2d, #1", 4, 29) 2389GEN_TWOVEC_TEST(uqrshrn_2s_2d_17, "uqrshrn v4.2s, v29.2d, #17", 4, 29) 2390GEN_TWOVEC_TEST(uqrshrn_2s_2d_32, "uqrshrn v4.2s, v29.2d, #32", 4, 29) 2391GEN_TWOVEC_TEST(uqrshrn2_4s_2d_1, "uqrshrn2 v4.4s, v29.2d, #1", 4, 29) 2392GEN_TWOVEC_TEST(uqrshrn2_4s_2d_17, "uqrshrn2 v4.4s, v29.2d, #17", 4, 29) 2393GEN_TWOVEC_TEST(uqrshrn2_4s_2d_32, "uqrshrn2 v4.4s, v29.2d, #32", 4, 29) 2394GEN_TWOVEC_TEST(uqrshrn_4h_4s_1, "uqrshrn v4.4h, v29.4s, #1", 4, 29) 2395GEN_TWOVEC_TEST(uqrshrn_4h_4s_9, "uqrshrn v4.4h, v29.4s, #9", 4, 29) 2396GEN_TWOVEC_TEST(uqrshrn_4h_4s_16, "uqrshrn v4.4h, v29.4s, #16", 4, 29) 2397GEN_TWOVEC_TEST(uqrshrn2_8h_4s_1, "uqrshrn2 v4.8h, v29.4s, #1", 4, 29) 2398GEN_TWOVEC_TEST(uqrshrn2_8h_4s_9, "uqrshrn2 v4.8h, v29.4s, #9", 4, 29) 2399GEN_TWOVEC_TEST(uqrshrn2_8h_4s_16, "uqrshrn2 v4.8h, v29.4s, #16", 4, 29) 2400GEN_TWOVEC_TEST(uqrshrn_8b_8h_1, "uqrshrn v4.8b, v29.8h, #1", 4, 29) 2401GEN_TWOVEC_TEST(uqrshrn_8b_8h_4, "uqrshrn v4.8b, v29.8h, #4", 4, 29) 2402GEN_TWOVEC_TEST(uqrshrn_8b_8h_8, "uqrshrn v4.8b, v29.8h, #8", 4, 29) 2403GEN_TWOVEC_TEST(uqrshrn2_16b_8h_1, "uqrshrn2 v4.16b, v29.8h, #1", 4, 29) 2404GEN_TWOVEC_TEST(uqrshrn2_16b_8h_4, "uqrshrn2 v4.16b, v29.8h, #4", 4, 29) 2405GEN_TWOVEC_TEST(uqrshrn2_16b_8h_8, "uqrshrn2 v4.16b, v29.8h, #8", 4, 29) 2406 2407GEN_TWOVEC_TEST(sqshrn_2s_2d_1, "sqshrn v4.2s, v29.2d, #1", 4, 29) 2408GEN_TWOVEC_TEST(sqshrn_2s_2d_17, "sqshrn v4.2s, v29.2d, #17", 4, 29) 2409GEN_TWOVEC_TEST(sqshrn_2s_2d_32, "sqshrn v4.2s, v29.2d, #32", 4, 29) 2410GEN_TWOVEC_TEST(sqshrn2_4s_2d_1, "sqshrn2 v4.4s, v29.2d, #1", 4, 29) 2411GEN_TWOVEC_TEST(sqshrn2_4s_2d_17, "sqshrn2 v4.4s, v29.2d, #17", 4, 29) 2412GEN_TWOVEC_TEST(sqshrn2_4s_2d_32, "sqshrn2 v4.4s, v29.2d, #32", 4, 29) 2413GEN_TWOVEC_TEST(sqshrn_4h_4s_1, "sqshrn v4.4h, v29.4s, #1", 4, 29) 2414GEN_TWOVEC_TEST(sqshrn_4h_4s_9, "sqshrn v4.4h, v29.4s, #9", 4, 29) 2415GEN_TWOVEC_TEST(sqshrn_4h_4s_16, "sqshrn v4.4h, v29.4s, #16", 4, 29) 2416GEN_TWOVEC_TEST(sqshrn2_8h_4s_1, "sqshrn2 v4.8h, v29.4s, #1", 4, 29) 2417GEN_TWOVEC_TEST(sqshrn2_8h_4s_9, "sqshrn2 v4.8h, v29.4s, #9", 4, 29) 2418GEN_TWOVEC_TEST(sqshrn2_8h_4s_16, "sqshrn2 v4.8h, v29.4s, #16", 4, 29) 2419GEN_TWOVEC_TEST(sqshrn_8b_8h_1, "sqshrn v4.8b, v29.8h, #1", 4, 29) 2420GEN_TWOVEC_TEST(sqshrn_8b_8h_4, "sqshrn v4.8b, v29.8h, #4", 4, 29) 2421GEN_TWOVEC_TEST(sqshrn_8b_8h_8, "sqshrn v4.8b, v29.8h, #8", 4, 29) 2422GEN_TWOVEC_TEST(sqshrn2_16b_8h_1, "sqshrn2 v4.16b, v29.8h, #1", 4, 29) 2423GEN_TWOVEC_TEST(sqshrn2_16b_8h_4, "sqshrn2 v4.16b, v29.8h, #4", 4, 29) 2424GEN_TWOVEC_TEST(sqshrn2_16b_8h_8, "sqshrn2 v4.16b, v29.8h, #8", 4, 29) 2425 2426GEN_TWOVEC_TEST(uqshrn_2s_2d_1, "uqshrn v4.2s, v29.2d, #1", 4, 29) 2427GEN_TWOVEC_TEST(uqshrn_2s_2d_17, "uqshrn v4.2s, v29.2d, #17", 4, 29) 2428GEN_TWOVEC_TEST(uqshrn_2s_2d_32, "uqshrn v4.2s, v29.2d, #32", 4, 29) 2429GEN_TWOVEC_TEST(uqshrn2_4s_2d_1, "uqshrn2 v4.4s, v29.2d, #1", 4, 29) 2430GEN_TWOVEC_TEST(uqshrn2_4s_2d_17, "uqshrn2 v4.4s, v29.2d, #17", 4, 29) 2431GEN_TWOVEC_TEST(uqshrn2_4s_2d_32, "uqshrn2 v4.4s, v29.2d, #32", 4, 29) 2432GEN_TWOVEC_TEST(uqshrn_4h_4s_1, "uqshrn v4.4h, v29.4s, #1", 4, 29) 2433GEN_TWOVEC_TEST(uqshrn_4h_4s_9, "uqshrn v4.4h, v29.4s, #9", 4, 29) 2434GEN_TWOVEC_TEST(uqshrn_4h_4s_16, "uqshrn v4.4h, v29.4s, #16", 4, 29) 2435GEN_TWOVEC_TEST(uqshrn2_8h_4s_1, "uqshrn2 v4.8h, v29.4s, #1", 4, 29) 2436GEN_TWOVEC_TEST(uqshrn2_8h_4s_9, "uqshrn2 v4.8h, v29.4s, #9", 4, 29) 2437GEN_TWOVEC_TEST(uqshrn2_8h_4s_16, "uqshrn2 v4.8h, v29.4s, #16", 4, 29) 2438GEN_TWOVEC_TEST(uqshrn_8b_8h_1, "uqshrn v4.8b, v29.8h, #1", 4, 29) 2439GEN_TWOVEC_TEST(uqshrn_8b_8h_4, "uqshrn v4.8b, v29.8h, #4", 4, 29) 2440GEN_TWOVEC_TEST(uqshrn_8b_8h_8, "uqshrn v4.8b, v29.8h, #8", 4, 29) 2441GEN_TWOVEC_TEST(uqshrn2_16b_8h_1, "uqshrn2 v4.16b, v29.8h, #1", 4, 29) 2442GEN_TWOVEC_TEST(uqshrn2_16b_8h_4, "uqshrn2 v4.16b, v29.8h, #4", 4, 29) 2443GEN_TWOVEC_TEST(uqshrn2_16b_8h_8, "uqshrn2 v4.16b, v29.8h, #8", 4, 29) 2444 2445GEN_TWOVEC_TEST(sqrshrun_2s_2d_1, "sqrshrun v4.2s, v29.2d, #1", 4, 29) 2446GEN_TWOVEC_TEST(sqrshrun_2s_2d_17, "sqrshrun v4.2s, v29.2d, #17", 4, 29) 2447GEN_TWOVEC_TEST(sqrshrun_2s_2d_32, "sqrshrun v4.2s, v29.2d, #32", 4, 29) 2448GEN_TWOVEC_TEST(sqrshrun2_4s_2d_1, "sqrshrun2 v4.4s, v29.2d, #1", 4, 29) 2449GEN_TWOVEC_TEST(sqrshrun2_4s_2d_17, "sqrshrun2 v4.4s, v29.2d, #17", 4, 29) 2450GEN_TWOVEC_TEST(sqrshrun2_4s_2d_32, "sqrshrun2 v4.4s, v29.2d, #32", 4, 29) 2451GEN_TWOVEC_TEST(sqrshrun_4h_4s_1, "sqrshrun v4.4h, v29.4s, #1", 4, 29) 2452GEN_TWOVEC_TEST(sqrshrun_4h_4s_9, "sqrshrun v4.4h, v29.4s, #9", 4, 29) 2453GEN_TWOVEC_TEST(sqrshrun_4h_4s_16, "sqrshrun v4.4h, v29.4s, #16", 4, 29) 2454GEN_TWOVEC_TEST(sqrshrun2_8h_4s_1, "sqrshrun2 v4.8h, v29.4s, #1", 4, 29) 2455GEN_TWOVEC_TEST(sqrshrun2_8h_4s_9, "sqrshrun2 v4.8h, v29.4s, #9", 4, 29) 2456GEN_TWOVEC_TEST(sqrshrun2_8h_4s_16, "sqrshrun2 v4.8h, v29.4s, #16", 4, 29) 2457GEN_TWOVEC_TEST(sqrshrun_8b_8h_1, "sqrshrun v4.8b, v29.8h, #1", 4, 29) 2458GEN_TWOVEC_TEST(sqrshrun_8b_8h_4, "sqrshrun v4.8b, v29.8h, #4", 4, 29) 2459GEN_TWOVEC_TEST(sqrshrun_8b_8h_8, "sqrshrun v4.8b, v29.8h, #8", 4, 29) 2460GEN_TWOVEC_TEST(sqrshrun2_16b_8h_1, "sqrshrun2 v4.16b, v29.8h, #1", 4, 29) 2461GEN_TWOVEC_TEST(sqrshrun2_16b_8h_4, "sqrshrun2 v4.16b, v29.8h, #4", 4, 29) 2462GEN_TWOVEC_TEST(sqrshrun2_16b_8h_8, "sqrshrun2 v4.16b, v29.8h, #8", 4, 29) 2463 2464GEN_TWOVEC_TEST(sqshrun_2s_2d_1, "sqshrun v4.2s, v29.2d, #1", 4, 29) 2465GEN_TWOVEC_TEST(sqshrun_2s_2d_17, "sqshrun v4.2s, v29.2d, #17", 4, 29) 2466GEN_TWOVEC_TEST(sqshrun_2s_2d_32, "sqshrun v4.2s, v29.2d, #32", 4, 29) 2467GEN_TWOVEC_TEST(sqshrun2_4s_2d_1, "sqshrun2 v4.4s, v29.2d, #1", 4, 29) 2468GEN_TWOVEC_TEST(sqshrun2_4s_2d_17, "sqshrun2 v4.4s, v29.2d, #17", 4, 29) 2469GEN_TWOVEC_TEST(sqshrun2_4s_2d_32, "sqshrun2 v4.4s, v29.2d, #32", 4, 29) 2470GEN_TWOVEC_TEST(sqshrun_4h_4s_1, "sqshrun v4.4h, v29.4s, #1", 4, 29) 2471GEN_TWOVEC_TEST(sqshrun_4h_4s_9, "sqshrun v4.4h, v29.4s, #9", 4, 29) 2472GEN_TWOVEC_TEST(sqshrun_4h_4s_16, "sqshrun v4.4h, v29.4s, #16", 4, 29) 2473GEN_TWOVEC_TEST(sqshrun2_8h_4s_1, "sqshrun2 v4.8h, v29.4s, #1", 4, 29) 2474GEN_TWOVEC_TEST(sqshrun2_8h_4s_9, "sqshrun2 v4.8h, v29.4s, #9", 4, 29) 2475GEN_TWOVEC_TEST(sqshrun2_8h_4s_16, "sqshrun2 v4.8h, v29.4s, #16", 4, 29) 2476GEN_TWOVEC_TEST(sqshrun_8b_8h_1, "sqshrun v4.8b, v29.8h, #1", 4, 29) 2477GEN_TWOVEC_TEST(sqshrun_8b_8h_4, "sqshrun v4.8b, v29.8h, #4", 4, 29) 2478GEN_TWOVEC_TEST(sqshrun_8b_8h_8, "sqshrun v4.8b, v29.8h, #8", 4, 29) 2479GEN_TWOVEC_TEST(sqshrun2_16b_8h_1, "sqshrun2 v4.16b, v29.8h, #1", 4, 29) 2480GEN_TWOVEC_TEST(sqshrun2_16b_8h_4, "sqshrun2 v4.16b, v29.8h, #4", 4, 29) 2481GEN_TWOVEC_TEST(sqshrun2_16b_8h_8, "sqshrun2 v4.16b, v29.8h, #8", 4, 29) 2482 2483GEN_TWOVEC_TEST(sqshl_d_d_0, "sqshl d5, d28, #0", 5, 28) 2484GEN_TWOVEC_TEST(sqshl_d_d_32, "sqshl d5, d28, #32", 5, 28) 2485GEN_TWOVEC_TEST(sqshl_d_d_63, "sqshl d5, d28, #63", 5, 28) 2486GEN_TWOVEC_TEST(sqshl_s_s_0, "sqshl s5, s28, #0", 5, 28) 2487GEN_TWOVEC_TEST(sqshl_s_s_16, "sqshl s5, s28, #16", 5, 28) 2488GEN_TWOVEC_TEST(sqshl_s_s_31, "sqshl s5, s28, #31", 5, 28) 2489GEN_TWOVEC_TEST(sqshl_h_h_0, "sqshl h5, h28, #0", 5, 28) 2490GEN_TWOVEC_TEST(sqshl_h_h_8, "sqshl h5, h28, #8", 5, 28) 2491GEN_TWOVEC_TEST(sqshl_h_h_15, "sqshl h5, h28, #15", 5, 28) 2492GEN_TWOVEC_TEST(sqshl_b_b_0, "sqshl b5, b28, #0", 5, 28) 2493GEN_TWOVEC_TEST(sqshl_b_b_4, "sqshl b5, b28, #4", 5, 28) 2494GEN_TWOVEC_TEST(sqshl_b_b_7, "sqshl b5, b28, #7", 5, 28) 2495 2496GEN_TWOVEC_TEST(uqshl_d_d_0, "uqshl d5, d28, #0", 5, 28) 2497GEN_TWOVEC_TEST(uqshl_d_d_32, "uqshl d5, d28, #32", 5, 28) 2498GEN_TWOVEC_TEST(uqshl_d_d_63, "uqshl d5, d28, #63", 5, 28) 2499GEN_TWOVEC_TEST(uqshl_s_s_0, "uqshl s5, s28, #0", 5, 28) 2500GEN_TWOVEC_TEST(uqshl_s_s_16, "uqshl s5, s28, #16", 5, 28) 2501GEN_TWOVEC_TEST(uqshl_s_s_31, "uqshl s5, s28, #31", 5, 28) 2502GEN_TWOVEC_TEST(uqshl_h_h_0, "uqshl h5, h28, #0", 5, 28) 2503GEN_TWOVEC_TEST(uqshl_h_h_8, "uqshl h5, h28, #8", 5, 28) 2504GEN_TWOVEC_TEST(uqshl_h_h_15, "uqshl h5, h28, #15", 5, 28) 2505GEN_TWOVEC_TEST(uqshl_b_b_0, "uqshl b5, b28, #0", 5, 28) 2506GEN_TWOVEC_TEST(uqshl_b_b_4, "uqshl b5, b28, #4", 5, 28) 2507GEN_TWOVEC_TEST(uqshl_b_b_7, "uqshl b5, b28, #7", 5, 28) 2508 2509GEN_TWOVEC_TEST(sqshlu_d_d_0, "sqshlu d5, d28, #0", 5, 28) 2510GEN_TWOVEC_TEST(sqshlu_d_d_32, "sqshlu d5, d28, #32", 5, 28) 2511GEN_TWOVEC_TEST(sqshlu_d_d_63, "sqshlu d5, d28, #63", 5, 28) 2512GEN_TWOVEC_TEST(sqshlu_s_s_0, "sqshlu s5, s28, #0", 5, 28) 2513GEN_TWOVEC_TEST(sqshlu_s_s_16, "sqshlu s5, s28, #16", 5, 28) 2514GEN_TWOVEC_TEST(sqshlu_s_s_31, "sqshlu s5, s28, #31", 5, 28) 2515GEN_TWOVEC_TEST(sqshlu_h_h_0, "sqshlu h5, h28, #0", 5, 28) 2516GEN_TWOVEC_TEST(sqshlu_h_h_8, "sqshlu h5, h28, #8", 5, 28) 2517GEN_TWOVEC_TEST(sqshlu_h_h_15, "sqshlu h5, h28, #15", 5, 28) 2518GEN_TWOVEC_TEST(sqshlu_b_b_0, "sqshlu b5, b28, #0", 5, 28) 2519GEN_TWOVEC_TEST(sqshlu_b_b_4, "sqshlu b5, b28, #4", 5, 28) 2520GEN_TWOVEC_TEST(sqshlu_b_b_7, "sqshlu b5, b28, #7", 5, 28) 2521 2522GEN_TWOVEC_TEST(sqshl_2d_2d_0, "sqshl v6.2d, v27.2d, #0", 6, 27) 2523GEN_TWOVEC_TEST(sqshl_2d_2d_32, "sqshl v6.2d, v27.2d, #32", 6, 27) 2524GEN_TWOVEC_TEST(sqshl_2d_2d_63, "sqshl v6.2d, v27.2d, #63", 6, 27) 2525GEN_TWOVEC_TEST(sqshl_4s_4s_0, "sqshl v6.4s, v27.4s, #0", 6, 27) 2526GEN_TWOVEC_TEST(sqshl_4s_4s_16, "sqshl v6.4s, v27.4s, #16", 6, 27) 2527GEN_TWOVEC_TEST(sqshl_4s_4s_31, "sqshl v6.4s, v27.4s, #31", 6, 27) 2528GEN_TWOVEC_TEST(sqshl_2s_2s_0, "sqshl v6.2s, v27.2s, #0", 6, 27) 2529GEN_TWOVEC_TEST(sqshl_2s_2s_16, "sqshl v6.2s, v27.2s, #16", 6, 27) 2530GEN_TWOVEC_TEST(sqshl_2s_2s_31, "sqshl v6.2s, v27.2s, #31", 6, 27) 2531GEN_TWOVEC_TEST(sqshl_8h_8h_0, "sqshl v6.8h, v27.8h, #0", 6, 27) 2532GEN_TWOVEC_TEST(sqshl_8h_8h_8, "sqshl v6.8h, v27.8h, #8", 6, 27) 2533GEN_TWOVEC_TEST(sqshl_8h_8h_15, "sqshl v6.8h, v27.8h, #15", 6, 27) 2534GEN_TWOVEC_TEST(sqshl_4h_4h_0, "sqshl v6.4h, v27.4h, #0", 6, 27) 2535GEN_TWOVEC_TEST(sqshl_4h_4h_8, "sqshl v6.4h, v27.4h, #8", 6, 27) 2536GEN_TWOVEC_TEST(sqshl_4h_4h_15, "sqshl v6.4h, v27.4h, #15", 6, 27) 2537GEN_TWOVEC_TEST(sqshl_16b_16b_0, "sqshl v6.16b, v27.16b, #0", 6, 27) 2538GEN_TWOVEC_TEST(sqshl_16b_16b_3, "sqshl v6.16b, v27.16b, #3", 6, 27) 2539GEN_TWOVEC_TEST(sqshl_16b_16b_7, "sqshl v6.16b, v27.16b, #7", 6, 27) 2540GEN_TWOVEC_TEST(sqshl_8b_8b_0, "sqshl v6.8b, v27.8b, #0", 6, 27) 2541GEN_TWOVEC_TEST(sqshl_8b_8b_3, "sqshl v6.8b, v27.8b, #3", 6, 27) 2542GEN_TWOVEC_TEST(sqshl_8b_8b_7, "sqshl v6.8b, v27.8b, #7", 6, 27) 2543 2544GEN_TWOVEC_TEST(uqshl_2d_2d_0, "uqshl v6.2d, v27.2d, #0", 6, 27) 2545GEN_TWOVEC_TEST(uqshl_2d_2d_32, "uqshl v6.2d, v27.2d, #32", 6, 27) 2546GEN_TWOVEC_TEST(uqshl_2d_2d_63, "uqshl v6.2d, v27.2d, #63", 6, 27) 2547GEN_TWOVEC_TEST(uqshl_4s_4s_0, "uqshl v6.4s, v27.4s, #0", 6, 27) 2548GEN_TWOVEC_TEST(uqshl_4s_4s_16, "uqshl v6.4s, v27.4s, #16", 6, 27) 2549GEN_TWOVEC_TEST(uqshl_4s_4s_31, "uqshl v6.4s, v27.4s, #31", 6, 27) 2550GEN_TWOVEC_TEST(uqshl_2s_2s_0, "uqshl v6.2s, v27.2s, #0", 6, 27) 2551GEN_TWOVEC_TEST(uqshl_2s_2s_16, "uqshl v6.2s, v27.2s, #16", 6, 27) 2552GEN_TWOVEC_TEST(uqshl_2s_2s_31, "uqshl v6.2s, v27.2s, #31", 6, 27) 2553GEN_TWOVEC_TEST(uqshl_8h_8h_0, "uqshl v6.8h, v27.8h, #0", 6, 27) 2554GEN_TWOVEC_TEST(uqshl_8h_8h_8, "uqshl v6.8h, v27.8h, #8", 6, 27) 2555GEN_TWOVEC_TEST(uqshl_8h_8h_15, "uqshl v6.8h, v27.8h, #15", 6, 27) 2556GEN_TWOVEC_TEST(uqshl_4h_4h_0, "uqshl v6.4h, v27.4h, #0", 6, 27) 2557GEN_TWOVEC_TEST(uqshl_4h_4h_8, "uqshl v6.4h, v27.4h, #8", 6, 27) 2558GEN_TWOVEC_TEST(uqshl_4h_4h_15, "uqshl v6.4h, v27.4h, #15", 6, 27) 2559GEN_TWOVEC_TEST(uqshl_16b_16b_0, "uqshl v6.16b, v27.16b, #0", 6, 27) 2560GEN_TWOVEC_TEST(uqshl_16b_16b_3, "uqshl v6.16b, v27.16b, #3", 6, 27) 2561GEN_TWOVEC_TEST(uqshl_16b_16b_7, "uqshl v6.16b, v27.16b, #7", 6, 27) 2562GEN_TWOVEC_TEST(uqshl_8b_8b_0, "uqshl v6.8b, v27.8b, #0", 6, 27) 2563GEN_TWOVEC_TEST(uqshl_8b_8b_3, "uqshl v6.8b, v27.8b, #3", 6, 27) 2564GEN_TWOVEC_TEST(uqshl_8b_8b_7, "uqshl v6.8b, v27.8b, #7", 6, 27) 2565 2566GEN_TWOVEC_TEST(sqshlu_2d_2d_0, "sqshlu v6.2d, v27.2d, #0", 6, 27) 2567GEN_TWOVEC_TEST(sqshlu_2d_2d_32, "sqshlu v6.2d, v27.2d, #32", 6, 27) 2568GEN_TWOVEC_TEST(sqshlu_2d_2d_63, "sqshlu v6.2d, v27.2d, #63", 6, 27) 2569GEN_TWOVEC_TEST(sqshlu_4s_4s_0, "sqshlu v6.4s, v27.4s, #0", 6, 27) 2570GEN_TWOVEC_TEST(sqshlu_4s_4s_16, "sqshlu v6.4s, v27.4s, #16", 6, 27) 2571GEN_TWOVEC_TEST(sqshlu_4s_4s_31, "sqshlu v6.4s, v27.4s, #31", 6, 27) 2572GEN_TWOVEC_TEST(sqshlu_2s_2s_0, "sqshlu v6.2s, v27.2s, #0", 6, 27) 2573GEN_TWOVEC_TEST(sqshlu_2s_2s_16, "sqshlu v6.2s, v27.2s, #16", 6, 27) 2574GEN_TWOVEC_TEST(sqshlu_2s_2s_31, "sqshlu v6.2s, v27.2s, #31", 6, 27) 2575GEN_TWOVEC_TEST(sqshlu_8h_8h_0, "sqshlu v6.8h, v27.8h, #0", 6, 27) 2576GEN_TWOVEC_TEST(sqshlu_8h_8h_8, "sqshlu v6.8h, v27.8h, #8", 6, 27) 2577GEN_TWOVEC_TEST(sqshlu_8h_8h_15, "sqshlu v6.8h, v27.8h, #15", 6, 27) 2578GEN_TWOVEC_TEST(sqshlu_4h_4h_0, "sqshlu v6.4h, v27.4h, #0", 6, 27) 2579GEN_TWOVEC_TEST(sqshlu_4h_4h_8, "sqshlu v6.4h, v27.4h, #8", 6, 27) 2580GEN_TWOVEC_TEST(sqshlu_4h_4h_15, "sqshlu v6.4h, v27.4h, #15", 6, 27) 2581GEN_TWOVEC_TEST(sqshlu_16b_16b_0, "sqshlu v6.16b, v27.16b, #0", 6, 27) 2582GEN_TWOVEC_TEST(sqshlu_16b_16b_3, "sqshlu v6.16b, v27.16b, #3", 6, 27) 2583GEN_TWOVEC_TEST(sqshlu_16b_16b_7, "sqshlu v6.16b, v27.16b, #7", 6, 27) 2584GEN_TWOVEC_TEST(sqshlu_8b_8b_0, "sqshlu v6.8b, v27.8b, #0", 6, 27) 2585GEN_TWOVEC_TEST(sqshlu_8b_8b_3, "sqshlu v6.8b, v27.8b, #3", 6, 27) 2586GEN_TWOVEC_TEST(sqshlu_8b_8b_7, "sqshlu v6.8b, v27.8b, #7", 6, 27) 2587 2588GEN_TWOVEC_TEST(sqxtn_s_d, "sqxtn s31, d0", 31, 0) 2589GEN_TWOVEC_TEST(sqxtn_h_s, "sqxtn h31, s0", 31, 0) 2590GEN_TWOVEC_TEST(sqxtn_b_h, "sqxtn b31, h0", 31, 0) 2591GEN_TWOVEC_TEST(uqxtn_s_d, "uqxtn s31, d0", 31, 0) 2592GEN_TWOVEC_TEST(uqxtn_h_s, "uqxtn h31, s0", 31, 0) 2593GEN_TWOVEC_TEST(uqxtn_b_h, "uqxtn b31, h0", 31, 0) 2594GEN_TWOVEC_TEST(sqxtun_s_d, "sqxtun s31, d0", 31, 0) 2595GEN_TWOVEC_TEST(sqxtun_h_s, "sqxtun h31, s0", 31, 0) 2596GEN_TWOVEC_TEST(sqxtun_b_h, "sqxtun b31, h0", 31, 0) 2597 2598GEN_UNARY_TEST(sqxtn, 2s, 2d) 2599GEN_UNARY_TEST(sqxtn2, 4s, 2d) 2600GEN_UNARY_TEST(sqxtn, 4h, 4s) 2601GEN_UNARY_TEST(sqxtn2, 8h, 4s) 2602GEN_UNARY_TEST(sqxtn, 8b, 8h) 2603GEN_UNARY_TEST(sqxtn2, 16b, 8h) 2604 2605GEN_UNARY_TEST(uqxtn, 2s, 2d) 2606GEN_UNARY_TEST(uqxtn2, 4s, 2d) 2607GEN_UNARY_TEST(uqxtn, 4h, 4s) 2608GEN_UNARY_TEST(uqxtn2, 8h, 4s) 2609GEN_UNARY_TEST(uqxtn, 8b, 8h) 2610GEN_UNARY_TEST(uqxtn2, 16b, 8h) 2611 2612GEN_UNARY_TEST(sqxtun, 2s, 2d) 2613GEN_UNARY_TEST(sqxtun2, 4s, 2d) 2614GEN_UNARY_TEST(sqxtun, 4h, 4s) 2615GEN_UNARY_TEST(sqxtun2, 8h, 4s) 2616GEN_UNARY_TEST(sqxtun, 8b, 8h) 2617GEN_UNARY_TEST(sqxtun2, 16b, 8h) 2618 2619GEN_THREEVEC_TEST(srhadd_4s_4s_4s,"srhadd v2.4s, v11.4s, v29.4s", 2, 11, 29) 2620GEN_THREEVEC_TEST(srhadd_2s_2s_2s,"srhadd v2.2s, v11.2s, v29.2s", 2, 11, 29) 2621GEN_THREEVEC_TEST(srhadd_8h_8h_8h,"srhadd v2.8h, v11.8h, v29.8h", 2, 11, 29) 2622GEN_THREEVEC_TEST(srhadd_4h_4h_4h,"srhadd v2.4h, v11.4h, v29.4h", 2, 11, 29) 2623GEN_THREEVEC_TEST(srhadd_16b_16b_16b, 2624 "srhadd v2.16b, v11.16b, v29.16b", 2, 11, 29) 2625GEN_THREEVEC_TEST(srhadd_8b_8b_8b,"srhadd v2.8b, v11.8b, v29.8b", 2, 11, 29) 2626 2627GEN_THREEVEC_TEST(urhadd_4s_4s_4s,"urhadd v2.4s, v11.4s, v29.4s", 2, 11, 29) 2628GEN_THREEVEC_TEST(urhadd_2s_2s_2s,"urhadd v2.2s, v11.2s, v29.2s", 2, 11, 29) 2629GEN_THREEVEC_TEST(urhadd_8h_8h_8h,"urhadd v2.8h, v11.8h, v29.8h", 2, 11, 29) 2630GEN_THREEVEC_TEST(urhadd_4h_4h_4h,"urhadd v2.4h, v11.4h, v29.4h", 2, 11, 29) 2631GEN_THREEVEC_TEST(urhadd_16b_16b_16b, 2632 "urhadd v2.16b, v11.16b, v29.16b", 2, 11, 29) 2633GEN_THREEVEC_TEST(urhadd_8b_8b_8b,"urhadd v2.8b, v11.8b, v29.8b", 2, 11, 29) 2634 2635GEN_THREEVEC_TEST(sshl_d_d_d, "sshl d29, d28, d27", 29, 28, 27) 2636GEN_THREEVEC_TEST(ushl_d_d_d, "ushl d29, d28, d27", 29, 28, 27) 2637 2638GEN_THREEVEC_TEST(sshl_2d_2d_2d, "sshl v29.2d, v28.2d, v27.2d", 29,28,27) 2639GEN_THREEVEC_TEST(sshl_4s_4s_4s, "sshl v29.4s, v28.4s, v27.4s", 29,28,27) 2640GEN_THREEVEC_TEST(sshl_2s_2s_2s, "sshl v29.2s, v28.2s, v27.2s", 29,28,27) 2641GEN_THREEVEC_TEST(sshl_8h_8h_8h, "sshl v29.8h, v28.8h, v27.8h", 29,28,27) 2642GEN_THREEVEC_TEST(sshl_4h_4h_4h, "sshl v29.4h, v28.4h, v27.4h", 29,28,27) 2643GEN_THREEVEC_TEST(sshl_16b_16b_16b, "sshl v29.16b, v28.16b, v27.16b", 29,28,27) 2644GEN_THREEVEC_TEST(sshl_8b_8b_8b, "sshl v29.8b, v28.8b, v27.8b", 29,28,27) 2645 2646GEN_THREEVEC_TEST(ushl_2d_2d_2d, "ushl v29.2d, v28.2d, v27.2d", 29,28,27) 2647GEN_THREEVEC_TEST(ushl_4s_4s_4s, "ushl v29.4s, v28.4s, v27.4s", 29,28,27) 2648GEN_THREEVEC_TEST(ushl_2s_2s_2s, "ushl v29.2s, v28.2s, v27.2s", 29,28,27) 2649GEN_THREEVEC_TEST(ushl_8h_8h_8h, "ushl v29.8h, v28.8h, v27.8h", 29,28,27) 2650GEN_THREEVEC_TEST(ushl_4h_4h_4h, "ushl v29.4h, v28.4h, v27.4h", 29,28,27) 2651GEN_THREEVEC_TEST(ushl_16b_16b_16b, "ushl v29.16b, v28.16b, v27.16b", 29,28,27) 2652GEN_THREEVEC_TEST(ushl_8b_8b_8b, "ushl v29.8b, v28.8b, v27.8b", 29,28,27) 2653 2654GEN_TWOVEC_TEST(shl_d_d_0, "shl d5, d28, #0", 5, 28) 2655GEN_TWOVEC_TEST(shl_d_d_32, "shl d5, d28, #32", 5, 28) 2656GEN_TWOVEC_TEST(shl_d_d_63, "shl d5, d28, #63", 5, 28) 2657 2658GEN_TWOVEC_TEST(sshr_d_d_1, "sshr d5, d28, #1", 5, 28) 2659GEN_TWOVEC_TEST(sshr_d_d_32, "sshr d5, d28, #32", 5, 28) 2660GEN_TWOVEC_TEST(sshr_d_d_64, "sshr d5, d28, #64", 5, 28) 2661 2662GEN_TWOVEC_TEST(ushr_d_d_1, "ushr d5, d28, #1", 5, 28) 2663GEN_TWOVEC_TEST(ushr_d_d_32, "ushr d5, d28, #32", 5, 28) 2664GEN_TWOVEC_TEST(ushr_d_d_64, "ushr d5, d28, #64", 5, 28) 2665 2666GEN_TWOVEC_TEST(ssra_d_d_1, "ssra d5, d28, #1", 5, 28) 2667GEN_TWOVEC_TEST(ssra_d_d_32, "ssra d5, d28, #32", 5, 28) 2668GEN_TWOVEC_TEST(ssra_d_d_64, "ssra d5, d28, #64", 5, 28) 2669 2670GEN_TWOVEC_TEST(usra_d_d_1, "usra d5, d28, #1", 5, 28) 2671GEN_TWOVEC_TEST(usra_d_d_32, "usra d5, d28, #32", 5, 28) 2672GEN_TWOVEC_TEST(usra_d_d_64, "usra d5, d28, #64", 5, 28) 2673 2674GEN_TWOVEC_TEST(ssra_2d_2d_1, "ssra v6.2d, v27.2d, #1", 6, 27) 2675GEN_TWOVEC_TEST(ssra_2d_2d_32, "ssra v6.2d, v27.2d, #32", 6, 27) 2676GEN_TWOVEC_TEST(ssra_2d_2d_64, "ssra v6.2d, v27.2d, #64", 6, 27) 2677GEN_TWOVEC_TEST(ssra_4s_4s_1, "ssra v6.4s, v27.4s, #1", 6, 27) 2678GEN_TWOVEC_TEST(ssra_4s_4s_16, "ssra v6.4s, v27.4s, #16", 6, 27) 2679GEN_TWOVEC_TEST(ssra_4s_4s_32, "ssra v6.4s, v27.4s, #32", 6, 27) 2680GEN_TWOVEC_TEST(ssra_2s_2s_1, "ssra v6.2s, v27.2s, #1", 6, 27) 2681GEN_TWOVEC_TEST(ssra_2s_2s_16, "ssra v6.2s, v27.2s, #16", 6, 27) 2682GEN_TWOVEC_TEST(ssra_2s_2s_32, "ssra v6.2s, v27.2s, #32", 6, 27) 2683GEN_TWOVEC_TEST(ssra_8h_8h_1, "ssra v6.8h, v27.8h, #1", 6, 27) 2684GEN_TWOVEC_TEST(ssra_8h_8h_8, "ssra v6.8h, v27.8h, #8", 6, 27) 2685GEN_TWOVEC_TEST(ssra_8h_8h_16, "ssra v6.8h, v27.8h, #16", 6, 27) 2686GEN_TWOVEC_TEST(ssra_4h_4h_1, "ssra v6.4h, v27.4h, #1", 6, 27) 2687GEN_TWOVEC_TEST(ssra_4h_4h_8, "ssra v6.4h, v27.4h, #8", 6, 27) 2688GEN_TWOVEC_TEST(ssra_4h_4h_16, "ssra v6.4h, v27.4h, #16", 6, 27) 2689GEN_TWOVEC_TEST(ssra_16b_16b_1, "ssra v6.16b, v27.16b, #1", 6, 27) 2690GEN_TWOVEC_TEST(ssra_16b_16b_3, "ssra v6.16b, v27.16b, #3", 6, 27) 2691GEN_TWOVEC_TEST(ssra_16b_16b_8, "ssra v6.16b, v27.16b, #8", 6, 27) 2692GEN_TWOVEC_TEST(ssra_8b_8b_1, "ssra v6.8b, v27.8b, #1", 6, 27) 2693GEN_TWOVEC_TEST(ssra_8b_8b_3, "ssra v6.8b, v27.8b, #3", 6, 27) 2694GEN_TWOVEC_TEST(ssra_8b_8b_8, "ssra v6.8b, v27.8b, #8", 6, 27) 2695 2696GEN_TWOVEC_TEST(usra_2d_2d_1, "usra v6.2d, v27.2d, #1", 6, 27) 2697GEN_TWOVEC_TEST(usra_2d_2d_32, "usra v6.2d, v27.2d, #32", 6, 27) 2698GEN_TWOVEC_TEST(usra_2d_2d_64, "usra v6.2d, v27.2d, #64", 6, 27) 2699GEN_TWOVEC_TEST(usra_4s_4s_1, "usra v6.4s, v27.4s, #1", 6, 27) 2700GEN_TWOVEC_TEST(usra_4s_4s_16, "usra v6.4s, v27.4s, #16", 6, 27) 2701GEN_TWOVEC_TEST(usra_4s_4s_32, "usra v6.4s, v27.4s, #32", 6, 27) 2702GEN_TWOVEC_TEST(usra_2s_2s_1, "usra v6.2s, v27.2s, #1", 6, 27) 2703GEN_TWOVEC_TEST(usra_2s_2s_16, "usra v6.2s, v27.2s, #16", 6, 27) 2704GEN_TWOVEC_TEST(usra_2s_2s_32, "usra v6.2s, v27.2s, #32", 6, 27) 2705GEN_TWOVEC_TEST(usra_8h_8h_1, "usra v6.8h, v27.8h, #1", 6, 27) 2706GEN_TWOVEC_TEST(usra_8h_8h_8, "usra v6.8h, v27.8h, #8", 6, 27) 2707GEN_TWOVEC_TEST(usra_8h_8h_16, "usra v6.8h, v27.8h, #16", 6, 27) 2708GEN_TWOVEC_TEST(usra_4h_4h_1, "usra v6.4h, v27.4h, #1", 6, 27) 2709GEN_TWOVEC_TEST(usra_4h_4h_8, "usra v6.4h, v27.4h, #8", 6, 27) 2710GEN_TWOVEC_TEST(usra_4h_4h_16, "usra v6.4h, v27.4h, #16", 6, 27) 2711GEN_TWOVEC_TEST(usra_16b_16b_1, "usra v6.16b, v27.16b, #1", 6, 27) 2712GEN_TWOVEC_TEST(usra_16b_16b_3, "usra v6.16b, v27.16b, #3", 6, 27) 2713GEN_TWOVEC_TEST(usra_16b_16b_8, "usra v6.16b, v27.16b, #8", 6, 27) 2714GEN_TWOVEC_TEST(usra_8b_8b_1, "usra v6.8b, v27.8b, #1", 6, 27) 2715GEN_TWOVEC_TEST(usra_8b_8b_3, "usra v6.8b, v27.8b, #3", 6, 27) 2716GEN_TWOVEC_TEST(usra_8b_8b_8, "usra v6.8b, v27.8b, #8", 6, 27) 2717 2718GEN_THREEVEC_TEST(srshl_d_d_d, "srshl d29, d28, d27", 29, 28, 27) 2719GEN_THREEVEC_TEST(urshl_d_d_d, "urshl d29, d28, d27", 29, 28, 27) 2720 2721GEN_THREEVEC_TEST(srshl_2d_2d_2d, "srshl v29.2d, v28.2d, v27.2d", 29,28,27) 2722GEN_THREEVEC_TEST(srshl_4s_4s_4s, "srshl v29.4s, v28.4s, v27.4s", 29,28,27) 2723GEN_THREEVEC_TEST(srshl_2s_2s_2s, "srshl v29.2s, v28.2s, v27.2s", 29,28,27) 2724GEN_THREEVEC_TEST(srshl_8h_8h_8h, "srshl v29.8h, v28.8h, v27.8h", 29,28,27) 2725GEN_THREEVEC_TEST(srshl_4h_4h_4h, "srshl v29.4h, v28.4h, v27.4h", 29,28,27) 2726GEN_THREEVEC_TEST(srshl_16b_16b_16b,"srshl v29.16b, v28.16b, v27.16b", 29,28,27) 2727GEN_THREEVEC_TEST(srshl_8b_8b_8b, "srshl v29.8b, v28.8b, v27.8b", 29,28,27) 2728 2729GEN_THREEVEC_TEST(urshl_2d_2d_2d, "urshl v29.2d, v28.2d, v27.2d", 29,28,27) 2730GEN_THREEVEC_TEST(urshl_4s_4s_4s, "urshl v29.4s, v28.4s, v27.4s", 29,28,27) 2731GEN_THREEVEC_TEST(urshl_2s_2s_2s, "urshl v29.2s, v28.2s, v27.2s", 29,28,27) 2732GEN_THREEVEC_TEST(urshl_8h_8h_8h, "urshl v29.8h, v28.8h, v27.8h", 29,28,27) 2733GEN_THREEVEC_TEST(urshl_4h_4h_4h, "urshl v29.4h, v28.4h, v27.4h", 29,28,27) 2734GEN_THREEVEC_TEST(urshl_16b_16b_16b,"urshl v29.16b, v28.16b, v27.16b", 29,28,27) 2735GEN_THREEVEC_TEST(urshl_8b_8b_8b, "urshl v29.8b, v28.8b, v27.8b", 29,28,27) 2736 2737GEN_TWOVEC_TEST(srshr_d_d_1, "srshr d5, d28, #1", 5, 28) 2738GEN_TWOVEC_TEST(srshr_d_d_32, "srshr d5, d28, #32", 5, 28) 2739GEN_TWOVEC_TEST(srshr_d_d_64, "srshr d5, d28, #64", 5, 28) 2740 2741GEN_TWOVEC_TEST(urshr_d_d_1, "urshr d5, d28, #1", 5, 28) 2742GEN_TWOVEC_TEST(urshr_d_d_32, "urshr d5, d28, #32", 5, 28) 2743GEN_TWOVEC_TEST(urshr_d_d_64, "urshr d5, d28, #64", 5, 28) 2744 2745GEN_TWOVEC_TEST(srshr_2d_2d_1, "srshr v6.2d, v27.2d, #1", 6, 27) 2746GEN_TWOVEC_TEST(srshr_2d_2d_32, "srshr v6.2d, v27.2d, #32", 6, 27) 2747GEN_TWOVEC_TEST(srshr_2d_2d_64, "srshr v6.2d, v27.2d, #64", 6, 27) 2748GEN_TWOVEC_TEST(srshr_4s_4s_1, "srshr v6.4s, v27.4s, #1", 6, 27) 2749GEN_TWOVEC_TEST(srshr_4s_4s_16, "srshr v6.4s, v27.4s, #16", 6, 27) 2750GEN_TWOVEC_TEST(srshr_4s_4s_32, "srshr v6.4s, v27.4s, #32", 6, 27) 2751GEN_TWOVEC_TEST(srshr_2s_2s_1, "srshr v6.2s, v27.2s, #1", 6, 27) 2752GEN_TWOVEC_TEST(srshr_2s_2s_16, "srshr v6.2s, v27.2s, #16", 6, 27) 2753GEN_TWOVEC_TEST(srshr_2s_2s_32, "srshr v6.2s, v27.2s, #32", 6, 27) 2754GEN_TWOVEC_TEST(srshr_8h_8h_1, "srshr v6.8h, v27.8h, #1", 6, 27) 2755GEN_TWOVEC_TEST(srshr_8h_8h_8, "srshr v6.8h, v27.8h, #8", 6, 27) 2756GEN_TWOVEC_TEST(srshr_8h_8h_16, "srshr v6.8h, v27.8h, #16", 6, 27) 2757GEN_TWOVEC_TEST(srshr_4h_4h_1, "srshr v6.4h, v27.4h, #1", 6, 27) 2758GEN_TWOVEC_TEST(srshr_4h_4h_8, "srshr v6.4h, v27.4h, #8", 6, 27) 2759GEN_TWOVEC_TEST(srshr_4h_4h_16, "srshr v6.4h, v27.4h, #16", 6, 27) 2760GEN_TWOVEC_TEST(srshr_16b_16b_1, "srshr v6.16b, v27.16b, #1", 6, 27) 2761GEN_TWOVEC_TEST(srshr_16b_16b_3, "srshr v6.16b, v27.16b, #3", 6, 27) 2762GEN_TWOVEC_TEST(srshr_16b_16b_8, "srshr v6.16b, v27.16b, #8", 6, 27) 2763GEN_TWOVEC_TEST(srshr_8b_8b_1, "srshr v6.8b, v27.8b, #1", 6, 27) 2764GEN_TWOVEC_TEST(srshr_8b_8b_3, "srshr v6.8b, v27.8b, #3", 6, 27) 2765GEN_TWOVEC_TEST(srshr_8b_8b_8, "srshr v6.8b, v27.8b, #8", 6, 27) 2766 2767GEN_TWOVEC_TEST(urshr_2d_2d_1, "urshr v6.2d, v27.2d, #1", 6, 27) 2768GEN_TWOVEC_TEST(urshr_2d_2d_32, "urshr v6.2d, v27.2d, #32", 6, 27) 2769GEN_TWOVEC_TEST(urshr_2d_2d_64, "urshr v6.2d, v27.2d, #64", 6, 27) 2770GEN_TWOVEC_TEST(urshr_4s_4s_1, "urshr v6.4s, v27.4s, #1", 6, 27) 2771GEN_TWOVEC_TEST(urshr_4s_4s_16, "urshr v6.4s, v27.4s, #16", 6, 27) 2772GEN_TWOVEC_TEST(urshr_4s_4s_32, "urshr v6.4s, v27.4s, #32", 6, 27) 2773GEN_TWOVEC_TEST(urshr_2s_2s_1, "urshr v6.2s, v27.2s, #1", 6, 27) 2774GEN_TWOVEC_TEST(urshr_2s_2s_16, "urshr v6.2s, v27.2s, #16", 6, 27) 2775GEN_TWOVEC_TEST(urshr_2s_2s_32, "urshr v6.2s, v27.2s, #32", 6, 27) 2776GEN_TWOVEC_TEST(urshr_8h_8h_1, "urshr v6.8h, v27.8h, #1", 6, 27) 2777GEN_TWOVEC_TEST(urshr_8h_8h_8, "urshr v6.8h, v27.8h, #8", 6, 27) 2778GEN_TWOVEC_TEST(urshr_8h_8h_16, "urshr v6.8h, v27.8h, #16", 6, 27) 2779GEN_TWOVEC_TEST(urshr_4h_4h_1, "urshr v6.4h, v27.4h, #1", 6, 27) 2780GEN_TWOVEC_TEST(urshr_4h_4h_8, "urshr v6.4h, v27.4h, #8", 6, 27) 2781GEN_TWOVEC_TEST(urshr_4h_4h_16, "urshr v6.4h, v27.4h, #16", 6, 27) 2782GEN_TWOVEC_TEST(urshr_16b_16b_1, "urshr v6.16b, v27.16b, #1", 6, 27) 2783GEN_TWOVEC_TEST(urshr_16b_16b_3, "urshr v6.16b, v27.16b, #3", 6, 27) 2784GEN_TWOVEC_TEST(urshr_16b_16b_8, "urshr v6.16b, v27.16b, #8", 6, 27) 2785GEN_TWOVEC_TEST(urshr_8b_8b_1, "urshr v6.8b, v27.8b, #1", 6, 27) 2786GEN_TWOVEC_TEST(urshr_8b_8b_3, "urshr v6.8b, v27.8b, #3", 6, 27) 2787GEN_TWOVEC_TEST(urshr_8b_8b_8, "urshr v6.8b, v27.8b, #8", 6, 27) 2788 2789GEN_TWOVEC_TEST(srsra_d_d_1, "srsra d5, d28, #1", 5, 28) 2790GEN_TWOVEC_TEST(srsra_d_d_32, "srsra d5, d28, #32", 5, 28) 2791GEN_TWOVEC_TEST(srsra_d_d_64, "srsra d5, d28, #64", 5, 28) 2792 2793GEN_TWOVEC_TEST(ursra_d_d_1, "ursra d5, d28, #1", 5, 28) 2794GEN_TWOVEC_TEST(ursra_d_d_32, "ursra d5, d28, #32", 5, 28) 2795GEN_TWOVEC_TEST(ursra_d_d_64, "ursra d5, d28, #64", 5, 28) 2796 2797GEN_TWOVEC_TEST(srsra_2d_2d_1, "srsra v6.2d, v27.2d, #1", 6, 27) 2798GEN_TWOVEC_TEST(srsra_2d_2d_32, "srsra v6.2d, v27.2d, #32", 6, 27) 2799GEN_TWOVEC_TEST(srsra_2d_2d_64, "srsra v6.2d, v27.2d, #64", 6, 27) 2800GEN_TWOVEC_TEST(srsra_4s_4s_1, "srsra v6.4s, v27.4s, #1", 6, 27) 2801GEN_TWOVEC_TEST(srsra_4s_4s_16, "srsra v6.4s, v27.4s, #16", 6, 27) 2802GEN_TWOVEC_TEST(srsra_4s_4s_32, "srsra v6.4s, v27.4s, #32", 6, 27) 2803GEN_TWOVEC_TEST(srsra_2s_2s_1, "srsra v6.2s, v27.2s, #1", 6, 27) 2804GEN_TWOVEC_TEST(srsra_2s_2s_16, "srsra v6.2s, v27.2s, #16", 6, 27) 2805GEN_TWOVEC_TEST(srsra_2s_2s_32, "srsra v6.2s, v27.2s, #32", 6, 27) 2806GEN_TWOVEC_TEST(srsra_8h_8h_1, "srsra v6.8h, v27.8h, #1", 6, 27) 2807GEN_TWOVEC_TEST(srsra_8h_8h_8, "srsra v6.8h, v27.8h, #8", 6, 27) 2808GEN_TWOVEC_TEST(srsra_8h_8h_16, "srsra v6.8h, v27.8h, #16", 6, 27) 2809GEN_TWOVEC_TEST(srsra_4h_4h_1, "srsra v6.4h, v27.4h, #1", 6, 27) 2810GEN_TWOVEC_TEST(srsra_4h_4h_8, "srsra v6.4h, v27.4h, #8", 6, 27) 2811GEN_TWOVEC_TEST(srsra_4h_4h_16, "srsra v6.4h, v27.4h, #16", 6, 27) 2812GEN_TWOVEC_TEST(srsra_16b_16b_1, "srsra v6.16b, v27.16b, #1", 6, 27) 2813GEN_TWOVEC_TEST(srsra_16b_16b_3, "srsra v6.16b, v27.16b, #3", 6, 27) 2814GEN_TWOVEC_TEST(srsra_16b_16b_8, "srsra v6.16b, v27.16b, #8", 6, 27) 2815GEN_TWOVEC_TEST(srsra_8b_8b_1, "srsra v6.8b, v27.8b, #1", 6, 27) 2816GEN_TWOVEC_TEST(srsra_8b_8b_3, "srsra v6.8b, v27.8b, #3", 6, 27) 2817GEN_TWOVEC_TEST(srsra_8b_8b_8, "srsra v6.8b, v27.8b, #8", 6, 27) 2818 2819GEN_TWOVEC_TEST(ursra_2d_2d_1, "ursra v6.2d, v27.2d, #1", 6, 27) 2820GEN_TWOVEC_TEST(ursra_2d_2d_32, "ursra v6.2d, v27.2d, #32", 6, 27) 2821GEN_TWOVEC_TEST(ursra_2d_2d_64, "ursra v6.2d, v27.2d, #64", 6, 27) 2822GEN_TWOVEC_TEST(ursra_4s_4s_1, "ursra v6.4s, v27.4s, #1", 6, 27) 2823GEN_TWOVEC_TEST(ursra_4s_4s_16, "ursra v6.4s, v27.4s, #16", 6, 27) 2824GEN_TWOVEC_TEST(ursra_4s_4s_32, "ursra v6.4s, v27.4s, #32", 6, 27) 2825GEN_TWOVEC_TEST(ursra_2s_2s_1, "ursra v6.2s, v27.2s, #1", 6, 27) 2826GEN_TWOVEC_TEST(ursra_2s_2s_16, "ursra v6.2s, v27.2s, #16", 6, 27) 2827GEN_TWOVEC_TEST(ursra_2s_2s_32, "ursra v6.2s, v27.2s, #32", 6, 27) 2828GEN_TWOVEC_TEST(ursra_8h_8h_1, "ursra v6.8h, v27.8h, #1", 6, 27) 2829GEN_TWOVEC_TEST(ursra_8h_8h_8, "ursra v6.8h, v27.8h, #8", 6, 27) 2830GEN_TWOVEC_TEST(ursra_8h_8h_16, "ursra v6.8h, v27.8h, #16", 6, 27) 2831GEN_TWOVEC_TEST(ursra_4h_4h_1, "ursra v6.4h, v27.4h, #1", 6, 27) 2832GEN_TWOVEC_TEST(ursra_4h_4h_8, "ursra v6.4h, v27.4h, #8", 6, 27) 2833GEN_TWOVEC_TEST(ursra_4h_4h_16, "ursra v6.4h, v27.4h, #16", 6, 27) 2834GEN_TWOVEC_TEST(ursra_16b_16b_1, "ursra v6.16b, v27.16b, #1", 6, 27) 2835GEN_TWOVEC_TEST(ursra_16b_16b_3, "ursra v6.16b, v27.16b, #3", 6, 27) 2836GEN_TWOVEC_TEST(ursra_16b_16b_8, "ursra v6.16b, v27.16b, #8", 6, 27) 2837GEN_TWOVEC_TEST(ursra_8b_8b_1, "ursra v6.8b, v27.8b, #1", 6, 27) 2838GEN_TWOVEC_TEST(ursra_8b_8b_3, "ursra v6.8b, v27.8b, #3", 6, 27) 2839GEN_TWOVEC_TEST(ursra_8b_8b_8, "ursra v6.8b, v27.8b, #8", 6, 27) 2840 2841GEN_TWOVEC_TEST(suqadd_d_d, "suqadd d22, d23", 22, 23) 2842GEN_TWOVEC_TEST(suqadd_s_s, "suqadd s22, s23", 22, 23) 2843GEN_TWOVEC_TEST(suqadd_h_h, "suqadd h22, h23", 22, 23) 2844GEN_TWOVEC_TEST(suqadd_b_b, "suqadd b22, b23", 22, 23) 2845 2846GEN_TWOVEC_TEST(suqadd_2d_2d, "suqadd v6.2d, v27.2d", 6, 27) 2847GEN_TWOVEC_TEST(suqadd_4s_4s, "suqadd v6.4s, v27.4s", 6, 27) 2848GEN_TWOVEC_TEST(suqadd_2s_2s, "suqadd v6.2s, v27.2s", 6, 27) 2849GEN_TWOVEC_TEST(suqadd_8h_8h, "suqadd v6.8h, v27.8h", 6, 27) 2850GEN_TWOVEC_TEST(suqadd_4h_4h, "suqadd v6.4h, v27.4h", 6, 27) 2851GEN_TWOVEC_TEST(suqadd_16b_16b, "suqadd v6.16b, v27.16b", 6, 27) 2852GEN_TWOVEC_TEST(suqadd_8b_8b, "suqadd v6.8b, v27.8b", 6, 27) 2853 2854GEN_TWOVEC_TEST(usqadd_d_d, "usqadd d22, d23", 22, 23) 2855GEN_TWOVEC_TEST(usqadd_s_s, "usqadd s22, s23", 22, 23) 2856GEN_TWOVEC_TEST(usqadd_h_h, "usqadd h22, h23", 22, 23) 2857GEN_TWOVEC_TEST(usqadd_b_b, "usqadd b22, b23", 22, 23) 2858 2859GEN_TWOVEC_TEST(usqadd_2d_2d, "usqadd v6.2d, v27.2d", 6, 27) 2860GEN_TWOVEC_TEST(usqadd_4s_4s, "usqadd v6.4s, v27.4s", 6, 27) 2861GEN_TWOVEC_TEST(usqadd_2s_2s, "usqadd v6.2s, v27.2s", 6, 27) 2862GEN_TWOVEC_TEST(usqadd_8h_8h, "usqadd v6.8h, v27.8h", 6, 27) 2863GEN_TWOVEC_TEST(usqadd_4h_4h, "usqadd v6.4h, v27.4h", 6, 27) 2864GEN_TWOVEC_TEST(usqadd_16b_16b, "usqadd v6.16b, v27.16b", 6, 27) 2865GEN_TWOVEC_TEST(usqadd_8b_8b, "usqadd v6.8b, v27.8b", 6, 27) 2866 2867GEN_THREEVEC_TEST(trn1_2d_2d_2d, "trn1 v1.2d, v2.2d, v4.2d", 1, 2, 4) 2868GEN_THREEVEC_TEST(trn1_4s_4s_4s, "trn1 v1.4s, v2.4s, v4.4s", 1, 2, 4) 2869GEN_THREEVEC_TEST(trn1_2s_2s_2s, "trn1 v1.2s, v2.2s, v4.2s", 1, 2, 4) 2870GEN_THREEVEC_TEST(trn1_8h_8h_8h, "trn1 v1.8h, v2.8h, v4.8h", 1, 2, 4) 2871GEN_THREEVEC_TEST(trn1_4h_4h_4h, "trn1 v1.4h, v2.4h, v4.4h", 1, 2, 4) 2872GEN_THREEVEC_TEST(trn1_16b_16b_16b, "trn1 v1.16b, v2.16b, v4.16b", 1, 2, 4) 2873GEN_THREEVEC_TEST(trn1_8b_8b_8b, "trn1 v1.8b, v2.8b, v4.8b", 1, 2, 4) 2874 2875GEN_THREEVEC_TEST(trn2_2d_2d_2d, "trn2 v1.2d, v2.2d, v4.2d", 1, 2, 4) 2876GEN_THREEVEC_TEST(trn2_4s_4s_4s, "trn2 v1.4s, v2.4s, v4.4s", 1, 2, 4) 2877GEN_THREEVEC_TEST(trn2_2s_2s_2s, "trn2 v1.2s, v2.2s, v4.2s", 1, 2, 4) 2878GEN_THREEVEC_TEST(trn2_8h_8h_8h, "trn2 v1.8h, v2.8h, v4.8h", 1, 2, 4) 2879GEN_THREEVEC_TEST(trn2_4h_4h_4h, "trn2 v1.4h, v2.4h, v4.4h", 1, 2, 4) 2880GEN_THREEVEC_TEST(trn2_16b_16b_16b, "trn2 v1.16b, v2.16b, v4.16b", 1, 2, 4) 2881GEN_THREEVEC_TEST(trn2_8b_8b_8b, "trn2 v1.8b, v2.8b, v4.8b", 1, 2, 4) 2882 2883GEN_THREEVEC_TEST(uzp1_2d_2d_2d, "uzp1 v1.2d, v2.2d, v4.2d", 1, 2, 4) 2884GEN_THREEVEC_TEST(uzp1_4s_4s_4s, "uzp1 v1.4s, v2.4s, v4.4s", 1, 2, 4) 2885GEN_THREEVEC_TEST(uzp1_2s_2s_2s, "uzp1 v1.2s, v2.2s, v4.2s", 1, 2, 4) 2886GEN_THREEVEC_TEST(uzp1_8h_8h_8h, "uzp1 v1.8h, v2.8h, v4.8h", 1, 2, 4) 2887GEN_THREEVEC_TEST(uzp1_4h_4h_4h, "uzp1 v1.4h, v2.4h, v4.4h", 1, 2, 4) 2888GEN_THREEVEC_TEST(uzp1_16b_16b_16b, "uzp1 v1.16b, v2.16b, v4.16b", 1, 2, 4) 2889GEN_THREEVEC_TEST(uzp1_8b_8b_8b, "uzp1 v1.8b, v2.8b, v4.8b", 1, 2, 4) 2890 2891GEN_THREEVEC_TEST(uzp2_2d_2d_2d, "uzp2 v1.2d, v2.2d, v4.2d", 1, 2, 4) 2892GEN_THREEVEC_TEST(uzp2_4s_4s_4s, "uzp2 v1.4s, v2.4s, v4.4s", 1, 2, 4) 2893GEN_THREEVEC_TEST(uzp2_2s_2s_2s, "uzp2 v1.2s, v2.2s, v4.2s", 1, 2, 4) 2894GEN_THREEVEC_TEST(uzp2_8h_8h_8h, "uzp2 v1.8h, v2.8h, v4.8h", 1, 2, 4) 2895GEN_THREEVEC_TEST(uzp2_4h_4h_4h, "uzp2 v1.4h, v2.4h, v4.4h", 1, 2, 4) 2896GEN_THREEVEC_TEST(uzp2_16b_16b_16b, "uzp2 v1.16b, v2.16b, v4.16b", 1, 2, 4) 2897GEN_THREEVEC_TEST(uzp2_8b_8b_8b, "uzp2 v1.8b, v2.8b, v4.8b", 1, 2, 4) 2898 2899GEN_THREEVEC_TEST(zip1_2d_2d_2d, "zip1 v1.2d, v2.2d, v4.2d", 1, 2, 4) 2900GEN_THREEVEC_TEST(zip1_4s_4s_4s, "zip1 v1.4s, v2.4s, v4.4s", 1, 2, 4) 2901GEN_THREEVEC_TEST(zip1_2s_2s_2s, "zip1 v1.2s, v2.2s, v4.2s", 1, 2, 4) 2902GEN_THREEVEC_TEST(zip1_8h_8h_8h, "zip1 v1.8h, v2.8h, v4.8h", 1, 2, 4) 2903GEN_THREEVEC_TEST(zip1_4h_4h_4h, "zip1 v1.4h, v2.4h, v4.4h", 1, 2, 4) 2904GEN_THREEVEC_TEST(zip1_16b_16b_16b, "zip1 v1.16b, v2.16b, v4.16b", 1, 2, 4) 2905GEN_THREEVEC_TEST(zip1_8b_8b_8b, "zip1 v1.8b, v2.8b, v4.8b", 1, 2, 4) 2906 2907GEN_THREEVEC_TEST(zip2_2d_2d_2d, "zip2 v1.2d, v2.2d, v4.2d", 1, 2, 4) 2908GEN_THREEVEC_TEST(zip2_4s_4s_4s, "zip2 v1.4s, v2.4s, v4.4s", 1, 2, 4) 2909GEN_THREEVEC_TEST(zip2_2s_2s_2s, "zip2 v1.2s, v2.2s, v4.2s", 1, 2, 4) 2910GEN_THREEVEC_TEST(zip2_8h_8h_8h, "zip2 v1.8h, v2.8h, v4.8h", 1, 2, 4) 2911GEN_THREEVEC_TEST(zip2_4h_4h_4h, "zip2 v1.4h, v2.4h, v4.4h", 1, 2, 4) 2912GEN_THREEVEC_TEST(zip2_16b_16b_16b, "zip2 v1.16b, v2.16b, v4.16b", 1, 2, 4) 2913GEN_THREEVEC_TEST(zip2_8b_8b_8b, "zip2 v1.8b, v2.8b, v4.8b", 1, 2, 4) 2914 2915GEN_TWOVEC_TEST(urecpe_4s_4s, "urecpe v6.4s, v27.4s", 6, 27) 2916GEN_TWOVEC_TEST(urecpe_2s_2s, "urecpe v6.2s, v27.2s", 6, 27) 2917 2918GEN_TWOVEC_TEST(ursqrte_4s_4s, "ursqrte v6.4s, v27.4s", 6, 27) 2919GEN_TWOVEC_TEST(ursqrte_2s_2s, "ursqrte v6.2s, v27.2s", 6, 27) 2920 2921 2922/* ---------------------------------------------------------------- */ 2923/* -- main() -- */ 2924/* ---------------------------------------------------------------- */ 2925 2926int main ( void ) 2927{ 2928 assert(sizeof(V128) == 16); 2929 2930 // ======================== FP ======================== 2931 2932 // fabs d,s 2933 // fabs 2d,4s,2s 2934 if (1) test_fabs_d_d(TyDF); 2935 if (1) test_fabs_s_s(TySF); 2936 if (1) test_fabs_2d_2d(TyDF); 2937 if (1) test_fabs_4s_4s(TySF); 2938 if (1) test_fabs_2s_2s(TyDF); 2939 if (1) test_fneg_2d_2d(TySF); 2940 if (1) test_fneg_4s_4s(TyDF); 2941 if (1) test_fneg_2s_2s(TySF); 2942 2943 // fneg d,s 2944 // fneg 2d,4s,2s 2945 if (1) test_fneg_d_d(TyDF); 2946 if (1) test_fneg_s_s(TySF); 2947 2948 // fsqrt d,s 2949 // fsqrt 2d,4s,2s 2950 if (1) test_fsqrt_d_d(TyDF); 2951 if (1) test_fsqrt_s_s(TySF); 2952 2953 // fadd d,s 2954 // fsub d,s 2955 if (1) test_fadd_d_d_d(TyDF); 2956 if (1) test_fadd_s_s_s(TySF); 2957 if (1) test_fsub_d_d_d(TyDF); 2958 if (1) test_fsub_s_s_s(TySF); 2959 2960 // fadd 2d,4s,2s 2961 // fsub 2d,4s,2s 2962 if (1) test_fadd_2d_2d_2d(TyDF); 2963 if (1) test_fadd_4s_4s_4s(TySF); 2964 if (1) test_fadd_2s_2s_2s(TySF); 2965 if (1) test_fsub_2d_2d_2d(TyDF); 2966 if (1) test_fsub_4s_4s_4s(TySF); 2967 if (1) test_fsub_2s_2s_2s(TySF); 2968 2969 // fabd d,s 2970 // fabd 2d,4s,2s 2971 if (1) test_fabd_d_d_d(TyDF); 2972 if (1) test_fabd_s_s_s(TySF); 2973 if (1) test_fabd_2d_2d_2d(TyDF); 2974 if (1) test_fabd_4s_4s_4s(TySF); 2975 if (1) test_fabd_2s_2s_2s(TySF); 2976 2977 // faddp d,s (floating add pair) 2978 // faddp 2d,4s,2s 2979 2980 // fccmp d,s (floating point conditional quiet compare) 2981 // fccmpe d,s (floating point conditional signaling compare) 2982 2983 // fcmeq d,s 2984 // fcmge d,s 2985 // fcmgt d,s 2986 // facgt d,s (floating abs compare GE) 2987 // facge d,s (floating abs compare GE) 2988 2989 // fcmeq 2d,4s,2s 2990 // fcmge 2d,4s,2s 2991 // fcmgt 2d,4s,2s 2992 // facge 2d,4s,2s 2993 // facgt 2d,4s,2s 2994 if (1) test_fcmeq_2d_2d_2d(TyDF); 2995 if (1) test_fcmeq_4s_4s_4s(TySF); 2996 if (1) test_fcmeq_2s_2s_2s(TySF); 2997 if (1) test_fcmge_2d_2d_2d(TyDF); 2998 if (1) test_fcmge_4s_4s_4s(TySF); 2999 if (1) test_fcmge_2s_2s_2s(TySF); 3000 if (1) test_fcmgt_2d_2d_2d(TyDF); 3001 if (1) test_fcmgt_4s_4s_4s(TySF); 3002 if (1) test_fcmgt_2s_2s_2s(TySF); 3003 if (1) test_facge_2d_2d_2d(TyDF); 3004 if (1) test_facge_4s_4s_4s(TySF); 3005 if (1) test_facge_2s_2s_2s(TySF); 3006 if (1) test_facgt_2d_2d_2d(TyDF); 3007 if (1) test_facgt_4s_4s_4s(TySF); 3008 if (1) test_facgt_2s_2s_2s(TySF); 3009 3010 // fcmeq_z d,s 3011 // fcmge_z d,s 3012 // fcmgt_z d,s 3013 // fcmle_z d,s 3014 // fcmlt_z d,s 3015 3016 // fcmeq_z 2d,4s,2s 3017 // fcmge_z 2d,4s,2s 3018 // fcmgt_z 2d,4s,2s 3019 // fcmle_z 2d,4s,2s 3020 // fcmlt_z 2d,4s,2s 3021 3022 // fcmp_z d,s 3023 // fcmpe_z d,s 3024 // fcmp d,s (floating point quiet, set flags) 3025 // fcmpe d,s (floating point signaling, set flags) 3026 3027 // fcsel d,s (fp cond select) 3028 3029 // fdiv d,s 3030 // fdiv 2d,4s,2s 3031 if (1) test_fdiv_d_d_d(TyDF); 3032 if (1) test_fdiv_s_s_s(TySF); 3033 if (1) test_fdiv_2d_2d_2d(TyDF); 3034 if (1) test_fdiv_4s_4s_4s(TySF); 3035 if (1) test_fdiv_2s_2s_2s(TySF); 3036 3037 // fmadd d,s 3038 // fnmadd d,s 3039 // fmsub d,s 3040 // fnmsub d,s 3041 3042 // fnmul d,s 3043 if (1) test_fnmul_d_d_d(TyDF); 3044 if (1) test_fnmul_s_s_s(TySF); 3045 3046 // fmax d,s 3047 // fmin d,s 3048 // fmaxnm d,s ("max number") 3049 // fminnm d,s 3050 3051 // fmax 2d,4s,2s 3052 // fmin 2d,4s,2s 3053 // fmaxnm 2d,4s,2s 3054 // fminnm 2d,4s,2s 3055 3056 // fmaxnmp d_2d,s_2s ("max number pairwise") 3057 // fminnmp d_2d,s_2s 3058 3059 // fmaxnmp 2d,4s,2s 3060 // fminnmp 2d,4s,2s 3061 3062 // fmaxnmv s_4s (maxnum across vector) 3063 // fminnmv s_4s 3064 3065 // fmaxp d_2d,s_2s (max of a pair) 3066 // fminp d_2d,s_2s (max of a pair) 3067 3068 // fmaxp 2d,4s,2s (max pairwise) 3069 // fminp 2d,4s,2s 3070 3071 // fmaxv s_4s (max across vector) 3072 // fminv s_4s 3073 3074 // fmla 2d,4s,2s 3075 // fmls 2d,4s,2s 3076 if (1) test_fmla_2d_2d_2d(TyDF); 3077 if (1) test_fmla_4s_4s_4s(TySF); 3078 if (1) test_fmla_2s_2s_2s(TySF); 3079 if (1) test_fmls_2d_2d_2d(TyDF); 3080 if (1) test_fmls_4s_4s_4s(TySF); 3081 if (1) test_fmls_2s_2s_2s(TySF); 3082 3083 // fmla d_d_d[],s_s_s[] (by element) 3084 // fmls d_d_d[],s_s_s[] (by element) 3085 3086 // fmla 2d_2d_d[],4s_4s_s[],2s_2s_s[] 3087 // fmls 2d_2d_d[],4s_4s_s[],2s_2s_s[] 3088 3089 // fmov 2d,4s,2s #imm (part of the MOVI/MVNI/ORR/BIC imm group) 3090 // INCOMPLETE 3091 if (1) test_fmov_2d_imm_01(TyD); 3092 if (1) test_fmov_2d_imm_02(TyD); 3093 if (1) test_fmov_2d_imm_03(TyD); 3094 if (0) test_fmov_4s_imm_01(TyS); 3095 if (0) test_fmov_4s_imm_02(TyS); 3096 if (0) test_fmov_4s_imm_03(TyS); 3097 if (0) test_fmov_2s_imm_01(TyS); 3098 if (0) test_fmov_2s_imm_02(TyS); 3099 if (0) test_fmov_2s_imm_03(TyS); 3100 3101 // fmov d_d,s_s 3102 if (1) test_fmov_d_d(TyDF); 3103 if (1) test_fmov_s_s(TySF); 3104 3105 // fmov s_w,w_s,d_x,d[1]_x,x_d,x_d[1] 3106 if (1) test_fmov_s_w(TyS); 3107 if (1) test_fmov_d_x(TyD); 3108 if (1) test_fmov_d1_x(TyD); 3109 if (1) test_fmov_w_s(TyS); 3110 if (1) test_fmov_x_d(TyD); 3111 if (1) test_fmov_x_d1(TyD); 3112 3113 // fmov d,s #imm 3114 if (1) test_fmov_d_imm_01(TyNONE); 3115 if (1) test_fmov_d_imm_02(TyNONE); 3116 if (1) test_fmov_d_imm_03(TyNONE); 3117 if (1) test_fmov_s_imm_01(TyNONE); 3118 if (1) test_fmov_s_imm_02(TyNONE); 3119 if (1) test_fmov_s_imm_03(TyNONE); 3120 3121 // fmul d_d_d[],s_s_s[] 3122 // fmul 2d_2d_d[],4s_4s_s[],2s_2s_s[] 3123 3124 // fmul 2d,4s,2s 3125 // fmul d,s 3126 if (1) test_fmul_d_d_d(TyDF); 3127 if (1) test_fmul_s_s_s(TySF); 3128 if (1) test_fmul_2d_2d_2d(TyDF); 3129 if (1) test_fmul_4s_4s_4s(TySF); 3130 if (1) test_fmul_2s_2s_2s(TySF); 3131 3132 // fmulx d_d_d[],s_s_s[] 3133 // fmulx 2d_2d_d[],4s_4s_s[],2s_2s_s[] 3134 3135 // fmulx d,s 3136 // fmulx 2d,4s,2s 3137 3138 // frecpe d,s (recip estimate) 3139 // frecpe 2d,4s,2s 3140 3141 // frecps d,s (recip step) 3142 // frecps 2d,4s,2s 3143 3144 // frecpx d,s (recip exponent) 3145 3146 // frinta d,s 3147 // frinti d,s 3148 // frintm d,s 3149 // frintn d,s 3150 // frintp d,s 3151 // frintx d,s 3152 // frintz d,s 3153 3154 // frinta 2d,4s,2s (round to integral, nearest away) 3155 // frinti 2d,4s,2s (round to integral, per FPCR) 3156 // frintm 2d,4s,2s (round to integral, minus inf) 3157 // frintn 2d,4s,2s (round to integral, nearest, to even) 3158 // frintp 2d,4s,2s (round to integral, plus inf) 3159 // frintx 2d,4s,2s (round to integral exact, per FPCR) 3160 // frintz 2d,4s,2s (round to integral, zero) 3161 3162 // frsqrte d,s (est) 3163 // frsqrte 2d,4s,2s 3164 3165 // frsqrts d,s (step) 3166 // frsqrts 2d,4s,2s 3167 3168 // ======================== CONV ======================== 3169 3170 // fcvt s_h,d_h,h_s,d_s,h_d,s_d (fp convert, scalar) 3171 3172 // fcvtl{2} 4s/4h, 4s/8h, 2d/2s, 2d/4s (float convert to longer form) 3173 3174 // fcvtn{2} 4h/4s, 8h/4s, 2s/2d, 4s/2d (float convert to narrower form) 3175 // INCOMPLETE 3176 if (1) test_fcvtn_2s_2d(TyDF); 3177 if (1) test_fcvtn_4s_2d(TyDF); 3178 3179 // fcvtas d,s (fcvt to signed int, nearest, ties away) 3180 // fcvtau d,s (fcvt to unsigned int, nearest, ties away) 3181 // fcvtas 2d,4s,2s 3182 // fcvtau 2d,4s,2s 3183 // fcvtas w_s,x_s,w_d,x_d 3184 // fcvtau w_s,x_s,w_d,x_d 3185 3186 // fcvtms d,s (fcvt to signed int, minus inf) 3187 // fcvtmu d,s (fcvt to unsigned int, minus inf) 3188 // fcvtms 2d,4s,2s 3189 // fcvtmu 2d,4s,2s 3190 // fcvtms w_s,x_s,w_d,x_d 3191 // fcvtmu w_s,x_s,w_d,x_d 3192 3193 // fcvtns d,s (fcvt to signed int, nearest) 3194 // fcvtnu d,s (fcvt to unsigned int, nearest) 3195 // fcvtns 2d,4s,2s 3196 // fcvtnu 2d,4s,2s 3197 // fcvtns w_s,x_s,w_d,x_d 3198 // fcvtnu w_s,x_s,w_d,x_d 3199 3200 // fcvtps d,s (fcvt to signed int, plus inf) 3201 // fcvtpu d,s (fcvt to unsigned int, plus inf) 3202 // fcvtps 2d,4s,2s 3203 // fcvtpu 2d,4s,2s 3204 // fcvtps w_s,x_s,w_d,x_d 3205 // fcvtpu w_s,x_s,w_d,x_d 3206 3207 // fcvtzs d,s (fcvt to signed integer, to zero) 3208 // fcvtzu d,s (fcvt to unsigned integer, to zero) 3209 // fcvtzs 2d,4s,2s 3210 // fcvtzu 2d,4s,2s 3211 // fcvtzs w_s,x_s,w_d,x_d 3212 // fcvtzu w_s,x_s,w_d,x_d 3213 3214 // fcvtzs d,s (fcvt to signed fixedpt, to zero) (w/ #fbits) 3215 // fcvtzu d,s (fcvt to unsigned fixedpt, to zero) (w/ #fbits) 3216 // fcvtzs 2d,4s,2s 3217 // fcvtzu 2d,4s,2s 3218 // fcvtzs w_s,x_s,w_d,x_d (fcvt to signed fixedpt, to zero) (w/ #fbits) 3219 // fcvtzu w_s,x_s,w_d,x_d (fcvt to unsigned fixedpt, to zero) (w/ #fbits) 3220 3221 // fcvtxn s_d (fcvt to lower prec narrow, rounding to odd) 3222 // fcvtxn 2s_2d,4s_2d 3223 3224 // scvtf d,s _#fbits 3225 // ucvtf d,s _#fbits 3226 3227 // scvtf 2d,4s,2s _#fbits 3228 // ucvtf 2d,4s,2s _#fbits 3229 3230 // scvtf d,s 3231 // ucvtf d,s 3232 if (1) test_scvtf_s_s(TyS); 3233 if (1) test_scvtf_d_d(TyD); 3234 if (1) test_ucvtf_s_s(TyS); 3235 if (1) test_ucvtf_d_d(TyD); 3236 3237 // scvtf 2d,4s,2s 3238 // ucvtf 2d,4s,2s 3239 3240 // scvtf s_w, d_w, s_x, d_x, _#fbits 3241 // ucvtf s_w, d_w, s_x, d_x, _#fbits 3242 3243 // scvtf s_w, d_w, s_x, d_x 3244 // ucvtf s_w, d_w, s_x, d_x 3245 if (1) test_scvtf_s_w(TyS); 3246 if (1) test_scvtf_d_w(TyS); 3247 if (1) test_scvtf_s_x(TyD); 3248 if (1) test_scvtf_d_x(TyD); 3249 if (1) test_ucvtf_s_w(TyS); 3250 if (1) test_ucvtf_d_w(TyS); 3251 if (1) test_ucvtf_s_x(TyD); 3252 if (1) test_ucvtf_d_x(TyD); 3253 3254 // ======================== INT ======================== 3255 3256 // abs d 3257 // neg d 3258 if (0) test_abs_d_d(TyD); 3259 if (0) test_neg_d_d(TyD); 3260 3261 // abs 2d,4s,2s,8h,4h,16b,8b 3262 // neg 2d,4s,2s,8h,4h,16b,8b 3263 if (0) test_abs_2d_2d(TyD); 3264 if (0) test_abs_4s_4s(TyS); 3265 if (0) test_abs_2s_2s(TyS); 3266 if (0) test_abs_8h_8h(TyH); 3267 if (0) test_abs_4h_4h(TyH); 3268 if (0) test_abs_16b_16b(TyB); 3269 if (0) test_abs_8b_8b(TyB); 3270 if (1) test_neg_2d_2d(TyD); 3271 if (1) test_neg_4s_4s(TyS); 3272 if (1) test_neg_2s_2s(TyS); 3273 if (1) test_neg_8h_8h(TyH); 3274 if (1) test_neg_4h_4h(TyH); 3275 if (1) test_neg_16b_16b(TyB); 3276 if (1) test_neg_8b_8b(TyB); 3277 3278 // add d 3279 // sub d 3280 if (1) test_add_d_d_d(TyD); 3281 if (1) test_sub_d_d_d(TyD); 3282 3283 // add 2d,4s,2s,8h,4h,16b,8b 3284 // sub 2d,4s,2s,8h,4h,16b,8b 3285 if (1) test_add_2d_2d_2d(TyD); 3286 if (1) test_add_4s_4s_4s(TyS); 3287 if (1) test_add_2s_2s_2s(TyS); 3288 if (1) test_add_8h_8h_8h(TyH); 3289 if (1) test_add_4h_4h_4h(TyH); 3290 if (1) test_add_16b_16b_16b(TyB); 3291 if (1) test_add_8b_8b_8b(TyB); 3292 if (1) test_sub_2d_2d_2d(TyD); 3293 if (1) test_sub_4s_4s_4s(TyS); 3294 if (1) test_sub_2s_2s_2s(TyS); 3295 if (1) test_sub_8h_8h_8h(TyH); 3296 if (1) test_sub_4h_4h_4h(TyH); 3297 if (1) test_sub_16b_16b_16b(TyB); 3298 if (1) test_sub_8b_8b_8b(TyB); 3299 3300 // addhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 3301 // subhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 3302 // raddhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 3303 // rsubhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 3304 if (0) test_addhn_2s_2d_2d(TyD); 3305 if (0) test_addhn2_4s_2d_2d(TyD); 3306 if (0) test_addhn_4h_4s_4s(TyS); 3307 if (0) test_addhn2_8h_4s_4s(TyS); 3308 if (0) test_addhn_8b_8h_8h(TyH); 3309 if (0) test_addhn2_16b_8h_8h(TyH); 3310 if (0) test_subhn_2s_2d_2d(TyD); 3311 if (0) test_subhn2_4s_2d_2d(TyD); 3312 if (0) test_subhn_4h_4s_4s(TyS); 3313 if (0) test_subhn2_8h_4s_4s(TyS); 3314 if (0) test_subhn_8b_8h_8h(TyH); 3315 if (0) test_subhn2_16b_8h_8h(TyH); 3316 if (0) test_raddhn_2s_2d_2d(TyD); 3317 if (0) test_raddhn2_4s_2d_2d(TyD); 3318 if (0) test_raddhn_4h_4s_4s(TyS); 3319 if (0) test_raddhn2_8h_4s_4s(TyS); 3320 if (0) test_raddhn_8b_8h_8h(TyH); 3321 if (0) test_raddhn2_16b_8h_8h(TyH); 3322 if (0) test_rsubhn_2s_2d_2d(TyD); 3323 if (0) test_rsubhn2_4s_2d_2d(TyD); 3324 if (0) test_rsubhn_4h_4s_4s(TyS); 3325 if (0) test_rsubhn2_8h_4s_4s(TyS); 3326 if (0) test_rsubhn_8b_8h_8h(TyH); 3327 if (0) test_rsubhn2_16b_8h_8h(TyH); 3328 3329 // addp d (add pairs, across) 3330 if (0) test_addp_d_2d(TyD); 3331 3332 // addp 2d,4s,2s,8h,4h,16b,8b 3333 if (0) test_addp_2d_2d_2d(TyD); 3334 if (0) test_addp_4s_4s_4s(TyS); 3335 if (0) test_addp_2s_2s_2s(TyS); 3336 if (0) test_addp_8h_8h_8h(TyH); 3337 if (0) test_addp_4h_4h_4h(TyH); 3338 if (0) test_addp_16b_16b_16b(TyB); 3339 if (0) test_addp_8b_8b_8b(TyB); 3340 3341 // addv 4s,8h,4h,16b,18b (reduce across vector) 3342 if (0) test_addv_s_4s(TyS); 3343 if (0) test_addv_h_8h(TyH); 3344 if (0) test_addv_h_4h(TyH); 3345 if (0) test_addv_b_16b(TyB); 3346 if (0) test_addv_b_8b(TyB); 3347 3348 // and 16b,8b 3349 // bic 16b,8b 3350 // orn 16b,8b 3351 // orr 16b,8b 3352 if (1) test_and_16b_16b_16b(TyB); 3353 if (1) test_and_8b_8b_8b(TyB); 3354 if (1) test_bic_16b_16b_16b(TyB); 3355 if (1) test_bic_8b_8b_8b(TyB); 3356 if (1) test_orr_16b_16b_16b(TyB); 3357 if (1) test_orr_8b_8b_8b(TyB); 3358 if (1) test_orn_16b_16b_16b(TyB); 3359 if (1) test_orn_8b_8b_8b(TyB); 3360 3361 // orr 8h,4h #imm8, LSL #0 or 8 3362 // orr 4s,2s #imm8, LSL #0, 8, 16 or 24 3363 // bic 8h,4h #imm8, LSL #0 or 8 3364 // bic 4s,2s #imm8, LSL #0, 8, 16 or 24 3365 // movi and mvni are very similar, a superset of these. 3366 // Cases are below. 3367 if (0) test_orr_8h_0x5A_lsl0(TyH); 3368 if (0) test_orr_8h_0xA5_lsl8(TyH); 3369 if (0) test_orr_4h_0x5A_lsl0(TyH); 3370 if (0) test_orr_4h_0xA5_lsl8(TyH); 3371 if (0) test_orr_4s_0x5A_lsl0(TyS); 3372 if (0) test_orr_4s_0x6B_lsl8(TyS); 3373 if (0) test_orr_4s_0x49_lsl16(TyS); 3374 if (0) test_orr_4s_0x3D_lsl24(TyS); 3375 if (0) test_orr_2s_0x5A_lsl0(TyS); 3376 if (0) test_orr_2s_0x6B_lsl8(TyS); 3377 if (0) test_orr_2s_0x49_lsl16(TyS); 3378 if (0) test_orr_2s_0x3D_lsl24(TyS); 3379 if (0) test_bic_8h_0x5A_lsl0(TyH); 3380 if (0) test_bic_8h_0xA5_lsl8(TyH); 3381 if (0) test_bic_4h_0x5A_lsl0(TyH); 3382 if (0) test_bic_4h_0xA5_lsl8(TyH); 3383 if (0) test_bic_4s_0x5A_lsl0(TyS); 3384 if (0) test_bic_4s_0x6B_lsl8(TyS); 3385 if (0) test_bic_4s_0x49_lsl16(TyS); 3386 if (0) test_bic_4s_0x3D_lsl24(TyS); 3387 if (0) test_bic_2s_0x5A_lsl0(TyS); 3388 if (0) test_bic_2s_0x6B_lsl8(TyS); 3389 if (0) test_bic_2s_0x49_lsl16(TyS); 3390 if (0) test_bic_2s_0x3D_lsl24(TyS); 3391 3392 // bif 16b,8b (vector) (bit insert if false) 3393 // bit 16b,8b (vector) (bit insert if true) 3394 // bsl 16b,8b (vector) (bit select) 3395 // eor 16b,8b (vector) 3396 if (1) test_bif_16b_16b_16b(TyB); 3397 if (1) test_bif_8b_8b_8b(TyB); 3398 if (1) test_bit_16b_16b_16b(TyB); 3399 if (1) test_bit_8b_8b_8b(TyB); 3400 if (1) test_bsl_16b_16b_16b(TyB); 3401 if (1) test_bsl_8b_8b_8b(TyB); 3402 if (1) test_eor_16b_16b_16b(TyB); 3403 if (1) test_eor_8b_8b_8b(TyB); 3404 3405 // cls 4s,2s,8h,4h,16b,8b (count leading sign bits) 3406 // clz 4s,2s,8h,4h,16b,8b (count leading zero bits) 3407 if (0) test_cls_4s_4s(TyS); 3408 if (0) test_cls_2s_2s(TyS); 3409 if (0) test_cls_8h_8h(TyH); 3410 if (0) test_cls_4h_4h(TyH); 3411 if (0) test_cls_16b_16b(TyB); 3412 if (0) test_cls_8b_8b(TyB); 3413 if (0) test_clz_4s_4s(TyS); 3414 if (0) test_clz_2s_2s(TyS); 3415 if (0) test_clz_8h_8h(TyH); 3416 if (0) test_clz_4h_4h(TyH); 3417 if (0) test_clz_16b_16b(TyB); 3418 if (0) test_clz_8b_8b(TyB); 3419 3420 // cmeq d 3421 // cmge d 3422 // cmgt d 3423 // cmhi d 3424 // cmhs d 3425 // cmtst d 3426 if (0) test_cmeq_d_d_d(TyD); 3427 if (0) test_cmge_d_d_d(TyD); 3428 if (0) test_cmgt_d_d_d(TyD); 3429 if (0) test_cmhi_d_d_d(TyD); 3430 if (0) test_cmhs_d_d_d(TyD); 3431 if (0) test_cmtst_d_d_d(TyD); 3432 3433 // cmeq 2d,4s,2s,8h,4h,16b,8b 3434 // cmge 2d,4s,2s,8h,4h,16b,8b 3435 // cmgt 2d,4s,2s,8h,4h,16b,8b 3436 // cmhi 2d,4s,2s,8h,4h,16b,8b 3437 // cmhs 2d,4s,2s,8h,4h,16b,8b 3438 // cmtst 2d,4s,2s,8h,4h,16b,8b 3439 if (1) test_cmeq_2d_2d_2d(TyD); 3440 if (1) test_cmeq_4s_4s_4s(TyS); 3441 if (1) test_cmeq_2s_2s_2s(TyS); 3442 if (1) test_cmeq_8h_8h_8h(TyH); 3443 if (1) test_cmeq_4h_4h_4h(TyH); 3444 if (1) test_cmeq_16b_16b_16b(TyB); 3445 if (1) test_cmeq_8b_8b_8b(TyB); 3446 if (1) test_cmge_2d_2d_2d(TyD); 3447 if (1) test_cmge_4s_4s_4s(TyS); 3448 if (1) test_cmge_2s_2s_2s(TyS); 3449 if (1) test_cmge_8h_8h_8h(TyH); 3450 if (1) test_cmge_4h_4h_4h(TyH); 3451 if (1) test_cmge_16b_16b_16b(TyB); 3452 if (1) test_cmge_8b_8b_8b(TyB); 3453 if (1) test_cmgt_2d_2d_2d(TyD); 3454 if (1) test_cmgt_4s_4s_4s(TyS); 3455 if (1) test_cmgt_2s_2s_2s(TyS); 3456 if (1) test_cmgt_8h_8h_8h(TyH); 3457 if (1) test_cmgt_4h_4h_4h(TyH); 3458 if (1) test_cmgt_16b_16b_16b(TyB); 3459 if (1) test_cmgt_8b_8b_8b(TyB); 3460 if (1) test_cmhi_2d_2d_2d(TyD); 3461 if (1) test_cmhi_4s_4s_4s(TyS); 3462 if (1) test_cmhi_2s_2s_2s(TyS); 3463 if (1) test_cmhi_8h_8h_8h(TyH); 3464 if (1) test_cmhi_4h_4h_4h(TyH); 3465 if (1) test_cmhi_16b_16b_16b(TyB); 3466 if (1) test_cmhi_8b_8b_8b(TyB); 3467 if (1) test_cmhs_2d_2d_2d(TyD); 3468 if (1) test_cmhs_4s_4s_4s(TyS); 3469 if (1) test_cmhs_2s_2s_2s(TyS); 3470 if (1) test_cmhs_8h_8h_8h(TyH); 3471 if (1) test_cmhs_4h_4h_4h(TyH); 3472 if (1) test_cmhs_16b_16b_16b(TyB); 3473 if (1) test_cmhs_8b_8b_8b(TyB); 3474 if (1) test_cmtst_2d_2d_2d(TyD); 3475 if (1) test_cmtst_4s_4s_4s(TyS); 3476 if (1) test_cmtst_2s_2s_2s(TyS); 3477 if (1) test_cmtst_8h_8h_8h(TyH); 3478 if (1) test_cmtst_4h_4h_4h(TyH); 3479 if (1) test_cmtst_16b_16b_16b(TyB); 3480 if (1) test_cmtst_8b_8b_8b(TyB); 3481 3482 // cmeq_z d 3483 // cmge_z d 3484 // cmgt_z d 3485 // cmle_z d 3486 // cmlt_z d 3487 if (1) test_cmeq_zero_d_d(TyD); 3488 if (0) test_cmge_zero_d_d(TyD); 3489 if (0) test_cmgt_zero_d_d(TyD); 3490 if (0) test_cmle_zero_d_d(TyD); 3491 if (0) test_cmlt_zero_d_d(TyD); 3492 3493 // cmeq_z 2d,4s,2s,8h,4h,16b,8b 3494 // cmge_z 2d,4s,2s,8h,4h,16b,8b 3495 // cmgt_z 2d,4s,2s,8h,4h,16b,8b 3496 // cmle_z 2d,4s,2s,8h,4h,16b,8b 3497 // cmlt_z 2d,4s,2s,8h,4h,16b,8b 3498 if (1) test_cmeq_zero_2d_2d(TyD); 3499 if (1) test_cmeq_zero_4s_4s(TyS); 3500 if (1) test_cmeq_zero_2s_2s(TyS); 3501 if (1) test_cmeq_zero_8h_8h(TyH); 3502 if (1) test_cmeq_zero_4h_4h(TyH); 3503 if (1) test_cmeq_zero_16b_16b(TyB); 3504 if (1) test_cmeq_zero_8b_8b(TyB); 3505 if (1) test_cmge_zero_2d_2d(TyD); 3506 if (1) test_cmge_zero_4s_4s(TyS); 3507 if (1) test_cmge_zero_2s_2s(TyS); 3508 if (1) test_cmge_zero_8h_8h(TyH); 3509 if (1) test_cmge_zero_4h_4h(TyH); 3510 if (1) test_cmge_zero_16b_16b(TyB); 3511 if (1) test_cmge_zero_8b_8b(TyB); 3512 if (1) test_cmgt_zero_2d_2d(TyD); 3513 if (1) test_cmgt_zero_4s_4s(TyS); 3514 if (1) test_cmgt_zero_2s_2s(TyS); 3515 if (1) test_cmgt_zero_8h_8h(TyH); 3516 if (1) test_cmgt_zero_4h_4h(TyH); 3517 if (1) test_cmgt_zero_16b_16b(TyB); 3518 if (1) test_cmgt_zero_8b_8b(TyB); 3519 if (1) test_cmle_zero_2d_2d(TyD); 3520 if (1) test_cmle_zero_4s_4s(TyS); 3521 if (1) test_cmle_zero_2s_2s(TyS); 3522 if (1) test_cmle_zero_8h_8h(TyH); 3523 if (1) test_cmle_zero_4h_4h(TyH); 3524 if (1) test_cmle_zero_16b_16b(TyB); 3525 if (1) test_cmle_zero_8b_8b(TyB); 3526 if (1) test_cmlt_zero_2d_2d(TyD); 3527 if (1) test_cmlt_zero_4s_4s(TyS); 3528 if (1) test_cmlt_zero_2s_2s(TyS); 3529 if (1) test_cmlt_zero_8h_8h(TyH); 3530 if (1) test_cmlt_zero_4h_4h(TyH); 3531 if (1) test_cmlt_zero_16b_16b(TyB); 3532 if (1) test_cmlt_zero_8b_8b(TyB); 3533 3534 // cnt 16b,8b (population count per byte) 3535 if (0) test_cnt_16b_16b(TyB); 3536 if (0) test_cnt_8b_8b(TyB); 3537 3538 // dup d,s,h,b (vec elem to scalar) 3539 if (0) test_dup_d_d0(TyD); 3540 if (0) test_dup_d_d1(TyD); 3541 if (0) test_dup_s_s0(TyS); 3542 if (0) test_dup_s_s3(TyS); 3543 if (0) test_dup_h_h0(TyH); 3544 if (0) test_dup_h_h6(TyH); 3545 if (0) test_dup_b_b0(TyB); 3546 if (0) test_dup_b_b13(TyB); 3547 3548 // dup 2d,4s,2s,8h,4h,16b,8b (vec elem to vector) 3549 if (1) test_dup_2d_d0(TyD); 3550 if (1) test_dup_2d_d1(TyD); 3551 if (1) test_dup_4s_s0(TyS); 3552 if (1) test_dup_4s_s3(TyS); 3553 if (1) test_dup_2s_s0(TyS); 3554 if (1) test_dup_2s_s2(TyS); 3555 if (1) test_dup_8h_h0(TyH); 3556 if (1) test_dup_8h_h6(TyH); 3557 if (1) test_dup_4h_h1(TyH); 3558 if (1) test_dup_4h_h5(TyH); 3559 if (1) test_dup_16b_b2(TyB); 3560 if (1) test_dup_16b_b12(TyB); 3561 if (1) test_dup_8b_b3(TyB); 3562 if (1) test_dup_8b_b13(TyB); 3563 3564 // dup 2d,4s,2s,8h,4h,16b,8b (general reg to vector) 3565 if (1) test_dup_2d_x(TyD); 3566 if (1) test_dup_4s_w(TyS); 3567 if (1) test_dup_2s_w(TyS); 3568 if (1) test_dup_8h_w(TyH); 3569 if (1) test_dup_4h_w(TyH); 3570 if (1) test_dup_16b_w(TyB); 3571 if (1) test_dup_8b_w(TyB); 3572 3573 // ext 16b,8b,#imm4 (concat 2 vectors, then slice) 3574 if (0) test_ext_16b_16b_16b_0x0(TyB); 3575 if (0) test_ext_16b_16b_16b_0x7(TyB); 3576 if (0) test_ext_16b_16b_16b_0x8(TyB); 3577 if (0) test_ext_16b_16b_16b_0x9(TyB); 3578 if (0) test_ext_16b_16b_16b_0xF(TyB); 3579 if (0) test_ext_8b_8b_8b_0x0(TyB); 3580 if (0) test_ext_8b_8b_8b_0x1(TyB); 3581 if (0) test_ext_8b_8b_8b_0x6(TyB); 3582 if (0) test_ext_8b_8b_8b_0x7(TyB); 3583 3584 // ins d[]_d[],s[]_s[],h[]_h[],b[]_b[] 3585 if (0) test_ins_d0_d0(TyD); 3586 if (0) test_ins_d0_d1(TyD); 3587 if (0) test_ins_d1_d0(TyD); 3588 if (0) test_ins_d1_d1(TyD); 3589 if (0) test_ins_s0_s2(TyS); 3590 if (0) test_ins_s3_s0(TyS); 3591 if (0) test_ins_s2_s1(TyS); 3592 if (0) test_ins_s1_s3(TyS); 3593 if (0) test_ins_h0_h6(TyH); 3594 if (0) test_ins_h7_h0(TyH); 3595 if (0) test_ins_h6_h1(TyH); 3596 if (0) test_ins_h1_h7(TyH); 3597 if (1) test_ins_b0_b14(TyB); 3598 if (1) test_ins_b15_b8(TyB); 3599 if (1) test_ins_b13_b9(TyB); 3600 if (1) test_ins_b5_b12(TyB); 3601 3602 // ins d[]_x, s[]_w, h[]_w, b[]_w 3603 if (1) test_INS_general(); 3604 3605 // mla 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 3606 // mls 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 3607 // mul 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 3608 if (0) test_mla_4s_4s_s0(TyS); 3609 if (0) test_mla_4s_4s_s3(TyS); 3610 if (0) test_mla_2s_2s_s0(TyS); 3611 if (0) test_mla_2s_2s_s3(TyS); 3612 if (0) test_mla_8h_8h_h1(TyH); 3613 if (0) test_mla_8h_8h_h5(TyH); 3614 if (0) test_mla_4h_4h_h2(TyH); 3615 if (0) test_mla_4h_4h_h7(TyH); 3616 if (0) test_mls_4s_4s_s0(TyS); 3617 if (0) test_mls_4s_4s_s3(TyS); 3618 if (0) test_mls_2s_2s_s0(TyS); 3619 if (0) test_mls_2s_2s_s3(TyS); 3620 if (0) test_mls_8h_8h_h1(TyH); 3621 if (0) test_mls_8h_8h_h5(TyH); 3622 if (0) test_mls_4h_4h_h2(TyH); 3623 if (0) test_mls_4h_4h_h7(TyH); 3624 if (0) test_mul_4s_4s_s0(TyS); 3625 if (0) test_mul_4s_4s_s3(TyS); 3626 if (0) test_mul_2s_2s_s0(TyS); 3627 if (0) test_mul_2s_2s_s3(TyS); 3628 if (0) test_mul_8h_8h_h1(TyH); 3629 if (0) test_mul_8h_8h_h5(TyH); 3630 if (0) test_mul_4h_4h_h2(TyH); 3631 if (0) test_mul_4h_4h_h7(TyH); 3632 3633 // mla 4s,2s,8h,4h,16b,8b 3634 // mls 4s,2s,8h,4h,16b,8b 3635 // mul 4s,2s,8h,4h,16b,8b 3636 if (1) test_mla_4s_4s_4s(TyS); 3637 if (1) test_mla_2s_2s_2s(TyS); 3638 if (1) test_mla_8h_8h_8h(TyH); 3639 if (1) test_mla_4h_4h_4h(TyH); 3640 if (1) test_mla_16b_16b_16b(TyB); 3641 if (1) test_mla_8b_8b_8b(TyB); 3642 if (1) test_mls_4s_4s_4s(TyS); 3643 if (1) test_mls_2s_2s_2s(TyS); 3644 if (1) test_mls_8h_8h_8h(TyH); 3645 if (1) test_mls_4h_4h_4h(TyH); 3646 if (1) test_mls_16b_16b_16b(TyB); 3647 if (1) test_mls_8b_8b_8b(TyB); 3648 if (1) test_mul_4s_4s_4s(TyS); 3649 if (1) test_mul_2s_2s_2s(TyS); 3650 if (1) test_mul_8h_8h_8h(TyH); 3651 if (1) test_mul_4h_4h_4h(TyH); 3652 if (1) test_mul_16b_16b_16b(TyB); 3653 if (1) test_mul_8b_8b_8b(TyB); 3654 3655 // Some of these movi and mvni cases are similar to orr and bic 3656 // cases with immediates. Maybe they should be moved together. 3657 // movi 16b,8b #imm8, LSL #0 3658 if (0) test_movi_16b_0x9C_lsl0(TyB); 3659 if (0) test_movi_8b_0x8B_lsl0(TyB); 3660 3661 // movi 8h,4h #imm8, LSL #0 or 8 3662 // mvni 8h,4h #imm8, LSL #0 or 8 3663 if (0) test_movi_8h_0x5A_lsl0(TyH); 3664 if (0) test_movi_8h_0xA5_lsl8(TyH); 3665 if (0) test_movi_4h_0x5A_lsl0(TyH); 3666 if (0) test_movi_4h_0xA5_lsl8(TyH); 3667 if (0) test_mvni_8h_0x5A_lsl0(TyH); 3668 if (0) test_mvni_8h_0xA5_lsl8(TyH); 3669 if (0) test_mvni_4h_0x5A_lsl0(TyH); 3670 if (0) test_mvni_4h_0xA5_lsl8(TyH); 3671 3672 // movi 4s,2s #imm8, LSL #0, 8, 16, 24 3673 // mvni 4s,2s #imm8, LSL #0, 8, 16, 24 3674 if (1) test_movi_4s_0x5A_lsl0(TyS); 3675 if (0) test_movi_4s_0x6B_lsl8(TyS); 3676 if (0) test_movi_4s_0x49_lsl16(TyS); 3677 if (0) test_movi_4s_0x3D_lsl24(TyS); 3678 if (0) test_movi_2s_0x5A_lsl0(TyS); 3679 if (0) test_movi_2s_0x6B_lsl8(TyS); 3680 if (0) test_movi_2s_0x49_lsl16(TyS); 3681 if (0) test_movi_2s_0x3D_lsl24(TyS); 3682 if (0) test_mvni_4s_0x5A_lsl0(TyS); 3683 if (0) test_mvni_4s_0x6B_lsl8(TyS); 3684 if (0) test_mvni_4s_0x49_lsl16(TyS); 3685 if (0) test_mvni_4s_0x3D_lsl24(TyS); 3686 if (0) test_mvni_2s_0x5A_lsl0(TyS); 3687 if (0) test_mvni_2s_0x6B_lsl8(TyS); 3688 if (0) test_mvni_2s_0x49_lsl16(TyS); 3689 if (0) test_mvni_2s_0x3D_lsl24(TyS); 3690 3691 // movi 4s,2s #imm8, MSL #8 or 16 3692 // mvni 4s,2s #imm8, MSL #8 or 16 3693 if (0) test_movi_4s_0x6B_msl8(TyS); 3694 if (0) test_movi_4s_0x94_msl16(TyS); 3695 if (0) test_movi_2s_0x7A_msl8(TyS); 3696 if (0) test_movi_2s_0xA5_msl16(TyS); 3697 if (0) test_mvni_4s_0x6B_msl8(TyS); 3698 if (0) test_mvni_4s_0x94_msl16(TyS); 3699 if (0) test_mvni_2s_0x7A_msl8(TyS); 3700 if (0) test_mvni_2s_0xA5_msl16(TyS); 3701 3702 // movi d, #imm64 3703 // movi 2d, #imm64 3704 if (0) test_movi_d_0xA5(TyD); 3705 if (0) test_movi_2d_0xB4(TyD); 3706 3707 // not 16b,8b 3708 if (0) test_not_16b_16b(TyB); 3709 if (0) test_not_8b_8b(TyB); 3710 3711 // pmul 16b,8b 3712 if (0) test_pmul_16b_16b_16b(TyB); 3713 if (0) test_pmul_8b_8b_8b(TyB); 3714 3715 // pmull{2} 8h_8b_8b,8h_16b_16b,1q_1d_1d,1q_2d_2d 3716 if (0) test_pmull_8h_8b_8b(TyB); 3717 if (0) test_pmull2_8h_16b_16b(TyB); 3718 //if (0) test_pmull_1q_1d_1d(TyD); 3719 //if (0) test_pmull_1q_2d_2d(TyD); 3720 3721 // rbit 16b,8b 3722 // rev16 16b,8b 3723 // rev32 16b,8b,8h,4h 3724 // rev64 16b,8b,8h,4h,4s,2s 3725 if (0) test_rbit_16b_16b(TyB); 3726 if (0) test_rbit_8b_8b(TyB); 3727 if (0) test_rev16_16b_16b(TyB); 3728 if (0) test_rev16_8b_8b(TyB); 3729 if (0) test_rev32_16b_16b(TyB); 3730 if (0) test_rev32_8b_8b(TyB); 3731 if (0) test_rev32_8h_8h(TyH); 3732 if (0) test_rev32_4h_4h(TyH); 3733 if (0) test_rev64_16b_16b(TyB); 3734 if (0) test_rev64_8b_8b(TyB); 3735 if (0) test_rev64_8h_8h(TyH); 3736 if (0) test_rev64_4h_4h(TyH); 3737 if (0) test_rev64_4s_4s(TyS); 3738 if (0) test_rev64_2s_2s(TyS); 3739 3740 // saba 16b,8b,8h,4h,4s,2s 3741 // uaba 16b,8b,8h,4h,4s,2s 3742 if (0) test_saba_4s_4s_4s(TyS); 3743 if (0) test_saba_2s_2s_2s(TyS); 3744 if (0) test_saba_8h_8h_8h(TyH); 3745 if (0) test_saba_4h_4h_4h(TyH); 3746 if (0) test_saba_16b_16b_16b(TyB); 3747 if (0) test_saba_8b_8b_8b(TyB); 3748 if (0) test_uaba_4s_4s_4s(TyS); 3749 if (0) test_uaba_2s_2s_2s(TyS); 3750 if (0) test_uaba_8h_8h_8h(TyH); 3751 if (0) test_uaba_4h_4h_4h(TyH); 3752 if (0) test_uaba_16b_16b_16b(TyB); 3753 if (0) test_uaba_8b_8b_8b(TyB); 3754 3755 // sabal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 3756 // uabal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 3757 if (0) test_sabal_2d_2s_2s(TyS); 3758 if (0) test_sabal2_2d_4s_4s(TyS); 3759 if (0) test_sabal_4s_4h_4h(TyH); 3760 if (0) test_sabal2_4s_8h_8h(TyH); 3761 if (0) test_sabal_8h_8b_8b(TyB); 3762 if (0) test_sabal2_8h_16b_16b(TyB); 3763 if (0) test_uabal_2d_2s_2s(TyS); 3764 if (0) test_uabal2_2d_4s_4s(TyS); 3765 if (0) test_uabal_4s_4h_4h(TyH); 3766 if (0) test_uabal2_4s_8h_8h(TyH); 3767 if (0) test_uabal_8h_8b_8b(TyB); 3768 if (0) test_uabal2_8h_16b_16b(TyB); 3769 3770 // sabd 16b,8b,8h,4h,4s,2s 3771 // uabd 16b,8b,8h,4h,4s,2s 3772 if (0) test_sabd_4s_4s_4s(TyS); 3773 if (0) test_sabd_2s_2s_2s(TyS); 3774 if (0) test_sabd_8h_8h_8h(TyH); 3775 if (0) test_sabd_4h_4h_4h(TyH); 3776 if (0) test_sabd_16b_16b_16b(TyB); 3777 if (0) test_sabd_8b_8b_8b(TyB); 3778 if (0) test_uabd_4s_4s_4s(TyS); 3779 if (0) test_uabd_2s_2s_2s(TyS); 3780 if (0) test_uabd_8h_8h_8h(TyH); 3781 if (0) test_uabd_4h_4h_4h(TyH); 3782 if (0) test_uabd_16b_16b_16b(TyB); 3783 if (0) test_uabd_8b_8b_8b(TyB); 3784 3785 // sabdl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 3786 // uabdl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 3787 if (0) test_sabdl_2d_2s_2s(TyS); 3788 if (0) test_sabdl2_2d_4s_4s(TyS); 3789 if (0) test_sabdl_4s_4h_4h(TyH); 3790 if (0) test_sabdl2_4s_8h_8h(TyH); 3791 if (0) test_sabdl_8h_8b_8b(TyB); 3792 if (0) test_sabdl2_8h_16b_16b(TyB); 3793 if (0) test_uabdl_2d_2s_2s(TyS); 3794 if (0) test_uabdl2_2d_4s_4s(TyS); 3795 if (0) test_uabdl_4s_4h_4h(TyH); 3796 if (0) test_uabdl2_4s_8h_8h(TyH); 3797 if (0) test_uabdl_8h_8b_8b(TyB); 3798 if (0) test_uabdl2_8h_16b_16b(TyB); 3799 3800 // sadalp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 3801 // uadalp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 3802 if (0) test_sadalp_1d_2s(TyS); 3803 if (0) test_sadalp_2d_4s(TyS); 3804 if (0) test_sadalp_2s_4h(TyH); 3805 if (0) test_sadalp_4s_8h(TyH); 3806 if (0) test_sadalp_4h_8b(TyB); 3807 if (0) test_sadalp_8h_16b(TyB); 3808 if (0) test_uadalp_1d_2s(TyS); 3809 if (0) test_uadalp_2d_4s(TyS); 3810 if (0) test_uadalp_2s_4h(TyH); 3811 if (0) test_uadalp_4s_8h(TyH); 3812 if (0) test_uadalp_4h_8b(TyB); 3813 if (0) test_uadalp_8h_16b(TyB); 3814 3815 // saddl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 3816 // uaddl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 3817 // ssubl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 3818 // usubl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 3819 if (0) test_saddl_2d_2s_2s(TyS); 3820 if (0) test_saddl2_2d_4s_4s(TyS); 3821 if (0) test_saddl_4s_4h_4h(TyH); 3822 if (0) test_saddl2_4s_8h_8h(TyH); 3823 if (0) test_saddl_8h_8b_8b(TyB); 3824 if (0) test_saddl2_8h_16b_16b(TyB); 3825 if (0) test_uaddl_2d_2s_2s(TyS); 3826 if (0) test_uaddl2_2d_4s_4s(TyS); 3827 if (0) test_uaddl_4s_4h_4h(TyH); 3828 if (0) test_uaddl2_4s_8h_8h(TyH); 3829 if (0) test_uaddl_8h_8b_8b(TyB); 3830 if (0) test_uaddl2_8h_16b_16b(TyB); 3831 if (0) test_ssubl_2d_2s_2s(TyS); 3832 if (0) test_ssubl2_2d_4s_4s(TyS); 3833 if (0) test_ssubl_4s_4h_4h(TyH); 3834 if (0) test_ssubl2_4s_8h_8h(TyH); 3835 if (0) test_ssubl_8h_8b_8b(TyB); 3836 if (0) test_ssubl2_8h_16b_16b(TyB); 3837 if (0) test_usubl_2d_2s_2s(TyS); 3838 if (0) test_usubl2_2d_4s_4s(TyS); 3839 if (0) test_usubl_4s_4h_4h(TyH); 3840 if (0) test_usubl2_4s_8h_8h(TyH); 3841 if (0) test_usubl_8h_8b_8b(TyB); 3842 if (0) test_usubl2_8h_16b_16b(TyB); 3843 3844 // saddlp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 3845 // uaddlp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 3846 if (0) test_saddlp_1d_2s(TyS); 3847 if (0) test_saddlp_2d_4s(TyS); 3848 if (0) test_saddlp_2s_4h(TyH); 3849 if (0) test_saddlp_4s_8h(TyH); 3850 if (0) test_saddlp_4h_8b(TyB); 3851 if (0) test_saddlp_8h_16b(TyB); 3852 if (0) test_uaddlp_1d_2s(TyS); 3853 if (0) test_uaddlp_2d_4s(TyS); 3854 if (0) test_uaddlp_2s_4h(TyH); 3855 if (0) test_uaddlp_4s_8h(TyH); 3856 if (0) test_uaddlp_4h_8b(TyB); 3857 if (0) test_uaddlp_8h_16b(TyB); 3858 3859 // saddlv h_16b/8b, s_8h/4h, d_4s 3860 // uaddlv h_16b/8b, s_8h/4h, d_4s 3861 if (0) test_saddlv_h_16b(TyB); 3862 if (0) test_saddlv_h_8b(TyB); 3863 if (0) test_saddlv_s_8h(TyH); 3864 if (0) test_saddlv_s_4h(TyH); 3865 if (0) test_saddlv_d_4s(TyH); 3866 if (0) test_uaddlv_h_16b(TyB); 3867 if (0) test_uaddlv_h_8b(TyB); 3868 if (0) test_uaddlv_s_8h(TyH); 3869 if (0) test_uaddlv_s_4h(TyH); 3870 if (0) test_uaddlv_d_4s(TyH); 3871 3872 // saddw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_4s/2s 3873 // uaddw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_4s/2s 3874 // ssubw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_4s/2s 3875 // usubw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_4s/2s 3876 if (0) test_saddw2_8h_8h_16b(TyB); 3877 if (0) test_saddw_8h_8h_8b(TyB); 3878 if (0) test_saddw2_4s_4s_8h(TyH); 3879 if (0) test_saddw_4s_4s_4h(TyH); 3880 if (0) test_saddw2_2d_2d_4s(TyS); 3881 if (0) test_saddw_2d_2d_2s(TyS); 3882 if (0) test_uaddw2_8h_8h_16b(TyB); 3883 if (0) test_uaddw_8h_8h_8b(TyB); 3884 if (0) test_uaddw2_4s_4s_8h(TyH); 3885 if (0) test_uaddw_4s_4s_4h(TyH); 3886 if (0) test_uaddw2_2d_2d_4s(TyS); 3887 if (0) test_uaddw_2d_2d_2s(TyS); 3888 if (0) test_ssubw2_8h_8h_16b(TyB); 3889 if (0) test_ssubw_8h_8h_8b(TyB); 3890 if (0) test_ssubw2_4s_4s_8h(TyH); 3891 if (0) test_ssubw_4s_4s_4h(TyH); 3892 if (0) test_ssubw2_2d_2d_4s(TyS); 3893 if (0) test_ssubw_2d_2d_2s(TyS); 3894 if (0) test_usubw2_8h_8h_16b(TyB); 3895 if (0) test_usubw_8h_8h_8b(TyB); 3896 if (0) test_usubw2_4s_4s_8h(TyH); 3897 if (0) test_usubw_4s_4s_4h(TyH); 3898 if (0) test_usubw2_2d_2d_4s(TyS); 3899 if (0) test_usubw_2d_2d_2s(TyS); 3900 3901 // shadd 16b,8b,8h,4h,4s,2s 3902 // uhadd 16b,8b,8h,4h,4s,2s 3903 // shsub 16b,8b,8h,4h,4s,2s 3904 // uhsub 16b,8b,8h,4h,4s,2s 3905 if (0) test_shadd_4s_4s_4s(TyS); 3906 if (0) test_shadd_2s_2s_2s(TyS); 3907 if (0) test_shadd_8h_8h_8h(TyH); 3908 if (0) test_shadd_4h_4h_4h(TyH); 3909 if (0) test_shadd_16b_16b_16b(TyB); 3910 if (0) test_shadd_8b_8b_8b(TyB); 3911 if (0) test_uhadd_4s_4s_4s(TyS); 3912 if (0) test_uhadd_2s_2s_2s(TyS); 3913 if (0) test_uhadd_8h_8h_8h(TyH); 3914 if (0) test_uhadd_4h_4h_4h(TyH); 3915 if (0) test_uhadd_16b_16b_16b(TyB); 3916 if (0) test_uhadd_8b_8b_8b(TyB); 3917 if (0) test_shsub_4s_4s_4s(TyS); 3918 if (0) test_shsub_2s_2s_2s(TyS); 3919 if (0) test_shsub_8h_8h_8h(TyH); 3920 if (0) test_shsub_4h_4h_4h(TyH); 3921 if (0) test_shsub_16b_16b_16b(TyB); 3922 if (0) test_shsub_8b_8b_8b(TyB); 3923 if (0) test_uhsub_4s_4s_4s(TyS); 3924 if (0) test_uhsub_2s_2s_2s(TyS); 3925 if (0) test_uhsub_8h_8h_8h(TyH); 3926 if (0) test_uhsub_4h_4h_4h(TyH); 3927 if (0) test_uhsub_16b_16b_16b(TyB); 3928 if (0) test_uhsub_8b_8b_8b(TyB); 3929 3930 // shll{2} 8h_8b/16b_#8, 4s_4h/8h_#16, 2d_2s/4s_#32 3931 if (0) test_shll_8h_8b_8(TyB); 3932 if (0) test_shll2_8h_16b_8(TyB); 3933 if (0) test_shll_4s_4h_16(TyH); 3934 if (0) test_shll2_4s_8h_16(TyH); 3935 if (0) test_shll_2d_2s_32(TyS); 3936 if (0) test_shll2_2d_4s_32(TyS); 3937 3938 // shrn{2} 2s/4s_2d, 8h/4h_4s, 8b/16b_8h, #imm in 1 .. elem_bits 3939 // rshrn{2} 2s/4s_2d, 8h/4h_4s, 8b/16b_8h, #imm in 1 .. elem_bits 3940 if (1) test_shrn_2s_2d_1(TyD); 3941 if (0) test_shrn_2s_2d_32(TyD); 3942 if (1) test_shrn2_4s_2d_1(TyD); 3943 if (0) test_shrn2_4s_2d_32(TyD); 3944 if (1) test_shrn_4h_4s_1(TyS); 3945 if (0) test_shrn_4h_4s_16(TyS); 3946 if (1) test_shrn2_8h_4s_1(TyS); 3947 if (0) test_shrn2_8h_4s_16(TyS); 3948 if (1) test_shrn_8b_8h_1(TyH); 3949 if (0) test_shrn_8b_8h_8(TyH); 3950 if (1) test_shrn2_16b_8h_1(TyH); 3951 if (0) test_shrn2_16b_8h_8(TyH); 3952 if (0) test_rshrn_2s_2d_1(TyD); 3953 if (0) test_rshrn_2s_2d_32(TyD); 3954 if (0) test_rshrn2_4s_2d_1(TyD); 3955 if (0) test_rshrn2_4s_2d_32(TyD); 3956 if (0) test_rshrn_4h_4s_1(TyS); 3957 if (0) test_rshrn_4h_4s_16(TyS); 3958 if (0) test_rshrn2_8h_4s_1(TyS); 3959 if (0) test_rshrn2_8h_4s_16(TyS); 3960 if (0) test_rshrn_8b_8h_1(TyH); 3961 if (0) test_rshrn_8b_8h_8(TyH); 3962 if (0) test_rshrn2_16b_8h_1(TyH); 3963 if (0) test_rshrn2_16b_8h_8(TyH); 3964 3965 // sli d_#imm 3966 // sri d_#imm 3967 if (0) test_sli_d_d_0(TyD); 3968 if (0) test_sli_d_d_32(TyD); 3969 if (0) test_sli_d_d_63(TyD); 3970 if (0) test_sri_d_d_1(TyD); 3971 if (0) test_sri_d_d_33(TyD); 3972 if (0) test_sri_d_d_64(TyD); 3973 3974 // sli 2d,4s,2s,8h,4h,16b,8b _#imm 3975 // sri 2d,4s,2s,8h,4h,16b,8b _#imm 3976 if (0) test_sli_2d_2d_0(TyD); 3977 if (1) test_sli_2d_2d_32(TyD); 3978 if (1) test_sli_2d_2d_63(TyD); 3979 if (0) test_sli_4s_4s_0(TyS); 3980 if (1) test_sli_4s_4s_16(TyS); 3981 if (1) test_sli_4s_4s_31(TyS); 3982 if (0) test_sli_2s_2s_0(TyS); 3983 if (1) test_sli_2s_2s_16(TyS); 3984 if (1) test_sli_2s_2s_31(TyS); 3985 if (0) test_sli_8h_8h_0(TyH); 3986 if (1) test_sli_8h_8h_8(TyH); 3987 if (1) test_sli_8h_8h_15(TyH); 3988 if (0) test_sli_4h_4h_0(TyH); 3989 if (1) test_sli_4h_4h_8(TyH); 3990 if (1) test_sli_4h_4h_15(TyH); 3991 if (0) test_sli_16b_16b_0(TyB); 3992 if (1) test_sli_16b_16b_3(TyB); 3993 if (1) test_sli_16b_16b_7(TyB); 3994 if (0) test_sli_8b_8b_0(TyB); 3995 if (1) test_sli_8b_8b_3(TyB); 3996 if (1) test_sli_8b_8b_7(TyB); 3997 if (1) test_sri_2d_2d_1(TyD); 3998 if (1) test_sri_2d_2d_33(TyD); 3999 if (0) test_sri_2d_2d_64(TyD); 4000 if (1) test_sri_4s_4s_1(TyS); 4001 if (1) test_sri_4s_4s_17(TyS); 4002 if (0) test_sri_4s_4s_32(TyS); 4003 if (1) test_sri_2s_2s_1(TyS); 4004 if (1) test_sri_2s_2s_17(TyS); 4005 if (0) test_sri_2s_2s_32(TyS); 4006 if (1) test_sri_8h_8h_1(TyH); 4007 if (1) test_sri_8h_8h_8(TyH); 4008 if (0) test_sri_8h_8h_16(TyH); 4009 if (1) test_sri_4h_4h_1(TyH); 4010 if (1) test_sri_4h_4h_8(TyH); 4011 if (0) test_sri_4h_4h_16(TyH); 4012 if (1) test_sri_16b_16b_1(TyB); 4013 if (1) test_sri_16b_16b_4(TyB); 4014 if (0) test_sri_16b_16b_8(TyB); 4015 if (1) test_sri_8b_8b_1(TyB); 4016 if (1) test_sri_8b_8b_4(TyB); 4017 if (0) test_sri_8b_8b_8(TyB); 4018 4019 // smax 4s,2s,8h,4h,16b,8b 4020 // umax 4s,2s,8h,4h,16b,8b 4021 // smin 4s,2s,8h,4h,16b,8b 4022 // umin 4s,2s,8h,4h,16b,8b 4023 if (1) test_smax_4s_4s_4s(TyS); 4024 if (1) test_smax_2s_2s_2s(TyS); 4025 if (1) test_smax_8h_8h_8h(TyH); 4026 if (1) test_smax_4h_4h_4h(TyH); 4027 if (1) test_smax_16b_16b_16b(TyB); 4028 if (1) test_smax_8b_8b_8b(TyB); 4029 if (1) test_umax_4s_4s_4s(TyS); 4030 if (1) test_umax_2s_2s_2s(TyS); 4031 if (1) test_umax_8h_8h_8h(TyH); 4032 if (1) test_umax_4h_4h_4h(TyH); 4033 if (1) test_umax_16b_16b_16b(TyB); 4034 if (1) test_umax_8b_8b_8b(TyB); 4035 if (1) test_smin_4s_4s_4s(TyS); 4036 if (1) test_smin_2s_2s_2s(TyS); 4037 if (1) test_smin_8h_8h_8h(TyH); 4038 if (1) test_smin_4h_4h_4h(TyH); 4039 if (1) test_smin_16b_16b_16b(TyB); 4040 if (1) test_smin_8b_8b_8b(TyB); 4041 if (1) test_umin_4s_4s_4s(TyS); 4042 if (1) test_umin_2s_2s_2s(TyS); 4043 if (1) test_umin_8h_8h_8h(TyH); 4044 if (1) test_umin_4h_4h_4h(TyH); 4045 if (1) test_umin_16b_16b_16b(TyB); 4046 if (1) test_umin_8b_8b_8b(TyB); 4047 4048 // smaxp 4s,2s,8h,4h,16b,8b 4049 // umaxp 4s,2s,8h,4h,16b,8b 4050 // sminp 4s,2s,8h,4h,16b,8b 4051 // uminp 4s,2s,8h,4h,16b,8b 4052 if (0) test_smaxp_4s_4s_4s(TyS); 4053 if (0) test_smaxp_2s_2s_2s(TyS); 4054 if (0) test_smaxp_8h_8h_8h(TyH); 4055 if (0) test_smaxp_4h_4h_4h(TyH); 4056 if (0) test_smaxp_16b_16b_16b(TyB); 4057 if (0) test_smaxp_8b_8b_8b(TyB); 4058 if (0) test_umaxp_4s_4s_4s(TyS); 4059 if (0) test_umaxp_2s_2s_2s(TyS); 4060 if (0) test_umaxp_8h_8h_8h(TyH); 4061 if (0) test_umaxp_4h_4h_4h(TyH); 4062 if (0) test_umaxp_16b_16b_16b(TyB); 4063 if (0) test_umaxp_8b_8b_8b(TyB); 4064 if (0) test_sminp_4s_4s_4s(TyS); 4065 if (0) test_sminp_2s_2s_2s(TyS); 4066 if (0) test_sminp_8h_8h_8h(TyH); 4067 if (0) test_sminp_4h_4h_4h(TyH); 4068 if (0) test_sminp_16b_16b_16b(TyB); 4069 if (0) test_sminp_8b_8b_8b(TyB); 4070 if (0) test_uminp_4s_4s_4s(TyS); 4071 if (0) test_uminp_2s_2s_2s(TyS); 4072 if (0) test_uminp_8h_8h_8h(TyH); 4073 if (0) test_uminp_4h_4h_4h(TyH); 4074 if (0) test_uminp_16b_16b_16b(TyB); 4075 if (0) test_uminp_8b_8b_8b(TyB); 4076 4077 // smaxv s_4s,h_8h,h_4h,b_16b,b_8b 4078 // umaxv s_4s,h_8h,h_4h,b_16b,b_8b 4079 // sminv s_4s,h_8h,h_4h,b_16b,b_8b 4080 // uminv s_4s,h_8h,h_4h,b_16b,b_8b 4081 if (1) test_SMAXV(); 4082 if (1) test_UMAXV(); 4083 if (1) test_SMINV(); 4084 if (1) test_UMINV(); 4085 4086 // smlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 4087 // umlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 4088 // smlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 4089 // umlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 4090 // smull{2} 2d_2s/4s_s[]. 4s_4h/8h_h[] 4091 // umull{2} 2d_2s/4s_s[]. 4s_4h/8h_h[] 4092 if (0) test_smlal_2d_2s_s0(TyS); 4093 if (0) test_smlal_2d_2s_s3(TyS); 4094 if (0) test_smlal2_2d_4s_s1(TyS); 4095 if (0) test_smlal2_2d_4s_s2(TyS); 4096 if (0) test_smlal_4s_4h_h0(TyH); 4097 if (0) test_smlal_4s_4h_h7(TyH); 4098 if (0) test_smlal2_4s_8h_h1(TyH); 4099 if (0) test_smlal2_4s_8h_h4(TyH); 4100 if (0) test_umlal_2d_2s_s0(TyS); 4101 if (0) test_umlal_2d_2s_s3(TyS); 4102 if (0) test_umlal2_2d_4s_s1(TyS); 4103 if (0) test_umlal2_2d_4s_s2(TyS); 4104 if (0) test_umlal_4s_4h_h0(TyH); 4105 if (0) test_umlal_4s_4h_h7(TyH); 4106 if (0) test_umlal2_4s_8h_h1(TyH); 4107 if (0) test_umlal2_4s_8h_h4(TyH); 4108 if (0) test_smlsl_2d_2s_s0(TyS); 4109 if (0) test_smlsl_2d_2s_s3(TyS); 4110 if (0) test_smlsl2_2d_4s_s1(TyS); 4111 if (0) test_smlsl2_2d_4s_s2(TyS); 4112 if (0) test_smlsl_4s_4h_h0(TyH); 4113 if (0) test_smlsl_4s_4h_h7(TyH); 4114 if (0) test_smlsl2_4s_8h_h1(TyH); 4115 if (0) test_smlsl2_4s_8h_h4(TyH); 4116 if (0) test_umlsl_2d_2s_s0(TyS); 4117 if (0) test_umlsl_2d_2s_s3(TyS); 4118 if (0) test_umlsl2_2d_4s_s1(TyS); 4119 if (0) test_umlsl2_2d_4s_s2(TyS); 4120 if (0) test_umlsl_4s_4h_h0(TyH); 4121 if (0) test_umlsl_4s_4h_h7(TyH); 4122 if (0) test_umlsl2_4s_8h_h1(TyH); 4123 if (0) test_umlsl2_4s_8h_h4(TyH); 4124 if (0) test_smull_2d_2s_s0(TyS); 4125 if (0) test_smull_2d_2s_s3(TyS); 4126 if (0) test_smull2_2d_4s_s1(TyS); 4127 if (0) test_smull2_2d_4s_s2(TyS); 4128 if (0) test_smull_4s_4h_h0(TyH); 4129 if (0) test_smull_4s_4h_h7(TyH); 4130 if (0) test_smull2_4s_8h_h1(TyH); 4131 if (0) test_smull2_4s_8h_h4(TyH); 4132 if (0) test_umull_2d_2s_s0(TyS); 4133 if (0) test_umull_2d_2s_s3(TyS); 4134 if (0) test_umull2_2d_4s_s1(TyS); 4135 if (0) test_umull2_2d_4s_s2(TyS); 4136 if (0) test_umull_4s_4h_h0(TyH); 4137 if (0) test_umull_4s_4h_h7(TyH); 4138 if (0) test_umull2_4s_8h_h1(TyH); 4139 if (0) test_umull2_4s_8h_h4(TyH); 4140 4141 // smlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 4142 // umlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 4143 // smlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 4144 // umlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 4145 // smull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 4146 // umull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 4147 if (0) test_smlal_2d_2s_2s(TyS); 4148 if (0) test_smlal2_2d_4s_4s(TyS); 4149 if (0) test_smlal_4s_4h_4h(TyH); 4150 if (0) test_smlal2_4s_8h_8h(TyH); 4151 if (0) test_smlal_8h_8b_8b(TyB); 4152 if (0) test_smlal2_8h_16b_16b(TyB); 4153 if (0) test_umlal_2d_2s_2s(TyS); 4154 if (0) test_umlal2_2d_4s_4s(TyS); 4155 if (0) test_umlal_4s_4h_4h(TyH); 4156 if (0) test_umlal2_4s_8h_8h(TyH); 4157 if (0) test_umlal_8h_8b_8b(TyB); 4158 if (0) test_umlal2_8h_16b_16b(TyB); 4159 if (0) test_smlsl_2d_2s_2s(TyS); 4160 if (0) test_smlsl2_2d_4s_4s(TyS); 4161 if (0) test_smlsl_4s_4h_4h(TyH); 4162 if (0) test_smlsl2_4s_8h_8h(TyH); 4163 if (0) test_smlsl_8h_8b_8b(TyB); 4164 if (0) test_smlsl2_8h_16b_16b(TyB); 4165 if (0) test_umlsl_2d_2s_2s(TyS); 4166 if (0) test_umlsl2_2d_4s_4s(TyS); 4167 if (0) test_umlsl_4s_4h_4h(TyH); 4168 if (0) test_umlsl2_4s_8h_8h(TyH); 4169 if (0) test_umlsl_8h_8b_8b(TyB); 4170 if (0) test_umlsl2_8h_16b_16b(TyB); 4171 if (0) test_smull_2d_2s_2s(TyS); 4172 if (0) test_smull2_2d_4s_4s(TyS); 4173 if (0) test_smull_4s_4h_4h(TyH); 4174 if (0) test_smull2_4s_8h_8h(TyH); 4175 if (0) test_smull_8h_8b_8b(TyB); 4176 if (0) test_smull2_8h_16b_16b(TyB); 4177 if (1) test_umull_2d_2s_2s(TyS); 4178 if (0) test_umull2_2d_4s_4s(TyS); 4179 if (1) test_umull_4s_4h_4h(TyH); 4180 if (0) test_umull2_4s_8h_8h(TyH); 4181 if (1) test_umull_8h_8b_8b(TyB); 4182 if (0) test_umull2_8h_16b_16b(TyB); 4183 4184 // smov w_b[], w_h[], x_b[], x_h[], x_s[] 4185 // umov w_b[], w_h[], w_s[], x_d[] 4186 if (1) test_umov_x_d0(TyD); 4187 if (1) test_umov_x_d1(TyD); 4188 if (1) test_umov_w_s0(TyS); 4189 if (1) test_umov_w_s3(TyS); 4190 if (1) test_umov_w_h0(TyH); 4191 if (1) test_umov_w_h7(TyH); 4192 if (1) test_umov_w_b0(TyB); 4193 if (1) test_umov_w_b15(TyB); 4194 if (1) test_smov_x_s0(TyS); 4195 if (1) test_smov_x_s3(TyS); 4196 if (1) test_smov_x_h0(TyH); 4197 if (1) test_smov_x_h7(TyH); 4198 if (1) test_smov_w_h0(TyH); 4199 if (1) test_smov_w_h7(TyH); 4200 if (1) test_smov_x_b0(TyB); 4201 if (1) test_smov_x_b15(TyB); 4202 if (1) test_smov_w_b0(TyB); 4203 if (1) test_smov_w_b15(TyB); 4204 4205 // sqabs d,s,h,b 4206 // sqneg d,s,h,b 4207 if (0) test_sqabs_d_d(TyD); 4208 if (0) test_sqabs_s_s(TyS); 4209 if (0) test_sqabs_h_h(TyH); 4210 if (0) test_sqabs_b_b(TyB); 4211 if (0) test_sqneg_d_d(TyD); 4212 if (0) test_sqneg_s_s(TyS); 4213 if (0) test_sqneg_h_h(TyH); 4214 if (0) test_sqneg_b_b(TyB); 4215 4216 // sqabs 2d,4s,2s,8h,4h,16b,8b 4217 // sqneg 2d,4s,2s,8h,4h,16b,8b 4218 if (0) test_sqabs_2d_2d(TyD); 4219 if (0) test_sqabs_4s_4s(TyS); 4220 if (0) test_sqabs_2s_2s(TyS); 4221 if (0) test_sqabs_8h_8h(TyH); 4222 if (0) test_sqabs_4h_4h(TyH); 4223 if (0) test_sqabs_16b_16b(TyB); 4224 if (0) test_sqabs_8b_8b(TyB); 4225 if (0) test_sqneg_2d_2d(TyD); 4226 if (0) test_sqneg_4s_4s(TyS); 4227 if (0) test_sqneg_2s_2s(TyS); 4228 if (0) test_sqneg_8h_8h(TyH); 4229 if (0) test_sqneg_4h_4h(TyH); 4230 if (0) test_sqneg_16b_16b(TyB); 4231 if (0) test_sqneg_8b_8b(TyB); 4232 4233 // sqadd d,s,h,b 4234 // uqadd d,s,h,b 4235 // sqsub d,s,h,b 4236 // uqsub d,s,h,b 4237 if (0) test_sqadd_d_d_d(TyD); 4238 if (0) test_sqadd_s_s_s(TyS); 4239 if (0) test_sqadd_h_h_h(TyH); 4240 if (0) test_sqadd_b_b_b(TyB); 4241 if (0) test_uqadd_d_d_d(TyD); 4242 if (0) test_uqadd_s_s_s(TyS); 4243 if (0) test_uqadd_h_h_h(TyH); 4244 if (0) test_uqadd_b_b_b(TyB); 4245 if (0) test_sqsub_d_d_d(TyD); 4246 if (0) test_sqsub_s_s_s(TyS); 4247 if (0) test_sqsub_h_h_h(TyH); 4248 if (0) test_sqsub_b_b_b(TyB); 4249 if (0) test_uqsub_d_d_d(TyD); 4250 if (0) test_uqsub_s_s_s(TyS); 4251 if (0) test_uqsub_h_h_h(TyH); 4252 if (0) test_uqsub_b_b_b(TyB); 4253 4254 // sqadd 2d,4s,2s,8h,4h,16b,8b 4255 // uqadd 2d,4s,2s,8h,4h,16b,8b 4256 // sqsub 2d,4s,2s,8h,4h,16b,8b 4257 // uqsub 2d,4s,2s,8h,4h,16b,8b 4258 if (0) test_sqadd_2d_2d_2d(TyD); 4259 if (0) test_sqadd_4s_4s_4s(TyS); 4260 if (0) test_sqadd_2s_2s_2s(TyS); 4261 if (0) test_sqadd_8h_8h_8h(TyH); 4262 if (0) test_sqadd_4h_4h_4h(TyH); 4263 if (0) test_sqadd_16b_16b_16b(TyB); 4264 if (0) test_sqadd_8b_8b_8b(TyB); 4265 if (0) test_uqadd_2d_2d_2d(TyD); 4266 if (0) test_uqadd_4s_4s_4s(TyS); 4267 if (0) test_uqadd_2s_2s_2s(TyS); 4268 if (0) test_uqadd_8h_8h_8h(TyH); 4269 if (0) test_uqadd_4h_4h_4h(TyH); 4270 if (0) test_uqadd_16b_16b_16b(TyB); 4271 if (0) test_uqadd_8b_8b_8b(TyB); 4272 if (0) test_sqsub_2d_2d_2d(TyD); 4273 if (0) test_sqsub_4s_4s_4s(TyS); 4274 if (0) test_sqsub_2s_2s_2s(TyS); 4275 if (0) test_sqsub_8h_8h_8h(TyH); 4276 if (0) test_sqsub_4h_4h_4h(TyH); 4277 if (0) test_sqsub_16b_16b_16b(TyB); 4278 if (0) test_sqsub_8b_8b_8b(TyB); 4279 if (0) test_uqsub_2d_2d_2d(TyD); 4280 if (0) test_uqsub_4s_4s_4s(TyS); 4281 if (0) test_uqsub_2s_2s_2s(TyS); 4282 if (0) test_uqsub_8h_8h_8h(TyH); 4283 if (0) test_uqsub_4h_4h_4h(TyH); 4284 if (0) test_uqsub_16b_16b_16b(TyB); 4285 if (0) test_uqsub_8b_8b_8b(TyB); 4286 4287 // sqdmlal d_s_s[], s_h_h[] 4288 // sqdmlsl d_s_s[], s_h_h[] 4289 // sqdmull d_s_s[], s_h_h[] 4290 if (0) test_sqdmlal_d_s_s0(TyS); 4291 if (0) test_sqdmlal_d_s_s3(TyS); 4292 if (0) test_sqdmlal_s_h_h1(TyH); 4293 if (0) test_sqdmlal_s_h_h5(TyH); 4294 if (0) test_sqdmlsl_d_s_s0(TyS); 4295 if (0) test_sqdmlsl_d_s_s3(TyS); 4296 if (0) test_sqdmlsl_s_h_h1(TyH); 4297 if (0) test_sqdmlsl_s_h_h5(TyH); 4298 if (0) test_sqdmull_d_s_s0(TyS); 4299 if (0) test_sqdmull_d_s_s3(TyS); 4300 if (0) test_sqdmull_s_h_h1(TyH); 4301 if (0) test_sqdmull_s_h_h5(TyH); 4302 4303 // sqdmlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 4304 // sqdmlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 4305 // sqdmull{2} 2d_2s/4s_s[], 4s_4h/2h_h[] 4306 if (0) test_sqdmlal_2d_2s_s0(TyS); 4307 if (0) test_sqdmlal_2d_2s_s3(TyS); 4308 if (0) test_sqdmlal2_2d_4s_s1(TyS); 4309 if (0) test_sqdmlal2_2d_4s_s2(TyS); 4310 if (0) test_sqdmlal_4s_4h_h0(TyH); 4311 if (0) test_sqdmlal_4s_4h_h7(TyH); 4312 if (0) test_sqdmlal2_4s_8h_h1(TyH); 4313 if (0) test_sqdmlal2_4s_8h_h4(TyH); 4314 if (0) test_sqdmlsl_2d_2s_s0(TyS); 4315 if (0) test_sqdmlsl_2d_2s_s3(TyS); 4316 if (0) test_sqdmlsl2_2d_4s_s1(TyS); 4317 if (0) test_sqdmlsl2_2d_4s_s2(TyS); 4318 if (0) test_sqdmlsl_4s_4h_h0(TyH); 4319 if (0) test_sqdmlsl_4s_4h_h7(TyH); 4320 if (0) test_sqdmlsl2_4s_8h_h1(TyH); 4321 if (0) test_sqdmlsl2_4s_8h_h4(TyH); 4322 if (0) test_sqdmull_2d_2s_s0(TyS); 4323 if (0) test_sqdmull_2d_2s_s3(TyS); 4324 if (0) test_sqdmull2_2d_4s_s1(TyS); 4325 if (0) test_sqdmull2_2d_4s_s2(TyS); 4326 if (0) test_sqdmull_4s_4h_h0(TyH); 4327 if (0) test_sqdmull_4s_4h_h7(TyH); 4328 if (0) test_sqdmull2_4s_8h_h1(TyH); 4329 if (0) test_sqdmull2_4s_8h_h4(TyH); 4330 4331 // sqdmlal d_s_s, s_h_h 4332 // sqdmlsl d_s_s, s_h_h 4333 // sqdmull d_s_s, s_h_h 4334 if (0) test_sqdmlal_d_s_s(TyS); 4335 if (0) test_sqdmlal_s_h_h(TyH); 4336 if (0) test_sqdmlsl_d_s_s(TyS); 4337 if (0) test_sqdmlsl_s_h_h(TyH); 4338 if (0) test_sqdmull_d_s_s(TyS); 4339 if (0) test_sqdmull_s_h_h(TyH); 4340 4341 // sqdmlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 4342 // sqdmlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 4343 // sqdmull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 4344 if (0) test_sqdmlal_2d_2s_2s(TyS); 4345 if (0) test_sqdmlal2_2d_4s_4s(TyS); 4346 if (0) test_sqdmlal_4s_4h_4h(TyH); 4347 if (0) test_sqdmlal2_4s_8h_8h(TyH); 4348 if (0) test_sqdmlsl_2d_2s_2s(TyS); 4349 if (0) test_sqdmlsl2_2d_4s_4s(TyS); 4350 if (0) test_sqdmlsl_4s_4h_4h(TyH); 4351 if (0) test_sqdmlsl2_4s_8h_8h(TyH); 4352 if (0) test_sqdmull_2d_2s_2s(TyS); 4353 if (0) test_sqdmull2_2d_4s_4s(TyS); 4354 if (0) test_sqdmull_4s_4h_4h(TyH); 4355 if (0) test_sqdmull2_4s_8h_8h(TyH); 4356 4357 // sqdmulh s_s_s[], h_h_h[] 4358 // sqrdmulh s_s_s[], h_h_h[] 4359 if (0) test_sqdmulh_s_s_s1(TyS); 4360 if (0) test_sqdmulh_s_s_s3(TyS); 4361 if (0) test_sqdmulh_h_h_h2(TyH); 4362 if (0) test_sqdmulh_h_h_h7(TyH); 4363 if (0) test_sqrdmulh_s_s_s1(TyS); 4364 if (0) test_sqrdmulh_s_s_s3(TyS); 4365 if (0) test_sqrdmulh_h_h_h2(TyH); 4366 if (0) test_sqrdmulh_h_h_h7(TyH); 4367 4368 // sqdmulh 4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[] 4369 // sqrdmulh 4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[] 4370 if (0) test_sqdmulh_4s_4s_s1(TyS); 4371 if (0) test_sqdmulh_4s_4s_s3(TyS); 4372 if (0) test_sqdmulh_2s_2s_s1(TyS); 4373 if (0) test_sqdmulh_2s_2s_s3(TyS); 4374 if (0) test_sqdmulh_8h_8h_h2(TyH); 4375 if (0) test_sqdmulh_8h_8h_h7(TyH); 4376 if (0) test_sqdmulh_4h_4h_h2(TyH); 4377 if (0) test_sqdmulh_4h_4h_h7(TyH); 4378 if (0) test_sqrdmulh_4s_4s_s1(TyS); 4379 if (0) test_sqrdmulh_4s_4s_s3(TyS); 4380 if (0) test_sqrdmulh_2s_2s_s1(TyS); 4381 if (0) test_sqrdmulh_2s_2s_s3(TyS); 4382 if (0) test_sqrdmulh_8h_8h_h2(TyH); 4383 if (0) test_sqrdmulh_8h_8h_h7(TyH); 4384 if (0) test_sqrdmulh_4h_4h_h2(TyH); 4385 if (0) test_sqrdmulh_4h_4h_h7(TyH); 4386 4387 // sqdmulh h,s 4388 // sqrdmulh h,s 4389 if (0) test_sqdmulh_s_s_s(TyS); 4390 if (0) test_sqdmulh_h_h_h(TyH); 4391 if (0) test_sqrdmulh_s_s_s(TyS); 4392 if (0) test_sqrdmulh_h_h_h(TyH); 4393 4394 // sqdmulh 4s,2s,8h,4h 4395 // sqrdmulh 4s,2s,8h,4h 4396 if (0) test_sqdmulh_4s_4s_4s(TyS); 4397 if (0) test_sqdmulh_2s_2s_2s(TyS); 4398 if (0) test_sqdmulh_8h_8h_8h(TyH); 4399 if (0) test_sqdmulh_4h_4h_4h(TyH); 4400 if (0) test_sqrdmulh_4s_4s_4s(TyS); 4401 if (0) test_sqrdmulh_2s_2s_2s(TyS); 4402 if (0) test_sqrdmulh_8h_8h_8h(TyH); 4403 if (0) test_sqrdmulh_4h_4h_4h(TyH); 4404 4405 // sqshl (reg) d,s,h,b 4406 // uqshl (reg) d,s,h,b 4407 // sqrshl (reg) d,s,h,b 4408 // uqrshl (reg) d,s,h,b 4409 if (0) test_sqshl_d_d_d(TyD); 4410 if (0) test_sqshl_s_s_s(TyS); 4411 if (0) test_sqshl_h_h_h(TyH); 4412 if (0) test_sqshl_b_b_b(TyB); 4413 if (0) test_uqshl_d_d_d(TyD); 4414 if (0) test_uqshl_s_s_s(TyS); 4415 if (0) test_uqshl_h_h_h(TyH); 4416 if (0) test_uqshl_b_b_b(TyB); 4417 if (0) test_sqrshl_d_d_d(TyD); 4418 if (0) test_sqrshl_s_s_s(TyS); 4419 if (0) test_sqrshl_h_h_h(TyH); 4420 if (0) test_sqrshl_b_b_b(TyB); 4421 if (0) test_uqrshl_d_d_d(TyD); 4422 if (0) test_uqrshl_s_s_s(TyS); 4423 if (0) test_uqrshl_h_h_h(TyH); 4424 if (0) test_uqrshl_b_b_b(TyB); 4425 4426 // sqshl (reg) 2d,4s,2s,8h,4h,16b,8b 4427 // uqshl (reg) 2d,4s,2s,8h,4h,16b,8b 4428 // sqrshl (reg) 2d,4s,2s,8h,4h,16b,8b 4429 // uqrshl (reg) 2d,4s,2s,8h,4h,16b,8b 4430 if (0) test_sqshl_2d_2d_2d(TyD); 4431 if (0) test_sqshl_4s_4s_4s(TyS); 4432 if (0) test_sqshl_2s_2s_2s(TyS); 4433 if (0) test_sqshl_8h_8h_8h(TyH); 4434 if (0) test_sqshl_4h_4h_4h(TyH); 4435 if (0) test_sqshl_16b_16b_16b(TyB); 4436 if (0) test_sqshl_8b_8b_8b(TyB); 4437 if (0) test_uqshl_2d_2d_2d(TyD); 4438 if (0) test_uqshl_4s_4s_4s(TyS); 4439 if (0) test_uqshl_2s_2s_2s(TyS); 4440 if (0) test_uqshl_8h_8h_8h(TyH); 4441 if (0) test_uqshl_4h_4h_4h(TyH); 4442 if (0) test_uqshl_16b_16b_16b(TyB); 4443 if (0) test_uqshl_8b_8b_8b(TyB); 4444 if (0) test_sqrshl_2d_2d_2d(TyD); 4445 if (0) test_sqrshl_4s_4s_4s(TyS); 4446 if (0) test_sqrshl_2s_2s_2s(TyS); 4447 if (0) test_sqrshl_8h_8h_8h(TyH); 4448 if (0) test_sqrshl_4h_4h_4h(TyH); 4449 if (0) test_sqrshl_16b_16b_16b(TyB); 4450 if (0) test_sqrshl_8b_8b_8b(TyB); 4451 if (0) test_uqrshl_2d_2d_2d(TyD); 4452 if (0) test_uqrshl_4s_4s_4s(TyS); 4453 if (0) test_uqrshl_2s_2s_2s(TyS); 4454 if (0) test_uqrshl_8h_8h_8h(TyH); 4455 if (0) test_uqrshl_4h_4h_4h(TyH); 4456 if (0) test_uqrshl_16b_16b_16b(TyB); 4457 if (0) test_uqrshl_8b_8b_8b(TyB); 4458 4459 // sqrshrn s_d, h_s, b_h #imm 4460 // uqrshrn s_d, h_s, b_h #imm 4461 // sqshrn s_d, h_s, b_h #imm 4462 // uqshrn s_d, h_s, b_h #imm 4463 // sqrshrun s_d, h_s, b_h #imm 4464 // sqshrun s_d, h_s, b_h #imm 4465 if (0) test_sqrshrn_s_d_1(TyD); 4466 if (0) test_sqrshrn_s_d_17(TyD); 4467 if (0) test_sqrshrn_s_d_32(TyD); 4468 if (0) test_sqrshrn_h_s_1(TyS); 4469 if (0) test_sqrshrn_h_s_9(TyS); 4470 if (0) test_sqrshrn_h_s_16(TyS); 4471 if (0) test_sqrshrn_b_h_1(TyH); 4472 if (0) test_sqrshrn_b_h_4(TyH); 4473 if (0) test_sqrshrn_b_h_8(TyH); 4474 if (0) test_uqrshrn_s_d_1(TyD); 4475 if (0) test_uqrshrn_s_d_17(TyD); 4476 if (0) test_uqrshrn_s_d_32(TyD); 4477 if (0) test_uqrshrn_h_s_1(TyS); 4478 if (0) test_uqrshrn_h_s_9(TyS); 4479 if (0) test_uqrshrn_h_s_16(TyS); 4480 if (0) test_uqrshrn_b_h_1(TyH); 4481 if (0) test_uqrshrn_b_h_4(TyH); 4482 if (0) test_uqrshrn_b_h_8(TyH); 4483 if (0) test_sqshrn_s_d_1(TyD); 4484 if (0) test_sqshrn_s_d_17(TyD); 4485 if (0) test_sqshrn_s_d_32(TyD); 4486 if (0) test_sqshrn_h_s_1(TyS); 4487 if (0) test_sqshrn_h_s_9(TyS); 4488 if (0) test_sqshrn_h_s_16(TyS); 4489 if (0) test_sqshrn_b_h_1(TyH); 4490 if (0) test_sqshrn_b_h_4(TyH); 4491 if (0) test_sqshrn_b_h_8(TyH); 4492 if (0) test_uqshrn_s_d_1(TyD); 4493 if (0) test_uqshrn_s_d_17(TyD); 4494 if (0) test_uqshrn_s_d_32(TyD); 4495 if (0) test_uqshrn_h_s_1(TyS); 4496 if (0) test_uqshrn_h_s_9(TyS); 4497 if (0) test_uqshrn_h_s_16(TyS); 4498 if (0) test_uqshrn_b_h_1(TyH); 4499 if (0) test_uqshrn_b_h_4(TyH); 4500 if (0) test_uqshrn_b_h_8(TyH); 4501 if (0) test_sqrshrun_s_d_1(TyD); 4502 if (0) test_sqrshrun_s_d_17(TyD); 4503 if (0) test_sqrshrun_s_d_32(TyD); 4504 if (0) test_sqrshrun_h_s_1(TyS); 4505 if (0) test_sqrshrun_h_s_9(TyS); 4506 if (0) test_sqrshrun_h_s_16(TyS); 4507 if (0) test_sqrshrun_b_h_1(TyH); 4508 if (0) test_sqrshrun_b_h_4(TyH); 4509 if (0) test_sqrshrun_b_h_8(TyH); 4510 if (0) test_sqshrun_s_d_1(TyD); 4511 if (0) test_sqshrun_s_d_17(TyD); 4512 if (0) test_sqshrun_s_d_32(TyD); 4513 if (0) test_sqshrun_h_s_1(TyS); 4514 if (0) test_sqshrun_h_s_9(TyS); 4515 if (0) test_sqshrun_h_s_16(TyS); 4516 if (0) test_sqshrun_b_h_1(TyH); 4517 if (0) test_sqshrun_b_h_4(TyH); 4518 if (0) test_sqshrun_b_h_8(TyH); 4519 4520 // sqrshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 4521 // uqrshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 4522 // sqshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 4523 // uqshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 4524 // sqrshrun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 4525 // sqshrun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 4526 if (0) test_sqrshrn_2s_2d_1(TyD); 4527 if (0) test_sqrshrn_2s_2d_17(TyD); 4528 if (0) test_sqrshrn_2s_2d_32(TyD); 4529 if (0) test_sqrshrn2_4s_2d_1(TyD); 4530 if (0) test_sqrshrn2_4s_2d_17(TyD); 4531 if (0) test_sqrshrn2_4s_2d_32(TyD); 4532 if (0) test_sqrshrn_4h_4s_1(TyS); 4533 if (0) test_sqrshrn_4h_4s_9(TyS); 4534 if (0) test_sqrshrn_4h_4s_16(TyS); 4535 if (0) test_sqrshrn2_8h_4s_1(TyS); 4536 if (0) test_sqrshrn2_8h_4s_9(TyS); 4537 if (0) test_sqrshrn2_8h_4s_16(TyS); 4538 if (0) test_sqrshrn_8b_8h_1(TyH); 4539 if (0) test_sqrshrn_8b_8h_4(TyH); 4540 if (0) test_sqrshrn_8b_8h_8(TyH); 4541 if (0) test_sqrshrn2_16b_8h_1(TyH); 4542 if (0) test_sqrshrn2_16b_8h_4(TyH); 4543 if (0) test_sqrshrn2_16b_8h_8(TyH); 4544 if (0) test_uqrshrn_2s_2d_1(TyD); 4545 if (0) test_uqrshrn_2s_2d_17(TyD); 4546 if (0) test_uqrshrn_2s_2d_32(TyD); 4547 if (0) test_uqrshrn2_4s_2d_1(TyD); 4548 if (0) test_uqrshrn2_4s_2d_17(TyD); 4549 if (0) test_uqrshrn2_4s_2d_32(TyD); 4550 if (0) test_uqrshrn_4h_4s_1(TyS); 4551 if (0) test_uqrshrn_4h_4s_9(TyS); 4552 if (0) test_uqrshrn_4h_4s_16(TyS); 4553 if (0) test_uqrshrn2_8h_4s_1(TyS); 4554 if (0) test_uqrshrn2_8h_4s_9(TyS); 4555 if (0) test_uqrshrn2_8h_4s_16(TyS); 4556 if (0) test_uqrshrn_8b_8h_1(TyH); 4557 if (0) test_uqrshrn_8b_8h_4(TyH); 4558 if (0) test_uqrshrn_8b_8h_8(TyH); 4559 if (0) test_uqrshrn2_16b_8h_1(TyH); 4560 if (0) test_uqrshrn2_16b_8h_4(TyH); 4561 if (0) test_uqrshrn2_16b_8h_8(TyH); 4562 if (0) test_sqshrn_2s_2d_1(TyD); 4563 if (0) test_sqshrn_2s_2d_17(TyD); 4564 if (0) test_sqshrn_2s_2d_32(TyD); 4565 if (0) test_sqshrn2_4s_2d_1(TyD); 4566 if (0) test_sqshrn2_4s_2d_17(TyD); 4567 if (0) test_sqshrn2_4s_2d_32(TyD); 4568 if (0) test_sqshrn_4h_4s_1(TyS); 4569 if (0) test_sqshrn_4h_4s_9(TyS); 4570 if (0) test_sqshrn_4h_4s_16(TyS); 4571 if (0) test_sqshrn2_8h_4s_1(TyS); 4572 if (0) test_sqshrn2_8h_4s_9(TyS); 4573 if (0) test_sqshrn2_8h_4s_16(TyS); 4574 if (0) test_sqshrn_8b_8h_1(TyH); 4575 if (0) test_sqshrn_8b_8h_4(TyH); 4576 if (0) test_sqshrn_8b_8h_8(TyH); 4577 if (0) test_sqshrn2_16b_8h_1(TyH); 4578 if (0) test_sqshrn2_16b_8h_4(TyH); 4579 if (0) test_sqshrn2_16b_8h_8(TyH); 4580 if (0) test_uqshrn_2s_2d_1(TyD); 4581 if (0) test_uqshrn_2s_2d_17(TyD); 4582 if (0) test_uqshrn_2s_2d_32(TyD); 4583 if (0) test_uqshrn2_4s_2d_1(TyD); 4584 if (0) test_uqshrn2_4s_2d_17(TyD); 4585 if (0) test_uqshrn2_4s_2d_32(TyD); 4586 if (0) test_uqshrn_4h_4s_1(TyS); 4587 if (0) test_uqshrn_4h_4s_9(TyS); 4588 if (0) test_uqshrn_4h_4s_16(TyS); 4589 if (0) test_uqshrn2_8h_4s_1(TyS); 4590 if (0) test_uqshrn2_8h_4s_9(TyS); 4591 if (0) test_uqshrn2_8h_4s_16(TyS); 4592 if (0) test_uqshrn_8b_8h_1(TyH); 4593 if (0) test_uqshrn_8b_8h_4(TyH); 4594 if (0) test_uqshrn_8b_8h_8(TyH); 4595 if (0) test_uqshrn2_16b_8h_1(TyH); 4596 if (0) test_uqshrn2_16b_8h_4(TyH); 4597 if (0) test_uqshrn2_16b_8h_8(TyH); 4598 if (0) test_sqrshrun_2s_2d_1(TyD); 4599 if (0) test_sqrshrun_2s_2d_17(TyD); 4600 if (0) test_sqrshrun_2s_2d_32(TyD); 4601 if (0) test_sqrshrun2_4s_2d_1(TyD); 4602 if (0) test_sqrshrun2_4s_2d_17(TyD); 4603 if (0) test_sqrshrun2_4s_2d_32(TyD); 4604 if (0) test_sqrshrun_4h_4s_1(TyS); 4605 if (0) test_sqrshrun_4h_4s_9(TyS); 4606 if (0) test_sqrshrun_4h_4s_16(TyS); 4607 if (0) test_sqrshrun2_8h_4s_1(TyS); 4608 if (0) test_sqrshrun2_8h_4s_9(TyS); 4609 if (0) test_sqrshrun2_8h_4s_16(TyS); 4610 if (0) test_sqrshrun_8b_8h_1(TyH); 4611 if (0) test_sqrshrun_8b_8h_4(TyH); 4612 if (0) test_sqrshrun_8b_8h_8(TyH); 4613 if (0) test_sqrshrun2_16b_8h_1(TyH); 4614 if (0) test_sqrshrun2_16b_8h_4(TyH); 4615 if (0) test_sqrshrun2_16b_8h_8(TyH); 4616 if (0) test_sqshrun_2s_2d_1(TyD); 4617 if (0) test_sqshrun_2s_2d_17(TyD); 4618 if (0) test_sqshrun_2s_2d_32(TyD); 4619 if (0) test_sqshrun2_4s_2d_1(TyD); 4620 if (0) test_sqshrun2_4s_2d_17(TyD); 4621 if (0) test_sqshrun2_4s_2d_32(TyD); 4622 if (0) test_sqshrun_4h_4s_1(TyS); 4623 if (0) test_sqshrun_4h_4s_9(TyS); 4624 if (0) test_sqshrun_4h_4s_16(TyS); 4625 if (0) test_sqshrun2_8h_4s_1(TyS); 4626 if (0) test_sqshrun2_8h_4s_9(TyS); 4627 if (0) test_sqshrun2_8h_4s_16(TyS); 4628 if (0) test_sqshrun_8b_8h_1(TyH); 4629 if (0) test_sqshrun_8b_8h_4(TyH); 4630 if (0) test_sqshrun_8b_8h_8(TyH); 4631 if (0) test_sqshrun2_16b_8h_1(TyH); 4632 if (0) test_sqshrun2_16b_8h_4(TyH); 4633 if (0) test_sqshrun2_16b_8h_8(TyH); 4634 4635 // sqshl (imm) d,s,h,b _#imm 4636 // uqshl (imm) d,s,h,b _#imm 4637 // sqshlu (imm) d,s,h,b _#imm 4638 if (0) test_sqshl_d_d_0(TyD); 4639 if (0) test_sqshl_d_d_32(TyD); 4640 if (0) test_sqshl_d_d_63(TyD); 4641 if (0) test_sqshl_s_s_0(TyS); 4642 if (0) test_sqshl_s_s_16(TyS); 4643 if (0) test_sqshl_s_s_31(TyS); 4644 if (0) test_sqshl_h_h_0(TyH); 4645 if (0) test_sqshl_h_h_8(TyH); 4646 if (0) test_sqshl_h_h_15(TyH); 4647 if (0) test_sqshl_b_b_0(TyB); 4648 if (0) test_sqshl_b_b_4(TyB); 4649 if (0) test_sqshl_b_b_7(TyB); 4650 if (0) test_uqshl_d_d_0(TyD); 4651 if (0) test_uqshl_d_d_32(TyD); 4652 if (0) test_uqshl_d_d_63(TyD); 4653 if (0) test_uqshl_s_s_0(TyS); 4654 if (0) test_uqshl_s_s_16(TyS); 4655 if (0) test_uqshl_s_s_31(TyS); 4656 if (0) test_uqshl_h_h_0(TyH); 4657 if (0) test_uqshl_h_h_8(TyH); 4658 if (0) test_uqshl_h_h_15(TyH); 4659 if (0) test_uqshl_b_b_0(TyB); 4660 if (0) test_uqshl_b_b_4(TyB); 4661 if (0) test_uqshl_b_b_7(TyB); 4662 if (0) test_sqshlu_d_d_0(TyD); 4663 if (0) test_sqshlu_d_d_32(TyD); 4664 if (0) test_sqshlu_d_d_63(TyD); 4665 if (0) test_sqshlu_s_s_0(TyS); 4666 if (0) test_sqshlu_s_s_16(TyS); 4667 if (0) test_sqshlu_s_s_31(TyS); 4668 if (0) test_sqshlu_h_h_0(TyH); 4669 if (0) test_sqshlu_h_h_8(TyH); 4670 if (0) test_sqshlu_h_h_15(TyH); 4671 if (0) test_sqshlu_b_b_0(TyB); 4672 if (0) test_sqshlu_b_b_4(TyB); 4673 if (0) test_sqshlu_b_b_7(TyB); 4674 4675 // sqshl (imm) 2d,4s,2s,8h,4h,16b,8b _#imm 4676 // uqshl (imm) 2d,4s,2s,8h,4h,16b,8b _#imm 4677 // sqshlu (imm) 2d,4s,2s,8h,4h,16b,8b _#imm 4678 if (0) test_sqshl_2d_2d_0(TyD); 4679 if (0) test_sqshl_2d_2d_32(TyD); 4680 if (0) test_sqshl_2d_2d_63(TyD); 4681 if (0) test_sqshl_4s_4s_0(TyS); 4682 if (0) test_sqshl_4s_4s_16(TyS); 4683 if (0) test_sqshl_4s_4s_31(TyS); 4684 if (0) test_sqshl_2s_2s_0(TyS); 4685 if (0) test_sqshl_2s_2s_16(TyS); 4686 if (0) test_sqshl_2s_2s_31(TyS); 4687 if (0) test_sqshl_8h_8h_0(TyH); 4688 if (0) test_sqshl_8h_8h_8(TyH); 4689 if (0) test_sqshl_8h_8h_15(TyH); 4690 if (0) test_sqshl_4h_4h_0(TyH); 4691 if (0) test_sqshl_4h_4h_8(TyH); 4692 if (0) test_sqshl_4h_4h_15(TyH); 4693 if (0) test_sqshl_16b_16b_0(TyB); 4694 if (0) test_sqshl_16b_16b_3(TyB); 4695 if (0) test_sqshl_16b_16b_7(TyB); 4696 if (0) test_sqshl_8b_8b_0(TyB); 4697 if (0) test_sqshl_8b_8b_3(TyB); 4698 if (0) test_sqshl_8b_8b_7(TyB); 4699 if (0) test_uqshl_2d_2d_0(TyD); 4700 if (0) test_uqshl_2d_2d_32(TyD); 4701 if (0) test_uqshl_2d_2d_63(TyD); 4702 if (0) test_uqshl_4s_4s_0(TyS); 4703 if (0) test_uqshl_4s_4s_16(TyS); 4704 if (0) test_uqshl_4s_4s_31(TyS); 4705 if (0) test_uqshl_2s_2s_0(TyS); 4706 if (0) test_uqshl_2s_2s_16(TyS); 4707 if (0) test_uqshl_2s_2s_31(TyS); 4708 if (0) test_uqshl_8h_8h_0(TyH); 4709 if (0) test_uqshl_8h_8h_8(TyH); 4710 if (0) test_uqshl_8h_8h_15(TyH); 4711 if (0) test_uqshl_4h_4h_0(TyH); 4712 if (0) test_uqshl_4h_4h_8(TyH); 4713 if (0) test_uqshl_4h_4h_15(TyH); 4714 if (0) test_uqshl_16b_16b_0(TyB); 4715 if (0) test_uqshl_16b_16b_3(TyB); 4716 if (0) test_uqshl_16b_16b_7(TyB); 4717 if (0) test_uqshl_8b_8b_0(TyB); 4718 if (0) test_uqshl_8b_8b_3(TyB); 4719 if (0) test_uqshl_8b_8b_7(TyB); 4720 if (0) test_sqshlu_2d_2d_0(TyD); 4721 if (0) test_sqshlu_2d_2d_32(TyD); 4722 if (0) test_sqshlu_2d_2d_63(TyD); 4723 if (0) test_sqshlu_4s_4s_0(TyS); 4724 if (0) test_sqshlu_4s_4s_16(TyS); 4725 if (0) test_sqshlu_4s_4s_31(TyS); 4726 if (0) test_sqshlu_2s_2s_0(TyS); 4727 if (0) test_sqshlu_2s_2s_16(TyS); 4728 if (0) test_sqshlu_2s_2s_31(TyS); 4729 if (0) test_sqshlu_8h_8h_0(TyH); 4730 if (0) test_sqshlu_8h_8h_8(TyH); 4731 if (0) test_sqshlu_8h_8h_15(TyH); 4732 if (0) test_sqshlu_4h_4h_0(TyH); 4733 if (0) test_sqshlu_4h_4h_8(TyH); 4734 if (0) test_sqshlu_4h_4h_15(TyH); 4735 if (0) test_sqshlu_16b_16b_0(TyB); 4736 if (0) test_sqshlu_16b_16b_3(TyB); 4737 if (0) test_sqshlu_16b_16b_7(TyB); 4738 if (0) test_sqshlu_8b_8b_0(TyB); 4739 if (0) test_sqshlu_8b_8b_3(TyB); 4740 if (0) test_sqshlu_8b_8b_7(TyB); 4741 4742 // sqxtn s_d,h_s,b_h 4743 // uqxtn s_d,h_s,b_h 4744 // sqxtun s_d,h_s,b_h 4745 if (0) test_sqxtn_s_d(TyD); 4746 if (0) test_sqxtn_h_s(TyS); 4747 if (0) test_sqxtn_b_h(TyH); 4748 if (0) test_uqxtn_s_d(TyD); 4749 if (0) test_uqxtn_h_s(TyS); 4750 if (0) test_uqxtn_b_h(TyH); 4751 if (0) test_sqxtun_s_d(TyD); 4752 if (0) test_sqxtun_h_s(TyS); 4753 if (0) test_sqxtun_b_h(TyH); 4754 4755 // sqxtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 4756 // uqxtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 4757 // sqxtun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 4758 if (0) test_sqxtn_2s_2d(TyD); 4759 if (0) test_sqxtn2_4s_2d(TyD); 4760 if (0) test_sqxtn_4h_4s(TyS); 4761 if (0) test_sqxtn2_8h_4s(TyS); 4762 if (0) test_sqxtn_8b_8h(TyH); 4763 if (0) test_sqxtn2_16b_8h(TyH); 4764 if (0) test_uqxtn_2s_2d(TyD); 4765 if (0) test_uqxtn2_4s_2d(TyD); 4766 if (0) test_uqxtn_4h_4s(TyS); 4767 if (0) test_uqxtn2_8h_4s(TyS); 4768 if (0) test_uqxtn_8b_8h(TyH); 4769 if (0) test_uqxtn2_16b_8h(TyH); 4770 if (0) test_sqxtun_2s_2d(TyD); 4771 if (0) test_sqxtun2_4s_2d(TyD); 4772 if (0) test_sqxtun_4h_4s(TyS); 4773 if (0) test_sqxtun2_8h_4s(TyS); 4774 if (0) test_sqxtun_8b_8h(TyH); 4775 if (0) test_sqxtun2_16b_8h(TyH); 4776 4777 // srhadd 4s,2s,8h,4h,16b,8b 4778 // urhadd 4s,2s,8h,4h,16b,8b 4779 if (0) test_srhadd_4s_4s_4s(TyS); 4780 if (0) test_srhadd_2s_2s_2s(TyS); 4781 if (0) test_srhadd_8h_8h_8h(TyH); 4782 if (0) test_srhadd_4h_4h_4h(TyH); 4783 if (0) test_srhadd_16b_16b_16b(TyB); 4784 if (0) test_srhadd_8b_8b_8b(TyB); 4785 if (0) test_urhadd_4s_4s_4s(TyS); 4786 if (0) test_urhadd_2s_2s_2s(TyS); 4787 if (0) test_urhadd_8h_8h_8h(TyH); 4788 if (0) test_urhadd_4h_4h_4h(TyH); 4789 if (0) test_urhadd_16b_16b_16b(TyB); 4790 if (0) test_urhadd_8b_8b_8b(TyB); 4791 4792 // sshl (reg) d 4793 // ushl (reg) d 4794 if (0) test_sshl_d_d_d(TyD); 4795 if (0) test_ushl_d_d_d(TyD); 4796 4797 // sshl (reg) 2d,4s,2s,8h,4h,16b,8b 4798 // ushl (reg) 2d,4s,2s,8h,4h,16b,8b 4799 if (0) test_sshl_2d_2d_2d(TyD); 4800 if (0) test_sshl_4s_4s_4s(TyS); 4801 if (0) test_sshl_2s_2s_2s(TyS); 4802 if (0) test_sshl_8h_8h_8h(TyH); 4803 if (0) test_sshl_4h_4h_4h(TyH); 4804 if (0) test_sshl_16b_16b_16b(TyB); 4805 if (0) test_sshl_8b_8b_8b(TyB); 4806 if (0) test_ushl_2d_2d_2d(TyD); 4807 if (0) test_ushl_4s_4s_4s(TyS); 4808 if (0) test_ushl_2s_2s_2s(TyS); 4809 if (0) test_ushl_8h_8h_8h(TyH); 4810 if (0) test_ushl_4h_4h_4h(TyH); 4811 if (0) test_ushl_16b_16b_16b(TyB); 4812 if (0) test_ushl_8b_8b_8b(TyB); 4813 4814 // shl (imm) d 4815 // sshr (imm) d 4816 // ushr (imm) d 4817 if (1) test_shl_d_d_0(TyD); 4818 if (1) test_shl_d_d_32(TyD); 4819 if (1) test_shl_d_d_63(TyD); 4820 if (0) test_sshr_d_d_1(TyD); 4821 if (0) test_sshr_d_d_32(TyD); 4822 if (0) test_sshr_d_d_64(TyD); 4823 if (0) test_ushr_d_d_1(TyD); 4824 if (0) test_ushr_d_d_32(TyD); 4825 if (0) test_ushr_d_d_64(TyD); 4826 4827 // shl (imm) 16b,8b,8h,4h,4s,2s,2d 4828 // sshr (imm) 2d,4s,2s,8h,4h,16b,8b 4829 // ushr (imm) 2d,4s,2s,8h,4h,16b,8b 4830 if (0) test_shl_2d_2d_0(TyD); 4831 if (1) test_shl_2d_2d_13(TyD); 4832 if (1) test_shl_2d_2d_63(TyD); 4833 if (0) test_shl_4s_4s_0(TyS); 4834 if (1) test_shl_4s_4s_13(TyS); 4835 if (1) test_shl_4s_4s_31(TyS); 4836 if (0) test_shl_2s_2s_0(TyS); 4837 if (1) test_shl_2s_2s_13(TyS); 4838 if (1) test_shl_2s_2s_31(TyS); 4839 if (0) test_shl_8h_8h_0(TyH); 4840 if (1) test_shl_8h_8h_13(TyH); 4841 if (1) test_shl_8h_8h_15(TyH); 4842 if (0) test_shl_4h_4h_0(TyH); 4843 if (1) test_shl_4h_4h_13(TyH); 4844 if (1) test_shl_4h_4h_15(TyH); 4845 if (0) test_shl_16b_16b_0(TyB); 4846 if (1) test_shl_16b_16b_7(TyB); 4847 if (0) test_shl_8b_8b_0(TyB); 4848 if (1) test_shl_8b_8b_7(TyB); 4849 if (1) test_sshr_2d_2d_1(TyD); 4850 if (1) test_sshr_2d_2d_13(TyD); 4851 if (0) test_sshr_2d_2d_64(TyD); 4852 if (1) test_sshr_4s_4s_1(TyS); 4853 if (1) test_sshr_4s_4s_13(TyS); 4854 if (0) test_sshr_4s_4s_32(TyS); 4855 if (1) test_sshr_2s_2s_1(TyS); 4856 if (1) test_sshr_2s_2s_13(TyS); 4857 if (0) test_sshr_2s_2s_32(TyS); 4858 if (1) test_sshr_8h_8h_1(TyH); 4859 if (1) test_sshr_8h_8h_13(TyH); 4860 if (0) test_sshr_8h_8h_16(TyH); 4861 if (1) test_sshr_4h_4h_1(TyH); 4862 if (1) test_sshr_4h_4h_13(TyH); 4863 if (0) test_sshr_4h_4h_16(TyH); 4864 if (1) test_sshr_16b_16b_1(TyB); 4865 if (0) test_sshr_16b_16b_8(TyB); 4866 if (1) test_sshr_8b_8b_1(TyB); 4867 if (0) test_sshr_8b_8b_8(TyB); 4868 if (1) test_ushr_2d_2d_1(TyD); 4869 if (1) test_ushr_2d_2d_13(TyD); 4870 if (0) test_ushr_2d_2d_64(TyD); 4871 if (1) test_ushr_4s_4s_1(TyS); 4872 if (1) test_ushr_4s_4s_13(TyS); 4873 if (0) test_ushr_4s_4s_32(TyS); 4874 if (1) test_ushr_2s_2s_1(TyS); 4875 if (1) test_ushr_2s_2s_13(TyS); 4876 if (0) test_ushr_2s_2s_32(TyS); 4877 if (1) test_ushr_8h_8h_1(TyH); 4878 if (1) test_ushr_8h_8h_13(TyH); 4879 if (0) test_ushr_8h_8h_16(TyH); 4880 if (1) test_ushr_4h_4h_1(TyH); 4881 if (1) test_ushr_4h_4h_13(TyH); 4882 if (0) test_ushr_4h_4h_16(TyH); 4883 if (1) test_ushr_16b_16b_1(TyB); 4884 if (0) test_ushr_16b_16b_8(TyB); 4885 if (1) test_ushr_8b_8b_1(TyB); 4886 if (0) test_ushr_8b_8b_8(TyB); 4887 4888 // ssra (imm) d 4889 // usra (imm) d 4890 if (0) test_ssra_d_d_1(TyD); 4891 if (0) test_ssra_d_d_32(TyD); 4892 if (0) test_ssra_d_d_64(TyD); 4893 if (0) test_usra_d_d_1(TyD); 4894 if (0) test_usra_d_d_32(TyD); 4895 if (0) test_usra_d_d_64(TyD); 4896 4897 // ssra (imm) 2d,4s,2s,8h,4h,16b,8b 4898 // usra (imm) 2d,4s,2s,8h,4h,16b,8b 4899 if (0) test_ssra_2d_2d_1(TyD); 4900 if (0) test_ssra_2d_2d_32(TyD); 4901 if (0) test_ssra_2d_2d_64(TyD); 4902 if (0) test_ssra_4s_4s_1(TyS); 4903 if (0) test_ssra_4s_4s_16(TyS); 4904 if (0) test_ssra_4s_4s_32(TyS); 4905 if (0) test_ssra_2s_2s_1(TyS); 4906 if (0) test_ssra_2s_2s_16(TyS); 4907 if (0) test_ssra_2s_2s_32(TyS); 4908 if (0) test_ssra_8h_8h_1(TyH); 4909 if (0) test_ssra_8h_8h_8(TyH); 4910 if (0) test_ssra_8h_8h_16(TyH); 4911 if (0) test_ssra_4h_4h_1(TyH); 4912 if (0) test_ssra_4h_4h_8(TyH); 4913 if (0) test_ssra_4h_4h_16(TyH); 4914 if (0) test_ssra_16b_16b_1(TyB); 4915 if (0) test_ssra_16b_16b_3(TyB); 4916 if (0) test_ssra_16b_16b_8(TyB); 4917 if (0) test_ssra_8b_8b_1(TyB); 4918 if (0) test_ssra_8b_8b_3(TyB); 4919 if (0) test_ssra_8b_8b_8(TyB); 4920 if (0) test_usra_2d_2d_1(TyD); 4921 if (0) test_usra_2d_2d_32(TyD); 4922 if (0) test_usra_2d_2d_64(TyD); 4923 if (0) test_usra_4s_4s_1(TyS); 4924 if (0) test_usra_4s_4s_16(TyS); 4925 if (0) test_usra_4s_4s_32(TyS); 4926 if (0) test_usra_2s_2s_1(TyS); 4927 if (0) test_usra_2s_2s_16(TyS); 4928 if (0) test_usra_2s_2s_32(TyS); 4929 if (0) test_usra_8h_8h_1(TyH); 4930 if (0) test_usra_8h_8h_8(TyH); 4931 if (0) test_usra_8h_8h_16(TyH); 4932 if (0) test_usra_4h_4h_1(TyH); 4933 if (0) test_usra_4h_4h_8(TyH); 4934 if (0) test_usra_4h_4h_16(TyH); 4935 if (0) test_usra_16b_16b_1(TyB); 4936 if (0) test_usra_16b_16b_3(TyB); 4937 if (0) test_usra_16b_16b_8(TyB); 4938 if (0) test_usra_8b_8b_1(TyB); 4939 if (0) test_usra_8b_8b_3(TyB); 4940 if (0) test_usra_8b_8b_8(TyB); 4941 4942 // srshl (reg) d 4943 // urshl (reg) d 4944 if (0) test_srshl_d_d_d(TyD); 4945 if (0) test_urshl_d_d_d(TyD); 4946 4947 // srshl (reg) 2d,4s,2s,8h,4h,16b,8b 4948 // urshl (reg) 2d,4s,2s,8h,4h,16b,8b 4949 if (0) test_srshl_2d_2d_2d(TyD); 4950 if (0) test_srshl_4s_4s_4s(TyS); 4951 if (0) test_srshl_2s_2s_2s(TyS); 4952 if (0) test_srshl_8h_8h_8h(TyH); 4953 if (0) test_srshl_4h_4h_4h(TyH); 4954 if (0) test_srshl_16b_16b_16b(TyB); 4955 if (0) test_srshl_8b_8b_8b(TyB); 4956 if (0) test_urshl_2d_2d_2d(TyD); 4957 if (0) test_urshl_4s_4s_4s(TyS); 4958 if (0) test_urshl_2s_2s_2s(TyS); 4959 if (0) test_urshl_8h_8h_8h(TyH); 4960 if (0) test_urshl_4h_4h_4h(TyH); 4961 if (0) test_urshl_16b_16b_16b(TyB); 4962 if (0) test_urshl_8b_8b_8b(TyB); 4963 4964 // srshr (imm) d 4965 // urshr (imm) d 4966 if (0) test_srshr_d_d_1(TyD); 4967 if (0) test_srshr_d_d_32(TyD); 4968 if (0) test_srshr_d_d_64(TyD); 4969 if (0) test_urshr_d_d_1(TyD); 4970 if (0) test_urshr_d_d_32(TyD); 4971 if (0) test_urshr_d_d_64(TyD); 4972 4973 // srshr (imm) 2d,4s,2s,8h,4h,16b,8b 4974 // urshr (imm) 2d,4s,2s,8h,4h,16b,8b 4975 if (0) test_srshr_2d_2d_1(TyD); 4976 if (0) test_srshr_2d_2d_32(TyD); 4977 if (0) test_srshr_2d_2d_64(TyD); 4978 if (0) test_srshr_4s_4s_1(TyS); 4979 if (0) test_srshr_4s_4s_16(TyS); 4980 if (0) test_srshr_4s_4s_32(TyS); 4981 if (0) test_srshr_2s_2s_1(TyS); 4982 if (0) test_srshr_2s_2s_16(TyS); 4983 if (0) test_srshr_2s_2s_32(TyS); 4984 if (0) test_srshr_8h_8h_1(TyH); 4985 if (0) test_srshr_8h_8h_8(TyH); 4986 if (0) test_srshr_8h_8h_16(TyH); 4987 if (0) test_srshr_4h_4h_1(TyH); 4988 if (0) test_srshr_4h_4h_8(TyH); 4989 if (0) test_srshr_4h_4h_16(TyH); 4990 if (0) test_srshr_16b_16b_1(TyB); 4991 if (0) test_srshr_16b_16b_3(TyB); 4992 if (0) test_srshr_16b_16b_8(TyB); 4993 if (0) test_srshr_8b_8b_1(TyB); 4994 if (0) test_srshr_8b_8b_3(TyB); 4995 if (0) test_srshr_8b_8b_8(TyB); 4996 if (0) test_urshr_2d_2d_1(TyD); 4997 if (0) test_urshr_2d_2d_32(TyD); 4998 if (0) test_urshr_2d_2d_64(TyD); 4999 if (0) test_urshr_4s_4s_1(TyS); 5000 if (0) test_urshr_4s_4s_16(TyS); 5001 if (0) test_urshr_4s_4s_32(TyS); 5002 if (0) test_urshr_2s_2s_1(TyS); 5003 if (0) test_urshr_2s_2s_16(TyS); 5004 if (0) test_urshr_2s_2s_32(TyS); 5005 if (0) test_urshr_8h_8h_1(TyH); 5006 if (0) test_urshr_8h_8h_8(TyH); 5007 if (0) test_urshr_8h_8h_16(TyH); 5008 if (0) test_urshr_4h_4h_1(TyH); 5009 if (0) test_urshr_4h_4h_8(TyH); 5010 if (0) test_urshr_4h_4h_16(TyH); 5011 if (0) test_urshr_16b_16b_1(TyB); 5012 if (0) test_urshr_16b_16b_3(TyB); 5013 if (0) test_urshr_16b_16b_8(TyB); 5014 if (0) test_urshr_8b_8b_1(TyB); 5015 if (0) test_urshr_8b_8b_3(TyB); 5016 if (0) test_urshr_8b_8b_8(TyB); 5017 5018 // srsra (imm) d 5019 // ursra (imm) d 5020 if (0) test_srsra_d_d_1(TyD); 5021 if (0) test_srsra_d_d_32(TyD); 5022 if (0) test_srsra_d_d_64(TyD); 5023 if (0) test_ursra_d_d_1(TyD); 5024 if (0) test_ursra_d_d_32(TyD); 5025 if (0) test_ursra_d_d_64(TyD); 5026 5027 // srsra (imm) 2d,4s,2s,8h,4h,16b,8b 5028 // ursra (imm) 2d,4s,2s,8h,4h,16b,8b 5029 if (0) test_srsra_2d_2d_1(TyD); 5030 if (0) test_srsra_2d_2d_32(TyD); 5031 if (0) test_srsra_2d_2d_64(TyD); 5032 if (0) test_srsra_4s_4s_1(TyS); 5033 if (0) test_srsra_4s_4s_16(TyS); 5034 if (0) test_srsra_4s_4s_32(TyS); 5035 if (0) test_srsra_2s_2s_1(TyS); 5036 if (0) test_srsra_2s_2s_16(TyS); 5037 if (0) test_srsra_2s_2s_32(TyS); 5038 if (0) test_srsra_8h_8h_1(TyH); 5039 if (0) test_srsra_8h_8h_8(TyH); 5040 if (0) test_srsra_8h_8h_16(TyH); 5041 if (0) test_srsra_4h_4h_1(TyH); 5042 if (0) test_srsra_4h_4h_8(TyH); 5043 if (0) test_srsra_4h_4h_16(TyH); 5044 if (0) test_srsra_16b_16b_1(TyB); 5045 if (0) test_srsra_16b_16b_3(TyB); 5046 if (0) test_srsra_16b_16b_8(TyB); 5047 if (0) test_srsra_8b_8b_1(TyB); 5048 if (0) test_srsra_8b_8b_3(TyB); 5049 if (0) test_srsra_8b_8b_8(TyB); 5050 if (0) test_ursra_2d_2d_1(TyD); 5051 if (0) test_ursra_2d_2d_32(TyD); 5052 if (0) test_ursra_2d_2d_64(TyD); 5053 if (0) test_ursra_4s_4s_1(TyS); 5054 if (0) test_ursra_4s_4s_16(TyS); 5055 if (0) test_ursra_4s_4s_32(TyS); 5056 if (0) test_ursra_2s_2s_1(TyS); 5057 if (0) test_ursra_2s_2s_16(TyS); 5058 if (0) test_ursra_2s_2s_32(TyS); 5059 if (0) test_ursra_8h_8h_1(TyH); 5060 if (0) test_ursra_8h_8h_8(TyH); 5061 if (0) test_ursra_8h_8h_16(TyH); 5062 if (0) test_ursra_4h_4h_1(TyH); 5063 if (0) test_ursra_4h_4h_8(TyH); 5064 if (0) test_ursra_4h_4h_16(TyH); 5065 if (0) test_ursra_16b_16b_1(TyB); 5066 if (0) test_ursra_16b_16b_3(TyB); 5067 if (0) test_ursra_16b_16b_8(TyB); 5068 if (0) test_ursra_8b_8b_1(TyB); 5069 if (0) test_ursra_8b_8b_3(TyB); 5070 if (0) test_ursra_8b_8b_8(TyB); 5071 5072 // sshll{2} (imm) 2d_2s/4s, 4s_4h/8h, 8h_8b/16b 5073 // ushll{2} (imm) 2d_2s/4s, 4s_4h/8h, 8h_8b/16b 5074 if (1) test_sshll_2d_2s_0(TyS); 5075 if (1) test_sshll_2d_2s_15(TyS); 5076 if (1) test_sshll_2d_2s_31(TyS); 5077 if (1) test_sshll2_2d_4s_0(TyS); 5078 if (1) test_sshll2_2d_4s_15(TyS); 5079 if (1) test_sshll2_2d_4s_31(TyS); 5080 if (1) test_sshll_4s_4h_0(TyH); 5081 if (1) test_sshll_4s_4h_7(TyH); 5082 if (1) test_sshll_4s_4h_15(TyH); 5083 if (1) test_sshll2_4s_8h_0(TyH); 5084 if (1) test_sshll2_4s_8h_7(TyH); 5085 if (1) test_sshll2_4s_8h_15(TyH); 5086 if (1) test_sshll_8h_8b_0(TyB); 5087 if (1) test_sshll_8h_8b_3(TyB); 5088 if (1) test_sshll_8h_8b_7(TyB); 5089 if (1) test_sshll2_8h_16b_0(TyB); 5090 if (1) test_sshll2_8h_16b_3(TyB); 5091 if (1) test_sshll2_8h_16b_7(TyB); 5092 if (1) test_ushll_2d_2s_0(TyS); 5093 if (1) test_ushll_2d_2s_15(TyS); 5094 if (1) test_ushll_2d_2s_31(TyS); 5095 if (1) test_ushll2_2d_4s_0(TyS); 5096 if (1) test_ushll2_2d_4s_15(TyS); 5097 if (1) test_ushll2_2d_4s_31(TyS); 5098 if (1) test_ushll_4s_4h_0(TyH); 5099 if (1) test_ushll_4s_4h_7(TyH); 5100 if (1) test_ushll_4s_4h_15(TyH); 5101 if (1) test_ushll2_4s_8h_0(TyH); 5102 if (1) test_ushll2_4s_8h_7(TyH); 5103 if (1) test_ushll2_4s_8h_15(TyH); 5104 if (1) test_ushll_8h_8b_0(TyB); 5105 if (1) test_ushll_8h_8b_3(TyB); 5106 if (1) test_ushll_8h_8b_7(TyB); 5107 if (1) test_ushll2_8h_16b_0(TyB); 5108 if (1) test_ushll2_8h_16b_3(TyB); 5109 if (1) test_ushll2_8h_16b_7(TyB); 5110 5111 // suqadd d,s,h,b 5112 // usqadd d,s,h,b 5113 if (0) test_suqadd_d_d(TyD); 5114 if (0) test_suqadd_s_s(TyS); 5115 if (0) test_suqadd_h_h(TyH); 5116 if (0) test_suqadd_b_b(TyB); 5117 if (0) test_usqadd_d_d(TyD); 5118 if (0) test_usqadd_s_s(TyS); 5119 if (0) test_usqadd_h_h(TyH); 5120 if (0) test_usqadd_b_b(TyB); 5121 5122 // suqadd 2d,4s,2s,8h,4h,16b,8b 5123 // usqadd 2d,4s,2s,8h,4h,16b,8b 5124 if (0) test_suqadd_2d_2d(TyD); 5125 if (0) test_suqadd_4s_4s(TyS); 5126 if (0) test_suqadd_2s_2s(TyS); 5127 if (0) test_suqadd_8h_8h(TyH); 5128 if (0) test_suqadd_4h_4h(TyH); 5129 if (0) test_suqadd_16b_16b(TyB); 5130 if (0) test_suqadd_8b_8b(TyB); 5131 if (0) test_usqadd_2d_2d(TyD); 5132 if (0) test_usqadd_4s_4s(TyS); 5133 if (0) test_usqadd_2s_2s(TyS); 5134 if (0) test_usqadd_8h_8h(TyH); 5135 if (0) test_usqadd_4h_4h(TyH); 5136 if (0) test_usqadd_16b_16b(TyB); 5137 if (0) test_usqadd_8b_8b(TyB); 5138 5139 // tbl 8b_{16b}_8b, 16b_{16b}_16b 5140 // tbl 8b_{16b,16b}_8b, 16b_{16b,16b}_16b 5141 // tbl 8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b 5142 // tbl 8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b 5143 if (1) test_tbl_16b_1reg(TyB); 5144 if (1) test_tbl_16b_2reg(TyB); 5145 if (1) test_tbl_16b_3reg(TyB); 5146 if (1) test_tbl_16b_4reg(TyB); 5147 if (1) test_tbl_8b_1reg(TyB); 5148 if (1) test_tbl_8b_2reg(TyB); 5149 if (1) test_tbl_8b_3reg(TyB); 5150 if (1) test_tbl_8b_4reg(TyB); 5151 5152 // tbx 8b_{16b}_8b, 16b_{16b}_16b 5153 // tbx 8b_{16b,16b}_8b, 16b_{16b,16b}_16b 5154 // tbx 8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b 5155 // tbx 8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b 5156 if (1) test_tbx_16b_1reg(TyB); 5157 if (1) test_tbx_16b_2reg(TyB); 5158 if (1) test_tbx_16b_3reg(TyB); 5159 if (1) test_tbx_16b_4reg(TyB); 5160 if (1) test_tbx_8b_1reg(TyB); 5161 if (1) test_tbx_8b_2reg(TyB); 5162 if (1) test_tbx_8b_3reg(TyB); 5163 if (1) test_tbx_8b_4reg(TyB); 5164 5165 // trn1 2d,4s,2s,8h,4h,16b,8b 5166 // trn2 2d,4s,2s,8h,4h,16b,8b 5167 if (0) test_trn1_2d_2d_2d(TyD); 5168 if (0) test_trn1_4s_4s_4s(TyS); 5169 if (0) test_trn1_2s_2s_2s(TyS); 5170 if (0) test_trn1_8h_8h_8h(TyH); 5171 if (0) test_trn1_4h_4h_4h(TyH); 5172 if (0) test_trn1_16b_16b_16b(TyB); 5173 if (0) test_trn1_8b_8b_8b(TyB); 5174 if (0) test_trn2_2d_2d_2d(TyD); 5175 if (0) test_trn2_4s_4s_4s(TyS); 5176 if (0) test_trn2_2s_2s_2s(TyS); 5177 if (0) test_trn2_8h_8h_8h(TyH); 5178 if (0) test_trn2_4h_4h_4h(TyH); 5179 if (0) test_trn2_16b_16b_16b(TyB); 5180 if (0) test_trn2_8b_8b_8b(TyB); 5181 5182 // urecpe 4s,2s 5183 // ursqrte 4s,2s 5184 if (0) test_urecpe_4s_4s(TyS); 5185 if (0) test_urecpe_2s_2s(TyS); 5186 if (0) test_ursqrte_4s_4s(TyS); 5187 if (0) test_ursqrte_2s_2s(TyS); 5188 5189 // uzp1 2d,4s,2s,8h,4h,16b,8b 5190 // uzp2 2d,4s,2s,8h,4h,16b,8b 5191 // zip1 2d,4s,2s,8h,4h,16b,8b 5192 // zip2 2d,4s,2s,8h,4h,16b,8b 5193 if (0) test_uzp1_2d_2d_2d(TyD); 5194 if (0) test_uzp1_4s_4s_4s(TyS); 5195 if (0) test_uzp1_2s_2s_2s(TyS); 5196 if (0) test_uzp1_8h_8h_8h(TyH); 5197 if (0) test_uzp1_4h_4h_4h(TyH); 5198 if (0) test_uzp1_16b_16b_16b(TyB); 5199 if (0) test_uzp1_8b_8b_8b(TyB); 5200 if (0) test_uzp2_2d_2d_2d(TyD); 5201 if (0) test_uzp2_4s_4s_4s(TyS); 5202 if (0) test_uzp2_2s_2s_2s(TyS); 5203 if (0) test_uzp2_8h_8h_8h(TyH); 5204 if (0) test_uzp2_4h_4h_4h(TyH); 5205 if (0) test_uzp2_16b_16b_16b(TyB); 5206 if (0) test_uzp2_8b_8b_8b(TyB); 5207 if (0) test_zip1_2d_2d_2d(TyD); 5208 if (0) test_zip1_4s_4s_4s(TyS); 5209 if (0) test_zip1_2s_2s_2s(TyS); 5210 if (0) test_zip1_8h_8h_8h(TyH); 5211 if (0) test_zip1_4h_4h_4h(TyH); 5212 if (0) test_zip1_16b_16b_16b(TyB); 5213 if (0) test_zip1_8b_8b_8b(TyB); 5214 if (0) test_zip2_2d_2d_2d(TyD); 5215 if (0) test_zip2_4s_4s_4s(TyS); 5216 if (0) test_zip2_2s_2s_2s(TyS); 5217 if (0) test_zip2_8h_8h_8h(TyH); 5218 if (0) test_zip2_4h_4h_4h(TyH); 5219 if (0) test_zip2_16b_16b_16b(TyB); 5220 if (0) test_zip2_8b_8b_8b(TyB); 5221 5222 // xtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 5223 if (1) test_xtn_2s_2d(TyD); 5224 if (1) test_xtn2_4s_2d(TyD); 5225 if (1) test_xtn_4h_4s(TyS); 5226 if (1) test_xtn2_8h_4s(TyS); 5227 if (1) test_xtn_8b_8h(TyH); 5228 if (1) test_xtn2_16b_8h(TyH); 5229 5230 // ======================== MEM ======================== 5231 5232 // ld1 (multiple 1-element structures to 1/2/3/4 regs) 5233 // ld1 (single 1-element structure to one lane of 1 reg) 5234 // ld1r (single 1-element structure and rep to all lanes of 1 reg) 5235 5236 // ld2 (multiple 2-element structures to 2 regs) 5237 // ld2 (single 2-element structure to one lane of 2 regs) 5238 // ld2r (single 2-element structure and rep to all lanes of 2 regs) 5239 5240 // ld3 (multiple 3-element structures to 3 regs) 5241 // ld3 (single 3-element structure to one lane of 3 regs) 5242 // ld3r (single 3-element structure and rep to all lanes of 3 regs) 5243 5244 // ld4 (multiple 4-element structures to 4 regs) 5245 // ld4 (single 4-element structure to one lane of 4 regs) 5246 // ld4r (single 4-element structure and rep to all lanes of 4 regs) 5247 5248 // ldnp q_q_addr,d_d_addr,s_s_addr (load pair w/ non-temporal hint) 5249 // addr = reg + uimm7 * reg_size 5250 5251 // ldp q_q_addr,d_d_addr,s_s_addr (load pair) 5252 // addr = [Xn|SP],#imm or [Xn|SP,#imm]! or [Xn|SP,#imm] 5253 5254 // ldr q,d,s,h,b from addr 5255 // addr = [Xn|SP],#imm or [Xn|SP,#imm]! or [Xn|SP,#imm] 5256 5257 // ldr q,d,s from pc+#imm19 5258 5259 // ldr q,d,s,h,b from addr 5260 // addr = [Xn|SP, R <extend> <shift] 5261 5262 // ldur q,d,s,h,b from addr 5263 // addr = [Xn|SP,#imm] (unscaled offset) 5264 5265 // st1 (multiple 1-element structures from 1/2/3/4 regs) 5266 // st1 (single 1-element structure for 1 lane of 1 reg) 5267 5268 // st2 (multiple 2-element structures from 2 regs) 5269 // st2 (single 2-element structure from 1 lane of 2 regs) 5270 5271 // st3 (multiple 3-element structures from 3 regs) 5272 // st3 (single 3-element structure from 1 lane of 3 regs) 5273 5274 // st4 (multiple 4-element structures from 4 regs) 5275 // st4 (single 4-element structure from one lane of 4 regs) 5276 5277 // stnp q_q_addr, d_d_addr, s_s_addr 5278 // addr = [Xn|SP, #imm] 5279 5280 // stp q_q_addr, d_d_addr, s_s_addr 5281 // addr = [Xn|SP], #imm or [Xn|SP, #imm]! or [Xn|SP, #imm] 5282 5283 // str q,d,s,h,b_addr 5284 // addr = [Xn|SP], #simm or [Xn|SP, #simm]! or [Xn|SP, #pimm] 5285 5286 // str q,d,s,h,b_addr 5287 // addr = [Xn|SP, R <extend> <shift] 5288 5289 // stur q,d,s,h,b_addr 5290 // addr = [Xn|SP,#imm] (unscaled offset) 5291 5292 // ======================== CRYPTO ======================== 5293 5294 // aesd 16b (aes single round decryption) 5295 // aese 16b (aes single round encryption) 5296 // aesimc 16b (aes inverse mix columns) 5297 // aesmc 16b (aes mix columns) 5298 5299 // sha1c q_s_4s 5300 // sha1h s_s 5301 // sha1m q_s_4s 5302 // sha1p q_s_4s 5303 // sha1su0 4s_4s_4s 5304 // sha1su1 4s_4s 5305 5306 // sha256h2 q_q_4s 5307 // sha256h q_q_4s 5308 // sha256su0 4s_4s 5309 // sha256su1 4s_4s_4s 5310 5311 return 0; 5312} 5313 5314 5315/* ---------------------------------------------------------------- */ 5316/* -- Alphabetical list of insns -- */ 5317/* ---------------------------------------------------------------- */ 5318/* 5319 abs d 5320 abs 2d,4s,2s,8h,4h,16b,8b 5321 add d 5322 add 2d,4s,2s,8h,4h,16b,8b 5323 addhn 2s.2d.2d, 4s.2d.2d, h_from_s and b_from_h (add and get high half) 5324 addp d (add pairs, across) 5325 addp 2d,4s,2s,8h,4h,16b,8b 5326 addv 4s,8h,4h,16b,18b (reduce across vector) 5327 aesd 16b (aes single round decryption) 5328 aese 16b (aes single round encryption) 5329 aesimc 16b (aes inverse mix columns) 5330 aesmc 16b (aes mix columns) 5331 and 16b,8b 5332 5333 bic 4s,2s,8h,4h (vector, imm) 5334 also movi, mvni, orr 5335 5336 bic 16b,8b (vector,reg) (bit clear) 5337 bif 16b,8b (vector) (bit insert if false) 5338 bit 16b,8b (vector) (bit insert if true) 5339 bsl 16b,8b (vector) (bit select) 5340 5341 cls 4s,2s,8h,4h,16b,8b (count leading sign bits) 5342 clz 4s,2s,8h,4h,16b,8b (count leading zero bits) 5343 5344 cmeq d 5345 cmeq 2d,4s,2s,8h,4h,16b,8b 5346 cmeq_z d 5347 cmeq_z 2d,4s,2s,8h,4h,16b,8b 5348 5349 cmge d 5350 cmge 2d,4s,2s,8h,4h,16b,8b 5351 cmge_z d 5352 cmge_z 2d,4s,2s,8h,4h,16b,8b 5353 5354 cmgt d 5355 cmgt 2d,4s,2s,8h,4h,16b,8b 5356 cmgt_z d 5357 cmgt_z 2d,4s,2s,8h,4h,16b,8b 5358 5359 cmhi d 5360 cmhi 2d,4s,2s,8h,4h,16b,8b 5361 5362 cmhs d 5363 cmhs 2d,4s,2s,8h,4h,16b,8b 5364 5365 cmle_z d 5366 cmle_z 2d,4s,2s,8h,4h,16b,8b 5367 5368 cmlt_z d 5369 cmlt_z 2d,4s,2s,8h,4h,16b,8b 5370 5371 cmtst d 5372 cmtst 2d,4s,2s,8h,4h,16b,8b 5373 5374 cnt 16b,8b (population count per byte) 5375 5376 dup d,s,h,b (vec elem to scalar) 5377 dup 2d,4s,2s,8h,4h,16b,8b (vec elem to vector) 5378 dup 2d,4s,2s,8h,4h,16b,8b (general reg to vector) 5379 5380 eor 16b,8b (vector) 5381 ext 16b,8b,#imm4 (concat 2 vectors, then slice) 5382 5383 fabd d,s 5384 fabd 2d,4s,2s 5385 5386 fabs d,s 5387 fabs 2d,4s,2s 5388 5389 facge s,d (floating abs compare GE) 5390 facge 2d,4s,2s 5391 5392 facgt s,d (floating abs compare GE) 5393 facgt 2d,4s,2s 5394 5395 fadd d,s 5396 fadd 2d,4s,2s 5397 5398 faddp d,s (floating add pair) 5399 faddp 2d,4s,2s 5400 5401 fccmp d,s (floating point conditional quiet compare) 5402 fccmpe d,s (floating point conditional signaling compare) 5403 5404 fcmeq d,s 5405 fcmeq 2d,4s,2s 5406 fcmeq_z d,s 5407 fcmeq_z 2d,4s,2s 5408 5409 fcmge d,s 5410 fcmge 2d,4s,2s 5411 fcmge_z d,s 5412 fcmge_z 2d,4s,2s 5413 5414 fcmgt d,s 5415 fcmgt 2d,4s,2s 5416 fcmgt_z d,s 5417 fcmgt_z 2d,4s,2s 5418 5419 fcmle_z d,s 5420 fcmle_z 2d,4s,2s 5421 5422 fcmlt_z d,s 5423 fcmlt_z 2d,4s,2s 5424 5425 fcmp d,s (floating point quiet, set flags) 5426 fcmp_z d,s 5427 fcmpe d,s (floating point signaling, set flags) 5428 fcmpe_z d,s 5429 5430 fcsel d,s (fp cond select) 5431 5432 fcvt s_h,d_h,h_s,d_s,h_d,s_d (fp convert, scalar) 5433 5434 fcvtas d,s (fcvt to signed int, nearest, ties away) 5435 fcvtas 2d,4s,2s 5436 fcvtas w_s,x_s,w_d,x_d 5437 5438 fcvtau d,s (fcvt to unsigned int, nearest, ties away) 5439 fcvtau 2d,4s,2s 5440 fcvtau w_s,x_s,w_d,x_d 5441 5442 fcvtl{2} 4s/4h, 4s/8h, 2d/2s, 2d/4s (float convert to longer form) 5443 5444 fcvtms d,s (fcvt to signed int, minus inf) 5445 fcvtms 2d,4s,2s 5446 fcvtms w_s,x_s,w_d,x_d 5447 5448 fcvtmu d,s (fcvt to unsigned int, minus inf) 5449 fcvtmu 2d,4s,2s 5450 fcvtmu w_s,x_s,w_d,x_d 5451 5452 fcvtn{2} 4h/4s, 8h/4s, 2s/2d, 4s/2d (float convert to narrower form) 5453 5454 fcvtns d,s (fcvt to signed int, nearest) 5455 fcvtns 2d,4s,2s 5456 fcvtns w_s,x_s,w_d,x_d 5457 5458 fcvtnu d,s (fcvt to unsigned int, nearest) 5459 fcvtnu 2d,4s,2s 5460 fcvtnu w_s,x_s,w_d,x_d 5461 5462 fcvtps d,s (fcvt to signed int, plus inf) 5463 fcvtps 2d,4s,2s 5464 fcvtps w_s,x_s,w_d,x_d 5465 5466 fcvtpu d,s (fcvt to unsigned int, plus inf) 5467 fcvtpu 2d,4s,2s 5468 fcvtpu w_s,x_s,w_d,x_d 5469 5470 fcvtxn s_d (fcvt to lower prec narrow, rounding to odd) 5471 fcvtxn 2s_2d,4s_2d 5472 5473 fcvtzs s,d (fcvt to signed fixedpt, to zero) (w/ #fbits) 5474 fcvtzs 2d,4s,2s 5475 5476 fcvtzs s,d (fcvt to signed integer, to zero) 5477 fcvtzs 2d,4s,2s 5478 5479 fcvtzs w_s,x_s,w_d,x_d (fcvt to signed fixedpt, to zero) (w/ #fbits) 5480 5481 fcvtzs w_s,x_s,w_d,x_d (fcvt to signed integer, to zero) 5482 5483 fcvtzu s,d (fcvt to unsigned fixedpt, to zero) (w/ #fbits) 5484 fcvtzu 2d,4s,2s 5485 5486 fcvtzu s,d (fcvt to unsigned integer, to zero) 5487 fcvtzu 2d,4s,2s 5488 5489 fcvtzu w_s,x_s,w_d,x_d (fcvt to unsigned fixedpt, to zero) (w/ #fbits) 5490 5491 fcvtzu w_s,x_s,w_d,x_d (fcvt to unsigned integer, to zero) 5492 5493 fdiv d,s 5494 fdiv 2d,4s,2s 5495 5496 fmadd d,s 5497 fnmadd d,s 5498 fnmsub d,s 5499 fnmul d,s 5500 5501 fmax d,s 5502 fmin d,s 5503 5504 fmax 2d,4s,2s 5505 fmin 2d,4s,2s 5506 5507 fmaxnm d,s ("max number") 5508 fminnm d,s 5509 5510 fmaxnm 2d,4s,2s 5511 fminnm 2d,4s,2s 5512 5513 fmaxnmp d_2d,s_2s ("max number pairwise") 5514 fminnmp d_2d,s_2s 5515 5516 fmaxnmp 2d,4s,2s 5517 fminnmp 2d,4s,2s 5518 5519 fmaxnmv s_4s (maxnum across vector) 5520 fminnmv s_4s 5521 5522 fmaxp d_2d,s_2s (max of a pair) 5523 fminp d_2d,s_2s (max of a pair) 5524 5525 fmaxp 2d,4s,2s (max pairwise) 5526 fminp 2d,4s,2s 5527 5528 fmaxv s_4s (max across vector) 5529 fminv s_4s 5530 5531 fmla d_d_d[],s_s_s[] (by element) 5532 fmla 2d_2d_d[],4s_4s_s[],2s_2s_s[] 5533 5534 fmla 2d,4s,2s 5535 5536 fmls d_d_d[],s_s_s[] (by element) 5537 fmls 2d_2d_d[],4s_4s_s[],2s_2s_s[] 5538 5539 fmls 2d,4s,2s 5540 5541 fmov 2d,4s,2s #imm (part of the MOVI/MVNI/ORR/BIC imm group) 5542 5543 fmov d_d,s_s 5544 5545 fmov s_w,w_s,d_x,d[1]_x,x_d,x_d[1] 5546 5547 fmov d,s #imm 5548 5549 fmsub d,s 5550 5551 fmul d_d_d[],s_s_s[] 5552 fmul 2d_2d_d[],4s_4s_s[],2s_2s_s[] 5553 5554 fmul 2d,4s,2s 5555 fmul d,s 5556 5557 fmulx d_d_d[],s_s_s[] 5558 fmulx 2d_2d_d[],4s_4s_s[],2s_2s_s[] 5559 5560 fmulx d,s 5561 fmulx 2d,4s,2s 5562 5563 fneg d,s 5564 fneg 2d,4s,2s 5565 5566 frecpe d,s (recip estimate) 5567 frecpe 2d,4s,2s 5568 5569 frecps d,s (recip step) 5570 frecps 2d,4s,2s 5571 5572 frecpx d,s (recip exponent) 5573 5574 frinta 2d,4s,2s (round to integral, nearest away) 5575 frinta d,s 5576 5577 frinti 2d,4s,2s (round to integral, per FPCR) 5578 frinti d,s 5579 5580 frintm 2d,4s,2s (round to integral, minus inf) 5581 frintm d,s 5582 5583 frintn 2d,4s,2s (round to integral, nearest, to even) 5584 frintn d,s 5585 5586 frintp 2d,4s,2s (round to integral, plus inf) 5587 frintp d,s 5588 5589 frintx 2d,4s,2s (round to integral exact, per FPCR) 5590 frintx d,s 5591 5592 frintz 2d,4s,2s (round to integral, zero) 5593 frintz d,s 5594 5595 frsqrte d,s (est) 5596 frsqrte 2d,4s,2s 5597 5598 frsqrts d,s (step) 5599 frsqrts 2d,4s,2s 5600 5601 fsqrt d,s 5602 fsqrt 2d,4s,2s 5603 5604 fsub d,s 5605 fsub 2d,4s,2s 5606 5607 ins d[]_d[],s[]_s[],h[]_h[],b[]_b[] 5608 5609 ins d[]_x, s[]_w, h[]_w, b[]_w 5610 5611 ld1 (multiple 1-element structures to 1/2/3/4 regs) 5612 ld1 (single 1-element structure to one lane of 1 reg) 5613 ld1r (single 1-element structure and rep to all lanes of 1 reg) 5614 5615 ld2 (multiple 2-element structures to 2 regs) 5616 ld2 (single 2-element structure to one lane of 2 regs) 5617 ld2r (single 2-element structure and rep to all lanes of 2 regs) 5618 5619 ld3 (multiple 3-element structures to 3 regs) 5620 ld3 (single 3-element structure to one lane of 3 regs) 5621 ld3r (single 3-element structure and rep to all lanes of 3 regs) 5622 5623 ld4 (multiple 4-element structures to 4 regs) 5624 ld4 (single 4-element structure to one lane of 4 regs) 5625 ld4r (single 4-element structure and rep to all lanes of 4 regs) 5626 5627 ldnp q_q_addr,d_d_addr,s_s_addr (load pair w/ non-temporal hint) 5628 addr = reg + uimm7 * reg_size 5629 5630 ldp q_q_addr,d_d_addr,s_s_addr (load pair) 5631 addr = [Xn|SP],#imm or [Xn|SP,#imm]! or [Xn|SP,#imm] 5632 5633 ldr q,d,s,h,b from addr 5634 addr = [Xn|SP],#imm or [Xn|SP,#imm]! or [Xn|SP,#imm] 5635 5636 ldr q,d,s from pc+#imm19 5637 5638 ldr q,d,s,h,b from addr 5639 addr = [Xn|SP, R <extend> <shift] 5640 5641 ldur q,d,s,h,b from addr 5642 addr = [Xn|SP,#imm] (unscaled offset) 5643 5644 mla 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 5645 mla 4s,2s,8h,4h,16b,8b 5646 5647 mls 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 5648 mls 4s,2s,8h,4h,16b,8b 5649 5650 movi 16b,8b #imm8, LSL #0 5651 movi 8h,4h #imm8, LSL #0 or 8 5652 movi 4s,2s #imm8, LSL #0, 8, 16, 24 5653 movi 4s,2s #imm8, MSL #8 or 16 5654 movi d, #imm64 5655 movi 2d, #imm64 5656 5657 mul 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 5658 mul 4s,2s,8h,4h,16b,8b 5659 5660 mvni 8h,4h #imm8, LSL #0 or 8 5661 mvni 4s,2s #imm8, LSL #0, 8, 16, 24 5662 mvni 4s,2s #imm8, MSL #8 or 16 5663 5664 neg d 5665 neg 2d,4s,2s,8h,4h,16b,8b 5666 5667 not 16b,8b 5668 5669 orn 16b,8b 5670 5671 orr 8h,4h #imm8, LSL #0 or 8 5672 orr 4s,2s #imm8, LSL #0, 8, 16 or 24 5673 5674 orr 16b,8b 5675 5676 pmul 16b,8b 5677 5678 pmull{2} 8h_8b_8b,8h_16b_16b,1q_1d_1d,1d_2d_2d 5679 5680 raddhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 5681 5682 rbit 16b,8b 5683 rev16 16b,8b 5684 rev32 16b,8b,8h,4h 5685 rev64 16b,8b,8h,4h,4s,2s 5686 5687 rshrn{2} 2s/4s_2d, 8h/4h_4s, 2s/4s_2d, #imm in 1 .. elem_bits 5688 5689 rsubhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 5690 5691 saba 16b,8b,8h,4h,4s,2s 5692 sabal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5693 5694 sabd 16b,8b,8h,4h,4s,2s 5695 sabdl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5696 5697 sadalp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 5698 5699 saddl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5700 5701 saddlp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 5702 5703 saddlv h_16b/8b, s_8h/4h, d_4s 5704 5705 saddw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s 5706 5707 scvtf d,s _#fbits 5708 scvtf 2d,4s,2s _#fbits 5709 5710 scvtf d,s 5711 scvtf 2d,4s,2s 5712 5713 scvtf s_w, d_w, s_x, d_x, _#fbits 5714 scvtf s_w, d_w, s_x, d_x 5715 5716 sha1c q_s_4s 5717 sha1h s_s 5718 sha1m q_s_4s 5719 sha1p q_s_4s 5720 sha1su0 4s_4s_4s 5721 sha1su1 4s_4s 5722 sha256h2 q_q_4s 5723 sha256h q_q_4s 5724 sha256su0 4s_4s 5725 sha256su1 4s_4s_4s 5726 5727 shadd 16b,8b,8h,4h,4s,2s 5728 5729 shl d_#imm 5730 shl 16b,8b,8h,4h,4s,2s,2d _#imm 5731 5732 shll{2} 8h_8b/16b_#8, 4s_4h/8h_#16, 2d_2s/4s_#32 5733 5734 shrn{2} 2s/4s_2d, 8h/4h_4s, 2s/4s_2d, #imm in 1 .. elem_bits 5735 5736 shsub 16b,8b,8h,4h,4s,2s 5737 5738 sli d_#imm 5739 sli 2d,4s,2s,8h,4h,16b,8b _#imm 5740 5741 smax 4s,2s,8h,4h,16b,8b 5742 5743 smaxp 4s,2s,8h,4h,16b,8b 5744 5745 smaxv s_4s,h_8h,h_4h,b_16b,b_8b 5746 5747 smin 4s,2s,8h,4h,16b,8b 5748 5749 sminp 4s,2s,8h,4h,16b,8b 5750 5751 sminv s_4s,h_8h,h_4h,b_16b,b_8b 5752 5753 smlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 5754 smlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5755 5756 smlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 5757 smlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5758 5759 smov w_b[], w_h[], x_b[], x_h[], x_s[] 5760 5761 smull{2} 2d_2s/4s_s[]. 4s_4h/8h_h[] 5762 smull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5763 5764 sqabs d,s,h,b 5765 sqabs 2d,4s,2s,8h,4h,16b,8b 5766 5767 sqadd d,s,h,b 5768 sqadd 2d,4s,2s,8h,4h,16b,8b 5769 5770 sqdmlal d_s_s[], s_h_h[] 5771 sqdmlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 5772 5773 sqdmlal d_s_s, s_h_h 5774 sqdmlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 5775 5776 sqdmlsl d_s_s[], s_h_h[] 5777 sqdmlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 5778 5779 sqdmlsl d_s_s, s_h_h 5780 sqdmlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 5781 5782 sqdmulh s_s_s[], h_h_h[] 5783 sqdmulh 4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[] 5784 5785 sqdmulh h,s 5786 sqdmulh 4s,2s,8h,4h 5787 5788 sqdmull d_s_s[], s_h_h[] 5789 sqdmull{2} 2d_2s/4s_s[], 4s_4h/2h_h[] 5790 5791 sqdmull d_s_s,s_h_h 5792 sqdmull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 5793 5794 sqneg d,s,h,b 5795 sqneg 2d,4s,2s,8h,4h,16b,8b 5796 5797 sqrdmulh s_s_s[], h_h_h[] 5798 sqrdmulh 4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[] 5799 5800 sqrdmulh h,s 5801 sqrdmulh 4s,2s,8h,4h 5802 5803 sqrshl d,s,h,b 5804 sqrshl 2d,4s,2s,8h,4h,16b,8b 5805 5806 sqrshrn s_d, h_s, b_h #imm 5807 sqrshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 5808 5809 sqrshrun s_d, h_s, b_h #imm 5810 sqrshrun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 5811 5812 sqshl d,s,h,b _#imm 5813 sqshl 2d,4s,2s,8h,4h,16b,8b _#imm 5814 5815 sqshl d,s,h,b 5816 sqshl 2d,4s,2s,8h,4h,16b,8b 5817 5818 sqshlu d,s,h,b _#imm 5819 sqshlu 2d,4s,2s,8h,4h,16b,8b _#imm 5820 5821 sqshrn s_d, h_s, b_h #imm 5822 sqshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 5823 5824 sqshrun s_d, h_s, b_h #imm 5825 sqshrun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 5826 5827 sqsub d,s,h,b 5828 sqsub 2d,4s,2s,8h,4h,16b,8b 5829 5830 sqxtn s_d,h_s,b_h 5831 sqxtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 5832 5833 sqxtun s_d,h_s,b_h 5834 sqxtun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 5835 5836 srhadd 4s,2s,8h,4h,16b,8b 5837 5838 sri d_#imm 5839 sri 2d,4s,2s,8h,4h,16b,8b _#imm 5840 5841 srshl (reg) d 5842 srshl 2d,4s,2s,8h,4h,16b,8b 5843 5844 srshr (imm) d 5845 srshr 2d,4s,2s,8h,4h,16b,8b 5846 5847 srsra (imm) d 5848 srsra 2d,4s,2s,8h,4h,16b,8b 5849 5850 sshl (reg) d 5851 sshl 2d,4s,2s,8h,4h,16b,8b 5852 5853 sshll{2} (imm) 2d_2s/4s 4s_4h/8h, 8h_8b/16b 5854 5855 sshr (imm) d 5856 sshr 2d,4s,2s,8h,4h,16b,8b 5857 5858 ssra (imm) d 5859 ssra 2d,4s,2s,8h,4h,16b,8b 5860 5861 ssubl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5862 5863 ssubw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s 5864 5865 st1 (multiple 1-element structures from 1/2/3/4 regs) 5866 st1 (single 1-element structure for 1 lane of 1 reg) 5867 5868 st2 (multiple 2-element structures from 2 regs) 5869 st2 (single 2-element structure from 1 lane of 2 regs) 5870 5871 st3 (multiple 3-element structures from 3 regs) 5872 st3 (single 3-element structure from 1 lane of 3 regs) 5873 5874 st4 (multiple 4-element structures from 4 regs) 5875 st4 (single 4-element structure from one lane of 4 regs) 5876 5877 stnp q_q_addr, d_d_addr, s_s_addr 5878 addr = [Xn|SP, #imm] 5879 5880 stp q_q_addr, d_d_addr, s_s_addr 5881 addr = [Xn|SP], #imm or [Xn|SP, #imm]! or [Xn|SP, #imm] 5882 5883 str q,d,s,h,b_addr 5884 addr = [Xn|SP], #simm or [Xn|SP, #simm]! or [Xn|SP, #pimm] 5885 5886 str q,d,s,h,b_addr 5887 addr = [Xn|SP, R <extend> <shift] 5888 5889 stur q,d,s,h,b_addr 5890 addr = [Xn|SP,#imm] (unscaled offset) 5891 5892 sub d 5893 sub 2d,4s,2s,8h,4h,16b,8b 5894 5895 subhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 5896 5897 suqadd d,s,h,b 5898 suqadd 2d,4s,2s,8h,4h,16b,8b 5899 5900 tbl 8b_{16b}_8b, 16b_{16b}_16b 5901 tbl 8b_{16b,16b}_8b, 16b_{16b,16b}_16b 5902 tbl 8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b 5903 tbl 8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b 5904 5905 tbx 8b_{16b}_8b, 16b_{16b}_16b 5906 tbx 8b_{16b,16b}_8b, 16b_{16b,16b}_16b 5907 tbx 8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b 5908 tbx 8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b 5909 5910 trn1 2d,4s,2s,8h,4h,16b,8b 5911 trn2 2d,4s,2s,8h,4h,16b,8b 5912 5913 uaba 16b,8b,8h,4h,4s,2s 5914 uabal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5915 5916 uabd 16b,8b,8h,4h,4s,2s 5917 uabdl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5918 5919 uadalp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 5920 5921 uaddl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5922 5923 uaddlp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 5924 5925 uaddlv h_16b/8b, s_8h/4h, d_4s 5926 5927 uaddw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s 5928 5929 ucvtf d,s _#fbits 5930 ucvtf 2d,4s,2s _#fbits 5931 5932 ucvtf d,s 5933 ucvtf 2d,4s,2s 5934 5935 ucvtf s_w, d_w, s_x, d_x, _#fbits 5936 ucvtf s_w, d_w, s_x, d_x 5937 5938 uhadd 16b,8b,8h,4h,4s,2s 5939 5940 uhsub 16b,8b,8h,4h,4s,2s 5941 5942 umax 4s,2s,8h,4h,16b,8b 5943 5944 umaxp 4s,2s,8h,4h,16b,8b 5945 5946 umaxv s_4s,h_8h,h_4h,b_16b,b_8b 5947 5948 umin 4s,2s,8h,4h,16b,8b 5949 5950 uminp 4s,2s,8h,4h,16b,8b 5951 5952 uminv s_4s,h_8h,h_4h,b_16b,b_8b 5953 5954 umlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 5955 umlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5956 5957 umlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 5958 umlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5959 5960 umov w_b[], w_h[], x_b[], x_h[], x_s[] 5961 5962 umull{2} 2d_2s/4s_s[]. 4s_4h/8h_h[] 5963 umull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 5964 5965 uqadd d,s,h,b 5966 uqadd 2d,4s,2s,8h,4h,16b,8b 5967 5968 uqrshl d,s,h,b 5969 uqrshl 2d,4s,2s,8h,4h,16b,8b 5970 5971 uqrshrn s_d, h_s, b_h #imm 5972 uqrshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 5973 5974 uqshl d,s,h,b _#imm 5975 uqshl 2d,4s,2s,8h,4h,16b,8b _#imm 5976 5977 uqshl d,s,h,b 5978 uqshl 2d,4s,2s,8h,4h,16b,8b 5979 5980 uqshrn s_d, h_s, b_h #imm 5981 uqshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 5982 5983 uqsub d,s,h,b 5984 uqsub 2d,4s,2s,8h,4h,16b,8b 5985 5986 uqxtn s_d,h_s,b_h 5987 uqxtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 5988 5989 urecpe 4s,2s 5990 5991 urhadd 4s,2s,8h,4h,16b,8b 5992 5993 urshl (reg) d 5994 urshl 2d,4s,2s,8h,4h,16b,8b 5995 5996 urshr (imm) d 5997 urshr 2d,4s,2s,8h,4h,16b,8b 5998 5999 ursqrte 4s,2s 6000 6001 ursra (imm) d 6002 ursra 2d,4s,2s,8h,4h,16b,8b 6003 6004 ushl (reg) d 6005 ushl 2d,4s,2s,8h,4h,16b,8b 6006 6007 ushll{2} (imm) 2d_2s/4s 4s_4h/8h, 8h_8b/16b 6008 6009 ushr (imm) d 6010 ushr 2d,4s,2s,8h,4h,16b,8b 6011 6012 usqadd d,s,h,b 6013 usqadd 2d,4s,2s,8h,4h,16b,8b 6014 6015 usra (imm) d 6016 usra 2d,4s,2s,8h,4h,16b,8b 6017 6018 usubl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6019 6020 usubw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s 6021 6022 uzp1 2d,4s,2s,8h,4h,16b,8b 6023 uzp2 2d,4s,2s,8h,4h,16b,8b 6024 6025 xtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 6026 6027 zip1 2d,4s,2s,8h,4h,16b,8b 6028 zip2 2d,4s,2s,8h,4h,16b,8b 6029*/ 6030 6031 6032/* ---------------------------------------------------------------- */ 6033/* -- List of insns, grouped somewhat by laneage configuration -- */ 6034/* ---------------------------------------------------------------- */ 6035/* 6036 ======================== FP ======================== 6037 6038 fabs d,s 6039 fabs 2d,4s,2s 6040 6041 fneg d,s 6042 fneg 2d,4s,2s 6043 6044 fsqrt d,s 6045 fsqrt 2d,4s,2s 6046 6047 fadd d,s 6048 fsub d,s 6049 6050 fadd 2d,4s,2s 6051 fsub 2d,4s,2s 6052 6053 fabd d,s 6054 fabd 2d,4s,2s 6055 6056 faddp d,s (floating add pair) 6057 faddp 2d,4s,2s 6058 6059 fccmp d,s (floating point conditional quiet compare) 6060 fccmpe d,s (floating point conditional signaling compare) 6061 6062 fcmeq d,s 6063 fcmge d,s 6064 fcmgt d,s 6065 facgt d,s (floating abs compare GE) 6066 facge d,s (floating abs compare GE) 6067 6068 fcmeq 2d,4s,2s 6069 fcmge 2d,4s,2s 6070 fcmgt 2d,4s,2s 6071 facge 2d,4s,2s 6072 facgt 2d,4s,2s 6073 6074 fcmeq_z d,s 6075 fcmge_z d,s 6076 fcmgt_z d,s 6077 fcmle_z d,s 6078 fcmlt_z d,s 6079 6080 fcmeq_z 2d,4s,2s 6081 fcmge_z 2d,4s,2s 6082 fcmgt_z 2d,4s,2s 6083 fcmle_z 2d,4s,2s 6084 fcmlt_z 2d,4s,2s 6085 6086 fcmp_z d,s 6087 fcmpe_z d,s 6088 fcmp d,s (floating point quiet, set flags) 6089 fcmpe d,s (floating point signaling, set flags) 6090 6091 fcsel d,s (fp cond select) 6092 6093 fdiv d,s 6094 fdiv 2d,4s,2s 6095 6096 fmadd d,s 6097 fnmadd d,s 6098 fmsub d,s 6099 fnmsub d,s 6100 6101 fnmul d,s 6102 6103 fmax d,s 6104 fmin d,s 6105 fmaxnm d,s ("max number") 6106 fminnm d,s 6107 6108 fmax 2d,4s,2s 6109 fmin 2d,4s,2s 6110 fmaxnm 2d,4s,2s 6111 fminnm 2d,4s,2s 6112 6113 fmaxnmp d_2d,s_2s ("max number pairwise") 6114 fminnmp d_2d,s_2s 6115 6116 fmaxnmp 2d,4s,2s 6117 fminnmp 2d,4s,2s 6118 6119 fmaxnmv s_4s (maxnum across vector) 6120 fminnmv s_4s 6121 6122 fmaxp d_2d,s_2s (max of a pair) 6123 fminp d_2d,s_2s (max of a pair) 6124 6125 fmaxp 2d,4s,2s (max pairwise) 6126 fminp 2d,4s,2s 6127 6128 fmaxv s_4s (max across vector) 6129 fminv s_4s 6130 6131 fmla 2d,4s,2s 6132 fmls 2d,4s,2s 6133 6134 fmla d_d_d[],s_s_s[] (by element) 6135 fmls d_d_d[],s_s_s[] (by element) 6136 6137 fmla 2d_2d_d[],4s_4s_s[],2s_2s_s[] 6138 fmls 2d_2d_d[],4s_4s_s[],2s_2s_s[] 6139 6140 fmov 2d,4s,2s #imm (part of the MOVI/MVNI/ORR/BIC imm group) 6141 6142 fmov d_d,s_s 6143 6144 fmov s_w,w_s,d_x,d[1]_x,x_d,x_d[1] 6145 6146 fmov d,s #imm 6147 6148 fmul d_d_d[],s_s_s[] 6149 fmul 2d_2d_d[],4s_4s_s[],2s_2s_s[] 6150 6151 fmul 2d,4s,2s 6152 fmul d,s 6153 6154 fmulx d_d_d[],s_s_s[] 6155 fmulx 2d_2d_d[],4s_4s_s[],2s_2s_s[] 6156 6157 fmulx d,s 6158 fmulx 2d,4s,2s 6159 6160 frecpe d,s (recip estimate) 6161 frecpe 2d,4s,2s 6162 6163 frecps d,s (recip step) 6164 frecps 2d,4s,2s 6165 6166 frecpx d,s (recip exponent) 6167 6168 frinta d,s 6169 frinti d,s 6170 frintm d,s 6171 frintn d,s 6172 frintp d,s 6173 frintx d,s 6174 frintz d,s 6175 6176 frinta 2d,4s,2s (round to integral, nearest away) 6177 frinti 2d,4s,2s (round to integral, per FPCR) 6178 frintm 2d,4s,2s (round to integral, minus inf) 6179 frintn 2d,4s,2s (round to integral, nearest, to even) 6180 frintp 2d,4s,2s (round to integral, plus inf) 6181 frintx 2d,4s,2s (round to integral exact, per FPCR) 6182 frintz 2d,4s,2s (round to integral, zero) 6183 6184 frsqrte d,s (est) 6185 frsqrte 2d,4s,2s 6186 6187 frsqrts d,s (step) 6188 frsqrts 2d,4s,2s 6189 6190 ======================== CONV ======================== 6191 6192 fcvt s_h,d_h,h_s,d_s,h_d,s_d (fp convert, scalar) 6193 6194 fcvtl{2} 4s/4h, 4s/8h, 2d/2s, 2d/4s (float convert to longer form) 6195 6196 fcvtn{2} 4h/4s, 8h/4s, 2s/2d, 4s/2d (float convert to narrower form) 6197 6198 fcvtas d,s (fcvt to signed int, nearest, ties away) 6199 fcvtau d,s (fcvt to unsigned int, nearest, ties away) 6200 fcvtas 2d,4s,2s 6201 fcvtau 2d,4s,2s 6202 fcvtas w_s,x_s,w_d,x_d 6203 fcvtau w_s,x_s,w_d,x_d 6204 6205 fcvtms d,s (fcvt to signed int, minus inf) 6206 fcvtmu d,s (fcvt to unsigned int, minus inf) 6207 fcvtms 2d,4s,2s 6208 fcvtmu 2d,4s,2s 6209 fcvtms w_s,x_s,w_d,x_d 6210 fcvtmu w_s,x_s,w_d,x_d 6211 6212 fcvtns d,s (fcvt to signed int, nearest) 6213 fcvtnu d,s (fcvt to unsigned int, nearest) 6214 fcvtns 2d,4s,2s 6215 fcvtnu 2d,4s,2s 6216 fcvtns w_s,x_s,w_d,x_d 6217 fcvtnu w_s,x_s,w_d,x_d 6218 6219 fcvtps d,s (fcvt to signed int, plus inf) 6220 fcvtpu d,s (fcvt to unsigned int, plus inf) 6221 fcvtps 2d,4s,2s 6222 fcvtpu 2d,4s,2s 6223 fcvtps w_s,x_s,w_d,x_d 6224 fcvtpu w_s,x_s,w_d,x_d 6225 6226 fcvtzs d,s (fcvt to signed integer, to zero) 6227 fcvtzu d,s (fcvt to unsigned integer, to zero) 6228 fcvtzs 2d,4s,2s 6229 fcvtzu 2d,4s,2s 6230 fcvtzs w_s,x_s,w_d,x_d 6231 fcvtzu w_s,x_s,w_d,x_d 6232 6233 fcvtzs d,s (fcvt to signed fixedpt, to zero) (w/ #fbits) 6234 fcvtzu d,s (fcvt to unsigned fixedpt, to zero) (w/ #fbits) 6235 fcvtzs 2d,4s,2s 6236 fcvtzu 2d,4s,2s 6237 fcvtzs w_s,x_s,w_d,x_d (fcvt to signed fixedpt, to zero) (w/ #fbits) 6238 fcvtzu w_s,x_s,w_d,x_d (fcvt to unsigned fixedpt, to zero) (w/ #fbits) 6239 6240 fcvtxn s_d (fcvt to lower prec narrow, rounding to odd) 6241 fcvtxn 2s_2d,4s_2d 6242 6243 scvtf d,s _#fbits 6244 ucvtf d,s _#fbits 6245 6246 scvtf 2d,4s,2s _#fbits 6247 ucvtf 2d,4s,2s _#fbits 6248 6249 scvtf d,s 6250 ucvtf d,s 6251 6252 scvtf 2d,4s,2s 6253 ucvtf 2d,4s,2s 6254 6255 scvtf s_w, d_w, s_x, d_x, _#fbits 6256 ucvtf s_w, d_w, s_x, d_x, _#fbits 6257 6258 scvtf s_w, d_w, s_x, d_x 6259 ucvtf s_w, d_w, s_x, d_x 6260 6261 ======================== INT ======================== 6262 6263 abs d 6264 neg d 6265 6266 abs 2d,4s,2s,8h,4h,16b,8b 6267 neg 2d,4s,2s,8h,4h,16b,8b 6268 6269 add d 6270 sub d 6271 6272 add 2d,4s,2s,8h,4h,16b,8b 6273 sub 2d,4s,2s,8h,4h,16b,8b 6274 6275 addhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 6276 subhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 6277 raddhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 6278 rsubhn{2} 2s/4s_2d_2d, 4h/8h_4s_4s, 8b/16b_8h_8h 6279 6280 addp d (add pairs, across) 6281 addp 2d,4s,2s,8h,4h,16b,8b 6282 addv 4s,8h,4h,16b,18b (reduce across vector) 6283 6284 and 16b,8b 6285 6286 orr 8h,4h #imm8, LSL #0 or 8 6287 orr 4s,2s #imm8, LSL #0, 8, 16 or 24 6288 bic 8h,4h #imm8, LSL #0 or 8 6289 bic 4s,2s #imm8, LSL #0, 8, 16 or 24 6290 also movi, mvni 6291 6292 bic 16b,8b (vector,reg) (bit clear) 6293 bif 16b,8b (vector) (bit insert if false) 6294 bit 16b,8b (vector) (bit insert if true) 6295 bsl 16b,8b (vector) (bit select) 6296 6297 cls 4s,2s,8h,4h,16b,8b (count leading sign bits) 6298 clz 4s,2s,8h,4h,16b,8b (count leading zero bits) 6299 6300 cmeq d 6301 cmge d 6302 cmgt d 6303 cmhi d 6304 cmhs d 6305 cmtst d 6306 6307 cmeq 2d,4s,2s,8h,4h,16b,8b 6308 cmge 2d,4s,2s,8h,4h,16b,8b 6309 cmgt 2d,4s,2s,8h,4h,16b,8b 6310 cmhi 2d,4s,2s,8h,4h,16b,8b 6311 cmhs 2d,4s,2s,8h,4h,16b,8b 6312 cmtst 2d,4s,2s,8h,4h,16b,8b 6313 6314 cmeq_z d 6315 cmge_z d 6316 cmgt_z d 6317 cmle_z d 6318 cmlt_z d 6319 6320 cmeq_z 2d,4s,2s,8h,4h,16b,8b 6321 cmge_z 2d,4s,2s,8h,4h,16b,8b 6322 cmgt_z 2d,4s,2s,8h,4h,16b,8b 6323 cmle_z 2d,4s,2s,8h,4h,16b,8b 6324 cmlt_z 2d,4s,2s,8h,4h,16b,8b 6325 6326 cnt 16b,8b (population count per byte) 6327 6328 dup d,s,h,b (vec elem to scalar) 6329 dup 2d,4s,2s,8h,4h,16b,8b (vec elem to vector) 6330 dup 2d,4s,2s,8h,4h,16b,8b (general reg to vector) 6331 6332 eor 16b,8b (vector) 6333 ext 16b,8b,#imm4 (concat 2 vectors, then slice) 6334 6335 ins d[]_d[],s[]_s[],h[]_h[],b[]_b[] 6336 6337 ins d[]_x, s[]_w, h[]_w, b[]_w 6338 6339 mla 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 6340 mla 4s,2s,8h,4h,16b,8b 6341 6342 mls 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 6343 mls 4s,2s,8h,4h,16b,8b 6344 6345 movi 16b,8b #imm8, LSL #0 6346 movi 8h,4h #imm8, LSL #0 or 8 6347 movi 4s,2s #imm8, LSL #0, 8, 16, 24 6348 movi 4s,2s #imm8, MSL #8 or 16 6349 movi d, #imm64 6350 movi 2d, #imm64 6351 6352 mul 4s_4s_s[],2s_2s_s[],8h_8h_h[],4h_4h_h[] 6353 mul 4s,2s,8h,4h,16b,8b 6354 6355 mvni 8h,4h #imm8, LSL #0 or 8 6356 mvni 4s,2s #imm8, LSL #0, 8, 16, 24 6357 mvni 4s,2s #imm8, MSL #8 or 16 6358 6359 not 16b,8b 6360 6361 orn 16b,8b 6362 orr 16b,8b 6363 6364 pmul 16b,8b 6365 6366 pmull{2} 8h_8b_8b,8h_16b_16b,1q_1d_1d,1d_2d_2d 6367 6368 rbit 16b,8b 6369 rev16 16b,8b 6370 rev32 16b,8b,8h,4h 6371 rev64 16b,8b,8h,4h,4s,2s 6372 6373 saba 16b,8b,8h,4h,4s,2s 6374 uaba 16b,8b,8h,4h,4s,2s 6375 6376 sabal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6377 uabal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6378 6379 sabd 16b,8b,8h,4h,4s,2s 6380 uabd 16b,8b,8h,4h,4s,2s 6381 6382 sabdl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6383 uabdl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6384 6385 sadalp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 6386 uadalp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 6387 6388 saddl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6389 uaddl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6390 ssubl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6391 usubl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6392 6393 saddlp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 6394 uaddlp 4h_8b,8h_16b,2s_4h,4s_8h,1d_2s,2d_4s 6395 6396 saddlv h_16b/8b, s_8h/4h, d_4s 6397 uaddlv h_16b/8b, s_8h/4h, d_4s 6398 6399 saddw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s 6400 uaddw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s 6401 ssubw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s 6402 usubw{2} 8h_8h_16b/8b, 4s_4s_8h/4h, 2d_2d_2s/4s 6403 6404 shadd 16b,8b,8h,4h,4s,2s 6405 uhadd 16b,8b,8h,4h,4s,2s 6406 shsub 16b,8b,8h,4h,4s,2s 6407 uhsub 16b,8b,8h,4h,4s,2s 6408 6409 shl d_#imm 6410 shl 16b,8b,8h,4h,4s,2s,2d _#imm 6411 6412 shll{2} 8h_8b/16b_#8, 4s_4h/8h_#16, 2d_2s/4s_#32 6413 6414 shrn{2} 2s/4s_2d, 8h/4h_4s, 2s/4s_2d, #imm in 1 .. elem_bits 6415 rshrn{2} 2s/4s_2d, 8h/4h_4s, 2s/4s_2d, #imm in 1 .. elem_bits 6416 6417 sli d_#imm 6418 sri d_#imm 6419 6420 sli 2d,4s,2s,8h,4h,16b,8b _#imm 6421 sri 2d,4s,2s,8h,4h,16b,8b _#imm 6422 6423 smax 4s,2s,8h,4h,16b,8b 6424 umax 4s,2s,8h,4h,16b,8b 6425 smin 4s,2s,8h,4h,16b,8b 6426 umin 4s,2s,8h,4h,16b,8b 6427 6428 smaxp 4s,2s,8h,4h,16b,8b 6429 umaxp 4s,2s,8h,4h,16b,8b 6430 sminp 4s,2s,8h,4h,16b,8b 6431 uminp 4s,2s,8h,4h,16b,8b 6432 6433 smaxv s_4s,h_8h,h_4h,b_16b,b_8b 6434 umaxv s_4s,h_8h,h_4h,b_16b,b_8b 6435 sminv s_4s,h_8h,h_4h,b_16b,b_8b 6436 uminv s_4s,h_8h,h_4h,b_16b,b_8b 6437 6438 smlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 6439 umlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 6440 smlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 6441 umlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 6442 smull{2} 2d_2s/4s_s[]. 4s_4h/8h_h[] 6443 umull{2} 2d_2s/4s_s[]. 4s_4h/8h_h[] 6444 6445 smlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6446 umlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6447 smlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6448 umlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6449 smull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6450 umull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h), 8h_(8b_8b)/(16b_16b) 6451 6452 smov w_b[], w_h[], x_b[], x_h[], x_s[] 6453 umov w_b[], w_h[], x_b[], x_h[], x_s[] 6454 6455 sqabs d,s,h,b 6456 sqneg d,s,h,b 6457 6458 sqabs 2d,4s,2s,8h,4h,16b,8b 6459 sqneg 2d,4s,2s,8h,4h,16b,8b 6460 6461 sqadd d,s,h,b 6462 uqadd d,s,h,b 6463 sqsub d,s,h,b 6464 uqsub d,s,h,b 6465 6466 sqadd 2d,4s,2s,8h,4h,16b,8b 6467 uqadd 2d,4s,2s,8h,4h,16b,8b 6468 sqsub 2d,4s,2s,8h,4h,16b,8b 6469 uqsub 2d,4s,2s,8h,4h,16b,8b 6470 6471 sqdmlal d_s_s[], s_h_h[] 6472 sqdmlsl d_s_s[], s_h_h[] 6473 sqdmull d_s_s[], s_h_h[] 6474 6475 sqdmlal{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 6476 sqdmlsl{2} 2d_2s/4s_s[], 4s_4h/8h_h[] 6477 sqdmull{2} 2d_2s/4s_s[], 4s_4h/2h_h[] 6478 6479 sqdmlal d_s_s, s_h_h 6480 sqdmlsl d_s_s, s_h_h 6481 sqdmull d_s_s, s_h_h 6482 6483 sqdmlal{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 6484 sqdmlsl{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 6485 sqdmull{2} 2d_(2s_2s)/(4s_4s), 4s_(4h_4h)/(8h_8h) 6486 6487 sqdmulh s_s_s[], h_h_h[] 6488 sqrdmulh s_s_s[], h_h_h[] 6489 6490 sqdmulh 4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[] 6491 sqrdmulh 4s_4s_s[], 2s_2s_s[], 8h_8h_h[], 4h_4h_h[] 6492 6493 sqdmulh h,s 6494 sqrdmulh h,s 6495 6496 sqdmulh 4s,2s,8h,4h 6497 sqrdmulh 4s,2s,8h,4h 6498 6499 sqshl d,s,h,b 6500 uqshl d,s,h,b 6501 sqrshl d,s,h,b 6502 uqrshl d,s,h,b 6503 6504 sqshl 2d,4s,2s,8h,4h,16b,8b 6505 uqshl 2d,4s,2s,8h,4h,16b,8b 6506 sqrshl 2d,4s,2s,8h,4h,16b,8b 6507 uqrshl 2d,4s,2s,8h,4h,16b,8b 6508 6509 sqrshrn s_d, h_s, b_h #imm 6510 uqrshrn s_d, h_s, b_h #imm 6511 sqshrn s_d, h_s, b_h #imm 6512 uqshrn s_d, h_s, b_h #imm 6513 6514 sqrshrun s_d, h_s, b_h #imm 6515 sqshrun s_d, h_s, b_h #imm 6516 6517 sqrshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 6518 uqrshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 6519 sqshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 6520 uqshrn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 6521 6522 sqrshrun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 6523 sqshrun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h, #imm 6524 6525 sqshl d,s,h,b _#imm 6526 uqshl d,s,h,b _#imm 6527 sqshlu d,s,h,b _#imm 6528 6529 sqshl 2d,4s,2s,8h,4h,16b,8b _#imm 6530 uqshl 2d,4s,2s,8h,4h,16b,8b _#imm 6531 sqshlu 2d,4s,2s,8h,4h,16b,8b _#imm 6532 6533 sqxtn s_d,h_s,b_h 6534 uqxtn s_d,h_s,b_h 6535 sqxtun s_d,h_s,b_h 6536 6537 sqxtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 6538 uqxtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 6539 sqxtun{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 6540 6541 srhadd 4s,2s,8h,4h,16b,8b 6542 urhadd 4s,2s,8h,4h,16b,8b 6543 6544 sshl (reg) d 6545 ushl (reg) d 6546 sshr (imm) d 6547 ushr (imm) d 6548 ssra (imm) d 6549 usra (imm) d 6550 6551 srshl (reg) d 6552 urshl (reg) d 6553 srshr (imm) d 6554 urshr (imm) d 6555 srsra (imm) d 6556 ursra (imm) d 6557 6558 sshl 2d,4s,2s,8h,4h,16b,8b 6559 ushl 2d,4s,2s,8h,4h,16b,8b 6560 sshr 2d,4s,2s,8h,4h,16b,8b 6561 ushr 2d,4s,2s,8h,4h,16b,8b 6562 ssra 2d,4s,2s,8h,4h,16b,8b 6563 usra 2d,4s,2s,8h,4h,16b,8b 6564 6565 srshl 2d,4s,2s,8h,4h,16b,8b 6566 urshl 2d,4s,2s,8h,4h,16b,8b 6567 srshr 2d,4s,2s,8h,4h,16b,8b 6568 urshr 2d,4s,2s,8h,4h,16b,8b 6569 srsra 2d,4s,2s,8h,4h,16b,8b 6570 ursra 2d,4s,2s,8h,4h,16b,8b 6571 6572 sshll{2} (imm) 2d_2s/4s 4s_4h/8h, 8h_8b/16b 6573 ushll{2} (imm) 2d_2s/4s 4s_4h/8h, 8h_8b/16b 6574 6575 suqadd d,s,h,b 6576 suqadd 2d,4s,2s,8h,4h,16b,8b 6577 6578 tbl 8b_{16b}_8b, 16b_{16b}_16b 6579 tbl 8b_{16b,16b}_8b, 16b_{16b,16b}_16b 6580 tbl 8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b 6581 tbl 8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b 6582 6583 tbx 8b_{16b}_8b, 16b_{16b}_16b 6584 tbx 8b_{16b,16b}_8b, 16b_{16b,16b}_16b 6585 tbx 8b_{16b,16b,16b}_8b, 16b_{16b,16b,16b}_16b 6586 tbx 8b_{16b,16b,16b,16b}_8b, 16b_{16b,16b,16b,16b}_16b 6587 6588 trn1 2d,4s,2s,8h,4h,16b,8b 6589 trn2 2d,4s,2s,8h,4h,16b,8b 6590 6591 urecpe 4s,2s 6592 6593 ursqrte 4s,2s 6594 6595 usqadd d,s,h,b 6596 usqadd 2d,4s,2s,8h,4h,16b,8b 6597 6598 uzp1 2d,4s,2s,8h,4h,16b,8b 6599 uzp2 2d,4s,2s,8h,4h,16b,8b 6600 6601 xtn{2} 2s/4s_2d, 4h/8h_4s, 8b/16b_8h 6602 6603 zip1 2d,4s,2s,8h,4h,16b,8b 6604 zip2 2d,4s,2s,8h,4h,16b,8b 6605 6606 ======================== MEM ======================== 6607 6608 ld1 (multiple 1-element structures to 1/2/3/4 regs) 6609 ld1 (single 1-element structure to one lane of 1 reg) 6610 ld1r (single 1-element structure and rep to all lanes of 1 reg) 6611 6612 ld2 (multiple 2-element structures to 2 regs) 6613 ld2 (single 2-element structure to one lane of 2 regs) 6614 ld2r (single 2-element structure and rep to all lanes of 2 regs) 6615 6616 ld3 (multiple 3-element structures to 3 regs) 6617 ld3 (single 3-element structure to one lane of 3 regs) 6618 ld3r (single 3-element structure and rep to all lanes of 3 regs) 6619 6620 ld4 (multiple 4-element structures to 4 regs) 6621 ld4 (single 4-element structure to one lane of 4 regs) 6622 ld4r (single 4-element structure and rep to all lanes of 4 regs) 6623 6624 ldnp q_q_addr,d_d_addr,s_s_addr (load pair w/ non-temporal hint) 6625 addr = reg + uimm7 * reg_size 6626 6627 ldp q_q_addr,d_d_addr,s_s_addr (load pair) 6628 addr = [Xn|SP],#imm or [Xn|SP,#imm]! or [Xn|SP,#imm] 6629 6630 ldr q,d,s,h,b from addr 6631 addr = [Xn|SP],#imm or [Xn|SP,#imm]! or [Xn|SP,#imm] 6632 6633 ldr q,d,s from pc+#imm19 6634 6635 ldr q,d,s,h,b from addr 6636 addr = [Xn|SP, R <extend> <shift] 6637 6638 ldur q,d,s,h,b from addr 6639 addr = [Xn|SP,#imm] (unscaled offset) 6640 6641 st1 (multiple 1-element structures from 1/2/3/4 regs) 6642 st1 (single 1-element structure for 1 lane of 1 reg) 6643 6644 st2 (multiple 2-element structures from 2 regs) 6645 st2 (single 2-element structure from 1 lane of 2 regs) 6646 6647 st3 (multiple 3-element structures from 3 regs) 6648 st3 (single 3-element structure from 1 lane of 3 regs) 6649 6650 st4 (multiple 4-element structures from 4 regs) 6651 st4 (single 4-element structure from one lane of 4 regs) 6652 6653 stnp q_q_addr, d_d_addr, s_s_addr 6654 addr = [Xn|SP, #imm] 6655 6656 stp q_q_addr, d_d_addr, s_s_addr 6657 addr = [Xn|SP], #imm or [Xn|SP, #imm]! or [Xn|SP, #imm] 6658 6659 str q,d,s,h,b_addr 6660 addr = [Xn|SP], #simm or [Xn|SP, #simm]! or [Xn|SP, #pimm] 6661 6662 str q,d,s,h,b_addr 6663 addr = [Xn|SP, R <extend> <shift] 6664 6665 stur q,d,s,h,b_addr 6666 addr = [Xn|SP,#imm] (unscaled offset) 6667 6668 ======================== CRYPTO ======================== 6669 6670 aesd 16b (aes single round decryption) 6671 aese 16b (aes single round encryption) 6672 aesimc 16b (aes inverse mix columns) 6673 aesmc 16b (aes mix columns) 6674 6675 sha1c q_s_4s 6676 sha1h s_s 6677 sha1m q_s_4s 6678 sha1p q_s_4s 6679 sha1su0 4s_4s_4s 6680 sha1su1 4s_4s 6681 6682 sha256h2 q_q_4s 6683 sha256h q_q_4s 6684 sha256su0 4s_4s 6685 sha256su1 4s_4s_4s 6686*/ 6687