postgresql/src/include
Nathan Bossart a468898883 Remove specialized word-length popcount implementations.
The uses of these functions do not justify the level of
micro-optimization we've done and may even hurt performance in some
cases (e.g., due to using function pointers).  This commit removes
all architecture-specific implementations of pg_popcount{32,64} and
converts the portable ones to inlined functions in pg_bitutils.h.
These inlined versions should produce the same code as before (but
inlined), so in theory this is a net gain for many machines.  A
follow-up commit will replace the remaining loops over these
word-length popcount functions with calls to pg_popcount(), further
reducing the need for architecture-specific implementations.

Suggested-by: John Naylor <johncnaylorls@gmail.com>
Reviewed-by: John Naylor <johncnaylorls@gmail.com>
Reviewed-by: Greg Burd <greg@burd.me>
Discussion: https://postgr.es/m/CANWCAZY7R%2Biy%2Br9YM_sySNydHzNqUirx1xk0tB3ej5HO62GdgQ%40mail.gmail.com
2026-02-12 11:32:49 -06:00
..
access Improve type handling of varlena structures 2026-02-11 07:33:24 +09:00
archive Update copyright for 2026 2026-01-01 13:24:10 -05:00
backup Update copyright for 2026 2026-01-01 13:24:10 -05:00
bootstrap Update copyright for 2026 2026-01-01 13:24:10 -05:00
catalog Add support for INSERT ... ON CONFLICT DO SELECT. 2026-02-12 09:57:04 +00:00
commands Harden _int_matchsel() against being attached to the wrong operator. 2026-02-09 10:14:22 -05:00
common Fix accidentally cast away qualifiers 2026-01-26 16:02:31 +01:00
datatype Update copyright for 2026 2026-01-01 13:24:10 -05:00
executor Adjust style of some debugging macros. 2026-02-06 16:24:21 -06:00
fe_utils Update copyright for 2026 2026-01-01 13:24:10 -05:00
foreign Update copyright for 2026 2026-01-01 13:24:10 -05:00
jit Fix typos and inconsistencies in code and comments 2026-01-05 09:19:15 +09:00
lib Future-proof sort template against undefined behavior 2026-02-07 17:02:35 +07:00
libpq Add password expiration warnings. 2026-02-11 10:36:15 -06:00
mb Replace pg_mblen() with bounds-checked versions. 2026-02-09 12:44:04 +13:00
nodes Add support for INSERT ... ON CONFLICT DO SELECT. 2026-02-12 09:57:04 +00:00
optimizer Store information about Append node consolidation in the final plan. 2026-02-10 17:55:59 -05:00
parser Remove p_is_insert from struct ParseState. 2026-02-12 09:01:42 +00:00
partitioning Update copyright for 2026 2026-01-01 13:24:10 -05:00
pch Update copyright for 2026 2026-01-01 13:24:10 -05:00
port Remove specialized word-length popcount implementations. 2026-02-12 11:32:49 -06:00
portability Remove PG_MMAP_FLAGS from mem.h 2026-01-26 10:52:02 +09:00
postmaster Cleanup for log_min_messages changes in 38e0190ced 2026-02-11 16:38:18 +01:00
regex Update copyright for 2026 2026-01-01 13:24:10 -05:00
replication Use ProcNumber rather than pid in ReplicationSlot 2026-02-10 16:23:05 +02:00
rewrite Update copyright for 2026 2026-01-01 13:24:10 -05:00
snowball Update to latest Snowball sources. 2026-01-05 15:22:37 -05:00
statistics Add support for "mcv" in pg_restore_extended_stats() 2026-01-29 12:14:08 +09:00
storage Move ProcStructLock to the ProcGlobal struct 2026-02-11 16:48:45 +02:00
tcop Separate RecoveryConflictReasons from procsignals 2026-02-10 16:23:08 +02:00
tsearch Replace pg_mblen() with bounds-checked versions. 2026-02-09 12:44:04 +13:00
utils Cleanup for log_min_messages changes in 38e0190ced 2026-02-11 16:38:18 +01:00
.gitignore Use <stdint.h> and <inttypes.h> for c.h integers. 2024-12-04 15:05:38 +13:00
c.h Improve type handling of varlena structures 2026-02-11 07:33:24 +09:00
fmgr.h Improve type handling of varlena structures 2026-02-11 07:33:24 +09:00
funcapi.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
getopt_long.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
Makefile Fix build inconsistency due to the generation of wait-event code 2026-02-02 08:02:39 +09:00
meson.build Decouple C++ support in Meson's PGXS from LLVM enablement 2026-01-09 10:25:02 +01:00
miscadmin.h Add password expiration warnings. 2026-02-11 10:36:15 -06:00
pg_config.h.in Revert "Change copyObject() to use typeof_unqual" 2026-02-07 10:08:38 +01:00
pg_config_manual.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
pg_getopt.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
pg_trace.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
pgstat.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
pgtar.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
pgtime.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
port.h strnlen() is now required 2026-01-08 08:51:20 +01:00
postgres.h Rename AssertVariableIsOfType to StaticAssertVariableIsOfType 2026-02-03 08:45:24 +01:00
postgres_ext.h Move pg_int64 back to postgres_ext.h 2025-09-16 10:48:56 +02:00
postgres_fe.h Update copyright for 2026 2026-01-01 13:24:10 -05:00
varatt.h Improve type handling of varlena structures 2026-02-11 07:33:24 +09:00
windowapi.h Update copyright for 2026 2026-01-01 13:24:10 -05:00