1 // PR rtl-optimization/45400 2 // { dg-do compile { target i?86-*-* x86_64-*-* } } 3 // { dg-options "-O2 -msse2" } 4 // { dg-options "-O2 -msse2 -fpic" { target fpic } } 5 6 #include <xmmintrin.h> 7 8 static inline unsigned short bar(unsigned short x)9bar (unsigned short x) 10 { 11 return ((x << 8) | (x >> 8)); 12 } 13 14 unsigned int foo(float * x,short * y)15foo (float *x, short *y) 16 { 17 __m128 a = _mm_set_ps1 (32767.5f); 18 __m128 b = _mm_mul_ps (_mm_load_ps (x), a); 19 __m64 c = _mm_cvtps_pi16 (b); 20 __builtin_memcpy (y, &c, sizeof (short) * 4); 21 y[0] = bar (y[0]); 22 23 return 0; 24 } 25