Re: Broken build on macOS (Universal / Intel): cpuid instruction not available

John Naylor <johncnaylorls@gmail.com>

From: John Naylor <johncnaylorls@gmail.com>
To: Tobias Bussmann <t.bussmann@gmx.net>
Cc: Lukas Fittl <lukas@fittl.com>, Tom Lane <tgl@sss.pgh.pa.us>, Jakob Egger <jakob@eggerapps.at>, pgsql-hackers <pgsql-hackers@postgresql.org>, Andres Freund <andres@anarazel.de>
Date: 2026-05-08T10:04:15Z
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. Fix universal builds on MacOS

  2. Centralize detection of x86 CPU features

On Fri, May 8, 2026 at 3:26 PM Tobias Bussmann <t.bussmann@gmx.net> wrote:
> > Am 08.05.2026 um 05:48 schrieb John Naylor <johncnaylorls@gmail.com>:
> >
> > Jakob and Tobias, how far do you get with the attached, at least for
> > the target x86 case?
>
> thanks! I tried the patch and it fixes the universal build that broke with
> 16743db (and make check passes for both architectures). It remains to be

Great! I've pushed that fix.

> analysed how useful these universal builds are given the lack of
> optimisations for one of the architectures, but at least they are possible
> again, as they were previously.

Taking a quick look at the configure output you provided, certain
optimizations will be lacking on both architectures:

checking for _mm_crc32_u8 and _mm_crc32_u32... no
checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with CFLAGS=... no
checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with
CFLAGS=-march=armv8-a+crc+simd... no
checking for __crc32cb, __crc32ch, __crc32cw, and __crc32cd with
CFLAGS=-march=armv8-a+crc... no
...
checking which CRC-32C implementation to use... slicing-by-8

But compiler builtins seem to work:

checking for builtin __atomic int32 atomic operations... yes
checking for builtin __atomic int64 atomic operations... yes

--
John Naylor
Amazon Web Services