Hi Jacob,
this looks really cool. I have a liitle question, since I do not
understand vectorizer as good.

Say, we have a snippet:
int *p;
int idx[N];
int arr[M];
for (...)
{
  p[i%4] += arr[idx[I]];
}
As far as I understand, we cannot do gather we, since p may point to
somewere in arr,
and, idx may took it twice.
E.g. lets take
  idx = {0, 1, 1, 2, 3, 4, 5, 6}
  arr = {0, 1, 0, 0, 0, 0, 0, 0}
  p = arr;
Correct case will have, we'll have something like arr = {0, 2, 2, 0,...}
If we'll have gather, arr may look like                    arr = {0,
2, 1, 0, ...}

So my question, does your patch catch such a cases?

Thanks, K

Reply via email to