Skip to content

[AArch64] ARMv8.7 through ARMv8.9 CPU types and CSSC extension

J. Gareth "Kit" Moreton requested to merge CuriousKit/optimisations:armv87a into main

Summary

This merge request adds the CPU types "armv8.7-a", "armv8.8-a" and "armv8.9-a" for the AArch64 implementation of the compiler, as well as future support for the Common Short Sequence Compression (CSSC) extension on ARMv8.9-A (optional support exists from ARMv8.7-A onwards), which includes the new mnemonics ABS and CTZ in assembly language.

Additionally, the existing CPU types now include support for the DOTPROD (dot product) extension for v8.4-A and above.

System

  • Operating system: Linux (Raspberry Pi OS) and others
  • Processor architecture: AArch64
  • Device: Raspberry Pi and others

Notes

  • The compiler does not yet take advantage of any of the AArch64 capabilities, and I (@CuriousKit) don't actually have the ability to test the extensions as the CPU on the Raspberry PI only supports the base ARMv8-A instruction set.
  • Versions of the GNU AArch64 Assembler released prior to 2022 do not support the CSSC instructions (which include things like UMIN/UMAX for general-purpose registers) and will raise an assembler error if such instructions are used in asm blocks or encoded by the compiler. They may also require specific command-line parameters to be sent to the assembler.
  • There is also a new ARMv9-A instruction set, but I do not yet know enough about the standards and which extensions are mandatory, nor do I have a CPU to actually test it with. This CPU type can be added in the future though.

Merge request reports