Lines Matching refs:AVX2

3 … -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2
47 ; AVX2-LABEL: test_div7_4i64:
48 ; AVX2: # BB#0:
49 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
50 ; AVX2-NEXT: vpextrq $1, %xmm1, %rax
51 ; AVX2-NEXT: movabsq $5270498306774157605, %rcx # imm = 0x4924924924924925
52 ; AVX2-NEXT: imulq %rcx
53 ; AVX2-NEXT: movq %rdx, %rax
54 ; AVX2-NEXT: shrq $63, %rax
55 ; AVX2-NEXT: sarq %rdx
56 ; AVX2-NEXT: addq %rax, %rdx
57 ; AVX2-NEXT: vmovq %rdx, %xmm2
58 ; AVX2-NEXT: vmovq %xmm1, %rax
59 ; AVX2-NEXT: imulq %rcx
60 ; AVX2-NEXT: movq %rdx, %rax
61 ; AVX2-NEXT: shrq $63, %rax
62 ; AVX2-NEXT: sarq %rdx
63 ; AVX2-NEXT: addq %rax, %rdx
64 ; AVX2-NEXT: vmovq %rdx, %xmm1
65 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
66 ; AVX2-NEXT: vpextrq $1, %xmm0, %rax
67 ; AVX2-NEXT: imulq %rcx
68 ; AVX2-NEXT: movq %rdx, %rax
69 ; AVX2-NEXT: shrq $63, %rax
70 ; AVX2-NEXT: sarq %rdx
71 ; AVX2-NEXT: addq %rax, %rdx
72 ; AVX2-NEXT: vmovq %rdx, %xmm2
73 ; AVX2-NEXT: vmovq %xmm0, %rax
74 ; AVX2-NEXT: imulq %rcx
75 ; AVX2-NEXT: movq %rdx, %rax
76 ; AVX2-NEXT: shrq $63, %rax
77 ; AVX2-NEXT: sarq %rdx
78 ; AVX2-NEXT: addq %rax, %rdx
79 ; AVX2-NEXT: vmovq %rdx, %xmm0
80 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
81 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
82 ; AVX2-NEXT: retq
116 ; AVX2-LABEL: test_div7_8i32:
117 ; AVX2: # BB#0:
118 ; AVX2-NEXT: vpbroadcastd {{.*}}(%rip), %ymm1
119 ; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm1[1,1,3,3,5,5,7,7]
120 ; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,3,3,5,5,7,7]
121 ; AVX2-NEXT: vpmuldq %ymm2, %ymm3, %ymm2
122 ; AVX2-NEXT: vpmuldq %ymm1, %ymm0, %ymm1
123 ; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[1,1,3,3,5,5,7,7]
124 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2],ymm2[3],ymm1[4],ymm2[5],ymm1[6],ym…
125 ; AVX2-NEXT: vpaddd %ymm0, %ymm1, %ymm0
126 ; AVX2-NEXT: vpsrld $31, %ymm0, %ymm1
127 ; AVX2-NEXT: vpsrad $2, %ymm0, %ymm0
128 ; AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
129 ; AVX2-NEXT: retq
150 ; AVX2-LABEL: test_div7_16i16:
151 ; AVX2: # BB#0:
152 ; AVX2-NEXT: vpmulhw {{.*}}(%rip), %ymm0, %ymm0
153 ; AVX2-NEXT: vpsrlw $15, %ymm0, %ymm1
154 ; AVX2-NEXT: vpsraw $1, %ymm0, %ymm0
155 ; AVX2-NEXT: vpaddw %ymm1, %ymm0, %ymm0
156 ; AVX2-NEXT: retq
204 ; AVX2-LABEL: test_div7_32i8:
205 ; AVX2: # BB#0:
206 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [147,147,147,147,147,147,147,147,147,147,147,147,147,147,14…
207 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
208 ; AVX2-NEXT: vpmovsxbw %xmm2, %ymm2
209 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm3
210 ; AVX2-NEXT: vpmovsxbw %xmm3, %ymm3
211 ; AVX2-NEXT: vpmullw %ymm2, %ymm3, %ymm2
212 ; AVX2-NEXT: vpsrlw $8, %ymm2, %ymm2
213 ; AVX2-NEXT: vpmovsxbw %xmm1, %ymm1
214 ; AVX2-NEXT: vpmovsxbw %xmm0, %ymm3
215 ; AVX2-NEXT: vpmullw %ymm1, %ymm3, %ymm1
216 ; AVX2-NEXT: vpsrlw $8, %ymm1, %ymm1
217 ; AVX2-NEXT: vperm2i128 {{.*#+}} ymm3 = ymm1[2,3],ymm2[2,3]
218 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
219 ; AVX2-NEXT: vpackuswb %ymm3, %ymm1, %ymm1
220 ; AVX2-NEXT: vpaddb %ymm0, %ymm1, %ymm0
221 ; AVX2-NEXT: vpsrlw $2, %ymm0, %ymm1
222 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm1, %ymm1
223 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm2 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,3…
224 ; AVX2-NEXT: vpxor %ymm2, %ymm1, %ymm1
225 ; AVX2-NEXT: vpsubb %ymm2, %ymm1, %ymm1
226 ; AVX2-NEXT: vpsrlw $7, %ymm0, %ymm0
227 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm0, %ymm0
228 ; AVX2-NEXT: vpaddb %ymm0, %ymm1, %ymm0
229 ; AVX2-NEXT: retq
292 ; AVX2-LABEL: test_rem7_4i64:
293 ; AVX2: # BB#0:
294 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
295 ; AVX2-NEXT: vpextrq $1, %xmm1, %rcx
296 ; AVX2-NEXT: movabsq $5270498306774157605, %rsi # imm = 0x4924924924924925
297 ; AVX2-NEXT: movq %rcx, %rax
298 ; AVX2-NEXT: imulq %rsi
299 ; AVX2-NEXT: movq %rdx, %rax
300 ; AVX2-NEXT: shrq $63, %rax
301 ; AVX2-NEXT: sarq %rdx
302 ; AVX2-NEXT: addq %rax, %rdx
303 ; AVX2-NEXT: leaq (,%rdx,8), %rax
304 ; AVX2-NEXT: subq %rdx, %rax
305 ; AVX2-NEXT: subq %rax, %rcx
306 ; AVX2-NEXT: vmovq %rcx, %xmm2
307 ; AVX2-NEXT: vmovq %xmm1, %rcx
308 ; AVX2-NEXT: movq %rcx, %rax
309 ; AVX2-NEXT: imulq %rsi
310 ; AVX2-NEXT: movq %rdx, %rax
311 ; AVX2-NEXT: shrq $63, %rax
312 ; AVX2-NEXT: sarq %rdx
313 ; AVX2-NEXT: addq %rax, %rdx
314 ; AVX2-NEXT: leaq (,%rdx,8), %rax
315 ; AVX2-NEXT: subq %rdx, %rax
316 ; AVX2-NEXT: subq %rax, %rcx
317 ; AVX2-NEXT: vmovq %rcx, %xmm1
318 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
319 ; AVX2-NEXT: vpextrq $1, %xmm0, %rcx
320 ; AVX2-NEXT: movq %rcx, %rax
321 ; AVX2-NEXT: imulq %rsi
322 ; AVX2-NEXT: movq %rdx, %rax
323 ; AVX2-NEXT: shrq $63, %rax
324 ; AVX2-NEXT: sarq %rdx
325 ; AVX2-NEXT: addq %rax, %rdx
326 ; AVX2-NEXT: leaq (,%rdx,8), %rax
327 ; AVX2-NEXT: subq %rdx, %rax
328 ; AVX2-NEXT: subq %rax, %rcx
329 ; AVX2-NEXT: vmovq %rcx, %xmm2
330 ; AVX2-NEXT: vmovq %xmm0, %rcx
331 ; AVX2-NEXT: movq %rcx, %rax
332 ; AVX2-NEXT: imulq %rsi
333 ; AVX2-NEXT: movq %rdx, %rax
334 ; AVX2-NEXT: shrq $63, %rax
335 ; AVX2-NEXT: sarq %rdx
336 ; AVX2-NEXT: addq %rax, %rdx
337 ; AVX2-NEXT: leaq (,%rdx,8), %rax
338 ; AVX2-NEXT: subq %rdx, %rax
339 ; AVX2-NEXT: subq %rax, %rcx
340 ; AVX2-NEXT: vmovq %rcx, %xmm0
341 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
342 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
343 ; AVX2-NEXT: retq
382 ; AVX2-LABEL: test_rem7_8i32:
383 ; AVX2: # BB#0:
384 ; AVX2-NEXT: vpbroadcastd {{.*}}(%rip), %ymm1
385 ; AVX2-NEXT: vpshufd {{.*#+}} ymm2 = ymm1[1,1,3,3,5,5,7,7]
386 ; AVX2-NEXT: vpshufd {{.*#+}} ymm3 = ymm0[1,1,3,3,5,5,7,7]
387 ; AVX2-NEXT: vpmuldq %ymm2, %ymm3, %ymm2
388 ; AVX2-NEXT: vpmuldq %ymm1, %ymm0, %ymm1
389 ; AVX2-NEXT: vpshufd {{.*#+}} ymm1 = ymm1[1,1,3,3,5,5,7,7]
390 ; AVX2-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],ymm2[1],ymm1[2],ymm2[3],ymm1[4],ymm2[5],ymm1[6],ym…
391 ; AVX2-NEXT: vpaddd %ymm0, %ymm1, %ymm1
392 ; AVX2-NEXT: vpsrld $31, %ymm1, %ymm2
393 ; AVX2-NEXT: vpsrad $2, %ymm1, %ymm1
394 ; AVX2-NEXT: vpaddd %ymm2, %ymm1, %ymm1
395 ; AVX2-NEXT: vpbroadcastd {{.*}}(%rip), %ymm2
396 ; AVX2-NEXT: vpmulld %ymm2, %ymm1, %ymm1
397 ; AVX2-NEXT: vpsubd %ymm1, %ymm0, %ymm0
398 ; AVX2-NEXT: retq
424 ; AVX2-LABEL: test_rem7_16i16:
425 ; AVX2: # BB#0:
426 ; AVX2-NEXT: vpmulhw {{.*}}(%rip), %ymm0, %ymm1
427 ; AVX2-NEXT: vpsrlw $15, %ymm1, %ymm2
428 ; AVX2-NEXT: vpsraw $1, %ymm1, %ymm1
429 ; AVX2-NEXT: vpaddw %ymm2, %ymm1, %ymm1
430 ; AVX2-NEXT: vpmullw {{.*}}(%rip), %ymm1, %ymm1
431 ; AVX2-NEXT: vpsubw %ymm1, %ymm0, %ymm0
432 ; AVX2-NEXT: retq
500 ; AVX2-LABEL: test_rem7_32i8:
501 ; AVX2: # BB#0:
502 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm1 = [147,147,147,147,147,147,147,147,147,147,147,147,147,147,14…
503 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
504 ; AVX2-NEXT: vpmovsxbw %xmm2, %ymm2
505 ; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm3
506 ; AVX2-NEXT: vpmovsxbw %xmm3, %ymm3
507 ; AVX2-NEXT: vpmullw %ymm2, %ymm3, %ymm2
508 ; AVX2-NEXT: vpsrlw $8, %ymm2, %ymm2
509 ; AVX2-NEXT: vpmovsxbw %xmm1, %ymm1
510 ; AVX2-NEXT: vpmovsxbw %xmm0, %ymm3
511 ; AVX2-NEXT: vpmullw %ymm1, %ymm3, %ymm1
512 ; AVX2-NEXT: vpsrlw $8, %ymm1, %ymm1
513 ; AVX2-NEXT: vperm2i128 {{.*#+}} ymm3 = ymm1[2,3],ymm2[2,3]
514 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
515 ; AVX2-NEXT: vpackuswb %ymm3, %ymm1, %ymm1
516 ; AVX2-NEXT: vpaddb %ymm0, %ymm1, %ymm1
517 ; AVX2-NEXT: vpsrlw $2, %ymm1, %ymm2
518 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm2, %ymm2
519 ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,3…
520 ; AVX2-NEXT: vpxor %ymm3, %ymm2, %ymm2
521 ; AVX2-NEXT: vpsubb %ymm3, %ymm2, %ymm2
522 ; AVX2-NEXT: vpsrlw $7, %ymm1, %ymm1
523 ; AVX2-NEXT: vpand {{.*}}(%rip), %ymm1, %ymm1
524 ; AVX2-NEXT: vpaddb %ymm1, %ymm2, %ymm1
525 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm2
526 ; AVX2-NEXT: vpmovsxbw %xmm2, %ymm2
527 ; AVX2-NEXT: vpmovsxbw {{.*}}(%rip), %ymm3
528 ; AVX2-NEXT: vpmullw %ymm3, %ymm2, %ymm2
529 ; AVX2-NEXT: vextracti128 $1, %ymm2, %xmm4
530 ; AVX2-NEXT: vmovdqa {{.*#+}} xmm5 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
531 ; AVX2-NEXT: vpshufb %xmm5, %xmm4, %xmm4
532 ; AVX2-NEXT: vpshufb %xmm5, %xmm2, %xmm2
533 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm4[0]
534 ; AVX2-NEXT: vpmovsxbw %xmm1, %ymm1
535 ; AVX2-NEXT: vpmullw %ymm3, %ymm1, %ymm1
536 ; AVX2-NEXT: vextracti128 $1, %ymm1, %xmm3
537 ; AVX2-NEXT: vpshufb %xmm5, %xmm3, %xmm3
538 ; AVX2-NEXT: vpshufb %xmm5, %xmm1, %xmm1
539 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0]
540 ; AVX2-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
541 ; AVX2-NEXT: vpsubb %ymm1, %ymm0, %ymm0
542 ; AVX2-NEXT: retq