https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109415
--- Comment #8 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- The __ARM_ARCH_...__ macros turned out to be a very bad design decision. Each new architecture needs a new macro that older compilers (and software) will not know about. The ACLE approach is far more sensible and GCC has mostly adopted that now. I personally consider the existing __ARM_ARCH_...__ macros to be deprecated, though I don't think the manual actually says this yet. There is a known bug in GCC. ACLE says that __ARM_ARCH should have the value <arch_major>*100 + <arch_minor> for architectures after arm-v8, but we don't implement that yet (there may already be a PR about this) and report __ARM_ARCH=8 for all existing armv8.xxx variants.