1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mavx" } */
       3  /* { dg-final { scan-assembler-times "vpermilps" 1 } } */
       4  /* { dg-final { scan-assembler-times "vmovss" 1 { target { ! ia32 } } } } */
       5  /* { dg-final { scan-assembler-times "vpinsrd" 1 { target ia32 } } } */
       6  /* { dg-final { scan-assembler-not "vmovss" { target ia32 } } } */
       7  /* { dg-final { scan-assembler-not "vshufps" } } */
       8  /* { dg-final { scan-assembler-not "vmovaps" } } */
       9  /* { dg-final { scan-assembler-not "vmovlhps" } } */
      10  /* { dg-final { scan-assembler-not "vunpcklps" } } */
      11  
      12  typedef float __v4sf __attribute__ ((__vector_size__ (16)));
      13  
      14  __attribute__((noinline, noclone))
      15  __v4sf
      16  foo (__v4sf x, float f)
      17  {
      18    __v4sf y = { x[0], x[2], x[3], x[1] };
      19    y[0] = f;
      20    return y;
      21  }