https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98167
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- The transform with doubles on the [1] element would produce unpckhpd %xmm1, %xmm1 unpckhpd %xmm0, %xmm0 mulsd %xmm1, %xmm0 unpcklpd %xmm0, %xmm0 so that's not profitable. Which vector element is cheap (free) to promote to scalar possibly depends on the target (ppc/arm with BE lane order?).