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.