https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95125
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rsandifo at gcc dot gnu.org
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Uroš Bizjak from comment #6)
> (In reply to Hongtao.liu from comment #5)
> > (In reply to Uroš Bizjak from comment #3)
> > > It turns out that a bunch of patterns have to be renamed (and testcases
> > > added).
> > >
> > > Easyhack, waiting for someone to show some love to conversion patterns in
> > > sse.md.
> >
> > expander for floatv4siv4df2, fix_truncv4dfv4si2 already exists.
> >
> > if change **float_double fix_double** to
> > ---
> > void
> > float_double (void)
> > {
> > d[0] = i[0];
> > d[1] = i[1];
> > d[2] = i[2];
> > d[3] = i[3];
> > }
>
> Hm, the above is vectorized, but the equivalent:
>
> void
> float_double (void)
> {
> for (int n = 0; n < 4; n++)
> d[n] = i[n];
> }
>
> is not?
Yes, we're committing to a too high VF here, likely because we pick the
"wrong" vector mode too early. We could eventually fix this up in
the early vectype analysis.