blob: d34ed3aa8e55aaed19d6f58c58646505a3644579 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -fdump-tree-cddce1" } */
typedef int v4si __attribute__((vector_size(16)));
typedef int v2si __attribute__((vector_size(8)));
void low (v2si *dst, v4si *srcp)
{
v4si src = *srcp;
*dst = (v2si) { src[0], src[1] };
}
void high (v2si *dst, v4si *srcp)
{
v4si src = *srcp;
*dst = (v2si) { src[2], src[3] };
}
void even (v2si *dst, v4si *srcp)
{
v4si src = *srcp;
*dst = (v2si) { src[0], src[2] };
}
void odd (v2si *dst, v4si *srcp)
{
v4si src = *srcp;
*dst = (v2si) { src[1], src[3] };
}
/* { dg-final { scan-tree-dump-times "BIT_FIELD_REF" 4 "cddce1" } } */
/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 3 "cddce1" } } */
/* Ideally highpart extraction would elide the permutation as well. */
/* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 2 "cddce1" { xfail *-*-* } } } */