diff --git a/src/avx512-16bit-qsort.hpp b/src/avx512-16bit-qsort.hpp index 65a64fb..3b18b98 100644 --- a/src/avx512-16bit-qsort.hpp +++ b/src/avx512-16bit-qsort.hpp @@ -572,6 +572,11 @@ avx512_qsort_fp16(uint16_t *arr, } replace_inf_with_nan(arr, arrsize, nan_count, descending); } + +#ifdef __MMX__ + // Workaround for compiler bug generating MMX instructions without emms + _mm_empty(); +#endif } [[maybe_unused]] X86_SIMD_SORT_INLINE void @@ -605,6 +610,11 @@ avx512_qselect_fp16(uint16_t *arr, 2 * (arrsize_t)log2(indx_last_elem)); } } + +#ifdef __MMX__ + // Workaround for compiler bug generating MMX instructions without emms + _mm_empty(); +#endif } [[maybe_unused]] X86_SIMD_SORT_INLINE void diff --git a/src/xss-common-keyvaluesort.hpp b/src/xss-common-keyvaluesort.hpp index 43f64ec..df85861 100644 --- a/src/xss-common-keyvaluesort.hpp +++ b/src/xss-common-keyvaluesort.hpp @@ -652,6 +652,11 @@ X86_SIMD_SORT_INLINE void xss_qsort_kv( std::reverse(indexes, indexes + arrsize); } } + +#ifdef __MMX__ + // Workaround for compiler bug generating MMX instructions without emms + _mm_empty(); +#endif } template