On Tue, Aug 13, 2024 at 04:46:34PM -0500, Nathan Bossart wrote:
> I've been preparing 0001 for commit. I've attached what I have so far.
>
> The main changes are the implementations of pg_abs_* and pg_neg_*. For the
> former, I've used abs()/i64abs() for the short/int implementations. For
> the latter, I've tried to use __builtin_sub_overflow() when possible, as
> that appears to produce slightly better code. When
> __builtin_sub_overflow() is not available, the values are upcasted before
> negation, and we check that result before casting to the return type. That
> approach more closely matches the surrounding functions. (One exception is
> pg_neg_u64_overflow() when we have neither HAVE__BUILTIN_OP_OVERFLOW nor
> HAVE_INT128. In that case, we have to hand-roll everything.)
And here's a new version of the patch in which I've attempted to fix the
silly mistakes.
--
nathan