PR #24767 opened by Zhao Zhili (quink) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24767 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24767.patch
They are NOP ins these cases. >From a6778e8049aaa6d076569c17404a2d168d25bee0 Mon Sep 17 00:00:00 2001 From: Zhao Zhili <[email protected]> Date: Tue, 29 Sep 2026 13:26:33 +0800 Subject: [PATCH 1/2] aarch64/h26x: drop the dead qpel vertical accumulator zeroing calc_qpelb and calc_qpelb2 open with a widening multiply, which writes its destination instead of accumulating into it, so the movi that cleared the accumulator ahead of them had no effect. The plain vertical steps at widths 4 to 64 and the bi steps at widths 4 to 32 carried it. --- libavcodec/aarch64/h26x/qpel_neon.S | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/libavcodec/aarch64/h26x/qpel_neon.S b/libavcodec/aarch64/h26x/qpel_neon.S index 25925665dc..dcac32abbe 100644 --- a/libavcodec/aarch64/h26x/qpel_neon.S +++ b/libavcodec/aarch64/h26x/qpel_neon.S @@ -947,7 +947,6 @@ put_hevc qpel_bi .macro qpel_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().s}[0], [x1], x2 - movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 st1 {v24.4h}, [x0], x9 subs w3, w3, #1 @@ -975,7 +974,6 @@ endfunc .macro qpel_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x1], x2 - movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 st1 {v24.4h}, [x0], #8 st1 {v24.s}[2], [x0], x9 @@ -1004,7 +1002,6 @@ endfunc .macro qpel_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x1], x2 - movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 st1 {v24.8h}, [x0], x9 subs w3, w3, #1 @@ -1032,8 +1029,6 @@ endfunc .macro qpel_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x1], x2 - movi v24.8h, #0 - movi v25.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 st1 {v24.8h}, [x0], #16 @@ -1063,8 +1058,6 @@ endfunc .macro qpel_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x1], x2 - movi v24.8h, #0 - movi v25.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 subs w3, w3, #1 @@ -1093,9 +1086,6 @@ endfunc .macro qpel_v24_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().16b, \tmp1\().16b}, [x1], x2 - movi v8.8h, #0 - movi v9.8h, #0 - movi v10.8h, #0 calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 @@ -1127,10 +1117,6 @@ endfunc .macro qpel_v32_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().16b, \tmp1\().16b}, [x1], x2 - movi v8.8h, #0 - movi v9.8h, #0 - movi v10.8h, #0 - movi v11.8h, #0 calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 @@ -1178,10 +1164,6 @@ endfunc .macro qpel_v64_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().16b, \tmp1\().16b}, [x8], x2 - movi v8.8h, #0 - movi v9.8h, #0 - movi v10.8h, #0 - movi v11.8h, #0 calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 @@ -1305,7 +1287,6 @@ endfunc .macro qpel_bi_v4_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().s}[0], [x2], x3 - movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 ld1 {v25.4h}, [x4], x12 // src2 sqadd v24.8h, v24.8h, v25.8h @@ -1332,7 +1313,6 @@ endfunc .macro qpel_bi_v6_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x2], x3 - movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 ld1 {v25.8h}, [x4], x12 // src2 sqadd v24.8h, v24.8h, v25.8h @@ -1361,7 +1341,6 @@ endfunc .macro qpel_bi_v8_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().8b}, [x2], x3 - movi v24.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 ld1 {v25.8h}, [x4], x12 // src2 sqadd v24.8h, v24.8h, v25.8h @@ -1388,8 +1367,6 @@ endfunc .macro qpel_bi_v12_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x2], x3 - movi v24.8h, #0 - movi v25.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 ld1 {v26.8h, v27.8h}, [x4], x12 // src2 @@ -1421,8 +1398,6 @@ endfunc .macro qpel_bi_v16_step tmp, src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\tmp\().16b}, [x2], x3 - movi v24.8h, #0 - movi v25.8h, #0 calc_qpelb v24, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v25, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 ld1 {v26.8h, v27.8h}, [x4], x12 // src2 @@ -1473,10 +1448,6 @@ endfunc .macro qpel_bi_v32_step tmp0, tmp1, src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\tmp0\().8h, \tmp1\().8h}, [x8], x3 - movi v8.8h, #0 - movi v9.8h, #0 - movi v10.8h, #0 - movi v11.8h, #0 calc_qpelb v8, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb2 v9, \src0, \src1, \src2, \src3, \src4, \src5, \src6, \src7 calc_qpelb v10, \src8, \src9, \src10, \src11, \src12, \src13, \src14, \src15 -- 2.52.0 >From 56e421775b049c43426a9dd88bf3d80e9724ab37 Mon Sep 17 00:00:00 2001 From: Zhao Zhili <[email protected]> Date: Tue, 29 Sep 2026 13:26:37 +0800 Subject: [PATCH 2/2] aarch64/h26x: drop the dead epel vertical accumulator zeroing calc_epelb and calc_epelb2 open with a widening multiply, which writes its destination instead of accumulating into it, so the movi that cleared the accumulator ahead of them had no effect. The zeroing that feeds a usdot or an umlsl stays, since both add into their destination. --- libavcodec/aarch64/h26x/epel_neon.S | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/libavcodec/aarch64/h26x/epel_neon.S b/libavcodec/aarch64/h26x/epel_neon.S index 41b62df56d..11a3b65d54 100644 --- a/libavcodec/aarch64/h26x/epel_neon.S +++ b/libavcodec/aarch64/h26x/epel_neon.S @@ -1313,7 +1313,6 @@ endfunc .macro epel_v4_step src0, src1, src2, src3 ld1 {\src3\().s}[0], [x1], x2 - movi v4.8h, #0 calc_epelb v4, \src0, \src1, \src2, \src3 subs w3, w3, #1 st1 {v4.4h}, [x0], x10 @@ -1333,7 +1332,6 @@ endfunc .macro epel_v6_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x1], x2 - movi v4.8h, #0 calc_epelb v4, \src0, \src1, \src2, \src3 st1 {v4.d}[0], [x0], #8 subs w3, w3, #1 @@ -1354,7 +1352,6 @@ endfunc .macro epel_v8_step src0, src1, src2, src3 ld1 {\src3\().8b}, [x1], x2 - movi v4.8h, #0 calc_epelb v4, \src0, \src1, \src2, \src3 subs w3, w3, #1 st1 {v4.8h}, [x0], x10 @@ -1374,8 +1371,6 @@ endfunc .macro epel_v12_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x1], x2 - movi v4.8h, #0 - movi v5.8h, #0 calc_epelb v4, \src0, \src1, \src2, \src3 calc_epelb2 v5, \src0, \src1, \src2, \src3 str q4, [x0] @@ -1398,8 +1393,6 @@ endfunc .macro epel_v16_step src0, src1, src2, src3 ld1 {\src3\().16b}, [x1], x2 - movi v4.8h, #0 - movi v5.8h, #0 calc_epelb v4, \src0, \src1, \src2, \src3 calc_epelb2 v5, \src0, \src1, \src2, \src3 subs w3, w3, #1 @@ -1420,9 +1413,6 @@ endfunc .macro epel_v24_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().8b, \src10\().8b, \src11\().8b}, [x1], x2 - movi v4.8h, #0 - movi v5.8h, #0 - movi v6.8h, #0 calc_epelb v4, \src0, \src3, \src6, \src9 calc_epelb v5, \src1, \src4, \src7, \src10 calc_epelb v6, \src2, \src5, \src8, \src11 @@ -1443,10 +1433,6 @@ endfunc .macro epel_v32_step src0, src1, src2, src3, src4, src5, src6, src7 ld1 {\src6\().16b, \src7\().16b}, [x1], x2 - movi v4.8h, #0 - movi v5.8h, #0 - movi v6.8h, #0 - movi v7.8h, #0 calc_epelb v4, \src0, \src2, \src4, \src6 calc_epelb2 v5, \src0, \src2, \src4, \src6 calc_epelb v6, \src1, \src3, \src5, \src7 @@ -1468,12 +1454,6 @@ endfunc .macro epel_v48_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11 ld1 {\src9\().16b, \src10\().16b, \src11\().16b}, [x1], x2 - movi v4.8h, #0 - movi v5.8h, #0 - movi v6.8h, #0 - movi v7.8h, #0 - movi v28.8h, #0 - movi v29.8h, #0 calc_epelb v4, \src0, \src3, \src6, \src9 calc_epelb2 v5, \src0, \src3, \src6, \src9 calc_epelb v6, \src1, \src4, \src7, \src10 @@ -1498,14 +1478,6 @@ endfunc .macro epel_v64_step src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10, src11, src12, src13, src14, src15 ld1 {\src12\().16b-\src15\().16b}, [x1], x2 - movi v4.8h, #0 - movi v5.8h, #0 - movi v6.8h, #0 - movi v7.8h, #0 - movi v8.8h, #0 - movi v9.8h, #0 - movi v10.8h, #0 - movi v11.8h, #0 calc_epelb v4, \src0, \src4, \src8, \src12 calc_epelb2 v5, \src0, \src4, \src8, \src12 calc_epelb v6, \src1, \src5, \src9, \src13 -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
