crypto-ia32: add VAES support for AES-CBC

Type: feature

Change-Id: Ic8aa6c48913677537301971469f9627b70c1cec8
Signed-off-by: Damjan Marion <damarion@cisco.com>
This commit is contained in:
Damjan Marion
2019-12-19 13:27:28 +01:00
committed by Florin Coras
parent bd5c49a161
commit e9595dba26
6 changed files with 250 additions and 50 deletions

View File

@ -65,6 +65,7 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
list(APPEND MARCH_VARIANTS "avx2\;-march=core-avx2 -mtune=core-avx2")
endif()
check_c_compiler_flag("-march=skylake-avx512" compiler_flag_march_skylake_avx512)
check_c_compiler_flag("-march=icelake-client" compiler_flag_march_icelake_client)
if(compiler_flag_march_skylake_avx512)
list(APPEND MARCH_VARIANTS "avx512\;-march=skylake-avx512 -mtune=skylake-avx512")
endif()

View File

@ -22,6 +22,9 @@ list(APPEND VARIANTS "avx2\;-march=core-avx2")
if(compiler_flag_march_skylake_avx512)
list(APPEND VARIANTS "avx512\;-march=skylake-avx512")
endif()
if(compiler_flag_march_icelake_client)
list(APPEND VARIANTS "vaesni\;-march=icelake-client")
endif()
foreach(VARIANT ${VARIANTS})
list(GET VARIANT 0 v)

File diff suppressed because it is too large Load Diff

View File

@ -746,7 +746,9 @@ foreach_aesni_gcm_handler_type;
#undef _
clib_error_t *
#ifdef __AVX512F__
#ifdef __VAES__
crypto_ia32_aesni_gcm_init_vaes (vlib_main_t * vm)
#elif __AVX512F__
crypto_ia32_aesni_gcm_init_avx512 (vlib_main_t * vm)
#elif __AVX2__
crypto_ia32_aesni_gcm_init_avx2 (vlib_main_t * vm)

View File

@ -38,10 +38,12 @@ extern crypto_ia32_main_t crypto_ia32_main;
clib_error_t *crypto_ia32_aesni_cbc_init_sse42 (vlib_main_t * vm);
clib_error_t *crypto_ia32_aesni_cbc_init_avx2 (vlib_main_t * vm);
clib_error_t *crypto_ia32_aesni_cbc_init_avx512 (vlib_main_t * vm);
clib_error_t *crypto_ia32_aesni_cbc_init_vaes (vlib_main_t * vm);
clib_error_t *crypto_ia32_aesni_gcm_init_sse42 (vlib_main_t * vm);
clib_error_t *crypto_ia32_aesni_gcm_init_avx2 (vlib_main_t * vm);
clib_error_t *crypto_ia32_aesni_gcm_init_avx512 (vlib_main_t * vm);
clib_error_t *crypto_ia32_aesni_gcm_init_vaes (vlib_main_t * vm);
#endif /* __crypto_ia32_h__ */
/*

View File

@ -72,7 +72,9 @@ crypto_ia32_init (vlib_main_t * vm)
vnet_crypto_register_engine (vm, "ia32", 100,
"Intel IA32 ISA Optimized Crypto");
if (clib_cpu_supports_avx512f ())
if (clib_cpu_supports_vaes ())
error = crypto_ia32_aesni_cbc_init_vaes (vm);
else if (clib_cpu_supports_avx512f ())
error = crypto_ia32_aesni_cbc_init_avx512 (vm);
else if (clib_cpu_supports_avx2 ())
error = crypto_ia32_aesni_cbc_init_avx2 (vm);
@ -84,7 +86,9 @@ crypto_ia32_init (vlib_main_t * vm)
if (clib_cpu_supports_pclmulqdq ())
{
if (clib_cpu_supports_avx512f ())
if (clib_cpu_supports_vaes ())
error = crypto_ia32_aesni_gcm_init_vaes (vm);
else if (clib_cpu_supports_avx512f ())
error = crypto_ia32_aesni_gcm_init_avx512 (vm);
else if (clib_cpu_supports_avx2 ())
error = crypto_ia32_aesni_gcm_init_avx2 (vm);