From: Vlad-Andrei Badoiu Date: Mon, 6 Apr 2020 19:24:06 +0000 (+0300) Subject: Fix _mm256_extract_epi64 definition on GCC X-Git-Tag: RELEASE-0.5^0 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=5358e4a20138f6e2ee5c55aad10eaefe3328c0a1;p=unikraft%2Flibs%2Fintel-intrinsics.git Fix _mm256_extract_epi64 definition on GCC Signed-off-by: Vlad-Andrei Badoiu Reviewed-by: Felipe Huici --- diff --git a/include/avxintrin.h b/include/avxintrin.h index 6b9541d..9ab6de7 100644 --- a/include/avxintrin.h +++ b/include/avxintrin.h @@ -2035,8 +2035,17 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c) /// element is extracted and returned. /// \returns A 64-bit integer containing the extracted 64 bits of extended /// packed data. +#ifdef __clang__ #define _mm256_extract_epi64(X, N) \ (long long)__builtin_ia32_vec_ext_v4di((__v4di)(__m256i)(X), (int)(N)) +#else +#define _mm256_extract_epi64(X, N) \ + (__extension__ \ + ({ \ + __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 1); \ + _mm_extract_epi64 (__Y, (N) % 2); \ + })) +#endif #endif /// Takes a [8 x i32] vector and replaces the vector element value