@@ -5,8 +5,7 @@ define i32 @eq_i32(i32 %x) {
5
5
; CHECK-LABEL: eq_i32:
6
6
; CHECK: // %bb.0:
7
7
; 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
10
9
; CHECK-NEXT: csel w0, w0, w8, eq
11
10
; CHECK-NEXT: ret
12
11
%cmp = icmp eq i32 %x , -2097152
@@ -19,8 +18,7 @@ define i32 @ne_i32(i32 %x) {
19
18
; CHECK-LABEL: ne_i32:
20
19
; CHECK: // %bb.0:
21
20
; 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
24
22
; CHECK-NEXT: csel w0, w0, w8, ne
25
23
; CHECK-NEXT: ret
26
24
%cmp = icmp ne i32 %x , -2097152
@@ -33,9 +31,8 @@ define i32 @sgt_i32(i32 %x) {
33
31
; CHECK-LABEL: sgt_i32:
34
32
; CHECK: // %bb.0:
35
33
; 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
39
36
; CHECK-NEXT: ret
40
37
%cmp = icmp sgt i32 %x , -2097152
41
38
%sub = sub i32 -2097152 , %x
@@ -62,9 +59,8 @@ define i32 @slt_i32(i32 %x) {
62
59
; CHECK-LABEL: slt_i32:
63
60
; CHECK: // %bb.0:
64
61
; 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
68
64
; CHECK-NEXT: ret
69
65
%cmp = icmp slt i32 %x , -2097152
70
66
%sub = sub i32 -2097152 , %x
@@ -91,9 +87,8 @@ define i32 @ugt_i32(i32 %x) {
91
87
; CHECK-LABEL: ugt_i32:
92
88
; CHECK: // %bb.0:
93
89
; 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
97
92
; CHECK-NEXT: ret
98
93
%cmp = icmp ugt i32 %x , -2097152
99
94
%sub = sub i32 -2097152 , %x
@@ -120,9 +115,8 @@ define i32 @ult_i32(i32 %x) {
120
115
; CHECK-LABEL: ult_i32:
121
116
; CHECK: // %bb.0:
122
117
; 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
126
120
; CHECK-NEXT: ret
127
121
%cmp = icmp ult i32 %x , -2097152
128
122
%sub = sub i32 -2097152 , %x
@@ -150,8 +144,7 @@ define i64 @eq_i64(i64 %x) {
150
144
; CHECK-LABEL: eq_i64:
151
145
; CHECK: // %bb.0:
152
146
; 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
155
148
; CHECK-NEXT: csel x0, x0, x8, eq
156
149
; CHECK-NEXT: ret
157
150
%cmp = icmp eq i64 %x , 100
@@ -164,8 +157,7 @@ define i64 @ne_i64(i64 %x) {
164
157
; CHECK-LABEL: ne_i64:
165
158
; CHECK: // %bb.0:
166
159
; 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
169
161
; CHECK-NEXT: csel x0, x0, x8, ne
170
162
; CHECK-NEXT: ret
171
163
%cmp = icmp ne i64 %x , 100
@@ -178,9 +170,8 @@ define i64 @sgt_i64(i64 %x) {
178
170
; CHECK-LABEL: sgt_i64:
179
171
; CHECK: // %bb.0:
180
172
; 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
184
175
; CHECK-NEXT: ret
185
176
%cmp = icmp sgt i64 %x , 100
186
177
%sub = sub i64 100 , %x
@@ -206,9 +197,8 @@ define i64 @slt_i64(i64 %x) {
206
197
; CHECK-LABEL: slt_i64:
207
198
; CHECK: // %bb.0:
208
199
; 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
212
202
; CHECK-NEXT: ret
213
203
%cmp = icmp slt i64 %x , 100
214
204
%sub = sub i64 100 , %x
@@ -234,9 +224,8 @@ define i64 @ugt_i64(i64 %x) {
234
224
; CHECK-LABEL: ugt_i64:
235
225
; CHECK: // %bb.0:
236
226
; 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
240
229
; CHECK-NEXT: ret
241
230
%cmp = icmp ugt i64 %x , 100
242
231
%sub = sub i64 100 , %x
@@ -262,9 +251,8 @@ define i64 @ult_i64(i64 %x) {
262
251
; CHECK-LABEL: ult_i64:
263
252
; CHECK: // %bb.0:
264
253
; 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
268
256
; CHECK-NEXT: ret
269
257
%cmp = icmp ult i64 %x , 100
270
258
%sub = sub i64 100 , %x
0 commit comments