1/* { dg-do compile } */ 2/* { dg-options "-Os -msse2" } */ 3/* { dg-require-effective-target sse2 } */ 4 5typedef float __m128 __attribute__ ((vector_size (16))); 6 7static __inline __m128 8_mm_mul_ps (__m128 __A, __m128 __B) 9{ 10 return __builtin_ia32_mulps (__A, __B); 11} 12 13static __inline __m128 14_mm_sub_ps (__m128 __A, __m128 __B) 15{ 16 return __builtin_ia32_subps (__A, __B); 17} 18 19__m128 POW_FUNC (__m128 x, __m128 y) 20{ 21 __m128 xmm0 = x, xmm1 = y, xmm2; 22 23 xmm0 = __builtin_ia32_xorps (xmm1, xmm1); 24 25 xmm0 = _mm_mul_ps (xmm0, xmm1); 26 27 xmm0 = _mm_sub_ps (xmm0, xmm1); 28 29 xmm0 = _mm_mul_ps (xmm0, xmm1); 30 31 return xmm0; 32} 33