@@ -11,10 +11,10 @@ define i8 @abd_ext_i8(i8 %a, i8 %b) nounwind {
11
11
; X86: # %bb.0:
12
12
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %eax
13
13
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %ecx
14
- ; X86-NEXT: subl %eax , %ecx
15
- ; X86-NEXT: movl %ecx , %eax
16
- ; X86-NEXT: negl %eax
17
- ; X86-NEXT: cmovsl %ecx , %eax
14
+ ; X86-NEXT: movl %ecx , %edx
15
+ ; X86-NEXT: subl %eax , %edx
16
+ ; X86-NEXT: subl %ecx, %eax
17
+ ; X86-NEXT: cmovll %edx , %eax
18
18
; X86-NEXT: negb %al
19
19
; X86-NEXT: # kill: def $al killed $al killed $eax
20
20
; X86-NEXT: retl
@@ -23,10 +23,10 @@ define i8 @abd_ext_i8(i8 %a, i8 %b) nounwind {
23
23
; X64: # %bb.0:
24
24
; X64-NEXT: movsbl %sil, %eax
25
25
; X64-NEXT: movsbl %dil, %ecx
26
- ; X64-NEXT: subl %eax , %ecx
27
- ; X64-NEXT: movl %ecx , %eax
28
- ; X64-NEXT: negl %eax
29
- ; X64-NEXT: cmovsl %ecx , %eax
26
+ ; X64-NEXT: movl %ecx , %edx
27
+ ; X64-NEXT: subl %eax , %edx
28
+ ; X64-NEXT: subl %ecx, %eax
29
+ ; X64-NEXT: cmovll %edx , %eax
30
30
; X64-NEXT: negb %al
31
31
; X64-NEXT: # kill: def $al killed $al killed $eax
32
32
; X64-NEXT: retq
@@ -44,22 +44,21 @@ define i8 @abd_ext_i8_i16(i8 %a, i16 %b) nounwind {
44
44
; X86: # %bb.0:
45
45
; X86-NEXT: movswl {{[0-9]+}}(%esp), %eax
46
46
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %ecx
47
- ; X86-NEXT: subl %eax , %ecx
48
- ; X86-NEXT: movl %ecx , %eax
49
- ; X86-NEXT: negl %eax
50
- ; X86-NEXT: cmovsl %ecx , %eax
47
+ ; X86-NEXT: movl %ecx , %edx
48
+ ; X86-NEXT: subl %eax , %edx
49
+ ; X86-NEXT: subl %ecx, %eax
50
+ ; X86-NEXT: cmovll %edx , %eax
51
51
; X86-NEXT: negb %al
52
52
; X86-NEXT: # kill: def $al killed $al killed $eax
53
53
; X86-NEXT: retl
54
54
;
55
55
; X64-LABEL: abd_ext_i8_i16:
56
56
; X64: # %bb.0:
57
- ; X64-NEXT: movswl %si, %eax
58
57
; X64-NEXT: movsbl %dil, %ecx
59
- ; X64-NEXT: subl %eax , %ecx
60
- ; X64-NEXT: movl %ecx , %eax
61
- ; X64-NEXT: negl %eax
62
- ; X64-NEXT: cmovsl %ecx , %eax
58
+ ; X64-NEXT: subl %esi , %edi
59
+ ; X64-NEXT: movswl %si , %eax
60
+ ; X64-NEXT: subl %ecx, %eax
61
+ ; X64-NEXT: cmovll %edi , %eax
63
62
; X64-NEXT: negb %al
64
63
; X64-NEXT: # kill: def $al killed $al killed $eax
65
64
; X64-NEXT: retq
@@ -77,10 +76,10 @@ define i8 @abd_ext_i8_undef(i8 %a, i8 %b) nounwind {
77
76
; X86: # %bb.0:
78
77
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %eax
79
78
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %ecx
80
- ; X86-NEXT: subl %eax , %ecx
81
- ; X86-NEXT: movl %ecx , %eax
82
- ; X86-NEXT: negl %eax
83
- ; X86-NEXT: cmovsl %ecx , %eax
79
+ ; X86-NEXT: movl %ecx , %edx
80
+ ; X86-NEXT: subl %eax , %edx
81
+ ; X86-NEXT: subl %ecx, %eax
82
+ ; X86-NEXT: cmovll %edx , %eax
84
83
; X86-NEXT: negb %al
85
84
; X86-NEXT: # kill: def $al killed $al killed $eax
86
85
; X86-NEXT: retl
@@ -89,10 +88,10 @@ define i8 @abd_ext_i8_undef(i8 %a, i8 %b) nounwind {
89
88
; X64: # %bb.0:
90
89
; X64-NEXT: movsbl %sil, %eax
91
90
; X64-NEXT: movsbl %dil, %ecx
92
- ; X64-NEXT: subl %eax , %ecx
93
- ; X64-NEXT: movl %ecx , %eax
94
- ; X64-NEXT: negl %eax
95
- ; X64-NEXT: cmovsl %ecx , %eax
91
+ ; X64-NEXT: movl %ecx , %edx
92
+ ; X64-NEXT: subl %eax , %edx
93
+ ; X64-NEXT: subl %ecx, %eax
94
+ ; X64-NEXT: cmovll %edx , %eax
96
95
; X64-NEXT: negb %al
97
96
; X64-NEXT: # kill: def $al killed $al killed $eax
98
97
; X64-NEXT: retq
@@ -110,21 +109,22 @@ define i16 @abd_ext_i16(i16 %a, i16 %b) nounwind {
110
109
; X86: # %bb.0:
111
110
; X86-NEXT: movswl {{[0-9]+}}(%esp), %eax
112
111
; X86-NEXT: movswl {{[0-9]+}}(%esp), %ecx
113
- ; X86-NEXT: subl %eax, %ecx
114
- ; X86-NEXT: movl %ecx, %eax
112
+ ; X86-NEXT: movl %ecx, %edx
113
+ ; X86-NEXT: subl %eax, %edx
114
+ ; X86-NEXT: subl %ecx, %eax
115
+ ; X86-NEXT: cmovll %edx, %eax
115
116
; X86-NEXT: negl %eax
116
- ; X86-NEXT: cmovnsl %ecx, %eax
117
117
; X86-NEXT: # kill: def $ax killed $ax killed $eax
118
118
; X86-NEXT: retl
119
119
;
120
120
; X64-LABEL: abd_ext_i16:
121
121
; X64: # %bb.0:
122
- ; X64-NEXT: movswl %si, %eax
123
122
; X64-NEXT: movswl %di, %ecx
124
- ; X64-NEXT: subl %eax, %ecx
125
- ; X64-NEXT: movl %ecx, %eax
123
+ ; X64-NEXT: subl %esi, %edi
124
+ ; X64-NEXT: movswl %si, %eax
125
+ ; X64-NEXT: subl %ecx, %eax
126
+ ; X64-NEXT: cmovll %edi, %eax
126
127
; X64-NEXT: negl %eax
127
- ; X64-NEXT: cmovnsl %ecx, %eax
128
128
; X64-NEXT: # kill: def $ax killed $ax killed $eax
129
129
; X64-NEXT: retq
130
130
%aext = sext i16 %a to i64
@@ -173,21 +173,22 @@ define i16 @abd_ext_i16_undef(i16 %a, i16 %b) nounwind {
173
173
; X86: # %bb.0:
174
174
; X86-NEXT: movswl {{[0-9]+}}(%esp), %eax
175
175
; X86-NEXT: movswl {{[0-9]+}}(%esp), %ecx
176
- ; X86-NEXT: subl %eax, %ecx
177
- ; X86-NEXT: movl %ecx, %eax
176
+ ; X86-NEXT: movl %ecx, %edx
177
+ ; X86-NEXT: subl %eax, %edx
178
+ ; X86-NEXT: subl %ecx, %eax
179
+ ; X86-NEXT: cmovll %edx, %eax
178
180
; X86-NEXT: negl %eax
179
- ; X86-NEXT: cmovnsl %ecx, %eax
180
181
; X86-NEXT: # kill: def $ax killed $ax killed $eax
181
182
; X86-NEXT: retl
182
183
;
183
184
; X64-LABEL: abd_ext_i16_undef:
184
185
; X64: # %bb.0:
185
- ; X64-NEXT: movswl %si, %eax
186
186
; X64-NEXT: movswl %di, %ecx
187
- ; X64-NEXT: subl %eax, %ecx
188
- ; X64-NEXT: movl %ecx, %eax
187
+ ; X64-NEXT: subl %esi, %edi
188
+ ; X64-NEXT: movswl %si, %eax
189
+ ; X64-NEXT: subl %ecx, %eax
190
+ ; X64-NEXT: cmovll %edi, %eax
189
191
; X64-NEXT: negl %eax
190
- ; X64-NEXT: cmovnsl %ecx, %eax
191
192
; X64-NEXT: # kill: def $ax killed $ax killed $eax
192
193
; X64-NEXT: retq
193
194
%aext = sext i16 %a to i64
@@ -524,10 +525,10 @@ define i8 @abd_minmax_i8(i8 %a, i8 %b) nounwind {
524
525
; X86: # %bb.0:
525
526
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %eax
526
527
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %ecx
527
- ; X86-NEXT: subl %eax , %ecx
528
- ; X86-NEXT: movl %ecx , %eax
529
- ; X86-NEXT: negl %eax
530
- ; X86-NEXT: cmovsl %ecx , %eax
528
+ ; X86-NEXT: movl %ecx , %edx
529
+ ; X86-NEXT: subl %eax , %edx
530
+ ; X86-NEXT: subl %ecx, %eax
531
+ ; X86-NEXT: cmovll %edx , %eax
531
532
; X86-NEXT: negb %al
532
533
; X86-NEXT: # kill: def $al killed $al killed $eax
533
534
; X86-NEXT: retl
@@ -536,10 +537,10 @@ define i8 @abd_minmax_i8(i8 %a, i8 %b) nounwind {
536
537
; X64: # %bb.0:
537
538
; X64-NEXT: movsbl %sil, %eax
538
539
; X64-NEXT: movsbl %dil, %ecx
539
- ; X64-NEXT: subl %eax , %ecx
540
- ; X64-NEXT: movl %ecx , %eax
541
- ; X64-NEXT: negl %eax
542
- ; X64-NEXT: cmovsl %ecx , %eax
540
+ ; X64-NEXT: movl %ecx , %edx
541
+ ; X64-NEXT: subl %eax , %edx
542
+ ; X64-NEXT: subl %ecx, %eax
543
+ ; X64-NEXT: cmovll %edx , %eax
543
544
; X64-NEXT: negb %al
544
545
; X64-NEXT: # kill: def $al killed $al killed $eax
545
546
; X64-NEXT: retq
@@ -554,21 +555,22 @@ define i16 @abd_minmax_i16(i16 %a, i16 %b) nounwind {
554
555
; X86: # %bb.0:
555
556
; X86-NEXT: movswl {{[0-9]+}}(%esp), %eax
556
557
; X86-NEXT: movswl {{[0-9]+}}(%esp), %ecx
557
- ; X86-NEXT: subl %eax, %ecx
558
- ; X86-NEXT: movl %ecx, %eax
558
+ ; X86-NEXT: movl %ecx, %edx
559
+ ; X86-NEXT: subl %eax, %edx
560
+ ; X86-NEXT: subl %ecx, %eax
561
+ ; X86-NEXT: cmovll %edx, %eax
559
562
; X86-NEXT: negl %eax
560
- ; X86-NEXT: cmovnsl %ecx, %eax
561
563
; X86-NEXT: # kill: def $ax killed $ax killed $eax
562
564
; X86-NEXT: retl
563
565
;
564
566
; X64-LABEL: abd_minmax_i16:
565
567
; X64: # %bb.0:
566
- ; X64-NEXT: movswl %si, %eax
567
568
; X64-NEXT: movswl %di, %ecx
568
- ; X64-NEXT: subl %eax, %ecx
569
- ; X64-NEXT: movl %ecx, %eax
569
+ ; X64-NEXT: subl %esi, %edi
570
+ ; X64-NEXT: movswl %si, %eax
571
+ ; X64-NEXT: subl %ecx, %eax
572
+ ; X64-NEXT: cmovll %edi, %eax
570
573
; X64-NEXT: negl %eax
571
- ; X64-NEXT: cmovnsl %ecx, %eax
572
574
; X64-NEXT: # kill: def $ax killed $ax killed $eax
573
575
; X64-NEXT: retq
574
576
%min = call i16 @llvm.smin.i16 (i16 %a , i16 %b )
@@ -740,10 +742,10 @@ define i8 @abd_cmp_i8(i8 %a, i8 %b) nounwind {
740
742
; X86: # %bb.0:
741
743
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %eax
742
744
; X86-NEXT: movsbl {{[0-9]+}}(%esp), %ecx
743
- ; X86-NEXT: subl %eax , %ecx
744
- ; X86-NEXT: movl %ecx , %eax
745
- ; X86-NEXT: negl %eax
746
- ; X86-NEXT: cmovsl %ecx , %eax
745
+ ; X86-NEXT: movl %ecx , %edx
746
+ ; X86-NEXT: subl %eax , %edx
747
+ ; X86-NEXT: subl %ecx, %eax
748
+ ; X86-NEXT: cmovll %edx , %eax
747
749
; X86-NEXT: negb %al
748
750
; X86-NEXT: # kill: def $al killed $al killed $eax
749
751
; X86-NEXT: retl
@@ -752,10 +754,10 @@ define i8 @abd_cmp_i8(i8 %a, i8 %b) nounwind {
752
754
; X64: # %bb.0:
753
755
; X64-NEXT: movsbl %sil, %eax
754
756
; X64-NEXT: movsbl %dil, %ecx
755
- ; X64-NEXT: subl %eax , %ecx
756
- ; X64-NEXT: movl %ecx , %eax
757
- ; X64-NEXT: negl %eax
758
- ; X64-NEXT: cmovsl %ecx , %eax
757
+ ; X64-NEXT: movl %ecx , %edx
758
+ ; X64-NEXT: subl %eax , %edx
759
+ ; X64-NEXT: subl %ecx, %eax
760
+ ; X64-NEXT: cmovll %edx , %eax
759
761
; X64-NEXT: negb %al
760
762
; X64-NEXT: # kill: def $al killed $al killed $eax
761
763
; X64-NEXT: retq
@@ -771,21 +773,22 @@ define i16 @abd_cmp_i16(i16 %a, i16 %b) nounwind {
771
773
; X86: # %bb.0:
772
774
; X86-NEXT: movswl {{[0-9]+}}(%esp), %eax
773
775
; X86-NEXT: movswl {{[0-9]+}}(%esp), %ecx
774
- ; X86-NEXT: subl %eax, %ecx
775
- ; X86-NEXT: movl %ecx, %eax
776
+ ; X86-NEXT: movl %ecx, %edx
777
+ ; X86-NEXT: subl %eax, %edx
778
+ ; X86-NEXT: subl %ecx, %eax
779
+ ; X86-NEXT: cmovll %edx, %eax
776
780
; X86-NEXT: negl %eax
777
- ; X86-NEXT: cmovnsl %ecx, %eax
778
781
; X86-NEXT: # kill: def $ax killed $ax killed $eax
779
782
; X86-NEXT: retl
780
783
;
781
784
; X64-LABEL: abd_cmp_i16:
782
785
; X64: # %bb.0:
783
- ; X64-NEXT: movswl %si, %eax
784
786
; X64-NEXT: movswl %di, %ecx
785
- ; X64-NEXT: subl %eax, %ecx
786
- ; X64-NEXT: movl %ecx, %eax
787
+ ; X64-NEXT: subl %esi, %edi
788
+ ; X64-NEXT: movswl %si, %eax
789
+ ; X64-NEXT: subl %ecx, %eax
790
+ ; X64-NEXT: cmovll %edi, %eax
787
791
; X64-NEXT: negl %eax
788
- ; X64-NEXT: cmovnsl %ecx, %eax
789
792
; X64-NEXT: # kill: def $ax killed $ax killed $eax
790
793
; X64-NEXT: retq
791
794
%cmp = icmp slt i16 %a , %b
0 commit comments