Lines Matching refs:AVX2
3 … -mcpu=x86-64 -mattr=+avx2 | FileCheck %s --check-prefix=ALL --check-prefix=AVX --check-prefix=AVX2
101 ; AVX2-LABEL: var_shuffle_v4i64_v4i64_xxxx_i64:
102 ; AVX2: # BB#0:
103 ; AVX2-NEXT: pushq %rbp
104 ; AVX2-NEXT: movq %rsp, %rbp
105 ; AVX2-NEXT: andq $-32, %rsp
106 ; AVX2-NEXT: subq $64, %rsp
107 ; AVX2-NEXT: vmovaps %ymm0, (%rsp)
108 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
109 ; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
110 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
111 ; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
112 ; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero
113 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
114 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
115 ; AVX2-NEXT: movq %rbp, %rsp
116 ; AVX2-NEXT: popq %rbp
117 ; AVX2-NEXT: retq
146 ; AVX2-LABEL: var_shuffle_v4i64_v4i64_xx00_i64:
147 ; AVX2: # BB#0:
148 ; AVX2-NEXT: pushq %rbp
149 ; AVX2-NEXT: movq %rsp, %rbp
150 ; AVX2-NEXT: andq $-32, %rsp
151 ; AVX2-NEXT: subq $64, %rsp
152 ; AVX2-NEXT: vmovaps %ymm0, (%rsp)
153 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
154 ; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
155 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
156 ; AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
157 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
158 ; AVX2-NEXT: movq %rbp, %rsp
159 ; AVX2-NEXT: popq %rbp
160 ; AVX2-NEXT: retq
185 ; AVX2-LABEL: var_shuffle_v4i64_v2i64_xxxx_i64:
186 ; AVX2: # BB#0:
187 ; AVX2-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
188 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
189 ; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
190 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
191 ; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
192 ; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero
193 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
194 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
195 ; AVX2-NEXT: retq
238 ; AVX2-LABEL: var_shuffle_v8f32_v8f32_xxxxxxxx_i32:
239 ; AVX2: # BB#0:
240 ; AVX2-NEXT: vmovd %edi, %xmm1
241 ; AVX2-NEXT: vpermps %ymm0, %ymm1, %ymm1
242 ; AVX2-NEXT: vmovd %esi, %xmm2
243 ; AVX2-NEXT: vpermps %ymm0, %ymm2, %ymm2
244 ; AVX2-NEXT: vmovd %edx, %xmm3
245 ; AVX2-NEXT: vpermps %ymm0, %ymm3, %ymm3
246 ; AVX2-NEXT: vmovd %ecx, %xmm4
247 ; AVX2-NEXT: vpermps %ymm0, %ymm4, %ymm4
248 ; AVX2-NEXT: vmovd %r8d, %xmm5
249 ; AVX2-NEXT: vpermps %ymm0, %ymm5, %ymm5
250 ; AVX2-NEXT: vmovd %r9d, %xmm6
251 ; AVX2-NEXT: vpermps %ymm0, %ymm6, %ymm6
252 ; AVX2-NEXT: vmovd {{.*#+}} xmm7 = mem[0],zero,zero,zero
253 ; AVX2-NEXT: vpermps %ymm0, %ymm7, %ymm7
254 ; AVX2-NEXT: vmovd {{.*#+}} xmm8 = mem[0],zero,zero,zero
255 ; AVX2-NEXT: vpermps %ymm0, %ymm8, %ymm0
256 ; AVX2-NEXT: vinsertps {{.*#+}} xmm5 = xmm5[0],xmm6[0],xmm5[2,3]
257 ; AVX2-NEXT: vinsertps {{.*#+}} xmm5 = xmm5[0,1],xmm7[0],xmm5[3]
258 ; AVX2-NEXT: vinsertps {{.*#+}} xmm0 = xmm5[0,1,2],xmm0[0]
259 ; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[2,3]
260 ; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0,1],xmm3[0],xmm1[3]
261 ; AVX2-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0,1,2],xmm4[0]
262 ; AVX2-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
263 ; AVX2-NEXT: retq
382 ; AVX2-LABEL: var_shuffle_v16i16_v16i16_xxxxxxxxxxxxxxxx_i16:
383 ; AVX2: # BB#0:
384 ; AVX2-NEXT: pushq %rbp
385 ; AVX2-NEXT: movq %rsp, %rbp
386 ; AVX2-NEXT: andq $-32, %rsp
387 ; AVX2-NEXT: subq $64, %rsp
388 ; AVX2-NEXT: vmovaps %ymm0, (%rsp)
389 ; AVX2-NEXT: movslq 32(%rbp), %rax
390 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
391 ; AVX2-NEXT: vmovd %eax, %xmm0
392 ; AVX2-NEXT: movslq 40(%rbp), %rax
393 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
394 ; AVX2-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0
395 ; AVX2-NEXT: movslq 48(%rbp), %rax
396 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
397 ; AVX2-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0
398 ; AVX2-NEXT: movslq 56(%rbp), %rax
399 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
400 ; AVX2-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0
401 ; AVX2-NEXT: movslq 64(%rbp), %rax
402 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
403 ; AVX2-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0
404 ; AVX2-NEXT: movslq 72(%rbp), %rax
405 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
406 ; AVX2-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0
407 ; AVX2-NEXT: movslq 80(%rbp), %rax
408 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
409 ; AVX2-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0
410 ; AVX2-NEXT: movslq 88(%rbp), %rax
411 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
412 ; AVX2-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0
413 ; AVX2-NEXT: movslq %edi, %rax
414 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
415 ; AVX2-NEXT: vmovd %eax, %xmm1
416 ; AVX2-NEXT: movslq %esi, %rax
417 ; AVX2-NEXT: vpinsrw $1, (%rsp,%rax,2), %xmm1, %xmm1
418 ; AVX2-NEXT: movslq %edx, %rax
419 ; AVX2-NEXT: vpinsrw $2, (%rsp,%rax,2), %xmm1, %xmm1
420 ; AVX2-NEXT: movslq %ecx, %rax
421 ; AVX2-NEXT: vpinsrw $3, (%rsp,%rax,2), %xmm1, %xmm1
422 ; AVX2-NEXT: movslq %r8d, %rax
423 ; AVX2-NEXT: vpinsrw $4, (%rsp,%rax,2), %xmm1, %xmm1
424 ; AVX2-NEXT: movslq %r9d, %rax
425 ; AVX2-NEXT: vpinsrw $5, (%rsp,%rax,2), %xmm1, %xmm1
426 ; AVX2-NEXT: movslq 16(%rbp), %rax
427 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
428 ; AVX2-NEXT: vpinsrw $6, %eax, %xmm1, %xmm1
429 ; AVX2-NEXT: movslq 24(%rbp), %rax
430 ; AVX2-NEXT: movzwl (%rsp,%rax,2), %eax
431 ; AVX2-NEXT: vpinsrw $7, %eax, %xmm1, %xmm1
432 ; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0
433 ; AVX2-NEXT: movq %rbp, %rsp
434 ; AVX2-NEXT: popq %rbp
435 ; AVX2-NEXT: retq
521 ; AVX2-LABEL: var_shuffle_v16i16_v8i16_xxxxxxxxxxxxxxxx_i16:
522 ; AVX2: # BB#0:
523 ; AVX2-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
524 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
525 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
526 ; AVX2-NEXT: vmovd %eax, %xmm0
527 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
528 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
529 ; AVX2-NEXT: vpinsrw $1, %eax, %xmm0, %xmm0
530 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
531 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
532 ; AVX2-NEXT: vpinsrw $2, %eax, %xmm0, %xmm0
533 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
534 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
535 ; AVX2-NEXT: vpinsrw $3, %eax, %xmm0, %xmm0
536 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
537 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
538 ; AVX2-NEXT: vpinsrw $4, %eax, %xmm0, %xmm0
539 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
540 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
541 ; AVX2-NEXT: vpinsrw $5, %eax, %xmm0, %xmm0
542 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
543 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
544 ; AVX2-NEXT: vpinsrw $6, %eax, %xmm0, %xmm0
545 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
546 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
547 ; AVX2-NEXT: vpinsrw $7, %eax, %xmm0, %xmm0
548 ; AVX2-NEXT: movslq %edi, %rax
549 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
550 ; AVX2-NEXT: vmovd %eax, %xmm1
551 ; AVX2-NEXT: movslq %esi, %rax
552 ; AVX2-NEXT: vpinsrw $1, -24(%rsp,%rax,2), %xmm1, %xmm1
553 ; AVX2-NEXT: movslq %edx, %rax
554 ; AVX2-NEXT: vpinsrw $2, -24(%rsp,%rax,2), %xmm1, %xmm1
555 ; AVX2-NEXT: movslq %ecx, %rax
556 ; AVX2-NEXT: vpinsrw $3, -24(%rsp,%rax,2), %xmm1, %xmm1
557 ; AVX2-NEXT: movslq %r8d, %rax
558 ; AVX2-NEXT: vpinsrw $4, -24(%rsp,%rax,2), %xmm1, %xmm1
559 ; AVX2-NEXT: movslq %r9d, %rax
560 ; AVX2-NEXT: vpinsrw $5, -24(%rsp,%rax,2), %xmm1, %xmm1
561 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
562 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
563 ; AVX2-NEXT: vpinsrw $6, %eax, %xmm1, %xmm1
564 ; AVX2-NEXT: movslq {{[0-9]+}}(%rsp), %rax
565 ; AVX2-NEXT: movzwl -24(%rsp,%rax,2), %eax
566 ; AVX2-NEXT: vpinsrw $7, %eax, %xmm1, %xmm1
567 ; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0
568 ; AVX2-NEXT: retq
631 ; AVX2-LABEL: mem_shuffle_v4i64_v4i64_xxxx_i64:
632 ; AVX2: # BB#0:
633 ; AVX2-NEXT: pushq %rbp
634 ; AVX2-NEXT: movq %rsp, %rbp
635 ; AVX2-NEXT: andq $-32, %rsp
636 ; AVX2-NEXT: subq $64, %rsp
637 ; AVX2-NEXT: movq (%rdi), %rax
638 ; AVX2-NEXT: movq 8(%rdi), %rcx
639 ; AVX2-NEXT: movq 16(%rdi), %rdx
640 ; AVX2-NEXT: movq 24(%rdi), %rsi
641 ; AVX2-NEXT: vmovaps %ymm0, (%rsp)
642 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
643 ; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
644 ; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero
645 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
646 ; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero
647 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
648 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
649 ; AVX2-NEXT: movq %rbp, %rsp
650 ; AVX2-NEXT: popq %rbp
651 ; AVX2-NEXT: retq
688 ; AVX2-LABEL: mem_shuffle_v4i64_v2i64_xxxx_i64:
689 ; AVX2: # BB#0:
690 ; AVX2-NEXT: movq (%rdi), %rax
691 ; AVX2-NEXT: movq 8(%rdi), %rcx
692 ; AVX2-NEXT: movq 16(%rdi), %rdx
693 ; AVX2-NEXT: movq 24(%rdi), %rsi
694 ; AVX2-NEXT: vmovaps %xmm0, -{{[0-9]+}}(%rsp)
695 ; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
696 ; AVX2-NEXT: vmovq {{.*#+}} xmm1 = mem[0],zero
697 ; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero
698 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm1 = xmm2[0],xmm1[0]
699 ; AVX2-NEXT: vmovq {{.*#+}} xmm2 = mem[0],zero
700 ; AVX2-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
701 ; AVX2-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
702 ; AVX2-NEXT: retq