1 /* { dg-do compile } */
2 /* { dg-options "-O -mavx -fno-tree-forwprop" } */
3 
4 typedef double v2df __attribute__ ((__vector_size__ (16)));
5 typedef double v4df __attribute__ ((__vector_size__ (32)));
6 
f1(v2df x)7 v2df f1 (v2df x)
8 {
9   v2df xx = { x[0], x[1] };
10   return xx;
11 }
12 
f2(v4df x)13 v4df f2 (v4df x)
14 {
15   v4df xx = { x[0], x[1], x[2], x[3] };
16   return xx;
17 }
18 
g(v2df x)19 v2df g (v2df x)
20 {
21   v2df xx = { x[1], x[0] };
22   return xx;
23 }
24 
h(v4df x)25 v2df h (v4df x)
26 {
27   v2df xx = { x[2], x[3] };
28   return xx;
29 }
30 
31 /* { dg-final { scan-assembler-not "unpck" } } */
32 /* { dg-final { scan-assembler-times "\tv?permilpd\[ \t\]" 1 } } */
33 /* { dg-final { scan-assembler-times "\tv?extractf128\[ \t\]" 1 } } */
34