OSDN Git Service

PR c++/9278
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / other / i386-1.C
1 /* { dg-do run { target i?86-*-* } } */
2 /* { dg-options "-march=pentium4" } */
3
4 #include <xmmintrin.h>
5 #include <stdio.h>
6 #include "../../gcc.dg/i386-cpuid.h"
7
8 int main(int argc, char** argv) {
9   float a = 1.0f;
10   float b = 2.0f;
11   float c = 3.0f;
12   float r;
13
14   unsigned long cpu_facilities;
15
16   cpu_facilities = i386_cpuid ();
17
18   if ((cpu_facilities & (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV))
19       != (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV))
20     /* If host has no vector support, pass.  */
21     return 0;
22
23   __m128 v = _mm_set_ps(a, b, c, 0);
24   
25   v = (__m128)_mm_srli_si128((__m128i)v, 4);
26   _mm_store_ss(&r, v);
27   if (r != 3.0f)
28     abort ();
29   exit (0);
30 }