@@ -291,14 +291,15 @@ X86_SIMD_SORT_INLINE arrsize_t partition_avx512(type_t *arr,
291291template <typename vtype,
292292 typename argtype,
293293 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)
302303{
303304 if (right - left <= 8 * num_unroll * vtype::numlanes) {
304305 return partition_avx512<vtype, argtype>(
@@ -422,9 +423,12 @@ X86_SIMD_SORT_INLINE arrsize_t partition_avx512_unrolled(type_t *arr,
422423 return l_store;
423424}
424425
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 >
426430X86_SIMD_SORT_INLINE type_t get_pivot_64bit (type_t *arr,
427- arrsize_t *arg,
431+ argtype_t *arg,
428432 const arrsize_t left,
429433 const arrsize_t right)
430434{
@@ -468,9 +472,12 @@ X86_SIMD_SORT_INLINE type_t get_pivot_64bit(type_t *arr,
468472 }
469473}
470474
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 >
472479X86_SIMD_SORT_INLINE void argsort_64bit_ (type_t *arr,
473- arrsize_t *arg,
480+ argtype_t *arg,
474481 arrsize_t left,
475482 arrsize_t right,
476483 arrsize_t max_iters)
@@ -490,10 +497,10 @@ X86_SIMD_SORT_INLINE void argsort_64bit_(type_t *arr,
490497 arr, arg + left, (int32_t )(right + 1 - left));
491498 return ;
492499 }
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);
494501 type_t smallest = vtype::type_max ();
495502 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 >(
497504 arr, arg, left, right + 1 , pivot, &smallest, &biggest);
498505 if (pivot != smallest)
499506 argsort_64bit_<vtype, argtype>(
@@ -503,9 +510,12 @@ X86_SIMD_SORT_INLINE void argsort_64bit_(type_t *arr,
503510 arr, arg, pivot_index, right, max_iters - 1 );
504511}
505512
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 >
507517X86_SIMD_SORT_INLINE void argselect_64bit_ (type_t *arr,
508- arrsize_t *arg,
518+ argtype_t *arg,
509519 arrsize_t pos,
510520 arrsize_t left,
511521 arrsize_t right,
@@ -526,10 +536,10 @@ X86_SIMD_SORT_INLINE void argselect_64bit_(type_t *arr,
526536 arr, arg + left, (int32_t )(right + 1 - left));
527537 return ;
528538 }
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);
530540 type_t smallest = vtype::type_max ();
531541 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 >(
533543 arr, arg, left, right + 1 , pivot, &smallest, &biggest);
534544 if ((pivot != smallest) && (pos < pivot_index))
535545 argselect_64bit_<vtype, argtype>(
0 commit comments