Commit a41b2129 authored by Tianjia Zhang's avatar Tianjia Zhang Committed by Herbert Xu
Browse files

crypto: arm64/sm3 - add NEON assembly implementation



This patch adds the NEON acceleration implementation of the SM3 hash
algorithm. The main algorithm is based on SM3 NEON accelerated work of
the libgcrypt project.

Benchmark on T-Head Yitian-710 2.75 GHz, the data comes from the 326 mode
of tcrypt, and compares the performance data of sm3-generic and sm3-ce.
The abscissas are blocks of different lengths. The data is tabulated and
the unit is Mb/s:

update-size    |      16      64     256    1024    2048    4096    8192
---------------+--------------------------------------------------------
sm3-generic    |  185.24  221.28  301.26  307.43  300.83  308.82  308.91
sm3-neon       |  171.81  220.20  322.94  339.28  334.09  343.61  343.87
sm3-ce         |  227.48  333.48  502.62  527.87  520.45  534.91  535.40

Signed-off-by: default avatarTianjia Zhang <tianjia.zhang@linux.alibaba.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent e1fa51aa
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -96,6 +96,17 @@ config CRYPTO_SHA3_ARM64
	  Architecture: arm64 using:
	  - ARMv8.2 Crypto Extensions

config CRYPTO_SM3_NEON
	tristate "Hash functions: SM3 (NEON)"
	depends on KERNEL_MODE_NEON
	select CRYPTO_HASH
	select CRYPTO_SM3
	help
	  SM3 (ShangMi 3) secure hash function (OSCCA GM/T 0004-2012)

	  Architecture: arm64 using:
	  - NEON (Advanced SIMD) extensions

config CRYPTO_SM3_ARM64_CE
	tristate "Hash functions: SM3 (ARMv8.2 Crypto Extensions)"
	depends on KERNEL_MODE_NEON
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@ sha512-ce-y := sha512-ce-glue.o sha512-ce-core.o
obj-$(CONFIG_CRYPTO_SHA3_ARM64) += sha3-ce.o
sha3-ce-y := sha3-ce-glue.o sha3-ce-core.o

obj-$(CONFIG_CRYPTO_SM3_NEON) += sm3-neon.o
sm3-neon-y := sm3-neon-glue.o sm3-neon-core.o

obj-$(CONFIG_CRYPTO_SM3_ARM64_CE) += sm3-ce.o
sm3-ce-y := sm3-ce-glue.o sm3-ce-core.o

+600 −0

File added.

Preview size limit exceeded, changes collapsed.

+103 −0

File added.

Preview size limit exceeded, changes collapsed.