allow ffs & co. a binary search

Hans Petter Selasky hps at selasky.org
Sun Jun 7 15:01:51 UTC 2015


On 06/07/15 13:52, Erich Dollansky wrote:
> Hi Hanns,
>
> On Sun, 07 Jun 2015 08:53:18 +0200
> Hans Petter Selasky <hps at 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?

Hi Erich,

It is currently nowhere, just in my private SVN. Would you wrap up 
complete patch, and I can put it into Phabricator and let more people 
look at it. Does your patch cover both kernel and userspace?

>
> What I saw is that all CPUs except ARM uses the software version.

Kernel too?

--HPS



More information about the freebsd-hackers mailing list