[Bug tree-optimization/63271] Should commute arithmetic with vector load
glisse at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Sep 15 20:04:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63271
--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> ---
The closest we currently handle (with -O3) is:
typedef int vec __attribute__((vector_size(4*sizeof(int))));
void f(vec*r, int i){
(*r)[0]=3*i;
(*r)[1]=4*i;
(*r)[2]=7*i;
(*r)[3]=9*i;
}
(none of the constants should be 0, 1 or -1, those hide the multiplication and
we don't see through that)
I did have in mind recognizing, with a forwprop-like pattern matching, a
constructor { sqrt(x1), ..., sqrt(xn) } since we don't have any generic syntax
to call sqrt on a vector. Binary operations are a bit more work. I don't know
if it would be possible / a good idea to tell SLP that a constructor is
essentially the same as several data refs, to avoid duplicating too much code.
More information about the Gcc-bugs
mailing list