This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
How to avoid auto-vectorization for this loop (rolls at most 3 times)
- From: "Fang, Changpeng" <Changpeng dot Fang at amd dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Wed, 8 Sep 2010 15:50:34 -0500
- Subject: How to avoid auto-vectorization for this loop (rolls at most 3 times)
It seems the auto-vectorizer could not recognize that this loop will roll at most 3 times.
And it will generate quite messy code.
int a[1024], b[1024];
void foo (int n)
{
int i;
for (i = (n/4)*4; i< n; i++)
a[i] = a[i] + b[i];
}
How can we correctly estimate the number of iterations for this case and use this info for the vectorizer?
Thanks,
Changpeng