-----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----- _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"