Re: refactor architecture-specific popcount code

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Greg Burd <greg(at)burd(dot)me>
Cc: John Naylor <johncnaylorls(at)gmail(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: refactor architecture-specific popcount code
Date: 2026-02-03 20:44:10
Message-ID: aYJeGs-xz3NEEdSe@nathan
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Okay, here is an updated patch set with first drafts of the commit
messages. I'm reasonably happy with these patches, but I'll admit my
justification for ripping out the 32-bit optimizations feels a bit flimsy.
I don't get the idea that we are all that concerned about things like
micro-regressions for popcount on 32-bit builds, but OTOH it isn't hard to
imagine someone objecting to these changes.

I ran the bms_num_members() benchmark on a couple of machines I had nearby:

apple-m3 (neon) intel-i5-13500T (sse4.2)
words HEAD v8 words HEAD v8
1 40 25 1 26 10
2 57 51 2 37 29
4 75 57 4 55 45
8 105 56 8 88 51
16 154 59 16 158 68
32 265 73 32 296 102
64 545 103 64 577 209
128 1027 178 128 1212 423

I was going to run it on machines with SVE/AVX-512, but John already tested
the AVX-512 case [0], and I have no reason to believe that we'll see
regressions on machines with SVE.

[0] https://postgr.es/m/CANWCAZbWLX%3DEDd1Bq-8oGK2ZLVNR4m4BkGe%3D288t2V5oLcqeZA%40mail.gmail.com

--
nathan

Attachment Content-Type Size
v8-0001-Remove-some-unnecessary-optimizations-in-popcount.patch text/plain 7.0 KB
v8-0002-Remove-specialized-word-length-popcount-implement.patch text/plain 11.5 KB
v8-0003-Make-use-of-pg_popcount-in-more-places.patch text/plain 2.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2026-02-03 20:55:20 Add backendType to PGPROC, replacing isRegularBackend
Previous Message Heikki Linnakangas 2026-02-03 20:29:27 Re: Fix pg_stat_get_backend_wait_event() for aux processes