Re: centralize CPU feature detection
John Naylor <johncnaylorls@gmail.com>
From: John Naylor <johncnaylorls@gmail.com>
To: Zsolt Parragi <zsolt.parragi@percona.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
root <tenistarkim@gmail.com>, Nathan Bossart <nathandbossart@gmail.com>
Date: 2026-02-19T12:19:30Z
Lists: pgsql-hackers
Attachments
- v4-0002-Centralize-detection-of-CPU-features.patch (text/x-patch) patch v4-0002
- v4-0001-Rename-CRC-choose-files-for-future-general-purpos.patch (text/x-patch) patch v4-0001
- v4-0003-Refactor-the-detection-of-ZMM-registers.patch (text/x-patch) patch v4-0003
- v4-0004-Enable-autovectorizing-page-checksums-with-AVX2-w.patch (text/x-patch) patch v4-0004
- v4-0005-Rename-CRC-Arm-v8-choose-file-for-future-general-.patch (text/x-patch) patch v4-0005
- v4-0006-Centralize-detection-of-CPU-features-Arm-take-1.patch (text/x-patch) patch v4-0006
On Thu, Feb 19, 2026 at 1:47 AM Zsolt Parragi <zsolt.parragi@percona.com> wrote: > > > Done. I haven't tried Arm support yet, but now I realize the header > > should be named generically, so it's now "pg_cpu.h". Then it can be > > included everywhere. > > That makes sense, and simplifies the usage of the header. (However, > the include guard still refers to the old name) Oops, fixed. > > I don't know. The instruction family names are conventionally all in > > caps, but this is just our signal that we've populated the array. That > > said, a less generic name would better for grep-ability. > > Yes, that could work too. But reserving the lowercase "init" symbol in > a very generic header seems like a bad idea (especially for a use case > that isn't used globally), even if Postgres itself doesn't use the > symbol for anything else. "INIT" at least would be unlikely to > conflict with something else. Still seems pretty generic, so I went with INIT_PG_X86. I've also made a quick attempt at Arm support just to make sure I didn't paint myself into a corner (v4-0005-6), and it compiles and passes tests on a Debian aarch64 system with gcc 8.3. I'll put that aside for later. v4-0001-3 are still the main focus now, and seem in decent shape, maybe needs a bit more polish. (not to mention formal commit messages) -- John Naylor Amazon Web Services
Commits
-
Remove extraneous PGDLLIMPORT
- ec5981c3816e 19 (unreleased) landed
-
Refactor detection of x86 ZMM registers
- 51bb4a58ed23 19 (unreleased) landed
-
Centralize detection of x86 CPU features
- 16743db061e4 19 (unreleased) landed
-
Fix USE_SLICING_BY_8_CRC32C builds on x86
- 3322f01a11b7 19 (unreleased) landed
-
Rename pg_crc32c_sse42_choose.c for general purpose
- b9278871f991 19 (unreleased) landed