Commit fbd95be8 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Move ARM NEON optimizations to arm_neon/

parent b62a28b2
...@@ -1526,16 +1526,22 @@ AC_ARG_ENABLE(neon, ...@@ -1526,16 +1526,22 @@ AC_ARG_ENABLE(neon,
]) ])
AS_IF([test "${enable_neon}" != "no"], [ AS_IF([test "${enable_neon}" != "no"], [
AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [ AC_CACHE_CHECK([if $CC groks NEON inline assembly], [ac_cv_neon_inline], [
CFLAGS="${CFLAGS_save} -mfpu=neon"
AC_COMPILE_IFELSE([ AC_COMPILE_IFELSE([
AC_LANG_PROGRAM(,[[asm volatile("vqmovun.s64 d0, q1":::"d0");]]) 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" 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, AC_ARG_ENABLE(altivec,
[ --disable-altivec disable AltiVec optimizations (default auto)],, [ [ --disable-altivec disable AltiVec optimizations (default auto)],, [
...@@ -5190,6 +5196,7 @@ AC_CONFIG_FILES([ ...@@ -5190,6 +5196,7 @@ AC_CONFIG_FILES([
modules/3dnow/Makefile modules/3dnow/Makefile
modules/sse2/Makefile modules/sse2/Makefile
modules/altivec/Makefile modules/altivec/Makefile
modules/arm_neon/Makefile
]) ])
dnl Generate makefiles dnl Generate makefiles
......
...@@ -26,6 +26,7 @@ EXTRA_SUBDIRS = \ ...@@ -26,6 +26,7 @@ EXTRA_SUBDIRS = \
sse2 \ sse2 \
3dnow \ 3dnow \
altivec \ altivec \
arm_neon \
$(NULL) $(NULL)
SUBDIRS = $(BASE_SUBDIRS) SUBDIRS = $(BASE_SUBDIRS)
...@@ -48,6 +49,9 @@ endif ...@@ -48,6 +49,9 @@ endif
if HAVE_ALTIVEC if HAVE_ALTIVEC
SUBDIRS += altivec SUBDIRS += altivec
endif endif
if HAVE_ARM_NEON
SUBDIRS += arm_neon
endif
dist_noinst_SCRIPTS = genmf list.sh dist_noinst_SCRIPTS = genmf list.sh
dist_noinst_DATA = LIST dist_noinst_DATA = LIST
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)
/***************************************************************************** /*****************************************************************************
* arm_neon.c: NEON assembly optimized audio conversions * audio_format.c: NEON assembly optimized audio conversions
***************************************************************************** *****************************************************************************
* Copyright (C) 2009 Rémi Denis-Courmont * Copyright (C) 2009 Rémi Denis-Courmont
* *
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#include <vlc_plugin.h> #include <vlc_plugin.h>
#include <vlc_aout.h> #include <vlc_aout.h>
#include <vlc_filter.h> #include <vlc_filter.h>
#include <vlc_cpu.h>
#include <assert.h> #include <assert.h>
...@@ -36,7 +35,6 @@ vlc_module_begin () ...@@ -36,7 +35,6 @@ vlc_module_begin ()
set_description (N_("ARM NEON audio format conversions") ) set_description (N_("ARM NEON audio format conversions") )
set_capability ("audio filter", 20) set_capability ("audio filter", 20)
set_callbacks (Open, NULL) set_callbacks (Open, NULL)
add_requirement (NEON)
vlc_module_end () vlc_module_end ()
static block_t *Do_F32_S32 (filter_t *, block_t *); static block_t *Do_F32_S32 (filter_t *, block_t *);
......
/***************************************************************************** /*****************************************************************************
* 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 * Copyright (C) 2009 Rémi Denis-Courmont
* *
......
SOURCES_converter_fixed = fixed.c SOURCES_converter_fixed = fixed.c
SOURCES_converter_float = float.c SOURCES_converter_float = float.c
SOURCES_converter_neon = \
neon_s32_s16.S \
neon.c
SOURCES_a52tospdif = a52tospdif.c SOURCES_a52tospdif = a52tospdif.c
SOURCES_a52tofloat32 = a52tofloat32.c SOURCES_a52tofloat32 = a52tofloat32.c
SOURCES_dtstospdif = dtstospdif.c SOURCES_dtstospdif = dtstospdif.c
...@@ -15,6 +12,3 @@ libvlc_LTLIBRARIES += \ ...@@ -15,6 +12,3 @@ libvlc_LTLIBRARIES += \
libconverter_fixed_plugin.la \ libconverter_fixed_plugin.la \
libconverter_float_plugin.la \ libconverter_float_plugin.la \
$(NULL) $(NULL)
if HAVE_NEON
libvlc_LTLIBRARIES += libconverter_neon_plugin.la
endif
...@@ -36,13 +36,3 @@ libvlc_LTLIBRARIES += \ ...@@ -36,13 +36,3 @@ libvlc_LTLIBRARIES += \
libi420_rgb_plugin.la \ libi420_rgb_plugin.la \
libgrey_yuv_plugin.la \ libgrey_yuv_plugin.la \
$(NULL) $(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
...@@ -311,6 +311,8 @@ modules/access_output/rtmp.c ...@@ -311,6 +311,8 @@ modules/access_output/rtmp.c
modules/access_output/shout.c modules/access_output/shout.c
modules/access_output/udp.c modules/access_output/udp.c
modules/altivec/memcpy.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/dolby.c
modules/audio_filter/channel_mixer/headphone.c modules/audio_filter/channel_mixer/headphone.c
modules/audio_filter/channel_mixer/mono.c modules/audio_filter/channel_mixer/mono.c
...@@ -325,7 +327,6 @@ modules/audio_filter/converter/fixed.c ...@@ -325,7 +327,6 @@ modules/audio_filter/converter/fixed.c
modules/audio_filter/converter/float.c modules/audio_filter/converter/float.c
modules/audio_filter/converter/format.c modules/audio_filter/converter/format.c
modules/audio_filter/converter/mpgatofixed32.c modules/audio_filter/converter/mpgatofixed32.c
modules/audio_filter/converter/neon.c
modules/audio_filter/equalizer.c modules/audio_filter/equalizer.c
modules/audio_filter/equalizer_presets.h modules/audio_filter/equalizer_presets.h
modules/audio_filter/normvol.c modules/audio_filter/normvol.c
...@@ -1076,7 +1077,6 @@ modules/video_chroma/i420_yuy2.h ...@@ -1076,7 +1077,6 @@ modules/video_chroma/i420_yuy2.h
modules/video_chroma/i422_i420.c modules/video_chroma/i422_i420.c
modules/video_chroma/i422_yuy2.c modules/video_chroma/i422_yuy2.c
modules/video_chroma/i422_yuy2.h modules/video_chroma/i422_yuy2.h
modules/video_chroma/neon.c
modules/video_chroma/yuy2_i420.c modules/video_chroma/yuy2_i420.c
modules/video_chroma/yuy2_i422.c modules/video_chroma/yuy2_i422.c
modules/video_filter/adjust.c modules/video_filter/adjust.c
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment