Re: use ARM intrinsics in pg_lfind32() where available
John Naylor <john.naylor@enterprisedb.com>
From: John Naylor <john.naylor@enterprisedb.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Andres Freund <andres@anarazel.de>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-08-22T04:50:35Z
Lists: pgsql-hackers
On Sat, Aug 20, 2022 at 5:28 AM Nathan Bossart <nathandbossart@gmail.com> wrote: > > On Fri, Aug 19, 2022 at 02:26:02PM -0700, Andres Freund wrote: > > Are you sure there's not an appropriate define for us to use here instead of a > > configure test? E.g. > > > > echo|cc -dM -P -E -|grep -iE 'arm|aarch' > > ... > > #define __AARCH64_SIMD__ 1 > > ... > > #define __ARM_NEON 1 > > #define __ARM_NEON_FP 0xE > > #define __ARM_NEON__ 1 > > .. > > > > I strikes me as non-scalable to explicitly test all the simd instructions we'd > > use. > > Thanks for the pointer. GCC, Clang, and the Arm compiler all seem to > define __ARM_NEON, so here is a patch that uses that instead. Is this also ever defined on 32-bit? If so, is it safe, meaning the compiler will not emit these instructions without additional flags? I'm wondering if __aarch64__ would be clearer on that, and if we get windows-on-arm support as has been proposed, could also add _M_ARM64. I also see #if defined(__aarch64__) || defined(__aarch64) in our codebase already, but I'm not sure what recognizes the latter. -- John Naylor EDB: http://www.enterprisedb.com
Commits
-
Further code review of port/simd.h
- 865424627db6 16.0 landed
-
Fix broken cast on MSVC
- c6a43c25a8ba 16.0 landed
-
Remove unused symbol __aarch64
- 4112e39f70ee 16.0 landed