1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -msse2 -mfpmath=sse" } */ 3 /* { dg-final { scan-assembler-times "addsd" 1 } } */ 4 /* { dg-final { scan-assembler-not "movapd" } } */ 5 /* { dg-final { scan-assembler-not "movsd" } } */ 6 7 typedef double __v2df __attribute__ ((__vector_size__ (16))); 8 typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); 9 10 __m128d _mm_add_sd(__m128d x,__m128d y)11_mm_add_sd (__m128d x, __m128d y) 12 { 13 __m128d z = __extension__ (__m128d)(__v2df) 14 { (((__v2df) x)[0] + ((__v2df) y)[0]), ((__v2df) x)[1] }; 15 return z; 16 } 17