• Alvaro Herrera's avatar
    Fix compiler builtin usage in new pg_bitutils.c · fc6c7274
    Alvaro Herrera authored
    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
    fc6c7274
pg_bitutils.h 5.07 KB