This series of patches creates an stand-alone library for SM3 hash algorithm in the lib/crypto directory, and makes the implementations that originally depended on sm3-generic depend on the stand-alone SM3 library, which also includes sm3-generic itself. On this basis, the AVX assembly acceleration implementation of SM3 algorithm is introduced, the main algorithm implementation based on SM3 AES/BMI2 accelerated work by libgcrypt at: https://gnupg.org/software/libgcrypt/index.html >From the performance benchmark data, the performance improvement of SM3 algorithm after AVX optimization can reach up to 38%. --- v3 changes: - update git commit message for patch 01 v2 changes: - x86/sm3: Change K macros to signed decimal and use LEA and 32-bit offset Tianjia Zhang (6): crypto: sm3 - create SM3 stand-alone library crypto: arm64/sm3-ce - make dependent on sm3 library crypto: sm2 - make dependent on sm3 library crypto: sm3 - make dependent on sm3 library crypto: x86/sm3 - add AVX assembly implementation crypto: tcrypt - add asynchronous speed test for SM3 arch/arm64/crypto/Kconfig | 2 +- arch/arm64/crypto/sm3-ce-glue.c | 20 +- arch/x86/crypto/Makefile | 3 + arch/x86/crypto/sm3-avx-asm_64.S | 517 +++++++++++++++++++++++++++++++ arch/x86/crypto/sm3_avx_glue.c | 134 ++++++++ crypto/Kconfig | 16 +- crypto/sm2.c | 38 +-- crypto/sm3_generic.c | 142 +-------- crypto/tcrypt.c | 14 +- include/crypto/sm3.h | 34 +- lib/crypto/Kconfig | 3 + lib/crypto/Makefile | 3 + lib/crypto/sm3.c | 246 +++++++++++++++ 13 files changed, 1007 insertions(+), 165 deletions(-) create mode 100644 arch/x86/crypto/sm3-avx-asm_64.S create mode 100644 arch/x86/crypto/sm3_avx_glue.c create mode 100644 lib/crypto/sm3.c -- 2.32.0