]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
x86_64: Fix use of macro arguments in chacha QROUND macro.
authorNiels Möller <nisse@lysator.liu.se>
Thu, 25 Jun 2020 19:17:36 +0000 (21:17 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Thu, 25 Jun 2020 19:17:36 +0000 (21:17 +0200)
ChangeLog
x86_64/chacha-core-internal.asm

index 1cf3e94038daf4cdcf17bbf46b6ab306bc818397..c3d1b4fabdf73e76a6f47735fa18a107e00896ba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-25  Niels Möller  <nisse@lysator.liu.se>
+
+       * x86_64/chacha-core-internal.asm (QROUND): Fix use of macro
+       arguments. Spotted by Torbjörn Granlund.
+
 2020-06-02  Niels Möller  <nisse@lysator.liu.se>
 
        * examples/nettle-benchmark.c (main): Delete call to
index 9e5dc394fb9ea73af57af5e735ac1b0fedc6e4e9..0c6f74247d4fe3fd7a238a60104712089d5295df 100644 (file)
@@ -54,33 +54,33 @@ define(<ROTL_BY_16>, <
        por     $2, $1
 >)
 >)
-C QROUND
+C QROUND(x0, x1, x2, x3)
 define(<QROUND>, <
-       paddd   X1, X0
-       pxor    X0, X3
-       movaps  X3, T0
-       ROTL_BY_16(X3, T0)
-
-       paddd   X3, X2
-       pxor    X2, X1
-       movaps  X1, T0
-       pslld   <$>12, X1
+       paddd   $2, $1
+       pxor    $1, $4
+       movaps  $4, T0
+       ROTL_BY_16($4, T0)
+
+       paddd   $4, $3
+       pxor    $3, $2
+       movaps  $2, T0
+       pslld   <$>12, $2
        psrld   <$>20, T0
-       por     T0, X1
+       por     T0, $2
 
-       paddd   X1, X0
-       pxor    X0, X3
-       movaps  X3, T0
-       pslld   <$>8, X3
+       paddd   $2, $1
+       pxor    $1, $4
+       movaps  $4, T0
+       pslld   <$>8, $4
        psrld   <$>24, T0
-       por     T0, X3
+       por     T0, $4
                
-       paddd   X3, X2
-       pxor    X2, X1
-       movaps  X1, T0
-       pslld   <$>7, X1
+       paddd   $4, $3
+       pxor    $3, $2
+       movaps  $2, T0
+       pslld   <$>7, $2
        psrld   <$>25, T0
-       por     T0, X1
+       por     T0, $2
 >)
        
        C _chacha_core(uint32_t *dst, const uint32_t *src, unsigned rounds)