1/* { dg-do run } */ 2/* { dg-options "-O2 -msse2" } */ 3/* { dg-require-effective-target sse2 } */ 4 5#include "sse2-check.h" 6 7#include <emmintrin.h> 8 9#define msk0 0 10#define msk1 1 11 12static void 13sse2_test (void) 14{ 15 union 16 { 17 __m128d x; 18 double d[2]; 19 } val1; 20 double res[2]; 21 int masks[2]; 22 int i; 23 24 val1.d[0] = 23.; 25 val1.d[1] = 45; 26 27 res[0] = __builtin_ia32_vec_ext_v2df ((__v2df)val1.x, msk0); 28 res[1] = __builtin_ia32_vec_ext_v2df ((__v2df)val1.x, msk1); 29 30 masks[0] = msk0; 31 masks[1] = msk1; 32 33 for (i = 0; i < 2; i++) 34 if (res[i] != val1.d [masks[i]]) 35 abort (); 36} 37