Messages in this thread |  | | | Date | Thu, 12 Jul 2012 13:51:50 -0700 | | Subject | Re: [PATCH 1/1] core-kernel: use multiply instead of shifts in hash_64 | | From | Andrew Hunter <> |
| |
On Tue, Jul 10, 2012 at 6:35 AM, Michael Tokarev <mjt@tls.msk.ru> wrote: > On 03.07.2012 00:25, Andrew Hunter wrote: >> diff --git a/include/linux/hash.h b/include/linux/hash.h >> index b80506b..daabc3d 100644 >> --- a/include/linux/hash.h >> +++ b/include/linux/hash.h >> @@ -34,7 +34,9 @@ >> static inline u64 hash_64(u64 val, unsigned int bits) >> { >> u64 hash = val; >> - >> +#if BITS_PER_LONG == 64 >> + hash *= GOLDEN_RATIO_PRIME_64; >> +#else >> /* Sigh, gcc can't optimise this alone like it does for 32 bits. */ > > Hmm. Does this comment make sense here now? >
I haven't checked what output gcc provides for 32-bit kernels with this or a literal multiply. It's not even clear what optimization is _asked_ for here (possibly the reduction of strength that we probably don't even want.)
|  |