(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr106010-8c.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -mavx512fp16 -mavx512vl -ftree-vectorize -fvect-cost-model=unlimited -mprefer-vector-width=256 -fdump-tree-vect-details" } */
       3  /* { dg-final { scan-tree-dump-times {(?n)add new stmt:.*MEM <vector\(16\) _Float16>} 1 "vect" } } */
       4  /* { dg-require-effective-target avx512fp16 } */
       5  
       6  #include <string.h>
       7  
       8  static void do_test (void);
       9  
      10  #define DO_TEST do_test
      11  #define AVX512FP16
      12  #include "avx512-check.h"
      13  
      14  #define N 10000
      15  
      16  void
      17  __attribute__((noipa))
      18  foo_ph (_Complex _Float16* a)
      19  {
      20    for (int i = 0; i != N; i++)
      21      a[i] = 1.0f16 + 2.0f16i;
      22  }
      23  
      24  static void
      25  do_test (void)
      26  {
      27    _Complex _Float16 ph_src = 1.0f16 + 2.0f16i;
      28    _Complex _Float16* ph_dst = (_Complex _Float16*) malloc (2 * N * sizeof (_Float16));
      29  
      30    __builtin_memset (ph_dst, 0, 2 * N * sizeof (_Float16));
      31  
      32    foo_ph (ph_dst);
      33    for (int i = 0; i != N; i++)
      34      {
      35        if (ph_dst[i] != ph_src)
      36  	__builtin_abort ();
      37      }
      38  }