[FFmpeg-cvslog] aarch64: Only enable extensions in the intended files/regions

Martin Storsjö git at videolan.org
Tue Oct 24 15:06:48 EEST 2023


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Fri Oct 13 11:56:30 2023 +0300| [a4877f1ec11e0327684eda37b15bc1ccb16f9ace] | committer: Martin Storsjö

aarch64: Only enable extensions in the intended files/regions

This eases actual development of the assembly functions, by only
allowing extension instructions within the sections that explicitly
enable them, instead of having all extensions enabled everywhere.

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

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

 libavcodec/aarch64/hevcdsp_epel_neon.S |  3 ++-
 libavcodec/aarch64/hevcdsp_qpel_neon.S |  2 ++
 libavutil/aarch64/asm.S                | 16 ++++++++++++++--
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/libavcodec/aarch64/hevcdsp_epel_neon.S b/libavcodec/aarch64/hevcdsp_epel_neon.S
index edaf39ed92..e398e6ac9d 100644
--- a/libavcodec/aarch64/hevcdsp_epel_neon.S
+++ b/libavcodec/aarch64/hevcdsp_epel_neon.S
@@ -339,6 +339,7 @@ function ff_hevc_put_hevc_epel_uni_v64_8_neon, export=1
 endfunc
 
 #if HAVE_I8MM
+ENABLE_I8MM
 
 .macro EPEL_H_HEADER
         movrel          x5, epel_filters
@@ -1963,7 +1964,7 @@ function ff_hevc_put_hevc_epel_uni_w_hv64_8_neon_i8mm, export=1
         ret
 endfunc
 
-
+DISABLE_I8MM
 #endif
 
 
diff --git a/libavcodec/aarch64/hevcdsp_qpel_neon.S b/libavcodec/aarch64/hevcdsp_qpel_neon.S
index f3f24ab8b0..95b96349ef 100644
--- a/libavcodec/aarch64/hevcdsp_qpel_neon.S
+++ b/libavcodec/aarch64/hevcdsp_qpel_neon.S
@@ -1558,6 +1558,7 @@ function ff_hevc_put_hevc_qpel_uni_w_v64_8_neon, export=1
 endfunc
 
 #if HAVE_I8MM
+ENABLE_I8MM
 
 .macro calc_all2
         calc            v30, v31, v16, v18, v20, v22, v24, v26, v28, v30, v17, v19, v21, v23, v25, v27, v29, v31
@@ -3395,4 +3396,5 @@ function ff_hevc_put_hevc_qpel_uni_w_hv64_8_neon_i8mm, export=1
         ret
 endfunc
 
+DISABLE_I8MM
 #endif // HAVE_I8MM
diff --git a/libavutil/aarch64/asm.S b/libavutil/aarch64/asm.S
index 8589cf74fc..1840f9fb01 100644
--- a/libavutil/aarch64/asm.S
+++ b/libavutil/aarch64/asm.S
@@ -41,12 +41,24 @@
 #endif
 
 #if HAVE_AS_ARCHEXT_DOTPROD_DIRECTIVE
-        .arch_extension dotprod
+#define ENABLE_DOTPROD  .arch_extension dotprod
+#define DISABLE_DOTPROD .arch_extension nodotprod
+#else
+#define ENABLE_DOTPROD
+#define DISABLE_DOTPROD
 #endif
+
 #if HAVE_AS_ARCHEXT_I8MM_DIRECTIVE
-        .arch_extension i8mm
+#define ENABLE_I8MM  .arch_extension i8mm
+#define DISABLE_I8MM .arch_extension noi8mm
+#else
+#define ENABLE_I8MM
+#define DISABLE_I8MM
 #endif
 
+DISABLE_DOTPROD
+DISABLE_I8MM
+
 
 /* Support macros for
  *   - Armv8.3-A Pointer Authentication and



More information about the ffmpeg-cvslog mailing list