(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c-c++-common/
target-memcpy-async-1.c
       1  /* Test for omp_target_memcpy_async without considering dependence objects.  */
       2  
       3  #include <omp.h>
       4  #include <stdlib.h>
       5  
       6  int
       7  main ()
       8  {
       9    int d = omp_get_default_device ();
      10    int id = omp_get_initial_device ();
      11    int q[128], i;
      12    void *p;
      13  
      14    if (d < 0 || d >= omp_get_num_devices ())
      15      d = id;
      16  
      17    p = omp_target_alloc (130 * sizeof (int), d);
      18    if (p == NULL)
      19      return 0;
      20  
      21    for (i = 0; i < 128; i++)
      22      q[i] = i;
      23  
      24    if (omp_target_memcpy_async (p, q, 128 * sizeof (int), sizeof (int), 0, d, id,
      25        0, NULL))
      26      abort ();
      27  
      28    #pragma omp taskwait
      29  
      30    int q2[128];
      31    for (i = 0; i < 128; ++i)
      32      q2[i] = 0;
      33    if (omp_target_memcpy_async (q2, p, 128 * sizeof(int), 0, sizeof (int), id, d,
      34        0, NULL))
      35      abort ();
      36  
      37    #pragma omp taskwait
      38  
      39    for (i = 0; i < 128; ++i)
      40      if (q2[i] != q[i])
      41        abort ();
      42  
      43    omp_target_free (p, d);
      44  
      45    return 0;
      46  }