https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87555

--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Hongtao.liu from comment #15)
> (In reply to Richard Biener from comment #11)
> > (In reply to Richard Biener from comment #9)
> > > I don't think there's a documented canonical form but if I were to write 
> > > one
> > > I'd say the smaller (as in integer) merge mask should win?
> > 
> > Alternatively the one with bit 0 set (first lane selected from first
> > operand).
> 
> Also would (vec_merge (D, C 0x55)) always win (vec_select (vec_concat D C)
> (0,9,2,11,4,13,6,15))?
> 
> If not should we define canonical rtx to alway transform the later to
> vec_merge  if possible?

It's a historical wart that we have two representation for the same,
generally backends do not expect either to turn into the other and you'd
need to touch quite some patterns to avoid regressing if you do.

IMHO vec_merge should go away.

Reply via email to