libsec: avoid temp variables in chacha/salsa ENCRYPT() macro

given that we only pass uchar* with constant offsets
to the s and d arguments of ENCRYPT(), we do not need
the temporary variables sp/dp and the compiler is
smart enougth to combine the const offset with the ones
from GET4() and PUT4() and emit single load and store
instructions for the byte accesses.
This commit is contained in:
cinap_lenrek 2017-01-15 04:09:47 +01:00
parent 03c44c44b0
commit e9bf14eceb
2 changed files with 4 additions and 10 deletions

View file

@ -32,12 +32,9 @@ enum{
#define ENCRYPT(s, x, y, d) {\
u32int v; \
uchar *sp, *dp; \
sp = (s); \
v = GET4(sp); \
v = GET4(s); \
v ^= (x)+(y); \
dp = (d); \
PUT4(dp, v); \
PUT4(d, v); \
}
static uchar sigma[16] = "expand 32-byte k";

View file

@ -9,12 +9,9 @@
#define ENCRYPT(s, x, y, d) {\
u32int v; \
uchar *sp, *dp; \
sp = (s); \
v = GET4(sp); \
v = GET4(s); \
v ^= (x)+(y); \
dp = (d); \
PUT4(dp, v); \
PUT4(d, v); \
}
static uchar sigma[16] = "expand 32-byte k";