Viewing file: pr92645-3.c (1.08 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { 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" } } */ /* Ideally highpart extraction would elide the VEC_PERM_EXPR as well. */ /* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 2 "cddce1" { xfail *-*-* } } } */
|