@@ -291,14 +291,15 @@ X86_SIMD_SORT_INLINE arrsize_t partition_avx512(type_t *arr,
291
291
template <typename vtype,
292
292
typename argtype,
293
293
int num_unroll,
294
- typename type_t = typename vtype::type_t >
295
- X86_SIMD_SORT_INLINE arrsize_t partition_avx512_unrolled (type_t *arr,
296
- arrsize_t *arg,
297
- arrsize_t left,
298
- arrsize_t right,
299
- type_t pivot,
300
- type_t *smallest,
301
- type_t *biggest)
294
+ typename type_t = typename vtype::type_t ,
295
+ typename argtype_t = typename argtype::type_t >
296
+ X86_SIMD_SORT_INLINE arrsize_t argpartition_unrolled (type_t *arr,
297
+ argtype_t *arg,
298
+ arrsize_t left,
299
+ arrsize_t right,
300
+ type_t pivot,
301
+ type_t *smallest,
302
+ type_t *biggest)
302
303
{
303
304
if (right - left <= 8 * num_unroll * vtype::numlanes) {
304
305
return partition_avx512<vtype, argtype>(
@@ -422,9 +423,12 @@ X86_SIMD_SORT_INLINE arrsize_t partition_avx512_unrolled(type_t *arr,
422
423
return l_store;
423
424
}
424
425
425
- template <typename vtype, typename type_t >
426
+ template <typename vtype,
427
+ typename argtype,
428
+ typename type_t = typename vtype::type_t ,
429
+ typename argtype_t = typename argtype::type_t >
426
430
X86_SIMD_SORT_INLINE type_t get_pivot_64bit (type_t *arr,
427
- arrsize_t *arg,
431
+ argtype_t *arg,
428
432
const arrsize_t left,
429
433
const arrsize_t right)
430
434
{
@@ -468,9 +472,12 @@ X86_SIMD_SORT_INLINE type_t get_pivot_64bit(type_t *arr,
468
472
}
469
473
}
470
474
471
- template <typename vtype, typename argtype, typename type_t >
475
+ template <typename vtype,
476
+ typename argtype,
477
+ typename type_t = typename vtype::type_t ,
478
+ typename argtype_t = typename argtype::type_t >
472
479
X86_SIMD_SORT_INLINE void argsort_64bit_ (type_t *arr,
473
- arrsize_t *arg,
480
+ argtype_t *arg,
474
481
arrsize_t left,
475
482
arrsize_t right,
476
483
arrsize_t max_iters)
@@ -490,10 +497,10 @@ X86_SIMD_SORT_INLINE void argsort_64bit_(type_t *arr,
490
497
arr, arg + left, (int32_t )(right + 1 - left));
491
498
return ;
492
499
}
493
- type_t pivot = get_pivot_64bit<vtype>(arr, arg, left, right);
500
+ type_t pivot = get_pivot_64bit<vtype, argtype >(arr, arg, left, right);
494
501
type_t smallest = vtype::type_max ();
495
502
type_t biggest = vtype::type_min ();
496
- arrsize_t pivot_index = partition_avx512_unrolled <vtype, argtype, 4 >(
503
+ arrsize_t pivot_index = argpartition_unrolled <vtype, argtype, 4 >(
497
504
arr, arg, left, right + 1 , pivot, &smallest, &biggest);
498
505
if (pivot != smallest)
499
506
argsort_64bit_<vtype, argtype>(
@@ -503,9 +510,12 @@ X86_SIMD_SORT_INLINE void argsort_64bit_(type_t *arr,
503
510
arr, arg, pivot_index, right, max_iters - 1 );
504
511
}
505
512
506
- template <typename vtype, typename argtype, typename type_t >
513
+ template <typename vtype,
514
+ typename argtype,
515
+ typename type_t = typename vtype::type_t ,
516
+ typename argtype_t = typename argtype::type_t >
507
517
X86_SIMD_SORT_INLINE void argselect_64bit_ (type_t *arr,
508
- arrsize_t *arg,
518
+ argtype_t *arg,
509
519
arrsize_t pos,
510
520
arrsize_t left,
511
521
arrsize_t right,
@@ -526,10 +536,10 @@ X86_SIMD_SORT_INLINE void argselect_64bit_(type_t *arr,
526
536
arr, arg + left, (int32_t )(right + 1 - left));
527
537
return ;
528
538
}
529
- type_t pivot = get_pivot_64bit<vtype>(arr, arg, left, right);
539
+ type_t pivot = get_pivot_64bit<vtype, argtype >(arr, arg, left, right);
530
540
type_t smallest = vtype::type_max ();
531
541
type_t biggest = vtype::type_min ();
532
- arrsize_t pivot_index = partition_avx512_unrolled <vtype, argtype, 4 >(
542
+ arrsize_t pivot_index = argpartition_unrolled <vtype, argtype, 4 >(
533
543
arr, arg, left, right + 1 , pivot, &smallest, &biggest);
534
544
if ((pivot != smallest) && (pos < pivot_index))
535
545
argselect_64bit_<vtype, argtype>(
0 commit comments