Skip to content

Commit f0a9ca2

Browse files
author
Raghuveer Devulapalli
committed
Refactor avx512_kvsort
1 parent b23aab6 commit f0a9ca2

File tree

1 file changed

+19
-25
lines changed

1 file changed

+19
-25
lines changed

src/avx512-64bit-keyvaluesort.hpp

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -367,20 +367,16 @@ X86_SIMD_SORT_INLINE void qsort_64bit_(type1_t *keys,
367367
type2_t *indexes,
368368
arrsize_t left,
369369
arrsize_t right,
370-
arrsize_t max_iters)
370+
int max_iters)
371371
{
372372
/*
373373
* Resort to std::sort if quicksort isnt making any progress
374374
*/
375-
#ifndef XSS_TEST_KEYVALUE_BASE_CASE
376375
if (max_iters <= 0) {
377-
#endif // XSS_TEST_KEYVALUE_BASE_CASE
378376
heap_sort<vtype1, vtype2>(
379377
keys + left, indexes + left, right - left + 1);
380378
return;
381-
#ifndef XSS_TEST_KEYVALUE_BASE_CASE
382379
}
383-
#endif // XSS_TEST_KEYVALUE_BASE_CASE
384380
/*
385381
* Base case: use bitonic networks to sort arrays <= 128
386382
*/
@@ -420,32 +416,30 @@ avx512_qsort_kv(T1 *keys, T2 *indexes, arrsize_t arrsize, bool hasnan = false)
420416
&& sizeof(T2) == sizeof(int32_t),
421417
ymm_vector<T2>,
422418
zmm_vector<T2>>::type;
423-
424-
#ifndef XSS_TEST_KEYVALUE_BASE_CASE
425-
if (arrsize > 1) {
419+
/*
420+
* Enable testing the heapsort key-value sort in the CI:
421+
*/
422+
#ifdef XSS_TEST_KEYVALUE_BASE_CASE
423+
int maxiters = -1;
424+
bool minarrsize = true;
425+
#else
426+
int maxiters = 2 * log2(arrsize);
427+
bool minarrsize = arrsize > 1 ? true : false;
426428
#endif // XSS_TEST_KEYVALUE_BASE_CASE
429+
430+
if (minarrsize) {
431+
arrsize_t nan_count = 0;
427432
if constexpr (xss::fp::is_floating_point_v<T1>) {
428-
arrsize_t nan_count = 0;
429433
if (UNLIKELY(hasnan)) {
430434
nan_count = replace_nan_with_inf<zmm_vector<T1>>(keys, arrsize);
431435
}
432-
qsort_64bit_<keytype, valtype>(keys,
433-
indexes,
434-
0,
435-
arrsize - 1,
436-
2 * (arrsize_t)log2(arrsize));
437-
replace_inf_with_nan(keys, arrsize, nan_count);
438-
}
439-
else {
440-
UNUSED(hasnan);
441-
qsort_64bit_<keytype, valtype>(keys,
442-
indexes,
443-
0,
444-
arrsize - 1,
445-
2 * (arrsize_t)log2(arrsize));
446436
}
447-
#ifndef XSS_TEST_KEYVALUE_BASE_CASE
437+
qsort_64bit_<keytype, valtype>(keys,
438+
indexes,
439+
0,
440+
arrsize - 1,
441+
maxiters);
442+
replace_inf_with_nan(keys, arrsize, nan_count);
448443
}
449-
#endif // XSS_TEST_KEYVALUE_BASE_CASE
450444
}
451445
#endif // AVX512_QSORT_64BIT_KV

0 commit comments

Comments
 (0)