Add POPCNT support for MSVC x86_64 builds
authorDavid Rowley <drowley@postgresql.org>
Mon, 9 Aug 2021 03:23:48 +0000 (15:23 +1200)
committerDavid Rowley <drowley@postgresql.org>
Mon, 9 Aug 2021 03:23:48 +0000 (15:23 +1200)
commit2e281249af6c702fd057f34150fd9ac6cb8c7a8b
tree23ef522b70de28dabdb7c590f175998a1627c234
parentd8a75b1308b133502ae3f02be485e9cd4eda9803
Add POPCNT support for MSVC x86_64 builds

02a6a54ec added code to make use of the POPCNT instruction when available
for many of our common platforms.  Here we do the same for MSVC for x86_64
machines.

MSVC's intrinsic functions for popcnt seem to differ from GCCs in that
they always appear to emit the popcnt instructions.  In GCC the behavior
will depend on if the source file was compiled with -mpopcnt or not.  For
this reason, the MSVC intrinsic function has been lumped into the
pg_popcount*_asm function, however doing that sort of invalidates the name
of that function, so let's rename it to pg_popcount*_fast().

Author: David Rowley
Reviewed-by: John Naylor
Discussion: https://postgr.es/m/CAApHDvqL3cbbK%3DGzNcwzsNR9Gi%2BaUvTudKkC4XgnQfXirJ_oRQ%40mail.gmail.com
src/port/pg_bitutils.c