https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124659

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
typedef long long __m128i __attribute__ ((__vector_size__ (16),
__may_alias__));

so you are violating strict aliasing rules with -O2.

I assume the result is counter-intuitive at -O0 because little-endian?
_mm_set_epi32 (0, 1, 2, 3) gives you

(gdb) p $xmm0.v4_int32
$7 = {3, 2, 1, 0}

extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__,
__artificial__))
_mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
{  
  return __extension__ (__m128i)(__v4si){ __q0, __q1, __q2, __q3 };
}

Reply via email to