Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / gcc / testsuite / gcc.target / i386 / pr46716.c
1 /* { dg-do run } */
2 /* { dg-options "-O2 -msse -mno-sse2" } */
3 /* { dg-require-effective-target sse } */
4
5 #include "sse-check.h"
6
7 typedef double V __attribute__ ((__vector_size__ (16), __may_alias__));
8 typedef union
9 {
10   V x;
11   double a[2];
12 } u;
13
14 #define EMM_FLT8(a) ((double *)&(a))
15
16 void __attribute__ ((noinline))
17 test (V s1, V s2)
18 {
19   if (EMM_FLT8(s1)[0] != EMM_FLT8(s2)[0]
20       || EMM_FLT8(s1)[1] != EMM_FLT8(s2)[1])
21     abort ();
22 }
23
24 static void
25 sse_test (void)
26 {
27   u s1;
28
29   s1.a[0] = 1.0;
30   s1.a[1] = 2.0;
31
32   test (s1.x, s1.x);
33 }