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)7v2df f1 (v2df x) 8 { 9 v2df xx = { x[0], x[1] }; 10 return xx; 11 } 12 f2(v4df x)13v4df f2 (v4df x) 14 { 15 v4df xx = { x[0], x[1], x[2], x[3] }; 16 return xx; 17 } 18 g(v2df x)19v2df g (v2df x) 20 { 21 v2df xx = { x[1], x[0] }; 22 return xx; 23 } 24 h(v4df x)25v2df 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