|
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