Messages in this thread | | | Subject | Re: [PATCH] Optimize int_sqrt for small values for faster idle | From | Eric Dumazet <> | Date | Tue, 02 Feb 2016 13:30:10 -0800 |
| |
On Tue, 2016-02-02 at 21:46 +0100, Rasmus Villemoes wrote: > On Tue, Feb 02 2016, Eric Dumazet <eric.dumazet@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
crypto/vmac.c has this, you could make it generic maybe.
#define MUL32(i1, i2) ((u64)(u32)(i1)*(u32)(i2))
| |