@@ -9,8 +9,7 @@ define i8 @abd_ext_i8(i8 %a, i8 %b) nounwind {
99; CHECK-LABEL: abd_ext_i8:
1010; CHECK: // %bb.0:
1111; 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
1413; CHECK-NEXT: cneg w0, w8, mi
1514; CHECK-NEXT: ret
1615 %aext = zext i8 %a to i64
@@ -25,8 +24,7 @@ define i8 @abd_ext_i8_i16(i8 %a, i16 %b) nounwind {
2524; CHECK-LABEL: abd_ext_i8_i16:
2625; CHECK: // %bb.0:
2726; 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
3028; CHECK-NEXT: cneg w0, w8, mi
3129; CHECK-NEXT: ret
3230 %aext = zext i8 %a to i64
@@ -41,8 +39,7 @@ define i8 @abd_ext_i8_undef(i8 %a, i8 %b) nounwind {
4139; CHECK-LABEL: abd_ext_i8_undef:
4240; CHECK: // %bb.0:
4341; 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
4643; CHECK-NEXT: cneg w0, w8, mi
4744; CHECK-NEXT: ret
4845 %aext = zext i8 %a to i64
@@ -57,8 +54,7 @@ define i16 @abd_ext_i16(i16 %a, i16 %b) nounwind {
5754; CHECK-LABEL: abd_ext_i16:
5855; CHECK: // %bb.0:
5956; 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
6258; CHECK-NEXT: cneg w0, w8, mi
6359; CHECK-NEXT: ret
6460 %aext = zext i16 %a to i64
@@ -88,8 +84,7 @@ define i16 @abd_ext_i16_undef(i16 %a, i16 %b) nounwind {
8884; CHECK-LABEL: abd_ext_i16_undef:
8985; CHECK: // %bb.0:
9086; 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
9388; CHECK-NEXT: cneg w0, w8, mi
9489; CHECK-NEXT: ret
9590 %aext = zext i16 %a to i64
@@ -219,8 +214,7 @@ define i8 @abd_minmax_i8(i8 %a, i8 %b) nounwind {
219214; CHECK-LABEL: abd_minmax_i8:
220215; CHECK: // %bb.0:
221216; 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
224218; CHECK-NEXT: cneg w0, w8, mi
225219; CHECK-NEXT: ret
226220 %min = call i8 @llvm.umin.i8 (i8 %a , i8 %b )
@@ -233,8 +227,7 @@ define i16 @abd_minmax_i16(i16 %a, i16 %b) nounwind {
233227; CHECK-LABEL: abd_minmax_i16:
234228; CHECK: // %bb.0:
235229; 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
238231; CHECK-NEXT: cneg w0, w8, mi
239232; CHECK-NEXT: ret
240233 %min = call i16 @llvm.umin.i16 (i16 %a , i16 %b )
@@ -293,8 +286,7 @@ define i8 @abd_cmp_i8(i8 %a, i8 %b) nounwind {
293286; CHECK-LABEL: abd_cmp_i8:
294287; CHECK: // %bb.0:
295288; 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
298290; CHECK-NEXT: cneg w0, w8, mi
299291; CHECK-NEXT: ret
300292 %cmp = icmp ugt i8 %a , %b
@@ -308,8 +300,7 @@ define i16 @abd_cmp_i16(i16 %a, i16 %b) nounwind {
308300; CHECK-LABEL: abd_cmp_i16:
309301; CHECK: // %bb.0:
310302; 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
313304; CHECK-NEXT: cneg w0, w8, mi
314305; CHECK-NEXT: ret
315306 %cmp = icmp uge i16 %a , %b
@@ -373,10 +364,9 @@ define i64 @vector_legalized(i16 %a, i16 %b) {
373364; CHECK: // %bb.0:
374365; CHECK-NEXT: movi v0.2d, #0000000000000000
375366; 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
379368; CHECK-NEXT: cneg w8, w8, mi
369+ ; CHECK-NEXT: addp d0, v0.2d
380370; CHECK-NEXT: fmov x9, d0
381371; CHECK-NEXT: add x0, x9, x8
382372; CHECK-NEXT: ret
@@ -398,8 +388,7 @@ define i8 @abd_select_i8(i8 %a, i8 %b) nounwind {
398388; CHECK-LABEL: abd_select_i8:
399389; CHECK: // %bb.0:
400390; 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
403392; CHECK-NEXT: cneg w0, w8, mi
404393; CHECK-NEXT: ret
405394 %cmp = icmp ult i8 %a , %b
@@ -413,8 +402,7 @@ define i16 @abd_select_i16(i16 %a, i16 %b) nounwind {
413402; CHECK-LABEL: abd_select_i16:
414403; CHECK: // %bb.0:
415404; 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
418406; CHECK-NEXT: cneg w0, w8, mi
419407; CHECK-NEXT: ret
420408 %cmp = icmp ule i16 %a , %b
0 commit comments