Skip to content

Commit ed6c409

Browse files
author
Raghuveer Devulapalli
authored
Merge pull request #69 from r-devulap/fix-warnings
Fix compiler warnings in src and tests
2 parents 94280b1 + 9cecdcb commit ed6c409

File tree

7 files changed

+45
-42
lines changed

7 files changed

+45
-42
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ BENCHOBJS := $(patsubst %.cpp, %.o, $(filter-out $(addprefix $(BENCHDIR)/, $(BEN
4646
TESTOBJS := $(patsubst %.cpp, %.o, $(filter-out $(addprefix $(TESTDIR)/, $(TESTS_SKIP)), $(TESTS)))
4747
UTILOBJS := $(UTILS:.cpp=.o)
4848

49-
# Stops make from wondering if it needs to generate the .hpp files (.cpp and .h have equivalent rules by default)
49+
# Stops make from wondering if it needs to generate the .hpp files (.cpp and .h have equivalent rules by default)
5050
%.hpp:
5151

5252
.PHONY: all
@@ -75,7 +75,7 @@ benchexe: $(BENCHOBJS) $(UTILOBJS)
7575

7676
.PHONY: meson
7777
meson:
78-
meson setup --warnlevel 0 --buildtype plain builddir
78+
meson setup --warnlevel 2 --buildtype plain builddir
7979
cd builddir && ninja
8080

8181
.PHONY: clean

src/avx512-64bit-argsort.hpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ X86_SIMD_SORT_INLINE void argsort_32_64bit(type_t *arr, int64_t *arg, int32_t N)
108108
zmm_t arrzmm[4];
109109
argzmm_t argzmm[4];
110110

111-
#pragma X86_SIMD_SORT_UNROLL_LOOP(2)
111+
X86_SIMD_SORT_UNROLL_LOOP(2)
112112
for (int ii = 0; ii < 2; ++ii) {
113113
argzmm[ii] = argtype::loadu(arg + 8 * ii);
114114
arrzmm[ii] = vtype::template i64gather<sizeof(type_t)>(argzmm[ii], arr);
@@ -117,7 +117,7 @@ X86_SIMD_SORT_INLINE void argsort_32_64bit(type_t *arr, int64_t *arg, int32_t N)
117117

118118
uint64_t combined_mask = (0x1ull << (N - 16)) - 0x1ull;
119119
opmask_t load_mask[2] = {0xFF, 0xFF};
120-
#pragma X86_SIMD_SORT_UNROLL_LOOP(2)
120+
X86_SIMD_SORT_UNROLL_LOOP(2)
121121
for (int ii = 0; ii < 2; ++ii) {
122122
load_mask[ii] = (combined_mask >> (ii * 8)) & 0xFF;
123123
argzmm[ii + 2] = argtype::maskz_loadu(load_mask[ii], arg + 16 + 8 * ii);
@@ -151,7 +151,7 @@ X86_SIMD_SORT_INLINE void argsort_64_64bit(type_t *arr, int64_t *arg, int32_t N)
151151
zmm_t arrzmm[8];
152152
argzmm_t argzmm[8];
153153

154-
#pragma X86_SIMD_SORT_UNROLL_LOOP(4)
154+
X86_SIMD_SORT_UNROLL_LOOP(4)
155155
for (int ii = 0; ii < 4; ++ii) {
156156
argzmm[ii] = argtype::loadu(arg + 8 * ii);
157157
arrzmm[ii] = vtype::template i64gather<sizeof(type_t)>(argzmm[ii], arr);
@@ -160,7 +160,7 @@ X86_SIMD_SORT_INLINE void argsort_64_64bit(type_t *arr, int64_t *arg, int32_t N)
160160

161161
opmask_t load_mask[4] = {0xFF, 0xFF, 0xFF, 0xFF};
162162
uint64_t combined_mask = (0x1ull << (N - 32)) - 0x1ull;
163-
#pragma X86_SIMD_SORT_UNROLL_LOOP(4)
163+
X86_SIMD_SORT_UNROLL_LOOP(4)
164164
for (int ii = 0; ii < 4; ++ii) {
165165
load_mask[ii] = (combined_mask >> (ii * 8)) & 0xFF;
166166
argzmm[ii + 4] = argtype::maskz_loadu(load_mask[ii], arg + 32 + 8 * ii);
@@ -170,7 +170,7 @@ X86_SIMD_SORT_INLINE void argsort_64_64bit(type_t *arr, int64_t *arg, int32_t N)
170170
argzmm[ii + 4]);
171171
}
172172

173-
#pragma X86_SIMD_SORT_UNROLL_LOOP(4)
173+
X86_SIMD_SORT_UNROLL_LOOP(4)
174174
for (int ii = 0; ii < 8; ii = ii + 2) {
175175
bitonic_merge_two_zmm_64bit<vtype, argtype>(
176176
arrzmm[ii], arrzmm[ii + 1], argzmm[ii], argzmm[ii + 1]);
@@ -179,11 +179,11 @@ X86_SIMD_SORT_INLINE void argsort_64_64bit(type_t *arr, int64_t *arg, int32_t N)
179179
bitonic_merge_four_zmm_64bit<vtype, argtype>(arrzmm + 4, argzmm + 4);
180180
bitonic_merge_eight_zmm_64bit<vtype, argtype>(arrzmm, argzmm);
181181

182-
#pragma X86_SIMD_SORT_UNROLL_LOOP(4)
182+
X86_SIMD_SORT_UNROLL_LOOP(4)
183183
for (int ii = 0; ii < 4; ++ii) {
184184
argtype::storeu(arg + 8 * ii, argzmm[ii]);
185185
}
186-
#pragma X86_SIMD_SORT_UNROLL_LOOP(4)
186+
X86_SIMD_SORT_UNROLL_LOOP(4)
187187
for (int ii = 0; ii < 4; ++ii) {
188188
argtype::mask_storeu(arg + 32 + 8 * ii, load_mask[ii], argzmm[ii + 4]);
189189
}
@@ -203,7 +203,7 @@ X86_SIMD_SORT_INLINE void argsort_64_64bit(type_t *arr, int64_t *arg, int32_t N)
203203
// zmm_t arrzmm[16];
204204
// argzmm_t argzmm[16];
205205
//
206-
//#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
206+
//X86_SIMD_SORT_UNROLL_LOOP(8)
207207
// for (int ii = 0; ii < 8; ++ii) {
208208
// argzmm[ii] = argtype::loadu(arg + 8*ii);
209209
// arrzmm[ii] = vtype::template i64gather<sizeof(type_t)>(argzmm[ii], arr);
@@ -213,19 +213,19 @@ X86_SIMD_SORT_INLINE void argsort_64_64bit(type_t *arr, int64_t *arg, int32_t N)
213213
// opmask_t load_mask[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
214214
// if (N != 128) {
215215
// uint64_t combined_mask = (0x1ull << (N - 64)) - 0x1ull;
216-
//#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
216+
//X86_SIMD_SORT_UNROLL_LOOP(8)
217217
// for (int ii = 0; ii < 8; ++ii) {
218218
// load_mask[ii] = (combined_mask >> (ii*8)) & 0xFF;
219219
// }
220220
// }
221-
//#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
221+
//X86_SIMD_SORT_UNROLL_LOOP(8)
222222
// for (int ii = 0; ii < 8; ++ii) {
223223
// argzmm[ii+8] = argtype::maskz_loadu(load_mask[ii], arg + 64 + 8*ii);
224224
// arrzmm[ii+8] = vtype::template mask_i64gather<sizeof(type_t)>(vtype::zmm_max(), load_mask[ii], argzmm[ii+8], arr);
225225
// arrzmm[ii+8] = sort_zmm_64bit<vtype, argtype>(arrzmm[ii+8], argzmm[ii+8]);
226226
// }
227227
//
228-
//#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
228+
//X86_SIMD_SORT_UNROLL_LOOP(8)
229229
// for (int ii = 0; ii < 16; ii = ii + 2) {
230230
// bitonic_merge_two_zmm_64bit<vtype, argtype>(arrzmm[ii], arrzmm[ii + 1], argzmm[ii], argzmm[ii + 1]);
231231
// }
@@ -237,11 +237,11 @@ X86_SIMD_SORT_INLINE void argsort_64_64bit(type_t *arr, int64_t *arg, int32_t N)
237237
// bitonic_merge_eight_zmm_64bit<vtype, argtype>(arrzmm+8, argzmm+8);
238238
// bitonic_merge_sixteen_zmm_64bit<vtype, argtype>(arrzmm, argzmm);
239239
//
240-
//#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
240+
//X86_SIMD_SORT_UNROLL_LOOP(8)
241241
// for (int ii = 0; ii < 8; ++ii) {
242242
// argtype::storeu(arg + 8*ii, argzmm[ii]);
243243
// }
244-
//#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
244+
//X86_SIMD_SORT_UNROLL_LOOP(8)
245245
// for (int ii = 0; ii < 8; ++ii) {
246246
// argtype::mask_storeu(arg + 64 + 8*ii, load_mask[ii], argzmm[ii + 8]);
247247
// }

src/avx512-common-argsort.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
198198
// first and last vtype::numlanes values are partitioned at the end
199199
zmm_t vec_left[num_unroll], vec_right[num_unroll];
200200
argzmm_t argvec_left[num_unroll], argvec_right[num_unroll];
201-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
201+
X86_SIMD_SORT_UNROLL_LOOP(8)
202202
for (int ii = 0; ii < num_unroll; ++ii) {
203203
argvec_left[ii] = argtype::loadu(arg + left + vtype::numlanes * ii);
204204
vec_left[ii] = vtype::template i64gather<sizeof(type_t)>(
@@ -224,7 +224,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
224224
*/
225225
if ((r_store + vtype::numlanes) - right < left - l_store) {
226226
right -= num_unroll * vtype::numlanes;
227-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
227+
X86_SIMD_SORT_UNROLL_LOOP(8)
228228
for (int ii = 0; ii < num_unroll; ++ii) {
229229
arg_vec[ii]
230230
= argtype::loadu(arg + right + ii * vtype::numlanes);
@@ -233,7 +233,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
233233
}
234234
}
235235
else {
236-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
236+
X86_SIMD_SORT_UNROLL_LOOP(8)
237237
for (int ii = 0; ii < num_unroll; ++ii) {
238238
arg_vec[ii] = argtype::loadu(arg + left + ii * vtype::numlanes);
239239
curr_vec[ii] = vtype::template i64gather<sizeof(type_t)>(
@@ -242,7 +242,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
242242
left += num_unroll * vtype::numlanes;
243243
}
244244
// partition the current vector and save it on both sides of the array
245-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
245+
X86_SIMD_SORT_UNROLL_LOOP(8)
246246
for (int ii = 0; ii < num_unroll; ++ii) {
247247
int32_t amount_gt_pivot
248248
= partition_vec<vtype>(arg,
@@ -259,7 +259,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
259259
}
260260

261261
/* partition and save vec_left and vec_right */
262-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
262+
X86_SIMD_SORT_UNROLL_LOOP(8)
263263
for (int ii = 0; ii < num_unroll; ++ii) {
264264
int32_t amount_gt_pivot
265265
= partition_vec<vtype>(arg,
@@ -273,7 +273,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
273273
l_store += (vtype::numlanes - amount_gt_pivot);
274274
r_store -= amount_gt_pivot;
275275
}
276-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
276+
X86_SIMD_SORT_UNROLL_LOOP(8)
277277
for (int ii = 0; ii < num_unroll; ++ii) {
278278
int32_t amount_gt_pivot
279279
= partition_vec<vtype>(arg,

src/avx512-common-qsort.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@
6767
#define ZMM_MAX_INT16 _mm512_set1_epi16(X86_SIMD_SORT_MAX_INT16)
6868
#define SHUFFLE_MASK(a, b, c, d) (a << 6) | (b << 4) | (c << 2) | d
6969

70+
#define PRAGMA(x) _Pragma (#x)
71+
7072
/* Compiler specific macros specific */
7173
#ifdef _MSC_VER
7274
#define X86_SIMD_SORT_INLINE static inline
@@ -93,8 +95,7 @@
9395
#endif
9496

9597
#if __GNUC__ >= 8
96-
#define X86_SIMD_SORT_UNROLL_LOOP(num)\
97-
GCC unroll num
98+
#define X86_SIMD_SORT_UNROLL_LOOP(num) PRAGMA(GCC unroll num)
9899
#else
99100
#define X86_SIMD_SORT_UNROLL_LOOP(num)
100101
#endif
@@ -393,7 +394,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
393394
// We will now have atleast 16 registers worth of data to process:
394395
// left and right vtype::numlanes values are partitioned at the end
395396
zmm_t vec_left[num_unroll], vec_right[num_unroll];
396-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
397+
X86_SIMD_SORT_UNROLL_LOOP(8)
397398
for (int ii = 0; ii < num_unroll; ++ii) {
398399
vec_left[ii] = vtype::loadu(arr + left + vtype::numlanes * ii);
399400
vec_right[ii] = vtype::loadu(
@@ -414,20 +415,20 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
414415
*/
415416
if ((r_store + vtype::numlanes) - right < left - l_store) {
416417
right -= num_unroll * vtype::numlanes;
417-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
418+
X86_SIMD_SORT_UNROLL_LOOP(8)
418419
for (int ii = 0; ii < num_unroll; ++ii) {
419420
curr_vec[ii] = vtype::loadu(arr + right + ii * vtype::numlanes);
420421
}
421422
}
422423
else {
423-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
424+
X86_SIMD_SORT_UNROLL_LOOP(8)
424425
for (int ii = 0; ii < num_unroll; ++ii) {
425426
curr_vec[ii] = vtype::loadu(arr + left + ii * vtype::numlanes);
426427
}
427428
left += num_unroll * vtype::numlanes;
428429
}
429430
// partition the current vector and save it on both sides of the array
430-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
431+
X86_SIMD_SORT_UNROLL_LOOP(8)
431432
for (int ii = 0; ii < num_unroll; ++ii) {
432433
int32_t amount_ge_pivot
433434
= partition_vec<vtype>(arr,
@@ -443,7 +444,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
443444
}
444445

445446
/* partition and save vec_left[8] and vec_right[8] */
446-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
447+
X86_SIMD_SORT_UNROLL_LOOP(8)
447448
for (int ii = 0; ii < num_unroll; ++ii) {
448449
int32_t amount_ge_pivot
449450
= partition_vec<vtype>(arr,
@@ -456,7 +457,7 @@ static inline int64_t partition_avx512_unrolled(type_t *arr,
456457
l_store += (vtype::numlanes - amount_ge_pivot);
457458
r_store -= amount_ge_pivot;
458459
}
459-
#pragma X86_SIMD_SORT_UNROLL_LOOP(8)
460+
X86_SIMD_SORT_UNROLL_LOOP(8)
460461
for (int ii = 0; ii < num_unroll; ++ii) {
461462
int32_t amount_ge_pivot
462463
= partition_vec<vtype>(arr,

tests/test-argselect.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,15 @@ TYPED_TEST_P(avx512argselect, test_random)
2929
= avx512_argselect<TypeParam>(arr.data(), k, arr.size());
3030
auto true_kth = arr[sorted_inx[k]];
3131
EXPECT_EQ(true_kth, arr[inx[k]]) << "Failed at index k = " << k;
32-
if (k >= 1)
32+
if (k >= 1) {
3333
EXPECT_GE(true_kth, std_max_element(arr, inx, 0, k - 1))
3434
<< "failed at k = " << k;
35-
if (k != arrsize - 1)
35+
}
36+
if (k != arrsize - 1) {
3637
EXPECT_LE(true_kth,
3738
std_min_element(arr, inx, k + 1, arrsize - 1))
3839
<< "failed at k = " << k;
40+
}
3941
EXPECT_UNIQUE(inx)
4042
}
4143
}

tests/test-argsort.hpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ TYPED_TEST_P(avx512argsort, test_random)
2323
std::vector<int64_t> inx2
2424
= avx512_argsort<TypeParam>(arr.data(), arr.size());
2525
std::vector<TypeParam> sort1, sort2;
26-
for (size_t jj = 0; jj < size; ++jj) {
26+
for (auto jj = 0; jj < size; ++jj) {
2727
sort1.push_back(arr[inx1[jj]]);
2828
sort2.push_back(arr[inx2[jj]]);
2929
}
@@ -48,14 +48,14 @@ TYPED_TEST_P(avx512argsort, test_constant)
4848
for (auto &size : arrsizes) {
4949
/* constant array */
5050
auto elem = get_uniform_rand_array<TypeParam>(1)[0];
51-
for (int64_t jj = 0; jj < size; ++jj) {
51+
for (auto jj = 0; jj < size; ++jj) {
5252
arr.push_back(elem);
5353
}
5454
std::vector<int64_t> inx1 = std_argsort(arr);
5555
std::vector<int64_t> inx2
5656
= avx512_argsort<TypeParam>(arr.data(), arr.size());
5757
std::vector<TypeParam> sort1, sort2;
58-
for (size_t jj = 0; jj < size; ++jj) {
58+
for (auto jj = 0; jj < size; ++jj) {
5959
sort1.push_back(arr[inx1[jj]]);
6060
sort2.push_back(arr[inx2[jj]]);
6161
}
@@ -84,7 +84,7 @@ TYPED_TEST_P(avx512argsort, test_small_range)
8484
std::vector<int64_t> inx2
8585
= avx512_argsort<TypeParam>(arr.data(), arr.size());
8686
std::vector<TypeParam> sort1, sort2;
87-
for (size_t jj = 0; jj < size; ++jj) {
87+
for (auto jj = 0; jj < size; ++jj) {
8888
sort1.push_back(arr[inx1[jj]]);
8989
sort2.push_back(arr[inx2[jj]]);
9090
}
@@ -113,7 +113,7 @@ TYPED_TEST_P(avx512argsort, test_sorted)
113113
std::vector<int64_t> inx2
114114
= avx512_argsort<TypeParam>(arr.data(), arr.size());
115115
std::vector<TypeParam> sort1, sort2;
116-
for (size_t jj = 0; jj < size; ++jj) {
116+
for (auto jj = 0; jj < size; ++jj) {
117117
sort1.push_back(arr[inx1[jj]]);
118118
sort2.push_back(arr[inx2[jj]]);
119119
}
@@ -143,7 +143,7 @@ TYPED_TEST_P(avx512argsort, test_reverse)
143143
std::vector<int64_t> inx2
144144
= avx512_argsort<TypeParam>(arr.data(), arr.size());
145145
std::vector<TypeParam> sort1, sort2;
146-
for (size_t jj = 0; jj < size; ++jj) {
146+
for (auto jj = 0; jj < size; ++jj) {
147147
sort1.push_back(arr[inx1[jj]]);
148148
sort2.push_back(arr[inx2[jj]]);
149149
}
@@ -177,7 +177,7 @@ TYPED_TEST_P(avx512argsort, test_array_with_nan)
177177
std::vector<int64_t> inx
178178
= avx512_argsort<TypeParam>(arr.data(), arr.size());
179179
std::vector<TypeParam> sort1;
180-
for (size_t jj = 0; jj < size; ++jj) {
180+
for (auto jj = 0; jj < size; ++jj) {
181181
sort1.push_back(arr[inx[jj]]);
182182
}
183183
if ((!std::isnan(sort1[size - 1])) || (!std::isnan(sort1[size - 2]))) {
@@ -211,7 +211,7 @@ TYPED_TEST_P(avx512argsort, test_max_value_at_end_of_array)
211211
}
212212
std::vector<int64_t> inx = avx512_argsort(arr.data(), arr.size());
213213
std::vector<TypeParam> sorted;
214-
for (size_t jj = 0; jj < size; ++jj) {
214+
for (auto jj = 0; jj < size; ++jj) {
215215
sorted.push_back(arr[inx[jj]]);
216216
}
217217
if (!std::is_sorted(sorted.begin(), sorted.end())) {
@@ -250,7 +250,7 @@ TYPED_TEST_P(avx512argsort, test_all_inf_array)
250250
}
251251
std::vector<int64_t> inx = avx512_argsort(arr.data(), arr.size());
252252
std::vector<TypeParam> sorted;
253-
for (size_t jj = 0; jj < size; ++jj) {
253+
for (auto jj = 0; jj < size; ++jj) {
254254
sorted.push_back(arr[inx[jj]]);
255255
}
256256
if (!std::is_sorted(sorted.begin(), sorted.end())) {

tests/test-partial-qsort.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ TYPED_TEST_P(avx512_partial_sort, test_ranges)
2424
/* Sort with std::sort for comparison */
2525
std::sort(sortedarr.begin(), sortedarr.end());
2626

27-
for (size_t ii = 0; ii < nranges; ++ii) {
27+
for (auto ii = 0; ii < nranges; ++ii) {
2828
psortedarr = arr;
2929

3030
/* Pick a random number of elements to sort at the beginning of the array */
@@ -33,7 +33,7 @@ TYPED_TEST_P(avx512_partial_sort, test_ranges)
3333
/* Sort the range and verify all the required elements match the presorted set */
3434
avx512_partial_qsort<TypeParam>(
3535
psortedarr.data(), k, psortedarr.size());
36-
for (size_t jj = 0; jj < k; jj++) {
36+
for (auto jj = 0; jj < k; jj++) {
3737
ASSERT_EQ(sortedarr[jj], psortedarr[jj]);
3838
}
3939

0 commit comments

Comments
 (0)