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