mirror of
https://github.com/openssl/openssl.git
synced 2024-12-21 06:09:35 +08:00
63b996e752
Vectorized 'stitched' encrypt + ghash implementation of AES-GCM enabled with AVX512 vAES and vPCLMULQDQ instructions (available starting Intel's IceLake micro-architecture). The performance details for representative IceLake Server and Client platforms are shown below Performance data: OpenSSL Speed KBs/Sec Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (1Core/1Thread) Payload in Bytes 16 64 256 1024 8192 16384 AES-128-GCM Baseline 478708.27 1118296.96 2428092.52 3518199.4 4172355.99 4235762.07 Patched 534613.95 2009345.55 3775588.15 5059517.64 8476794.88 8941541.79 Speedup 1.12 1.80 1.55 1.44 2.03 2.11 AES-256-GCM Baseline 399237.27 961699.9 2136377.65 2979889.15 3554823.37 3617757.5 Patched 475948.13 1720128.51 3462407.12 4696832.2 7532013.16 7924953.91 Speedup 1.19 1.79 1.62 1.58 2.12 2.19 Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz (1Core/1Thread) Payload in Bytes 16 64 256 1024 8192 16384 AES-128-GCM Baseline 259128.54 570756.43 1362554.16 1990654.57 2359128.88 2401671.58 Patched 292139.47 1079320.95 2001974.63 2829007.46 4510318.59 4705314.41 Speedup 1.13 1.89 1.47 1.42 1.91 1.96 AES-256-GCM Baseline 236000.34 550506.76 1234638.08 1716734.57 2011255.6 2028099.99 Patched 247256.32 919731.34 1773270.43 2553239.55 3953115.14 4111227.29 Speedup 1.05 1.67 1.44 1.49 1.97 2.03 Reviewed-by: TJ O'Dwyer, Marcel Cornu, Pablo de Lara Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/17239) |
||
---|---|---|
.. | ||
build.info | ||
cipher_aes_cbc_hmac_sha1_hw.c | ||
cipher_aes_cbc_hmac_sha256_hw.c | ||
cipher_aes_cbc_hmac_sha.c | ||
cipher_aes_cbc_hmac_sha.h | ||
cipher_aes_ccm_hw_aesni.inc | ||
cipher_aes_ccm_hw_s390x.inc | ||
cipher_aes_ccm_hw_t4.inc | ||
cipher_aes_ccm_hw.c | ||
cipher_aes_ccm.c | ||
cipher_aes_ccm.h | ||
cipher_aes_cts.inc | ||
cipher_aes_gcm_hw_aesni.inc | ||
cipher_aes_gcm_hw_armv8.inc | ||
cipher_aes_gcm_hw_ppc.inc | ||
cipher_aes_gcm_hw_s390x.inc | ||
cipher_aes_gcm_hw_t4.inc | ||
cipher_aes_gcm_hw_vaes_avx512.inc | ||
cipher_aes_gcm_hw.c | ||
cipher_aes_gcm.c | ||
cipher_aes_gcm.h | ||
cipher_aes_hw_aesni.inc | ||
cipher_aes_hw_s390x.inc | ||
cipher_aes_hw_t4.inc | ||
cipher_aes_hw.c | ||
cipher_aes_ocb_hw.c | ||
cipher_aes_ocb.c | ||
cipher_aes_ocb.h | ||
cipher_aes_siv_hw.c | ||
cipher_aes_siv.c | ||
cipher_aes_siv.h | ||
cipher_aes_wrp.c | ||
cipher_aes_xts_fips.c | ||
cipher_aes_xts_hw.c | ||
cipher_aes_xts.c | ||
cipher_aes_xts.h | ||
cipher_aes.c | ||
cipher_aes.h | ||
cipher_aria_ccm_hw.c | ||
cipher_aria_ccm.c | ||
cipher_aria_ccm.h | ||
cipher_aria_gcm_hw.c | ||
cipher_aria_gcm.c | ||
cipher_aria_gcm.h | ||
cipher_aria_hw.c | ||
cipher_aria.c | ||
cipher_aria.h | ||
cipher_blowfish_hw.c | ||
cipher_blowfish.c | ||
cipher_blowfish.h | ||
cipher_camellia_cts.inc | ||
cipher_camellia_hw_t4.inc | ||
cipher_camellia_hw.c | ||
cipher_camellia.c | ||
cipher_camellia.h | ||
cipher_cast5_hw.c | ||
cipher_cast5.c | ||
cipher_cast.h | ||
cipher_chacha20_hw.c | ||
cipher_chacha20_poly1305_hw.c | ||
cipher_chacha20_poly1305.c | ||
cipher_chacha20_poly1305.h | ||
cipher_chacha20.c | ||
cipher_chacha20.h | ||
cipher_cts.c | ||
cipher_cts.h | ||
cipher_des_hw.c | ||
cipher_des.c | ||
cipher_des.h | ||
cipher_desx_hw.c | ||
cipher_desx.c | ||
cipher_idea_hw.c | ||
cipher_idea.c | ||
cipher_idea.h | ||
cipher_null.c | ||
cipher_rc2_hw.c | ||
cipher_rc2.c | ||
cipher_rc2.h | ||
cipher_rc4_hmac_md5_hw.c | ||
cipher_rc4_hmac_md5.c | ||
cipher_rc4_hmac_md5.h | ||
cipher_rc4_hw.c | ||
cipher_rc4.c | ||
cipher_rc4.h | ||
cipher_rc5_hw.c | ||
cipher_rc5.c | ||
cipher_rc5.h | ||
cipher_seed_hw.c | ||
cipher_seed.c | ||
cipher_seed.h | ||
cipher_sm4_ccm_hw.c | ||
cipher_sm4_ccm.c | ||
cipher_sm4_ccm.h | ||
cipher_sm4_gcm_hw.c | ||
cipher_sm4_gcm.c | ||
cipher_sm4_gcm.h | ||
cipher_sm4_hw.c | ||
cipher_sm4.c | ||
cipher_sm4.h | ||
cipher_tdes_common.c | ||
cipher_tdes_default_hw.c | ||
cipher_tdes_default.c | ||
cipher_tdes_default.h | ||
cipher_tdes_hw.c | ||
cipher_tdes_wrap_hw.c | ||
cipher_tdes_wrap.c | ||
cipher_tdes.c | ||
cipher_tdes.h | ||
ciphercommon_block.c | ||
ciphercommon_ccm_hw.c | ||
ciphercommon_ccm.c | ||
ciphercommon_gcm_hw.c | ||
ciphercommon_gcm.c | ||
ciphercommon_hw.c | ||
ciphercommon_local.h | ||
ciphercommon.c |