|
4 | 4 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1,AVX1-SLOW
|
5 | 5 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx,+fast-hops | FileCheck %s --check-prefixes=AVX,AVX1,AVX1-FAST
|
6 | 6 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX2
|
7 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX512 |
8 |
| -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX,AVX512 |
| 7 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=AVX,AVX512,AVX512BW |
| 8 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512vl | FileCheck %s --check-prefixes=AVX,AVX512,AVX512BWVL |
9 | 9 |
|
10 | 10 | ;
|
11 | 11 | ; vXi64
|
@@ -860,6 +860,31 @@ define i16 @test_v4i16_v4i8(<4 x i16> %a0) {
|
860 | 860 | ; AVX2-NEXT: vmovd %xmm0, %eax
|
861 | 861 | ; AVX2-NEXT: # kill: def $ax killed $ax killed $eax
|
862 | 862 | ; AVX2-NEXT: retq
|
| 863 | +; |
| 864 | +; AVX512BW-LABEL: test_v4i16_v4i8: |
| 865 | +; AVX512BW: # %bb.0: |
| 866 | +; AVX512BW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 |
| 867 | +; AVX512BW-NEXT: vmovdqa {{.*#+}} xmm1 = <0,1,2,3,u,u,u,u> |
| 868 | +; AVX512BW-NEXT: vpsrlvw %zmm1, %zmm0, %zmm0 |
| 869 | +; AVX512BW-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1] |
| 870 | +; AVX512BW-NEXT: vpaddw %xmm1, %xmm0, %xmm0 |
| 871 | +; AVX512BW-NEXT: vpsrld $16, %xmm0, %xmm1 |
| 872 | +; AVX512BW-NEXT: vpaddw %xmm1, %xmm0, %xmm0 |
| 873 | +; AVX512BW-NEXT: vmovd %xmm0, %eax |
| 874 | +; AVX512BW-NEXT: # kill: def $ax killed $ax killed $eax |
| 875 | +; AVX512BW-NEXT: vzeroupper |
| 876 | +; AVX512BW-NEXT: retq |
| 877 | +; |
| 878 | +; AVX512BWVL-LABEL: test_v4i16_v4i8: |
| 879 | +; AVX512BWVL: # %bb.0: |
| 880 | +; AVX512BWVL-NEXT: vpsrlvw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 |
| 881 | +; AVX512BWVL-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1] |
| 882 | +; AVX512BWVL-NEXT: vpaddw %xmm1, %xmm0, %xmm0 |
| 883 | +; AVX512BWVL-NEXT: vpsrld $16, %xmm0, %xmm1 |
| 884 | +; AVX512BWVL-NEXT: vpaddw %xmm1, %xmm0, %xmm0 |
| 885 | +; AVX512BWVL-NEXT: vmovd %xmm0, %eax |
| 886 | +; AVX512BWVL-NEXT: # kill: def $ax killed $ax killed $eax |
| 887 | +; AVX512BWVL-NEXT: retq |
863 | 888 | %1 = lshr <4 x i16> %a0, <i16 0, i16 1, i16 2, i16 3>
|
864 | 889 | %2 = call i16 @llvm.vector.reduce.add.v4i16(<4 x i16> %1)
|
865 | 890 | ret i16 %2
|
|
0 commit comments