(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
kernels-loop-clauses.c
       1  /* Exercise the auto, independent, seq and tile loop clauses inside
       2     kernels regions.  */
       3  
       4  #include <assert.h>
       5  
       6  #define N 100
       7  
       8  void
       9  check (int *a, int *b)
      10  {
      11    int i;
      12  
      13    for (i = 0; i < N; i++)
      14      assert (a[i] == b[i]);
      15  }
      16  
      17  int
      18  main ()
      19  {
      20    int i, a[N], b[N];
      21  
      22  #pragma acc kernels copy(a)
      23    {
      24  #pragma acc loop auto
      25      for (i = 0; i < N; i++)
      26        a[i] = i;
      27    }
      28  
      29    for (i = 0; i < N; i++)
      30      b[i] = i;
      31  
      32    check (a, b);
      33  
      34  #pragma acc kernels copyout(a)
      35    {
      36  #pragma acc loop independent
      37      for (i = 0; i < N; i++)
      38        a[i] = i;
      39    }
      40  
      41    check (a, b);
      42  
      43  #pragma acc kernels present_or_copy(a)
      44    {
      45  #pragma acc loop seq
      46      for (i = 0; i < N; i++)
      47        a[i] = i;
      48    }
      49  
      50    check (a, b);
      51  
      52  #pragma acc kernels pcopyout(a) present_or_copyin(b)
      53    {
      54  #pragma acc loop seq
      55      for (i = 0; i < N; i++)
      56        a[i] = b[i];
      57    }
      58  
      59    check (a, b);
      60  
      61    return 0;
      62  }