Re: [PATCH 1/1] core-kernel: use multiply instead of shifts in hash_64

From: Andrew Hunter
Date: Thu Jul 12 2012 - 16:51:47 EST


On Tue, Jul 10, 2012 at 6:35 AM, Michael Tokarev <mjt@xxxxxxxxxx> 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.)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/