https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86530
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- With my patch for V4QI, we still don't get the best code: vect_perm_even_271 = VEC_PERM_EXPR <vect__1.7_264, vect__1.8_266, { 0, 2, 4, 6 }>; vect_perm_even_273 = VEC_PERM_EXPR <vect__1.9_268, vect__1.10_270, { 0, 2, 4, 6 }>; vect_perm_even_275 = VEC_PERM_EXPR <vect_perm_even_271, vect_perm_even_273, { 0, 2, 4, 6 }>; _275={_264[0], _264[2], _268[0], _268[2]} or VEC_PERM<_264, _268, {0, 2, 4, 6}> but for some reason we don't reduce it to that perm And there is still a lot of extra PERMS than there should be.