https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93080
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- comment#4 could be implemented by an associating pattern in match.pd, currently we get a_3 = BIT_INSERT_EXPR <a_1(D), c_2(D), 32 (32 bits)>; a_4 = VEC_PERM_EXPR <a_3, a_1(D), { 0, 1, 6, 3 }>; associating a VEC_PERM_EXPR <a, b, { ... }> when a or b are defined as insertion into b or a respectively so we get a permute of either a or b with itself (and in this case it's a noop permute). Of course with an arbitrary sequence of inserts / extracts / permutes more "generic" association would be necessary and a pure implementation in match.pd looks difficult.