On Tue, Feb 02 2016, Eric Dumazet <eric.duma...@gmail.com> wrote: > On Tue, 2016-02-02 at 00:08 +0100, Rasmus Villemoes wrote: > >> Thanks. (Is there a good way to tell gcc that avg*avg is actually a >> 32x32->64 multiplication?) > > If avg is 32bit, compiler does that for you. > > u32 avg = ... > > u64 result = (u64)avg * avg;
Yeah, but in this case avg is u64 because it is used to temporarily contain the sum of a bunch of u32s, before being divided by #bunch. So I'd have to write that as (u64)(u32)avg * (u32)avg, which isn't very readable :-/ I just thought the scenario of a u64 known to be holding a value < 2^32 was common enough that some utility macros already existed. Rasmus