On Thu, Jan 26, 2006 at 12:42:09PM +0530, Balbir Singh wrote:
> > +static inline unsigned int hweight32(unsigned int w)
> > +{
> > + unsigned int res = (w & 0x55555555) + ((w >> 1) & 0x55555555);
> > + res = (res & 0x33333333) + ((res >> 2) & 0x33333333);
> > + res = (res & 0x0F0F0F0F) + ((res >> 4) & 0x0F0F0F0F);
> > + res = (res & 0x00FF00FF) + ((res >> 8) & 0x00FF00FF);
> > + return (res & 0x0000FFFF) + ((res >> 16) & 0x0000FFFF);
> > +}
> > +
>
> This can be replaced with
>
> register int res=w;
> res=res-((res>>1)&0x55555555);
> res=(res&0x33333333)+((res>>2)&0x33333333);
> res=(res+(res>>4))&0x0f0f0f0f;
> res=res+(res>>8);
> return (res+(res>>16)) & 0xff;
Probably you are right.
Unfortunately, it is difficult for me to prove that sane equivalence.
Anyway those hweight*() functions are copied from include/linux/bitops.h:
generic_hweight*(). So you can optimize these functions.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- Prev by Date:
Re: [PATCH 8/12] generic hweight{32,16,8}()
- Next by Date:
Re: Right way to configure a driver? (sysfs, ioctl, proc, configfs,....)
- Previous by thread:
Re: [PATCH 8/12] generic hweight{32,16,8}()
- Next by thread:
Re: [PATCH 8/12] generic hweight{32,16,8}()
- Index(es):
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]