GCC Newspaper
OCTOBER 6, 2026
Date
/
Architectures
Components
Topics
News & Policy
Other
aarch64 Performance Win

Add new absolute difference accumulate intrinsic.

New SVE/SME2.3 intrinsics for absolute difference accumulation are now supported on AArch64.

GCC now supports a set of new absolute difference accumulation intrinsics for the AArch64 architecture, specifically for SVE/SME2.3. These intrinsics, such as svabal_s16 and svabal_u64, allow for efficient computation of accumulated absolute differences on vector data.

In Details

This commit introduces support for several SVE/SME2.3 intrinsics related to absolute difference accumulation on AArch64. The new intrinsics (e.g., svabal_s16, svabal_n_s16, svabal_s32, etc.) are defined in aarch64-sve-builtins-sve2.cc and declared in aarch64-sve-builtins-sve2.h. The corresponding UNSPECs (UNSPEC_SABAL, UNSPEC_UABAL) and pattern definitions have been added to iterators.md to integrate them into the SVE instruction selection logic.

For Context
AArch64
The 64-bit ARM architecture.
SVE
Scalable Vector Extension. An ARM instruction set architecture extension that provides vector processing capabilities with a vector length that can vary at runtime.
SME
Scalable Matrix Extension. An ARM architecture extension that provides matrix processing capabilities, often built upon SVE.
Intrinsic
A function provided by a compiler that corresponds directly to a specific machine instruction or a small sequence of machine instructions. Intrinsics provide a way to access hardware capabilities from high-level code.
vector<bool>
A specialized version of C++'s std::vector template that stores boolean values as individual bits for space efficiency. It uses a proxy reference type (reference) to allow modification of these bits.
Filed Under: aarch64sveintrinsicsvectorization