crypto: arm/sha256 - Add optimized SHA-256/224
authorSami Tolvanen <samitolvanen@google.com>
Fri, 3 Apr 2015 10:03:40 +0000 (18:03 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 3 Apr 2015 10:03:40 +0000 (18:03 +0800)
commitf2f770d74a8d12265e023f2792ad2eb996cabe1a
tree063649f19b656ad05f618da8fcce992a1d58d2ab
parent87b1675634e1e9f1570445c55604204771ac9078
crypto: arm/sha256 - Add optimized SHA-256/224

Add Andy Polyakov's optimized assembly and NEON implementations for
SHA-256/224.

The sha256-armv4.pl script for generating the assembly code is from
OpenSSL commit 51f8d095562f36cdaa6893597b5c609e943b0565.

Compared to sha256-generic these implementations have the following
tcrypt speed improvements on Motorola Nexus 6 (Snapdragon 805):

  bs    b/u      sha256-neon  sha256-asm
  16    16       x1.32        x1.19
  64    16       x1.27        x1.15
  64    64       x1.36        x1.20
  256   16       x1.22        x1.11
  256   64       x1.36        x1.19
  256   256      x1.59        x1.23
  1024  16       x1.21        x1.10
  1024  256      x1.65        x1.23
  1024  1024     x1.76        x1.25
  2048  16       x1.21        x1.10
  2048  256      x1.66        x1.23
  2048  1024     x1.78        x1.25
  2048  2048     x1.79        x1.25
  4096  16       x1.20        x1.09
  4096  256      x1.66        x1.23
  4096  1024     x1.79        x1.26
  4096  4096     x1.82        x1.26
  8192  16       x1.20        x1.09
  8192  256      x1.67        x1.23
  8192  1024     x1.80        x1.26
  8192  4096     x1.85        x1.28
  8192  8192     x1.85        x1.27

Where bs refers to block size and b/u to bytes per update.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Cc: Andy Polyakov <appro@openssl.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm/crypto/Kconfig
arch/arm/crypto/Makefile
arch/arm/crypto/sha2-ce-glue.c
arch/arm/crypto/sha256-armv4.pl [new file with mode: 0644]
arch/arm/crypto/sha256-core.S_shipped [new file with mode: 0644]
arch/arm/crypto/sha256_glue.c [new file with mode: 0644]
arch/arm/crypto/sha256_glue.h [new file with mode: 0644]
arch/arm/crypto/sha256_neon_glue.c [new file with mode: 0644]