Re: refactor architecture-specific popcount code
Nathan Bossart <nathandbossart@gmail.com>
From: Nathan Bossart <nathandbossart@gmail.com>
To: John Naylor <johncnaylorls@gmail.com>
Cc: Greg Burd <greg@burd.me>, Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-02-11T17:38:58Z
Lists: pgsql-hackers
Attachments
On Wed, Feb 11, 2026 at 02:10:37PM +0700, John Naylor wrote: > I don't think we need to worry about this, but the attached looks > nicer to me. There might be a disadvantage of using macros here, but > I'm not sure what it would be. The only problem that I see with this is that a compiler that understands Neon intrinsics but not SVE ones will probably fail because we build external functions that call the Neon versions in that case. But that's easy enough to work around by adding an extra #elif defined(USE_NEON) section, and it still saves a handful of lines of code. Perhaps someday this situation will be rare enough that we can remove that hack and just point to the portable versions if the compiler doesn't understand both Neon and SVE, but I'm not sure we're there yet. -- nathan
Commits
-
Make use of pg_popcount() in more places.
- f33b8793fd73 19 (unreleased) landed
-
Remove uses of popcount builtins.
- eb9ab7e0930a 19 (unreleased) landed
-
Remove some unnecessary optimizations in popcount code.
- cb7b2e5e8efb 19 (unreleased) landed
-
Remove specialized word-length popcount implementations.
- a4688988835f 19 (unreleased) landed
-
Move x86-64-specific popcount code to pg_popcount_x86.c.
- 79e232ca013c 19 (unreleased) landed
-
Refactor some SIMD and popcount macros.
- 25dc4850747b 19 (unreleased) landed
-
Rename "fast" and "slow" popcount functions.
- 8c6653516c5a 19 (unreleased) landed
-
Rename pg_popcount_avx512.c to pg_popcount_x86.c.
- fbe327e5b465 19 (unreleased) landed
-
Remove trailing zero words from Bitmapsets
- a8c09daa8bb1 17.0 cited
-
Don't use _BitScanForward64/_BitScanReverse64 on 32-bit MSVC builds
- 53ea2b7ad050 16.0 cited