1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -msse4.2" } */ 3 4 typedef int v4si __attribute__((vector_size(16))); 5 typedef float v4sf __attribute__((vector_size(16))); 6 foo(v4si x)7v4si foo (v4si x) 8 { 9 return (v4si){ x[0], 1, x[2], 3 }; 10 } 11 12 /* { dg-final { scan-assembler "pblendw" } } */ 13 bar(v4sf x)14v4si bar (v4sf x) 15 { 16 return (v4si){ 1, x[1], x[2], 3 }; 17 } 18 19 /* { dg-final { scan-assembler "cvttps2dq" } } */ 20 /* { dg-final { scan-assembler "pblendw" } } */ 21 baz(v4si x)22v4si baz (v4si x) 23 { 24 return (v4si) { x[1], x[2], x[3], 0 }; 25 } 26 27 /* { dg-final { scan-assembler "psrldq" } } */ 28