diff options
| author | Felipe Balbi <balbi@ti.com> | 2014-09-16 09:53:59 -0500 |
|---|---|---|
| committer | Felipe Balbi <balbi@ti.com> | 2014-09-16 09:53:59 -0500 |
| commit | 4cd41ffd27b6b775445ecfdb72b592b71d6b4a32 (patch) | |
| tree | 61e8c51ed5b9fae163d2d54967ebda02805c0bfa /include/linux/hash.h | |
| parent | d9152161b4bfd131a8253a5b9fcd8ba9b10277c4 (diff) | |
| parent | 9e82bf014195d6f0054982c463575cdce24292be (diff) | |
Merge tag 'v3.17-rc5' into next
Linux 3.17-rc5
Signed-off-by: Felipe Balbi <balbi@ti.com>
Conflicts:
Documentation/devicetree/bindings/usb/mxs-phy.txt
drivers/usb/phy/phy-mxs-usb.c
Diffstat (limited to 'include/linux/hash.h')
| -rw-r--r-- | include/linux/hash.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/hash.h b/include/linux/hash.h index bd1754c7ecef..d0494c399392 100644 --- a/include/linux/hash.h +++ b/include/linux/hash.h @@ -37,6 +37,9 @@ static __always_inline u64 hash_64(u64 val, unsigned int bits) { u64 hash = val; +#if defined(CONFIG_ARCH_HAS_FAST_MULTIPLIER) && BITS_PER_LONG == 64 + hash = hash * GOLDEN_RATIO_PRIME_64; +#else /* Sigh, gcc can't optimise this alone like it does for 32 bits. */ u64 n = hash; n <<= 18; @@ -51,6 +54,7 @@ static __always_inline u64 hash_64(u64 val, unsigned int bits) hash += n; n <<= 2; hash += n; +#endif /* High bits are more random, so use them. */ return hash >> (64 - bits); |
