https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91202
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- We have several PRs for narrowing/widening pass on late gimple, but I'm afraid this exact thing is not something that can be done there, because the semantics on what the x86 instructions do is quite weird and hard to express in a single gimple statement (and hard to explain to the middle-end that x86 has something like that). As I said, we could add a new optab for that kind of thing and pattern match it during expansion, or it can be done the above way and see how well does that work, or some machine specific pass.