aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/algboss.c
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2018-08-27 17:38:12 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2018-09-04 11:37:04 +0800
commit2fffee536c6875bdf546cee0045fed8faa5ea51f (patch)
tree6d98c7294ece7fbcb26770da27c236f179c12f05 /crypto/algboss.c
parentcrypto: arm64/crct10dif - preparatory refactor for 8x8 PMULL version (diff)
downloadlinux-dev-2fffee536c6875bdf546cee0045fed8faa5ea51f.tar.xz
linux-dev-2fffee536c6875bdf546cee0045fed8faa5ea51f.zip
crypto: arm64/crct10dif - implement non-Crypto Extensions alternative
The arm64 implementation of the CRC-T10DIF algorithm uses the 64x64 bit polynomial multiplication instructions, which are optional in the architecture, and if these instructions are not available, we fall back to the C routine which is slow and inefficient. So let's reuse the 64x64 bit PMULL alternative from the GHASH driver that uses a sequence of ~40 instructions involving 8x8 bit PMULL and some shifting and masking. This is a lot slower than the original, but it is still twice as fast as the current [unoptimized] C code on Cortex-A53, and it is time invariant and much easier on the D-cache. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/algboss.c')
0 files changed, 0 insertions, 0 deletions