(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr92645-3.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mavx2 -fdump-tree-cddce1" } */
       3  
       4  typedef int v8si __attribute__((vector_size(32)));
       5  typedef float v4sf __attribute__((vector_size(16)));
       6  
       7  void low (v4sf *dst, v8si *srcp)
       8  {
       9    v8si src = *srcp;
      10    *dst = (v4sf) { src[0], src[1], src[2], src[3] };
      11  }
      12  
      13  void high (v4sf *dst, v8si *srcp)
      14  {
      15    v8si src = *srcp;
      16    *dst = (v4sf) { src[4], src[5], src[6], src[7] };
      17  }
      18  
      19  void even (v4sf *dst, v8si *srcp)
      20  {
      21    v8si src = *srcp;
      22    *dst = (v4sf) { src[0], src[2], src[4], src[6] };
      23  }
      24  
      25  void odd (v4sf *dst, v8si *srcp)
      26  {
      27    v8si src = *srcp;
      28    *dst = (v4sf) { src[1], src[3], src[5], src[7] };
      29  }
      30  
      31  /* { dg-final { scan-tree-dump-times "BIT_FIELD_REF" 4 "cddce1" } } */
      32  /* Four conversions, on the smaller vector type, to not convert excess
      33     elements.  */
      34  /* { dg-final { scan-tree-dump-times " = \\\(vector\\\(4\\\) float\\\)" 4 "cddce1" } } */
      35  /* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 3 "cddce1" { xfail *-*-* } } } */
      36  /* Ideally highpart extraction would elide the VEC_PERM_EXPR as well.  */
      37  /* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 2 "cddce1" } } */