diff --git a/src/avx512-common-qsort.h b/src/avx512-common-qsort.h index 1fdf3627..9e6b6752 100644 --- a/src/avx512-common-qsort.h +++ b/src/avx512-common-qsort.h @@ -451,18 +451,28 @@ X86_SIMD_SORT_INLINE arrsize_t partition_avx512_unrolled(type_t *arr, X86_SIMD_SORT_UNROLL_LOOP(8) for (int ii = 0; ii < num_unroll; ++ii) { curr_vec[ii] = vtype::loadu(arr + right + ii * vtype::numlanes); + /* + * error: '_mm_prefetch' needs target feature mmx on clang-cl + */ +#if !(defined(_MSC_VER) && defined(__clang__)) _mm_prefetch((char *)(arr + right + ii * vtype::numlanes - num_unroll * vtype::numlanes), _MM_HINT_T0); +#endif } } else { X86_SIMD_SORT_UNROLL_LOOP(8) for (int ii = 0; ii < num_unroll; ++ii) { curr_vec[ii] = vtype::loadu(arr + left + ii * vtype::numlanes); + /* + * error: '_mm_prefetch' needs target feature mmx on clang-cl + */ +#if !(defined(_MSC_VER) && defined(__clang__)) _mm_prefetch((char *)(arr + left + ii * vtype::numlanes + num_unroll * vtype::numlanes), _MM_HINT_T0); +#endif } left += num_unroll * vtype::numlanes; }