/* PR target/13685 */ /* { dg-do run } */ /* { dg-options "-Os -msse" } */ #include #include #include #include "../../gcc.dg/i386-cpuid.h" void foo (__m128 *, __m64 *, int); __m128 xmm0 = { 0 }; __m64 mm0 = { 0 }; int main () { unsigned long cpu_facilities = i386_cpuid (); if ((cpu_facilities & (bit_MMX | bit_SSE | bit_CMOV)) != (bit_MMX | bit_SSE | bit_CMOV)) /* If host has no SSE support, pass. */ return 0; foo (&xmm0, &mm0, 4); return 0; } void foo (__m128 *dst, __m64 *src, int n) { __m128 xmm0 = { 0 }; while (n > 64) { puts (""); xmm0 = _mm_cvtpi32_ps (xmm0, *src); *dst = xmm0; n--; } }