aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/arch/aarch64
diff options
context:
space:
mode:
authorMalvika Gupta <Malvika.Gupta@arm.com>2021-11-02 13:01:14 -0500
committerMatias Elo <matias.elo@nokia.com>2021-11-08 08:53:23 +0200
commit577fe1f07683e5568821c32ad43b7b165f917c07 (patch)
treecb3cc1c35e5f74ac92be6c47b5860269b57702a2 /platform/linux-generic/arch/aarch64
parent458620fbf8ffbe9011005fbf3635bc6ac7a333e9 (diff)
linux-gen: sysinfo: add compile-time cpu flags
More compile-time CPU flags have been added to test the support for newer AArch64 features. Signed-off-by: Malvika Gupta <Malvika.Gupta@arm.com> Reviewed-by: Matias Elo <matias.elo@nokia.com>
Diffstat (limited to 'platform/linux-generic/arch/aarch64')
-rw-r--r--platform/linux-generic/arch/aarch64/cpu_flags.c275
1 files changed, 260 insertions, 15 deletions
diff --git a/platform/linux-generic/arch/aarch64/cpu_flags.c b/platform/linux-generic/arch/aarch64/cpu_flags.c
index 79d579088..878a0c146 100644
--- a/platform/linux-generic/arch/aarch64/cpu_flags.c
+++ b/platform/linux-generic/arch/aarch64/cpu_flags.c
@@ -22,105 +22,350 @@ static void _odp_sys_info_print_acle_flags(void)
/* See ARM C Language Extensions documentation for details */
ODP_PRINT("ARM FEATURES:\n");
- ODP_PRINT(" __ARM_ARCH ");
+ ODP_PRINT(" __ARM_ALIGN_MAX_PWR ");
+#ifdef __ARM_ALIGN_MAX_PWR
+ ODP_PRINT("%i\n", __ARM_ALIGN_MAX_PWR);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_ALIGN_MAX_STACK_PWR ");
+#ifdef __ARM_ALIGN_MAX_STACK_PWR
+ ODP_PRINT("%i\n", __ARM_ALIGN_MAX_STACK_PWR);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_ARCH ");
#ifdef __ARM_ARCH
ODP_PRINT("%i\n", __ARM_ARCH);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_ARCH_ISA_A64 ");
+ ODP_PRINT(" __ARM_ARCH_ISA_A64 ");
#ifdef __ARM_ARCH_ISA_A64
ODP_PRINT("%i\n", __ARM_ARCH_ISA_A64);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_ATOMICS ");
+ ODP_PRINT(" __ARM_BIG_ENDIAN ");
+#ifdef __ARM_BIG_ENDIAN
+ ODP_PRINT("%i\n", __ARM_BIG_ENDIAN);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_BF16_FORMAT_ALTERNATIVE ");
+#ifdef __ARM_BF16_FORMAT_ALTERNATIVE
+ ODP_PRINT("%i\n", __ARM_BF16_FORMAT_ALTERNATIVE);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_ATOMICS ");
#ifdef __ARM_FEATURE_ATOMICS
ODP_PRINT("%i\n", __ARM_FEATURE_ATOMICS);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_CRC32 ");
+ ODP_PRINT(" __ARM_FEATURE_BF16 ");
+#ifdef __ARM_FEATURE_BF16
+ ODP_PRINT("%i\n", __ARM_FEATURE_BF16);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_BTI_DEFAULT ");
+#ifdef __ARM_FEATURE_BTI_DEFAULT
+ ODP_PRINT("%i\n", __ARM_FEATURE_BTI_DEFAULT);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_CDE ");
+#ifdef __ARM_FEATURE_CDE
+ ODP_PRINT("%i\n", __ARM_FEATURE_CDE);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_CDE_COPROC ");
+#ifdef __ARM_FEATURE_CDE_COPROC
+ ODP_PRINT("0x%X\n", __ARM_FEATURE_CDE_COPROC);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_CLZ ");
+#ifdef __ARM_FEATURE_CLZ
+ ODP_PRINT("%i\n", __ARM_FEATURE_CLZ);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_COMPLEX ");
+#ifdef __ARM_FEATURE_COMPLEX
+ ODP_PRINT("%i\n", __ARM_FEATURE_COMPLEX);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_COPROC ");
+#ifdef __ARM_FEATURE_COPROC
+ ODP_PRINT("0x%X\n", __ARM_FEATURE_COPROC);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_CRC32 ");
#ifdef __ARM_FEATURE_CRC32
ODP_PRINT("%i\n", __ARM_FEATURE_CRC32);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_CRYPTO ");
+ ODP_PRINT(" __ARM_FEATURE_CRYPTO ");
#ifdef __ARM_FEATURE_CRYPTO
ODP_PRINT("%i\n", __ARM_FEATURE_CRYPTO);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_DOTPROD ");
+ ODP_PRINT(" __ARM_FEATURE_DIRECTED_ROUNDING ");
+#ifdef __ARM_FEATURE_DIRECTED_ROUNDING
+ ODP_PRINT("%i\n", __ARM_FEATURE_DIRECTED_ROUNDING);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_DOTPROD ");
#ifdef __ARM_FEATURE_DOTPROD
ODP_PRINT("%i\n", __ARM_FEATURE_DOTPROD);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_IDIV ");
+ ODP_PRINT(" __ARM_FEATURE_FMA ");
+#ifdef __ARM_FEATURE_FMA
+ ODP_PRINT("%i\n", __ARM_FEATURE_FMA);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_FP16_FML ");
+#ifdef __ARM_FEATURE_FP16_FML
+ ODP_PRINT("%i\n", __ARM_FEATURE_FP16_FML);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_FRINT ");
+#ifdef __ARM_FEATURE_FRINT
+ ODP_PRINT("%i\n", __ARM_FEATURE_FRINT);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_IDIV ");
#ifdef __ARM_FEATURE_IDIV
ODP_PRINT("%i\n", __ARM_FEATURE_IDIV);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_QRDMX ");
+ ODP_PRINT(" __ARM_FEATURE_JCVT ");
+#ifdef __ARM_FEATURE_JCVT
+ ODP_PRINT("%i\n", __ARM_FEATURE_JCVT);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_MATMUL_INT8 ");
+#ifdef __ARM_FEATURE_MATMUL_INT8
+ ODP_PRINT("%i\n", __ARM_FEATURE_MATMUL_INT8);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_MEMORY_TAGGING ");
+#ifdef __ARM_FEATURE_MEMORY_TAGGING
+ ODP_PRINT("%i\n", __ARM_FEATURE_MEMORY_TAGGING);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_MVE ");
+#ifdef __ARM_FEATURE_MVE
+ ODP_PRINT("0x%X\n", __ARM_FEATURE_MVE);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_NUMERIC_MAXMIN ");
+#ifdef __ARM_FEATURE_NUMERIC_MAXMIN
+ ODP_PRINT("%i\n", __ARM_FEATURE_NUMERIC_MAXMIN);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_PAC_DEFAULT ");
+#ifdef __ARM_FEATURE_PAC_DEFAULT
+ ODP_PRINT("0x%X\n", __ARM_FEATURE_PAC_DEFAULT);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_QRDMX ");
#ifdef __ARM_FEATURE_QRDMX
ODP_PRINT("%i\n", __ARM_FEATURE_QRDMX);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_SHA3 ");
+ ODP_PRINT(" __ARM_FEATURE_RNG ");
+#ifdef __ARM_FEATURE_RNG
+ ODP_PRINT("%i\n", __ARM_FEATURE_RNG);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_SHA3 ");
#ifdef __ARM_FEATURE_SHA3
ODP_PRINT("%i\n", __ARM_FEATURE_SHA3);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_SHA512 ");
+ ODP_PRINT(" __ARM_FEATURE_SHA512 ");
#ifdef __ARM_FEATURE_SHA512
ODP_PRINT("%i\n", __ARM_FEATURE_SHA512);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_SM3 ");
+ ODP_PRINT(" __ARM_FEATURE_SM3 ");
#ifdef __ARM_FEATURE_SM3
ODP_PRINT("%i\n", __ARM_FEATURE_SM3);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_SM4 ");
+ ODP_PRINT(" __ARM_FEATURE_SM4 ");
#ifdef __ARM_FEATURE_SM4
ODP_PRINT("%i\n", __ARM_FEATURE_SM4);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_FEATURE_UNALIGNED ");
+ ODP_PRINT(" __ARM_FEATURE_TME ");
+#ifdef __ARM_FEATURE_TME
+ ODP_PRINT("%i\n", __ARM_FEATURE_TME);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FEATURE_UNALIGNED ");
#ifdef __ARM_FEATURE_UNALIGNED
ODP_PRINT("%i\n", __ARM_FEATURE_UNALIGNED);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" __ARM_NEON ");
+ ODP_PRINT(" __ARM_FP ");
+#ifdef __ARM_FP
+ ODP_PRINT("0x%X\n", __ARM_FP);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FP_FAST ");
+#ifdef __ARM_FP_FAST
+ ODP_PRINT("%i\n", __ARM_FP_FAST);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FP_FENV_ROUNDING ");
+#ifdef __ARM_FP_FENV_ROUNDING
+ ODP_PRINT("%i\n", __ARM_FP_FENV_ROUNDING);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FP16_ARGS ");
+#ifdef __ARM_FP16_ARGS
+ ODP_PRINT("%i\n", __ARM_FP16_ARGS);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FP16_FORMAT_ALTERNATIVE ");
+#ifdef __ARM_FP16_FORMAT_ALTERNATIVE
+ ODP_PRINT("%i\n", __ARM_FP16_FORMAT_ALTERNATIVE);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_FP16_FORMAT_IEEE ");
+#ifdef __ARM_FP16_FORMAT_IEEE
+ ODP_PRINT("%i\n", __ARM_FP16_FORMAT_IEEE);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_NEON ");
#ifdef __ARM_NEON
ODP_PRINT("%i\n", __ARM_NEON);
#else
ODP_PRINT("%s\n", ndef);
#endif
- ODP_PRINT(" ARM ISA version: ");
+ ODP_PRINT(" __ARM_NEON_FP ");
+#ifdef __ARM_NEON_FP
+ ODP_PRINT("0x%X\n", __ARM_NEON_FP);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_PCS_AAPCS64 ");
+#ifdef __ARM_PCS_AAPCS64
+ ODP_PRINT("%i\n", __ARM_PCS_AAPCS64);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_ROPI ");
+#ifdef __ARM_ROPI
+ ODP_PRINT("%i\n", __ARM_ROPI);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_RWPI ");
+#ifdef __ARM_RWPI
+ ODP_PRINT("%i\n", __ARM_RWPI);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_SIZEOF_MINIMAL_ENUM ");
+#ifdef __ARM_SIZEOF_MINIMAL_ENUM
+ ODP_PRINT("%i\n", __ARM_SIZEOF_MINIMAL_ENUM);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" __ARM_SIZEOF_WCHAR_T ");
+#ifdef __ARM_SIZEOF_WCHAR_T
+ ODP_PRINT("%i\n", __ARM_SIZEOF_WCHAR_T);
+#else
+ ODP_PRINT("%s\n", ndef);
+#endif
+
+ ODP_PRINT(" ARM ISA version: ");
#if defined(__ARM_ARCH)
if (__ARM_ARCH < 8) {
ODP_PRINT("v%i\n", __ARM_ARCH);