8
8
define i8 @abd_ext_i8 (i8 %a , i8 %b ) nounwind {
9
9
; CHECK-LABEL: abd_ext_i8:
10
10
; CHECK: // %bb.0:
11
- ; CHECK-NEXT: sxtb w8, w0
12
- ; CHECK-NEXT: sub w8, w8, w1, sxtb
13
- ; CHECK-NEXT: cmp w8, #0
11
+ ; CHECK-NEXT: sxtb w8, w1
12
+ ; CHECK-NEXT: sxtb w9, w0
13
+ ; CHECK-NEXT: subs w8, w9, w8
14
14
; CHECK-NEXT: cneg w0, w8, mi
15
15
; CHECK-NEXT: ret
16
16
%aext = sext i8 %a to i64
@@ -24,9 +24,9 @@ define i8 @abd_ext_i8(i8 %a, i8 %b) nounwind {
24
24
define i8 @abd_ext_i8_i16 (i8 %a , i16 %b ) nounwind {
25
25
; CHECK-LABEL: abd_ext_i8_i16:
26
26
; CHECK: // %bb.0:
27
- ; CHECK-NEXT: sxtb w8, w0
28
- ; CHECK-NEXT: sub w8, w8, w1, sxth
29
- ; CHECK-NEXT: cmp w8, #0
27
+ ; CHECK-NEXT: sxth w8, w1
28
+ ; CHECK-NEXT: sxtb w9, w0
29
+ ; CHECK-NEXT: subs w8, w9, w8
30
30
; CHECK-NEXT: cneg w0, w8, mi
31
31
; CHECK-NEXT: ret
32
32
%aext = sext i8 %a to i64
@@ -40,9 +40,9 @@ define i8 @abd_ext_i8_i16(i8 %a, i16 %b) nounwind {
40
40
define i8 @abd_ext_i8_undef (i8 %a , i8 %b ) nounwind {
41
41
; CHECK-LABEL: abd_ext_i8_undef:
42
42
; CHECK: // %bb.0:
43
- ; CHECK-NEXT: sxtb w8, w0
44
- ; CHECK-NEXT: sub w8, w8, w1, sxtb
45
- ; CHECK-NEXT: cmp w8, #0
43
+ ; CHECK-NEXT: sxtb w8, w1
44
+ ; CHECK-NEXT: sxtb w9, w0
45
+ ; CHECK-NEXT: subs w8, w9, w8
46
46
; CHECK-NEXT: cneg w0, w8, mi
47
47
; CHECK-NEXT: ret
48
48
%aext = sext i8 %a to i64
@@ -56,9 +56,9 @@ define i8 @abd_ext_i8_undef(i8 %a, i8 %b) nounwind {
56
56
define i16 @abd_ext_i16 (i16 %a , i16 %b ) nounwind {
57
57
; CHECK-LABEL: abd_ext_i16:
58
58
; CHECK: // %bb.0:
59
- ; CHECK-NEXT: sxth w8, w0
60
- ; CHECK-NEXT: sub w8, w8, w1, sxth
61
- ; CHECK-NEXT: cmp w8, #0
59
+ ; CHECK-NEXT: sxth w8, w1
60
+ ; CHECK-NEXT: sxth w9, w0
61
+ ; CHECK-NEXT: subs w8, w9, w8
62
62
; CHECK-NEXT: cneg w0, w8, mi
63
63
; CHECK-NEXT: ret
64
64
%aext = sext i16 %a to i64
@@ -87,9 +87,9 @@ define i16 @abd_ext_i16_i32(i16 %a, i32 %b) nounwind {
87
87
define i16 @abd_ext_i16_undef (i16 %a , i16 %b ) nounwind {
88
88
; CHECK-LABEL: abd_ext_i16_undef:
89
89
; CHECK: // %bb.0:
90
- ; CHECK-NEXT: sxth w8, w0
91
- ; CHECK-NEXT: sub w8, w8, w1, sxth
92
- ; CHECK-NEXT: cmp w8, #0
90
+ ; CHECK-NEXT: sxth w8, w1
91
+ ; CHECK-NEXT: sxth w9, w0
92
+ ; CHECK-NEXT: subs w8, w9, w8
93
93
; CHECK-NEXT: cneg w0, w8, mi
94
94
; CHECK-NEXT: ret
95
95
%aext = sext i16 %a to i64
@@ -214,9 +214,9 @@ define i128 @abd_ext_i128_undef(i128 %a, i128 %b) nounwind {
214
214
define i8 @abd_minmax_i8 (i8 %a , i8 %b ) nounwind {
215
215
; CHECK-LABEL: abd_minmax_i8:
216
216
; CHECK: // %bb.0:
217
- ; CHECK-NEXT: sxtb w8, w0
218
- ; CHECK-NEXT: sub w8, w8, w1, sxtb
219
- ; CHECK-NEXT: cmp w8, #0
217
+ ; CHECK-NEXT: sxtb w8, w1
218
+ ; CHECK-NEXT: sxtb w9, w0
219
+ ; CHECK-NEXT: subs w8, w9, w8
220
220
; CHECK-NEXT: cneg w0, w8, mi
221
221
; CHECK-NEXT: ret
222
222
%min = call i8 @llvm.smin.i8 (i8 %a , i8 %b )
@@ -228,9 +228,9 @@ define i8 @abd_minmax_i8(i8 %a, i8 %b) nounwind {
228
228
define i16 @abd_minmax_i16 (i16 %a , i16 %b ) nounwind {
229
229
; CHECK-LABEL: abd_minmax_i16:
230
230
; CHECK: // %bb.0:
231
- ; CHECK-NEXT: sxth w8, w0
232
- ; CHECK-NEXT: sub w8, w8, w1, sxth
233
- ; CHECK-NEXT: cmp w8, #0
231
+ ; CHECK-NEXT: sxth w8, w1
232
+ ; CHECK-NEXT: sxth w9, w0
233
+ ; CHECK-NEXT: subs w8, w9, w8
234
234
; CHECK-NEXT: cneg w0, w8, mi
235
235
; CHECK-NEXT: ret
236
236
%min = call i16 @llvm.smin.i16 (i16 %a , i16 %b )
@@ -286,9 +286,9 @@ define i128 @abd_minmax_i128(i128 %a, i128 %b) nounwind {
286
286
define i8 @abd_cmp_i8 (i8 %a , i8 %b ) nounwind {
287
287
; CHECK-LABEL: abd_cmp_i8:
288
288
; CHECK: // %bb.0:
289
- ; CHECK-NEXT: sxtb w8, w0
290
- ; CHECK-NEXT: sub w8, w8, w1, sxtb
291
- ; CHECK-NEXT: cmp w8, #0
289
+ ; CHECK-NEXT: sxtb w8, w1
290
+ ; CHECK-NEXT: sxtb w9, w0
291
+ ; CHECK-NEXT: subs w8, w9, w8
292
292
; CHECK-NEXT: cneg w0, w8, mi
293
293
; CHECK-NEXT: ret
294
294
%cmp = icmp sgt i8 %a , %b
@@ -301,9 +301,9 @@ define i8 @abd_cmp_i8(i8 %a, i8 %b) nounwind {
301
301
define i16 @abd_cmp_i16 (i16 %a , i16 %b ) nounwind {
302
302
; CHECK-LABEL: abd_cmp_i16:
303
303
; CHECK: // %bb.0:
304
- ; CHECK-NEXT: sxth w8, w0
305
- ; CHECK-NEXT: sub w8, w8, w1, sxth
306
- ; CHECK-NEXT: cmp w8, #0
304
+ ; CHECK-NEXT: sxth w8, w1
305
+ ; CHECK-NEXT: sxth w9, w0
306
+ ; CHECK-NEXT: subs w8, w9, w8
307
307
; CHECK-NEXT: cneg w0, w8, mi
308
308
; CHECK-NEXT: ret
309
309
%cmp = icmp sge i16 %a , %b
@@ -507,11 +507,11 @@ define i64 @vector_legalized(i16 %a, i16 %b) {
507
507
; CHECK-LABEL: vector_legalized:
508
508
; CHECK: // %bb.0:
509
509
; CHECK-NEXT: movi v0.2d, #0000000000000000
510
- ; CHECK-NEXT: sxth w8, w0
511
- ; CHECK-NEXT: sub w8, w8, w1, sxth
512
- ; CHECK-NEXT: addp d0, v0.2d
513
- ; CHECK-NEXT: cmp w8, #0
510
+ ; CHECK-NEXT: sxth w8, w1
511
+ ; CHECK-NEXT: sxth w9, w0
512
+ ; CHECK-NEXT: subs w8, w9, w8
514
513
; CHECK-NEXT: cneg w8, w8, mi
514
+ ; CHECK-NEXT: addp d0, v0.2d
515
515
; CHECK-NEXT: fmov x9, d0
516
516
; CHECK-NEXT: add x0, x9, x8
517
517
; CHECK-NEXT: ret
@@ -532,9 +532,9 @@ define i64 @vector_legalized(i16 %a, i16 %b) {
532
532
define i8 @abd_select_i8 (i8 %a , i8 %b ) nounwind {
533
533
; CHECK-LABEL: abd_select_i8:
534
534
; CHECK: // %bb.0:
535
- ; CHECK-NEXT: sxtb w8, w0
536
- ; CHECK-NEXT: sub w8, w8, w1, sxtb
537
- ; CHECK-NEXT: cmp w8, #0
535
+ ; CHECK-NEXT: sxtb w8, w1
536
+ ; CHECK-NEXT: sxtb w9, w0
537
+ ; CHECK-NEXT: subs w8, w9, w8
538
538
; CHECK-NEXT: cneg w0, w8, mi
539
539
; CHECK-NEXT: ret
540
540
%cmp = icmp slt i8 %a , %b
@@ -547,9 +547,9 @@ define i8 @abd_select_i8(i8 %a, i8 %b) nounwind {
547
547
define i16 @abd_select_i16 (i16 %a , i16 %b ) nounwind {
548
548
; CHECK-LABEL: abd_select_i16:
549
549
; CHECK: // %bb.0:
550
- ; CHECK-NEXT: sxth w8, w0
551
- ; CHECK-NEXT: sub w8, w8, w1, sxth
552
- ; CHECK-NEXT: cmp w8, #0
550
+ ; CHECK-NEXT: sxth w8, w1
551
+ ; CHECK-NEXT: sxth w9, w0
552
+ ; CHECK-NEXT: subs w8, w9, w8
553
553
; CHECK-NEXT: cneg w0, w8, mi
554
554
; CHECK-NEXT: ret
555
555
%cmp = icmp sle i16 %a , %b
0 commit comments