diff options
author | Tianjia Zhang <tianjia.zhang@linux.alibaba.com> | 2022-07-21 14:32:16 +0800 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2022-07-21 10:54:25 +0300 |
commit | ea5e71f9c8eb32d8b820be85eb34a8926cfa834d (patch) | |
tree | a92723ec1f10a664bd13e11f49de6ad0f2fb427b /src | |
parent | 8921b5221e333626884ad291881f79e0583d574a (diff) | |
download | libgcrypt-ea5e71f9c8eb32d8b820be85eb34a8926cfa834d.tar.gz |
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 <tianjia.zhang@linux.alibaba.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/g10lib.h | 5 | ||||
-rw-r--r-- | src/hwf-arm.c | 21 | ||||
-rw-r--r-- | src/hwfeatures.c | 5 |
3 files changed, 31 insertions, 0 deletions
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" }, |