@@ -17,12 +17,9 @@ define <8 x i16> @abdu_base(<8 x i16> %src1, <8 x i16> %src2) {
17
17
define <8 x i16 > @abdu_const (<8 x i16 > %src1 ) {
18
18
; CHECK-LABEL: abdu_const:
19
19
; CHECK: // %bb.0:
20
- ; CHECK-NEXT: movi v1.4s, #1
21
- ; CHECK-NEXT: ushll v2.4s, v0.4h, #0
22
- ; CHECK-NEXT: ushll2 v0.4s, v0.8h, #0
23
- ; CHECK-NEXT: uabd v0.4s, v0.4s, v1.4s
24
- ; CHECK-NEXT: uabd v1.4s, v2.4s, v1.4s
25
- ; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
20
+ ; CHECK-NEXT: movi v1.4h, #1
21
+ ; CHECK-NEXT: mov v1.d[1], v1.d[0]
22
+ ; CHECK-NEXT: sabd v0.8h, v0.8h, v1.8h
26
23
; CHECK-NEXT: ret
27
24
%zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
28
25
%sub = sub <8 x i32 > %zextsrc1 , <i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 >
@@ -34,12 +31,9 @@ define <8 x i16> @abdu_const(<8 x i16> %src1) {
34
31
define <8 x i16 > @abdu_const_lhs (<8 x i16 > %src1 ) {
35
32
; CHECK-LABEL: abdu_const_lhs:
36
33
; CHECK: // %bb.0:
37
- ; CHECK-NEXT: movi v1.4s, #1
38
- ; CHECK-NEXT: ushll v2.4s, v0.4h, #0
39
- ; CHECK-NEXT: ushll2 v0.4s, v0.8h, #0
40
- ; CHECK-NEXT: uabd v0.4s, v0.4s, v1.4s
41
- ; CHECK-NEXT: uabd v1.4s, v2.4s, v1.4s
42
- ; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
34
+ ; CHECK-NEXT: movi v1.4h, #1
35
+ ; CHECK-NEXT: mov v1.d[1], v1.d[0]
36
+ ; CHECK-NEXT: sabd v0.8h, v0.8h, v1.8h
43
37
; CHECK-NEXT: ret
44
38
%zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
45
39
%sub = sub <8 x i32 > <i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 >, %zextsrc1
@@ -51,6 +45,10 @@ define <8 x i16> @abdu_const_lhs(<8 x i16> %src1) {
51
45
define <8 x i16 > @abdu_const_zero (<8 x i16 > %src1 ) {
52
46
; CHECK-LABEL: abdu_const_zero:
53
47
; CHECK: // %bb.0:
48
+ ; CHECK-NEXT: ext v1.16b, v0.16b, v0.16b, #8
49
+ ; CHECK-NEXT: abs v0.4h, v0.4h
50
+ ; CHECK-NEXT: abs v1.4h, v1.4h
51
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
54
52
; CHECK-NEXT: ret
55
53
%zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
56
54
%sub = sub <8 x i32 > <i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 >, %zextsrc1
@@ -318,12 +316,9 @@ define <8 x i16> @abds_base(<8 x i16> %src1, <8 x i16> %src2) {
318
316
define <8 x i16 > @abds_const (<8 x i16 > %src1 ) {
319
317
; CHECK-LABEL: abds_const:
320
318
; CHECK: // %bb.0:
321
- ; CHECK-NEXT: movi v1.4s, #1
322
- ; CHECK-NEXT: sshll v2.4s, v0.4h, #0
323
- ; CHECK-NEXT: sshll2 v0.4s, v0.8h, #0
324
- ; CHECK-NEXT: sabd v0.4s, v0.4s, v1.4s
325
- ; CHECK-NEXT: sabd v1.4s, v2.4s, v1.4s
326
- ; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
319
+ ; CHECK-NEXT: movi v1.4h, #1
320
+ ; CHECK-NEXT: mov v1.d[1], v1.d[0]
321
+ ; CHECK-NEXT: sabd v0.8h, v0.8h, v1.8h
327
322
; CHECK-NEXT: ret
328
323
%zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
329
324
%sub = sub <8 x i32 > %zextsrc1 , <i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 >
@@ -335,12 +330,9 @@ define <8 x i16> @abds_const(<8 x i16> %src1) {
335
330
define <8 x i16 > @abds_const_lhs (<8 x i16 > %src1 ) {
336
331
; CHECK-LABEL: abds_const_lhs:
337
332
; CHECK: // %bb.0:
338
- ; CHECK-NEXT: movi v1.4s, #1
339
- ; CHECK-NEXT: sshll v2.4s, v0.4h, #0
340
- ; CHECK-NEXT: sshll2 v0.4s, v0.8h, #0
341
- ; CHECK-NEXT: sabd v0.4s, v0.4s, v1.4s
342
- ; CHECK-NEXT: sabd v1.4s, v2.4s, v1.4s
343
- ; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
333
+ ; CHECK-NEXT: movi v1.4h, #1
334
+ ; CHECK-NEXT: mov v1.d[1], v1.d[0]
335
+ ; CHECK-NEXT: sabd v0.8h, v0.8h, v1.8h
344
336
; CHECK-NEXT: ret
345
337
%zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
346
338
%sub = sub <8 x i32 > <i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 >, %zextsrc1
@@ -352,11 +344,10 @@ define <8 x i16> @abds_const_lhs(<8 x i16> %src1) {
352
344
define <8 x i16 > @abds_const_zero (<8 x i16 > %src1 ) {
353
345
; CHECK-LABEL: abds_const_zero:
354
346
; CHECK: // %bb.0:
355
- ; CHECK-NEXT: sshll v1.4s, v0.4h, #0
356
- ; CHECK-NEXT: sshll2 v0.4s, v0.8h, #0
357
- ; CHECK-NEXT: abs v0.4s, v0.4s
358
- ; CHECK-NEXT: abs v1.4s, v1.4s
359
- ; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
347
+ ; CHECK-NEXT: ext v1.16b, v0.16b, v0.16b, #8
348
+ ; CHECK-NEXT: abs v0.4h, v0.4h
349
+ ; CHECK-NEXT: abs v1.4h, v1.4h
350
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
360
351
; CHECK-NEXT: ret
361
352
%zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
362
353
%sub = sub <8 x i32 > <i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 >, %zextsrc1
0 commit comments