1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
2
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512cd,+fast-variable-shuffle | FileCheck %s --check-prefixes=ALL,AVX512CD,X64-AVX512CD
3
3
; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512cd,+fast-variable-shuffle | FileCheck %s --check-prefixes=ALL,AVX512CD,X86-AVX512CD
4
+ ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512cd,+avx512bw,+fast-variable-shuffle | FileCheck %s --check-prefixes=ALL,AVX512CDBW,X64-AVX512CDBW
5
+ ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512cd,+avx512bw,+fast-variable-shuffle | FileCheck %s --check-prefixes=ALL,AVX512CDBW,X86-AVX512CDBW
4
6
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,avx512cd,+avx512bw,+fast-variable-shuffle | FileCheck %s --check-prefixes=ALL,AVX512VLCDBW,X64-AVX512VLCDBW
5
7
; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512vl,avx512cd,+avx512bw,+fast-variable-shuffle | FileCheck %s --check-prefixes=ALL,AVX512VLCDBW,X86-AVX512VLCDBW
6
8
@@ -29,6 +31,30 @@ define <2 x i64> @test_mm_epi64(<8 x i16> %a, <8 x i16> %b) {
29
31
; X86-AVX512CD-NEXT: vzeroupper
30
32
; X86-AVX512CD-NEXT: retl
31
33
;
34
+ ; X64-AVX512CDBW-LABEL: test_mm_epi64:
35
+ ; X64-AVX512CDBW: # %bb.0: # %entry
36
+ ; X64-AVX512CDBW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1
37
+ ; X64-AVX512CDBW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
38
+ ; X64-AVX512CDBW-NEXT: vpcmpeqw %zmm1, %zmm0, %k0
39
+ ; X64-AVX512CDBW-NEXT: kmovd %k0, %eax
40
+ ; X64-AVX512CDBW-NEXT: movzbl %al, %eax
41
+ ; X64-AVX512CDBW-NEXT: vmovq %rax, %xmm0
42
+ ; X64-AVX512CDBW-NEXT: vpbroadcastq %xmm0, %xmm0
43
+ ; X64-AVX512CDBW-NEXT: vzeroupper
44
+ ; X64-AVX512CDBW-NEXT: retq
45
+ ;
46
+ ; X86-AVX512CDBW-LABEL: test_mm_epi64:
47
+ ; X86-AVX512CDBW: # %bb.0: # %entry
48
+ ; X86-AVX512CDBW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1
49
+ ; X86-AVX512CDBW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
50
+ ; X86-AVX512CDBW-NEXT: vpcmpeqw %zmm1, %zmm0, %k0
51
+ ; X86-AVX512CDBW-NEXT: kmovd %k0, %eax
52
+ ; X86-AVX512CDBW-NEXT: movzbl %al, %eax
53
+ ; X86-AVX512CDBW-NEXT: vmovd %eax, %xmm0
54
+ ; X86-AVX512CDBW-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,1,2,3],zero,zero,zero,zero,xmm0[0,1,2,3],zero,zero,zero,zero
55
+ ; X86-AVX512CDBW-NEXT: vzeroupper
56
+ ; X86-AVX512CDBW-NEXT: retl
57
+ ;
32
58
; AVX512VLCDBW-LABEL: test_mm_epi64:
33
59
; AVX512VLCDBW: # %bb.0: # %entry
34
60
; AVX512VLCDBW-NEXT: vpcmpeqw %xmm1, %xmm0, %k0
@@ -52,6 +78,17 @@ define <4 x i32> @test_mm_epi32(<16 x i8> %a, <16 x i8> %b) {
52
78
; AVX512CD-NEXT: vpbroadcastd %xmm0, %xmm0
53
79
; AVX512CD-NEXT: ret{{[l|q]}}
54
80
;
81
+ ; AVX512CDBW-LABEL: test_mm_epi32:
82
+ ; AVX512CDBW: # %bb.0: # %entry
83
+ ; AVX512CDBW-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1
84
+ ; AVX512CDBW-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0
85
+ ; AVX512CDBW-NEXT: vpcmpeqb %zmm1, %zmm0, %k0
86
+ ; AVX512CDBW-NEXT: kmovw %k0, %eax
87
+ ; AVX512CDBW-NEXT: vmovd %eax, %xmm0
88
+ ; AVX512CDBW-NEXT: vpbroadcastd %xmm0, %xmm0
89
+ ; AVX512CDBW-NEXT: vzeroupper
90
+ ; AVX512CDBW-NEXT: ret{{[l|q]}}
91
+ ;
55
92
; AVX512VLCDBW-LABEL: test_mm_epi32:
56
93
; AVX512VLCDBW: # %bb.0: # %entry
57
94
; AVX512VLCDBW-NEXT: vpcmpeqb %xmm1, %xmm0, %k0
@@ -90,6 +127,14 @@ define <8 x i64> @test_mm512_epi64(<8 x i32> %a, <8 x i32> %b) {
90
127
; AVX512CD-NEXT: vpbroadcastmb2q %k0, %zmm0
91
128
; AVX512CD-NEXT: ret{{[l|q]}}
92
129
;
130
+ ; AVX512CDBW-LABEL: test_mm512_epi64:
131
+ ; AVX512CDBW: # %bb.0: # %entry
132
+ ; AVX512CDBW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
133
+ ; AVX512CDBW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
134
+ ; AVX512CDBW-NEXT: vpcmpeqd %zmm1, %zmm0, %k0
135
+ ; AVX512CDBW-NEXT: vpbroadcastmb2q %k0, %zmm0
136
+ ; AVX512CDBW-NEXT: ret{{[l|q]}}
137
+ ;
93
138
; AVX512VLCDBW-LABEL: test_mm512_epi64:
94
139
; AVX512VLCDBW: # %bb.0: # %entry
95
140
; AVX512VLCDBW-NEXT: vpcmpeqd %ymm1, %ymm0, %k0
@@ -127,6 +172,28 @@ define <4 x i64> @test_mm256_epi64(<8 x i32> %a, <8 x i32> %b) {
127
172
; X86-AVX512CD-NEXT: vpbroadcastq %xmm0, %ymm0
128
173
; X86-AVX512CD-NEXT: retl
129
174
;
175
+ ; X64-AVX512CDBW-LABEL: test_mm256_epi64:
176
+ ; X64-AVX512CDBW: # %bb.0: # %entry
177
+ ; X64-AVX512CDBW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
178
+ ; X64-AVX512CDBW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
179
+ ; X64-AVX512CDBW-NEXT: vpcmpeqd %zmm1, %zmm0, %k0
180
+ ; X64-AVX512CDBW-NEXT: kmovd %k0, %eax
181
+ ; X64-AVX512CDBW-NEXT: movzbl %al, %eax
182
+ ; X64-AVX512CDBW-NEXT: vmovq %rax, %xmm0
183
+ ; X64-AVX512CDBW-NEXT: vpbroadcastq %xmm0, %ymm0
184
+ ; X64-AVX512CDBW-NEXT: retq
185
+ ;
186
+ ; X86-AVX512CDBW-LABEL: test_mm256_epi64:
187
+ ; X86-AVX512CDBW: # %bb.0: # %entry
188
+ ; X86-AVX512CDBW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
189
+ ; X86-AVX512CDBW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
190
+ ; X86-AVX512CDBW-NEXT: vpcmpeqd %zmm1, %zmm0, %k0
191
+ ; X86-AVX512CDBW-NEXT: kmovd %k0, %eax
192
+ ; X86-AVX512CDBW-NEXT: movzbl %al, %eax
193
+ ; X86-AVX512CDBW-NEXT: vmovd %eax, %xmm0
194
+ ; X86-AVX512CDBW-NEXT: vpbroadcastq %xmm0, %ymm0
195
+ ; X86-AVX512CDBW-NEXT: retl
196
+ ;
130
197
; AVX512VLCDBW-LABEL: test_mm256_epi64:
131
198
; AVX512VLCDBW: # %bb.0: # %entry
132
199
; AVX512VLCDBW-NEXT: vpcmpeqd %ymm1, %ymm0, %k0
@@ -152,6 +219,16 @@ define <8 x i32> @test_mm256_epi32(<16 x i16> %a, <16 x i16> %b) {
152
219
; AVX512CD-NEXT: vpbroadcastd %xmm0, %ymm0
153
220
; AVX512CD-NEXT: ret{{[l|q]}}
154
221
;
222
+ ; AVX512CDBW-LABEL: test_mm256_epi32:
223
+ ; AVX512CDBW: # %bb.0: # %entry
224
+ ; AVX512CDBW-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1
225
+ ; AVX512CDBW-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0
226
+ ; AVX512CDBW-NEXT: vpcmpeqw %zmm1, %zmm0, %k0
227
+ ; AVX512CDBW-NEXT: kmovw %k0, %eax
228
+ ; AVX512CDBW-NEXT: vmovd %eax, %xmm0
229
+ ; AVX512CDBW-NEXT: vpbroadcastd %xmm0, %ymm0
230
+ ; AVX512CDBW-NEXT: ret{{[l|q]}}
231
+ ;
155
232
; AVX512VLCDBW-LABEL: test_mm256_epi32:
156
233
; AVX512VLCDBW: # %bb.0: # %entry
157
234
; AVX512VLCDBW-NEXT: vpcmpeqw %ymm1, %ymm0, %k0
0 commit comments