From a4877f1ec11e0327684eda37b15bc1ccb16f9ace Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Fri, 13 Oct 2023 11:56:30 +0300 Subject: [PATCH] aarch64: Only enable extensions in the intended files/regions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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ö --- 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