summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2017-01-15 04:09:47 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2017-01-15 04:09:47 +0100
commite9bf14ecebd1f7b91968b10cec05620dd338ac0f (patch)
treed74732107b20c9740a818995a77aab19da10a62c
parent03c44c44b014d29fc62418d6b3cf6ee920c1b6df (diff)
downloadplan9front-e9bf14ecebd1f7b91968b10cec05620dd338ac0f.tar.xz
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.
-rw-r--r--sys/src/libsec/port/chacha.c7
-rw-r--r--sys/src/libsec/port/salsa.c7
2 files changed, 4 insertions, 10 deletions
diff --git a/sys/src/libsec/port/chacha.c b/sys/src/libsec/port/chacha.c
index 49b7ee906..b885b8b92 100644
--- a/sys/src/libsec/port/chacha.c
+++ b/sys/src/libsec/port/chacha.c
@@ -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";
diff --git a/sys/src/libsec/port/salsa.c b/sys/src/libsec/port/salsa.c
index 3a0ba940b..aac9b65c7 100644
--- a/sys/src/libsec/port/salsa.c
+++ b/sys/src/libsec/port/salsa.c
@@ -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";