pg.ddx.io pgsql-hackers@postgresql.org mailing list archivehelp / color / mirror / Atom feed
From: Nathan Bossart <nathandbossart@gmail.com>
To: John Naylor <johncnaylorls@gmail.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: pgsql-hackers@postgresql.org
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 (40+ messages) latest in thread
Message-ID: <aYEqini0ukxQv2_D@nathan> Permalink: ../aYEqini0ukxQv2_D@nathan/ Also on: postgresql.org/message-id/aYEqini0ukxQv2_D@nathan ·
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: pgsql-hackers@postgresql.org Cc: nathandbossart@gmail.com, johncnaylorls@gmail.com, hlinnaka@iki.fi 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 DDX for PostgreSQL; see mirroring instructions for how to clone and mirror all data and code used for this inbox