From 5dd8990841a9e331d9d4838a116291698208cbb6 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 18 Jul 2017 18:40:18 -1000 Subject: util: Introduce include/qemu/cpuid.h Clang 3.9 passes the CONFIG_AVX2_OPT configure test. However, the supplied does not contain the bit_AVX2 define that we use when detecting whether the routine can be enabled. Introduce a qemu-specific header that uses the compiler's definition of __cpuid et al, but supplies any missing bit_* definitions needed. This avoids introducing any extra ifdefs to util/bufferiszero.c, and allows quite a few to be removed from tcg/i386/tcg-target.inc.c. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-id: 20170719044018.18063-1-rth@twiddle.net Signed-off-by: Peter Maydell --- util/bufferiszero.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'util') diff --git a/util/bufferiszero.c b/util/bufferiszero.c index eb974b7849..2178d8ab9d 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -197,7 +197,7 @@ buffer_zero_avx2(const void *buf, size_t len) /* Make sure that these variables are appropriately initialized when * SSE2 is enabled on the compiler command-line, but the compiler is - * too old to support . + * too old to support CONFIG_AVX2_OPT. */ #ifdef CONFIG_AVX2_OPT # define INIT_CACHE 0 @@ -231,7 +231,8 @@ static void init_accel(unsigned cache) } #ifdef CONFIG_AVX2_OPT -#include +#include "qemu/cpuid.h" + static void __attribute__((constructor)) init_cpuid_cache(void) { int max = __get_cpuid_max(0, NULL); @@ -243,7 +244,6 @@ static void __attribute__((constructor)) init_cpuid_cache(void) if (d & bit_SSE2) { cache |= CACHE_SSE2; } -#ifdef CONFIG_AVX2_OPT if (c & bit_SSE4_1) { cache |= CACHE_SSE4; } @@ -257,7 +257,6 @@ static void __attribute__((constructor)) init_cpuid_cache(void) cache |= CACHE_AVX2; } } -#endif } cpuid_cache = cache; init_accel(cache); -- cgit v1.2.1