On Fri, Apr 01, 2011 at 08:02:24PM +0200, Alexander Graf wrote: > On 01.04.2011, at 19:58, Aurelien Jarno wrote: > > On Fri, Apr 01, 2011 at 03:15:13PM +1100, David Gibson wrote: [snip] > >> +target_ulong helper_popcntd (target_ulong val) > >> +{ > >> + val = (val & 0x5555555555555555ULL) + ((val >> 1) & > >> + 0x5555555555555555ULL); > >> + val = (val & 0x3333333333333333ULL) + ((val >> 2) & > >> + 0x3333333333333333ULL); > >> + val = (val & 0x0f0f0f0f0f0f0f0fULL) + ((val >> 4) & > >> + 0x0f0f0f0f0f0f0f0fULL); > >> + val = (val & 0x00ff00ff00ff00ffULL) + ((val >> 8) & > >> + 0x00ff00ff00ff00ffULL); > >> + val = (val & 0x0000ffff0000ffffULL) + ((val >> 16) & > >> + 0x0000ffff0000ffffULL); > >> + val = (val & 0x00000000ffffffffULL) + ((val >> 32) & > >> + 0x00000000ffffffffULL); > >> + return val; > >> +} > > > > I probably arrive a bit late, but note that for this one you can use > > ctpop64() (from host-utils.h), which also uses a GCC builtin when > > available. > > Ah, nice. David - sounds like a good chance for a follow-up patch :)
Done. I'll send it when I next send a batch for merging. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson