1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -msse2" } */ 3 /* { dg-require-effective-target sse2 } */ 4 /* { dg-final { scan-assembler "movss" } } */ 5 /* { dg-final { scan-assembler "movsd" } } */ 6 /* { dg-final { scan-assembler-not "unpcklps" } } */ 7 /* { dg-final { scan-assembler-not "shufps" } } */ 8 /* { dg-final { scan-assembler-not "shufpd" } } */ 9 10 typedef float v4sf __attribute__ ((vector_size (16))); 11 typedef double v2df __attribute__ ((vector_size (16))); 12 movss(v4sf a,v4sf b)13v4sf movss(v4sf a, v4sf b) 14 { 15 return (v4sf){b[0],a[1],a[2],a[3]}; 16 } 17 movsd(v2df a,v2df b)18v2df movsd(v2df a, v2df b) 19 { 20 return (v2df){b[0],a[1]}; 21 } 22