[FFmpeg-cvslog] aarch64: vp9mc: Calculate less unused data in the 4 pixel wide horizontal filter

Martin Storsjö git at videolan.org
Sat Mar 11 13:53:22 EET 2017


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Sat Dec 17 13:14:38 2016 +0200| [045e33ae3fee74e39b1321dddf727eacb1ecf541] | committer: Martin Storsjö

aarch64: vp9mc: Calculate less unused data in the 4 pixel wide horizontal filter

No measured speedup on a Cortex A53, but other cores might benefit.

This is cherrypicked from libav commit
388e0d2515bc6bbc9d0c9af1d230bd16cf945fe7.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=045e33ae3fee74e39b1321dddf727eacb1ecf541
---

 libavcodec/aarch64/vp9mc_neon.S | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/libavcodec/aarch64/vp9mc_neon.S b/libavcodec/aarch64/vp9mc_neon.S
index 9403911..82a0f53 100644
--- a/libavcodec/aarch64/vp9mc_neon.S
+++ b/libavcodec/aarch64/vp9mc_neon.S
@@ -202,9 +202,12 @@ endfunc
         ext             v23.16b, \src5\().16b, \src6\().16b, #(2*\offset)
         mla             \dst2\().8h, v21.8h, v0.h[\offset]
         mla             \dst4\().8h, v23.8h, v0.h[\offset]
-.else
+.elseif \size == 8
         mla             \dst1\().8h, v20.8h, v0.h[\offset]
         mla             \dst3\().8h, v22.8h, v0.h[\offset]
+.else
+        mla             \dst1\().4h, v20.4h, v0.h[\offset]
+        mla             \dst3\().4h, v22.4h, v0.h[\offset]
 .endif
 .endm
 // The same as above, but don't accumulate straight into the
@@ -219,16 +222,24 @@ endfunc
         ext             v23.16b, \src5\().16b, \src6\().16b, #(2*\offset)
         mul             v21.8h, v21.8h, v0.h[\offset]
         mul             v23.8h, v23.8h, v0.h[\offset]
-.else
+.elseif \size == 8
         mul             v20.8h, v20.8h, v0.h[\offset]
         mul             v22.8h, v22.8h, v0.h[\offset]
+.else
+        mul             v20.4h, v20.4h, v0.h[\offset]
+        mul             v22.4h, v22.4h, v0.h[\offset]
 .endif
+.if \size == 4
+        sqadd           \dst1\().4h, \dst1\().4h, v20.4h
+        sqadd           \dst3\().4h, \dst3\().4h, v22.4h
+.else
         sqadd           \dst1\().8h, \dst1\().8h, v20.8h
         sqadd           \dst3\().8h, \dst3\().8h, v22.8h
 .if \size >= 16
         sqadd           \dst2\().8h, \dst2\().8h, v21.8h
         sqadd           \dst4\().8h, \dst4\().8h, v23.8h
 .endif
+.endif
 .endm
 
 



More information about the ffmpeg-cvslog mailing list