From owner-freebsd-hackers@FreeBSD.ORG Sun Jun 7 15:01:51 2015 Return-Path: Delivered-To: freebsd-hackers@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 602599E9 for ; Sun, 7 Jun 2015 15:01:51 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (heidi.turbocat.net [88.198.202.214]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2102F1F4B for ; Sun, 7 Jun 2015 15:01:50 +0000 (UTC) (envelope-from hps@selasky.org) Received: from laptop015.home.selasky.org (unknown [89.11.148.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id C25891FE023; Sun, 7 Jun 2015 17:01:46 +0200 (CEST) Message-ID: <55745D08.5000505@selasky.org> Date: Sun, 07 Jun 2015 17:02:32 +0200 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Erich Dollansky CC: "freebsd-hackers@freebsd.org" Subject: Re: allow ffs & co. a binary search References: <20150607081315.7c0f09fb@B85M-HD3-0.alogt.com> <5573EA5E.40806@selasky.org> <20150607195245.62dc191f@B85M-HD3-0.alogt.com> In-Reply-To: <20150607195245.62dc191f@B85M-HD3-0.alogt.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Jun 2015 15:01:51 -0000 On 06/07/15 13:52, Erich Dollansky wrote: > Hi Hanns, > > On Sun, 07 Jun 2015 08:53:18 +0200 > Hans Petter Selasky 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