Skip to content

Commit 023e10f

Browse files
committed
Rebased onto recent changes
1 parent 7b66816 commit 023e10f

File tree

3 files changed

+16
-18
lines changed

3 files changed

+16
-18
lines changed

lib/x86simdsort-avx2.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,32 +38,32 @@
3838
template <> \
3939
void keyvalue_qsort(type *key, uint64_t *val, size_t arrsize, bool hasnan) \
4040
{ \
41-
avx2_qsort_kv(key, val, arrsize, hasnan); \
41+
x86simdsortStatic::keyvalue_qsort(key, val, arrsize, hasnan); \
4242
} \
4343
template <> \
4444
void keyvalue_qsort(type *key, int64_t *val, size_t arrsize, bool hasnan) \
4545
{ \
46-
avx2_qsort_kv(key, val, arrsize, hasnan); \
46+
x86simdsortStatic::keyvalue_qsort(key, val, arrsize, hasnan); \
4747
} \
4848
template <> \
4949
void keyvalue_qsort(type *key, double *val, size_t arrsize, bool hasnan) \
5050
{ \
51-
avx2_qsort_kv(key, val, arrsize, hasnan); \
51+
x86simdsortStatic::keyvalue_qsort(key, val, arrsize, hasnan); \
5252
} \
5353
template <> \
5454
void keyvalue_qsort(type *key, uint32_t *val, size_t arrsize, bool hasnan) \
5555
{ \
56-
avx2_qsort_kv(key, val, arrsize, hasnan); \
56+
x86simdsortStatic::keyvalue_qsort(key, val, arrsize, hasnan); \
5757
} \
5858
template <> \
5959
void keyvalue_qsort(type *key, int32_t *val, size_t arrsize, bool hasnan) \
6060
{ \
61-
avx2_qsort_kv(key, val, arrsize, hasnan); \
61+
x86simdsortStatic::keyvalue_qsort(key, val, arrsize, hasnan); \
6262
} \
6363
template <> \
6464
void keyvalue_qsort(type *key, float *val, size_t arrsize, bool hasnan) \
6565
{ \
66-
avx2_qsort_kv(key, val, arrsize, hasnan); \
66+
x86simdsortStatic::keyvalue_qsort(key, val, arrsize, hasnan); \
6767
}
6868

6969
namespace xss {

src/x86simdsort-static-incl.h

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,20 +100,26 @@ keyvalue_qsort(T1 *key, T2 *val, size_t size, bool hasnan = false);
100100
std::iota(indices.begin(), indices.end(), 0); \
101101
x86simdsortStatic::argselect(arr, indices.data(), k, size, hasnan); \
102102
return indices; \
103-
}
103+
} \
104+
template <typename T1, typename T2> \
105+
X86_SIMD_SORT_FINLINE void \
106+
x86simdsortStatic::keyvalue_qsort(T1 *key, T2 *val, size_t size, bool hasnan) \
107+
{ \
108+
ISA##_qsort_kv(key, val, size, hasnan); \
109+
} \
104110

105111
/*
106112
* qsort, qselect, partial, argsort key-value sort template functions.
107113
*/
108114
#include "xss-common-qsort.h"
109115
#include "xss-common-argsort.h"
116+
#include "xss-common-keyvaluesort.hpp"
110117

111118
#if defined(__AVX512DQ__) && defined(__AVX512VL__)
112119
/* 32-bit and 64-bit dtypes vector definitions on SKX */
113120
#include "avx512-32bit-qsort.hpp"
114121
#include "avx512-64bit-qsort.hpp"
115122
#include "avx512-64bit-argsort.hpp"
116-
#include "avx512-64bit-keyvaluesort.hpp"
117123

118124
/* 16-bit dtypes vector definitions on ICL */
119125
#if defined(__AVX512BW__) && defined(__AVX512VBMI2__)
@@ -126,14 +132,6 @@ keyvalue_qsort(T1 *key, T2 *val, size_t size, bool hasnan = false);
126132

127133
XSS_METHODS(avx512)
128134

129-
// key-value currently only on avx512
130-
template <typename T1, typename T2>
131-
X86_SIMD_SORT_FINLINE void
132-
x86simdsortStatic::keyvalue_qsort(T1 *key, T2 *val, size_t size, bool hasnan)
133-
{
134-
avx512_qsort_kv(key, val, size, hasnan);
135-
}
136-
137135
#elif defined(__AVX512F__)
138136
#error "x86simdsort requires AVX512DQ and AVX512VL to be enabled in addition to AVX512F to use AVX512"
139137

src/xss-common-keyvaluesort.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ xss_qsort_kv(T1 *keys, T2 *indexes, arrsize_t arrsize, bool hasnan)
441441
indexes,
442442
0,
443443
arrsize - 1,
444-
2 * (arrsize_t)log2(arrsize));
444+
maxiters);
445445
replace_inf_with_nan(keys, arrsize, nan_count);
446446
}
447447
else {
@@ -450,7 +450,7 @@ xss_qsort_kv(T1 *keys, T2 *indexes, arrsize_t arrsize, bool hasnan)
450450
indexes,
451451
0,
452452
arrsize - 1,
453-
2 * (arrsize_t)log2(arrsize));
453+
maxiters);
454454
}
455455
}
456456
}

0 commit comments

Comments
 (0)