Skip to content

Commit 43c5462

Browse files
committed
fix for MSVC 141, also clean up warnings
1 parent dc5aba5 commit 43c5462

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

numpy/core/src/npysort/x86-qsort.dispatch.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,11 @@ partition_vec(type_t *arr, npy_intp left, npy_intp right, const zmm_t curr_vec,
648648
/* which elements are larger than the pivot */
649649
__mmask16 gt_mask = vtype::ge(curr_vec, pivot_vec);
650650
npy_int amount_gt_pivot = _mm_popcnt_u32((npy_int)gt_mask);
651+
#if defined(_MSC_VER) && _MSC_VER < 1922
652+
vtype::mask_compressstoreu(arr + left, ~gt_mask, curr_vec);
653+
#else
651654
vtype::mask_compressstoreu(arr + left, _knot_mask16(gt_mask), curr_vec);
655+
#endif
652656
vtype::mask_compressstoreu(arr + right - amount_gt_pivot, gt_mask,
653657
curr_vec);
654658
*smallest_vec = vtype::min(curr_vec, *smallest_vec);
@@ -756,7 +760,7 @@ qsort_(type_t *arr, npy_intp left, npy_intp right, npy_int max_iters)
756760
* Base case: use bitonic networks to sort arrays <= 128
757761
*/
758762
if (right + 1 - left <= 128) {
759-
sort_128<vtype>(arr + left, right + 1 - left);
763+
sort_128<vtype>(arr + left, (npy_int)(right + 1 - left));
760764
return;
761765
}
762766

@@ -808,7 +812,7 @@ NPY_CPU_DISPATCH_CURFX(x86_quicksort_int)(void *arr, npy_intp arrsize)
808812
{
809813
if (arrsize > 1) {
810814
qsort_<vector<npy_int>, npy_int>((npy_int *)arr, 0, arrsize - 1,
811-
2 * log2(arrsize));
815+
2 * (npy_int)log2(arrsize));
812816
}
813817
}
814818

@@ -817,7 +821,7 @@ NPY_CPU_DISPATCH_CURFX(x86_quicksort_uint)(void *arr, npy_intp arrsize)
817821
{
818822
if (arrsize > 1) {
819823
qsort_<vector<npy_uint>, npy_uint>((npy_uint *)arr, 0, arrsize - 1,
820-
2 * log2(arrsize));
824+
2 * (npy_int)log2(arrsize));
821825
}
822826
}
823827

@@ -827,7 +831,7 @@ NPY_CPU_DISPATCH_CURFX(x86_quicksort_float)(void *arr, npy_intp arrsize)
827831
if (arrsize > 1) {
828832
npy_intp nan_count = replace_nan_with_inf((npy_float *)arr, arrsize);
829833
qsort_<vector<npy_float>, npy_float>((npy_float *)arr, 0, arrsize - 1,
830-
2 * log2(arrsize));
834+
2 * (npy_int)log2(arrsize));
831835
replace_inf_with_nan((npy_float *)arr, arrsize, nan_count);
832836
}
833837
}

0 commit comments

Comments
 (0)