Lines Matching refs:SSE2

2 ; RUN: llc < %s -mtriple=i686--   -mattr=sse2 | FileCheck %s --check-prefixes=CHECK,X86-SSE2
21 ; X86-SSE2-LABEL: fshl_i32:
22 ; X86-SSE2: # %bb.0:
23 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
24 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
25 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
26 ; X86-SSE2-NEXT: shldl %cl, %edx, %eax
27 ; X86-SSE2-NEXT: retl
41 ; X86-SSE2-LABEL: fshl_i64:
42 ; X86-SSE2: # %bb.0:
43 ; X86-SSE2-NEXT: pushl %edi
44 ; X86-SSE2-NEXT: pushl %esi
45 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %esi
46 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
47 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
48 ; X86-SSE2-NEXT: testb $32, %cl
49 ; X86-SSE2-NEXT: movl %edx, %edi
50 ; X86-SSE2-NEXT: cmovnel %esi, %edi
51 ; X86-SSE2-NEXT: cmovel {{[0-9]+}}(%esp), %edx
52 ; X86-SSE2-NEXT: cmovnel {{[0-9]+}}(%esp), %esi
53 ; X86-SSE2-NEXT: movl %edi, %eax
54 ; X86-SSE2-NEXT: shldl %cl, %esi, %eax
55 ; X86-SSE2-NEXT: # kill: def $cl killed $cl killed $ecx
56 ; X86-SSE2-NEXT: shldl %cl, %edi, %edx
57 ; X86-SSE2-NEXT: popl %esi
58 ; X86-SSE2-NEXT: popl %edi
59 ; X86-SSE2-NEXT: retl
73 ; X86-SSE2-LABEL: fshl_i128:
74 ; X86-SSE2: # %bb.0:
75 ; X86-SSE2-NEXT: pushl %ebp
76 ; X86-SSE2-NEXT: pushl %ebx
77 ; X86-SSE2-NEXT: pushl %edi
78 ; X86-SSE2-NEXT: pushl %esi
79 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ebx
80 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edi
81 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %esi
82 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
83 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
84 ; X86-SSE2-NEXT: testb $64, %cl
85 ; X86-SSE2-NEXT: movl %esi, %eax
86 ; X86-SSE2-NEXT: cmovnel %ebx, %eax
87 ; X86-SSE2-NEXT: movl %edx, %ebp
88 ; X86-SSE2-NEXT: cmovnel %edi, %ebp
89 ; X86-SSE2-NEXT: cmovnel {{[0-9]+}}(%esp), %edi
90 ; X86-SSE2-NEXT: cmovnel {{[0-9]+}}(%esp), %ebx
91 ; X86-SSE2-NEXT: cmovel {{[0-9]+}}(%esp), %edx
92 ; X86-SSE2-NEXT: cmovel {{[0-9]+}}(%esp), %esi
93 ; X86-SSE2-NEXT: testb $32, %cl
94 ; X86-SSE2-NEXT: cmovnel %esi, %edx
95 ; X86-SSE2-NEXT: cmovnel %ebp, %esi
96 ; X86-SSE2-NEXT: cmovnel %eax, %ebp
97 ; X86-SSE2-NEXT: cmovel %edi, %ebx
98 ; X86-SSE2-NEXT: cmovel %eax, %edi
99 ; X86-SSE2-NEXT: movl %edi, %eax
100 ; X86-SSE2-NEXT: shldl %cl, %ebx, %eax
101 ; X86-SSE2-NEXT: movl %ebp, %ebx
102 ; X86-SSE2-NEXT: shldl %cl, %edi, %ebx
103 ; X86-SSE2-NEXT: movl %esi, %edi
104 ; X86-SSE2-NEXT: shldl %cl, %ebp, %edi
105 ; X86-SSE2-NEXT: # kill: def $cl killed $cl killed $ecx
106 ; X86-SSE2-NEXT: shldl %cl, %esi, %edx
107 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
108 ; X86-SSE2-NEXT: movl %edx, 12(%ecx)
109 ; X86-SSE2-NEXT: movl %edi, 8(%ecx)
110 ; X86-SSE2-NEXT: movl %ebx, 4(%ecx)
111 ; X86-SSE2-NEXT: movl %eax, (%ecx)
112 ; X86-SSE2-NEXT: movl %ecx, %eax
113 ; X86-SSE2-NEXT: popl %esi
114 ; X86-SSE2-NEXT: popl %edi
115 ; X86-SSE2-NEXT: popl %ebx
116 ; X86-SSE2-NEXT: popl %ebp
117 ; X86-SSE2-NEXT: retl $4
138 ; X86-SSE2-LABEL: fshl_i37:
139 ; X86-SSE2: # %bb.0:
140 ; X86-SSE2-NEXT: pushl %ebx
141 ; X86-SSE2-NEXT: pushl %edi
142 ; X86-SSE2-NEXT: pushl %esi
143 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
144 ; X86-SSE2-NEXT: andl $31, %eax
145 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %esi
146 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ebx
147 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edi
148 ; X86-SSE2-NEXT: shldl $27, %ebx, %edi
149 ; X86-SSE2-NEXT: pushl $0
150 ; X86-SSE2-NEXT: pushl $37
151 ; X86-SSE2-NEXT: pushl %eax
152 ; X86-SSE2-NEXT: pushl {{[0-9]+}}(%esp)
153 ; X86-SSE2-NEXT: calll __umoddi3
154 ; X86-SSE2-NEXT: addl $16, %esp
155 ; X86-SSE2-NEXT: movl %eax, %ecx
156 ; X86-SSE2-NEXT: testb $32, %cl
157 ; X86-SSE2-NEXT: jne .LBB3_1
158 ; X86-SSE2-NEXT: # %bb.2:
159 ; X86-SSE2-NEXT: movl %edi, %ebx
160 ; X86-SSE2-NEXT: movl %esi, %edi
161 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %esi
162 ; X86-SSE2-NEXT: jmp .LBB3_3
163 ; X86-SSE2-NEXT: .LBB3_1:
164 ; X86-SSE2-NEXT: shll $27, %ebx
165 ; X86-SSE2-NEXT: .LBB3_3:
166 ; X86-SSE2-NEXT: movl %edi, %eax
167 ; X86-SSE2-NEXT: shldl %cl, %ebx, %eax
168 ; X86-SSE2-NEXT: # kill: def $cl killed $cl killed $ecx
169 ; X86-SSE2-NEXT: shldl %cl, %edi, %esi
170 ; X86-SSE2-NEXT: movl %esi, %edx
171 ; X86-SSE2-NEXT: popl %esi
172 ; X86-SSE2-NEXT: popl %edi
173 ; X86-SSE2-NEXT: popl %ebx
174 ; X86-SSE2-NEXT: retl
211 ; X86-SSE2-LABEL: fshl_i32_const_shift:
212 ; X86-SSE2: # %bb.0:
213 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
214 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
215 ; X86-SSE2-NEXT: shldl $9, %ecx, %eax
216 ; X86-SSE2-NEXT: retl
230 ; X86-SSE2-LABEL: fshl_i32_const_overshift:
231 ; X86-SSE2: # %bb.0:
232 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
233 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
234 ; X86-SSE2-NEXT: shldl $9, %ecx, %eax
235 ; X86-SSE2-NEXT: retl
249 ; X86-SSE2-LABEL: fshl_i64_const_overshift:
250 ; X86-SSE2: # %bb.0:
251 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
252 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
253 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
254 ; X86-SSE2-NEXT: shldl $9, %ecx, %edx
255 ; X86-SSE2-NEXT: shrdl $23, %ecx, %eax
256 ; X86-SSE2-NEXT: retl
283 ; X86-SSE2-LABEL: fshr_i32:
284 ; X86-SSE2: # %bb.0:
285 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
286 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
287 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
288 ; X86-SSE2-NEXT: shrdl %cl, %edx, %eax
289 ; X86-SSE2-NEXT: retl
305 ; X86-SSE2-LABEL: fshr_i37:
306 ; X86-SSE2: # %bb.0:
307 ; X86-SSE2-NEXT: pushl %ebx
308 ; X86-SSE2-NEXT: pushl %edi
309 ; X86-SSE2-NEXT: pushl %esi
310 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
311 ; X86-SSE2-NEXT: andl $31, %eax
312 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edi
313 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ebx
314 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %esi
315 ; X86-SSE2-NEXT: shldl $27, %ebx, %esi
316 ; X86-SSE2-NEXT: pushl $0
317 ; X86-SSE2-NEXT: pushl $37
318 ; X86-SSE2-NEXT: pushl %eax
319 ; X86-SSE2-NEXT: pushl {{[0-9]+}}(%esp)
320 ; X86-SSE2-NEXT: calll __umoddi3
321 ; X86-SSE2-NEXT: addl $16, %esp
322 ; X86-SSE2-NEXT: movl %eax, %ecx
323 ; X86-SSE2-NEXT: addl $27, %ecx
324 ; X86-SSE2-NEXT: testb $32, %cl
325 ; X86-SSE2-NEXT: je .LBB10_1
326 ; X86-SSE2-NEXT: # %bb.2:
327 ; X86-SSE2-NEXT: movl %edi, %edx
328 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edi
329 ; X86-SSE2-NEXT: jmp .LBB10_3
330 ; X86-SSE2-NEXT: .LBB10_1:
331 ; X86-SSE2-NEXT: shll $27, %ebx
332 ; X86-SSE2-NEXT: movl %esi, %edx
333 ; X86-SSE2-NEXT: movl %ebx, %esi
334 ; X86-SSE2-NEXT: .LBB10_3:
335 ; X86-SSE2-NEXT: shrdl %cl, %edx, %esi
336 ; X86-SSE2-NEXT: # kill: def $cl killed $cl killed $ecx
337 ; X86-SSE2-NEXT: shrdl %cl, %edi, %edx
338 ; X86-SSE2-NEXT: movl %esi, %eax
339 ; X86-SSE2-NEXT: popl %esi
340 ; X86-SSE2-NEXT: popl %edi
341 ; X86-SSE2-NEXT: popl %ebx
342 ; X86-SSE2-NEXT: retl
380 ; X86-SSE2-LABEL: fshl_i32_demandedbits:
381 ; X86-SSE2: # %bb.0:
382 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
383 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
384 ; X86-SSE2-NEXT: shldl $9, %ecx, %eax
385 ; X86-SSE2-NEXT: retl
399 ; X86-SSE2-LABEL: fshr_i32_demandedbits:
400 ; X86-SSE2: # %bb.0:
401 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
402 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
403 ; X86-SSE2-NEXT: shrdl $9, %ecx, %eax
404 ; X86-SSE2-NEXT: retl
420 ; X86-SSE2-LABEL: fshl_i32_undef0:
421 ; X86-SSE2: # %bb.0:
422 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
423 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
424 ; X86-SSE2-NEXT: shldl %cl, %eax, %eax
425 ; X86-SSE2-NEXT: retl
438 ; X86-SSE2-LABEL: fshl_i32_undef0_msk:
439 ; X86-SSE2: # %bb.0:
440 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
441 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
442 ; X86-SSE2-NEXT: andl $7, %ecx
443 ; X86-SSE2-NEXT: # kill: def $cl killed $cl killed $ecx
444 ; X86-SSE2-NEXT: shldl %cl, %eax, %eax
445 ; X86-SSE2-NEXT: retl
460 ; X86-SSE2-LABEL: fshl_i32_undef0_cst:
461 ; X86-SSE2: # %bb.0:
462 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
463 ; X86-SSE2-NEXT: shrl $23, %eax
464 ; X86-SSE2-NEXT: retl
476 ; X86-SSE2-LABEL: fshl_i32_undef1:
477 ; X86-SSE2: # %bb.0:
478 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
479 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
480 ; X86-SSE2-NEXT: shldl %cl, %eax, %eax
481 ; X86-SSE2-NEXT: retl
495 ; X86-SSE2-LABEL: fshl_i32_undef1_msk:
496 ; X86-SSE2: # %bb.0:
497 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
498 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
499 ; X86-SSE2-NEXT: andb $7, %cl
500 ; X86-SSE2-NEXT: shll %cl, %eax
501 ; X86-SSE2-NEXT: retl
517 ; X86-SSE2-LABEL: fshl_i32_undef1_cst:
518 ; X86-SSE2: # %bb.0:
519 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
520 ; X86-SSE2-NEXT: shll $9, %eax
521 ; X86-SSE2-NEXT: retl
533 ; X86-SSE2-LABEL: fshl_i32_undef2:
534 ; X86-SSE2: # %bb.0:
535 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
536 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
537 ; X86-SSE2-NEXT: shldl %cl, %ecx, %eax
538 ; X86-SSE2-NEXT: retl
550 ; X86-SSE2-LABEL: fshr_i32_undef0:
551 ; X86-SSE2: # %bb.0:
552 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
553 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
554 ; X86-SSE2-NEXT: shrdl %cl, %eax, %eax
555 ; X86-SSE2-NEXT: retl
569 ; X86-SSE2-LABEL: fshr_i32_undef0_msk:
570 ; X86-SSE2: # %bb.0:
571 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
572 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
573 ; X86-SSE2-NEXT: andb $7, %cl
574 ; X86-SSE2-NEXT: shrl %cl, %eax
575 ; X86-SSE2-NEXT: retl
591 ; X86-SSE2-LABEL: fshr_i32_undef0_cst:
592 ; X86-SSE2: # %bb.0:
593 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
594 ; X86-SSE2-NEXT: shrl $9, %eax
595 ; X86-SSE2-NEXT: retl
607 ; X86-SSE2-LABEL: fshr_i32_undef1:
608 ; X86-SSE2: # %bb.0:
609 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
610 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
611 ; X86-SSE2-NEXT: shrdl %cl, %eax, %eax
612 ; X86-SSE2-NEXT: retl
625 ; X86-SSE2-LABEL: fshr_i32_undef1_msk:
626 ; X86-SSE2: # %bb.0:
627 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
628 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
629 ; X86-SSE2-NEXT: andl $7, %ecx
630 ; X86-SSE2-NEXT: # kill: def $cl killed $cl killed $ecx
631 ; X86-SSE2-NEXT: shrdl %cl, %eax, %eax
632 ; X86-SSE2-NEXT: retl
647 ; X86-SSE2-LABEL: fshr_i32_undef1_cst:
648 ; X86-SSE2: # %bb.0:
649 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
650 ; X86-SSE2-NEXT: shll $23, %eax
651 ; X86-SSE2-NEXT: retl
663 ; X86-SSE2-LABEL: fshr_i32_undef2:
664 ; X86-SSE2: # %bb.0:
665 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
666 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
667 ; X86-SSE2-NEXT: shrdl %cl, %ecx, %eax
668 ; X86-SSE2-NEXT: retl
682 ; X86-SSE2-LABEL: fshl_i32_zero0:
683 ; X86-SSE2: # %bb.0:
684 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
685 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
686 ; X86-SSE2-NEXT: xorl %eax, %eax
687 ; X86-SSE2-NEXT: shldl %cl, %edx, %eax
688 ; X86-SSE2-NEXT: retl
702 ; X86-SSE2-LABEL: fshl_i32_zero0_cst:
703 ; X86-SSE2: # %bb.0:
704 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
705 ; X86-SSE2-NEXT: shrl $23, %eax
706 ; X86-SSE2-NEXT: retl
718 ; X86-SSE2-LABEL: fshl_i32_zero1:
719 ; X86-SSE2: # %bb.0:
720 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
721 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
722 ; X86-SSE2-NEXT: xorl %edx, %edx
723 ; X86-SSE2-NEXT: shldl %cl, %edx, %eax
724 ; X86-SSE2-NEXT: retl
739 ; X86-SSE2-LABEL: fshl_i32_zero1_cst:
740 ; X86-SSE2: # %bb.0:
741 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
742 ; X86-SSE2-NEXT: shll $9, %eax
743 ; X86-SSE2-NEXT: retl
755 ; X86-SSE2-LABEL: fshr_i32_zero0:
756 ; X86-SSE2: # %bb.0:
757 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
758 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
759 ; X86-SSE2-NEXT: xorl %edx, %edx
760 ; X86-SSE2-NEXT: shrdl %cl, %edx, %eax
761 ; X86-SSE2-NEXT: retl
776 ; X86-SSE2-LABEL: fshr_i32_zero0_cst:
777 ; X86-SSE2: # %bb.0:
778 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
779 ; X86-SSE2-NEXT: shrl $9, %eax
780 ; X86-SSE2-NEXT: retl
792 ; X86-SSE2-LABEL: fshr_i32_zero1:
793 ; X86-SSE2: # %bb.0:
794 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
795 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
796 ; X86-SSE2-NEXT: xorl %eax, %eax
797 ; X86-SSE2-NEXT: shrdl %cl, %edx, %eax
798 ; X86-SSE2-NEXT: retl
812 ; X86-SSE2-LABEL: fshr_i32_zero1_cst:
813 ; X86-SSE2: # %bb.0:
814 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
815 ; X86-SSE2-NEXT: shll $23, %eax
816 ; X86-SSE2-NEXT: retl
830 ; X86-SSE2-LABEL: fshl_i32_zero2:
831 ; X86-SSE2: # %bb.0:
832 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
833 ; X86-SSE2-NEXT: retl
844 ; X86-SSE2-LABEL: fshr_i32_zero2:
845 ; X86-SSE2: # %bb.0:
846 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
847 ; X86-SSE2-NEXT: retl
860 ; X86-SSE2-LABEL: fshr_i32_const_shift:
861 ; X86-SSE2: # %bb.0:
862 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
863 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
864 ; X86-SSE2-NEXT: shrdl $9, %ecx, %eax
865 ; X86-SSE2-NEXT: retl
879 ; X86-SSE2-LABEL: fshr_i32_const_overshift:
880 ; X86-SSE2: # %bb.0:
881 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
882 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
883 ; X86-SSE2-NEXT: shrdl $9, %ecx, %eax
884 ; X86-SSE2-NEXT: retl
898 ; X86-SSE2-LABEL: fshr_i64_const_overshift:
899 ; X86-SSE2: # %bb.0:
900 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
901 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
902 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
903 ; X86-SSE2-NEXT: shrdl $9, %ecx, %eax
904 ; X86-SSE2-NEXT: shldl $23, %ecx, %edx
905 ; X86-SSE2-NEXT: retl
928 ; X86-SSE2-LABEL: fshl_i32_shift_by_bitwidth:
929 ; X86-SSE2: # %bb.0:
930 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
931 ; X86-SSE2-NEXT: retl
942 ; X86-SSE2-LABEL: fshr_i32_shift_by_bitwidth:
943 ; X86-SSE2: # %bb.0:
944 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
945 ; X86-SSE2-NEXT: retl
964 ; X86-SSE2-LABEL: fshr_v4i32_shift_by_bitwidth:
965 ; X86-SSE2: # %bb.0:
966 ; X86-SSE2-NEXT: movaps %xmm1, %xmm0
967 ; X86-SSE2-NEXT: retl
979 ; X86-SSE2-LABEL: PR45265:
980 ; X86-SSE2: # %bb.0:
981 ; X86-SSE2-NEXT: pushl %edi
982 ; X86-SSE2-NEXT: pushl %esi
983 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
984 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %ecx
985 ; X86-SSE2-NEXT: leal (%eax,%eax,2), %edx
986 ; X86-SSE2-NEXT: movzwl 8(%ecx,%edx,4), %esi
987 ; X86-SSE2-NEXT: movl 4(%ecx,%edx,4), %edi
988 ; X86-SSE2-NEXT: shrdl $8, %esi, %edi
989 ; X86-SSE2-NEXT: xorl %eax, %edi
990 ; X86-SSE2-NEXT: sarl $31, %eax
991 ; X86-SSE2-NEXT: movzbl 10(%ecx,%edx,4), %ecx
992 ; X86-SSE2-NEXT: shll $16, %ecx
993 ; X86-SSE2-NEXT: orl %esi, %ecx
994 ; X86-SSE2-NEXT: shll $8, %ecx
995 ; X86-SSE2-NEXT: movl %ecx, %edx
996 ; X86-SSE2-NEXT: sarl $8, %edx
997 ; X86-SSE2-NEXT: sarl $31, %ecx
998 ; X86-SSE2-NEXT: shldl $24, %edx, %ecx
999 ; X86-SSE2-NEXT: xorl %eax, %ecx
1000 ; X86-SSE2-NEXT: orl %ecx, %edi
1001 ; X86-SSE2-NEXT: jne .LBB46_1
1002 ; X86-SSE2-NEXT: # %bb.2:
1003 ; X86-SSE2-NEXT: popl %esi
1004 ; X86-SSE2-NEXT: popl %edi
1005 ; X86-SSE2-NEXT: jmp _Z3foov # TAILCALL
1006 ; X86-SSE2-NEXT: .LBB46_1:
1007 ; X86-SSE2-NEXT: popl %esi
1008 ; X86-SSE2-NEXT: popl %edi
1009 ; X86-SSE2-NEXT: retl
1046 ; X86-SSE2-LABEL: or_shl_fshl:
1047 ; X86-SSE2: # %bb.0:
1048 ; X86-SSE2-NEXT: pushl %esi
1049 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1050 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1051 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1052 ; X86-SSE2-NEXT: movl %edx, %esi
1053 ; X86-SSE2-NEXT: shll %cl, %esi
1054 ; X86-SSE2-NEXT: shldl %cl, %edx, %eax
1055 ; X86-SSE2-NEXT: orl %esi, %eax
1056 ; X86-SSE2-NEXT: popl %esi
1057 ; X86-SSE2-NEXT: retl
1075 ; X86-SSE2-LABEL: or_shl_rotl:
1076 ; X86-SSE2: # %bb.0:
1077 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1078 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1079 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1080 ; X86-SSE2-NEXT: shll %cl, %edx
1081 ; X86-SSE2-NEXT: roll %cl, %eax
1082 ; X86-SSE2-NEXT: orl %edx, %eax
1083 ; X86-SSE2-NEXT: retl
1101 ; X86-SSE2-LABEL: or_shl_fshl_commute:
1102 ; X86-SSE2: # %bb.0:
1103 ; X86-SSE2-NEXT: pushl %esi
1104 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1105 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1106 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1107 ; X86-SSE2-NEXT: movl %edx, %esi
1108 ; X86-SSE2-NEXT: shll %cl, %esi
1109 ; X86-SSE2-NEXT: shldl %cl, %edx, %eax
1110 ; X86-SSE2-NEXT: orl %esi, %eax
1111 ; X86-SSE2-NEXT: popl %esi
1112 ; X86-SSE2-NEXT: retl
1130 ; X86-SSE2-LABEL: or_shl_rotl_commute:
1131 ; X86-SSE2: # %bb.0:
1132 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1133 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1134 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1135 ; X86-SSE2-NEXT: shll %cl, %edx
1136 ; X86-SSE2-NEXT: roll %cl, %eax
1137 ; X86-SSE2-NEXT: orl %edx, %eax
1138 ; X86-SSE2-NEXT: retl
1156 ; X86-SSE2-LABEL: or_lshr_fshr:
1157 ; X86-SSE2: # %bb.0:
1158 ; X86-SSE2-NEXT: pushl %esi
1159 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1160 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1161 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1162 ; X86-SSE2-NEXT: movl %edx, %esi
1163 ; X86-SSE2-NEXT: shrl %cl, %esi
1164 ; X86-SSE2-NEXT: shrdl %cl, %edx, %eax
1165 ; X86-SSE2-NEXT: orl %esi, %eax
1166 ; X86-SSE2-NEXT: popl %esi
1167 ; X86-SSE2-NEXT: retl
1185 ; X86-SSE2-LABEL: or_lshr_rotr:
1186 ; X86-SSE2: # %bb.0:
1187 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1188 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1189 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1190 ; X86-SSE2-NEXT: shrl %cl, %edx
1191 ; X86-SSE2-NEXT: rorl %cl, %eax
1192 ; X86-SSE2-NEXT: orl %edx, %eax
1193 ; X86-SSE2-NEXT: retl
1211 ; X86-SSE2-LABEL: or_lshr_fshr_commute:
1212 ; X86-SSE2: # %bb.0:
1213 ; X86-SSE2-NEXT: pushl %esi
1214 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1215 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1216 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1217 ; X86-SSE2-NEXT: movl %edx, %esi
1218 ; X86-SSE2-NEXT: shrl %cl, %esi
1219 ; X86-SSE2-NEXT: shrdl %cl, %edx, %eax
1220 ; X86-SSE2-NEXT: orl %esi, %eax
1221 ; X86-SSE2-NEXT: popl %esi
1222 ; X86-SSE2-NEXT: retl
1240 ; X86-SSE2-LABEL: or_lshr_rotr_commute:
1241 ; X86-SSE2: # %bb.0:
1242 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1243 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1244 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1245 ; X86-SSE2-NEXT: shrl %cl, %edx
1246 ; X86-SSE2-NEXT: rorl %cl, %eax
1247 ; X86-SSE2-NEXT: orl %edx, %eax
1248 ; X86-SSE2-NEXT: retl
1266 ; X86-SSE2-LABEL: or_shl_fshl_simplify:
1267 ; X86-SSE2: # %bb.0:
1268 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1269 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1270 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1271 ; X86-SSE2-NEXT: shldl %cl, %edx, %eax
1272 ; X86-SSE2-NEXT: retl
1288 ; X86-SSE2-LABEL: or_lshr_fshr_simplify:
1289 ; X86-SSE2: # %bb.0:
1290 ; X86-SSE2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1291 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %edx
1292 ; X86-SSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
1293 ; X86-SSE2-NEXT: shrdl %cl, %edx, %eax
1294 ; X86-SSE2-NEXT: retl