(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
gomp/
pr95315-2.c
       1  /* PR middle-end/95315 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -fopenmp --param ggc-min-heapsize=0" } */
       4  
       5  typedef float __v4sf __attribute__((vector_size (16)));
       6  typedef int __v4si __attribute__((vector_size (16)));
       7  typedef float __v8sf __attribute__((vector_size (32)));
       8  typedef int __v8si __attribute__((vector_size (32)));
       9  __v4si f1 (__v4sf, __v4sf, float *);
      10  __v8si f2 (__v8sf, __v8sf, float *);
      11  __v4si f3 (__v4si, int, __v4si);
      12  
      13  #pragma omp declare variant (f1) match (construct={parallel,for,simd(simdlen(4),notinbranch,uniform(z),aligned(z:4 * sizeof (*z)))})
      14  #pragma omp declare variant (f2) match (construct={for,simd(uniform(z),simdlen(8),notinbranch)})
      15  int f4 (float x, float y, float *z);
      16  
      17  #pragma omp declare variant (f3) match (construct={simd(simdlen(4),inbranch,linear(y:1))})
      18  int f5 (int x, int y);
      19  
      20  static inline __attribute__((always_inline)) int
      21  ret_false (void)
      22  {
      23    return 0;
      24  }
      25  
      26  void
      27  test (int *x, float *y, float *z, float *w)
      28  {
      29    #pragma omp parallel
      30    #pragma omp for simd aligned (w:4 * sizeof (float))
      31    for (int i = 0; i < 1024; i++)
      32      if (ret_false ())
      33        x[i] = f4 (y[i], z[i], w);
      34    #pragma omp parallel for simd aligned (w:4 * sizeof (float)) simdlen(4)
      35    for (int i = 1024; i < 2048; i++)
      36      if (ret_false ())
      37        x[i] = f4 (y[i], z[i], w);
      38    #pragma omp simd aligned (w:4 * sizeof (float))
      39    for (int i = 2048; i < 4096; i++)
      40      if (ret_false ())
      41        x[i] = f4 (y[i], z[i], w);
      42    #pragma omp simd
      43    for (int i = 4096; i < 8192; i++)
      44      if (x[i] > 10 && ret_false ())
      45        x[i] = f5 (x[i], i);
      46  }