crypto: x86/sha256-ni - simplify do_4rounds
authorEric Biggers <ebiggers@google.com>
Thu, 11 Apr 2024 16:23:59 +0000 (09:23 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 19 Apr 2024 10:54:18 +0000 (18:54 +0800)
Instead of loading the message words into both MSG and \m0 and then
adding the round constants to MSG, load the message words into \m0 and
the round constants into MSG and then add \m0 to MSG.  This shortens the
source code slightly.  It changes the instructions slightly, but it
doesn't affect binary code size and doesn't seem to affect performance.

Suggested-by: Stefan Kanthak <stefan.kanthak@nexgo.de>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/sha256_ni_asm.S

index ffc9f1c75c15a74c5e4a760cd4a8cc8476ab437d..d515a55a3bc1d06a9ca63f403d9d3b7f1ecdb139 100644 (file)
 
 .macro do_4rounds      i, m0, m1, m2, m3
 .if \i < 16
-       movdqu          \i*4(DATA_PTR), MSG
-       pshufb          SHUF_MASK, MSG
-       movdqa          MSG, \m0
-.else
-       movdqa          \m0, MSG
+       movdqu          \i*4(DATA_PTR), \m0
+       pshufb          SHUF_MASK, \m0
 .endif
-       paddd           (\i-32)*4(SHA256CONSTANTS), MSG
+       movdqa          (\i-32)*4(SHA256CONSTANTS), MSG
+       paddd           \m0, MSG
        sha256rnds2     STATE0, STATE1
 .if \i >= 12 && \i < 60
        movdqa          \m0, TMP