@@ -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: sabd 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: sabd 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
@@ -51,6 +45,10 @@ define <8 x i16> @abdu_const_lhs(<8 x i16> %src1) {
5145define <8 x i16 > @abdu_const_zero (<8 x i16 > %src1 ) {
5246; CHECK-LABEL: abdu_const_zero:
5347; 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]
5452; CHECK-NEXT: ret
5553 %zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
5654 %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) {
318316define <8 x i16 > @abds_const (<8 x i16 > %src1 ) {
319317; CHECK-LABEL: abds_const:
320318; 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
327322; CHECK-NEXT: ret
328323 %zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
329324 %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) {
335330define <8 x i16 > @abds_const_lhs (<8 x i16 > %src1 ) {
336331; CHECK-LABEL: abds_const_lhs:
337332; 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
344336; CHECK-NEXT: ret
345337 %zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
346338 %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) {
352344define <8 x i16 > @abds_const_zero (<8 x i16 > %src1 ) {
353345; CHECK-LABEL: abds_const_zero:
354346; 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]
360351; CHECK-NEXT: ret
361352 %zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
362353 %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