Re: centralize CPU feature detection - Mailing list pgsql-hackers

From John Naylor
Subject Re: centralize CPU feature detection
Date
Msg-id CANWCAZbzmbCmKiCCWNGuC4FLymYfraJ+f1ZiWK3iOUnv9V9_Lg@mail.gmail.com
Whole thread Raw
In response to Re: centralize CPU feature detection  (Zsolt Parragi <zsolt.parragi@percona.com>)
Responses Re: centralize CPU feature detection
List pgsql-hackers
On Tue, Feb 17, 2026 at 3:15 AM Zsolt Parragi <zsolt.parragi@percona.com> wrote:
>
> Hello!
>
> Seems like a file (checksum_block_internal.h) is missing from the patch?

Should work now, and thanks for looking.

> For the entire src/include/port/pg_x86_feature.h:
>
> Shouldn't it have an
>
> +#if defined(USE_SSE2) || defined(__i386__)
> ...
> #endif
>
> block around the file, to skip everything on other platforms?

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.

I've also gone with "pg_cpu_x86.c" for better consistency within this
directory, and used the plural for the array name.

> In src/include/port/pg_x86_feature.h:33
>
> +
> +extern PGDLLEXPORT bool X86Feature[];
> +
>
> Shouldn't that be PGDLLIMPORT?

Fixed.

> +typedef enum X86FeatureId
> +{
> + init,
> +
> + PG_SSE4_2,
> + PG_POPCNT,
>
>
> Shouldn't that be INIT?

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.

I added some quick comments here where the instruction families are
split apart. I'm not sure what info is relevent, but it seemed good to
separate them.

--
John Naylor
Amazon Web Services

Attachment

pgsql-hackers by date:

Previous
From: Aditya Kamath
Date:
Subject: RE: AIX support
Next
From: Tomas Vondra
Date:
Subject: Re: index prefetching