RE: Improve CRC32C performance on SSE4.2

Devulapalli, Raghuveer <raghuveer.devulapalli@intel.com>

From: "Devulapalli, Raghuveer" <raghuveer.devulapalli@intel.com>
To: John Naylor <johncnaylorls@gmail.com>
Cc: Nathan Bossart <nathandbossart@gmail.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>, "Shankaran, Akash" <akash.shankaran@intel.com>
Date: 2025-03-13T16:37:35Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Include _mm512_zextsi128_si512() in AVX-512 configure probes.

  2. Properly fix AVX-512 CRC calculation bug

  3. Workaround code generation bug in clang

  4. Compute CRC32C using AVX-512 instructions where available

  5. Inline CRC computation for small fixed-length input on x86

  6. Be more paranoid in configure's checks for CRC and POPCNT intrinsics.

 > > I've gone ahead and added the generated AVX-512 algorithm in
 > > v14-0005

Here is my benchmark numbers (master v/s v14) on TGL (time in ms): 

Buf-size-bytes  Master  v14
64      9.547   6.095
80      10.999  6.248
96      12.443  7.756
112     14.129  9.62
128     15.295  6.534
144     16.756  8.226
160     18.18   9.656
176     19.836  11.556
192     22.038  8.307
208     24.303  9.692
224     26.656  11.115
240     28.981  13.119
256     31.399  10.035

Raghuveer