Fix code for probing availability of AVX-512. This commit fixes a few things: * Instead of checking for CPU support of the "xsave" extension, we need to check for OS support of XGETBV instructions via the "osxsave" flag. * We must check that additional XCR0 bits are set to be sure the ZMM registers are fully enabled. * We should use the recommended ordering of steps. Specifically, we need to check that the ZMM registers are enabled prior to checking for AVX-512 via CPUID.
In passing, split this code into separate functions to improve readability. Reported-by: Andrew Kane Reviewed-by: Akash Shankaran, Raghuveer Devulapalli Discussion: https://postgr.es/m/20240418024459.GA3385227%40nathanxps13 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/598e0114a3b16bb7edcaba6784b3794f816889ae Modified Files -------------- src/port/pg_popcount_avx512_choose.c | 80 +++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 33 deletions(-)
