Other meanings of ARM NEON
Computer architecture
ARM NEON is a SIMD instruction set extension for ARM processors that performs one operation on multiple data elements in parallel. Also called Advanced SIMD, it is used for workloads such as image processing, audio and video codecs, signal processing, machine-learning kernels, and scientific computation.
ARM NEON accelerates data-parallel computation by packing several scalar values into vector registers and applying one instruction to them together.1 A 128-bit register can hold sixteen 8-bit values, eight 16-bit values, four 32-bit values, or two 64-bit values, although the available operations depend on the element type and instruction form. Integer, floating-point, narrowing, widening, saturation, permutation, comparison, and multiply-accumulate instructions support common media and numerical algorithms. NEON is an extension of the ARM instruction-set architecture rather than a separate processor or programming language. Its central advantage is throughput: independent operations can be handled in parallel, reducing instruction count and often energy use when the algorithm has regular data flow.
NEON appears in different architectural forms across ARM generations, with the modern architectural name being Advanced SIMD.2 In AArch32, NEON uses 32 64-bit registers that can also be viewed as 16 128-bit registers, while AArch64 provides thirty-two 128-bit vector registers and integrates Advanced SIMD more closely with floating-point instructions. The instruction set supports lane-wise arithmetic, horizontal operations, table lookup, transposition, bit manipulation, and structured loads and stores. Programmers normally reach it through compiler auto-vectorization, architecture-specific intrinsics defined by the ARM C Language Extensions, or hand-written assembly.3 The same source can therefore have a scalar fallback and a NEON-optimized path selected at build time or during runtime feature detection.
NEON is most effective when computations repeat the same operation over contiguous or regularly arranged data. Image filters, color conversion, video codecs, digital audio, cryptography-related primitives, linear algebra, and scientific kernels are common examples; the Android NDK documents NEON as a principal optimization target for native ARM applications. Compilers can vectorize loops automatically, but alignment, aliasing, branching, reductions, and memory bandwidth may prevent or limit that transformation.5 Vector arithmetic also does not guarantee a speedup: packing and unpacking data, cache misses, instruction scheduling, and frequency or thermal constraints can outweigh the parallelism. Correct implementations must preserve numerical behavior, especially where floating-point reassociation or saturating integer arithmetic changes results.
NEON has several edge cases that matter to low-level developers. Its integer instructions include both modular arithmetic and saturating arithmetic, allowing multimedia code to clamp results without separate branches. Many operations accept an immediate lane or use rearrangement instructions, so efficient code may depend as much on data layout as on arithmetic throughput. In AArch64, Advanced SIMD and scalar floating-point instructions share the vector register file, while the newer Scalable Vector Extension is a distinct vector architecture rather than simply a wider NEON mode.2 Availability is also version-dependent: software targeting older ARM systems must account for devices without the required extension, whereas contemporary 64-bit ARM environments generally expose Advanced SIMD as part of the architectural baseline. GCC provides architecture and feature controls for selecting suitable code generation.4
NEON and Advanced SIMD are closely related names; exact instruction availability depends on the ARM architecture version and execution state.
Help improve the encyclopedia. Reports go straight to the site manager.