[opus] [Aarch64 v2 00/18] Patches to enable Aarch64 (version 2)

Jonathan Lennox jonathan at vidyo.com
Fri Nov 20 20:02:52 PST 2015


As promised, here's a re-send of all my Aarch64 patches, following
comments by John Ridges.

Note that they actually affect more than just Aarch64 -- other than
the ones specifically guarded by AARCH64_NEON defines, the Neon
intrinsics all also apply on armv7; and the OPUS_FAST_INT64 patches
apply on any 64-bit machine.

The patches should largely be independent and independently useful,
other than obvious infrastructure setups.

Jonathan Lennox (18):
  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.
  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.
  Enable intrinsics by default.
  Clean up some intrinsics-related wording in configure.
  Move OPUS_FAST_INT64 definition to celt/arch.h.
  Add OPUS_FAST_INT64 flavors of celt/fixed_generic.h macros.
  Explicitly cast results of silk OPUS_FAST_INT64 macros back to
    opus_int32.
  Add OPUS_FAST_INT64 definition of silk_SMULWT.
  Clean up formatting of configure output for ARM intrinsics detection.
  Add configure check for Aarch64-specific Neon intrinsics.
  Add Aarch64 intrinsics for saturated add/subtract.
  Add Aarch64 intrinsic for SIG2WORD16.

 Makefile.am                    |   9 +--
 celt/arch.h                    |   9 ++-
 celt/arm/arm_celt_map.c        |  22 ++++++-
 celt/arm/celt_neon_intr.c      |  61 ++++++++++++++++++-
 celt/arm/fixed_arm64.h         |  35 +++++++++++
 celt/arm/pitch_arm.h           |  62 +++++++++++++++++++-
 celt/fixed_generic.h           |  16 +++++
 celt/pitch.h                   |  20 -------
 celt_headers.mk                |   1 +
 configure.ac                   |  41 +++++++++----
 silk/NSQ.c                     |  55 +++++------------
 silk/NSQ.h                     |  97 ++++++++++++++++++++++++++++++
 silk/NSQ_del_dec.c             |  37 +++++-------
 silk/arm/NSQ_neon.c            | 130 +++++++++++++++++++++++++++++++++++++++++
 silk/arm/NSQ_neon.h            | 101 ++++++++++++++++++++++++++++++++
 silk/arm/macros_arm64.h        |  39 +++++++++++++
 silk/macros.h                  |  22 ++++---
 silk/mips/NSQ_del_dec_mipsr1.h |   3 +-
 silk/x86/NSQ_sse.c             |   2 +-
 silk/x86/main_sse.h            |   3 +-
 silk_headers.mk                |   3 +
 silk_sources.mk                |   2 +
 22 files changed, 655 insertions(+), 115 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/macros_arm64.h

-- 
2.4.9 (Apple Git-60)



More information about the opus mailing list