]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
csiphash: don't attempt unaligned access
authorNick Mathewson <nickm@torproject.org>
Tue, 18 Mar 2014 14:43:46 +0000 (10:43 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 18 Mar 2014 14:43:46 +0000 (10:43 -0400)
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

index 4f58c4a141bc68346dd81a5cfb214f70d1ab8396..2a96f28815f1f688c69f95ea47d1d23140635350 100644 (file)
        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;