@@ -18,13 +18,11 @@ define <8 x i16> @abdu_const(<8 x i16> %src1) {
1818; CHECK-LABEL: abdu_const:
1919; CHECK: // %bb.0:
2020; CHECK-NEXT: movi v1.4s, #1
21- ; CHECK-NEXT: ushll2 v2.4s, v0.8h, #0
22- ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
23- ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s
24- ; CHECK-NEXT: sub v1.4s, v2.4s, v1.4s
25- ; CHECK-NEXT: abs v1.4s, v1.4s
26- ; CHECK-NEXT: abs v0.4s, v0.4s
27- ; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h
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
2826; CHECK-NEXT: ret
2927 %zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
3028 %sub = sub <8 x i32 > %zextsrc1 , <i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 >
@@ -37,10 +35,10 @@ define <8 x i16> @abdu_const_lhs(<8 x i16> %src1) {
3735; CHECK-LABEL: abdu_const_lhs:
3836; CHECK: // %bb.0:
3937; CHECK-NEXT: movi v1.4s, #1
40- ; CHECK-NEXT: usubw v2.4s, v1.4s, v0.4h
41- ; CHECK-NEXT: usubw2 v0.4s, v1.4s, v0.8h
42- ; CHECK-NEXT: abs v0.4s, v0.4s
43- ; CHECK-NEXT: abs v1.4s, v2.4s
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
4442; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
4543; CHECK-NEXT: ret
4644 %zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
@@ -53,13 +51,6 @@ define <8 x i16> @abdu_const_lhs(<8 x i16> %src1) {
5351define <8 x i16 > @abdu_const_zero (<8 x i16 > %src1 ) {
5452; CHECK-LABEL: abdu_const_zero:
5553; CHECK: // %bb.0:
56- ; CHECK-NEXT: movi v1.2d, #0000000000000000
57- ; CHECK-NEXT: ushll v2.4s, v0.4h, #0
58- ; CHECK-NEXT: usubw2 v0.4s, v1.4s, v0.8h
59- ; CHECK-NEXT: neg v1.4s, v2.4s
60- ; CHECK-NEXT: abs v0.4s, v0.4s
61- ; CHECK-NEXT: abs v1.4s, v1.4s
62- ; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
6354; CHECK-NEXT: ret
6455 %zextsrc1 = zext <8 x i16 > %src1 to <8 x i32 >
6556 %sub = sub <8 x i32 > <i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 , i32 0 >, %zextsrc1
@@ -328,13 +319,11 @@ define <8 x i16> @abds_const(<8 x i16> %src1) {
328319; CHECK-LABEL: abds_const:
329320; CHECK: // %bb.0:
330321; CHECK-NEXT: movi v1.4s, #1
331- ; CHECK-NEXT: sshll2 v2.4s, v0.8h, #0
332- ; CHECK-NEXT: sshll v0.4s, v0.4h, #0
333- ; CHECK-NEXT: sub v0.4s, v0.4s, v1.4s
334- ; CHECK-NEXT: sub v1.4s, v2.4s, v1.4s
335- ; CHECK-NEXT: abs v1.4s, v1.4s
336- ; CHECK-NEXT: abs v0.4s, v0.4s
337- ; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h
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
338327; CHECK-NEXT: ret
339328 %zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
340329 %sub = sub <8 x i32 > %zextsrc1 , <i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 , i32 1 >
@@ -347,10 +336,10 @@ define <8 x i16> @abds_const_lhs(<8 x i16> %src1) {
347336; CHECK-LABEL: abds_const_lhs:
348337; CHECK: // %bb.0:
349338; CHECK-NEXT: movi v1.4s, #1
350- ; CHECK-NEXT: ssubw v2.4s, v1.4s, v0.4h
351- ; CHECK-NEXT: ssubw2 v0.4s, v1.4s, v0.8h
352- ; CHECK-NEXT: abs v0.4s, v0.4s
353- ; CHECK-NEXT: abs v1.4s, v2.4s
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
354343; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
355344; CHECK-NEXT: ret
356345 %zextsrc1 = sext <8 x i16 > %src1 to <8 x i32 >
@@ -363,10 +352,8 @@ define <8 x i16> @abds_const_lhs(<8 x i16> %src1) {
363352define <8 x i16 > @abds_const_zero (<8 x i16 > %src1 ) {
364353; CHECK-LABEL: abds_const_zero:
365354; CHECK: // %bb.0:
366- ; CHECK-NEXT: movi v1.2d, #0000000000000000
367- ; CHECK-NEXT: sshll v2.4s, v0.4h, #0
368- ; CHECK-NEXT: ssubw2 v0.4s, v1.4s, v0.8h
369- ; CHECK-NEXT: neg v1.4s, v2.4s
355+ ; CHECK-NEXT: sshll v1.4s, v0.4h, #0
356+ ; CHECK-NEXT: sshll2 v0.4s, v0.8h, #0
370357; CHECK-NEXT: abs v0.4s, v0.4s
371358; CHECK-NEXT: abs v1.4s, v1.4s
372359; CHECK-NEXT: uzp1 v0.8h, v1.8h, v0.8h
0 commit comments