https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94864
--- Comment #3 from Segher Boessenkool <segher at gcc dot gnu.org> --- vec_duplicate of vec_select is just a vec_select. Any vec_merge is a vec_select as well, as you say. Canonicalisation should make vec_select always. We probably should have canonicalisation rules for this, so that we do not get all those rtxes in the instruction stream at all.