@@ -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
@@ -218,8 +213,7 @@ define i8 @abd_minmax_i8(i8 %a, i8 %b) nounwind {
218213; CHECK-LABEL: abd_minmax_i8:
219214; CHECK: // %bb.0:
220215; CHECK-NEXT: and w8, w0, #0xff
221- ; CHECK-NEXT: sub w8, w8, w1, uxtb
222- ; CHECK-NEXT: cmp w8, #0
216+ ; CHECK-NEXT: subs w8, w8, w1, uxtb
223217; CHECK-NEXT: cneg w0, w8, mi
224218; CHECK-NEXT: ret
225219 %min = call i8 @llvm.umin.i8 (i8 %a , i8 %b )
@@ -232,8 +226,7 @@ define i16 @abd_minmax_i16(i16 %a, i16 %b) nounwind {
232226; CHECK-LABEL: abd_minmax_i16:
233227; CHECK: // %bb.0:
234228; CHECK-NEXT: and w8, w0, #0xffff
235- ; CHECK-NEXT: sub w8, w8, w1, uxth
236- ; CHECK-NEXT: cmp w8, #0
229+ ; CHECK-NEXT: subs w8, w8, w1, uxth
237230; CHECK-NEXT: cneg w0, w8, mi
238231; CHECK-NEXT: ret
239232 %min = call i16 @llvm.umin.i16 (i16 %a , i16 %b )
@@ -292,8 +285,7 @@ define i8 @abd_cmp_i8(i8 %a, i8 %b) nounwind {
292285; CHECK-LABEL: abd_cmp_i8:
293286; CHECK: // %bb.0:
294287; CHECK-NEXT: and w8, w0, #0xff
295- ; CHECK-NEXT: sub w8, w8, w1, uxtb
296- ; CHECK-NEXT: cmp w8, #0
288+ ; CHECK-NEXT: subs w8, w8, w1, uxtb
297289; CHECK-NEXT: cneg w0, w8, mi
298290; CHECK-NEXT: ret
299291 %cmp = icmp ugt i8 %a , %b
@@ -307,8 +299,7 @@ define i16 @abd_cmp_i16(i16 %a, i16 %b) nounwind {
307299; CHECK-LABEL: abd_cmp_i16:
308300; CHECK: // %bb.0:
309301; CHECK-NEXT: and w8, w0, #0xffff
310- ; CHECK-NEXT: sub w8, w8, w1, uxth
311- ; CHECK-NEXT: cmp w8, #0
302+ ; CHECK-NEXT: subs w8, w8, w1, uxth
312303; CHECK-NEXT: cneg w0, w8, mi
313304; CHECK-NEXT: ret
314305 %cmp = icmp uge i16 %a , %b
@@ -371,10 +362,9 @@ define i64 @vector_legalized(i16 %a, i16 %b) {
371362; CHECK-LABEL: vector_legalized:
372363; CHECK: // %bb.0:
373364; CHECK-NEXT: and w8, w0, #0xffff
374- ; CHECK-NEXT: sub w8, w8, w1, uxth
375- ; CHECK-NEXT: cmp w8, #0
376- ; CHECK-NEXT: addp d0, v0.2d
365+ ; CHECK-NEXT: subs w8, w8, w1, uxth
377366; CHECK-NEXT: cneg w8, w8, mi
367+ ; CHECK-NEXT: addp d0, v0.2d
378368; CHECK-NEXT: fmov x9, d0
379369; CHECK-NEXT: add x0, x9, x8
380370; CHECK-NEXT: ret
@@ -396,8 +386,7 @@ define i8 @abd_select_i8(i8 %a, i8 %b) nounwind {
396386; CHECK-LABEL: abd_select_i8:
397387; CHECK: // %bb.0:
398388; CHECK-NEXT: and w8, w0, #0xff
399- ; CHECK-NEXT: sub w8, w8, w1, uxtb
400- ; CHECK-NEXT: cmp w8, #0
389+ ; CHECK-NEXT: subs w8, w8, w1, uxtb
401390; CHECK-NEXT: cneg w0, w8, mi
402391; CHECK-NEXT: ret
403392 %cmp = icmp ult i8 %a , %b
@@ -411,8 +400,7 @@ define i16 @abd_select_i16(i16 %a, i16 %b) nounwind {
411400; CHECK-LABEL: abd_select_i16:
412401; CHECK: // %bb.0:
413402; CHECK-NEXT: and w8, w0, #0xffff
414- ; CHECK-NEXT: sub w8, w8, w1, uxth
415- ; CHECK-NEXT: cmp w8, #0
403+ ; CHECK-NEXT: subs w8, w8, w1, uxth
416404; CHECK-NEXT: cneg w0, w8, mi
417405; CHECK-NEXT: ret
418406 %cmp = icmp ule i16 %a , %b
0 commit comments