@@ -5,8 +5,7 @@ define i32 @eq_i32(i32 %x) {
55; CHECK-LABEL: eq_i32:
66; CHECK: // %bb.0:
77; CHECK-NEXT: mov w8, #-2097152 // =0xffe00000
8- ; CHECK-NEXT: cmn w0, #512, lsl #12 // =2097152
9- ; CHECK-NEXT: sub w8, w8, w0
8+ ; CHECK-NEXT: subs w8, w8, w0
109; CHECK-NEXT: csel w0, w0, w8, eq
1110; CHECK-NEXT: ret
1211 %cmp = icmp eq i32 %x , -2097152
@@ -19,8 +18,7 @@ define i32 @ne_i32(i32 %x) {
1918; CHECK-LABEL: ne_i32:
2019; CHECK: // %bb.0:
2120; CHECK-NEXT: mov w8, #-2097152 // =0xffe00000
22- ; CHECK-NEXT: cmn w0, #512, lsl #12 // =2097152
23- ; CHECK-NEXT: sub w8, w8, w0
21+ ; CHECK-NEXT: subs w8, w8, w0
2422; CHECK-NEXT: csel w0, w0, w8, ne
2523; CHECK-NEXT: ret
2624 %cmp = icmp ne i32 %x , -2097152
@@ -33,9 +31,8 @@ define i32 @sgt_i32(i32 %x) {
3331; CHECK-LABEL: sgt_i32:
3432; CHECK: // %bb.0:
3533; CHECK-NEXT: mov w8, #-2097152 // =0xffe00000
36- ; CHECK-NEXT: cmn w0, #512, lsl #12 // =2097152
37- ; CHECK-NEXT: sub w8, w8, w0
38- ; CHECK-NEXT: csel w0, w0, w8, gt
34+ ; CHECK-NEXT: subs w8, w8, w0
35+ ; CHECK-NEXT: csel w0, w0, w8, lt
3936; CHECK-NEXT: ret
4037 %cmp = icmp sgt i32 %x , -2097152
4138 %sub = sub i32 -2097152 , %x
@@ -62,9 +59,8 @@ define i32 @slt_i32(i32 %x) {
6259; CHECK-LABEL: slt_i32:
6360; CHECK: // %bb.0:
6461; CHECK-NEXT: mov w8, #-2097152 // =0xffe00000
65- ; CHECK-NEXT: cmn w0, #512, lsl #12 // =2097152
66- ; CHECK-NEXT: sub w8, w8, w0
67- ; CHECK-NEXT: csel w0, w0, w8, lt
62+ ; CHECK-NEXT: subs w8, w8, w0
63+ ; CHECK-NEXT: csel w0, w0, w8, gt
6864; CHECK-NEXT: ret
6965 %cmp = icmp slt i32 %x , -2097152
7066 %sub = sub i32 -2097152 , %x
@@ -91,9 +87,8 @@ define i32 @ugt_i32(i32 %x) {
9187; CHECK-LABEL: ugt_i32:
9288; CHECK: // %bb.0:
9389; CHECK-NEXT: mov w8, #-2097152 // =0xffe00000
94- ; CHECK-NEXT: cmn w0, #512, lsl #12 // =2097152
95- ; CHECK-NEXT: sub w8, w8, w0
96- ; CHECK-NEXT: csel w0, w0, w8, hi
90+ ; CHECK-NEXT: subs w8, w8, w0
91+ ; CHECK-NEXT: csel w0, w0, w8, lo
9792; CHECK-NEXT: ret
9893 %cmp = icmp ugt i32 %x , -2097152
9994 %sub = sub i32 -2097152 , %x
@@ -120,9 +115,8 @@ define i32 @ult_i32(i32 %x) {
120115; CHECK-LABEL: ult_i32:
121116; CHECK: // %bb.0:
122117; CHECK-NEXT: mov w8, #-2097152 // =0xffe00000
123- ; CHECK-NEXT: cmn w0, #512, lsl #12 // =2097152
124- ; CHECK-NEXT: sub w8, w8, w0
125- ; CHECK-NEXT: csel w0, w0, w8, lo
118+ ; CHECK-NEXT: subs w8, w8, w0
119+ ; CHECK-NEXT: csel w0, w0, w8, hi
126120; CHECK-NEXT: ret
127121 %cmp = icmp ult i32 %x , -2097152
128122 %sub = sub i32 -2097152 , %x
@@ -150,8 +144,7 @@ define i64 @eq_i64(i64 %x) {
150144; CHECK-LABEL: eq_i64:
151145; CHECK: // %bb.0:
152146; CHECK-NEXT: mov w8, #100 // =0x64
153- ; CHECK-NEXT: cmp x0, #100
154- ; CHECK-NEXT: sub x8, x8, x0
147+ ; CHECK-NEXT: subs x8, x8, x0
155148; CHECK-NEXT: csel x0, x0, x8, eq
156149; CHECK-NEXT: ret
157150 %cmp = icmp eq i64 %x , 100
@@ -164,8 +157,7 @@ define i64 @ne_i64(i64 %x) {
164157; CHECK-LABEL: ne_i64:
165158; CHECK: // %bb.0:
166159; CHECK-NEXT: mov w8, #100 // =0x64
167- ; CHECK-NEXT: cmp x0, #100
168- ; CHECK-NEXT: sub x8, x8, x0
160+ ; CHECK-NEXT: subs x8, x8, x0
169161; CHECK-NEXT: csel x0, x0, x8, ne
170162; CHECK-NEXT: ret
171163 %cmp = icmp ne i64 %x , 100
@@ -178,9 +170,8 @@ define i64 @sgt_i64(i64 %x) {
178170; CHECK-LABEL: sgt_i64:
179171; CHECK: // %bb.0:
180172; CHECK-NEXT: mov w8, #100 // =0x64
181- ; CHECK-NEXT: cmp x0, #100
182- ; CHECK-NEXT: sub x8, x8, x0
183- ; CHECK-NEXT: csel x0, x0, x8, gt
173+ ; CHECK-NEXT: subs x8, x8, x0
174+ ; CHECK-NEXT: csel x0, x0, x8, lt
184175; CHECK-NEXT: ret
185176 %cmp = icmp sgt i64 %x , 100
186177 %sub = sub i64 100 , %x
@@ -206,9 +197,8 @@ define i64 @slt_i64(i64 %x) {
206197; CHECK-LABEL: slt_i64:
207198; CHECK: // %bb.0:
208199; CHECK-NEXT: mov w8, #100 // =0x64
209- ; CHECK-NEXT: cmp x0, #100
210- ; CHECK-NEXT: sub x8, x8, x0
211- ; CHECK-NEXT: csel x0, x0, x8, lt
200+ ; CHECK-NEXT: subs x8, x8, x0
201+ ; CHECK-NEXT: csel x0, x0, x8, gt
212202; CHECK-NEXT: ret
213203 %cmp = icmp slt i64 %x , 100
214204 %sub = sub i64 100 , %x
@@ -234,9 +224,8 @@ define i64 @ugt_i64(i64 %x) {
234224; CHECK-LABEL: ugt_i64:
235225; CHECK: // %bb.0:
236226; CHECK-NEXT: mov w8, #100 // =0x64
237- ; CHECK-NEXT: cmp x0, #100
238- ; CHECK-NEXT: sub x8, x8, x0
239- ; CHECK-NEXT: csel x0, x0, x8, hi
227+ ; CHECK-NEXT: subs x8, x8, x0
228+ ; CHECK-NEXT: csel x0, x0, x8, lo
240229; CHECK-NEXT: ret
241230 %cmp = icmp ugt i64 %x , 100
242231 %sub = sub i64 100 , %x
@@ -262,9 +251,8 @@ define i64 @ult_i64(i64 %x) {
262251; CHECK-LABEL: ult_i64:
263252; CHECK: // %bb.0:
264253; CHECK-NEXT: mov w8, #100 // =0x64
265- ; CHECK-NEXT: cmp x0, #100
266- ; CHECK-NEXT: sub x8, x8, x0
267- ; CHECK-NEXT: csel x0, x0, x8, lo
254+ ; CHECK-NEXT: subs x8, x8, x0
255+ ; CHECK-NEXT: csel x0, x0, x8, hi
268256; CHECK-NEXT: ret
269257 %cmp = icmp ult i64 %x , 100
270258 %sub = sub i64 100 , %x
0 commit comments