https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94866
--- Comment #8 from Hongtao.liu <crazylht at gmail dot com> --- (In reply to Uroš Bizjak from comment #7) > (In reply to Hongtao.liu from comment #6) > > > So, the compiler still expects vec_concat/vec_select patterns to be > > > present. > > > > v2df foo_v2df (v2df x) > > { > > return __builtin_shuffle (x, (v2df) { 0, 0 }, (v2di) { 0, 2 }); > > } > > > > The testcase is not a typical vec_merge case, for vec_merge, the shuffle > > index should be {0, 3}. Here it happened to be a vec_merge because the > > second vector is all zero. And yes for this case, we still need to > > vec_concat:vec_select pattern. > > I guess the original patch is the way to go then. Yes.