Lines Matching refs:AVX512CD
3 …rwin -mcpu=knl -mattr=+avx512cd,-avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=AVX512CD
8 ; AVX512CD-LABEL: testv8i64:
9 ; AVX512CD: ## BB#0:
10 ; AVX512CD-NEXT: vpxord %zmm1, %zmm1, %zmm1
11 ; AVX512CD-NEXT: vpsubq %zmm0, %zmm1, %zmm1
12 ; AVX512CD-NEXT: vpandq %zmm1, %zmm0, %zmm0
13 ; AVX512CD-NEXT: vpsubq {{.*}}(%rip){1to8}, %zmm0, %zmm0
14 ; AVX512CD-NEXT: vextracti64x4 $1, %zmm0, %ymm1
15 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,…
16 ; AVX512CD-NEXT: vpand %ymm2, %ymm1, %ymm3
17 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,…
18 ; AVX512CD-NEXT: vpshufb %ymm3, %ymm4, %ymm3
19 ; AVX512CD-NEXT: vpsrlw $4, %ymm1, %ymm1
20 ; AVX512CD-NEXT: vpand %ymm2, %ymm1, %ymm1
21 ; AVX512CD-NEXT: vpshufb %ymm1, %ymm4, %ymm1
22 ; AVX512CD-NEXT: vpaddb %ymm3, %ymm1, %ymm1
23 ; AVX512CD-NEXT: vpxor %ymm3, %ymm3, %ymm3
24 ; AVX512CD-NEXT: vpsadbw %ymm3, %ymm1, %ymm1
25 ; AVX512CD-NEXT: vpand %ymm2, %ymm0, %ymm5
26 ; AVX512CD-NEXT: vpshufb %ymm5, %ymm4, %ymm5
27 ; AVX512CD-NEXT: vpsrlw $4, %ymm0, %ymm0
28 ; AVX512CD-NEXT: vpand %ymm2, %ymm0, %ymm0
29 ; AVX512CD-NEXT: vpshufb %ymm0, %ymm4, %ymm0
30 ; AVX512CD-NEXT: vpaddb %ymm5, %ymm0, %ymm0
31 ; AVX512CD-NEXT: vpsadbw %ymm3, %ymm0, %ymm0
32 ; AVX512CD-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
33 ; AVX512CD-NEXT: retq
73 ; AVX512CD-LABEL: testv8i64u:
74 ; AVX512CD: ## BB#0:
75 ; AVX512CD-NEXT: vpxord %zmm1, %zmm1, %zmm1
76 ; AVX512CD-NEXT: vpsubq %zmm0, %zmm1, %zmm1
77 ; AVX512CD-NEXT: vpandq %zmm1, %zmm0, %zmm0
78 ; AVX512CD-NEXT: vplzcntq %zmm0, %zmm0
79 ; AVX512CD-NEXT: vpbroadcastq {{.*}}(%rip), %zmm1
80 ; AVX512CD-NEXT: vpsubq %zmm0, %zmm1, %zmm0
81 ; AVX512CD-NEXT: retq
114 ; AVX512CD-LABEL: testv16i32:
115 ; AVX512CD: ## BB#0:
116 ; AVX512CD-NEXT: vpxord %zmm1, %zmm1, %zmm1
117 ; AVX512CD-NEXT: vpsubd %zmm0, %zmm1, %zmm1
118 ; AVX512CD-NEXT: vpandd %zmm1, %zmm0, %zmm0
119 ; AVX512CD-NEXT: vpsubd {{.*}}(%rip){1to16}, %zmm0, %zmm0
120 ; AVX512CD-NEXT: vextracti64x4 $1, %zmm0, %ymm1
121 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm2 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,…
122 ; AVX512CD-NEXT: vpand %ymm2, %ymm1, %ymm3
123 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm4 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,…
124 ; AVX512CD-NEXT: vpshufb %ymm3, %ymm4, %ymm3
125 ; AVX512CD-NEXT: vpsrlw $4, %ymm1, %ymm1
126 ; AVX512CD-NEXT: vpand %ymm2, %ymm1, %ymm1
127 ; AVX512CD-NEXT: vpshufb %ymm1, %ymm4, %ymm1
128 ; AVX512CD-NEXT: vpaddb %ymm3, %ymm1, %ymm1
129 ; AVX512CD-NEXT: vpxor %ymm3, %ymm3, %ymm3
130 ; AVX512CD-NEXT: vpunpckhdq {{.*#+}} ymm5 = ymm1[2],ymm3[2],ymm1[3],ymm3[3],ymm1[6],ymm3[6],ymm1…
131 ; AVX512CD-NEXT: vpsadbw %ymm3, %ymm5, %ymm5
132 ; AVX512CD-NEXT: vpunpckldq {{.*#+}} ymm1 = ymm1[0],ymm3[0],ymm1[1],ymm3[1],ymm1[4],ymm3[4],ymm1…
133 ; AVX512CD-NEXT: vpsadbw %ymm3, %ymm1, %ymm1
134 ; AVX512CD-NEXT: vpackuswb %ymm5, %ymm1, %ymm1
135 ; AVX512CD-NEXT: vpand %ymm2, %ymm0, %ymm5
136 ; AVX512CD-NEXT: vpshufb %ymm5, %ymm4, %ymm5
137 ; AVX512CD-NEXT: vpsrlw $4, %ymm0, %ymm0
138 ; AVX512CD-NEXT: vpand %ymm2, %ymm0, %ymm0
139 ; AVX512CD-NEXT: vpshufb %ymm0, %ymm4, %ymm0
140 ; AVX512CD-NEXT: vpaddb %ymm5, %ymm0, %ymm0
141 ; AVX512CD-NEXT: vpunpckhdq {{.*#+}} ymm2 = ymm0[2],ymm3[2],ymm0[3],ymm3[3],ymm0[6],ymm3[6],ymm0…
142 ; AVX512CD-NEXT: vpsadbw %ymm3, %ymm2, %ymm2
143 ; AVX512CD-NEXT: vpunpckldq {{.*#+}} ymm0 = ymm0[0],ymm3[0],ymm0[1],ymm3[1],ymm0[4],ymm3[4],ymm0…
144 ; AVX512CD-NEXT: vpsadbw %ymm3, %ymm0, %ymm0
145 ; AVX512CD-NEXT: vpackuswb %ymm2, %ymm0, %ymm0
146 ; AVX512CD-NEXT: vinserti64x4 $1, %ymm1, %zmm0, %zmm0
147 ; AVX512CD-NEXT: retq
195 ; AVX512CD-LABEL: testv16i32u:
196 ; AVX512CD: ## BB#0:
197 ; AVX512CD-NEXT: vpxord %zmm1, %zmm1, %zmm1
198 ; AVX512CD-NEXT: vpsubd %zmm0, %zmm1, %zmm1
199 ; AVX512CD-NEXT: vpandd %zmm1, %zmm0, %zmm0
200 ; AVX512CD-NEXT: vplzcntd %zmm0, %zmm0
201 ; AVX512CD-NEXT: vpbroadcastd {{.*}}(%rip), %zmm1
202 ; AVX512CD-NEXT: vpsubd %zmm0, %zmm1, %zmm0
203 ; AVX512CD-NEXT: retq
240 ; AVX512CD-LABEL: testv32i16:
241 ; AVX512CD: ## BB#0:
242 ; AVX512CD-NEXT: vpxor %ymm2, %ymm2, %ymm2
243 ; AVX512CD-NEXT: vpsubw %ymm0, %ymm2, %ymm3
244 ; AVX512CD-NEXT: vpand %ymm3, %ymm0, %ymm0
245 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm3 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
246 ; AVX512CD-NEXT: vpsubw %ymm3, %ymm0, %ymm0
247 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm4 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,…
248 ; AVX512CD-NEXT: vpand %ymm4, %ymm0, %ymm5
249 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm6 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,…
250 ; AVX512CD-NEXT: vpshufb %ymm5, %ymm6, %ymm5
251 ; AVX512CD-NEXT: vpsrlw $4, %ymm0, %ymm0
252 ; AVX512CD-NEXT: vpand %ymm4, %ymm0, %ymm0
253 ; AVX512CD-NEXT: vpshufb %ymm0, %ymm6, %ymm0
254 ; AVX512CD-NEXT: vpaddb %ymm5, %ymm0, %ymm0
255 ; AVX512CD-NEXT: vpsllw $8, %ymm0, %ymm5
256 ; AVX512CD-NEXT: vpaddb %ymm0, %ymm5, %ymm0
257 ; AVX512CD-NEXT: vpsrlw $8, %ymm0, %ymm0
258 ; AVX512CD-NEXT: vpsubw %ymm1, %ymm2, %ymm2
259 ; AVX512CD-NEXT: vpand %ymm2, %ymm1, %ymm1
260 ; AVX512CD-NEXT: vpsubw %ymm3, %ymm1, %ymm1
261 ; AVX512CD-NEXT: vpand %ymm4, %ymm1, %ymm2
262 ; AVX512CD-NEXT: vpshufb %ymm2, %ymm6, %ymm2
263 ; AVX512CD-NEXT: vpsrlw $4, %ymm1, %ymm1
264 ; AVX512CD-NEXT: vpand %ymm4, %ymm1, %ymm1
265 ; AVX512CD-NEXT: vpshufb %ymm1, %ymm6, %ymm1
266 ; AVX512CD-NEXT: vpaddb %ymm2, %ymm1, %ymm1
267 ; AVX512CD-NEXT: vpsllw $8, %ymm1, %ymm2
268 ; AVX512CD-NEXT: vpaddb %ymm1, %ymm2, %ymm1
269 ; AVX512CD-NEXT: vpsrlw $8, %ymm1, %ymm1
270 ; AVX512CD-NEXT: retq
314 ; AVX512CD-LABEL: testv32i16u:
315 ; AVX512CD: ## BB#0:
316 ; AVX512CD-NEXT: vpxor %ymm2, %ymm2, %ymm2
317 ; AVX512CD-NEXT: vpsubw %ymm0, %ymm2, %ymm3
318 ; AVX512CD-NEXT: vpand %ymm3, %ymm0, %ymm0
319 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm3 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
320 ; AVX512CD-NEXT: vpsubw %ymm3, %ymm0, %ymm0
321 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm4 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,…
322 ; AVX512CD-NEXT: vpand %ymm4, %ymm0, %ymm5
323 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm6 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,…
324 ; AVX512CD-NEXT: vpshufb %ymm5, %ymm6, %ymm5
325 ; AVX512CD-NEXT: vpsrlw $4, %ymm0, %ymm0
326 ; AVX512CD-NEXT: vpand %ymm4, %ymm0, %ymm0
327 ; AVX512CD-NEXT: vpshufb %ymm0, %ymm6, %ymm0
328 ; AVX512CD-NEXT: vpaddb %ymm5, %ymm0, %ymm0
329 ; AVX512CD-NEXT: vpsllw $8, %ymm0, %ymm5
330 ; AVX512CD-NEXT: vpaddb %ymm0, %ymm5, %ymm0
331 ; AVX512CD-NEXT: vpsrlw $8, %ymm0, %ymm0
332 ; AVX512CD-NEXT: vpsubw %ymm1, %ymm2, %ymm2
333 ; AVX512CD-NEXT: vpand %ymm2, %ymm1, %ymm1
334 ; AVX512CD-NEXT: vpsubw %ymm3, %ymm1, %ymm1
335 ; AVX512CD-NEXT: vpand %ymm4, %ymm1, %ymm2
336 ; AVX512CD-NEXT: vpshufb %ymm2, %ymm6, %ymm2
337 ; AVX512CD-NEXT: vpsrlw $4, %ymm1, %ymm1
338 ; AVX512CD-NEXT: vpand %ymm4, %ymm1, %ymm1
339 ; AVX512CD-NEXT: vpshufb %ymm1, %ymm6, %ymm1
340 ; AVX512CD-NEXT: vpaddb %ymm2, %ymm1, %ymm1
341 ; AVX512CD-NEXT: vpsllw $8, %ymm1, %ymm2
342 ; AVX512CD-NEXT: vpaddb %ymm1, %ymm2, %ymm1
343 ; AVX512CD-NEXT: vpsrlw $8, %ymm1, %ymm1
344 ; AVX512CD-NEXT: retq
388 ; AVX512CD-LABEL: testv64i8:
389 ; AVX512CD: ## BB#0:
390 ; AVX512CD-NEXT: vpxor %ymm2, %ymm2, %ymm2
391 ; AVX512CD-NEXT: vpsubb %ymm0, %ymm2, %ymm3
392 ; AVX512CD-NEXT: vpand %ymm3, %ymm0, %ymm0
393 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm3 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,…
394 ; AVX512CD-NEXT: vpsubb %ymm3, %ymm0, %ymm0
395 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm4 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,…
396 ; AVX512CD-NEXT: vpand %ymm4, %ymm0, %ymm5
397 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm6 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,…
398 ; AVX512CD-NEXT: vpshufb %ymm5, %ymm6, %ymm5
399 ; AVX512CD-NEXT: vpsrlw $4, %ymm0, %ymm0
400 ; AVX512CD-NEXT: vpand %ymm4, %ymm0, %ymm0
401 ; AVX512CD-NEXT: vpshufb %ymm0, %ymm6, %ymm0
402 ; AVX512CD-NEXT: vpaddb %ymm5, %ymm0, %ymm0
403 ; AVX512CD-NEXT: vpsubb %ymm1, %ymm2, %ymm2
404 ; AVX512CD-NEXT: vpand %ymm2, %ymm1, %ymm1
405 ; AVX512CD-NEXT: vpsubb %ymm3, %ymm1, %ymm1
406 ; AVX512CD-NEXT: vpand %ymm4, %ymm1, %ymm2
407 ; AVX512CD-NEXT: vpshufb %ymm2, %ymm6, %ymm2
408 ; AVX512CD-NEXT: vpsrlw $4, %ymm1, %ymm1
409 ; AVX512CD-NEXT: vpand %ymm4, %ymm1, %ymm1
410 ; AVX512CD-NEXT: vpshufb %ymm1, %ymm6, %ymm1
411 ; AVX512CD-NEXT: vpaddb %ymm2, %ymm1, %ymm1
412 ; AVX512CD-NEXT: retq
450 ; AVX512CD-LABEL: testv64i8u:
451 ; AVX512CD: ## BB#0:
452 ; AVX512CD-NEXT: vpxor %ymm2, %ymm2, %ymm2
453 ; AVX512CD-NEXT: vpsubb %ymm0, %ymm2, %ymm3
454 ; AVX512CD-NEXT: vpand %ymm3, %ymm0, %ymm0
455 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm3 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,…
456 ; AVX512CD-NEXT: vpsubb %ymm3, %ymm0, %ymm0
457 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm4 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,…
458 ; AVX512CD-NEXT: vpand %ymm4, %ymm0, %ymm5
459 ; AVX512CD-NEXT: vmovdqa {{.*#+}} ymm6 = [0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,…
460 ; AVX512CD-NEXT: vpshufb %ymm5, %ymm6, %ymm5
461 ; AVX512CD-NEXT: vpsrlw $4, %ymm0, %ymm0
462 ; AVX512CD-NEXT: vpand %ymm4, %ymm0, %ymm0
463 ; AVX512CD-NEXT: vpshufb %ymm0, %ymm6, %ymm0
464 ; AVX512CD-NEXT: vpaddb %ymm5, %ymm0, %ymm0
465 ; AVX512CD-NEXT: vpsubb %ymm1, %ymm2, %ymm2
466 ; AVX512CD-NEXT: vpand %ymm2, %ymm1, %ymm1
467 ; AVX512CD-NEXT: vpsubb %ymm3, %ymm1, %ymm1
468 ; AVX512CD-NEXT: vpand %ymm4, %ymm1, %ymm2
469 ; AVX512CD-NEXT: vpshufb %ymm2, %ymm6, %ymm2
470 ; AVX512CD-NEXT: vpsrlw $4, %ymm1, %ymm1
471 ; AVX512CD-NEXT: vpand %ymm4, %ymm1, %ymm1
472 ; AVX512CD-NEXT: vpshufb %ymm1, %ymm6, %ymm1
473 ; AVX512CD-NEXT: vpaddb %ymm2, %ymm1, %ymm1
474 ; AVX512CD-NEXT: retq