/* { dg-do compile } */
/* { dg-options "-O2 -mavx2 -fdump-tree-cddce1" } */

typedef int v8si __attribute__((vector_size(32)));
typedef float v4sf __attribute__((vector_size(16)));

void low (v4sf *dst, v8si *srcp)
{
  v8si src = *srcp;
  *dst = (v4sf) { src[0], src[1], src[2], src[3] };
}

void high (v4sf *dst, v8si *srcp)
{
  v8si src = *srcp;
  *dst = (v4sf) { src[4], src[5], src[6], src[7] };
}

void even (v4sf *dst, v8si *srcp)
{
  v8si src = *srcp;
  *dst = (v4sf) { src[0], src[2], src[4], src[6] };
}

void odd (v4sf *dst, v8si *srcp)
{
  v8si src = *srcp;
  *dst = (v4sf) { src[1], src[3], src[5], src[7] };
}

/* { dg-final { scan-tree-dump-times "BIT_FIELD_REF" 4 "cddce1" } } */
/* Four conversions, on the smaller vector type, to not convert excess
   elements.  */
/* { dg-final { scan-tree-dump-times " = \\\(vector\\\(4\\\) float\\\)" 4 "cddce1" } } */
/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 3 "cddce1" { xfail *-*-* } } } */
/* Ideally highpart extraction would elide the VEC_PERM_EXPR as well.  */
/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 2 "cddce1" } } */
