|
2 | 2 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+xop | FileCheck %s --check-prefix=XOP
|
3 | 3 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX1
|
4 | 4 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=INT256,AVX2
|
5 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=INT256,AVX512 |
6 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq | FileCheck %s --check-prefixes=INT256,AVX512 |
7 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefixes=INT256,AVX512 |
8 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vbmi | FileCheck %s --check-prefixes=INT256,AVX512 |
9 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=INT256,AVX512VL |
10 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefixes=INT256,AVX512VL,AVX512VLDQ |
| 5 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=INT256,AVX512,AVX512F |
| 6 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq | FileCheck %s --check-prefixes=INT256,AVX512,AVX512F |
| 7 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefixes=INT256,AVX512,AVX512BW |
| 8 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vbmi | FileCheck %s --check-prefixes=INT256,AVX512,AVX512BW |
| 9 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=INT256,AVX512VL,AVX512VLF |
| 10 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefixes=INT256,AVX512VL,AVX512VLF |
11 | 11 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl | FileCheck %s --check-prefixes=INT256,AVX512VL,AVX512VLBW
|
12 | 12 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,+avx512vbmi | FileCheck %s --check-prefixes=INT256,AVX512VL,VLVBMI
|
13 | 13 |
|
@@ -393,17 +393,17 @@ define <16 x i16> @var_shuffle_v16i16(<16 x i16> %v, <16 x i16> %indices) nounwi
|
393 | 393 | ; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
|
394 | 394 | ; AVX512-NEXT: retq
|
395 | 395 | ;
|
396 |
| -; AVX512VLDQ-LABEL: var_shuffle_v16i16: |
397 |
| -; AVX512VLDQ: # %bb.0: |
398 |
| -; AVX512VLDQ-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 # [514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514] |
399 |
| -; AVX512VLDQ-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
400 |
| -; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2 |
401 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm2, %ymm2 |
402 |
| -; AVX512VLDQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3] |
403 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm3 |
404 |
| -; AVX512VLDQ-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
405 |
| -; AVX512VLDQ-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm0 & (ymm3 ^ ymm2)) |
406 |
| -; AVX512VLDQ-NEXT: retq |
| 396 | +; AVX512VLF-LABEL: var_shuffle_v16i16: |
| 397 | +; AVX512VLF: # %bb.0: |
| 398 | +; AVX512VLF-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 # [514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514] |
| 399 | +; AVX512VLF-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 400 | +; AVX512VLF-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm2 |
| 401 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm2, %ymm2 |
| 402 | +; AVX512VLF-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3] |
| 403 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm0, %ymm3 |
| 404 | +; AVX512VLF-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
| 405 | +; AVX512VLF-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm0 & (ymm3 ^ ymm2)) |
| 406 | +; AVX512VLF-NEXT: retq |
407 | 407 | ;
|
408 | 408 | ; AVX512VLBW-LABEL: var_shuffle_v16i16:
|
409 | 409 | ; AVX512VLBW: # %bb.0:
|
@@ -533,21 +533,57 @@ define <16 x i16> @var_shuffle_zero_v16i16(<16 x i16> %v, <16 x i16> %indices) n
|
533 | 533 | ; AVX2-NEXT: vpandn %ymm0, %ymm2, %ymm0
|
534 | 534 | ; AVX2-NEXT: retq
|
535 | 535 | ;
|
536 |
| -; AVX512VLDQ-LABEL: var_shuffle_zero_v16i16: |
537 |
| -; AVX512VLDQ: # %bb.0: |
538 |
| -; AVX512VLDQ-NEXT: vpmaxuw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm2 |
539 |
| -; AVX512VLDQ-NEXT: vpcmpeqw %ymm2, %ymm1, %ymm2 |
540 |
| -; AVX512VLDQ-NEXT: vpor %ymm1, %ymm2, %ymm1 |
541 |
| -; AVX512VLDQ-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 # [514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514] |
542 |
| -; AVX512VLDQ-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
543 |
| -; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm3 |
544 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm3, %ymm3 |
545 |
| -; AVX512VLDQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3] |
546 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0 |
547 |
| -; AVX512VLDQ-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
548 |
| -; AVX512VLDQ-NEXT: vpternlogq {{.*#+}} ymm1 = ymm3 ^ (ymm1 & (ymm0 ^ ymm3)) |
549 |
| -; AVX512VLDQ-NEXT: vpandn %ymm1, %ymm2, %ymm0 |
550 |
| -; AVX512VLDQ-NEXT: retq |
| 536 | +; AVX512F-LABEL: var_shuffle_zero_v16i16: |
| 537 | +; AVX512F: # %bb.0: |
| 538 | +; AVX512F-NEXT: vpmaxuw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm2 |
| 539 | +; AVX512F-NEXT: vpcmpeqw %ymm2, %ymm1, %ymm2 |
| 540 | +; AVX512F-NEXT: vpor %ymm1, %ymm2, %ymm1 |
| 541 | +; AVX512F-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 # [514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514] |
| 542 | +; AVX512F-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 543 | +; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm3 |
| 544 | +; AVX512F-NEXT: vpshufb %ymm1, %ymm3, %ymm3 |
| 545 | +; AVX512F-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3] |
| 546 | +; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm0 |
| 547 | +; AVX512F-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 548 | +; AVX512F-NEXT: vpblendvb %ymm1, %ymm0, %ymm3, %ymm0 |
| 549 | +; AVX512F-NEXT: vpandn %ymm0, %ymm2, %ymm0 |
| 550 | +; AVX512F-NEXT: retq |
| 551 | +; |
| 552 | +; AVX512BW-LABEL: var_shuffle_zero_v16i16: |
| 553 | +; AVX512BW: # %bb.0: |
| 554 | +; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 |
| 555 | +; AVX512BW-NEXT: vpbroadcastw {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15] |
| 556 | +; AVX512BW-NEXT: vpcmpnleuw %zmm2, %zmm1, %k1 |
| 557 | +; AVX512BW-NEXT: vpcmpeqd %ymm2, %ymm2, %ymm2 |
| 558 | +; AVX512BW-NEXT: vmovdqu16 %zmm2, %zmm1 {%k1} |
| 559 | +; AVX512BW-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 # [514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514] |
| 560 | +; AVX512BW-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 561 | +; AVX512BW-NEXT: vpermq {{.*#+}} ymm2 = ymm0[2,3,2,3] |
| 562 | +; AVX512BW-NEXT: vpshufb %ymm1, %ymm2, %ymm2 |
| 563 | +; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 |
| 564 | +; AVX512BW-NEXT: vpshufb %ymm1, %ymm0, %ymm0 |
| 565 | +; AVX512BW-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 566 | +; AVX512BW-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0 |
| 567 | +; AVX512BW-NEXT: vpxor %xmm1, %xmm1, %xmm1 |
| 568 | +; AVX512BW-NEXT: vmovdqu16 %zmm1, %zmm0 {%k1} |
| 569 | +; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 |
| 570 | +; AVX512BW-NEXT: retq |
| 571 | +; |
| 572 | +; AVX512VLF-LABEL: var_shuffle_zero_v16i16: |
| 573 | +; AVX512VLF: # %bb.0: |
| 574 | +; AVX512VLF-NEXT: vpmaxuw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm2 |
| 575 | +; AVX512VLF-NEXT: vpcmpeqw %ymm2, %ymm1, %ymm2 |
| 576 | +; AVX512VLF-NEXT: vpor %ymm1, %ymm2, %ymm1 |
| 577 | +; AVX512VLF-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 # [514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514] |
| 578 | +; AVX512VLF-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 579 | +; AVX512VLF-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm3 |
| 580 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm3, %ymm3 |
| 581 | +; AVX512VLF-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3] |
| 582 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm0, %ymm0 |
| 583 | +; AVX512VLF-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 584 | +; AVX512VLF-NEXT: vpternlogq {{.*#+}} ymm1 = ymm3 ^ (ymm1 & (ymm0 ^ ymm3)) |
| 585 | +; AVX512VLF-NEXT: vpandn %ymm1, %ymm2, %ymm0 |
| 586 | +; AVX512VLF-NEXT: retq |
551 | 587 | ;
|
552 | 588 | ; AVX512VLBW-LABEL: var_shuffle_zero_v16i16:
|
553 | 589 | ; AVX512VLBW: # %bb.0:
|
@@ -668,15 +704,15 @@ define <32 x i8> @var_shuffle_v32i8(<32 x i8> %v, <32 x i8> %indices) nounwind {
|
668 | 704 | ; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
|
669 | 705 | ; AVX512-NEXT: retq
|
670 | 706 | ;
|
671 |
| -; AVX512VLDQ-LABEL: var_shuffle_v32i8: |
672 |
| -; AVX512VLDQ: # %bb.0: |
673 |
| -; AVX512VLDQ-NEXT: vpermq {{.*#+}} ymm2 = ymm0[2,3,2,3] |
674 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm2, %ymm2 |
675 |
| -; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 |
676 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm3 |
677 |
| -; AVX512VLDQ-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
678 |
| -; AVX512VLDQ-NEXT: vpternlogq {{.*#+}} ymm0 = ymm3 ^ (ymm0 & (ymm2 ^ ymm3)) |
679 |
| -; AVX512VLDQ-NEXT: retq |
| 707 | +; AVX512VLF-LABEL: var_shuffle_v32i8: |
| 708 | +; AVX512VLF: # %bb.0: |
| 709 | +; AVX512VLF-NEXT: vpermq {{.*#+}} ymm2 = ymm0[2,3,2,3] |
| 710 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm2, %ymm2 |
| 711 | +; AVX512VLF-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 |
| 712 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm0, %ymm3 |
| 713 | +; AVX512VLF-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
| 714 | +; AVX512VLF-NEXT: vpternlogq {{.*#+}} ymm0 = ymm3 ^ (ymm0 & (ymm2 ^ ymm3)) |
| 715 | +; AVX512VLF-NEXT: retq |
680 | 716 | ;
|
681 | 717 | ; AVX512VLBW-LABEL: var_shuffle_v32i8:
|
682 | 718 | ; AVX512VLBW: # %bb.0:
|
@@ -847,19 +883,51 @@ define <32 x i8> @var_shuffle_zero_v32i8(<32 x i8> %v, <32 x i8> %indices) nounw
|
847 | 883 | ; AVX2-NEXT: vpandn %ymm0, %ymm2, %ymm0
|
848 | 884 | ; AVX2-NEXT: retq
|
849 | 885 | ;
|
850 |
| -; AVX512VLDQ-LABEL: var_shuffle_zero_v32i8: |
851 |
| -; AVX512VLDQ: # %bb.0: |
852 |
| -; AVX512VLDQ-NEXT: vpmaxub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm2 |
853 |
| -; AVX512VLDQ-NEXT: vpcmpeqb %ymm2, %ymm1, %ymm2 |
854 |
| -; AVX512VLDQ-NEXT: vpor %ymm1, %ymm2, %ymm1 |
855 |
| -; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm3 |
856 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm3, %ymm3 |
857 |
| -; AVX512VLDQ-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3] |
858 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm0 |
859 |
| -; AVX512VLDQ-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
860 |
| -; AVX512VLDQ-NEXT: vpternlogq {{.*#+}} ymm1 = ymm3 ^ (ymm1 & (ymm0 ^ ymm3)) |
861 |
| -; AVX512VLDQ-NEXT: vpandn %ymm1, %ymm2, %ymm0 |
862 |
| -; AVX512VLDQ-NEXT: retq |
| 886 | +; AVX512F-LABEL: var_shuffle_zero_v32i8: |
| 887 | +; AVX512F: # %bb.0: |
| 888 | +; AVX512F-NEXT: vpmaxub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm2 |
| 889 | +; AVX512F-NEXT: vpcmpeqb %ymm2, %ymm1, %ymm2 |
| 890 | +; AVX512F-NEXT: vpor %ymm1, %ymm2, %ymm1 |
| 891 | +; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm3 |
| 892 | +; AVX512F-NEXT: vpshufb %ymm1, %ymm3, %ymm3 |
| 893 | +; AVX512F-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3] |
| 894 | +; AVX512F-NEXT: vpshufb %ymm1, %ymm0, %ymm0 |
| 895 | +; AVX512F-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 896 | +; AVX512F-NEXT: vpblendvb %ymm1, %ymm0, %ymm3, %ymm0 |
| 897 | +; AVX512F-NEXT: vpandn %ymm0, %ymm2, %ymm0 |
| 898 | +; AVX512F-NEXT: retq |
| 899 | +; |
| 900 | +; AVX512BW-LABEL: var_shuffle_zero_v32i8: |
| 901 | +; AVX512BW: # %bb.0: |
| 902 | +; AVX512BW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 |
| 903 | +; AVX512BW-NEXT: vpbroadcastb {{.*#+}} ymm2 = [31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31] |
| 904 | +; AVX512BW-NEXT: vpcmpnleub %zmm2, %zmm1, %k1 |
| 905 | +; AVX512BW-NEXT: vpcmpeqd %ymm2, %ymm2, %ymm2 |
| 906 | +; AVX512BW-NEXT: vmovdqu8 %zmm2, %zmm1 {%k1} |
| 907 | +; AVX512BW-NEXT: vpermq {{.*#+}} ymm2 = ymm0[2,3,2,3] |
| 908 | +; AVX512BW-NEXT: vpshufb %ymm1, %ymm2, %ymm2 |
| 909 | +; AVX512BW-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 |
| 910 | +; AVX512BW-NEXT: vpshufb %ymm1, %ymm0, %ymm0 |
| 911 | +; AVX512BW-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 912 | +; AVX512BW-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0 |
| 913 | +; AVX512BW-NEXT: vpxor %xmm1, %xmm1, %xmm1 |
| 914 | +; AVX512BW-NEXT: vmovdqu8 %zmm1, %zmm0 {%k1} |
| 915 | +; AVX512BW-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 |
| 916 | +; AVX512BW-NEXT: retq |
| 917 | +; |
| 918 | +; AVX512VLF-LABEL: var_shuffle_zero_v32i8: |
| 919 | +; AVX512VLF: # %bb.0: |
| 920 | +; AVX512VLF-NEXT: vpmaxub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm2 |
| 921 | +; AVX512VLF-NEXT: vpcmpeqb %ymm2, %ymm1, %ymm2 |
| 922 | +; AVX512VLF-NEXT: vpor %ymm1, %ymm2, %ymm1 |
| 923 | +; AVX512VLF-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm3 |
| 924 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm3, %ymm3 |
| 925 | +; AVX512VLF-NEXT: vpermq {{.*#+}} ymm0 = ymm0[2,3,2,3] |
| 926 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm0, %ymm0 |
| 927 | +; AVX512VLF-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 928 | +; AVX512VLF-NEXT: vpternlogq {{.*#+}} ymm1 = ymm3 ^ (ymm1 & (ymm0 ^ ymm3)) |
| 929 | +; AVX512VLF-NEXT: vpandn %ymm1, %ymm2, %ymm0 |
| 930 | +; AVX512VLF-NEXT: retq |
863 | 931 | ;
|
864 | 932 | ; AVX512VLBW-LABEL: var_shuffle_zero_v32i8:
|
865 | 933 | ; AVX512VLBW: # %bb.0:
|
@@ -1493,17 +1561,17 @@ define <16 x i16> @var_shuffle_v16i16_from_v8i16(<8 x i16> %v, <16 x i16> %indic
|
1493 | 1561 | ; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
|
1494 | 1562 | ; AVX512-NEXT: retq
|
1495 | 1563 | ;
|
1496 |
| -; AVX512VLDQ-LABEL: var_shuffle_v16i16_from_v8i16: |
1497 |
| -; AVX512VLDQ: # %bb.0: |
1498 |
| -; AVX512VLDQ-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0 |
1499 |
| -; AVX512VLDQ-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 # [514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514] |
1500 |
| -; AVX512VLDQ-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
1501 |
| -; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 |
1502 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm2 |
1503 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm3 |
1504 |
| -; AVX512VLDQ-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
1505 |
| -; AVX512VLDQ-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm0 & (ymm3 ^ ymm2)) |
1506 |
| -; AVX512VLDQ-NEXT: retq |
| 1564 | +; AVX512VLF-LABEL: var_shuffle_v16i16_from_v8i16: |
| 1565 | +; AVX512VLF: # %bb.0: |
| 1566 | +; AVX512VLF-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0 |
| 1567 | +; AVX512VLF-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 # [514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514] |
| 1568 | +; AVX512VLF-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1 |
| 1569 | +; AVX512VLF-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 |
| 1570 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm0, %ymm2 |
| 1571 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm0, %ymm3 |
| 1572 | +; AVX512VLF-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
| 1573 | +; AVX512VLF-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm0 & (ymm3 ^ ymm2)) |
| 1574 | +; AVX512VLF-NEXT: retq |
1507 | 1575 | ;
|
1508 | 1576 | ; AVX512VLBW-LABEL: var_shuffle_v16i16_from_v8i16:
|
1509 | 1577 | ; AVX512VLBW: # %bb.0:
|
@@ -1611,15 +1679,15 @@ define <32 x i8> @var_shuffle_v32i8_from_v16i8(<16 x i8> %v, <32 x i8> %indices)
|
1611 | 1679 | ; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
|
1612 | 1680 | ; AVX512-NEXT: retq
|
1613 | 1681 | ;
|
1614 |
| -; AVX512VLDQ-LABEL: var_shuffle_v32i8_from_v16i8: |
1615 |
| -; AVX512VLDQ: # %bb.0: |
1616 |
| -; AVX512VLDQ-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0 |
1617 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm2 |
1618 |
| -; AVX512VLDQ-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 |
1619 |
| -; AVX512VLDQ-NEXT: vpshufb %ymm1, %ymm0, %ymm3 |
1620 |
| -; AVX512VLDQ-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
1621 |
| -; AVX512VLDQ-NEXT: vpternlogq {{.*#+}} ymm0 = ymm3 ^ (ymm0 & (ymm2 ^ ymm3)) |
1622 |
| -; AVX512VLDQ-NEXT: retq |
| 1682 | +; AVX512VLF-LABEL: var_shuffle_v32i8_from_v16i8: |
| 1683 | +; AVX512VLF: # %bb.0: |
| 1684 | +; AVX512VLF-NEXT: # kill: def $xmm0 killed $xmm0 def $ymm0 |
| 1685 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm0, %ymm2 |
| 1686 | +; AVX512VLF-NEXT: vinserti128 $1, %xmm0, %ymm0, %ymm0 |
| 1687 | +; AVX512VLF-NEXT: vpshufb %ymm1, %ymm0, %ymm3 |
| 1688 | +; AVX512VLF-NEXT: vpcmpgtb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm0 |
| 1689 | +; AVX512VLF-NEXT: vpternlogq {{.*#+}} ymm0 = ymm3 ^ (ymm0 & (ymm2 ^ ymm3)) |
| 1690 | +; AVX512VLF-NEXT: retq |
1623 | 1691 | ;
|
1624 | 1692 | ; AVX512VLBW-LABEL: var_shuffle_v32i8_from_v16i8:
|
1625 | 1693 | ; AVX512VLBW: # %bb.0:
|
|
0 commit comments