armv7(float): Optimize encode usecase using NE10 library
authorViswanath Puttagunta <viswanath.puttagunta@linaro.org>
Fri, 15 May 2015 17:42:19 +0000 (12:42 -0500)
committerJean-Marc Valin <jmvalin@jmvalin.ca>
Wed, 7 Oct 2015 22:09:20 +0000 (18:09 -0400)
commitf48abe8308ba7a67e443ad0911e06d62fd47ba91
treea231446a0bc212ae891524881580f9b5ffd90798
parent0fe514352568530d4bd18a6686e6878417e6cf41
armv7(float): Optimize encode usecase using NE10 library

Optimize opus encode (float only) usecase using ARM NE10
library. Mainly effects opus_fft and ctl_mdct_forward
and related functions.

This optimization can be used for ARM CPUs that have NEON
VFP unit. This patch only enables optimizations for ARMv7.

Official ARM NE10 library page available at
http://projectne10.github.io/Ne10/

To enable this optimization, use
--enable-intrinsics --with-NE10=<install_prefix>
or
--enable-intrinsics --with-NE10-libraries=<NE10_lib_dir> --with-NE10-includes=<NE10_includes_dir>

Compile time checks made during configure process to make sure
optimization option available only when compiler supports NEON
instrinsics.

Runtime checks made to make sure optimized functions only called
on appropriate hardware.

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
31 files changed:
Makefile.am
celt/arm/arm_celt_map.c
celt/arm/celt_ne10_fft.c [new file with mode: 0644]
celt/arm/celt_ne10_mdct.c [new file with mode: 0644]
celt/arm/celt_neon_intr.c
celt/arm/fft_arm.h [new file with mode: 0644]
celt/arm/mdct_arm.h [new file with mode: 0644]
celt/celt_encoder.c
celt/dump_modes/Makefile
celt/dump_modes/dump_modes.c
celt/dump_modes/dump_modes_arch.h [new file with mode: 0644]
celt/dump_modes/dump_modes_arm_ne10.c [new file with mode: 0644]
celt/kiss_fft.c
celt/kiss_fft.h
celt/mdct.c
celt/mdct.h
celt/modes.c
celt/pitch.h
celt/static_modes_float.h
celt/static_modes_float_arm_ne10.h [new file with mode: 0644]
celt/tests/test_unit_dft.c
celt/tests/test_unit_mathops.c
celt/tests/test_unit_mdct.c
celt/tests/test_unit_rotation.c
celt_headers.mk
celt_sources.mk
configure.ac
src/analysis.c
src/analysis.h
src/opus_encoder.c
src/opus_multistream_encoder.c