minor unroll

This commit is contained in:
Richard Thier 2021-12-18 01:48:42 +01:00
parent e7b677e4db
commit 298edba5d2

View File

@ -108,9 +108,10 @@ namespace MagyarSort {
template<typename COUNTER_TYP>
static inline void countOccurences(uint32_t arr[], COUNTER_TYP size, COUNTER_TYP *radicsOut) noexcept {
COUNTER_TYP i = 0;
// #pragma GCC unroll 4
//#pragma GCC unroll 4
for(; i < size - 64; i += 64) {
// Prefetch for read level-1 cache
//__builtin_prefetch(&arr[i + (1 * 16)], 0/*r*/, 2/*L2 or L3 cache likely*/);
__builtin_prefetch(&arr[i + (1 * 16)]);
// Creates no object, struct is empty
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i, radicsOut);
@ -183,6 +184,7 @@ namespace MagyarSort {
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i + 63, radicsOut);
}
#pragma GCC unroll 4
for(; i < size; ++i) {
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i, radicsOut);
}