@@ -367,20 +367,16 @@ X86_SIMD_SORT_INLINE void qsort_64bit_(type1_t *keys,
367
367
type2_t *indexes,
368
368
arrsize_t left,
369
369
arrsize_t right,
370
- arrsize_t max_iters)
370
+ int max_iters)
371
371
{
372
372
/*
373
373
* Resort to std::sort if quicksort isnt making any progress
374
374
*/
375
- #ifndef XSS_TEST_KEYVALUE_BASE_CASE
376
375
if (max_iters <= 0 ) {
377
- #endif // XSS_TEST_KEYVALUE_BASE_CASE
378
376
heap_sort<vtype1, vtype2>(
379
377
keys + left, indexes + left, right - left + 1 );
380
378
return ;
381
- #ifndef XSS_TEST_KEYVALUE_BASE_CASE
382
379
}
383
- #endif // XSS_TEST_KEYVALUE_BASE_CASE
384
380
/*
385
381
* Base case: use bitonic networks to sort arrays <= 128
386
382
*/
@@ -420,32 +416,30 @@ avx512_qsort_kv(T1 *keys, T2 *indexes, arrsize_t arrsize, bool hasnan = false)
420
416
&& sizeof (T2) == sizeof (int32_t ),
421
417
ymm_vector<T2>,
422
418
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 ;
426
428
#endif // XSS_TEST_KEYVALUE_BASE_CASE
429
+
430
+ if (minarrsize) {
431
+ arrsize_t nan_count = 0 ;
427
432
if constexpr (xss::fp::is_floating_point_v<T1>) {
428
- arrsize_t nan_count = 0 ;
429
433
if (UNLIKELY (hasnan)) {
430
434
nan_count = replace_nan_with_inf<zmm_vector<T1>>(keys, arrsize);
431
435
}
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));
446
436
}
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);
448
443
}
449
- #endif // XSS_TEST_KEYVALUE_BASE_CASE
450
444
}
451
445
#endif // AVX512_QSORT_64BIT_KV
0 commit comments