https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88998
Marc Glisse <glisse at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2019-01-23 Ever confirmed|0 |1 --- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> --- Indeed. Constructing {a,b,0,0} is done by constructing {a,b}, {0,0}, and concatenating them. _mm_cvtepi32_pd starts with selecting the initial V2SI of a V4SI. Naturally, the compiler tries to combine them, and finds sse2_cvtpi2pd to convert directly from V2SI to V2DF. Without this simplification, everything would have used SSE.