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]

Reply via email to