(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
combined-directives-1.c
       1  /* This test exercises combined directives.  */
       2  
       3  /* { dg-do run } */
       4  
       5  #include <stdlib.h>
       6  
       7  int
       8  main (int argc, char **argv)
       9  {
      10    const int N = 32;
      11    float a[N], b[N];
      12    int i;
      13  
      14    for (i = 0; i < N; i++)
      15      {
      16        a[i] = 1.0;
      17        b[i] = 0.0;
      18      }
      19  
      20  #pragma acc parallel loop copy (a[0:N]) copy (b[0:N])
      21    for (i = 0; i < N; i++)
      22      {
      23        b[i] = 2.0;
      24        a[i] = a[i] + b[i];
      25      }
      26  
      27    for (i = 0; i < N; i++)
      28      {
      29        if (a[i] != 3.0)
      30  	abort ();
      31  
      32        if (b[i] != 2.0)
      33  	abort ();
      34      }
      35  
      36  #pragma acc kernels loop copy (a[0:N]) copy (b[0:N])
      37    for (i = 0; i < N; i++)
      38      {
      39        b[i] = 3.0;
      40        a[i] = a[i] + b[i];
      41      }
      42  
      43    for (i = 0; i < N; i++)
      44      {
      45        if (a[i] != 6.0)
      46  	abort ();
      47  
      48        if (b[i] != 3.0)
      49  	abort ();
      50      }
      51  
      52    return 0;
      53  
      54  }