Skip to content

Commit

Permalink
siphash: Reorder hash state in the struct
Browse files Browse the repository at this point in the history
If they are ordered v0, v2, v1, v3, the compiler can find just a few
simd optimizations itself.

The new optimization I could observe on x86-64 was using 128 bit
registers for the v = key ^ constant operations in new / reset.
  • Loading branch information
bluss committed Jul 25, 2015
1 parent 5f6a61e commit 27c44ce
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/libcore/hash/sip.rs
Expand Up @@ -32,9 +32,13 @@ pub struct SipHasher {
k0: u64,
k1: u64,
length: usize, // how many bytes we've processed
// v0, v2 and v1, v3 show up in pairs in the algorithm,
// and simd implementations of SipHash will use vectors
// of v02 and v13. By placing them in this order in the struct,
// the compiler can pick up on just a few simd optimizations by itself.
v0: u64, // hash state
v1: u64,
v2: u64,
v1: u64,
v3: u64,
tail: u64, // unprocessed bytes le
ntail: usize, // how many bytes in tail are valid
Expand Down

0 comments on commit 27c44ce

Please sign in to comment.