The Advanced SIMD extension (aka NEON or “MPE” Media Processing Engine) is a combined 64- and 128-bit single instruction multiple data (SIMD) instruction set that provides standardized acceleration for media and signal processing applications for ARM Cortex-A (ARMv7) processors and the goal of these instructions is similar to MMX, SSE, and 3DNow! extensions for x86 processors.
Starting early 2011, ARM has been working internally on a project codenamed Snappy to develop common functions accelerated by NEON. They have now released the first version of Snappy, now called the Ne10 library, which is available on GitHub at https://github.com/projectNe10/Ne10 .
The code has been developed in C and Assembler and tested on Ubuntu on ARM (Linaro). A Makefile is also included to build it for Android (AOSP). The current functions include vector and matrix operations accelerated by NEON instructions.
Since the library is open source, ARM hopes developers will make use of the Ne10 library in their open-source packages, add new functions and port the Ne10 libraries to other operating systems.
In the video below Rod Crawford, Principal Engineer at ARM, explains why they started the NE10 Project, what can be done with it, and what’s next for the project.
If you would like to contribute to the project, you can join the community at www.ProjectNe10.org.
If you are not familiar with NEON or just want to improve your skills, you can check the ARM NEON Tutorial in C and Assembler and/or read the 5 parts Coding for NEON on the ARM blog.
Finally, you may also want to see the performance improvement brought by NEON instructions on a real project (JPEG Decoding) by reading “Faster JPEG decoding on ARM with libjpeg-turbo and NEON Instructions” blog post.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
One Reply to “ARM Releases Ne10: An Open Source Library with NEON Optimized Functions”
it appears that the NE10 project is supported using GNU compiler , and 32 bit .
my compiler is llvm 188.8.131.52, is there another library that can work using llvm?
is there a way how to have it work in llvm , and 64bit aarch64?