Move check for USE_AVX512_POPCNT_WITH_RUNTIME_CHECK.

Unlike TRY_POPCNT_FAST, which is defined in pg_bitutils.h, this
macro is defined in c.h (via pg_config.h), so we can check for it
earlier and avoid some unnecessary #includes on systems that lack
AVX-512 support.

Oversight in commit f78667bd91.

Discussion: https://postgr.es/m/Zy5K5Qmlb3Z4dsd4%40nathan
This commit is contained in:
Nathan Bossart 2024-11-08 14:25:28 -06:00
parent b8df690492
commit 4225276e25

View File

@ -12,13 +12,13 @@
*/
#include "c.h"
#ifdef USE_AVX512_POPCNT_WITH_RUNTIME_CHECK
#if defined(HAVE__GET_CPUID) || defined(HAVE__GET_CPUID_COUNT)
#include <cpuid.h>
#endif
#ifdef USE_AVX512_POPCNT_WITH_RUNTIME_CHECK
#include <immintrin.h>
#endif
#if defined(HAVE__CPUID) || defined(HAVE__CPUIDEX)
#include <intrin.h>
@ -31,7 +31,7 @@
* use AVX-512 intrinsics, but we check it anyway to be sure. We piggy-back on
* the function pointers that are only used when TRY_POPCNT_FAST is set.
*/
#if defined(TRY_POPCNT_FAST) && defined(USE_AVX512_POPCNT_WITH_RUNTIME_CHECK)
#ifdef TRY_POPCNT_FAST
/*
* Does CPUID say there's support for XSAVE instructions?
@ -219,5 +219,5 @@ pg_popcount_masked_avx512(const char *buf, int bytes, bits8 mask)
return _mm512_reduce_add_epi64(accum);
}
#endif /* TRY_POPCNT_FAST &&
* USE_AVX512_POPCNT_WITH_RUNTIME_CHECK */
#endif /* TRY_POPCNT_FAST */
#endif /* USE_AVX512_POPCNT_WITH_RUNTIME_CHECK */