crypto: arm/sha512 - accelerated SHA-512 using ARM generic ASM and NEON
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Fri, 8 May 2015 08:46:21 +0000 (10:46 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 11 May 2015 07:08:01 +0000 (15:08 +0800)
commitc80ae7ca372606a3971dcdfa3420275cf17ef6b6
tree369824cb056ee2f8c76bbbce405b43e24b66ad57
parent551d7ed2fdee1fb7bba2dbd55b61e821a10a7c51
crypto: arm/sha512 - accelerated SHA-512 using ARM generic ASM and NEON

This replaces the SHA-512 NEON module with the faster and more
versatile implementation from the OpenSSL project. It consists
of both a NEON and a generic ASM version of the core SHA-512
transform, where the NEON version reverts to the ASM version
when invoked in non-process context.

This patch is based on the OpenSSL upstream version b1a5d1c65208
of sha512-armv4.pl, which can be found here:

  https://git.openssl.org/gitweb/?p=openssl.git;h=b1a5d1c65208

Performance relative to the generic implementation (measured
using tcrypt.ko mode=306 sec=1 running on a Cortex-A57 under
KVM):

  input size block size asm neon old neon

  16 16 1.39 2.54 2.21
  64 16 1.32 2.33 2.09
  64 64 1.38 2.53 2.19
  256 16 1.31 2.28 2.06
  256 64 1.38 2.54 2.25
  256 256 1.40 2.77 2.39
  1024 16 1.29 2.22 2.01
  1024 256 1.40 2.82 2.45
  1024 1024 1.41 2.93 2.53
  2048 16 1.33 2.21 2.00
  2048 256 1.40 2.84 2.46
  2048 1024 1.41 2.96 2.55
  2048 2048 1.41 2.98 2.56
  4096 16 1.34 2.20 1.99
  4096 256 1.40 2.84 2.46
  4096 1024 1.41 2.97 2.56
  4096 4096 1.41 3.01 2.58
  8192 16 1.34 2.19 1.99
  8192 256 1.40 2.85 2.47
  8192 1024 1.41 2.98 2.56
  8192 4096 1.41 2.71 2.59
  8192 8192 1.51 3.51 2.69

Acked-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm/crypto/Kconfig
arch/arm/crypto/Makefile
arch/arm/crypto/sha512-armv4.pl [new file with mode: 0644]
arch/arm/crypto/sha512-armv7-neon.S [deleted file]
arch/arm/crypto/sha512-core.S_shipped [new file with mode: 0644]
arch/arm/crypto/sha512-glue.c [new file with mode: 0644]
arch/arm/crypto/sha512-neon-glue.c [new file with mode: 0644]
arch/arm/crypto/sha512.h [new file with mode: 0644]
arch/arm/crypto/sha512_neon_glue.c [deleted file]