On Thu, Feb 8, 2024 at 3:06 PM Andres Freund <and...@anarazel.de> wrote: > On 2024-02-07 19:52:11 -0600, Nathan Bossart wrote: > > On Wed, Feb 07, 2024 at 04:42:07PM -0800, Andres Freund wrote: > > > On 2024-02-07 16:21:24 -0600, Nathan Bossart wrote: > > >> The assembly for that looks encouraging, but I still need to actually > > >> test > > >> it... > > > > > > Possible. For 16bit upcasting to 32bit is clearly the best way. For 32 bit > > > that doesn't work, given the 32bit return, so we need something more. > > > > For the same compASC() test, I see an ~8.4% improvement with your int64 > > code > > Just to be clear, that code unfortuntely isn't correct, the return value is a > 32 bit integer, so the 64bit difference doesn't help. In contrast to the 16bit > case.
Perhaps you could wrap it in a branch-free sign() function so you get a narrow answer? https://stackoverflow.com/questions/14579920/fast-sign-of-integer-in-c