From owner-svn-src-all@FreeBSD.ORG Mon Feb 9 23:17:38 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx2.freebsd.org (mx2.freebsd.org [8.8.178.116]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BFFFD688; Mon, 9 Feb 2015 23:17:38 +0000 (UTC) Received: from hammer.pct.niksun.com (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx2.freebsd.org (Postfix) with ESMTP id 4C44F1E33; Mon, 9 Feb 2015 23:17:38 +0000 (UTC) Message-ID: <54D94011.2080700@FreeBSD.org> Date: Mon, 09 Feb 2015 18:17:37 -0500 From: Jung-uk Kim User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: John Baldwin Subject: Re: svn commit: r278474 - head/sys/sys References: <201502092103.t19L3OAn013792@svn.freebsd.org> <3501684.yzo0NMkRZd@ralph.baldwin.cx> <54D93461.8010109@FreeBSD.org> <5703806.fFzzT9N1y2@ralph.baldwin.cx> In-Reply-To: <5703806.fFzzT9N1y2@ralph.baldwin.cx> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Feb 2015 23:17:38 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 02/09/2015 18:08, John Baldwin wrote: > On Monday, February 09, 2015 05:27:45 PM Jung-uk Kim wrote: >> On 02/09/2015 17:12, John Baldwin wrote: >>> On Monday, February 09, 2015 04:55:52 PM Jung-uk Kim wrote: >>>> On 02/09/2015 16:08, John Baldwin wrote: >>>>> On Monday, February 09, 2015 09:03:24 PM John Baldwin >>>>> wrote: >>>>>> Author: jhb Date: Mon Feb 9 21:03:23 2015 New Revision: >>>>>> 278474 URL: >>>>>> https://svnweb.freebsd.org/changeset/base/278474 >>>>>> >>>>>> Log: Use __builtin_popcnt() to implement a BIT_COUNT() >>>>>> operation for bitsets and use this to implement >>>>>> CPU_COUNT() to count the number of CPUs in a cpuset. >>>>>> >>>>>> MFC after: 2 weeks >>>>> >>>>> Yes, __builtin_popcnt() works with GCC 4.2. It should >>>>> also allow the compiler to DTRT in userland uses of this if >>>>> -msse4.2 is enabled. >>>> >>>> Back in 2012, when I submitted a similar patch, bde noted >>>> __builtin_popcount*() cannot be used with GCC 4.2 for >>>> *kernel* because it emits a library call. >>>> >>>> http://docs.freebsd.org/cgi/mid.cgi?20121116171923.L1135 >>>> >>>> FYI... >>> >>> Weird, I though I built a kernel with this in a tree that uses >>> it in the igb(4) driver. We need a CPU_COUNT() no matter what, >>> but if this emits a library call under GCC I will need to add >>> the call. We could also adopt your bitcount header, though I >>> think it is more consistent to keep the loop in BIT_COUNT() and >>> use something that emulates popcountl() rather than directly >>> using bitcount() in BIT_COUNT() (primarily because the rest of >>> sys/bitset.h is structured that way: explicit loops in >>> sys/bitset.h itself). >> >> I think you should back it out for now and move the discussion to >> arch or hackers. I gave it up at the time but you may have >> better luck. :-) >> >> FYI, the following was the last version of my patch at the time. >> >> https://people.freebsd.org/~jkim/bitcount5.diff > > I could also just make it userland only for now? Rui wants to use > it in userland. However, I can back it out if that is preferred. I am fine with "#if defined(__clang__) || !define(_KERNEL)" case. > To be honest, I'm not sure how valuable it is at this point to > expend a lot of effort to support GCC older than 3.4 (i.e. the > non-builtin popcount approach). No, I don't care about GCC 3.x any more. Jung-uk Kim -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJU2UALAAoJEHyflib82/FGy8wH/jviXO8fcvprc1y4DGkc87rD ylBjoHimjsDt6Wr9MixYNZKbTXhd4BIgQVvFphgCshGjBbmkvII9DH/OleSTa/p8 /YJk87dZHE336An+GkXGTshESvLHw3l8hACR5FcussDLswJArBcDMuzbIW9Q7ASY dJsWTajP3r4rBqAtQQGxAmNfIvWC6iUP7mELSIoP8vBbUfO4HVZZWh7u5gqXxXnk dDX4kc7XuGweOtMydIY8bYiQYWb+IqMjnCEuucpJ4yktj3kUr8v9To+xAW6AmX7V OZQjMRzFbVKHPB6gs5fSaNZBD/D6MUpeDAXRQCy52xQB7vCQE1UNrR850upvxxY= =NARs -----END PGP SIGNATURE-----