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