HomeCommunityArchitectures and Processors blog
August 25, 2021

Introducing the updated Arm Intrinsics Search Engine

The Arm Intrinsics search engine is a look up table search for SIMD and MVE intrinsics that you can use to improve the speed and performance of your application.

By Gemma Paris

Share
Reading time 4 minutes

One of the most vital aspects of Arm’s ecosystem are developers. They come in all job titles and functions, and we try our best to provide each one with the information, tools, and guidance to make their lives easier. Being the lead of Developer Education for the Client line of business at Arm, there are so many areas of the stack we could focus on, from IP implementation to a game developer. We try and focus on the items that will make the most impact and one of these is Intrinsics.  

What is an ISA?

An Instruction Set Architecture (ISA) is part of the abstract model of a computer. It defines how software controls the CPU. The Arm ISA family allows developers to write software and firmware that conforms to the Arm specifications, secure in the knowledge that any Arm-based processor will execute it in the same way. These ISAs also have extensions that can be used to optimize their use amongst a range of use cases. You have Arm Neon, an advanced Single Instruction Multiple Data (SIMD) architecture extension for the Arm Cortex-A processor series. Arm Helium, an M-Profile Vector Extension (MVE) that can deliver a significant performance uplift for machine learning and signal processing. Then you have Scalable Vector Extensions (SVE/SVE2), which are vector extensions for AArch64 execution mode for the A64 instruction set of the Armv8 architecture.

What are Intrinsics?

“Intrinsics are native C/C++ function calls that the compiler replaces with an appropriate instruction or sequence of instructions, providing almost as much control as writing assembly language, while leaving the allocation of registers to the compiler, so that developers can focus on the algorithms.”

On developer.arm.com we had two intrinsic reference documentation pages for Neon Intrinsics and, more recently, Helium (MVE) Intrinsics. The pages and their features performed the tasks at a basic level. However, end user and internal company feedback highlighted that the user experience and performance of the page needed some attention.

Goals of the project

With the blessing of a large number of internal stakeholders, we set out to scope this project and came up with 4 goals:

  • Improve ease of development when using Arm Intrinsics;
  • Help developers write more efficient code;
  • Reduce the time it takes to find and understand instructions; and
  • Compare Intrinsics instructions between technologies.

Our partners on the project, Akendi, did fantastic user research as part of this project. The company conducted a number of in-depth interviews with developers of all kinds to fully understand what was missing, what features are needed and the best way to represent this on a single page.

The Arm Intrinsics search engine 

A few months on and we have put the new search engine into production on Developer.arm.com. User acceptance testing and launch was met with positive feedback from both internal users and external end users.

The main features

The new user features focus on the user interface (UI) for end users, along with some upgrades on the Arm side to ensure the engine loads quickly for end users. For the UI upgrades, here is the brief overview of upgrades:

  • Enhanced search and ‘pinning to top’:
    Search within an Intrinsics description and by full or partial instruction and other data fields. Pin these to the top of your search for later.
  • Multiple filtering options:
    Filter by Return Base Type, Element Bit Size, Architecture, Instruction Group.
  • Support for rich content:
    Provide code examples and links to further information such as GitHub, Arm docs, and so on.
  • Easy comparison:
    Compare the results of multiple searches.
  • Common data structure:
    Expand the application with more instruction sets where the data conforms to the common data structure.

The following screenshots are what the search engine looks like on developer.arm.com:

Arm Intrinsics search engine

Arm Intrinsics search engine can be filtered by SIMD ISA, base type, bit size and architecture. 

The following is an example of the single view of a Neon Intrinsic example which shows a description, results, compatibility and an example operation:

Arm Intrinsics Neon Example

Working for you

Creating, publishing, and maintaining these items like the Arm Intrinsics was a priority for us over the last year, and it is a priority to keep it up to date, so we will add some new features as soon as we can. We welcome feedback on the search engine which you can provide directly on Arm Developer.

In the meantime, why not try out the Arm Intrinsics search engine? Need some resources? Check out the Neon and Helium developer pages for guides on how to get the best out of the search engine:

https://developer.arm.com/architectures/instruction-sets/simd-isas/neon

https://developer.arm.com/architectures/instruction-sets/simd-isas/helium

We are constantly updating these guides along with adding new ones. Please let us know if you have any suggestions on what you would like to see.

Arm Intrinsics Search Engine


1Log in to like this post
Share

Article text

Re-use is only permitted for informational and non-commerical or personal use only.

placeholder