On 2/11/2011 7:30 AM, Bingfeng Mei wrote:
Thanks. Another question. Is there any plan to vectorize
the loops like the following ones?
for (i=127; i>=0; i--) {
x[i] = y[i] + z[i];
}
When I last tried, the Sun compilers could vectorize such loops
efficiently (for fairly short loops), with appropriate data definitions.
The Sun compilers didn't peel for alignment, to improve performance on
longer loops, as gcc and others do. For a case with no data overlaps
(float * __restrict__ x, ....,y,z, or Fortran), loop reversal can do
the job. gcc has some loop reversal machinery, but I haven't seen it
used for vectorization. In a simple case like this, some might argue
there's no reason to write a backward loop when it could easily be
reversed in source code, and compilers have been seen to make mistakes
in reversal.
--
Tim Prince