Re: add AVX2 support to simd.h
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: John Naylor <johncnaylorls@gmail.com>, Ants Aasma <ants@cybertec.at>,
pgsql-hackers@postgresql.org
Date: 2024-01-02T17:50:04Z
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 →
-
Improve style of pg_lfind32().
- 7188a7806d20 17.0 landed
-
Fix compiler warning for pg_lfind32().
- 1f42337be535 17.0 landed
-
Micro-optimize pg_lfind32().
- 7644a7340c8a 17.0 landed
-
Introduce helper SIMD functions for small byte arrays
- 9f225e992bed 17.0 cited
-
Optimize xid/subxid searches in XidInMVCCSnapshot().
- 37a6e5df3713 16.0 cited
Nathan Bossart <nathandbossart@gmail.com> writes: > I'm tempted to propose that we move forward with this patch as-is after > adding a buildfarm machine that compiles with -mavx2 or -march=x86-64-v3. > There is likely still follow-up work to make these improvements more > accessible, but I'm not sure that is a strict prerequisite here. The patch needs better comments (as in, more than "none whatsoever"). It doesn't need to be much though, perhaps like +#if defined(__AVX2__) + +/* + * When compiled with -mavx2 or allied options, we prefer AVX2 instructions. + */ +#include <immintrin.h> +#define USE_AVX2 +typedef __m256i Vector8; +typedef __m256i Vector32; Also, do you really want to structure the header so that USE_SSE2 doesn't get defined? In that case you are committing to provide an AVX2 replacement every single place that there's USE_SSE2, which doesn't seem like a great thing to require. OTOH, maybe there's no choice given than we need a different definition for Vector8 and Vector32? regards, tom lane