OSDN Git Service

* gcc/config/i386/cpuid.h: New file.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / other / i386-1.C
1 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
2 /* { dg-options "-msse2" } */
3
4 #include <xmmintrin.h>
5
6 #include "cpuid.h"
7
8 static void
9 sse2_test (void)
10 {
11   float a = 1.0f;
12   float b = 2.0f;
13   float c = 3.0f;
14   float r;
15
16   __m128 v = _mm_set_ps(a, b, c, 0);
17   
18   v = (__m128)_mm_srli_si128((__m128i)v, 4);
19   _mm_store_ss(&r, v);
20   if (r != 3.0f)
21     abort ();
22 }
23
24 int
25 main ()
26 {
27   unsigned int eax, ebx, ecx, edx;
28  
29   if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
30     return 0;
31
32   /* Run SSE2 test only if host has SSE2 support.  */
33   if (edx & bit_SSE2)
34     sse2_test ();
35
36   return 0;
37 }