Lines Matching refs:X32
2 ; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefix=X32
13 ; X32-LABEL: reg32_shl_by_negated:
14 ; X32: # %bb.0:
15 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
16 ; X32-NEXT: xorl %ecx, %ecx
17 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
18 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
19 ; X32-NEXT: shll %cl, %eax
20 ; X32-NEXT: retl
35 ; X32-LABEL: load32_shl_by_negated:
36 ; X32: # %bb.0:
37 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
38 ; X32-NEXT: movl (%eax), %eax
39 ; X32-NEXT: xorl %ecx, %ecx
40 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
41 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
42 ; X32-NEXT: shll %cl, %eax
43 ; X32-NEXT: retl
59 ; X32-LABEL: store32_shl_by_negated:
60 ; X32: # %bb.0:
61 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
62 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
63 ; X32-NEXT: xorl %ecx, %ecx
64 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
65 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
66 ; X32-NEXT: shll %cl, %edx
67 ; X32-NEXT: movl %edx, (%eax)
68 ; X32-NEXT: retl
84 ; X32-LABEL: modify32_shl_by_negated:
85 ; X32: # %bb.0:
86 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
87 ; X32-NEXT: movb $32, %cl
88 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
89 ; X32-NEXT: shll %cl, (%eax)
90 ; X32-NEXT: retl
106 ; X32-LABEL: reg64_shl_by_negated:
107 ; X32: # %bb.0:
108 ; X32-NEXT: pushl %esi
109 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
110 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
111 ; X32-NEXT: movb $64, %cl
112 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
113 ; X32-NEXT: movl %esi, %eax
114 ; X32-NEXT: shll %cl, %eax
115 ; X32-NEXT: shldl %cl, %esi, %edx
116 ; X32-NEXT: testb $32, %cl
117 ; X32-NEXT: je .LBB4_2
118 ; X32-NEXT: # %bb.1:
119 ; X32-NEXT: movl %eax, %edx
120 ; X32-NEXT: xorl %eax, %eax
121 ; X32-NEXT: .LBB4_2:
122 ; X32-NEXT: popl %esi
123 ; X32-NEXT: retl
138 ; X32-LABEL: load64_shl_by_negated:
139 ; X32: # %bb.0:
140 ; X32-NEXT: pushl %esi
141 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
142 ; X32-NEXT: movl (%eax), %esi
143 ; X32-NEXT: movl 4(%eax), %edx
144 ; X32-NEXT: movb $64, %cl
145 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
146 ; X32-NEXT: movl %esi, %eax
147 ; X32-NEXT: shll %cl, %eax
148 ; X32-NEXT: shldl %cl, %esi, %edx
149 ; X32-NEXT: testb $32, %cl
150 ; X32-NEXT: je .LBB5_2
151 ; X32-NEXT: # %bb.1:
152 ; X32-NEXT: movl %eax, %edx
153 ; X32-NEXT: xorl %eax, %eax
154 ; X32-NEXT: .LBB5_2:
155 ; X32-NEXT: popl %esi
156 ; X32-NEXT: retl
172 ; X32-LABEL: store64_shl_by_negated:
173 ; X32: # %bb.0:
174 ; X32-NEXT: pushl %edi
175 ; X32-NEXT: pushl %esi
176 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
177 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
178 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
179 ; X32-NEXT: movb $64, %cl
180 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
181 ; X32-NEXT: movl %edi, %esi
182 ; X32-NEXT: shll %cl, %esi
183 ; X32-NEXT: shldl %cl, %edi, %edx
184 ; X32-NEXT: testb $32, %cl
185 ; X32-NEXT: je .LBB6_2
186 ; X32-NEXT: # %bb.1:
187 ; X32-NEXT: movl %esi, %edx
188 ; X32-NEXT: xorl %esi, %esi
189 ; X32-NEXT: .LBB6_2:
190 ; X32-NEXT: movl %edx, 4(%eax)
191 ; X32-NEXT: movl %esi, (%eax)
192 ; X32-NEXT: popl %esi
193 ; X32-NEXT: popl %edi
194 ; X32-NEXT: retl
210 ; X32-LABEL: modify64_shl_by_negated:
211 ; X32: # %bb.0:
212 ; X32-NEXT: pushl %edi
213 ; X32-NEXT: pushl %esi
214 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
215 ; X32-NEXT: movl (%eax), %edi
216 ; X32-NEXT: movl 4(%eax), %edx
217 ; X32-NEXT: movb $64, %cl
218 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
219 ; X32-NEXT: movl %edi, %esi
220 ; X32-NEXT: shll %cl, %esi
221 ; X32-NEXT: shldl %cl, %edi, %edx
222 ; X32-NEXT: testb $32, %cl
223 ; X32-NEXT: je .LBB7_2
224 ; X32-NEXT: # %bb.1:
225 ; X32-NEXT: movl %esi, %edx
226 ; X32-NEXT: xorl %esi, %esi
227 ; X32-NEXT: .LBB7_2:
228 ; X32-NEXT: movl %esi, (%eax)
229 ; X32-NEXT: movl %edx, 4(%eax)
230 ; X32-NEXT: popl %esi
231 ; X32-NEXT: popl %edi
232 ; X32-NEXT: retl
251 ; X32-LABEL: reg32_lshr_by_negated:
252 ; X32: # %bb.0:
253 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
254 ; X32-NEXT: xorl %ecx, %ecx
255 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
256 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
257 ; X32-NEXT: shrl %cl, %eax
258 ; X32-NEXT: retl
273 ; X32-LABEL: load32_lshr_by_negated:
274 ; X32: # %bb.0:
275 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
276 ; X32-NEXT: movl (%eax), %eax
277 ; X32-NEXT: xorl %ecx, %ecx
278 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
279 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
280 ; X32-NEXT: shrl %cl, %eax
281 ; X32-NEXT: retl
297 ; X32-LABEL: store32_lshr_by_negated:
298 ; X32: # %bb.0:
299 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
300 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
301 ; X32-NEXT: xorl %ecx, %ecx
302 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
303 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
304 ; X32-NEXT: shrl %cl, %edx
305 ; X32-NEXT: movl %edx, (%eax)
306 ; X32-NEXT: retl
322 ; X32-LABEL: modify32_lshr_by_negated:
323 ; X32: # %bb.0:
324 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
325 ; X32-NEXT: movb $32, %cl
326 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
327 ; X32-NEXT: shrl %cl, (%eax)
328 ; X32-NEXT: retl
344 ; X32-LABEL: reg64_lshr_by_negated:
345 ; X32: # %bb.0:
346 ; X32-NEXT: pushl %esi
347 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
348 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
349 ; X32-NEXT: movb $64, %cl
350 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
351 ; X32-NEXT: movl %esi, %edx
352 ; X32-NEXT: shrl %cl, %edx
353 ; X32-NEXT: shrdl %cl, %esi, %eax
354 ; X32-NEXT: testb $32, %cl
355 ; X32-NEXT: je .LBB12_2
356 ; X32-NEXT: # %bb.1:
357 ; X32-NEXT: movl %edx, %eax
358 ; X32-NEXT: xorl %edx, %edx
359 ; X32-NEXT: .LBB12_2:
360 ; X32-NEXT: popl %esi
361 ; X32-NEXT: retl
376 ; X32-LABEL: load64_lshr_by_negated:
377 ; X32: # %bb.0:
378 ; X32-NEXT: pushl %esi
379 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
380 ; X32-NEXT: movl (%ecx), %eax
381 ; X32-NEXT: movl 4(%ecx), %esi
382 ; X32-NEXT: movb $64, %cl
383 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
384 ; X32-NEXT: movl %esi, %edx
385 ; X32-NEXT: shrl %cl, %edx
386 ; X32-NEXT: shrdl %cl, %esi, %eax
387 ; X32-NEXT: testb $32, %cl
388 ; X32-NEXT: je .LBB13_2
389 ; X32-NEXT: # %bb.1:
390 ; X32-NEXT: movl %edx, %eax
391 ; X32-NEXT: xorl %edx, %edx
392 ; X32-NEXT: .LBB13_2:
393 ; X32-NEXT: popl %esi
394 ; X32-NEXT: retl
410 ; X32-LABEL: store64_lshr_by_negated:
411 ; X32: # %bb.0:
412 ; X32-NEXT: pushl %edi
413 ; X32-NEXT: pushl %esi
414 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
415 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
416 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
417 ; X32-NEXT: movb $64, %cl
418 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
419 ; X32-NEXT: movl %edi, %esi
420 ; X32-NEXT: shrl %cl, %esi
421 ; X32-NEXT: shrdl %cl, %edi, %edx
422 ; X32-NEXT: testb $32, %cl
423 ; X32-NEXT: je .LBB14_2
424 ; X32-NEXT: # %bb.1:
425 ; X32-NEXT: movl %esi, %edx
426 ; X32-NEXT: xorl %esi, %esi
427 ; X32-NEXT: .LBB14_2:
428 ; X32-NEXT: movl %esi, 4(%eax)
429 ; X32-NEXT: movl %edx, (%eax)
430 ; X32-NEXT: popl %esi
431 ; X32-NEXT: popl %edi
432 ; X32-NEXT: retl
448 ; X32-LABEL: modify64_lshr_by_negated:
449 ; X32: # %bb.0:
450 ; X32-NEXT: pushl %edi
451 ; X32-NEXT: pushl %esi
452 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
453 ; X32-NEXT: movl (%eax), %edx
454 ; X32-NEXT: movl 4(%eax), %edi
455 ; X32-NEXT: movb $64, %cl
456 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
457 ; X32-NEXT: movl %edi, %esi
458 ; X32-NEXT: shrl %cl, %esi
459 ; X32-NEXT: shrdl %cl, %edi, %edx
460 ; X32-NEXT: testb $32, %cl
461 ; X32-NEXT: je .LBB15_2
462 ; X32-NEXT: # %bb.1:
463 ; X32-NEXT: movl %esi, %edx
464 ; X32-NEXT: xorl %esi, %esi
465 ; X32-NEXT: .LBB15_2:
466 ; X32-NEXT: movl %edx, (%eax)
467 ; X32-NEXT: movl %esi, 4(%eax)
468 ; X32-NEXT: popl %esi
469 ; X32-NEXT: popl %edi
470 ; X32-NEXT: retl
489 ; X32-LABEL: reg32_ashr_by_negated:
490 ; X32: # %bb.0:
491 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
492 ; X32-NEXT: xorl %ecx, %ecx
493 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
494 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
495 ; X32-NEXT: sarl %cl, %eax
496 ; X32-NEXT: retl
511 ; X32-LABEL: load32_ashr_by_negated:
512 ; X32: # %bb.0:
513 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
514 ; X32-NEXT: movl (%eax), %eax
515 ; X32-NEXT: xorl %ecx, %ecx
516 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
517 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
518 ; X32-NEXT: sarl %cl, %eax
519 ; X32-NEXT: retl
535 ; X32-LABEL: store32_ashr_by_negated:
536 ; X32: # %bb.0:
537 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
538 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
539 ; X32-NEXT: xorl %ecx, %ecx
540 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
541 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
542 ; X32-NEXT: sarl %cl, %edx
543 ; X32-NEXT: movl %edx, (%eax)
544 ; X32-NEXT: retl
560 ; X32-LABEL: modify32_ashr_by_negated:
561 ; X32: # %bb.0:
562 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
563 ; X32-NEXT: movb $32, %cl
564 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
565 ; X32-NEXT: sarl %cl, (%eax)
566 ; X32-NEXT: retl
582 ; X32-LABEL: reg64_ashr_by_negated:
583 ; X32: # %bb.0:
584 ; X32-NEXT: pushl %esi
585 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
586 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
587 ; X32-NEXT: movb $64, %cl
588 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
589 ; X32-NEXT: movl %esi, %edx
590 ; X32-NEXT: sarl %cl, %edx
591 ; X32-NEXT: shrdl %cl, %esi, %eax
592 ; X32-NEXT: testb $32, %cl
593 ; X32-NEXT: je .LBB20_2
594 ; X32-NEXT: # %bb.1:
595 ; X32-NEXT: sarl $31, %esi
596 ; X32-NEXT: movl %edx, %eax
597 ; X32-NEXT: movl %esi, %edx
598 ; X32-NEXT: .LBB20_2:
599 ; X32-NEXT: popl %esi
600 ; X32-NEXT: retl
615 ; X32-LABEL: load64_ashr_by_negated:
616 ; X32: # %bb.0:
617 ; X32-NEXT: pushl %esi
618 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
619 ; X32-NEXT: movl (%ecx), %eax
620 ; X32-NEXT: movl 4(%ecx), %esi
621 ; X32-NEXT: movb $64, %cl
622 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
623 ; X32-NEXT: movl %esi, %edx
624 ; X32-NEXT: sarl %cl, %edx
625 ; X32-NEXT: shrdl %cl, %esi, %eax
626 ; X32-NEXT: testb $32, %cl
627 ; X32-NEXT: je .LBB21_2
628 ; X32-NEXT: # %bb.1:
629 ; X32-NEXT: sarl $31, %esi
630 ; X32-NEXT: movl %edx, %eax
631 ; X32-NEXT: movl %esi, %edx
632 ; X32-NEXT: .LBB21_2:
633 ; X32-NEXT: popl %esi
634 ; X32-NEXT: retl
650 ; X32-LABEL: store64_ashr_by_negated:
651 ; X32: # %bb.0:
652 ; X32-NEXT: pushl %edi
653 ; X32-NEXT: pushl %esi
654 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
655 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
656 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
657 ; X32-NEXT: movb $64, %cl
658 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
659 ; X32-NEXT: movl %edi, %esi
660 ; X32-NEXT: sarl %cl, %esi
661 ; X32-NEXT: shrdl %cl, %edi, %edx
662 ; X32-NEXT: testb $32, %cl
663 ; X32-NEXT: je .LBB22_2
664 ; X32-NEXT: # %bb.1:
665 ; X32-NEXT: sarl $31, %edi
666 ; X32-NEXT: movl %esi, %edx
667 ; X32-NEXT: movl %edi, %esi
668 ; X32-NEXT: .LBB22_2:
669 ; X32-NEXT: movl %esi, 4(%eax)
670 ; X32-NEXT: movl %edx, (%eax)
671 ; X32-NEXT: popl %esi
672 ; X32-NEXT: popl %edi
673 ; X32-NEXT: retl
689 ; X32-LABEL: modify64_ashr_by_negated:
690 ; X32: # %bb.0:
691 ; X32-NEXT: pushl %edi
692 ; X32-NEXT: pushl %esi
693 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
694 ; X32-NEXT: movl (%eax), %edx
695 ; X32-NEXT: movl 4(%eax), %edi
696 ; X32-NEXT: movb $64, %cl
697 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
698 ; X32-NEXT: movl %edi, %esi
699 ; X32-NEXT: sarl %cl, %esi
700 ; X32-NEXT: shrdl %cl, %edi, %edx
701 ; X32-NEXT: testb $32, %cl
702 ; X32-NEXT: je .LBB23_2
703 ; X32-NEXT: # %bb.1:
704 ; X32-NEXT: sarl $31, %edi
705 ; X32-NEXT: movl %esi, %edx
706 ; X32-NEXT: movl %edi, %esi
707 ; X32-NEXT: .LBB23_2:
708 ; X32-NEXT: movl %edx, (%eax)
709 ; X32-NEXT: movl %esi, 4(%eax)
710 ; X32-NEXT: popl %esi
711 ; X32-NEXT: popl %edi
712 ; X32-NEXT: retl
735 ; X32-LABEL: reg32_lshr_by_sub_from_negated:
736 ; X32: # %bb.0:
737 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
738 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
739 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
740 ; X32-NEXT: negb %cl
741 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
742 ; X32-NEXT: shrl %cl, %eax
743 ; X32-NEXT: retl
761 ; X32-LABEL: reg64_lshr_by_sub_from_negated:
762 ; X32: # %bb.0:
763 ; X32-NEXT: pushl %esi
764 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
765 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
766 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
767 ; X32-NEXT: addl {{[0-9]+}}(%esp), %edx
768 ; X32-NEXT: movb $64, %cl
769 ; X32-NEXT: subb %dl, %cl
770 ; X32-NEXT: movl %esi, %edx
771 ; X32-NEXT: shrl %cl, %edx
772 ; X32-NEXT: shrdl %cl, %esi, %eax
773 ; X32-NEXT: testb $32, %cl
774 ; X32-NEXT: je .LBB25_2
775 ; X32-NEXT: # %bb.1:
776 ; X32-NEXT: movl %edx, %eax
777 ; X32-NEXT: xorl %edx, %edx
778 ; X32-NEXT: .LBB25_2:
779 ; X32-NEXT: popl %esi
780 ; X32-NEXT: retl
800 ; X32-LABEL: reg32_lshr_by_sub_of_negated:
801 ; X32: # %bb.0:
802 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
803 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
804 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
805 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
806 ; X32-NEXT: shrl %cl, %eax
807 ; X32-NEXT: retl
824 ; X32-LABEL: reg64_lshr_by_sub_of_negated:
825 ; X32: # %bb.0:
826 ; X32-NEXT: pushl %esi
827 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
828 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
829 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
830 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
831 ; X32-NEXT: addb $-64, %cl
832 ; X32-NEXT: movl %esi, %edx
833 ; X32-NEXT: shrl %cl, %edx
834 ; X32-NEXT: shrdl %cl, %esi, %eax
835 ; X32-NEXT: testb $32, %cl
836 ; X32-NEXT: je .LBB27_2
837 ; X32-NEXT: # %bb.1:
838 ; X32-NEXT: movl %edx, %eax
839 ; X32-NEXT: xorl %edx, %edx
840 ; X32-NEXT: .LBB27_2:
841 ; X32-NEXT: popl %esi
842 ; X32-NEXT: retl
862 ; X32-LABEL: reg32_lshr_by_add_to_negated:
863 ; X32: # %bb.0:
864 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
865 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
866 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
867 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
868 ; X32-NEXT: shrl %cl, %eax
869 ; X32-NEXT: retl
885 ; X32-LABEL: reg64_lshr_by_add_to_negated:
886 ; X32: # %bb.0:
887 ; X32-NEXT: pushl %esi
888 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
889 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
890 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
891 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
892 ; X32-NEXT: addb $64, %cl
893 ; X32-NEXT: movl %esi, %edx
894 ; X32-NEXT: shrl %cl, %edx
895 ; X32-NEXT: shrdl %cl, %esi, %eax
896 ; X32-NEXT: testb $32, %cl
897 ; X32-NEXT: je .LBB29_2
898 ; X32-NEXT: # %bb.1:
899 ; X32-NEXT: movl %edx, %eax
900 ; X32-NEXT: xorl %edx, %edx
901 ; X32-NEXT: .LBB29_2:
902 ; X32-NEXT: popl %esi
903 ; X32-NEXT: retl
923 ; X32-LABEL: reg32_lshr_by_sub_of_negated_amts:
924 ; X32: # %bb.0:
925 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
926 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
927 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
928 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
929 ; X32-NEXT: shrl %cl, %eax
930 ; X32-NEXT: retl
947 ; X32-LABEL: reg64_lshr_by_sub_of_negated_amts:
948 ; X32: # %bb.0:
949 ; X32-NEXT: pushl %esi
950 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
951 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
952 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
953 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
954 ; X32-NEXT: movl %esi, %edx
955 ; X32-NEXT: shrl %cl, %edx
956 ; X32-NEXT: shrdl %cl, %esi, %eax
957 ; X32-NEXT: testb $32, %cl
958 ; X32-NEXT: je .LBB31_2
959 ; X32-NEXT: # %bb.1:
960 ; X32-NEXT: movl %edx, %eax
961 ; X32-NEXT: xorl %edx, %edx
962 ; X32-NEXT: .LBB31_2:
963 ; X32-NEXT: popl %esi
964 ; X32-NEXT: retl
985 ; X32-LABEL: reg32_lshr_by_add_of_negated_amts:
986 ; X32: # %bb.0:
987 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
988 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
989 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
990 ; X32-NEXT: negb %cl
991 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
992 ; X32-NEXT: shrl %cl, %eax
993 ; X32-NEXT: retl
1012 ; X32-LABEL: reg64_lshr_by_add_of_negated_amts:
1013 ; X32: # %bb.0:
1014 ; X32-NEXT: pushl %esi
1015 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1016 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1017 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
1018 ; X32-NEXT: addl {{[0-9]+}}(%esp), %edx
1019 ; X32-NEXT: movb $-128, %cl
1020 ; X32-NEXT: subb %dl, %cl
1021 ; X32-NEXT: movl %esi, %edx
1022 ; X32-NEXT: shrl %cl, %edx
1023 ; X32-NEXT: shrdl %cl, %esi, %eax
1024 ; X32-NEXT: testb $32, %cl
1025 ; X32-NEXT: je .LBB33_2
1026 ; X32-NEXT: # %bb.1:
1027 ; X32-NEXT: movl %edx, %eax
1028 ; X32-NEXT: xorl %edx, %edx
1029 ; X32-NEXT: .LBB33_2:
1030 ; X32-NEXT: popl %esi
1031 ; X32-NEXT: retl
1052 ; X32-LABEL: reg32_lshr_by_negated_unfolded:
1053 ; X32: # %bb.0:
1054 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1055 ; X32-NEXT: xorl %ecx, %ecx
1056 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
1057 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
1058 ; X32-NEXT: shrl %cl, %eax
1059 ; X32-NEXT: retl
1075 ; X32-LABEL: reg64_lshr_by_negated_unfolded:
1076 ; X32: # %bb.0:
1077 ; X32-NEXT: pushl %esi
1078 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1079 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1080 ; X32-NEXT: movb $64, %cl
1081 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
1082 ; X32-NEXT: movl %esi, %edx
1083 ; X32-NEXT: shrl %cl, %edx
1084 ; X32-NEXT: shrdl %cl, %esi, %eax
1085 ; X32-NEXT: testb $32, %cl
1086 ; X32-NEXT: je .LBB35_2
1087 ; X32-NEXT: # %bb.1:
1088 ; X32-NEXT: movl %edx, %eax
1089 ; X32-NEXT: xorl %edx, %edx
1090 ; X32-NEXT: .LBB35_2:
1091 ; X32-NEXT: popl %esi
1092 ; X32-NEXT: retl
1109 ; X32-LABEL: reg32_lshr_by_negated_unfolded_sub_b:
1110 ; X32: # %bb.0:
1111 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1112 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1113 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
1114 ; X32-NEXT: negb %cl
1115 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
1116 ; X32-NEXT: shrl %cl, %eax
1117 ; X32-NEXT: retl
1136 ; X32-LABEL: reg64_lshr_by_negated_unfolded_sub_b:
1137 ; X32: # %bb.0:
1138 ; X32-NEXT: pushl %esi
1139 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1140 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1141 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
1142 ; X32-NEXT: addl {{[0-9]+}}(%esp), %edx
1143 ; X32-NEXT: movb $64, %cl
1144 ; X32-NEXT: subb %dl, %cl
1145 ; X32-NEXT: movl %esi, %edx
1146 ; X32-NEXT: shrl %cl, %edx
1147 ; X32-NEXT: shrdl %cl, %esi, %eax
1148 ; X32-NEXT: testb $32, %cl
1149 ; X32-NEXT: je .LBB37_2
1150 ; X32-NEXT: # %bb.1:
1151 ; X32-NEXT: movl %edx, %eax
1152 ; X32-NEXT: xorl %edx, %edx
1153 ; X32-NEXT: .LBB37_2:
1154 ; X32-NEXT: popl %esi
1155 ; X32-NEXT: retl
1173 ; X32-LABEL: reg32_lshr_by_b_sub_negated_unfolded:
1174 ; X32: # %bb.0:
1175 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1176 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1177 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
1178 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
1179 ; X32-NEXT: shrl %cl, %eax
1180 ; X32-NEXT: retl
1198 ; X32-LABEL: reg64_lshr_by_b_sub_negated_unfolded:
1199 ; X32: # %bb.0:
1200 ; X32-NEXT: pushl %esi
1201 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1202 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1203 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1204 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
1205 ; X32-NEXT: addb $-64, %cl
1206 ; X32-NEXT: movl %esi, %edx
1207 ; X32-NEXT: shrl %cl, %edx
1208 ; X32-NEXT: shrdl %cl, %esi, %eax
1209 ; X32-NEXT: testb $32, %cl
1210 ; X32-NEXT: je .LBB39_2
1211 ; X32-NEXT: # %bb.1:
1212 ; X32-NEXT: movl %edx, %eax
1213 ; X32-NEXT: xorl %edx, %edx
1214 ; X32-NEXT: .LBB39_2:
1215 ; X32-NEXT: popl %esi
1216 ; X32-NEXT: retl
1233 ; X32-LABEL: reg32_lshr_by_negated_unfolded_add_b:
1234 ; X32: # %bb.0:
1235 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1236 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1237 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
1238 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
1239 ; X32-NEXT: shrl %cl, %eax
1240 ; X32-NEXT: retl
1257 ; X32-LABEL: reg64_lshr_by_negated_unfolded_add_b:
1258 ; X32: # %bb.0:
1259 ; X32-NEXT: pushl %esi
1260 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1261 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1262 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1263 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
1264 ; X32-NEXT: addb $64, %cl
1265 ; X32-NEXT: movl %esi, %edx
1266 ; X32-NEXT: shrl %cl, %edx
1267 ; X32-NEXT: shrdl %cl, %esi, %eax
1268 ; X32-NEXT: testb $32, %cl
1269 ; X32-NEXT: je .LBB41_2
1270 ; X32-NEXT: # %bb.1:
1271 ; X32-NEXT: movl %edx, %eax
1272 ; X32-NEXT: xorl %edx, %edx
1273 ; X32-NEXT: .LBB41_2:
1274 ; X32-NEXT: popl %esi
1275 ; X32-NEXT: retl
1296 ; X32-LABEL: reg32_lshr_by_masked_negated_unfolded:
1297 ; X32: # %bb.0:
1298 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1299 ; X32-NEXT: xorl %ecx, %ecx
1300 ; X32-NEXT: subb {{[0-9]+}}(%esp), %cl
1301 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
1302 ; X32-NEXT: shrl %cl, %eax
1303 ; X32-NEXT: retl
1319 ; X32-LABEL: reg64_lshr_by_masked_negated_unfolded:
1320 ; X32: # %bb.0:
1321 ; X32-NEXT: pushl %esi
1322 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1323 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1324 ; X32-NEXT: xorl %ecx, %ecx
1325 ; X32-NEXT: movzbl {{[0-9]+}}(%esp), %edx
1326 ; X32-NEXT: subb %dl, %cl
1327 ; X32-NEXT: movl %esi, %edx
1328 ; X32-NEXT: shrl %cl, %edx
1329 ; X32-NEXT: shrdl %cl, %esi, %eax
1330 ; X32-NEXT: testb $32, %cl
1331 ; X32-NEXT: je .LBB43_2
1332 ; X32-NEXT: # %bb.1:
1333 ; X32-NEXT: movl %edx, %eax
1334 ; X32-NEXT: xorl %edx, %edx
1335 ; X32-NEXT: .LBB43_2:
1336 ; X32-NEXT: popl %esi
1337 ; X32-NEXT: retl
1354 ; X32-LABEL: reg32_lshr_by_masked_negated_unfolded_sub_b:
1355 ; X32: # %bb.0:
1356 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1357 ; X32-NEXT: xorl %ecx, %ecx
1358 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
1359 ; X32-NEXT: andl $31, %ecx
1360 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
1361 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
1362 ; X32-NEXT: shrl %cl, %eax
1363 ; X32-NEXT: retl
1382 ; X32-LABEL: reg64_lshr_by_masked_negated_unfolded_sub_b:
1383 ; X32: # %bb.0:
1384 ; X32-NEXT: pushl %esi
1385 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1386 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1387 ; X32-NEXT: xorl %ecx, %ecx
1388 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
1389 ; X32-NEXT: andl $63, %ecx
1390 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
1391 ; X32-NEXT: movl %esi, %edx
1392 ; X32-NEXT: shrl %cl, %edx
1393 ; X32-NEXT: shrdl %cl, %esi, %eax
1394 ; X32-NEXT: testb $32, %cl
1395 ; X32-NEXT: je .LBB45_2
1396 ; X32-NEXT: # %bb.1:
1397 ; X32-NEXT: movl %edx, %eax
1398 ; X32-NEXT: xorl %edx, %edx
1399 ; X32-NEXT: .LBB45_2:
1400 ; X32-NEXT: popl %esi
1401 ; X32-NEXT: retl
1421 ; X32-LABEL: reg32_lshr_by_masked_b_sub_negated_unfolded:
1422 ; X32: # %bb.0:
1423 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1424 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1425 ; X32-NEXT: xorl %edx, %edx
1426 ; X32-NEXT: subl {{[0-9]+}}(%esp), %edx
1427 ; X32-NEXT: andl $31, %edx
1428 ; X32-NEXT: subl %edx, %ecx
1429 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
1430 ; X32-NEXT: shrl %cl, %eax
1431 ; X32-NEXT: retl
1450 ; X32-LABEL: reg64_lshr_by_masked_b_sub_negated_unfolded:
1451 ; X32: # %bb.0:
1452 ; X32-NEXT: pushl %esi
1453 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1454 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1455 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1456 ; X32-NEXT: xorl %edx, %edx
1457 ; X32-NEXT: subl {{[0-9]+}}(%esp), %edx
1458 ; X32-NEXT: andl $63, %edx
1459 ; X32-NEXT: subl %edx, %ecx
1460 ; X32-NEXT: movl %esi, %edx
1461 ; X32-NEXT: shrl %cl, %edx
1462 ; X32-NEXT: shrdl %cl, %esi, %eax
1463 ; X32-NEXT: testb $32, %cl
1464 ; X32-NEXT: je .LBB47_2
1465 ; X32-NEXT: # %bb.1:
1466 ; X32-NEXT: movl %edx, %eax
1467 ; X32-NEXT: xorl %edx, %edx
1468 ; X32-NEXT: .LBB47_2:
1469 ; X32-NEXT: popl %esi
1470 ; X32-NEXT: retl
1490 ; X32-LABEL: reg32_lshr_by_masked_negated_unfolded_add_b:
1491 ; X32: # %bb.0:
1492 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1493 ; X32-NEXT: xorl %ecx, %ecx
1494 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
1495 ; X32-NEXT: andl $31, %ecx
1496 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
1497 ; X32-NEXT: # kill: def $cl killed $cl killed $ecx
1498 ; X32-NEXT: shrl %cl, %eax
1499 ; X32-NEXT: retl
1519 ; X32-LABEL: reg64_lshr_by_masked_negated_unfolded_add_b:
1520 ; X32: # %bb.0:
1521 ; X32-NEXT: pushl %esi
1522 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1523 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1524 ; X32-NEXT: xorl %ecx, %ecx
1525 ; X32-NEXT: subl {{[0-9]+}}(%esp), %ecx
1526 ; X32-NEXT: andl $63, %ecx
1527 ; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
1528 ; X32-NEXT: movl %esi, %edx
1529 ; X32-NEXT: shrl %cl, %edx
1530 ; X32-NEXT: shrdl %cl, %esi, %eax
1531 ; X32-NEXT: testb $32, %cl
1532 ; X32-NEXT: je .LBB49_2
1533 ; X32-NEXT: # %bb.1:
1534 ; X32-NEXT: movl %edx, %eax
1535 ; X32-NEXT: xorl %edx, %edx
1536 ; X32-NEXT: .LBB49_2:
1537 ; X32-NEXT: popl %esi
1538 ; X32-NEXT: retl
1557 ; X32-LABEL: sh_trunc_sh:
1558 ; X32: # %bb.0:
1559 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
1560 ; X32-NEXT: shrl $4, %eax
1561 ; X32-NEXT: andl $15, %eax
1562 ; X32-NEXT: # kill: def $ax killed $ax killed $eax
1563 ; X32-NEXT: retl