From: "Alexander van Heukelum" <heukelum@fastmail.fm>
To: "Andi Kleen" <andi@firstfloor.org>
Cc: "Jeremy Fitzhardinge" <jeremy@goop.org>,
"Alexander van Heukelum" <heukelum@mailshack.com>,
"Ingo Molnar" <mingo@elte.hu>, "Andi Kleen" <andi@firstfloor.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
"LKML" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] x86: merge the simple bitops and move them to bitops.h
Date: Fri, 14 Mar 2008 22:33:29 +0100 [thread overview]
Message-ID: <1205530409.27413.1242484373@webmail.messagingengine.com> (raw)
In-Reply-To: <20080314195520.GV2522@one.firstfloor.org>
On Fri, 14 Mar 2008 20:55:20 +0100, "Andi Kleen" <andi@firstfloor.org>
said:
>
> The CMOV define should probably be dependent on what CPU the kernel
> is tuned for. It was originally written for when x86-64 was only
> K8 which has fast CMOV, but e.g. on P4 CMOV is actually deprecated
> over jumps.
Hi Andi,
I guess you are right. But there is quite a big number of different
types of P4. Let's see what the current situation is... defconfigs
(of current x86#testing+this patch/current linus) with
CONFIG_GENERIC_CPU=n:
Athlon: 4764 / 4667 occurences of cmovxx
Pentium-IV: 4079 / 3982 occurences of cmovxx
Pentium-M: 3939 / 3841 occurences of cmovxx
Core-2: 4335 / 4330 occurences of cmovxx
So it adds a few percent extra cmovxx's. The last one is fishy...
But I'm too hungry and sleepy to go hunt that one down.
> > Both define fls64(), but i386 uses a generic one and x86_64 defines
> > one all by itself. The generic one is currently not suitable for
> > use by 64-bit archs... that can change.
>
> It is very unlikely a generic one will ever be able to compete
> with a single instruction.
Generic is maybe not the right term: asm-generic/bitops/fls64.h has:
static inline int fls64(__u64 x)
{
__u32 h = x >> 32;
if (h)
return fls(h) + 32;
return fls(x);
}
I just wanted to move the 64-bit version to that header, with some
ifdefs to select the right one.
> > x86_64 defines ARCH_HAS_FAST_MULTIPLIER, i386 not. This affects a
> > choice of generated code in the (generic) hweight function. It would
> > be nice if that could move to some other file.
>
> It depends on the CPU, but it can be probably safely set on pretty much
> all modern x86 cores.
In fact I just found out that it only had an effect for 64 bit
machines. Still, setting it unconditionally feels wrong.
> > x86_64 has a mysterious inline function set_bit_string, which is
> > only used by pci-calgary_64.c and pci-gart_64.c. Not sure what to
> > do with it.
>
> It's generic and could really live in linux/bitops.h
It could. But it is a trivial (slow?) implementation. Probably fine
for the uses in pci-calgary_64.c and pci-gart_64.c (small ranges?),
but I would worry about people using it, thinking it was a near-
optimal implementation.
Greetings,
Alexander
--
Alexander van Heukelum
heukelum@fastmail.fm
--
http://www.fastmail.fm - IMAP accessible web-mail
next prev parent reply other threads:[~2008-03-14 21:33 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-12 20:01 [PATCH] x86: merge the simple bitops and move them to bitops.h Alexander van Heukelum
2008-03-14 18:07 ` Jeremy Fitzhardinge
2008-03-14 19:43 ` Alexander van Heukelum
2008-03-14 19:55 ` Andi Kleen
2008-03-14 21:33 ` Alexander van Heukelum [this message]
2008-03-14 21:42 ` Andi Kleen
2008-03-14 22:01 ` Alexander van Heukelum
2008-03-14 22:18 ` Andi Kleen
2008-03-15 17:54 ` Alexander van Heukelum
2008-03-15 19:19 ` K8, EFFICEON and CORE2 support the cmovxx instructions Alexander van Heukelum
2008-03-15 20:18 ` H. Peter Anvin
2008-03-15 21:06 ` Alexander van Heukelum
2008-03-15 21:11 ` Willy Tarreau
2008-03-16 13:16 ` [PATCH] x86: K8, GEODE_LX, CRUSOE, " Alexander van Heukelum
2008-03-21 12:38 ` Ingo Molnar
2008-03-14 20:35 ` [PATCH v2] x86: merge the simple bitops and move them to bitops.h Alexander van Heukelum
2008-03-14 23:30 ` Randy Dunlap
2008-03-15 12:04 ` [PATCH v3] " Alexander van Heukelum
2008-03-21 12:35 ` Ingo Molnar
2008-03-14 21:15 ` [PATCH] " Jeremy Fitzhardinge
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=1205530409.27413.1242484373@webmail.messagingengine.com \
--to=heukelum@fastmail.fm \
--cc=andi@firstfloor.org \
--cc=heukelum@mailshack.com \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
/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.