[FFmpeg-devel] [PATCH 2/2] aarch64: Only enable extensions in the intended files/regions

Martin Storsjö martin at martin.st
Wed Oct 18 15:05:34 EEST 2023


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.
---
 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 1212eae63d..e131b92a98 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
-- 
2.34.1



More information about the ffmpeg-devel mailing list