/* { dg-do compile } */
/* { dg-require-effective-target vect_double } */
/* { dg-additional-options "-w -Wno-psabi" } */

typedef double __attribute__((vector_size(16))) v2df;

v2df f(v2df a, v2df b)
{
  return (v2df){a[0] + b[0], a[1] + b[1]};
}

v2df g(v2df a, v2df b)
{
  return (v2df){a[0] + b[1], a[1] + b[0]};
}

/* Verify we manage to vectorize this with using the original vectors
   and do not end up with any vector CTORs.  */
/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" } } */
/* { dg-final { scan-tree-dump-not "vect_cst" "slp2" } } */