/* Crypto instructions are the combination of AES and SHA2. */
#define AARCH64_FEATURE_CRYPTO (AARCH64_FEATURE_SHA2 | AARCH64_FEATURE_AES)
+#define AARCH64_ARCH_V8_FEATURES (AARCH64_FEATURE_V8_A \
+ | AARCH64_FEATURE_FP \
+ | AARCH64_FEATURE_RAS \
+ | AARCH64_FEATURE_SIMD)
+#define AARCH64_ARCH_V8_1_FEATURES (AARCH64_FEATURE_V8_1 \
+ | AARCH64_FEATURE_CRC \
+ | AARCH64_FEATURE_LSE \
+ | AARCH64_FEATURE_PAN \
+ | AARCH64_FEATURE_LOR \
+ | AARCH64_FEATURE_RDMA)
+#define AARCH64_ARCH_V8_2_FEATURES (AARCH64_FEATURE_V8_2)
+#define AARCH64_ARCH_V8_3_FEATURES (AARCH64_FEATURE_V8_3 \
+ | AARCH64_FEATURE_PAC \
+ | AARCH64_FEATURE_RCPC \
+ | AARCH64_FEATURE_COMPNUM)
+#define AARCH64_ARCH_V8_4_FEATURES (AARCH64_FEATURE_V8_4 \
+ | AARCH64_FEATURE_DOTPROD \
+ | AARCH64_FEATURE_FLAGM \
+ | AARCH64_FEATURE_F16_FML)
+#define AARCH64_ARCH_V8_5_FEATURES (AARCH64_FEATURE_V8_5 \
+ | AARCH64_FEATURE_FLAGMANIP \
+ | AARCH64_FEATURE_FRINTTS \
+ | AARCH64_FEATURE_SB \
+ | AARCH64_FEATURE_PREDRES \
+ | AARCH64_FEATURE_CVADP \
+ | AARCH64_FEATURE_BTI \
+ | AARCH64_FEATURE_SCXTNUM \
+ | AARCH64_FEATURE_ID_PFR2 \
+ | AARCH64_FEATURE_SSBS)
+#define AARCH64_ARCH_V8_6_FEATURES (AARCH64_FEATURE_V8_6 \
+ | AARCH64_FEATURE_BFLOAT16 \
+ | AARCH64_FEATURE_I8MM)
+#define AARCH64_ARCH_V8_7_FEATURES (AARCH64_FEATURE_V8_7 \
+ | AARCH64_FEATURE_LS64)
+#define AARCH64_ARCH_V8_8_FEATURES (AARCH64_FEATURE_V8_8 \
+ | AARCH64_FEATURE_MOPS \
+ | AARCH64_FEATURE_HBC)
+
+#define AARCH64_ARCH_V9_FEATURES (AARCH64_FEATURE_V9 \
+ | AARCH64_FEATURE_SVE \
+ | AARCH64_FEATURE_SVE2)
+#define AARCH64_ARCH_V9_1_FEATURES (AARCH64_ARCH_V8_6_FEATURES)
+#define AARCH64_ARCH_V9_2_FEATURES (AARCH64_ARCH_V8_7_FEATURES)
+#define AARCH64_ARCH_V9_3_FEATURES (AARCH64_ARCH_V8_8_FEATURES)
+
/* Architectures are the sum of the base and extensions. */
#define AARCH64_ARCH_V8 AARCH64_FEATURE (AARCH64_FEATURE_V8, \
- AARCH64_FEATURE_V8_A \
- | AARCH64_FEATURE_FP \
- | AARCH64_FEATURE_RAS \
- | AARCH64_FEATURE_SIMD)
+ AARCH64_ARCH_V8_FEATURES)
#define AARCH64_ARCH_V8_1 AARCH64_FEATURE (AARCH64_ARCH_V8, \
- AARCH64_FEATURE_CRC \
- | AARCH64_FEATURE_V8_1 \
- | AARCH64_FEATURE_LSE \
- | AARCH64_FEATURE_PAN \
- | AARCH64_FEATURE_LOR \
- | AARCH64_FEATURE_RDMA)
+ AARCH64_ARCH_V8_1_FEATURES)
#define AARCH64_ARCH_V8_2 AARCH64_FEATURE (AARCH64_ARCH_V8_1, \
- AARCH64_FEATURE_V8_2)
+ AARCH64_ARCH_V8_2_FEATURES)
#define AARCH64_ARCH_V8_3 AARCH64_FEATURE (AARCH64_ARCH_V8_2, \
- AARCH64_FEATURE_V8_3 \
- | AARCH64_FEATURE_PAC \
- | AARCH64_FEATURE_RCPC \
- | AARCH64_FEATURE_COMPNUM)
+ AARCH64_ARCH_V8_3_FEATURES)
#define AARCH64_ARCH_V8_4 AARCH64_FEATURE (AARCH64_ARCH_V8_3, \
- AARCH64_FEATURE_V8_4 \
- | AARCH64_FEATURE_DOTPROD \
- | AARCH64_FEATURE_FLAGM \
- | AARCH64_FEATURE_F16_FML)
+ AARCH64_ARCH_V8_4_FEATURES)
#define AARCH64_ARCH_V8_5 AARCH64_FEATURE (AARCH64_ARCH_V8_4, \
- AARCH64_FEATURE_V8_5 \
- | AARCH64_FEATURE_FLAGMANIP \
- | AARCH64_FEATURE_FRINTTS \
- | AARCH64_FEATURE_SB \
- | AARCH64_FEATURE_PREDRES \
- | AARCH64_FEATURE_CVADP \
- | AARCH64_FEATURE_BTI \
- | AARCH64_FEATURE_SCXTNUM \
- | AARCH64_FEATURE_ID_PFR2 \
- | AARCH64_FEATURE_SSBS)
+ AARCH64_ARCH_V8_5_FEATURES)
#define AARCH64_ARCH_V8_6 AARCH64_FEATURE (AARCH64_ARCH_V8_5, \
- AARCH64_FEATURE_V8_6 \
- | AARCH64_FEATURE_BFLOAT16 \
- | AARCH64_FEATURE_I8MM)
+ AARCH64_ARCH_V8_6_FEATURES)
#define AARCH64_ARCH_V8_7 AARCH64_FEATURE (AARCH64_ARCH_V8_6, \
- AARCH64_FEATURE_V8_7 \
- | AARCH64_FEATURE_LS64)
+ AARCH64_ARCH_V8_7_FEATURES)
#define AARCH64_ARCH_V8_8 AARCH64_FEATURE (AARCH64_ARCH_V8_7, \
- AARCH64_FEATURE_V8_8 \
- | AARCH64_FEATURE_MOPS \
- | AARCH64_FEATURE_HBC)
+ AARCH64_ARCH_V8_8_FEATURES)
#define AARCH64_ARCH_V8_R (AARCH64_FEATURE (AARCH64_ARCH_V8_4, \
AARCH64_FEATURE_V8_R) \
& ~(AARCH64_FEATURE_V8_A | AARCH64_FEATURE_LOR))
+
#define AARCH64_ARCH_V9 AARCH64_FEATURE (AARCH64_ARCH_V8_5, \
- AARCH64_FEATURE_SVE \
- | AARCH64_FEATURE_SVE2 \
- | AARCH64_FEATURE_V9)
+ AARCH64_ARCH_V9_FEATURES)
+#define AARCH64_ARCH_V9_1 AARCH64_FEATURE (AARCH64_ARCH_V9, \
+ AARCH64_ARCH_V9_1_FEATURES)
+#define AARCH64_ARCH_V9_2 AARCH64_FEATURE (AARCH64_ARCH_V9_1, \
+ AARCH64_ARCH_V9_2_FEATURES)
+#define AARCH64_ARCH_V9_3 AARCH64_FEATURE (AARCH64_ARCH_V9_2, \
+ AARCH64_ARCH_V9_3_FEATURES)
#define AARCH64_ARCH_NONE AARCH64_FEATURE (0, 0)
#define AARCH64_ANY AARCH64_FEATURE (-1, 0) /* Any basic core. */