@@ -17,12 +17,9 @@ define <8 x i16> @abdu_base(<8 x i16> %src1, <8 x i16> %src2) {
1717define <8 x i16 > @abdu_const (<8 x i16 > %src1 ) {
1818; CHECK-LABEL: abdu_const:
1919; 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
2623; CHECK-NEXT: ret
2724 %zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
2825 %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) {
3431define <8 x i16 > @abdu_const_lhs (<8 x i16 > %src1 ) {
3532; CHECK-LABEL: abdu_const_lhs:
3633; 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
4337; CHECK-NEXT: ret
4438 %zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
4539 %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) {
318312define <8 x i16 > @abds_const (<8 x i16 > %src1 ) {
319313; CHECK-LABEL: abds_const:
320314; 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
327318; CHECK-NEXT: ret
328319 %zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
329320 %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) {
335326define <8 x i16 > @abds_const_lhs (<8 x i16 > %src1 ) {
336327; CHECK-LABEL: abds_const_lhs:
337328; 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
344332; CHECK-NEXT: ret
345333 %zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
346334 %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) {
352340define <8 x i16 > @abds_const_zero (<8 x i16 > %src1 ) {
353341; CHECK-LABEL: abds_const_zero:
354342; 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]
360347; CHECK-NEXT: ret
361348 %zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
362349 %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