]> code.delx.au - pulseaudio/commit
core: Add ARM NEON optimized sample conversion code
authorPeter Meerwald <p.meerwald@bct-electronic.com>
Tue, 23 Oct 2012 15:54:57 +0000 (17:54 +0200)
committerArun Raghavan <arun.raghavan@collabora.co.uk>
Mon, 29 Oct 2012 07:19:37 +0000 (12:49 +0530)
commit1319c4533a7d3a2562907d043d238bfe3d51d335
treee8543c9fa64704764dbd873638a6184fd01f7d62
parent4171df301998a2de1fe386c7d72a4dc966c1ed7f
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
configure.ac
src/Makefile.am
src/pulsecore/cpu-arm.c
src/pulsecore/cpu-arm.h
src/pulsecore/sconv_neon.c [new file with mode: 0644]
src/tests/cpu-test.c