(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr102583.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-mavx512f -O2" } */
       3  /* { dg-final { scan-assembler-times {(?n)vcvtdq2ps[ \t]+32\(%.*%ymm} 1 } } */
       4  /* { dg-final { scan-assembler-times {(?n)vcvtdq2ps[ \t]+16\(%.*%xmm} 1 } } */
       5  /* { dg-final { scan-assembler-times {(?n)vmovq[ \t]+16\(%.*%xmm} 1 { target { ! ia32 } } } } */
       6  /* { dg-final { scan-assembler-not {(?n)vpermd[ \t]+.*%zmm} } } */
       7  
       8  typedef int v16si __attribute__((vector_size(64)));
       9  typedef float v8sf __attribute__((vector_size(32)));
      10  typedef float v4sf __attribute__((vector_size(16)));
      11  typedef float v2sf __attribute__((vector_size(8)));
      12  
      13  v8sf part (v16si *srcp)
      14  {
      15    v16si src = *srcp;
      16    return (v8sf) { (float)src[8], (float) src[9], (float)src[10], (float)src[11],
      17        (float)src[12], (float)src[13], (float)src[14], (float)src[15] };
      18  }
      19  
      20  v4sf part1 (v16si *srcp)
      21  {
      22    v16si src = *srcp;
      23    return (v4sf) { (float)src[4], (float)src[5], (float)src[6], (float)src[7] };
      24  }
      25  
      26  v2sf part2 (v16si *srcp)
      27  {
      28    v16si src = *srcp;
      29    return (v2sf) { (float)src[4], (float)src[5] };
      30  }