From: Niels Möller Date: Thu, 25 Jun 2020 19:17:36 +0000 (+0200) Subject: x86_64: Fix use of macro arguments in chacha QROUND macro. X-Git-Tag: nettle_3.7rc1~104 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db9b66e047a47d5070d99de8a6ccb6ddd79efce6;p=thirdparty%2Fnettle.git x86_64: Fix use of macro arguments in chacha QROUND macro. --- diff --git a/ChangeLog b/ChangeLog index 1cf3e940..c3d1b4fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2020-06-25 Niels Möller + + * x86_64/chacha-core-internal.asm (QROUND): Fix use of macro + arguments. Spotted by Torbjörn Granlund. + 2020-06-02 Niels Möller * examples/nettle-benchmark.c (main): Delete call to diff --git a/x86_64/chacha-core-internal.asm b/x86_64/chacha-core-internal.asm index 9e5dc394..0c6f7424 100644 --- a/x86_64/chacha-core-internal.asm +++ b/x86_64/chacha-core-internal.asm @@ -54,33 +54,33 @@ define(, < por $2, $1 >) >) -C QROUND +C QROUND(x0, x1, x2, x3) define(, < - 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)