[PATCH] SLP vectorize calls (take 2)

Jakub Jelinek jakub@redhat.com
Tue Nov 8 08:03:00 GMT 2011


On Tue, Nov 08, 2011 at 09:05:16AM +0200, Ira Rosen wrote:
> > +             /* Arguments are ready.  Create the new vector stmt.  */
> > +             FOR_EACH_VEC_ELT (tree, vec_oprnds0, i, vec_oprnd0)
> 
> Was this line left by mistake?

Oops, yes.  It didn't make a difference at runtime, so passed the test, will
fix.  Thanks for catching this up.

> > +             for (i = 0; VEC_iterate (tree, vec_oprnds0, i, vec_oprnd0);
> > +                  i += 2)
> 
> Could you please rearrange the tests (separate basic blocks and loops)
> and make them actually test that bbs/loops were vectorized?

This is more difficult for me, my familiarity with gcc.dg/vect/
infrastructure is very weak.
First of all, whether copysignf, sqrtf and/or lrint are vectorized is
very much target specific, should I guard the dg-final lines with
{ target { i?86-*-* x86_64-*-* } }
resp.
{ target { { i?86-*-* x86_64-*-* } && !lp64 } }
(the latter for lrint - we don't vectorize it on x86_64), or add
vect_call_copysignf, vect_call_sqrtf, vect_call_lrint tests in *.exp?

For the split, some fns are hybrid, so shall I split f1+f2+f3 as slp
and f4 as loop, or is f3 (hybrid) something else?  What test names
should I use?  fast-math-slp-call-*.c/fast-math-vect-call-*.c or something
else?  From what I gather for bb slp the test should start with bb-slp-*
(is that f1/f2 or just f1?), but then there is currently no way to
add -ffast-math.

> Also there is no need in dg-do run.

You mean because it is the default?  Certainly it is useful to test
that gcc doesn't miscompile the tests.

	Jakub



More information about the Gcc-patches mailing list