diff mbox series

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

Message ID 20231018120534.2720420-2-martin@martin.st
State Accepted
Headers show
Series [FFmpeg-devel,1/2] aarch64: Stop using asm/hwcap.h for the HWCAP_* detection | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished

Commit Message

Martin Storsjö Oct. 18, 2023, 12:05 p.m. UTC
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(-)

Comments

Martin Storsjö Oct. 24, 2023, 12:06 p.m. UTC | #1
On Wed, 18 Oct 2023, Martin Storsjö wrote:

> 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(-)

Pushed.

// Martin
diff mbox series

Patch

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