https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94866
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- (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.