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)7 v4si 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)14 v4si 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)22 v4si baz (v4si x)
23 {
24   return (v4si) { x[1], x[2], x[3], 0 };
25 }
26 
27 /* { dg-final { scan-assembler "psrldq" } } */
28