@@ -9,8 +9,7 @@ define i8 @abd_ext_i8(i8 %a, i8 %b) nounwind {
9
9
; CHECK-LABEL: abd_ext_i8:
10
10
; CHECK: // %bb.0:
11
11
; CHECK-NEXT: and w8, w0, #0xff
12
- ; CHECK-NEXT: sub w8, w8, w1, uxtb
13
- ; CHECK-NEXT: cmp w8, #0
12
+ ; CHECK-NEXT: subs w8, w8, w1, uxtb
14
13
; CHECK-NEXT: cneg w0, w8, mi
15
14
; CHECK-NEXT: ret
16
15
%aext = zext i8 %a to i64
@@ -25,8 +24,7 @@ define i8 @abd_ext_i8_i16(i8 %a, i16 %b) nounwind {
25
24
; CHECK-LABEL: abd_ext_i8_i16:
26
25
; CHECK: // %bb.0:
27
26
; CHECK-NEXT: and w8, w0, #0xff
28
- ; CHECK-NEXT: sub w8, w8, w1, uxth
29
- ; CHECK-NEXT: cmp w8, #0
27
+ ; CHECK-NEXT: subs w8, w8, w1, uxth
30
28
; CHECK-NEXT: cneg w0, w8, mi
31
29
; CHECK-NEXT: ret
32
30
%aext = zext i8 %a to i64
@@ -41,8 +39,7 @@ define i8 @abd_ext_i8_undef(i8 %a, i8 %b) nounwind {
41
39
; CHECK-LABEL: abd_ext_i8_undef:
42
40
; CHECK: // %bb.0:
43
41
; CHECK-NEXT: and w8, w0, #0xff
44
- ; CHECK-NEXT: sub w8, w8, w1, uxtb
45
- ; CHECK-NEXT: cmp w8, #0
42
+ ; CHECK-NEXT: subs w8, w8, w1, uxtb
46
43
; CHECK-NEXT: cneg w0, w8, mi
47
44
; CHECK-NEXT: ret
48
45
%aext = zext i8 %a to i64
@@ -57,8 +54,7 @@ define i16 @abd_ext_i16(i16 %a, i16 %b) nounwind {
57
54
; CHECK-LABEL: abd_ext_i16:
58
55
; CHECK: // %bb.0:
59
56
; CHECK-NEXT: and w8, w0, #0xffff
60
- ; CHECK-NEXT: sub w8, w8, w1, uxth
61
- ; CHECK-NEXT: cmp w8, #0
57
+ ; CHECK-NEXT: subs w8, w8, w1, uxth
62
58
; CHECK-NEXT: cneg w0, w8, mi
63
59
; CHECK-NEXT: ret
64
60
%aext = zext i16 %a to i64
@@ -88,8 +84,7 @@ define i16 @abd_ext_i16_undef(i16 %a, i16 %b) nounwind {
88
84
; CHECK-LABEL: abd_ext_i16_undef:
89
85
; CHECK: // %bb.0:
90
86
; CHECK-NEXT: and w8, w0, #0xffff
91
- ; CHECK-NEXT: sub w8, w8, w1, uxth
92
- ; CHECK-NEXT: cmp w8, #0
87
+ ; CHECK-NEXT: subs w8, w8, w1, uxth
93
88
; CHECK-NEXT: cneg w0, w8, mi
94
89
; CHECK-NEXT: ret
95
90
%aext = zext i16 %a to i64
@@ -219,8 +214,7 @@ define i8 @abd_minmax_i8(i8 %a, i8 %b) nounwind {
219
214
; CHECK-LABEL: abd_minmax_i8:
220
215
; CHECK: // %bb.0:
221
216
; CHECK-NEXT: and w8, w0, #0xff
222
- ; CHECK-NEXT: sub w8, w8, w1, uxtb
223
- ; CHECK-NEXT: cmp w8, #0
217
+ ; CHECK-NEXT: subs w8, w8, w1, uxtb
224
218
; CHECK-NEXT: cneg w0, w8, mi
225
219
; CHECK-NEXT: ret
226
220
%min = call i8 @llvm.umin.i8 (i8 %a , i8 %b )
@@ -233,8 +227,7 @@ define i16 @abd_minmax_i16(i16 %a, i16 %b) nounwind {
233
227
; CHECK-LABEL: abd_minmax_i16:
234
228
; CHECK: // %bb.0:
235
229
; CHECK-NEXT: and w8, w0, #0xffff
236
- ; CHECK-NEXT: sub w8, w8, w1, uxth
237
- ; CHECK-NEXT: cmp w8, #0
230
+ ; CHECK-NEXT: subs w8, w8, w1, uxth
238
231
; CHECK-NEXT: cneg w0, w8, mi
239
232
; CHECK-NEXT: ret
240
233
%min = call i16 @llvm.umin.i16 (i16 %a , i16 %b )
@@ -293,8 +286,7 @@ define i8 @abd_cmp_i8(i8 %a, i8 %b) nounwind {
293
286
; CHECK-LABEL: abd_cmp_i8:
294
287
; CHECK: // %bb.0:
295
288
; CHECK-NEXT: and w8, w0, #0xff
296
- ; CHECK-NEXT: sub w8, w8, w1, uxtb
297
- ; CHECK-NEXT: cmp w8, #0
289
+ ; CHECK-NEXT: subs w8, w8, w1, uxtb
298
290
; CHECK-NEXT: cneg w0, w8, mi
299
291
; CHECK-NEXT: ret
300
292
%cmp = icmp ugt i8 %a , %b
@@ -308,8 +300,7 @@ define i16 @abd_cmp_i16(i16 %a, i16 %b) nounwind {
308
300
; CHECK-LABEL: abd_cmp_i16:
309
301
; CHECK: // %bb.0:
310
302
; CHECK-NEXT: and w8, w0, #0xffff
311
- ; CHECK-NEXT: sub w8, w8, w1, uxth
312
- ; CHECK-NEXT: cmp w8, #0
303
+ ; CHECK-NEXT: subs w8, w8, w1, uxth
313
304
; CHECK-NEXT: cneg w0, w8, mi
314
305
; CHECK-NEXT: ret
315
306
%cmp = icmp uge i16 %a , %b
@@ -373,10 +364,9 @@ define i64 @vector_legalized(i16 %a, i16 %b) {
373
364
; CHECK: // %bb.0:
374
365
; CHECK-NEXT: movi v0.2d, #0000000000000000
375
366
; CHECK-NEXT: and w8, w0, #0xffff
376
- ; CHECK-NEXT: sub w8, w8, w1, uxth
377
- ; CHECK-NEXT: cmp w8, #0
378
- ; CHECK-NEXT: addp d0, v0.2d
367
+ ; CHECK-NEXT: subs w8, w8, w1, uxth
379
368
; CHECK-NEXT: cneg w8, w8, mi
369
+ ; CHECK-NEXT: addp d0, v0.2d
380
370
; CHECK-NEXT: fmov x9, d0
381
371
; CHECK-NEXT: add x0, x9, x8
382
372
; CHECK-NEXT: ret
@@ -398,8 +388,7 @@ define i8 @abd_select_i8(i8 %a, i8 %b) nounwind {
398
388
; CHECK-LABEL: abd_select_i8:
399
389
; CHECK: // %bb.0:
400
390
; CHECK-NEXT: and w8, w0, #0xff
401
- ; CHECK-NEXT: sub w8, w8, w1, uxtb
402
- ; CHECK-NEXT: cmp w8, #0
391
+ ; CHECK-NEXT: subs w8, w8, w1, uxtb
403
392
; CHECK-NEXT: cneg w0, w8, mi
404
393
; CHECK-NEXT: ret
405
394
%cmp = icmp ult i8 %a , %b
@@ -413,8 +402,7 @@ define i16 @abd_select_i16(i16 %a, i16 %b) nounwind {
413
402
; CHECK-LABEL: abd_select_i16:
414
403
; CHECK: // %bb.0:
415
404
; CHECK-NEXT: and w8, w0, #0xffff
416
- ; CHECK-NEXT: sub w8, w8, w1, uxth
417
- ; CHECK-NEXT: cmp w8, #0
405
+ ; CHECK-NEXT: subs w8, w8, w1, uxth
418
406
; CHECK-NEXT: cneg w0, w8, mi
419
407
; CHECK-NEXT: ret
420
408
%cmp = icmp ule i16 %a , %b
0 commit comments