http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50374

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-09-19 
15:59:06 UTC ---
Created attachment 25320
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25320
gcc47-pr50374-wip.patch

Here is the ported patch with rejects hopefully resolved and a few bugfixes for
the 4.6 -> 4.7 changes.
I've omitted the vcondc/vcondcu stuff because the trunk handles mixed
float/integral vcond/u already, the rs6000 stuff (because IMHO the first step
for rs6000 should be to add support for the mixed float/integral vcond/u for
rs6000 and I'm not familiar with rs6000 enough), GTF/EQF etc. dropped (I think
that it is not needed) and testcases separated out of it for now.
I had to make changes beyond rejects as COND_EXPR assignments are now
represented differently and the pattern stmts are no longer emitted into the
basic blocks.  I see no reason why this should be limited to floating point
comparisons and integral indexes, IMHO e.g. finding location of smallest
integer is common too.

That said, I'm now stuck with it, on the fast-math-no-pre-minmax-loc-1.c (on
x86_64 -O2 -ftree-vectorize -fno-tree-pre) testcase the compound pattern
recognition seems to work, but still the vectorizer gives up:
17: Unsupported pattern.
17: not vectorized: unsupported use in stmt.
17: unexpected pattern.

Ira, do you think you could have a quick look at this?

Reply via email to