Best IPP replacement when porting to ARM

Now that Apple has revealed to move to ARM architecture in near future we see the need of porting some of our signal processing code that heavily relies on Intel IPP for vector math operations and FFT to ARM.

Luckily, most of our IPP based code is abstracted in wrapper classes, so reworking those for ARM with a different library under the hood should be quite straightforward. But what is the best library to chose in 2020?

Operations needed are:

  • FFT
  • (Complex) Vector multiplication, division, addition, subtraction
  • Vector logarithms, trigonometry, sqrt
  • Complex vector math (abs, extracting real, imag, phase)

With Mac OS as the only target in mind, Apple Accelerate seems like a good choice and I know that parts of it are already wrapped in the juce FloatVectorOperations. But as our plugins target Windows as well and I wouldn’t be too surprised if ARM based Windows computers could gain market share in future and embedded linux systems running on ARM might also be interesting for us in future, it would be great to have a ARM vector math library that works on all platforms. I worked with NE10 some years ago but looking at the repo, it seems like there is no active development anymore.

So, are there any other cross platform libraries that are heavily optimized to use the ARM-NEON instruction set for vector math and signal processing suitable for audio plugins?