Merged ahead of the upcoming GCC 16.1 stable release of the GCC 16 compiler is initial support for the Armv9.6-A target.
Merged a few days ago to GCC Git was the new target options for the Arm 2024 Architecture Extension and Armv9.6-A:
“aarch64: Add new target options for 2024 Architecture Extension and Armv9.6-A
This does not add support for these version (and the corresponding __ARM_FEATURE_
macros aren’t implemented for this reason) but accepts the command line strings and allows these to be passed on to the assembler. Armv9.6-A is supported by the new “armv9.6-a” option and defined as “armv9.5-a+cmpbr+lsui+occmo”
The new extensions are:
– fprcvt (FEAT_FPRCVT)
– lsfe (FEAT_LSFE)
– f8f32mm (FEAT_F8F32MM)
– f8f16mm (FEAT_F8F16MM)
– sme2p2 (FEAT_SME2p2)
– sve2p2 (FEAT_SVE2p2)
– sve-aes2 (FEAT_SVE_AES2)
– sve-f16f32mm (FEAT_SVE_F16F32MM)
– sve-bfscale (FEAT_SVE_BFSCALE)
– ssve-aes (FEAT_SSVE_AES)
– lsui (FEAT_LSUI)
– occmo (FEAT_OCCMO)
– pcdphint (FEAT_PCDPHINT)
– pops (FEAT_PoPS)
– ssve-bitperm (FEAT_SSVE_BitPerm)
– ssve-fexpa (FEAT_SSVE_FEXPA)
– sme-mop4 (FEAT_SME_MOP4)
– sme-tmop (FEAT_TMOP)”
With the newest SoCs still based on Armv9.2-A like the Cortex A520 / A720, Neoverse-V3, and also the Apple M4 and A18, among others, it will likely be some time as usual before seeing Armv9.6-A appear in any available core / SoC designs. The recently announced Arm C1 is based on Armv9.3-A. As mentioned with this GNU Compiler Collection support is just the initial target addition with the new extension work still to come.
All the technical details on the Armv9-6-A extensions can be found via the Arm developer blog.
