Home Architectures Instruction Sets SIMD ISAs Neon Neon Arm Neon technology is an advanced Single Instruction Multiple Data (SIMD) architecture extension for the Arm Cortex-A and Cortex-R series processors. Neon technology is a packed SIMD architecture. Neon registers are considered as vectors of elements of the same data type, with Neon instructions operating on multiple elements simultaneously. Multiple data types are supported by the technology, including floating-point and integer operations. Neon technology is intended to improve the multimedia user experience by accelerating audio and video encoding and decoding, user interface, 2D/3D graphics, and gaming. Neon can also accelerate signal processing algorithms and functions to speed up applications such as audio and video processing, voice and facial recognition, computer vision, and deep learning. As a programmer, there are several ways you can use Neon technology: Neon intrinsics Neon-enabled libraries Auto-vectorization by your compiler Hand-coded Neon assembler Neon Programmer Guides for Armv8-A Introducing Neon for Armv8-A Read now Compiling for Neon with auto-vectorization Read now Optimizing C code with Neon Intrinsics Read now Optimizing PNG with Neon Intrinsics in Chromium case study Read now Coding for Neon Read now Accelerating DSP functions with the DOT instructions Learn more Porting from Intel Intrinsics to Arm Neon Intrinsics Read now Neon Intrinsics Neon Intrinsics reference search engine Neon Intrinsics are function calls that the compiler replaces with an appropriate Neon instruction or sequence of Neon instructions. Intrinsics provide almost as much control as writing assembly language, but leave the allocation of registers to the compiler, so that developers can focus on the algorithms. View Using Neon Intrinsics on Android Getting started with Neon Intrinsics on Android Read now How to Truncate Thresholding and Convolution of a 1D Signal Read now Neon-enabled libraries Arm Compute Library The Arm Compute Library is a collection of low-level functions optimized for Arm CPU and GPU architectures targeted at image processing, computer vision, and machine learning. Learn more Ne10 Open-source C library, hosted on GitHub by Arm, are common processing intensive functions heavily optimized for Arm. Ne10 is a modular structure consisting of several smaller libraries. Learn more Libyuv Open-source project that includes YUV scaling and conversion functionality. Learn more Skia Open-source 2D graphics library used as the graphics engine for web browsers and operating systems. Learn more Auto-vectorization Auto-vectorization is the process by which a compiler can automatically analyze your code and identify opportunities to optimize performance with Neon. Compilers that can perform auto-vectorization include Arm Compiler, LLVM or Clang, and GCC. Learn more with the following resources: Compiling for Neon with auto-vectorization Read now Arm Compiler documentation Read now Auto-vectorization in LLVM Read now GCC documentation Read now Neon assembly code Neon assembler For very high performance, hand-coded Neon assembler can be the best approach for experienced programmers. Both the GNU assembler and the Arm Compiler toolchain assembler support assembly of Neon instructions. Arm Architecture Reference Manual Armv8, for Armv8-A architecture profile Contains reference documentation for all Advanced SIMD instructions. Read now Software Optimization Guides Arm publishes Software Optimization Guides for some processors. These guides provide high-level information about the pipeline, instruction performance characteristics, and special performance considerations. This information can be particularly useful to programmers using Neon. Search now Arm tools for Neon Arm Development Studio Designed specifically for Arm architecture, Development Studio is the most comprehensive embedded C/C++ dedicated software development solution on the market. It accelerates software engineering while helping you build robust and more efficient products. Learn more Arm Mobile Studio The free-to-use Studio also provides graphics application tracing to determine exactly where rendering defects occur in your game or application. Learn more Arm Compiler Arm Compiler provides the earliest, most complete, and most accurate support for the latest architectural features and extensions of the Arm architecture. Arm Compiler supports all the latest Arm Cortex, Neoverse and SecurCore processors, including cores that are in development. Learn more Resources Arm v8-A Neon optimization This presentation presents an example optimization of the Fast Fourier Transform (FFT) operation. It looks at: The performance gains that can be obtained using Neon A Neon optimization workflow for Ne10 Examples of Ne10 FFT and Android libraries A performance comparison between assembly and intrinsics Watch now Taming Armv8 Neon: from theory to benchmark results Making Neon shine simply requires following a few tips. In this presentation, Neon is introduced with a comparison between Armv8 and Armv7 Neon before exploring the key factors to successful use of Neon. The presentation describes work done on the Skia graphics library (used in Chromium, Firefox, Android) and shares several tips. Watch now Arm Community Arm Community blogs Evolution of SIMD architecture with SVE2 24 days ago by Koki Mitsunami Thinking in parallel: Branchless conditionals 2 months ago by Laurence Bank Introducing the updated Arm Intrinsics Search Engine 3 months ago by Gemma Paris Porting SSE to Neon: Are libraries the way forward? 4 months ago by Ben Clark How Arm is powering the road to cleaner smarter vehicles 2 years ago by James Scobie What Android’s move to 64-bit means for game developers 2 years ago by DaveW Arm Community forums Forum FAQs Latest 1 months ago by Oliver Beirne 1 replies 715 views Forum FAQs Latest 1 months ago by Oliver Beirne 1 replies 645 views Forum FAQs Latest 1 months ago by Oliver Beirne 1 replies 1730 views Forum FAQs Latest 1 months ago by Oliver Beirne 1 replies 594 views Where should I ask my question? Latest 6 months ago by Andy Neil 5 replies 10684 views Does IAR Embedded Workbench compiler support "numeric_limits" in C++? Latest 2 days ago by Stephen Theobald 3 replies 330 views Was this page helpful? Yes No Development SoC Design Embedded Software Graphics and Multimedia High Performance Computing Linux and Open Source Research and Education Architecture CPU Architecture System Architectures Security Architectures Instruction Sets Platform Design Products CPU Processors Graphics and Multimedia Physical IP System IP System Design Tools Software Development Tools Support Design Reviews Training Documentation Licensing Downloads Contact Support Arm Security Updates Community Communities Forums Blogs About Arm Leadership Security News Contact Us Arm Offices Cookie Policy Terms of Use Privacy Policy Accessibility Subscription Center Trademarks Copyright © 1995-2021 Arm Limited (or its affiliates). All rights reserved. Important Information for the Arm website. This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work. Accept and hide this message Feedback