From 8dacf5f9d1df95c768016a1b92465bbabed37b54 Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Thu, 30 Jan 2020 20:48:26 -0800 Subject: [PATCH] swr: Fix build with GCC 10. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC 10 added _mm256_storeu2_m128i. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91341 This patch fixes this build error with GCC 10. In file included from src/gallium/drivers/swr/rasterizer/codegen/gen_knobs.cpp:39: ../src/gallium/drivers/swr/rasterizer/common/os.h:178:20: error: ‘void _mm256_storeu2_m128i(__m128i*, __m128i*, __m256i)’ redeclared inline without ‘gnu_inline’ attribute 178 | static INLINE void _mm256_storeu2_m128i(__m128i* hi, __m128i* lo, __m256i a) | ^~~~~~~~~~~~~~~~~~~~ In file included from /usr/lib/gcc/x86_64-redhat-linux/10/include/immintrin.h:51, from /usr/lib/gcc/x86_64-redhat-linux/10/include/x86intrin.h:32, from ../src/gallium/drivers/swr/rasterizer/common/os.h:107, from src/gallium/drivers/swr/rasterizer/codegen/gen_knobs.cpp:39: /usr/lib/gcc/x86_64-redhat-linux/10/include/avxintrin.h:1580:1: note: ‘void _mm256_storeu2_m128i(__m128i_u*, __m128i_u*, __m256i)’ previously defined here 1580 | _mm256_storeu2_m128i (__m128i_u *__PH, __m128i_u *__PL, __m256i __A) | ^~~~~~~~~~~~~~~~~~~~ Signed-off-by: Vinson Lee Tested-by: Marge Bot Part-of: Signed-off-by: Laurent Carlier --- src/gallium/drivers/swr/rasterizer/common/os.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/swr/rasterizer/common/os.h b/src/gallium/drivers/swr/rasterizer/common/os.h index e812da39851..c4ee00bc91d 100644 --- a/src/gallium/drivers/swr/rasterizer/common/os.h +++ b/src/gallium/drivers/swr/rasterizer/common/os.h @@ -174,12 +174,14 @@ inline uint64_t __rdtsc() #endif #if !defined(__clang__) && !defined(__INTEL_COMPILER) -// Intrinsic not defined in gcc +// Intrinsic not defined in gcc < 10 +#if (__GNUC__) && (GCC_VERSION < 100000) static INLINE void _mm256_storeu2_m128i(__m128i* hi, __m128i* lo, __m256i a) { _mm_storeu_si128((__m128i*)lo, _mm256_castsi256_si128(a)); _mm_storeu_si128((__m128i*)hi, _mm256_extractf128_si256(a, 0x1)); } +#endif // gcc prior to 4.9 doesn't have _mm*_undefined_* #if (__GNUC__) && (GCC_VERSION < 409000) -- 2.26.2