http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55894



--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> 2013-01-07 20:17:15 
UTC ---

Two more versions:



__m128d f(){

  union { long long t[2]; __m128d d; } a

    = {{ 0x7fffffffffffffff, 0x7fffffffffffffff }};

  return a.d;

}



_Z1fv:

.LFB537:

    .cfi_startproc

    movabsq    $9223372036854775807, %rax

    movq    %rax, -24(%rsp)

    movq    %rax, -16(%rsp)

    movapd    -24(%rsp), %xmm0

    ret

    .cfi_endproc



__m128d g(){

  union { long long l; double d; } b;

  b.l = 0x7fffffffffffffff;

  return _mm_set1_pd(b.d);

}



_Z1gv:

.LFB538:

    .cfi_startproc

    movapd    .LC0(%rip), %xmm0

    ret

    .cfi_endproc



I'll hope that other compilers also optimize this last version and use that

one.

Reply via email to