[EMAIL PROTECTED] sse-1]$ cat d.c #include <emmintrin.h> __m128i foo2 (int x1, int x2, int x3, int x4) { return _mm_set_epi32 (x1, x2, x3, x4); } [EMAIL PROTECTED] sse-1]$ make d.s /export/build/gnu/gcc-stack-internal/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc-stack-internal/build-x86_64-linux/gcc/ -msse4 -march=core2 -m3dnow -msse5 -maes -mpclmul -Wall -O2 -S d.c [EMAIL PROTECTED] sse-1]$ cat d.s .file "d.c" .text .p2align 4,,15 .globl foo2 .type foo2, @function foo2: .LFB518: movd %edx, %xmm0 movd %edi, %xmm2 movd %ecx, %xmm1 punpckldq %xmm0, %xmm1 movd %esi, %xmm0 punpckldq %xmm2, %xmm0 movq %xmm1, %xmm2 punpcklqdq %xmm0, %xmm2 movdqa %xmm2, %xmm0 <<< --- Can we optimize it out? ret
-- Summary: x86 fails to optimize out __v4si -> __m128i move Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl dot tools at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36222