mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-15 08:56:34 -05:00
core: Add ARM NEON optimized sample conversion code
final: * includes some minor style fixes and build-time changes to allow building a single binary for neon and non-neon systems v4: * fix for sample length < 4 v3: * convert from intrinsics to inline assembly v2: * load and store data with vld1/vld1q and vst1/vst1q, resp., to work around alignment issues of compiler-generated vldmia instruction * remove redundant check for NEON flags Ubuntu/Linaro gcc 4.6.3 arm-linux-gnueabi-gcc -O2 -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon runtime on beagle-xm: D: [pulseaudio] sconv_neon.c: checking NEON sconv_s16le_from_float I: [pulseaudio] sconv_neon.c: NEON: 3754 usec. I: [pulseaudio] sconv_neon.c: ref: 58594 usec. D: [pulseaudio] sconv_neon.c: checking NEON sconv_s16le_to_float I: [pulseaudio] sconv_neon.c: NEON: 1831 usec. I: [pulseaudio] sconv_neon.c: ref: 10528 usec. I: [pulseaudio] sconv_neon.c: Initialising ARM NEON optimized conversions. conversion may be off by one for some samples due to rounding issues
This commit is contained in:
parent
4171df3019
commit
1319c4533a
6 changed files with 193 additions and 1 deletions
28
configure.ac
28
configure.ac
|
|
@ -317,6 +317,34 @@ case $host in
|
|||
;;
|
||||
esac
|
||||
|
||||
#### NEON optimisations ####
|
||||
AC_ARG_ENABLE([neon-opt],
|
||||
AS_HELP_STRING([--enable-neon-opt], [Enable NEON optimisations on ARM CPUs that support it]))
|
||||
|
||||
AS_IF([test "x$enable_neon_opt" != "xno"],
|
||||
[save_CFLAGS="$CFLAGS"; CFLAGS="$CFLAGS -mfpu=neon"
|
||||
AC_COMPILE_IFELSE(
|
||||
AC_LANG_PROGRAM([], []),
|
||||
[
|
||||
HAVE_NEON=1
|
||||
NEON_CFLAGS="-mfpu=neon"
|
||||
],
|
||||
[
|
||||
HAVE_NEON=0
|
||||
NEON_CFLAGS=
|
||||
])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
],
|
||||
[HAVE_NEON=0])
|
||||
|
||||
AS_IF([test "x$enable_neon_opt" = "xyes" && test "x$HAVE_NEON" = "x0"],
|
||||
[AC_MSG_ERROR([*** Compiler does not support -mfpu=neon])])
|
||||
|
||||
AC_SUBST(HAVE_NEON)
|
||||
AC_SUBST(NEON_CFLAGS)
|
||||
AM_CONDITIONAL([HAVE_NEON], [test "x$HAVE_NEON" = x1])
|
||||
AS_IF([test "x$HAVE_NEON" = "x1"], AC_DEFINE([HAVE_NEON], 1, [Have NEON support?]))
|
||||
|
||||
|
||||
#### libtool stuff ####
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue