OLD | NEW |
1 /* { dg-do run } */ | 1 /* { dg-do run } */ |
2 /* { dg-options "-O2" } */ | 2 /* { dg-options "-O2" } */ |
3 /* { dg-options "-O2 -msse2 -mtune=core2 -mfpmath=387" { target { i?86-*-* x86_6
4-*-* } } } */ | 3 /* { dg-options "-O2 -msse2 -mtune=core2 -mfpmath=387" { target { i?86-*-* x86_6
4-*-* } } } */ |
4 | 4 /* { dg-require-effective-target sse2 { target { i?86-*-* x86_64-*-* } } } */ |
5 #ifdef __i386__ | 5 /* { dg-require-effective-target sse2_runtime { target { i?86-*-* x86_64-*-* } }
} */ |
6 #include "cpuid.h" | |
7 #endif | |
8 | 6 |
9 extern void abort (void); | 7 extern void abort (void); |
10 | 8 |
11 int main(void) | 9 int main(void) |
12 { | 10 { |
13 double arr[1000]; | 11 double arr[1000]; |
14 double a, b; | 12 double a, b; |
15 | 13 |
16 int i; | 14 int i; |
17 | 15 |
18 #ifdef __i386__ | |
19 unsigned int eax, ebx, ecx, edx; | |
20 | |
21 if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) | |
22 return 0; | |
23 | |
24 /* Run SSE2 test only if host has SSE2 support. */ | |
25 if (!(edx & bit_SSE2)) | |
26 return 0; | |
27 #endif | |
28 | |
29 for (i = 0; i < 1000; i++) | 16 for (i = 0; i < 1000; i++) |
30 arr[i] = 4294967296.0 + (double)i; | 17 arr[i] = 4294967296.0 + (double)i; |
31 | 18 |
32 a = arr[0]; | 19 a = arr[0]; |
33 b = (unsigned int)((unsigned long long int)a % 4294967296ULL); | 20 b = (unsigned int)((unsigned long long int)a % 4294967296ULL); |
34 | 21 |
35 if (b >= 4294967296.0) | 22 if (b >= 4294967296.0) |
36 abort (); | 23 abort (); |
37 | 24 |
38 return 0; | 25 return 0; |
39 } | 26 } |
OLD | NEW |