/* Verify that 'acc_map_data' does not copy data to, and 'acc_unmap_data' does not copy data from the device. */ /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */ #include #include #include int main () { const int c0 = 9; const int c1 = 40; const int c2 = 47; const size_t N = 256; unsigned char *h = (unsigned char *) malloc (N); void *d = acc_malloc (N); memset (h, c0, N); // H <- c0 acc_memcpy_to_device (d, h, N); // D <- H = c0 memset (h, c1, N); // H <- c1 acc_map_data (h, d, N); for (size_t i = 0; i < N; ++i) if (h[i] != c1) abort (); acc_memcpy_from_device (h, d, N); // H <- D = c0 for (size_t i = 0; i < N; ++i) if (h[i] != c0) abort (); memset (h, c2, N); // H <- c2 acc_unmap_data (h); for (size_t i = 0; i < N; ++i) if (h[i] != c2) abort (); acc_memcpy_from_device (h, d, N); // H <- D = c0 for (size_t i = 0; i < N; ++i) if (h[i] != c0) abort (); acc_free (d); free (h); return 0; }