]> git.sesse.net Git - vlc/commitdiff
Move ARM NEON optimizations to arm_neon/
authorRémi Denis-Courmont <remi@remlab.net>
Sun, 10 Jan 2010 15:47:34 +0000 (17:47 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sun, 10 Jan 2010 16:13:11 +0000 (18:13 +0200)
configure.ac
modules/Makefile.am
modules/arm_neon/.gitignore [new file with mode: 0644]
modules/arm_neon/Modules.am [new file with mode: 0644]
modules/arm_neon/audio_format.c [moved from modules/audio_filter/converter/neon.c with 97% similarity]
modules/arm_neon/i420_yuy2.S [moved from modules/video_chroma/i420_yuyv_neon.S with 100% similarity]
modules/arm_neon/i420_yuy2.c [moved from modules/video_chroma/neon.c with 97% similarity]
modules/arm_neon/s32_s16.S [moved from modules/audio_filter/converter/neon_s32_s16.S with 100% similarity]
modules/audio_filter/converter/Modules.am
modules/video_chroma/Modules.am
po/POTFILES.in

index 4e7038201b9e7dee8ade8a242b27e9fabedca3de..53f95e72f343a3b60eb7657172cc27e0de29c6ef 100644 (file)
@@ -1526,16 +1526,22 @@ AC_ARG_ENABLE(neon,
 ])
 AS_IF([test "${enable_neon}" != "no"], [
   AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
+    CFLAGS="${CFLAGS_save} -mfpu=neon"
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM(,[[asm volatile("vqmovun.s64 d0, q1":::"d0");]])
     ], [
-      ac_cv_neon_inline="yes"
+      ac_cv_neon_inline="-mfpu=neon"
     ], [
       ac_cv_neon_inline="no"
     ])
   ])
+  ARM_NEON_CFLAGS="$ac_cv_neon_inline"
+], [
+  ac_cv_neon_inline="no"
 ])
-AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_neon_inline}" = "yes"])
+AC_SUBST(ARM_NEON_CFLAGS)
+AM_CONDITIONAL(HAVE_ARM_NEON, [test "${ac_cv_neon_inline}" != "no"])
+
 
 AC_ARG_ENABLE(altivec,
 [  --disable-altivec       disable AltiVec optimizations (default auto)],, [
@@ -5190,6 +5196,7 @@ AC_CONFIG_FILES([
   modules/3dnow/Makefile
   modules/sse2/Makefile
   modules/altivec/Makefile
+  modules/arm_neon/Makefile
 ])
 
 dnl Generate makefiles
index 9476872729dc1251d9922be6fe33f58fea5cdcfb..e533432bdc37e8de1aee128596ffff91fd67396e 100644 (file)
@@ -26,6 +26,7 @@ EXTRA_SUBDIRS = \
        sse2 \
        3dnow \
        altivec \
+       arm_neon \
        $(NULL)
 
 SUBDIRS = $(BASE_SUBDIRS)
@@ -48,6 +49,9 @@ endif
 if HAVE_ALTIVEC
 SUBDIRS += altivec
 endif
+if HAVE_ARM_NEON
+SUBDIRS += arm_neon
+endif
 
 dist_noinst_SCRIPTS = genmf list.sh
 dist_noinst_DATA = LIST
diff --git a/modules/arm_neon/.gitignore b/modules/arm_neon/.gitignore
new file mode 100644 (file)
index 0000000..08a6d72
--- /dev/null
@@ -0,0 +1 @@
+Makefile.am
diff --git a/modules/arm_neon/Modules.am b/modules/arm_neon/Modules.am
new file mode 100644 (file)
index 0000000..1ba5c5d
--- /dev/null
@@ -0,0 +1,20 @@
+AM_CFLAGS += $(ARM_NEON_CFLAGS)
+
+libaudio_format_neon_plugin_la_SOURCES = \
+       s32_s16.S \
+       audio_format.c
+libaudio_format_neon_plugin_la_CFLAGS = $(AM_CFLAGS)
+libaudio_format_neon_plugin_la_LIBADD = $(AM_LIBADD)
+libaudio_format_neon_plugin_la_DEPENDENCIES =
+
+libi420_yuy2_neon_plugin_la_SOURCES = \
+       i420_yuy2.S \
+       i420_yuy2.c
+libi420_yuy2_neon_plugin_la_CFLAGS = $(AM_CFLAGS)
+libi420_yuy2_neon_plugin_la_LIBADD = $(AM_LIBADD)
+libi420_yuy2_neon_plugin_la_DEPENDENCIES =
+
+libvlc_LTLIBRARIES += \
+       libaudio_format_neon_plugin.la \
+       libi420_yuy2_neon_plugin.la \
+       $(NULL)
similarity index 97%
rename from modules/audio_filter/converter/neon.c
rename to modules/arm_neon/audio_format.c
index ce2441b8e18e7e0ab1a049ee776b7b6119420f89..94005a6e72c365c988ef6672a928567c0e56983a 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * arm_neon.c: NEON assembly optimized audio conversions
+ * audio_format.c: NEON assembly optimized audio conversions
  *****************************************************************************
  * Copyright (C) 2009 Rémi Denis-Courmont
  *
@@ -26,7 +26,6 @@
 #include <vlc_plugin.h>
 #include <vlc_aout.h>
 #include <vlc_filter.h>
-#include <vlc_cpu.h>
 
 #include <assert.h>
 
@@ -36,7 +35,6 @@ vlc_module_begin ()
     set_description (N_("ARM NEON audio format conversions") )
     set_capability ("audio filter", 20)
     set_callbacks (Open, NULL)
-    add_requirement (NEON)
 vlc_module_end ()
 
 static block_t *Do_F32_S32 (filter_t *, block_t *);
similarity index 97%
rename from modules/video_chroma/neon.c
rename to modules/arm_neon/i420_yuy2.c
index 625ae7a1f33722d813e6aeb4732ea94b22dcd173..ae5d60be73915a7927f964e056bc1e5bdcfaaaa3 100644 (file)
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * neon.c : ARM NEONv1 chroma conversion module for VLC
+ * i420_yuy2.c : ARM NEONv1 YUV 4:2:0 to YUV :2:2 chroma conversion for VLC
  *****************************************************************************
  * Copyright (C) 2009 Rémi Denis-Courmont
  *
index 1f0f611e14be3e52714e08ba4c513bc1b4d1c31f..5fc32634067053f31d9871677a6bbbf16cd11cab 100644 (file)
@@ -1,8 +1,5 @@
 SOURCES_converter_fixed = fixed.c
 SOURCES_converter_float = float.c
-SOURCES_converter_neon = \
-       neon_s32_s16.S \
-       neon.c
 SOURCES_a52tospdif = a52tospdif.c
 SOURCES_a52tofloat32 = a52tofloat32.c
 SOURCES_dtstospdif = dtstospdif.c
@@ -15,6 +12,3 @@ libvlc_LTLIBRARIES += \
        libconverter_fixed_plugin.la \
        libconverter_float_plugin.la \
        $(NULL)
-if HAVE_NEON
-libvlc_LTLIBRARIES += libconverter_neon_plugin.la
-endif
index 3e01f16c931217f8a8d42c13d3a8d73ded1bb590..b90632de484d6d1fcecd39b6c764bcfadb9d9b3d 100644 (file)
@@ -36,13 +36,3 @@ libvlc_LTLIBRARIES += \
        libi420_rgb_plugin.la \
        libgrey_yuv_plugin.la \
        $(NULL)
-
-libchroma_neon_plugin_la_SOURCES = \
-       i420_yuyv_neon.S \
-       neon.c
-libchroma_neon_plugin_la_CFLAGS = $(AM_CFLAGS)
-libchroma_neon_plugin_la_LIBADD = $(AM_LIBADD)
-libchroma_neon_plugin_la_DEPENDENCIES =
-if HAVE_NEON
-libvlc_LTLIBRARIES += libchroma_neon_plugin.la
-endif
index 31c1ccb7c9c111d13c6fc69d3835ca6ca3118f12..a8b9fb24249c0051918ec6743b84ea1aa47849e7 100644 (file)
@@ -311,6 +311,8 @@ modules/access_output/rtmp.c
 modules/access_output/shout.c
 modules/access_output/udp.c
 modules/altivec/memcpy.c
+modules/arm_neon/audio_format.c
+modules/arm_neon/i420_yuy2.c
 modules/audio_filter/channel_mixer/dolby.c
 modules/audio_filter/channel_mixer/headphone.c
 modules/audio_filter/channel_mixer/mono.c
@@ -325,7 +327,6 @@ modules/audio_filter/converter/fixed.c
 modules/audio_filter/converter/float.c
 modules/audio_filter/converter/format.c
 modules/audio_filter/converter/mpgatofixed32.c
-modules/audio_filter/converter/neon.c
 modules/audio_filter/equalizer.c
 modules/audio_filter/equalizer_presets.h
 modules/audio_filter/normvol.c
@@ -1076,7 +1077,6 @@ modules/video_chroma/i420_yuy2.h
 modules/video_chroma/i422_i420.c
 modules/video_chroma/i422_yuy2.c
 modules/video_chroma/i422_yuy2.h
-modules/video_chroma/neon.c
 modules/video_chroma/yuy2_i420.c
 modules/video_chroma/yuy2_i422.c
 modules/video_filter/adjust.c