minor unroll

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

View File

@ -111,6 +111,7 @@ namespace MagyarSort {
//#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);
} }