[opus] [Aarch64 00/11] Patches to enable Aarch64 (arm64) optimizations, rebased to current master.

Jonathan Lennox jonathan at vidyo.com
Fri Nov 6 18:05:22 PST 2015


Here are my aarch64 patches rebased to the current tip of Opus master.

They're largely the same as my previous patch set, with the addition
of the final one (the Neon fixed-point implementation of
xcorr_kernel). This replaces Viswanath's Neon fixed-point
celt_pitch_xcorr, since xcorr_kernel is used in celt_fir and celt_iir
as well.

These have been tested for correctness under qemu (including running
the test vectors), but not yet performance tested on a live aarch64
CPU (which will probably be an iPhone).  I should be able to do this
Monday or Tuesday.

Jonathan Lennox (11):
  Move ARM-specific macro overrides to arm-specific file.
  Reorganize ARM CPU #ifdefs.
  Rename OPUS_ARM_NEON_INTR AM_CONDITIONAL as HAVE_ARM_NEON_INTR, for
    consistency with x86.
  Enable Neon intrinsics for aarch64.
  Autoconf changes for aarch64 inline assembly support.
  Add aarch64 assembly for Celt fixed-point math.
  Add aarch64 assembly for Silk math.
  Add Neon intrinsics for Silk noise shape quantization.
  Add Neon intrinsics for Silk noise shape feedback loop.
  Apply Neon short prediction optimization to
    silk_noise_shape_quantizer_del_dec.
  Add Neon fixed-point implementation of xcorr_kernel.

 Makefile.am                    |   9 +--
 celt/arch.h                    |   2 +
 celt/arm/arm_celt_map.c        |  22 ++++++-
 celt/arm/celt_neon_intr.c      |  61 ++++++++++++++++++-
 celt/arm/fixed_arm64.h         |  75 ++++++++++++++++++++++++
 celt/arm/pitch_arm.h           |  62 +++++++++++++++++++-
 celt/pitch.h                   |  20 -------
 celt_headers.mk                |   1 +
 configure.ac                   |  23 +++++++-
 silk/NSQ.c                     |  55 +++++------------
 silk/NSQ.h                     |  97 ++++++++++++++++++++++++++++++
 silk/NSQ_del_dec.c             |  37 +++++-------
 silk/SigProc_FIX.h             |   4 ++
 silk/arm/NSQ_neon.c            | 130 +++++++++++++++++++++++++++++++++++++++++
 silk/arm/NSQ_neon.h            | 101 ++++++++++++++++++++++++++++++++
 silk/arm/SigProc_FIX_arm64.h   |  46 +++++++++++++++
 silk/arm/macros_arm64.h        |  66 +++++++++++++++++++++
 silk/macros.h                  |   4 ++
 silk/mips/NSQ_del_dec_mipsr1.h |   3 +-
 silk/x86/NSQ_sse.c             |   2 +-
 silk/x86/main_sse.h            |   3 +-
 silk_headers.mk                |   4 ++
 silk_sources.mk                |   2 +
 23 files changed, 732 insertions(+), 97 deletions(-)
 create mode 100644 celt/arm/fixed_arm64.h
 create mode 100644 silk/NSQ.h
 create mode 100644 silk/arm/NSQ_neon.c
 create mode 100644 silk/arm/NSQ_neon.h
 create mode 100644 silk/arm/SigProc_FIX_arm64.h
 create mode 100644 silk/arm/macros_arm64.h

-- 
2.4.9 (Apple Git-60)



More information about the opus mailing list