(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
no_create-1.c
       1  /* Test 'no_create' clause on compute construct, with data present on the
       2     device.  */
       3  
       4  #include <stdlib.h>
       5  #include <stdio.h>
       6  #include <openacc.h>
       7  
       8  #define N 128
       9  
      10  int
      11  main (int argc, char *argv[])
      12  {
      13    int var;
      14    int *arr = (int *) malloc (N * sizeof (*arr));
      15    int *devptr[2];
      16  
      17    acc_copyin (&var, sizeof (var));
      18    acc_copyin (arr, N * sizeof (*arr));
      19  
      20  #pragma acc parallel no_create(var, arr[0:N]) copyout(devptr)
      21    {
      22      devptr[0] = &var;
      23      devptr[1] = &arr[2];
      24    }
      25    if (acc_hostptr (devptr[0]) != (void *) &var)
      26      __builtin_abort ();
      27    if (acc_hostptr (devptr[1]) != (void *) &arr[2])
      28      __builtin_abort ();
      29  #if ACC_MEM_SHARED
      30    if (devptr[0] != &var)
      31      __builtin_abort ();
      32    if (devptr[1] != &arr[2])
      33      __builtin_abort ();
      34  #else
      35    if (devptr[0] == &var)
      36      __builtin_abort ();
      37    if (devptr[1] == &arr[2])
      38      __builtin_abort ();
      39  #endif
      40  
      41  #pragma acc parallel no_create(var, arr[0:N]) copyout(devptr) async
      42    {
      43      devptr[0] = &arr[N - 2];
      44      devptr[1] = &var;
      45    }
      46  #pragma acc wait
      47    if (acc_hostptr (devptr[0]) != (void *) &arr[N - 2])
      48      __builtin_abort ();
      49    if (acc_hostptr (devptr[1]) != (void *) &var)
      50      __builtin_abort ();
      51  #if ACC_MEM_SHARED
      52    if (devptr[0] != &arr[N - 2])
      53      __builtin_abort ();
      54    if (devptr[1] != &var)
      55      __builtin_abort ();
      56  #else
      57    if (devptr[0] == &arr[N - 2])
      58      __builtin_abort ();
      59    if (devptr[1] == &var)
      60      __builtin_abort ();
      61  #endif
      62  
      63    acc_delete (&var, sizeof (var));
      64    acc_delete (arr, N * sizeof (*arr));
      65  
      66    free (arr);
      67  
      68    return 0;
      69  }