OSDN Git Service

PR middle-end/29274
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / i386 / sse2-cvtsd2ss-1.c
1 /* { dg-do run } */
2 /* { dg-options "-O2 -msse2" } */
3
4 #ifndef CHECK_H
5 #define CHECK_H "sse2-check.h"
6 #endif
7
8 #ifndef TEST
9 #define TEST sse2_test
10 #endif
11
12 #include CHECK_H
13
14 #include <emmintrin.h>
15
16
17 static __m128 
18 __attribute__((noinline, unused))
19 test (__m128 p1, __m128d p2)
20 {
21   return _mm_cvtsd_ss (p1, p2); 
22 }
23
24 static void
25 TEST (void)
26 {
27   union128d s1;
28   union128 u, s2;
29   double source1[2] = {123.345, 67.3321};
30   float  e[4] = {5633.098, 93.21, 3.34, 4555.2};
31
32   s1.x = _mm_loadu_pd (source1);
33   s2.x = _mm_loadu_ps (e);
34
35   u.x = test(s2.x, s1.x);
36
37   e[0] = (float)source1[0];
38
39   if (check_union128(u, e))
40     abort ();
41 }