From d31d4089b9ae677123f49cc1b071b80207baf184 Mon Sep 17 00:00:00 2001 From: jsing <> Date: Thu, 14 Aug 2025 15:11:01 +0000 Subject: Add CPU feature detection for ADX on amd64. Add detection of Multi-Precision Add-Carry Instruction Extensions on amd64. s2n-bignum provides a number of fast multiplication routines that can leverage these instructions. ok tb@ --- src/lib/libcrypto/arch/amd64/crypto_arch.h | 9 +++++---- src/lib/libcrypto/arch/amd64/crypto_cpu_caps.c | 6 +++++- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/lib') diff --git a/src/lib/libcrypto/arch/amd64/crypto_arch.h b/src/lib/libcrypto/arch/amd64/crypto_arch.h index e869fbba35..a8f64cf235 100644 --- a/src/lib/libcrypto/arch/amd64/crypto_arch.h +++ b/src/lib/libcrypto/arch/amd64/crypto_arch.h @@ -1,4 +1,4 @@ -/* $OpenBSD: crypto_arch.h,v 1.13 2025/07/22 09:18:02 jsing Exp $ */ +/* $OpenBSD: crypto_arch.h,v 1.14 2025/08/14 15:11:01 jsing Exp $ */ /* * Copyright (c) 2024 Joel Sing * @@ -26,9 +26,10 @@ extern uint64_t crypto_cpu_caps_amd64; #endif -#define CRYPTO_CPU_CAPS_AMD64_AES (1ULL << 0) -#define CRYPTO_CPU_CAPS_AMD64_CLMUL (1ULL << 1) -#define CRYPTO_CPU_CAPS_AMD64_SHA (1ULL << 2) +#define CRYPTO_CPU_CAPS_AMD64_ADX (1ULL << 0) +#define CRYPTO_CPU_CAPS_AMD64_AES (1ULL << 1) +#define CRYPTO_CPU_CAPS_AMD64_CLMUL (1ULL << 2) +#define CRYPTO_CPU_CAPS_AMD64_SHA (1ULL << 3) #ifndef OPENSSL_NO_ASM diff --git a/src/lib/libcrypto/arch/amd64/crypto_cpu_caps.c b/src/lib/libcrypto/arch/amd64/crypto_cpu_caps.c index 0bc440d34f..51a2da4616 100644 --- a/src/lib/libcrypto/arch/amd64/crypto_cpu_caps.c +++ b/src/lib/libcrypto/arch/amd64/crypto_cpu_caps.c @@ -1,4 +1,4 @@ -/* $OpenBSD: crypto_cpu_caps.c,v 1.7 2025/07/22 09:18:02 jsing Exp $ */ +/* $OpenBSD: crypto_cpu_caps.c,v 1.8 2025/08/14 15:11:01 jsing Exp $ */ /* * Copyright (c) 2024 Joel Sing * @@ -119,6 +119,10 @@ crypto_cpu_caps_init(void) if (max_cpuid >= 7) { cpuid(7, NULL, &ebx, NULL, NULL); + /* Intel ADX feature bit - ebx[19]. */ + if (((ebx >> 19) & 1) != 0) + crypto_cpu_caps_amd64 |= CRYPTO_CPU_CAPS_AMD64_ADX; + /* Intel SHA extensions feature bit - ebx[29]. */ if (((ebx >> 29) & 1) != 0) crypto_cpu_caps_amd64 |= CRYPTO_CPU_CAPS_AMD64_SHA; -- cgit v1.2.3-55-g6feb