/* { dg-do run { target i?86-*-* x86_64-*-* } } */ /* { dg-options "-march=pentium4" } */ /* { dg-require-effective-target ilp32 } */ #include #include #include "../../gcc.dg/i386-cpuid.h" int main(int argc, char** argv) { float a = 1.0f; float b = 2.0f; float c = 3.0f; float r; unsigned long cpu_facilities; cpu_facilities = i386_cpuid (); if ((cpu_facilities & (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV)) != (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV)) /* If host has no vector support, pass. */ return 0; __m128 v = _mm_set_ps(a, b, c, 0); v = (__m128)_mm_srli_si128((__m128i)v, 4); _mm_store_ss(&r, v); if (r != 3.0f) abort (); exit (0); }