Displaying 1 result from an estimated 1 matches for "no_two".
2019 May 02
2
llvm is illegally vectorizing with a recurrence on skylake
...n>>shift;
int b_idx = index[a_idx];
out[b_idx] = *in; // <-- reccurence as index[a_idx] can
be the
index[a_idx]++; // same and incremented within the
vector
} while(++in!=end); // which leads to incorrect results
}
#ifndef NO_TWO
static void __attribute__ ((noinline)) two(
const int *restrict in, const int *const end,
const unsigned shift, int *const restrict index,
int *const restrict out)
{
do out[index[(*in>>shift)]++]=*in; while(++in!=end);
}
#endif
void parent(
int digits, int n, int *restrict work, i...