------- Comment #1 from ghazi at gcc dot gnu dot org 2005-12-03 20:06 ------- Here's a reduced testcase, configure 4.0.x with --enable-checking=yes,rtl --target=i686-pc-linux-gnu and compile with:
cc1plus -fpreprocessed mmx2.ii -quiet -dumpbase mmx2.C -mmmx -mtune=pentiumpro -auxbase mmx2 -O2 -version -fmessage-length=0 -o mmx2.s typedef int __m64 __attribute__ ((__vector_size__ (8))); static __inline void _mm_empty (void) { __builtin_ia32_emms (); } static __inline __m64 _mm_set_pi32 (int __i1, int __i0) { return (__m64) __builtin_ia32_vec_init_v2si (__i0, __i1); } static union u { __m64 m; long long l; } u; extern "C" void abort (void); __attribute__((noinline)) void bar (__m64 x) { u.m = x; } int main () { bar (_mm_set_pi32 (0x000000FF,0xFFFF00FF)); _mm_empty (); if (u.l != 0xffffff00ffLL) abort (); return 0; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25203