summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTianjia Zhang <tianjia.zhang@linux.alibaba.com>2022-07-21 14:32:16 +0800
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2022-07-21 10:54:25 +0300
commitea5e71f9c8eb32d8b820be85eb34a8926cfa834d (patch)
treea92723ec1f10a664bd13e11f49de6ad0f2fb427b /src
parent8921b5221e333626884ad291881f79e0583d574a (diff)
downloadlibgcrypt-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.h5
-rw-r--r--src/hwf-arm.c21
-rw-r--r--src/hwfeatures.c5
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" },