From aaa33f144c4ad0db0c067df2f6703790be400acb Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 18 Mar 2014 10:43:46 -0400 Subject: csiphash: don't attempt unaligned access In digestmap_set/get benchmarks, doing unaligned access on x86 doesn't save more than a percent or so in the fast case. In the slow case (where we cross a cache line), it could be pretty expensive. It also makes ubsan unhappy. --- src/ext/csiphash.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ext/csiphash.c b/src/ext/csiphash.c index 4f58c4a141..2a96f28815 100644 --- a/src/ext/csiphash.c +++ b/src/ext/csiphash.c @@ -81,11 +81,16 @@ HALF_ROUND(v0,v1,v2,v3,13,16); \ HALF_ROUND(v2,v1,v0,v3,17,21); +#if 0 +/* This does not seem to save very much runtime in the fast case, and it's + * potentially a big loss in the slow case where we're misaligned and we cross + * a cache line. */ #if (defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(__x86_64__) || \ defined(_M_AMD64) || defined(_M_X64) || defined(__INTEL__)) # define UNALIGNED_OK 1 #endif +#endif uint64_t siphash24(const void *src, unsigned long src_sz, const struct sipkey *key) { uint64_t k0 = key->k0; -- cgit v1.2.3-54-g00ecf