crypto: x86/sm3 - add AVX assembly implementation
authorTianjia Zhang <tianjia.zhang@linux.alibaba.com>
Fri, 7 Jan 2022 12:06:59 +0000 (20:06 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 28 Jan 2022 05:51:11 +0000 (16:51 +1100)
commit930ab34d906d9c44727c9dcfeafcfcd33e3639e7
treee0c41fb7507428bd15bd9d17cec24770eb396cd6
parentb4784a45ea69577f21f89898c71127774a090a2a
crypto: x86/sm3 - add AVX assembly implementation

This patch adds AVX assembly accelerated implementation of SM3 secure
hash algorithm. From the benchmark data, compared to pure software
implementation sm3-generic, the performance increase is up to 38%.

The main algorithm implementation based on SM3 AES/BMI2 accelerated
work by libgcrypt at:
https://gnupg.org/software/libgcrypt/index.html

Benchmark on Intel i5-6200U 2.30GHz, performance data of two
implementations, pure software sm3-generic and sm3-avx acceleration.
The data comes from the 326 mode and 422 mode of tcrypt. The abscissas
are different lengths of per update. The data is tabulated and the
unit is Mb/s:

update-size |     16      64     256    1024    2048    4096    8192
------------+-------------------------------------------------------
sm3-generic | 105.97  129.60  182.12  189.62  188.06  193.66  194.88
sm3-avx     | 119.87  163.05  244.44  260.92  257.60  264.87  265.88

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/Makefile
arch/x86/crypto/sm3-avx-asm_64.S [new file with mode: 0644]
arch/x86/crypto/sm3_avx_glue.c [new file with mode: 0644]
crypto/Kconfig