Date: Sun, 7 Jun 2015 19:52:45 +0800 From: Erich Dollansky <erichsfreebsdlist@alogt.com> To: Hans Petter Selasky <hps@selasky.org> Cc: "freebsd-hackers@freebsd.org" <freebsd-hackers@FreeBSD.org> Subject: Re: allow ffs & co. a binary search Message-ID: <20150607195245.62dc191f@B85M-HD3-0.alogt.com> In-Reply-To: <5573EA5E.40806@selasky.org> References: <20150607081315.7c0f09fb@B85M-HD3-0.alogt.com> <5573EA5E.40806@selasky.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Hanns,
On Sun, 07 Jun 2015 08:53:18 +0200
Hans Petter Selasky <hps@selasky.org> wrote:
> On 06/07/15 02:13, Erich Dollansky wrote:
> >
> > If you like the binary way I could give you the sources for the
> > complete family following your style to replace the older functions.
> >
> I think this is not the fastest way to do it. You first find the LSB,
I never thought of this as I took the code a long, long time from
university and expanded it over time from 8 to 64 bits.
> then you do a sumbits, which doesn't have any conditionals IF/ELSE
> and performs better with the CPU pipeline. I think the software ffs()
> is only used for platforms which doesn't have a hardware version btw:
The code is not x86 specific.
>
This one is the same:
> From my libmbin:
>
> int ffs(int value)
> {
> int retval = mbin_sumbits32(mbin_lsb32(value) - 1);
> if (retval == 32)
> retval = 0;
> else
> retval++;
> return (retval);
> }
>
Where is this? Should this also be in 10.1?
What I saw is that all CPUs except ARM uses the software version.
Erich
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150607195245.62dc191f>
