RE: [V2] Adding new CRC32C implementation for IBM S390X - Mailing list pgsql-hackers

From Eduard Stefes
Subject RE: [V2] Adding new CRC32C implementation for IBM S390X
Date
Msg-id 63f02b897e6604b21a98c7f96bb9c2adffac7ee0.camel@ibm.com
Whole thread Raw
In response to Re: [V2] Adding new CRC32C implementation for IBM S390X  (John Naylor <johncnaylorls@gmail.com>)
List pgsql-hackers
Hi,


On Wed, 2025-06-11 at 13:48 +0700, John Naylor wrote:
> Hi Eduard, thanks for the update. Note, it's not necessary to change
> the thread subject, and in fact I came very close to missing this
> email entirely.

Sorry for the confusion. 


> Secondly, I haven't seen a response about the copyright. I'm
> referring
> to this part in particular:
> 
> + * Copyright (c) 2025, International Business Machines (IBM)
> 
> I shared this link in my first reply:
> 
> 
> It says, in part:
> 
> "May I add my own copyright notice where appropriate?
> 
> No, please don't. We like to keep the legal information short and
> crisp. Additionally, we've heard that could possibly pose problems
> for
> corporate users."
> 

I had to talk to some people about this and get their ok. I'll remove
the copyright text.


> > - added gcc 14-14.2 as known broken compiler (bug was fixed with
> > 14.3)
> 
> Why do we need to mark this as broken? In my research, it caused
> compiler errors with those versions -- that itself should cause
> fallback to sb8.
> 
> On that note, I'm now wondering if clang compiles and links
> successfully but the program is broken? Or does it fail to compile?
> If
> the latter, we should treat them the same: there is no need for
> "known
> broken versions" in the configure checks, as it's just a matter of
> documentation.
> 

Yes in all cases the compilation will fail and we will fall back to
sb8. However personally I think the user should get feedback of *why*
something fails. I'll remove the check and document the broken compiler
versions. 

> > - create dependency to getauxval in configure, so we don't compile
> > the
> > code if we won't be able to detect the cpu extension at runtime
> 
> That's just unnecessary clutter, and we don't do that anywhere else.
> We already have the HAVE_GETAUXVAL symbol to guard the runtime check.

Noted. I'll remove it.

> As I alluded to before, I'm not in favor of having both direct-call
> and runtime-check paths here. The reason x86 and Arm have it is
> because their hardware support works on any length input. Is there
> any
> reason to expect auxv.h to be unavailable?

I tried to find a reason but did not find any. So I'll remove it.

> Also, lately we have been moving away from having separate *choose.c
> files, since they add complexity to the build system. I'd suggest
> looking at src/port/pg_popcount_aarch64.c -- the file is compiled
> unconditionally but inside it has the appropriate #ifdef's as well as
> the choice function. See how it handles auxv.h as well.

I'll change that. 

> Your tests demonstrated improvement with 32 bytes and above, and
> nothing less than 31 makes sense as a minimum because of the 16-byte
> alignment requirement. I've mentioned that we don't want the 20-byte
> WAL header computation to have any more overhead than it does now.

Sorry, yes that's true I'll change that back. 


-- 
Eduard Stefes <eduard.stefes@ibm.com>




pgsql-hackers by date:

Previous
From: "Zhijie Hou (Fujitsu)"
Date:
Subject: RE: Report replica identity in pg_publication_tables
Next
From: Andrei Lepikhov
Date:
Subject: Re: Memoize ANTI and SEMI JOIN inner