From db9b66e047a47d5070d99de8a6ccb6ddd79efce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Thu, 25 Jun 2020 21:17:36 +0200 Subject: [PATCH] x86_64: Fix use of macro arguments in chacha QROUND macro. --- ChangeLog | 5 ++++ x86_64/chacha-core-internal.asm | 42 ++++++++++++++++----------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1cf3e940..c3d1b4fa 100644 --- 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 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(<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) -- GitLab