From f33f728470434a9981a53d7560d67657b93d1e26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Sat, 31 Mar 2018 21:54:32 +0300 Subject: [PATCH] arm: swscale: Only compile the rgb2yuv asm if .dn aliases are supported MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vanilla clang supports altmacro since clang 5.0, and thus doesn't require gas-preprocessor for building the arm assembly any longer. However, the built-in assembler doesn't support .dn directives. This readds checks that were removed in d7320ca3ed10f0d, when the last usage of .dn directives within libav were removed. Alternatively, the assembly could be rewritten to not use the .dn directive, making it available to clang users. Signed-off-by: Martin Storsjö --- configure | 2 ++ libswscale/arm/rgb2yuv_neon_16.S | 3 +++ libswscale/arm/rgb2yuv_neon_32.S | 3 +++ libswscale/arm/swscale_unscaled.c | 6 ++++++ 4 files changed, 14 insertions(+) diff --git a/configure b/configure index 99570a1415..81fb3fbf75 100755 --- a/configure +++ b/configure @@ -2149,6 +2149,7 @@ SYSTEM_LIBRARIES=" TOOLCHAIN_FEATURES=" as_arch_directive + as_dn_directive as_fpu_directive as_func as_object_arch @@ -5530,6 +5531,7 @@ EOF check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)' check_as as_arch_directive ".arch armv7-a" + check_as as_dn_directive "ra .dn d0.i16" check_as as_fpu_directive ".fpu neon" # llvm's integrated assembler supports .object_arch from llvm 3.5 diff --git a/libswscale/arm/rgb2yuv_neon_16.S b/libswscale/arm/rgb2yuv_neon_16.S index 601bc9a9b7..ad7e679ca9 100644 --- a/libswscale/arm/rgb2yuv_neon_16.S +++ b/libswscale/arm/rgb2yuv_neon_16.S @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" +#if HAVE_AS_DN_DIRECTIVE #include "rgb2yuv_neon_common.S" /* downsampled R16G16B16 x8 */ @@ -78,3 +80,4 @@ alias_qw c8x8x2, q10 .endm loop_420sp rgbx, nv12, init, kernel_420_16x2, 16 +#endif diff --git a/libswscale/arm/rgb2yuv_neon_32.S b/libswscale/arm/rgb2yuv_neon_32.S index f51a5f149f..4fd0f64a09 100644 --- a/libswscale/arm/rgb2yuv_neon_32.S +++ b/libswscale/arm/rgb2yuv_neon_32.S @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" +#if HAVE_AS_DN_DIRECTIVE #include "rgb2yuv_neon_common.S" /* downsampled R16G16B16 x8 */ @@ -117,3 +119,4 @@ alias_qw c8x8x2, q10 loop_420sp rgbx, nv12, init, kernel_420_16x2, 32 +#endif diff --git a/libswscale/arm/swscale_unscaled.c b/libswscale/arm/swscale_unscaled.c index e1597ab42d..e41f294eac 100644 --- a/libswscale/arm/swscale_unscaled.c +++ b/libswscale/arm/swscale_unscaled.c @@ -23,6 +23,7 @@ #include "libswscale/swscale_internal.h" #include "libavutil/arm/cpu.h" +#if HAVE_AS_DN_DIRECTIVE extern void rgbx_to_nv12_neon_32(const uint8_t *src, uint8_t *y, uint8_t *chroma, int width, int height, int y_stride, int c_stride, int src_stride, @@ -178,3 +179,8 @@ void ff_get_unscaled_swscale_arm(SwsContext *c) if (have_neon(cpu_flags)) get_unscaled_swscale_neon(c); } +#else +void ff_get_unscaled_swscale_arm(SwsContext *c) +{ +} +#endif