From ea5e71f9c8eb32d8b820be85eb34a8926cfa834d Mon Sep 17 00:00:00 2001 From: Tianjia Zhang Date: Thu, 21 Jul 2022 14:32:16 +0800 Subject: Add ARMv9 SVE2 and optional Crypto Extension HW features * configure.ac (sve2support, gcry_cv_gcc_inline_asm_aarch64_sve2) (ENABLE_SVE2_SUPPORT): New. * doc/gcrypt.texi: Add "sve2, sveaes, svepmull, svesha3, svesm4" to ARM hardware features list. * src/g10lib.h (HWF_ARM_SVE2, HWF_ARM_SVEAES, HWF_ARM_SVEPMULL) (HWF_ARM_SVESHA3, HWF_ARM_SVESM4): New. * src/hwf-arm.c (arm_features): Add "sve2, sveaes, svepmull, svesha3, svesm4". * src/hwfeatures.c (hwflist): Add "arm-sve2, arm-sveaes, arm-svepmull, arm-svesha3, arm-svesm4". -- Signed-off-by: Tianjia Zhang --- src/g10lib.h | 5 +++++ src/hwf-arm.c | 21 +++++++++++++++++++++ src/hwfeatures.c | 5 +++++ 3 files changed, 31 insertions(+) (limited to 'src') diff --git a/src/g10lib.h b/src/g10lib.h index 91d53ff3..8ba0a5c2 100644 --- a/src/g10lib.h +++ b/src/g10lib.h @@ -252,6 +252,11 @@ char **_gcry_strtokenize (const char *string, const char *delim); #define HWF_ARM_SM4 (1 << 7) #define HWF_ARM_SHA512 (1 << 8) #define HWF_ARM_SVE (1 << 9) +#define HWF_ARM_SVE2 (1 << 10) +#define HWF_ARM_SVEAES (1 << 11) +#define HWF_ARM_SVEPMULL (1 << 12) +#define HWF_ARM_SVESHA3 (1 << 13) +#define HWF_ARM_SVESM4 (1 << 14) #elif defined(HAVE_CPU_ARCH_PPC) diff --git a/src/hwf-arm.c b/src/hwf-arm.c index 0bc2713b..500cd97a 100644 --- a/src/hwf-arm.c +++ b/src/hwf-arm.c @@ -157,6 +157,22 @@ static const struct feature_map_s arm_features[] = # define HWCAP_SVE (1 << 22) #endif +#ifndef HWCAP2_SVE2 +# define HWCAP2_SVE2 (1 << 1) +#endif +#ifndef HWCAP2_SVEAES +# define HWCAP2_SVEAES (1 << 2) +#endif +#ifndef HWCAP2_SVEPMULL +# define HWCAP2_SVEPMULL (1 << 3) +#endif +#ifndef HWCAP2_SVESHA3 +# define HWCAP2_SVESHA3 (1 << 5) +#endif +#ifndef HWCAP2_SVESM4 +# define HWCAP2_SVESM4 (1 << 6) +#endif + static const struct feature_map_s arm_features[] = { #ifdef ENABLE_NEON_SUPPORT @@ -174,6 +190,11 @@ static const struct feature_map_s arm_features[] = #endif #ifdef ENABLE_SVE_SUPPORT { HWCAP_SVE, 0, " sve", HWF_ARM_SVE }, + { 0, HWCAP2_SVE2, " sve2", HWF_ARM_SVE2 }, + { 0, HWCAP2_SVEAES, " sveaes", HWF_ARM_SVEAES }, + { 0, HWCAP2_SVEPMULL, " svepmull", HWF_ARM_SVEPMULL }, + { 0, HWCAP2_SVESHA3, " svesha3", HWF_ARM_SVESHA3 }, + { 0, HWCAP2_SVESM4, " svesm4", HWF_ARM_SVESM4 }, #endif }; diff --git a/src/hwfeatures.c b/src/hwfeatures.c index dec5efd3..b11cadef 100644 --- a/src/hwfeatures.c +++ b/src/hwfeatures.c @@ -75,6 +75,11 @@ static struct { HWF_ARM_SM4, "arm-sm4" }, { HWF_ARM_SHA512, "arm-sha512" }, { HWF_ARM_SVE, "arm-sve" }, + { HWF_ARM_SVE2, "arm-sve2" }, + { HWF_ARM_SVEAES, "arm-sveaes" }, + { HWF_ARM_SVEPMULL, "arm-svepmull" }, + { HWF_ARM_SVESHA3, "arm-svesha3" }, + { HWF_ARM_SVESM4, "arm-svesm4" }, #elif defined(HAVE_CPU_ARCH_PPC) { HWF_PPC_VCRYPTO, "ppc-vcrypto" }, { HWF_PPC_ARCH_3_00, "ppc-arch_3_00" }, -- cgit v1.2.1