Message ID | 20220107120700.730-1-tianjia.zhang@linux.alibaba.com (mailing list archive) |
---|---|
Headers | show |
Series | Introduce x86 assembly accelerated implementation for SM3 algorithm | expand |
On Fri, Jan 07, 2022 at 08:06:54PM +0800, Tianjia Zhang wrote: > 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%. > > --- > v4 changes: > - Rebase on latest cryptodev-2.6/master > - Fix the compilation error of arm64/sm3 > > 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 | 28 +- > 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, 1013 insertions(+), 167 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 All applied. Thanks.