diff --git a/linuxkm/lkcapi_aes_glue.c b/linuxkm/lkcapi_aes_glue.c index 8fea174bf2..d133686429 100644 --- a/linuxkm/lkcapi_aes_glue.c +++ b/linuxkm/lkcapi_aes_glue.c @@ -96,8 +96,16 @@ #define WOLFKM_AESOFB_NAME "ofb(aes)" #define WOLFKM_AESECB_NAME "ecb(aes)" -#if defined(USE_INTEL_SPEEDUP) || defined(USE_INTEL_SPEEDUP_FOR_AES) - #define WOLFKM_AES_DRIVER_ISA_EXT "-aesni-avx" +#if defined(WOLFSSL_X86_64_BUILD) && (defined(USE_INTEL_SPEEDUP) || defined(USE_INTEL_SPEEDUP_FOR_AES)) + #if !defined(NO_AVX512_SUPPORT) + #define WOLFKM_AES_DRIVER_ISA_EXT "-vaes-avx512" + #elif !defined(NO_VAES_SUPPORT) + #define WOLFKM_AES_DRIVER_ISA_EXT "-vaes-avx2" + #elif !defined(NO_AVX2_SUPPORT) + #define WOLFKM_AES_DRIVER_ISA_EXT "-aesni-avx2" + #else + #define WOLFKM_AES_DRIVER_ISA_EXT "-aesni-avx" + #endif #elif defined(WOLFSSL_AESNI) #define WOLFKM_AES_DRIVER_ISA_EXT "-aesni" #else diff --git a/wolfcrypt/src/aes.c b/wolfcrypt/src/aes.c index 8417e84efa..4c550632ba 100644 --- a/wolfcrypt/src/aes.c +++ b/wolfcrypt/src/aes.c @@ -82,6 +82,9 @@ block cipher mechanism that uses n-bit binary string parameter key with 128-bits * WOLFSSL_AESNI_BY4: AES-NI 4-block parallel processing default: off * WOLFSSL_AESNI_BY6: AES-NI 6-block parallel processing default: off * USE_INTEL_SPEEDUP: Intel AVX/AVX2 for AES acceleration default: off + * USE_INTEL_SPEEDUP_FOR_AES: + Same as USE_INTEL_SPEEDUP, but scoped + to AES. default: off * WOLFSSL_AES_SMALL_TABLES: Use smaller AES S-box tables default: off * WOLFSSL_AES_NO_UNROLL: Disable AES round loop unrolling default: off * WOLFSSL_AES_TOUCH_LINES: Touch all cache lines for default: off @@ -812,6 +815,10 @@ block cipher mechanism that uses n-bit binary string parameter key with 128-bits XASM_LINK("AES_256_Key_Expansion_AESNI"); #ifdef WOLFSSL_X86_64_BUILD + #if defined(USE_INTEL_SPEEDUP_FOR_AES) && !defined(USE_INTEL_SPEEDUP) + #define USE_INTEL_SPEEDUP + #endif + /* Wide ECB / CBC / CTR variants for x86_64. They share the AES-NI key * schedule declared above and are selected at runtime from intel_flags. * AES_CBC_decrypt_AESNI is the single max-width path (the by4/by6/by8