(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr106010-9d.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O3 -mavx512f -mavx512vl -fvect-cost-model=unlimited -mprefer-vector-width=512" } */
       3  /* { dg-require-effective-target avx512f } */
       4  
       5  #include <string.h>
       6  #include <stdlib.h>
       7  #define AVX512F
       8  #include "avx512-check.h"
       9  #include "pr106010-9a.c"
      10  
      11  static void
      12  test_512 (void)
      13  {
      14    _Complex double* pd_src = (_Complex double*) malloc (N * sizeof (_Complex double));
      15    _Complex double* pd_dst = (_Complex double*) malloc (N * sizeof (_Complex double));
      16    _Complex double* pd_src2 = (_Complex double*) malloc (N * sizeof (_Complex double));
      17    _Complex double* pd_dst2 = (_Complex double*) malloc (N * sizeof (_Complex double));
      18    cdf* cdf_src = (cdf*) malloc (N * sizeof (cdf));
      19    cdf* cdf_dst = (cdf*) malloc (N * sizeof (cdf));
      20    cdf2* cdf2_src = (cdf2*) malloc (N * sizeof (cdf2));
      21    cdf2* cdf2_dst = (cdf2*) malloc (N * sizeof (cdf2));
      22    cdf3* cdf3_src = (cdf3*) malloc (N * sizeof (cdf3));
      23    cdf3* cdf3_dst = (cdf3*) malloc (N * sizeof (cdf3));
      24    cdf4* cdf4_src = (cdf4*) malloc (N * sizeof (cdf4));
      25    cdf4* cdf4_dst = (cdf4*) malloc (N * sizeof (cdf4));
      26    
      27    char* p_init = (char*) malloc (N * sizeof (cdf3));
      28  
      29    __builtin_memset (cdf_dst, 0, N * sizeof (cdf));
      30    __builtin_memset (cdf2_dst, 0, N * sizeof (cdf2));
      31    __builtin_memset (cdf3_dst, 0, N * sizeof (cdf3));
      32    __builtin_memset (cdf4_dst, 0, N * sizeof (cdf4));
      33    __builtin_memset (pd_dst, 0, N * sizeof (_Complex double));
      34    __builtin_memset (pd_dst2, 0, N * sizeof (_Complex double));
      35  
      36    for (int i = 0; i != N * sizeof (cdf3); i++)
      37      p_init[i] = i;
      38  
      39    memcpy (cdf_src, p_init, N * sizeof (cdf));
      40    memcpy (cdf2_src, p_init, N * sizeof (cdf2));
      41    memcpy (cdf3_src, p_init, N * sizeof (cdf3));
      42    memcpy (cdf4_src, p_init, N * sizeof (cdf4));
      43    memcpy (pd_src, p_init, N * sizeof (_Complex double));
      44    for (int i = 0; i != 2 * N * sizeof (double); i++)
      45      p_init[i] = i % 16;
      46    memcpy (pd_src2, p_init, N * sizeof (_Complex double));
      47  
      48    foo (cdf_dst, cdf_src);
      49    foo1 (cdf2_dst, cdf2_src);
      50    foo2 (cdf3_dst, cdf3_src);
      51    foo3 (cdf4_dst, cdf4_src);
      52    foo4 (pd_dst, pd_src);
      53    foo5 (pd_dst2, pd_src2);
      54    for (int i = 0; i != N; i++)
      55      {
      56        p_init[(N - i - 1) * 16] = i * 16;
      57        p_init[(N - i - 1) * 16 + 1] = i * 16 + 1;
      58        p_init[(N - i - 1) * 16 + 2] = i * 16 + 2;
      59        p_init[(N - i - 1) * 16 + 3] = i * 16 + 3;
      60        p_init[(N - i - 1) * 16 + 4] = i * 16 + 4;
      61        p_init[(N - i - 1) * 16 + 5] = i * 16 + 5;
      62        p_init[(N - i - 1) * 16 + 6] = i * 16 + 6;
      63        p_init[(N - i - 1) * 16 + 7] = i * 16 + 7;
      64        p_init[(N - i - 1) * 16 + 8] = i * 16 + 8;
      65        p_init[(N - i - 1) * 16 + 9] = i * 16 + 9;
      66        p_init[(N - i - 1) * 16 + 10] = i * 16 + 10;
      67        p_init[(N - i - 1) * 16 + 11] = i * 16 + 11;
      68        p_init[(N - i - 1) * 16 + 12] = i * 16 + 12;
      69        p_init[(N - i - 1) * 16 + 13] = i * 16 + 13;
      70        p_init[(N - i - 1) * 16 + 14] = i * 16 + 14;
      71        p_init[(N - i - 1) * 16 + 15] = i * 16 + 15;
      72      }
      73    memcpy (pd_src, p_init, N * 16);
      74   
      75    if (__builtin_memcmp (pd_dst, pd_src, N * 2 * sizeof (double)) != 0)
      76      __builtin_abort ();
      77  
      78    if (__builtin_memcmp (pd_dst2, pd_src2, N * 2 * sizeof (double)) != 0)
      79      __builtin_abort ();
      80  
      81    if (__builtin_memcmp (cdf_dst, cdf_src, N * sizeof (cdf)) != 0)
      82      __builtin_abort ();
      83  
      84    if (__builtin_memcmp (cdf2_dst, cdf2_src, N * sizeof (cdf2)) != 0)
      85      __builtin_abort ();
      86  
      87    if (__builtin_memcmp (cdf3_dst, cdf3_src, N * sizeof (cdf3)) != 0)
      88      __builtin_abort ();
      89  
      90    if (__builtin_memcmp (cdf4_dst, cdf4_src, N * sizeof (cdf4)) != 0)
      91      __builtin_abort ();
      92  }