1/* { dg-do run } */ 2/* { dg-options "-O2 -msse -mno-sse2" } */ 3/* { dg-require-effective-target sse } */ 4 5#include "sse-check.h" 6 7typedef double V __attribute__ ((__vector_size__ (16), __may_alias__)); 8typedef union 9{ 10 V x; 11 double a[2]; 12} u; 13 14#define EMM_FLT8(a) ((double *)&(a)) 15 16void __attribute__ ((noinline)) 17test (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 24static void 25sse_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} 34