3
3
* * SPDX-License-Identifier: BSD-3-Clause
4
4
* *******************************************/
5
5
6
- #include " avx512-16bit-qsort.hpp"
7
- #include " avx512-32bit-qsort.hpp"
8
- #include " avx512-64bit-keyvaluesort.hpp"
9
- #include " avx512-64bit-qsort.hpp"
10
- #include " cpuinfo.h"
6
+ #include " avx512-common-keyvaluesort.h"
11
7
#include " rand_array.h"
12
8
#include < gtest/gtest.h>
13
9
#include < vector>
14
10
15
- template <typename T>
16
- class avx512_sort : public ::testing::Test {
17
- };
18
- TYPED_TEST_SUITE_P (avx512_sort);
19
-
20
- TYPED_TEST_P (avx512_sort, test_arrsizes)
21
- {
22
- if (cpu_has_avx512bw ()) {
23
- if ((sizeof (TypeParam) == 2 ) && (!cpu_has_avx512_vbmi2 ())) {
24
- GTEST_SKIP () << " Skipping this test, it requires avx512_vbmi2" ;
25
- }
26
- std::vector<int64_t > arrsizes;
27
- for (int64_t ii = 0 ; ii < 1024 ; ++ii) {
28
- arrsizes.push_back ((TypeParam)ii);
29
- }
30
- std::vector<TypeParam> arr;
31
- std::vector<TypeParam> sortedarr;
32
- for (size_t ii = 0 ; ii < arrsizes.size (); ++ii) {
33
- /* Random array */
34
- arr = get_uniform_rand_array<TypeParam>(arrsizes[ii]);
35
- sortedarr = arr;
36
- /* Sort with std::sort for comparison */
37
- std::sort (sortedarr.begin (), sortedarr.end ());
38
- avx512_qsort<TypeParam>(arr.data (), arr.size ());
39
- ASSERT_EQ (sortedarr, arr);
40
- arr.clear ();
41
- sortedarr.clear ();
42
- }
43
- }
44
- else {
45
- GTEST_SKIP () << " Skipping this test, it requires avx512bw" ;
46
- }
47
- }
48
-
49
- REGISTER_TYPED_TEST_SUITE_P (avx512_sort, test_arrsizes);
50
-
51
- using Types = testing::Types<uint16_t ,
52
- int16_t ,
53
- float ,
54
- double ,
55
- uint32_t ,
56
- int32_t ,
57
- uint64_t ,
58
- int64_t >;
59
- INSTANTIATE_TYPED_TEST_SUITE_P (TestPrefix, avx512_sort, Types);
60
-
61
11
template <typename K, typename V = uint64_t >
62
12
struct sorted_t {
63
13
K key;
64
14
K value;
65
15
};
16
+
66
17
template <typename K, typename V = uint64_t >
67
18
bool compare (sorted_t <K, V> a, sorted_t <K, V> b)
68
19
{
@@ -87,7 +38,8 @@ TYPED_TEST_P(TestKeyValueSort, KeyValueSort)
87
38
88
39
for (size_t ii = 0 ; ii < keysizes.size (); ++ii) {
89
40
/* Random array */
90
- keys = get_uniform_rand_array_key<TypeParam>(keysizes[ii]);
41
+ keys =
42
+ get_uniform_rand_array_with_uniquevalues<TypeParam>(keysizes[ii]);
91
43
values = get_uniform_rand_array<uint64_t >(keysizes[ii]);
92
44
for (size_t i = 0 ; i < keys.size (); i++) {
93
45
sorted_t <TypeParam, uint64_t > tmp_s;
@@ -113,4 +65,4 @@ TYPED_TEST_P(TestKeyValueSort, KeyValueSort)
113
65
REGISTER_TYPED_TEST_SUITE_P (TestKeyValueSort, KeyValueSort);
114
66
115
67
using TypesKv = testing::Types<double , uint64_t , int64_t >;
116
- INSTANTIATE_TYPED_TEST_SUITE_P (TestPrefixKv, TestKeyValueSort, TypesKv);
68
+ INSTANTIATE_TYPED_TEST_SUITE_P (TestPrefixKv, TestKeyValueSort, TypesKv);
0 commit comments