Lines Matching refs:AVX2
3 ; RUN: llc < %s -mtriple=x86_64-- -mattr=avx2 | FileCheck %s --check-prefixes=CHECK,X64-AVX2
29 ; X64-AVX2-LABEL: fshl_i32:
30 ; X64-AVX2: # %bb.0:
31 ; X64-AVX2-NEXT: movl %edx, %ecx
32 ; X64-AVX2-NEXT: movl %edi, %eax
33 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
34 ; X64-AVX2-NEXT: shldl %cl, %esi, %eax
35 ; X64-AVX2-NEXT: retq
61 ; X64-AVX2-LABEL: fshl_i64:
62 ; X64-AVX2: # %bb.0:
63 ; X64-AVX2-NEXT: movq %rdx, %rcx
64 ; X64-AVX2-NEXT: movq %rdi, %rax
65 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $rcx
66 ; X64-AVX2-NEXT: shldq %cl, %rsi, %rax
67 ; X64-AVX2-NEXT: retq
119 ; X64-AVX2-LABEL: fshl_i128:
120 ; X64-AVX2: # %bb.0:
121 ; X64-AVX2-NEXT: testb $64, %r8b
122 ; X64-AVX2-NEXT: cmovneq %rdi, %rsi
123 ; X64-AVX2-NEXT: cmoveq %rcx, %rdx
124 ; X64-AVX2-NEXT: cmovneq %rcx, %rdi
125 ; X64-AVX2-NEXT: movq %rdi, %rax
126 ; X64-AVX2-NEXT: movl %r8d, %ecx
127 ; X64-AVX2-NEXT: shldq %cl, %rdx, %rax
128 ; X64-AVX2-NEXT: shldq %cl, %rdi, %rsi
129 ; X64-AVX2-NEXT: movq %rsi, %rdx
130 ; X64-AVX2-NEXT: retq
176 ; X64-AVX2-LABEL: fshl_i37:
177 ; X64-AVX2: # %bb.0:
178 ; X64-AVX2-NEXT: movq %rdx, %rcx
179 ; X64-AVX2-NEXT: movabsq $137438953471, %rax # imm = 0x1FFFFFFFFF
180 ; X64-AVX2-NEXT: andq %rdx, %rax
181 ; X64-AVX2-NEXT: movabsq $-2492803253203993461, %rdx # imm = 0xDD67C8A60DD67C8B
182 ; X64-AVX2-NEXT: mulq %rdx
183 ; X64-AVX2-NEXT: shrq $5, %rdx
184 ; X64-AVX2-NEXT: leal (%rdx,%rdx,8), %eax
185 ; X64-AVX2-NEXT: leal (%rdx,%rax,4), %eax
186 ; X64-AVX2-NEXT: subl %eax, %ecx
187 ; X64-AVX2-NEXT: shlq $27, %rsi
188 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $rcx
189 ; X64-AVX2-NEXT: shldq %cl, %rsi, %rdi
190 ; X64-AVX2-NEXT: movq %rdi, %rax
191 ; X64-AVX2-NEXT: retq
218 ; X64-AVX2-LABEL: fshl_i32_const_shift:
219 ; X64-AVX2: # %bb.0:
220 ; X64-AVX2-NEXT: movl %edi, %eax
221 ; X64-AVX2-NEXT: shldl $9, %esi, %eax
222 ; X64-AVX2-NEXT: retq
237 ; X64-AVX2-LABEL: fshl_i32_const_overshift:
238 ; X64-AVX2: # %bb.0:
239 ; X64-AVX2-NEXT: movl %edi, %eax
240 ; X64-AVX2-NEXT: shldl $9, %esi, %eax
241 ; X64-AVX2-NEXT: retq
258 ; X64-AVX2-LABEL: fshl_i64_const_overshift:
259 ; X64-AVX2: # %bb.0:
260 ; X64-AVX2-NEXT: movq %rdi, %rax
261 ; X64-AVX2-NEXT: shldq $41, %rsi, %rax
262 ; X64-AVX2-NEXT: retq
291 ; X64-AVX2-LABEL: fshr_i32:
292 ; X64-AVX2: # %bb.0:
293 ; X64-AVX2-NEXT: movl %edx, %ecx
294 ; X64-AVX2-NEXT: movl %esi, %eax
295 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
296 ; X64-AVX2-NEXT: shrdl %cl, %edi, %eax
297 ; X64-AVX2-NEXT: retq
344 ; X64-AVX2-LABEL: fshr_i37:
345 ; X64-AVX2: # %bb.0:
346 ; X64-AVX2-NEXT: movq %rdx, %rcx
347 ; X64-AVX2-NEXT: movabsq $137438953471, %rax # imm = 0x1FFFFFFFFF
348 ; X64-AVX2-NEXT: andq %rdx, %rax
349 ; X64-AVX2-NEXT: movabsq $-2492803253203993461, %rdx # imm = 0xDD67C8A60DD67C8B
350 ; X64-AVX2-NEXT: mulq %rdx
351 ; X64-AVX2-NEXT: shrq $5, %rdx
352 ; X64-AVX2-NEXT: leal (%rdx,%rdx,8), %eax
353 ; X64-AVX2-NEXT: leal (%rdx,%rax,4), %eax
354 ; X64-AVX2-NEXT: subl %eax, %ecx
355 ; X64-AVX2-NEXT: addl $27, %ecx
356 ; X64-AVX2-NEXT: shlq $27, %rsi
357 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $rcx
358 ; X64-AVX2-NEXT: shrdq %cl, %rdi, %rsi
359 ; X64-AVX2-NEXT: movq %rsi, %rax
360 ; X64-AVX2-NEXT: retq
387 ; X64-AVX2-LABEL: fshl_i32_demandedbits:
388 ; X64-AVX2: # %bb.0:
389 ; X64-AVX2-NEXT: movl %edi, %eax
390 ; X64-AVX2-NEXT: shldl $9, %esi, %eax
391 ; X64-AVX2-NEXT: retq
406 ; X64-AVX2-LABEL: fshr_i32_demandedbits:
407 ; X64-AVX2: # %bb.0:
408 ; X64-AVX2-NEXT: movl %edi, %eax
409 ; X64-AVX2-NEXT: shldl $23, %esi, %eax
410 ; X64-AVX2-NEXT: retq
427 ; X64-AVX2-LABEL: fshl_i32_undef0:
428 ; X64-AVX2: # %bb.0:
429 ; X64-AVX2-NEXT: movl %esi, %ecx
430 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
431 ; X64-AVX2-NEXT: shldl %cl, %edi, %eax
432 ; X64-AVX2-NEXT: retq
447 ; X64-AVX2-LABEL: fshl_i32_undef0_msk:
448 ; X64-AVX2: # %bb.0:
449 ; X64-AVX2-NEXT: movl %esi, %ecx
450 ; X64-AVX2-NEXT: andl $7, %ecx
451 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
452 ; X64-AVX2-NEXT: shldl %cl, %edi, %eax
453 ; X64-AVX2-NEXT: retq
466 ; X64-AVX2-LABEL: fshl_i32_undef0_cst:
467 ; X64-AVX2: # %bb.0:
468 ; X64-AVX2-NEXT: movl %edi, %eax
469 ; X64-AVX2-NEXT: shrl $23, %eax
470 ; X64-AVX2-NEXT: retq
483 ; X64-AVX2-LABEL: fshl_i32_undef1:
484 ; X64-AVX2: # %bb.0:
485 ; X64-AVX2-NEXT: movl %esi, %ecx
486 ; X64-AVX2-NEXT: movl %edi, %eax
487 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
488 ; X64-AVX2-NEXT: shldl %cl, %eax, %eax
489 ; X64-AVX2-NEXT: retq
503 ; X64-AVX2-LABEL: fshl_i32_undef1_msk:
504 ; X64-AVX2: # %bb.0:
505 ; X64-AVX2-NEXT: movl %esi, %ecx
506 ; X64-AVX2-NEXT: movl %edi, %eax
507 ; X64-AVX2-NEXT: andb $7, %cl
508 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
509 ; X64-AVX2-NEXT: shll %cl, %eax
510 ; X64-AVX2-NEXT: retq
523 ; X64-AVX2-LABEL: fshl_i32_undef1_cst:
524 ; X64-AVX2: # %bb.0:
525 ; X64-AVX2-NEXT: movl %edi, %eax
526 ; X64-AVX2-NEXT: shll $9, %eax
527 ; X64-AVX2-NEXT: retq
540 ; X64-AVX2-LABEL: fshl_i32_undef2:
541 ; X64-AVX2: # %bb.0:
542 ; X64-AVX2-NEXT: movl %edi, %eax
543 ; X64-AVX2-NEXT: shldl %cl, %esi, %eax
544 ; X64-AVX2-NEXT: retq
557 ; X64-AVX2-LABEL: fshr_i32_undef0:
558 ; X64-AVX2: # %bb.0:
559 ; X64-AVX2-NEXT: movl %esi, %ecx
560 ; X64-AVX2-NEXT: movl %edi, %eax
561 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
562 ; X64-AVX2-NEXT: shrdl %cl, %eax, %eax
563 ; X64-AVX2-NEXT: retq
577 ; X64-AVX2-LABEL: fshr_i32_undef0_msk:
578 ; X64-AVX2: # %bb.0:
579 ; X64-AVX2-NEXT: movl %esi, %ecx
580 ; X64-AVX2-NEXT: movl %edi, %eax
581 ; X64-AVX2-NEXT: andb $7, %cl
582 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
583 ; X64-AVX2-NEXT: shrl %cl, %eax
584 ; X64-AVX2-NEXT: retq
597 ; X64-AVX2-LABEL: fshr_i32_undef0_cst:
598 ; X64-AVX2: # %bb.0:
599 ; X64-AVX2-NEXT: movl %edi, %eax
600 ; X64-AVX2-NEXT: shrl $9, %eax
601 ; X64-AVX2-NEXT: retq
614 ; X64-AVX2-LABEL: fshr_i32_undef1:
615 ; X64-AVX2: # %bb.0:
616 ; X64-AVX2-NEXT: movl %esi, %ecx
617 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
618 ; X64-AVX2-NEXT: shrdl %cl, %edi, %eax
619 ; X64-AVX2-NEXT: retq
634 ; X64-AVX2-LABEL: fshr_i32_undef1_msk:
635 ; X64-AVX2: # %bb.0:
636 ; X64-AVX2-NEXT: movl %esi, %ecx
637 ; X64-AVX2-NEXT: andl $7, %ecx
638 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
639 ; X64-AVX2-NEXT: shrdl %cl, %edi, %eax
640 ; X64-AVX2-NEXT: retq
653 ; X64-AVX2-LABEL: fshr_i32_undef1_cst:
654 ; X64-AVX2: # %bb.0:
655 ; X64-AVX2-NEXT: movl %edi, %eax
656 ; X64-AVX2-NEXT: shll $23, %eax
657 ; X64-AVX2-NEXT: retq
670 ; X64-AVX2-LABEL: fshr_i32_undef2:
671 ; X64-AVX2: # %bb.0:
672 ; X64-AVX2-NEXT: movl %esi, %eax
673 ; X64-AVX2-NEXT: shrdl %cl, %edi, %eax
674 ; X64-AVX2-NEXT: retq
690 ; X64-AVX2-LABEL: fshl_i32_zero0:
691 ; X64-AVX2: # %bb.0:
692 ; X64-AVX2-NEXT: movl %esi, %ecx
693 ; X64-AVX2-NEXT: xorl %eax, %eax
694 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
695 ; X64-AVX2-NEXT: shldl %cl, %edi, %eax
696 ; X64-AVX2-NEXT: retq
708 ; X64-AVX2-LABEL: fshl_i32_zero0_cst:
709 ; X64-AVX2: # %bb.0:
710 ; X64-AVX2-NEXT: movl %edi, %eax
711 ; X64-AVX2-NEXT: shrl $23, %eax
712 ; X64-AVX2-NEXT: retq
726 ; X64-AVX2-LABEL: fshl_i32_zero1:
727 ; X64-AVX2: # %bb.0:
728 ; X64-AVX2-NEXT: movl %esi, %ecx
729 ; X64-AVX2-NEXT: movl %edi, %eax
730 ; X64-AVX2-NEXT: xorl %edx, %edx
731 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
732 ; X64-AVX2-NEXT: shldl %cl, %edx, %eax
733 ; X64-AVX2-NEXT: retq
745 ; X64-AVX2-LABEL: fshl_i32_zero1_cst:
746 ; X64-AVX2: # %bb.0:
747 ; X64-AVX2-NEXT: movl %edi, %eax
748 ; X64-AVX2-NEXT: shll $9, %eax
749 ; X64-AVX2-NEXT: retq
763 ; X64-AVX2-LABEL: fshr_i32_zero0:
764 ; X64-AVX2: # %bb.0:
765 ; X64-AVX2-NEXT: movl %esi, %ecx
766 ; X64-AVX2-NEXT: movl %edi, %eax
767 ; X64-AVX2-NEXT: xorl %edx, %edx
768 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
769 ; X64-AVX2-NEXT: shrdl %cl, %edx, %eax
770 ; X64-AVX2-NEXT: retq
782 ; X64-AVX2-LABEL: fshr_i32_zero0_cst:
783 ; X64-AVX2: # %bb.0:
784 ; X64-AVX2-NEXT: movl %edi, %eax
785 ; X64-AVX2-NEXT: shrl $9, %eax
786 ; X64-AVX2-NEXT: retq
800 ; X64-AVX2-LABEL: fshr_i32_zero1:
801 ; X64-AVX2: # %bb.0:
802 ; X64-AVX2-NEXT: movl %esi, %ecx
803 ; X64-AVX2-NEXT: xorl %eax, %eax
804 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
805 ; X64-AVX2-NEXT: shrdl %cl, %edi, %eax
806 ; X64-AVX2-NEXT: retq
818 ; X64-AVX2-LABEL: fshr_i32_zero1_cst:
819 ; X64-AVX2: # %bb.0:
820 ; X64-AVX2-NEXT: movl %edi, %eax
821 ; X64-AVX2-NEXT: shll $23, %eax
822 ; X64-AVX2-NEXT: retq
835 ; X64-AVX2-LABEL: fshl_i32_zero2:
836 ; X64-AVX2: # %bb.0:
837 ; X64-AVX2-NEXT: movl %edi, %eax
838 ; X64-AVX2-NEXT: retq
849 ; X64-AVX2-LABEL: fshr_i32_zero2:
850 ; X64-AVX2: # %bb.0:
851 ; X64-AVX2-NEXT: movl %esi, %eax
852 ; X64-AVX2-NEXT: retq
867 ; X64-AVX2-LABEL: fshr_i32_const_shift:
868 ; X64-AVX2: # %bb.0:
869 ; X64-AVX2-NEXT: movl %edi, %eax
870 ; X64-AVX2-NEXT: shldl $23, %esi, %eax
871 ; X64-AVX2-NEXT: retq
886 ; X64-AVX2-LABEL: fshr_i32_const_overshift:
887 ; X64-AVX2: # %bb.0:
888 ; X64-AVX2-NEXT: movl %edi, %eax
889 ; X64-AVX2-NEXT: shldl $23, %esi, %eax
890 ; X64-AVX2-NEXT: retq
907 ; X64-AVX2-LABEL: fshr_i64_const_overshift:
908 ; X64-AVX2: # %bb.0:
909 ; X64-AVX2-NEXT: movq %rdi, %rax
910 ; X64-AVX2-NEXT: shldq $23, %rsi, %rax
911 ; X64-AVX2-NEXT: retq
933 ; X64-AVX2-LABEL: fshl_i32_shift_by_bitwidth:
934 ; X64-AVX2: # %bb.0:
935 ; X64-AVX2-NEXT: movl %edi, %eax
936 ; X64-AVX2-NEXT: retq
947 ; X64-AVX2-LABEL: fshr_i32_shift_by_bitwidth:
948 ; X64-AVX2: # %bb.0:
949 ; X64-AVX2-NEXT: movl %esi, %eax
950 ; X64-AVX2-NEXT: retq
969 ; X64-AVX2-LABEL: fshr_v4i32_shift_by_bitwidth:
970 ; X64-AVX2: # %bb.0:
971 ; X64-AVX2-NEXT: vmovaps %xmm1, %xmm0
972 ; X64-AVX2-NEXT: retq
1011 ; X64-AVX2-LABEL: PR45265:
1012 ; X64-AVX2: # %bb.0:
1013 ; X64-AVX2-NEXT: movslq %edi, %rax
1014 ; X64-AVX2-NEXT: leaq (%rax,%rax,2), %rcx
1015 ; X64-AVX2-NEXT: movsbq 10(%rsi,%rcx,4), %rdx
1016 ; X64-AVX2-NEXT: shlq $16, %rdx
1017 ; X64-AVX2-NEXT: movzwl 8(%rsi,%rcx,4), %edi
1018 ; X64-AVX2-NEXT: orq %rdx, %rdi
1019 ; X64-AVX2-NEXT: movq (%rsi,%rcx,4), %rcx
1020 ; X64-AVX2-NEXT: shrdq $40, %rdi, %rcx
1021 ; X64-AVX2-NEXT: cmpq %rax, %rcx
1022 ; X64-AVX2-NEXT: jne .LBB46_1
1023 ; X64-AVX2-NEXT: # %bb.2:
1024 ; X64-AVX2-NEXT: jmp _Z3foov # TAILCALL
1025 ; X64-AVX2-NEXT: .LBB46_1:
1026 ; X64-AVX2-NEXT: retq
1059 ; X64-AVX2-LABEL: or_shl_fshl:
1060 ; X64-AVX2: # %bb.0:
1061 ; X64-AVX2-NEXT: movl %edx, %ecx
1062 ; X64-AVX2-NEXT: movl %esi, %eax
1063 ; X64-AVX2-NEXT: shll %cl, %eax
1064 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1065 ; X64-AVX2-NEXT: shldl %cl, %esi, %edi
1066 ; X64-AVX2-NEXT: orl %edi, %eax
1067 ; X64-AVX2-NEXT: retq
1085 ; X64-AVX2-LABEL: or_shl_rotl:
1086 ; X64-AVX2: # %bb.0:
1087 ; X64-AVX2-NEXT: movl %edx, %ecx
1088 ; X64-AVX2-NEXT: movl %esi, %eax
1089 ; X64-AVX2-NEXT: shll %cl, %edi
1090 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1091 ; X64-AVX2-NEXT: roll %cl, %eax
1092 ; X64-AVX2-NEXT: orl %edi, %eax
1093 ; X64-AVX2-NEXT: retq
1114 ; X64-AVX2-LABEL: or_shl_fshl_commute:
1115 ; X64-AVX2: # %bb.0:
1116 ; X64-AVX2-NEXT: movl %edx, %ecx
1117 ; X64-AVX2-NEXT: movl %esi, %eax
1118 ; X64-AVX2-NEXT: shll %cl, %eax
1119 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1120 ; X64-AVX2-NEXT: shldl %cl, %esi, %edi
1121 ; X64-AVX2-NEXT: orl %edi, %eax
1122 ; X64-AVX2-NEXT: retq
1140 ; X64-AVX2-LABEL: or_shl_rotl_commute:
1141 ; X64-AVX2: # %bb.0:
1142 ; X64-AVX2-NEXT: movl %edx, %ecx
1143 ; X64-AVX2-NEXT: movl %esi, %eax
1144 ; X64-AVX2-NEXT: shll %cl, %edi
1145 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1146 ; X64-AVX2-NEXT: roll %cl, %eax
1147 ; X64-AVX2-NEXT: orl %edi, %eax
1148 ; X64-AVX2-NEXT: retq
1169 ; X64-AVX2-LABEL: or_lshr_fshr:
1170 ; X64-AVX2: # %bb.0:
1171 ; X64-AVX2-NEXT: movl %edx, %ecx
1172 ; X64-AVX2-NEXT: movl %esi, %eax
1173 ; X64-AVX2-NEXT: shrl %cl, %eax
1174 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1175 ; X64-AVX2-NEXT: shrdl %cl, %esi, %edi
1176 ; X64-AVX2-NEXT: orl %edi, %eax
1177 ; X64-AVX2-NEXT: retq
1195 ; X64-AVX2-LABEL: or_lshr_rotr:
1196 ; X64-AVX2: # %bb.0:
1197 ; X64-AVX2-NEXT: movl %edx, %ecx
1198 ; X64-AVX2-NEXT: movl %esi, %eax
1199 ; X64-AVX2-NEXT: shrl %cl, %edi
1200 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1201 ; X64-AVX2-NEXT: rorl %cl, %eax
1202 ; X64-AVX2-NEXT: orl %edi, %eax
1203 ; X64-AVX2-NEXT: retq
1224 ; X64-AVX2-LABEL: or_lshr_fshr_commute:
1225 ; X64-AVX2: # %bb.0:
1226 ; X64-AVX2-NEXT: movl %edx, %ecx
1227 ; X64-AVX2-NEXT: movl %esi, %eax
1228 ; X64-AVX2-NEXT: shrl %cl, %eax
1229 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1230 ; X64-AVX2-NEXT: shrdl %cl, %esi, %edi
1231 ; X64-AVX2-NEXT: orl %edi, %eax
1232 ; X64-AVX2-NEXT: retq
1250 ; X64-AVX2-LABEL: or_lshr_rotr_commute:
1251 ; X64-AVX2: # %bb.0:
1252 ; X64-AVX2-NEXT: movl %edx, %ecx
1253 ; X64-AVX2-NEXT: movl %esi, %eax
1254 ; X64-AVX2-NEXT: shrl %cl, %edi
1255 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1256 ; X64-AVX2-NEXT: rorl %cl, %eax
1257 ; X64-AVX2-NEXT: orl %edi, %eax
1258 ; X64-AVX2-NEXT: retq
1274 ; X64-AVX2-LABEL: or_shl_fshl_simplify:
1275 ; X64-AVX2: # %bb.0:
1276 ; X64-AVX2-NEXT: movl %edx, %ecx
1277 ; X64-AVX2-NEXT: movl %esi, %eax
1278 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1279 ; X64-AVX2-NEXT: shldl %cl, %edi, %eax
1280 ; X64-AVX2-NEXT: retq
1296 ; X64-AVX2-LABEL: or_lshr_fshr_simplify:
1297 ; X64-AVX2: # %bb.0:
1298 ; X64-AVX2-NEXT: movl %edx, %ecx
1299 ; X64-AVX2-NEXT: movl %esi, %eax
1300 ; X64-AVX2-NEXT: # kill: def $cl killed $cl killed $ecx
1301 ; X64-AVX2-NEXT: shrdl %cl, %edi, %eax
1302 ; X64-AVX2-NEXT: retq