pgsql: Fix compiler builtin usage in new pg_bitutils.c

Поиск
Список
Период
Сортировка
Искать
От
Alvaro Herrera
Тема
pgsql: Fix compiler builtin usage in new pg_bitutils.c
Дата
Msg-id
E1gugXk-000276-Ht@gemulon.postgresql.org
Список
Дерево обсуждения
pgsql: Fix compiler builtin usage in new pg_bitutils.c Alvaro Herrera <alvherre@alvh.no-ip.org>
Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c Alvaro Herrera <alvherre@2ndquadrant.com>
Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c Tom Lane <tgl@sss.pgh.pa.us>
Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c Alvaro Herrera <alvherre@2ndquadrant.com>
Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c Tom Lane <tgl@sss.pgh.pa.us>
Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c Alvaro Herrera <alvherre@2ndquadrant.com>
Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c Tom Lane <tgl@sss.pgh.pa.us>
Re: pgsql: Fix compiler builtin usage in new pg_bitutils.c Tom Lane <tgl@sss.pgh.pa.us>
Fix compiler builtin usage in new pg_bitutils.c

Split out these new functions in three parts: one in a new file that
uses the compiler builtin and gets compiled with the -mpopcnt compiler
option if it exists; another one that uses the compiler builtin but not
the compiler option; and finally the fallback with open-coded
algorithms.

Split out the configure logic: in the original commit, it was selecting
to use the -mpopcnt compiler switch together with deciding whether to
use the compiler builtin, but those two things are really separate.
Split them out.  Also, expose whether the builtin exists to
Makefile.global, so that src/port's Makefile can decide whether to
compile the hw-optimized file.

Remove CPUID test for CTZ/CLZ.  Make pg_{right,left}most_ones use either
the compiler intrinsic or open-coded algo; trying to use the
HW-optimized version is a waste of time.  Make them static inline
functions.

Discussion: https://postgr.es/m/20190213221719.GA15976@alvherre.pgsql

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/fc6c72747ae6db6909fcd7d1adbc3d923ec1fffa

Modified Files
--------------
config/c-compiler.m4            |  22 +--
configure                       |  66 +++++--
configure.in                    |   6 +-
src/Makefile.global.in          |   3 +
src/include/port/pg_bitutils.h  | 176 ++++++++++++++++++-
src/port/Makefile               |  16 +-
src/port/pg_bitutils.c          | 378 +++++-----------------------------------
src/port/pg_bitutils_hwpopcnt.c |  36 ++++
8 files changed, 327 insertions(+), 376 deletions(-)

В списке pgsql-committers по дате отправления
От: Peter Eisentraut
Дата:
От: Alvaro Herrera
Дата:
FAQ