[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

Reply via email to