From: mita@miraclelinux.com (Akinobu Mita)
To: Balbir Singh <bsingharora@gmail.com>
Cc: Grant Grundler <iod00d@hp.com>,
Linux Kernel Development <linux-kernel@vger.kernel.org>,
linux-ia64@vger.kernel.org
Subject: Re: [PATCH 8/12] generic hweight{32,16,8}()
Date: Fri, 27 Jan 2006 06:40:34 +0000 [thread overview]
Message-ID: <20060127064034.GB8166@miraclelinux.com> (raw)
In-Reply-To: <661de9470601262140x4e870cd5me9ba0f8e9d52f421@mail.gmail.com>
On Fri, Jan 27, 2006 at 11:10:29AM +0530, Balbir Singh wrote:
> On 1/27/06, Akinobu Mita <mita@miraclelinux.com> wrote:
> > 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.
> >
>
> Well, a proof is not difficult. This is a well tested proven piece of
> code published by Don Knuth. If you need a proof, I can provide one.
Thanks, I want.
WARNING: multiple messages have this Message-ID (diff)
From: mita@miraclelinux.com (Akinobu Mita)
To: Balbir Singh <bsingharora@gmail.com>
Cc: Grant Grundler <iod00d@hp.com>,
Linux Kernel Development <linux-kernel@vger.kernel.org>,
linux-ia64@vger.kernel.org
Subject: Re: [PATCH 8/12] generic hweight{32,16,8}()
Date: Fri, 27 Jan 2006 15:40:34 +0900 [thread overview]
Message-ID: <20060127064034.GB8166@miraclelinux.com> (raw)
In-Reply-To: <661de9470601262140x4e870cd5me9ba0f8e9d52f421@mail.gmail.com>
On Fri, Jan 27, 2006 at 11:10:29AM +0530, Balbir Singh wrote:
> On 1/27/06, Akinobu Mita <mita@miraclelinux.com> wrote:
> > 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.
> >
>
> Well, a proof is not difficult. This is a well tested proven piece of
> code published by Don Knuth. If you need a proof, I can provide one.
Thanks, I want.
next prev parent reply other threads:[~2006-01-27 6:40 UTC|newest]
Thread overview: 265+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-25 11:26 [PATCH 0/6] RFC: use include/asm-generic/bitops.h Akinobu Mita
2006-01-25 11:26 ` Akinobu Mita
2006-01-25 11:26 ` Akinobu Mita
2006-01-25 11:26 ` Akinobu Mita
2006-01-25 11:26 ` Akinobu Mita
2006-01-25 11:28 ` [PATCH 1/6] {set,clear,test}_bit() related cleanup Akinobu Mita
2006-01-25 11:28 ` Akinobu Mita
2006-01-25 11:28 ` Akinobu Mita
2006-01-25 11:28 ` Akinobu Mita
2006-01-25 11:28 ` Akinobu Mita
2006-01-25 11:46 ` Andi Kleen
2006-01-25 11:46 ` Andi Kleen
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:14 ` Pavel Machek
2006-01-26 16:47 ` Russell King
2006-01-26 16:47 ` Russell King
2006-01-26 16:47 ` Russell King
2006-01-26 16:47 ` Russell King
2006-01-26 16:47 ` Russell King
2006-01-26 19:14 ` Paul Jackson
2006-01-26 19:14 ` Paul Jackson
2006-01-26 19:14 ` Paul Jackson
2006-01-25 11:30 ` [PATCH 2/6] use non atomic operations for minix_*_bit() and ext2_*_bit() Akinobu Mita
2006-01-25 11:30 ` Akinobu Mita
2006-01-25 11:30 ` Akinobu Mita
2006-01-25 11:30 ` Akinobu Mita
2006-01-25 11:30 ` Akinobu Mita
2006-01-25 11:32 ` [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h Akinobu Mita
2006-01-25 11:32 ` Akinobu Mita
2006-01-25 11:32 ` Akinobu Mita
2006-01-25 11:32 ` Akinobu Mita
2006-01-25 11:32 ` Akinobu Mita
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-25 11:54 ` Keith Owens
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:13 ` Akinobu Mita
2006-01-26 2:19 ` Akinobu Mita
2006-01-25 20:02 ` Russell King
2006-01-25 20:02 ` Russell King
2006-01-25 20:02 ` Russell King
2006-01-25 20:02 ` Russell King
2006-01-25 20:02 ` Russell King
2006-01-25 20:59 ` Grant Grundler
2006-01-25 20:59 ` Grant Grundler
2006-01-26 3:27 ` Akinobu Mita
2006-01-26 3:27 ` Akinobu Mita
2006-01-26 3:29 ` [PATCH 1/12] generic *_bit() Akinobu Mita
2006-01-26 3:29 ` Akinobu Mita
2006-02-01 15:11 ` Chen, Kenneth W
2006-02-01 15:11 ` Chen, Kenneth W
2006-02-01 18:02 ` Christoph Hellwig
2006-02-01 18:02 ` Christoph Hellwig
2006-02-01 18:07 ` Chen, Kenneth W
2006-02-01 18:07 ` Chen, Kenneth W
2006-02-01 19:19 ` Russell King
2006-02-01 19:19 ` Russell King
2006-02-03 10:24 ` Geert Uytterhoeven
2006-02-03 10:24 ` Geert Uytterhoeven
2006-02-03 10:27 ` Russell King
2006-02-03 10:27 ` Russell King
2006-02-01 19:39 ` Grant Grundler
2006-02-01 19:39 ` Grant Grundler
2006-02-02 22:43 ` Paul Mackerras
2006-02-02 22:43 ` Paul Mackerras
2006-02-01 19:25 ` Chen, Kenneth W
2006-02-01 19:25 ` Chen, Kenneth W
2006-02-01 19:35 ` Russell King
2006-02-01 19:35 ` Russell King
2006-02-01 21:41 ` Chen, Kenneth W
2006-02-01 21:41 ` Chen, Kenneth W
2006-02-01 22:09 ` Grant Grundler
2006-02-01 22:09 ` Grant Grundler
2006-02-01 22:49 ` Anton Altaparmakov
2006-02-01 22:49 ` Anton Altaparmakov
2006-02-02 0:08 ` Grant Grundler
2006-02-02 0:08 ` Grant Grundler
2006-02-02 8:52 ` Anton Altaparmakov
2006-02-02 8:52 ` Anton Altaparmakov
2006-02-02 10:13 ` Andreas Schwab
2006-02-02 10:13 ` Andreas Schwab
2006-02-03 17:07 ` Luck, Tony
2006-02-03 17:07 ` Luck, Tony
2006-01-26 3:30 ` [PATCH 2/12] generic __ffs() Akinobu Mita
2006-01-26 3:30 ` Akinobu Mita
2006-01-26 3:31 ` [PATCH 3/12] generic ffz() Akinobu Mita
2006-01-26 3:31 ` Akinobu Mita
2006-01-26 8:21 ` Michael Tokarev
2006-01-26 8:21 ` Michael Tokarev
2006-01-27 6:39 ` [PATCH] parisc: add ()-pair in __ffs() Akinobu Mita
2006-01-27 6:39 ` Akinobu Mita
2006-01-26 3:32 ` [PATCH 4/12] generic fls() and fls64() Akinobu Mita
2006-01-26 3:32 ` Akinobu Mita
2006-01-26 3:33 ` [PATCH 5/12] generic find_{next,first}{,_zero}_bit() Akinobu Mita
2006-01-26 3:33 ` Akinobu Mita
2006-01-26 3:34 ` [PATCH 6/12] generic sched_find_first_bit() Akinobu Mita
2006-01-26 3:34 ` Akinobu Mita
2006-01-26 3:35 ` [PATCH 7/12] generic ffs() Akinobu Mita
2006-01-26 3:35 ` Akinobu Mita
2006-01-26 3:36 ` [PATCH 8/12] generic hweight{32,16,8}() Akinobu Mita
2006-01-26 3:36 ` Akinobu Mita
2006-01-26 7:12 ` Balbir Singh
2006-01-26 7:24 ` Balbir Singh
2006-01-26 10:04 ` Rutger Nijlunsing
2006-01-26 10:04 ` Rutger Nijlunsing
2006-01-27 4:55 ` Akinobu Mita
2006-01-27 4:55 ` Akinobu Mita
2006-01-27 5:40 ` Balbir Singh
2006-01-27 5:52 ` Balbir Singh
2006-01-27 6:40 ` Akinobu Mita [this message]
2006-01-27 6:40 ` Akinobu Mita
2006-01-31 11:14 ` Balbir Singh
2006-01-31 11:26 ` Balbir Singh
2006-01-26 18:57 ` Bryan O'Sullivan
2006-01-26 18:57 ` Bryan O'Sullivan
2006-01-27 4:43 ` Akinobu Mita
2006-01-27 4:43 ` Akinobu Mita
2006-01-27 5:23 ` Bryan O'Sullivan
2006-01-27 5:23 ` Bryan O'Sullivan
2006-01-31 16:49 ` linux
2006-01-31 16:49 ` linux
2006-01-31 18:14 ` Grant Grundler
2006-01-31 18:14 ` Grant Grundler
2006-02-02 9:34 ` Balbir Singh
2006-02-02 9:46 ` Balbir Singh
2006-01-26 3:36 ` [PATCH 9/12] generic hweight64() Akinobu Mita
2006-01-26 3:36 ` Akinobu Mita
2006-01-26 7:05 ` Balbir Singh
2006-01-26 7:17 ` Balbir Singh
2006-01-26 3:38 ` [PATCH 10/12] generic ext2_{set,clear,test,find_first_zero,find_next_zero}_bit() Akinobu Mita
2006-01-26 3:38 ` Akinobu Mita
2006-01-26 3:38 ` [PATCH 11/12] generic ext2_{set,clear}_bit_atomic() Akinobu Mita
2006-01-26 3:38 ` Akinobu Mita
2006-01-26 3:39 ` [PATCH 12/12] generic minix_{test,set,test_and_clear,test,find_first_zero}_bit() Akinobu Mita
2006-01-26 3:39 ` Akinobu Mita
2006-01-25 23:25 ` [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h Ian Molton
2006-01-25 23:25 ` Ian Molton
2006-01-26 0:06 ` Richard Henderson
2006-01-26 0:06 ` Richard Henderson
2006-01-26 4:34 ` Edgar Toernig
2006-01-26 4:34 ` Edgar Toernig
2006-01-26 4:34 ` Edgar Toernig
2006-01-26 17:30 ` Richard Henderson
2006-01-26 17:30 ` Richard Henderson
2006-01-26 17:30 ` Richard Henderson
2006-01-26 8:55 ` Russell King
2006-01-26 8:55 ` Russell King
2006-01-26 16:18 ` [parisc-linux] " Grant Grundler
2006-01-26 16:18 ` Grant Grundler
2006-01-26 16:18 ` Grant Grundler
2006-01-26 16:18 ` Grant Grundler
2006-01-26 16:30 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of Nicolas Pitre
2006-01-26 16:30 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h Nicolas Pitre
2006-01-26 16:30 ` Nicolas Pitre
2006-01-27 0:28 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of John David Anglin
2006-01-27 0:28 ` John David Anglin
2006-01-27 0:28 ` John David Anglin
2006-01-27 0:28 ` John David Anglin
2006-01-27 0:28 ` John David Anglin
2006-01-26 16:40 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h Russell King
2006-01-26 16:40 ` Russell King
2006-01-26 16:40 ` Russell King
2006-01-26 16:40 ` Russell King
2006-01-26 16:40 ` Russell King
2006-01-26 22:55 ` Grant Grundler
2006-01-26 23:04 ` Grant Grundler
2006-01-26 23:04 ` Grant Grundler
2006-01-26 22:55 ` Grant Grundler
2006-01-26 22:55 ` Grant Grundler
2006-01-26 23:03 ` Russell King
2006-01-26 23:03 ` Russell King
2006-01-26 23:03 ` Russell King
2006-01-29 7:12 ` Stuart Brady
2006-01-29 7:12 ` Stuart Brady
2006-01-30 4:03 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of David S. Miller
2006-01-30 4:03 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h David S. Miller
2006-01-30 4:03 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of David S. Miller
2006-01-30 4:03 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h David S. Miller
2006-01-30 4:03 ` David S. Miller
2006-01-30 17:06 ` Ralf Baechle
2006-01-30 17:06 ` Ralf Baechle
2006-01-30 19:50 ` Stuart Brady
2006-01-30 19:50 ` Stuart Brady
2006-01-30 23:02 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of David S. Miller
2006-01-30 23:02 ` [parisc-linux] Re: [PATCH 3/6] C-language equivalents of include/asm-*/bitops.h David S. Miller
2006-01-30 23:02 ` David S. Miller
2006-01-27 12:51 ` Hirokazu Takata
2006-01-27 12:51 ` Hirokazu Takata
2006-01-27 12:51 ` Hirokazu Takata
2006-01-27 12:51 ` Hirokazu Takata
2006-01-27 12:51 ` Hirokazu Takata
2006-01-30 3:29 ` Akinobu Mita
2006-01-30 3:29 ` Akinobu Mita
2006-01-30 3:29 ` Akinobu Mita
2006-01-30 3:29 ` Akinobu Mita
2006-01-30 3:29 ` Akinobu Mita
2006-01-25 11:33 ` [PATCH 4/6] use include/asm-generic/bitops for each architecture Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 1:49 ` Akinobu Mita
2006-01-26 2:37 ` Grant Grundler
2006-01-27 13:04 ` [PATCH 4/6] use include/asm-generic/bitops for each Hirokazu Takata
2006-01-27 13:04 ` [PATCH 4/6] use include/asm-generic/bitops for each architecture Hirokazu Takata
2006-01-27 13:04 ` [PATCH 4/6] use include/asm-generic/bitops for each Hirokazu Takata
2006-01-27 13:04 ` [PATCH 4/6] use include/asm-generic/bitops for each architecture Hirokazu Takata
2006-01-27 13:04 ` Hirokazu Takata
2006-01-30 3:15 ` Akinobu Mita
2006-01-30 3:15 ` Akinobu Mita
2006-01-30 3:15 ` Akinobu Mita
2006-01-30 3:15 ` Akinobu Mita
2006-01-30 3:15 ` Akinobu Mita
2006-01-25 11:34 ` [PATCH 5/6] fix warning on test_ti_thread_flag() Akinobu Mita
2006-01-25 11:34 ` Akinobu Mita
2006-01-25 11:34 ` Akinobu Mita
2006-01-25 11:34 ` Akinobu Mita
2006-01-25 11:34 ` Akinobu Mita
2006-01-25 12:28 ` Geert Uytterhoeven
2006-01-25 12:28 ` Geert Uytterhoeven
2006-01-25 12:28 ` Geert Uytterhoeven
2006-01-25 17:08 ` Chen, Kenneth W
2006-01-25 17:08 ` Chen, Kenneth W
2006-01-25 17:08 ` Chen, Kenneth W
2006-01-25 17:08 ` Chen, Kenneth W
2006-01-25 17:19 ` Geert Uytterhoeven
2006-01-25 17:19 ` Geert Uytterhoeven
2006-01-25 17:19 ` Geert Uytterhoeven
2006-01-25 20:02 ` Chen, Kenneth W
2006-01-25 20:02 ` Chen, Kenneth W
2006-01-25 20:02 ` Chen, Kenneth W
2006-01-25 20:02 ` Chen, Kenneth W
2006-01-26 3:50 ` Akinobu Mita
2006-01-26 3:50 ` Akinobu Mita
2006-01-26 3:50 ` Akinobu Mita
2006-01-26 3:50 ` Akinobu Mita
2006-01-26 4:12 ` Paul Mackerras
2006-01-26 4:12 ` Paul Mackerras
2006-01-26 4:12 ` Paul Mackerras
2006-01-26 4:12 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-25 22:28 ` Paul Mackerras
2006-01-26 0:04 ` David S. Miller
2006-01-26 0:04 ` David S. Miller
2006-01-26 0:04 ` David S. Miller
2006-01-26 0:04 ` David S. Miller
2006-01-26 0:04 ` David S. Miller
2006-01-25 11:35 ` [PATCH 6/6] remove unused generic bitops in include/linux/bitops.h Akinobu Mita
2006-01-25 11:35 ` Akinobu Mita
2006-01-25 11:35 ` Akinobu Mita
2006-01-25 11:35 ` Akinobu Mita
2006-01-25 11:35 ` Akinobu Mita
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060127064034.GB8166@miraclelinux.com \
--to=mita@miraclelinux.com \
--cc=bsingharora@gmail.com \
--cc=iod00d@hp.com \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.