minor unroll
This commit is contained in:
parent
e7b677e4db
commit
298edba5d2
@ -108,9 +108,10 @@ namespace MagyarSort {
|
|||||||
template<typename COUNTER_TYP>
|
template<typename COUNTER_TYP>
|
||||||
static inline void countOccurences(uint32_t arr[], COUNTER_TYP size, COUNTER_TYP *radicsOut) noexcept {
|
static inline void countOccurences(uint32_t arr[], COUNTER_TYP size, COUNTER_TYP *radicsOut) noexcept {
|
||||||
COUNTER_TYP i = 0;
|
COUNTER_TYP i = 0;
|
||||||
// #pragma GCC unroll 4
|
//#pragma GCC unroll 4
|
||||||
for(; i < size - 64; i += 64) {
|
for(; i < size - 64; i += 64) {
|
||||||
// Prefetch for read level-1 cache
|
// 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)]);
|
__builtin_prefetch(&arr[i + (1 * 16)]);
|
||||||
// Creates no object, struct is empty
|
// Creates no object, struct is empty
|
||||||
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i, radicsOut);
|
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i, radicsOut);
|
||||||
@ -183,6 +184,7 @@ namespace MagyarSort {
|
|||||||
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i + 63, radicsOut);
|
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i + 63, radicsOut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma GCC unroll 4
|
||||||
for(; i < size; ++i) {
|
for(; i < size; ++i) {
|
||||||
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i, radicsOut);
|
OccurenceMagic<DIGITS - 1, COUNTER_TYP>(arr, i, radicsOut);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user