]> xenbits.xensource.com Git - unikraft/libs/intel-intrinsics.git/commitdiff
Fix _mm256_extract_epi64 definition on GCC RELEASE-0.5
authorVlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Mon, 6 Apr 2020 19:24:06 +0000 (22:24 +0300)
committerFelipe Huici <felipe.huici@neclab.eu>
Tue, 7 Apr 2020 14:50:08 +0000 (16:50 +0200)
Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@upb.ro>
Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>
include/avxintrin.h

index 6b9541d4e8c7141d38503e0047faef1c89d1bdb2..9ab6de7fde2ff6641a1e88f119fb287b0cd409b7 100644 (file)
@@ -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