public inbox for [email protected]  
help / color / mirror / Atom feed
From: Nathan Bossart <[email protected]>
To: John Naylor <[email protected]>
Cc: Heikki Linnakangas <[email protected]>
Cc: [email protected]
Subject: Re: refactor architecture-specific popcount code
Date: Mon, 2 Feb 2026 16:51:54 -0600
Message-ID: <aYEqini0ukxQv2_D@nathan> (raw)
In-Reply-To: <CANWCAZbWLX=EDd1Bq-8oGK2ZLVNR4m4BkGe=288t2V5oLcqeZA@mail.gmail.com>
References: <CANWCAZaPMn0Xgy7nav_JxOLW-3RsZpd6c9Ad7KFCD4CrEirCkQ@mail.gmail.com>
	<aXE117d0gWDwlPdA@nathan>
	<CANWCAZY7R+iy+r9YM_sySNydHzNqUirx1xk0tB3ej5HO62GdgQ@mail.gmail.com>
	<aXJjbkp2_glyfy6z@nathan>
	<aXeLLydy1lxMwcCv@nathan>
	<CANWCAZacr4AqrFzQRhhwQGwV1xSaUWyEYnYOT9SFc3cJFUWV6g@mail.gmail.com>
	<aXuTex5a4iu-BYXy@nathan>
	<CANWCAZY09VEn2+CA755wz6iJT5aNLwROGzf71E8sbUwwk1DG0Q@mail.gmail.com>
	<aX0jn2bo-xDaSlH5@nathan>
	<CANWCAZbWLX=EDd1Bq-8oGK2ZLVNR4m4BkGe=288t2V5oLcqeZA@mail.gmail.com>

On Mon, Feb 02, 2026 at 09:16:42PM +0700, John Naylor wrote:
> It might be a good idea to do a little new testing, and I see a use
> for a special 8-byte path independent of AVX512: v6 seems to regress a
> little for single-words. But, it turns out that when gcc turns
> __builtin_popcountl into a single instruction, it's inline, but if it
> emits portable bitwise ops, it does so in a function called
> __popcountdi2(). That can be avoided by hand-coding in C for normal
> builds (and for 32-bit looks cleaner anyway), as in the attached 0005.

Oh, interesting.  I looked into this a little more [0].  Both gcc and clang
generate cnt instructions for aarch64, so we're good there.  However, clang
on x86-64 generates the bit-twiddling version, and gcc on x86-64 generates
a call to __popcountdi2() (which I imagine does something similar).  It's
not until you provide a compiler flag like -march=x86-64-v2 that gcc/clang
start generating popcnt instructions for x86-64, which makes sense.  0005
seems like the correct move to me...

[0] https://godbolt.org/z/he3WozG3E

-- 
nathan






view thread (8+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: refactor architecture-specific popcount code
  In-Reply-To: <aYEqini0ukxQv2_D@nathan>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox