http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57601
--- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> --- With this code: #include <mmintrin.h> __m64 f(__m64 x, __m64 y){return _mm_sub_pi32(x,y);} I get (-m64): movdq2q %xmm0, %mm0 movdq2q %xmm1, %mm1 psubd %mm1, %mm0 movq2dq %mm0, %xmm0 and (-m32): psubd %mm1, %mm0