Lines Matching refs:AVX2

3 … -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2
51 ; AVX2-LABEL: test_div7_4i64:
52 ; AVX2: # BB#0:
53 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
54 ; AVX2-NEXT: vpextrq $1, %xmm1, %rcx
55 ; AVX2-NEXT: movabsq $2635249153387078803, %rsi # imm = 0x2492492492492493
56 ; AVX2-NEXT: movq %rcx, %rax
57 ; AVX2-NEXT: mulq %rsi
58 ; AVX2-NEXT: subq %rdx, %rcx
59 ; AVX2-NEXT: shrq %rcx
60 ; AVX2-NEXT: addq %rdx, %rcx
61 ; AVX2-NEXT: shrq $2, %rcx
62 ; AVX2-NEXT: vmovq %rcx, %xmm2
63 ; AVX2-NEXT: vmovq %xmm1, %rcx
64 ; AVX2-NEXT: movq %rcx, %rax
65 ; AVX2-NEXT: mulq %rsi
66 ; AVX2-NEXT: subq %rdx, %rcx
67 ; AVX2-NEXT: shrq %rcx
68 ; AVX2-NEXT: addq %rdx, %rcx
69 ; AVX2-NEXT: shrq $2, %rcx
70 ; AVX2-NEXT: vmovq %rcx, %xmm1
71 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
72 ; AVX2-NEXT: vpextrq $1, %xmm0, %rcx
73 ; AVX2-NEXT: movq %rcx, %rax
74 ; AVX2-NEXT: mulq %rsi
75 ; AVX2-NEXT: subq %rdx, %rcx
76 ; AVX2-NEXT: shrq %rcx
77 ; AVX2-NEXT: addq %rdx, %rcx
78 ; AVX2-NEXT: shrq $2, %rcx
79 ; AVX2-NEXT: vmovq %rcx, %xmm2
80 ; AVX2-NEXT: vmovq %xmm0, %rcx
81 ; AVX2-NEXT: movq %rcx, %rax
82 ; AVX2-NEXT: mulq %rsi
83 ; AVX2-NEXT: subq %rdx, %rcx
84 ; AVX2-NEXT: shrq %rcx
85 ; AVX2-NEXT: addq %rdx, %rcx
86 ; AVX2-NEXT: shrq $2, %rcx
87 ; AVX2-NEXT: vmovq %rcx, %xmm0
88 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
89 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
90 ; AVX2-NEXT: retq
124 ; AVX2-LABEL: test_div7_8i32:
125 ; AVX2: # BB#0:
126 ; AVX2-NEXT: vpbroadcastd {{.*}}(%rip), %ymm1
127 ; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm1[1,1,3,3,5,5,7,7]
128 ; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,3,3,5,5,7,7]
129 ; AVX2-NEXT: vpmuludq %ymm2, %ymm3, %ymm2
130 ; AVX2-NEXT: vpmuludq %ymm1, %ymm0, %ymm1
131 ; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[1,1,3,3,5,5,7,7]
132 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2],ymm2[3],ymm1[4],ymm2[5],ymm1[6],ym…
133 ; AVX2-NEXT: vpsubd %ymm1, %ymm0, %ymm0
134 ; AVX2-NEXT: vpsrld $1, %ymm0, %ymm0
135 ; AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
136 ; AVX2-NEXT: vpsrld $2, %ymm0, %ymm0
137 ; AVX2-NEXT: retq
160 ; AVX2-LABEL: test_div7_16i16:
161 ; AVX2: # BB#0:
162 ; AVX2-NEXT: vpmulhuw {{.*}}(%rip), %ymm0, %ymm1
163 ; AVX2-NEXT: vpsubw %ymm1, %ymm0, %ymm0
164 ; AVX2-NEXT: vpsrlw $1, %ymm0, %ymm0
165 ; AVX2-NEXT: vpaddw %ymm1, %ymm0, %ymm0
166 ; AVX2-NEXT: vpsrlw $2, %ymm0, %ymm0
167 ; AVX2-NEXT: retq
210 ; AVX2-LABEL: test_div7_32i8:
211 ; AVX2: # BB#0:
212 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,3…
213 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
214 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm2 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[…
215 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm3
216 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm3[0],zero,xmm3[1],zero,xmm3[2],zero,xmm3[3],zero,xmm3[…
217 ; AVX2-NEXT: vpmullw %ymm2, %ymm3, %ymm2
218 ; AVX2-NEXT: vpsrlw $8, %ymm2, %ymm2
219 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[…
220 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
221 ; AVX2-NEXT: vpmullw %ymm1, %ymm3, %ymm1
222 ; AVX2-NEXT: vpsrlw $8, %ymm1, %ymm1
223 ; AVX2-NEXT: vperm2i128 {{.*#+}} ymm3 = ymm1[2,3],ymm2[2,3]
224 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
225 ; AVX2-NEXT: vpackuswb %ymm3, %ymm1, %ymm1
226 ; AVX2-NEXT: vpsubb %ymm1, %ymm0, %ymm0
227 ; AVX2-NEXT: vpsrlw $1, %ymm0, %ymm0
228 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm0, %ymm0
229 ; AVX2-NEXT: vpaddb %ymm1, %ymm0, %ymm0
230 ; AVX2-NEXT: vpsrlw $2, %ymm0, %ymm0
231 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm0, %ymm0
232 ; AVX2-NEXT: retq
299 ; AVX2-LABEL: test_rem7_4i64:
300 ; AVX2: # BB#0:
301 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
302 ; AVX2-NEXT: vpextrq $1, %xmm1, %rcx
303 ; AVX2-NEXT: movabsq $2635249153387078803, %rsi # imm = 0x2492492492492493
304 ; AVX2-NEXT: movq %rcx, %rax
305 ; AVX2-NEXT: mulq %rsi
306 ; AVX2-NEXT: movq %rcx, %rax
307 ; AVX2-NEXT: subq %rdx, %rax
308 ; AVX2-NEXT: shrq %rax
309 ; AVX2-NEXT: addq %rdx, %rax
310 ; AVX2-NEXT: shrq $2, %rax
311 ; AVX2-NEXT: leaq (,%rax,8), %rdx
312 ; AVX2-NEXT: subq %rax, %rdx
313 ; AVX2-NEXT: subq %rdx, %rcx
314 ; AVX2-NEXT: vmovq %rcx, %xmm2
315 ; AVX2-NEXT: vmovq %xmm1, %rcx
316 ; AVX2-NEXT: movq %rcx, %rax
317 ; AVX2-NEXT: mulq %rsi
318 ; AVX2-NEXT: movq %rcx, %rax
319 ; AVX2-NEXT: subq %rdx, %rax
320 ; AVX2-NEXT: shrq %rax
321 ; AVX2-NEXT: addq %rdx, %rax
322 ; AVX2-NEXT: shrq $2, %rax
323 ; AVX2-NEXT: leaq (,%rax,8), %rdx
324 ; AVX2-NEXT: subq %rax, %rdx
325 ; AVX2-NEXT: subq %rdx, %rcx
326 ; AVX2-NEXT: vmovq %rcx, %xmm1
327 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
328 ; AVX2-NEXT: vpextrq $1, %xmm0, %rcx
329 ; AVX2-NEXT: movq %rcx, %rax
330 ; AVX2-NEXT: mulq %rsi
331 ; AVX2-NEXT: movq %rcx, %rax
332 ; AVX2-NEXT: subq %rdx, %rax
333 ; AVX2-NEXT: shrq %rax
334 ; AVX2-NEXT: addq %rdx, %rax
335 ; AVX2-NEXT: shrq $2, %rax
336 ; AVX2-NEXT: leaq (,%rax,8), %rdx
337 ; AVX2-NEXT: subq %rax, %rdx
338 ; AVX2-NEXT: subq %rdx, %rcx
339 ; AVX2-NEXT: vmovq %rcx, %xmm2
340 ; AVX2-NEXT: vmovq %xmm0, %rcx
341 ; AVX2-NEXT: movq %rcx, %rax
342 ; AVX2-NEXT: mulq %rsi
343 ; AVX2-NEXT: movq %rcx, %rax
344 ; AVX2-NEXT: subq %rdx, %rax
345 ; AVX2-NEXT: shrq %rax
346 ; AVX2-NEXT: addq %rdx, %rax
347 ; AVX2-NEXT: shrq $2, %rax
348 ; AVX2-NEXT: leaq (,%rax,8), %rdx
349 ; AVX2-NEXT: subq %rax, %rdx
350 ; AVX2-NEXT: subq %rdx, %rcx
351 ; AVX2-NEXT: vmovq %rcx, %xmm0
352 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
353 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
354 ; AVX2-NEXT: retq
393 ; AVX2-LABEL: test_rem7_8i32:
394 ; AVX2: # BB#0:
395 ; AVX2-NEXT: vpbroadcastd {{.*}}(%rip), %ymm1
396 ; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm1[1,1,3,3,5,5,7,7]
397 ; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,3,3,5,5,7,7]
398 ; AVX2-NEXT: vpmuludq %ymm2, %ymm3, %ymm2
399 ; AVX2-NEXT: vpmuludq %ymm1, %ymm0, %ymm1
400 ; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[1,1,3,3,5,5,7,7]
401 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2],ymm2[3],ymm1[4],ymm2[5],ymm1[6],ym…
402 ; AVX2-NEXT: vpsubd %ymm1, %ymm0, %ymm2
403 ; AVX2-NEXT: vpsrld $1, %ymm2, %ymm2
404 ; AVX2-NEXT: vpaddd %ymm1, %ymm2, %ymm1
405 ; AVX2-NEXT: vpsrld $2, %ymm1, %ymm1
406 ; AVX2-NEXT: vpbroadcastd {{.*}}(%rip), %ymm2
407 ; AVX2-NEXT: vpmulld %ymm2, %ymm1, %ymm1
408 ; AVX2-NEXT: vpsubd %ymm1, %ymm0, %ymm0
409 ; AVX2-NEXT: retq
437 ; AVX2-LABEL: test_rem7_16i16:
438 ; AVX2: # BB#0:
439 ; AVX2-NEXT: vpmulhuw {{.*}}(%rip), %ymm0, %ymm1
440 ; AVX2-NEXT: vpsubw %ymm1, %ymm0, %ymm2
441 ; AVX2-NEXT: vpsrlw $1, %ymm2, %ymm2
442 ; AVX2-NEXT: vpaddw %ymm1, %ymm2, %ymm1
443 ; AVX2-NEXT: vpsrlw $2, %ymm1, %ymm1
444 ; AVX2-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
445 ; AVX2-NEXT: vpsubw %ymm1, %ymm0, %ymm0
446 ; AVX2-NEXT: retq
509 ; AVX2-LABEL: test_rem7_32i8:
510 ; AVX2: # BB#0:
511 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,3…
512 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
513 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm2 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[…
514 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm3
515 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm3[0],zero,xmm3[1],zero,xmm3[2],zero,xmm3[3],zero,xmm3[…
516 ; AVX2-NEXT: vpmullw %ymm2, %ymm3, %ymm2
517 ; AVX2-NEXT: vpsrlw $8, %ymm2, %ymm2
518 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[…
519 ; AVX2-NEXT: vpmovzxbw {{.*#+}} ymm3 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[…
520 ; AVX2-NEXT: vpmullw %ymm1, %ymm3, %ymm1
521 ; AVX2-NEXT: vpsrlw $8, %ymm1, %ymm1
522 ; AVX2-NEXT: vperm2i128 {{.*#+}} ymm3 = ymm1[2,3],ymm2[2,3]
523 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
524 ; AVX2-NEXT: vpackuswb %ymm3, %ymm1, %ymm1
525 ; AVX2-NEXT: vpsubb %ymm1, %ymm0, %ymm2
526 ; AVX2-NEXT: vpsrlw $1, %ymm2, %ymm2
527 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm2, %ymm2
528 ; AVX2-NEXT: vpaddb %ymm1, %ymm2, %ymm1
529 ; AVX2-NEXT: vpsrlw $2, %ymm1, %ymm1
530 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm1, %ymm1
531 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
532 ; AVX2-NEXT: vpmovsxbw %xmm2, %ymm2
533 ; AVX2-NEXT: vpmovsxbw {{.*}}(%rip), %ymm3
534 ; AVX2-NEXT: vpmullw %ymm3, %ymm2, %ymm2
535 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm4
536 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
537 ; AVX2-NEXT: vpshufb %xmm5, %xmm4, %xmm4
538 ; AVX2-NEXT: vpshufb %xmm5, %xmm2, %xmm2
539 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0]
540 ; AVX2-NEXT: vpmovsxbw %xmm1, %ymm1
541 ; AVX2-NEXT: vpmullw %ymm3, %ymm1, %ymm1
542 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
543 ; AVX2-NEXT: vpshufb %xmm5, %xmm3, %xmm3
544 ; AVX2-NEXT: vpshufb %xmm5, %xmm1, %xmm1
545 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0]
546 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
547 ; AVX2-NEXT: vpsubb %ymm1, %ymm0, %ymm0
548 ; AVX2-NEXT: retq