|
3 | 3 |
|
4 | 4 | #include "x86-simd-sort/src/x86simdsort-static-incl.h"
|
5 | 5 |
|
| 6 | +#define DISPATCH_ARG_METHODS(TYPE) \ |
| 7 | +template<> void NPY_CPU_DISPATCH_CURFX(ArgQSelect)(TYPE* arr, npy_intp* arg, npy_intp num, npy_intp kth) \ |
| 8 | +{ \ |
| 9 | + x86simdsortStatic::argselect(arr, reinterpret_cast<size_t*>(arg), kth, num, true); \ |
| 10 | +} \ |
| 11 | +template<> void NPY_CPU_DISPATCH_CURFX(ArgQSort)(TYPE* arr, npy_intp *arg, npy_intp size) \ |
| 12 | +{ \ |
| 13 | + x86simdsortStatic::argsort(arr, reinterpret_cast<size_t*>(arg), size, true); \ |
| 14 | +} \ |
| 15 | + |
6 | 16 | namespace np { namespace qsort_simd {
|
7 | 17 |
|
8 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSelect)(int32_t *arr, npy_intp* arg, npy_intp num, npy_intp kth) |
9 |
| -{ |
10 |
| - x86simdsortStatic::argselect(arr, reinterpret_cast<size_t*>(arg), kth, num); |
11 |
| -} |
12 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSelect)(uint32_t *arr, npy_intp* arg, npy_intp num, npy_intp kth) |
13 |
| -{ |
14 |
| - x86simdsortStatic::argselect(arr, reinterpret_cast<size_t*>(arg), kth, num); |
15 |
| -} |
16 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSelect)(int64_t*arr, npy_intp* arg, npy_intp num, npy_intp kth) |
17 |
| -{ |
18 |
| - x86simdsortStatic::argselect(arr, reinterpret_cast<size_t*>(arg), kth, num); |
19 |
| -} |
20 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSelect)(uint64_t*arr, npy_intp* arg, npy_intp num, npy_intp kth) |
21 |
| -{ |
22 |
| - x86simdsortStatic::argselect(arr, reinterpret_cast<size_t*>(arg), kth, num); |
23 |
| -} |
24 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSelect)(float *arr, npy_intp* arg, npy_intp num, npy_intp kth) |
25 |
| -{ |
26 |
| - x86simdsortStatic::argselect(arr, reinterpret_cast<size_t*>(arg), kth, num, true); |
27 |
| -} |
28 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSelect)(double *arr, npy_intp* arg, npy_intp num, npy_intp kth) |
29 |
| -{ |
30 |
| - x86simdsortStatic::argselect(arr, reinterpret_cast<size_t*>(arg), kth, num, true); |
31 |
| -} |
32 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSort)(int32_t *arr, npy_intp *arg, npy_intp size) |
33 |
| -{ |
34 |
| - x86simdsortStatic::argsort(arr, reinterpret_cast<size_t*>(arg), size); |
35 |
| -} |
36 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSort)(uint32_t *arr, npy_intp *arg, npy_intp size) |
37 |
| -{ |
38 |
| - x86simdsortStatic::argsort(arr, reinterpret_cast<size_t*>(arg), size); |
39 |
| -} |
40 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSort)(int64_t *arr, npy_intp *arg, npy_intp size) |
41 |
| -{ |
42 |
| - x86simdsortStatic::argsort(arr, reinterpret_cast<size_t*>(arg), size); |
43 |
| -} |
44 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSort)(uint64_t *arr, npy_intp *arg, npy_intp size) |
45 |
| -{ |
46 |
| - x86simdsortStatic::argsort(arr, reinterpret_cast<size_t*>(arg), size); |
47 |
| -} |
48 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSort)(float *arr, npy_intp *arg, npy_intp size) |
49 |
| -{ |
50 |
| - x86simdsortStatic::argsort(arr, reinterpret_cast<size_t*>(arg), size, true); |
51 |
| -} |
52 |
| -template<> void NPY_CPU_DISPATCH_CURFX(ArgQSort)(double *arr, npy_intp *arg, npy_intp size) |
53 |
| -{ |
54 |
| - x86simdsortStatic::argsort(arr, reinterpret_cast<size_t*>(arg), size, true); |
55 |
| -} |
| 18 | + DISPATCH_ARG_METHODS(uint32_t) |
| 19 | + DISPATCH_ARG_METHODS(int32_t) |
| 20 | + DISPATCH_ARG_METHODS(float) |
| 21 | + DISPATCH_ARG_METHODS(uint64_t) |
| 22 | + DISPATCH_ARG_METHODS(int64_t) |
| 23 | + DISPATCH_ARG_METHODS(double) |
56 | 24 |
|
57 | 25 | }} // namespace np::simd
|
58 | 26 |
|
|
0 commit comments