@@ -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: uabd 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: uabd 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
@@ -318,12 +312,9 @@ define <8 x i16> @abds_base(<8 x i16> %src1, <8 x i16> %src2) {
318
312
define <8 x i16 > @abds_const (<8 x i16 > %src1 ) {
319
313
; CHECK-LABEL: abds_const:
320
314
; 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
315
+ ; CHECK-NEXT: movi v1.4h, #1
316
+ ; CHECK-NEXT: mov v1.d[1], v1.d[0]
317
+ ; CHECK-NEXT: sabd v0.8h, v0.8h, v1.8h
327
318
; CHECK-NEXT: ret
328
319
%zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
329
320
%sub = sub <8 x i32 > %zextsrc1 , <i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 >
@@ -335,12 +326,9 @@ define <8 x i16> @abds_const(<8 x i16> %src1) {
335
326
define <8 x i16 > @abds_const_lhs (<8 x i16 > %src1 ) {
336
327
; CHECK-LABEL: abds_const_lhs:
337
328
; 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
329
+ ; CHECK-NEXT: movi v1.4h, #1
330
+ ; CHECK-NEXT: mov v1.d[1], v1.d[0]
331
+ ; CHECK-NEXT: sabd v0.8h, v0.8h, v1.8h
344
332
; CHECK-NEXT: ret
345
333
%zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
346
334
%sub = sub <8 x i32 > <i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 >, %zextsrc1
@@ -352,11 +340,10 @@ define <8 x i16> @abds_const_lhs(<8 x i16> %src1) {
352
340
define <8 x i16 > @abds_const_zero (<8 x i16 > %src1 ) {
353
341
; CHECK-LABEL: abds_const_zero:
354
342
; 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
343
+ ; CHECK-NEXT: ext v1.16b, v0.16b, v0.16b, #8
344
+ ; CHECK-NEXT: abs v0.4h, v0.4h
345
+ ; CHECK-NEXT: abs v1.4h, v1.4h
346
+ ; CHECK-NEXT: mov v0.d[1], v1.d[0]
360
347
; CHECK-NEXT: ret
361
348
%zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
362
349
%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