/* { dg-do run } */ /* { dg-options "-O2 -msse -mno-sse2" } */ /* { dg-require-effective-target sse } */ #include "sse-check.h" typedef double V __attribute__ ((__vector_size__ (16), __may_alias__)); typedef union { V x; double a[2]; } u; #define EMM_FLT8(a) ((double *)&(a)) void __attribute__ ((noinline)) test (V s1, V s2) { if (EMM_FLT8(s1)[0] != EMM_FLT8(s2)[0] || EMM_FLT8(s1)[1] != EMM_FLT8(s2)[1]) abort (); } static void sse_test (void) { u s1; s1.a[0] = 1.0; s1.a[1] = 2.0; test (s1.x, s1.x); }