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 12 static void sse2_test(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