mirror of
https://github.com/openssl/openssl.git
synced 2024-12-27 06:21:43 +08:00
4908787f21
This patch optimizes SM4 for ARM processor using ASIMD instruction It will improve performance if both of following conditions are met: 1) Input data equal to or more than 4 blocks 2) Cipher mode allows parallelism, including ECB,CTR,GCM or CBC decryption This patch implements SM4 SBOX lookup in vector registers, with the benefit of constant processing time over existing C implementation. It is only enabled for micro-architecture N1/V1. In the ideal scenario, performance can reach up to 2.7X When either of above two conditions is not met, e.g. single block input or CFB/OFB mode, CBC encryption, performance could drop about 50%. The assembly code has been reviewed internally by ARM engineer Fangming.Fang@arm.com Signed-off-by: Daniel Hu <Daniel.Hu@arm.com> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/17951) |
||
---|---|---|
.. | ||
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 |