From: Grant Grundler <iod00d@hp.com>
To: linux-ia64@vger.kernel.org
Subject: Re: [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random problem on 2.6.12-rc1)]
Date: Sat, 09 Apr 2005 05:16:53 +0000 [thread overview]
Message-ID: <20050409051653.GL3844@esmail.cup.hp.com> (raw)
In-Reply-To: <20050408103324.6c5231df.akpm@osdl.org>
On Fri, Apr 08, 2005 at 09:05:48PM -0700, David Mosberger wrote:
...
> #if __GNUC__ >= 4 || (__GNUC__ = 3 && __GNUC_MINOR__ >= 4)
> # define popcount(x) __builtin_popcountl(x)
> #else
> # define popcount(x) ia64_popcnt(x)
> #endif
Ah - thanks!
I didn't know how gcc versions could be determined.
(And was too lazy to look it up now. /o\ )
I was told "build-tools" was the wrong repository and I have to agree.
Now available from:
wget http://cvs.parisc-linux.org/*checkout*/userspace/test_fls.c
Or for the CVS enabled:
cvs -d :pserver:anonymous@cvs.parisc-linux.org:/var/cvs co userspace
Randolph Chung played around with it on hppa and noted quickly
that gcc 4.0 with -O3 and -O4 was optimizing out the entire indirect
function call. Adding a consumer of the return value fixed that.
We've also put asm() "barriers" around the loop to prevent code from
"leaking" outside the measured area though that might be overkill:
@@ -300,11 +304,14 @@
struct timeval start, stop;
long i, count = 1000000;
double t;
+ volatile int discard;
while (1) {
gettimeofday(&start, NULL);
+ asm volatile ("":::"memory");
for (i = 0; i < count; ++i)
- (*func)(i | (i << 16));
+ discard = (*func)(i | (i << 16));
+ asm volatile ("":::"memory");
gettimeofday(&stop, NULL);
t = ((stop.tv_sec + 1e-6*stop.tv_usec)
Results on my 1.5hz Madison are slightly different than what was
previously posted:
grundler@iota:/usr/src/userspace$ gcc-3.3 -O2 test_fls.c
grundler@iota:/usr/src/userspace$ ./a.out
done with correctness test
overhead: 4.007 ns
generic: 8.680 ns
womack: 12.019 ns
arch: 10.683 ns
popcount: 10.015 ns
ia64_fls: 10.016 ns
popcount64: 10.683 ns
grundler@iota:/usr/src/userspace$ gcc-3.4 -O2 test_fls.c
grundler@iota:/usr/src/userspace$ ./a.out
done with correctness test
overhead: 5.342 ns
generic: 8.013 ns
womack: 8.680 ns
arch: 8.681 ns
popcount: 7.345 ns
ia64_fls: 7.345 ns
popcount64: 8.680 ns
thanks,
grant
next prev parent reply other threads:[~2005-04-09 5:16 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-08 17:33 [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random Andrew Morton
2005-04-08 17:48 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random problem on 2.6.12-rc1)] Matt Mackall
2005-04-08 18:02 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random Andrew Morton
2005-04-08 19:05 ` David Mosberger
2005-04-08 20:46 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random problem on 2.6.12-rc1)] David Mosberger
2005-04-08 22:49 ` Matt Mackall
2005-04-08 23:01 ` David Mosberger
2005-04-08 23:02 ` Luck, Tony
2005-04-08 23:15 ` Matt Mackall
2005-04-08 23:17 ` Matt Mackall
2005-04-08 23:19 ` David Mosberger
2005-04-08 23:49 ` David Mosberger
2005-04-09 0:21 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random David Mosberger
2005-04-09 0:28 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random problem on 2.6.12-rc1)] Matt Mackall
2005-04-09 0:34 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random Arthur Kepner
2005-04-09 0:46 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random problem on 2.6.12-rc1)] Grant Grundler
2005-04-09 3:00 ` Grant Grundler
2005-04-09 4:05 ` David Mosberger
2005-04-09 4:32 ` David Mosberger
2005-04-09 5:09 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random David Mosberger
2005-04-09 5:16 ` Grant Grundler [this message]
2005-04-09 6:00 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random problem on 2.6.12-rc1)] David Mosberger
2005-04-22 3:50 ` [mpm@selenic.com: Re: buggy ia64_fls() ? (was Re: /dev/random Andrew Morton
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=20050409051653.GL3844@esmail.cup.hp.com \
--to=iod00d@hp.com \
--cc=linux-ia64@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.