]> git.sesse.net Git - ffmpeg/commitdiff
arm: swscale: Only compile the rgb2yuv asm if .dn aliases are supported
authorMartin Storsjö <martin@martin.st>
Sat, 31 Mar 2018 18:54:32 +0000 (21:54 +0300)
committerMartin Storsjö <martin@martin.st>
Sat, 31 Mar 2018 18:54:56 +0000 (21:54 +0300)
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ö <martin@martin.st>
configure
libswscale/arm/rgb2yuv_neon_16.S
libswscale/arm/rgb2yuv_neon_32.S
libswscale/arm/swscale_unscaled.c

index 99570a1415c11beb3b8f43c558bdbe725b52877f..81fb3fbf75f06f6fb8843e576b2a209dca2b6a58 100755 (executable)
--- 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
index 601bc9a9b7c42fb5af0f8cf9628b2f94a129e5a1..ad7e679ca910d25c202eb120fadc2437e68f6c4b 100644 (file)
@@ -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
index f51a5f149f046e8f53e106a70612488614de7a8e..4fd0f64a09e97beef3d07c8249d90a209ed6d6eb 100644 (file)
@@ -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
index e1597ab42dfcd9955950566ec601db20ba19cec7..e41f294eacc10c18a6e49c8da7ba6488e50aa2e2 100644 (file)
@@ -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