1/* { dg-do compile } */
2/* { dg-options "-O2 -msse2" } */
3/* { dg-require-effective-target sse2 } */
4
5typedef int __v4si __attribute__ ((__vector_size__ (16)));
6typedef float __v4sf __attribute__ ((__vector_size__ (16)));
7
8int fooSI_1(__v4si *val)
9{
10  return __builtin_ia32_vec_ext_v4si(*val, 1);
11}
12/* { dg-final { scan-assembler-not "pshufd" } } */
13
14int fooSI_2(__v4si *val)
15{
16  return __builtin_ia32_vec_ext_v4si(*val, 2);
17}
18/* { dg-final { scan-assembler-not "punpckhdq" } } */
19
20float fooSF_2(__v4sf *val)
21{
22  return __builtin_ia32_vec_ext_v4sf(*val, 2);
23}
24/* { dg-final { scan-assembler-not "unpckhps" } } */
25
26float fooSF_3(__v4sf *val)
27{
28  return __builtin_ia32_vec_ext_v4sf(*val, 3);
29}
30/* { dg-final { scan-assembler-not "shufps" } } */
31