Lines Matching refs:AVX512F
2 ; RUN: llc < %s -mcpu=x86-64 -mattr=+avx512f | FileCheck %s --check-prefix=AVX512F
8 ; AVX512F-LABEL: shuf2i1_1_0:
9 ; AVX512F: # BB#0:
10 ; AVX512F-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
11 ; AVX512F-NEXT: retq
28 ; AVX512F-LABEL: shuf2i1_1_2:
29 ; AVX512F: # BB#0:
30 ; AVX512F-NEXT: movl $1, %eax
31 ; AVX512F-NEXT: vmovq %rax, %xmm1
32 ; AVX512F-NEXT: vpalignr {{.*#+}} xmm0 = xmm0[8,9,10,11,12,13,14,15],xmm1[0,1,2,3,4,5,6,7]
33 ; AVX512F-NEXT: retq
54 ; AVX512F-LABEL: shuf4i1_3_2_10:
55 ; AVX512F: # BB#0:
56 ; AVX512F-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[3,2,1,0]
57 ; AVX512F-NEXT: retq
74 ; AVX512F-LABEL: shuf8i1_3_6_1_0_3_7_7_0:
75 ; AVX512F: # BB#0:
76 ; AVX512F-NEXT: vpcmpeqq %zmm2, %zmm0, %k1
77 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
78 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm1 {%k1} {z}
79 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [3,6,1,0,3,7,7,0]
80 ; AVX512F-NEXT: vpermq %zmm1, %zmm2, %zmm1
81 ; AVX512F-NEXT: vpsllq $63, %zmm1, %zmm1
82 ; AVX512F-NEXT: vptestmq %zmm1, %zmm1, %k1
83 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
84 ; AVX512F-NEXT: vpmovqw %zmm0, %xmm0
85 ; AVX512F-NEXT: retq
104 ; AVX512F-LABEL: shuf16i1_3_6_22_12_3_7_7_0_3_6_1_13_3_21_7_0:
105 ; AVX512F: # BB#0:
106 ; AVX512F-NEXT: vpcmpeqd %zmm2, %zmm0, %k1
107 ; AVX512F-NEXT: vpcmpeqd %zmm3, %zmm1, %k2
108 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
109 ; AVX512F-NEXT: vmovdqa32 %zmm0, %zmm1 {%k2} {z}
110 ; AVX512F-NEXT: vmovdqa32 %zmm0, %zmm2 {%k1} {z}
111 ; AVX512F-NEXT: vmovdqa32 {{.*#+}} zmm3 = [3,6,22,12,3,7,7,0,3,6,1,13,3,21,7,0]
112 ; AVX512F-NEXT: vpermt2d %zmm1, %zmm3, %zmm2
113 ; AVX512F-NEXT: vpslld $31, %zmm2, %zmm1
114 ; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k1
115 ; AVX512F-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z}
116 ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
117 ; AVX512F-NEXT: retq
138 ; AVX512F-LABEL: shuf32i1_3_6_22_12_3_7_7_0_3_6_1_13_3_21_7_0_3_6_22_12_3_7_7_0_3_6_1_13_3_21_7_0:
139 ; AVX512F: # BB#0:
140 ; AVX512F-NEXT: vperm2i128 {{.*#+}} ymm1 = ymm0[2,3,0,1]
141 ; AVX512F-NEXT: vpshufb {{.*#+}} ymm1 = ymm1[u,u,6,u,u,u,u,u,u,u,u,u,u,5,u,u,19,22,u,28,19,23,23…
142 ; AVX512F-NEXT: vpshufb {{.*#+}} ymm0 = ymm0[3,6,u,12,3,7,7,0,3,6,1,13,3,u,7,0,u,u,22,u,u,u,u,u,…
143 ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm2 = [255,255,0,255,255,255,255,255,255,255,255,255,255,0,255…
144 ; AVX512F-NEXT: vpblendvb %ymm2, %ymm0, %ymm1, %ymm0
145 ; AVX512F-NEXT: retq
163 ; AVX512F-LABEL: shuf8i1_u_2_u_u_2_u_2_u:
164 ; AVX512F: # BB#0:
165 ; AVX512F-NEXT: kmovw %edi, %k1
166 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
167 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm1 {%k1} {z}
168 ; AVX512F-NEXT: vextracti32x4 $1, %zmm1, %xmm1
169 ; AVX512F-NEXT: vpbroadcastq %xmm1, %zmm1
170 ; AVX512F-NEXT: vpsllq $63, %zmm1, %zmm1
171 ; AVX512F-NEXT: vptestmq %zmm1, %zmm1, %k1
172 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
173 ; AVX512F-NEXT: vpmovqw %zmm0, %xmm0
174 ; AVX512F-NEXT: retq
192 ; AVX512F-LABEL: shuf8i1_10_2_9_u_3_u_2_u:
193 ; AVX512F: # BB#0:
194 ; AVX512F-NEXT: kmovw %edi, %k1
195 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
196 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
197 ; AVX512F-NEXT: vpxord %zmm1, %zmm1, %zmm1
198 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = <8,2,10,u,3,u,2,u>
199 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
200 ; AVX512F-NEXT: vpsllq $63, %zmm0, %zmm0
201 ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k0
202 ; AVX512F-NEXT: kmovw %k0, %eax
203 ; AVX512F-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
204 ; AVX512F-NEXT: retq
225 ; AVX512F-LABEL: shuf8i1_0_1_4_5_u_u_u_u:
226 ; AVX512F: # BB#0:
227 ; AVX512F-NEXT: kmovw %edi, %k1
228 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
229 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
230 ; AVX512F-NEXT: vshufi64x2 {{.*#+}} zmm0 = zmm0[0,1,4,5,0,1,0,1]
231 ; AVX512F-NEXT: vpsllq $63, %zmm0, %zmm0
232 ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k0
233 ; AVX512F-NEXT: kmovw %k0, %eax
234 ; AVX512F-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
235 ; AVX512F-NEXT: retq
254 ; AVX512F-LABEL: shuf8i1_9_6_1_0_3_7_7_0:
255 ; AVX512F: # BB#0:
256 ; AVX512F-NEXT: kmovw %edi, %k1
257 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
258 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
259 ; AVX512F-NEXT: vpxord %zmm1, %zmm1, %zmm1
260 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [8,6,1,0,3,7,7,0]
261 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
262 ; AVX512F-NEXT: vpsllq $63, %zmm0, %zmm0
263 ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k0
264 ; AVX512F-NEXT: kmovw %k0, %eax
265 ; AVX512F-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
266 ; AVX512F-NEXT: retq
287 ; AVX512F-LABEL: shuf8i1_9_6_1_10_3_7_7_0:
288 ; AVX512F: # BB#0:
289 ; AVX512F-NEXT: kmovw %edi, %k1
290 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
291 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
292 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm1 = [9,1,2,10,4,5,6,7]
293 ; AVX512F-NEXT: vpxord %zmm2, %zmm2, %zmm2
294 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm1, %zmm2
295 ; AVX512F-NEXT: vpsllq $63, %zmm2, %zmm0
296 ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k0
297 ; AVX512F-NEXT: kmovw %k0, %eax
298 ; AVX512F-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
299 ; AVX512F-NEXT: retq
320 ; AVX512F-LABEL: shuf8i1__9_6_1_10_3_7_7_1:
321 ; AVX512F: # BB#0:
322 ; AVX512F-NEXT: kmovw %edi, %k1
323 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
324 ; AVX512F-NEXT: movb $51, %al
325 ; AVX512F-NEXT: kmovw %eax, %k2
326 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm1 {%k2} {z}
327 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm0 {%k1} {z}
328 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [9,6,1,0,3,7,7,1]
329 ; AVX512F-NEXT: vpermt2q %zmm0, %zmm2, %zmm1
330 ; AVX512F-NEXT: vpsllq $63, %zmm1, %zmm0
331 ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k0
332 ; AVX512F-NEXT: kmovw %k0, %eax
333 ; AVX512F-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
334 ; AVX512F-NEXT: retq
357 ; AVX512F-LABEL: shuf8i1_9_6_1_10_3_7_7_0_all_ones:
358 ; AVX512F: # BB#0:
359 ; AVX512F-NEXT: vpmovsxwq %xmm0, %zmm0
360 ; AVX512F-NEXT: vpsllq $63, %zmm0, %zmm0
361 ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k1
362 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
363 ; AVX512F-NEXT: vmovdqa64 %zmm0, %zmm1 {%k1} {z}
364 ; AVX512F-NEXT: vmovdqa64 {{.*#+}} zmm2 = [9,1,2,3,4,5,6,7]
365 ; AVX512F-NEXT: vpermt2q %zmm1, %zmm2, %zmm0
366 ; AVX512F-NEXT: vpsllq $63, %zmm0, %zmm0
367 ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k0
368 ; AVX512F-NEXT: kmovw %k0, %eax
369 ; AVX512F-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
370 ; AVX512F-NEXT: retq
392 ; AVX512F-LABEL: shuf16i1_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0:
393 ; AVX512F: # BB#0:
394 ; AVX512F-NEXT: kmovw %edi, %k1
395 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
396 ; AVX512F-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z}
397 ; AVX512F-NEXT: vpbroadcastd %xmm0, %zmm0
398 ; AVX512F-NEXT: vpslld $31, %zmm0, %zmm0
399 ; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0
400 ; AVX512F-NEXT: kmovw %k0, %eax
401 ; AVX512F-NEXT: # kill: %AX<def> %AX<kill> %EAX<kill>
402 ; AVX512F-NEXT: retq
421 ; AVX512F-LABEL: shuf64i1_zero:
422 ; AVX512F: # BB#0:
423 ; AVX512F-NEXT: pushq %rbp
424 ; AVX512F-NEXT: .Ltmp0:
425 ; AVX512F-NEXT: .cfi_def_cfa_offset 16
426 ; AVX512F-NEXT: .Ltmp1:
427 ; AVX512F-NEXT: .cfi_offset %rbp, -16
428 ; AVX512F-NEXT: movq %rsp, %rbp
429 ; AVX512F-NEXT: .Ltmp2:
430 ; AVX512F-NEXT: .cfi_def_cfa_register %rbp
431 ; AVX512F-NEXT: andq $-32, %rsp
432 ; AVX512F-NEXT: subq $96, %rsp
433 ; AVX512F-NEXT: movl %edi, {{[0-9]+}}(%rsp)
434 ; AVX512F-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0
435 ; AVX512F-NEXT: kmovw {{[0-9]+}}(%rsp), %k1
436 ; AVX512F-NEXT: vmovdqa32 %zmm0, %zmm0 {%k1} {z}
437 ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
438 ; AVX512F-NEXT: vpbroadcastb %xmm0, %ymm0
439 ; AVX512F-NEXT: vextracti128 $1, %ymm0, %xmm1
440 ; AVX512F-NEXT: vpmovsxbd %xmm1, %zmm1
441 ; AVX512F-NEXT: vpslld $31, %zmm1, %zmm1
442 ; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0
443 ; AVX512F-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
444 ; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm0
445 ; AVX512F-NEXT: vpslld $31, %zmm0, %zmm0
446 ; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0
447 ; AVX512F-NEXT: kmovw %k0, (%rsp)
448 ; AVX512F-NEXT: movl (%rsp), %ecx
449 ; AVX512F-NEXT: movq %rcx, %rax
450 ; AVX512F-NEXT: shlq $32, %rax
451 ; AVX512F-NEXT: orq %rcx, %rax
452 ; AVX512F-NEXT: movq %rbp, %rsp
453 ; AVX512F-NEXT: popq %rbp
454 ; AVX512F-NEXT: retq