1e1fb715cd
libgomp/ * testsuite/libgomp.oacc-c-c++-common/host_data-6.c: New file. From-SVN: r279119
48 lines
781 B
C
48 lines
781 B
C
/* Call 'acc_memcpy_from_device' inside '#pragma acc host_data'. */
|
|
|
|
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
|
|
|
|
#include <assert.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <openacc.h>
|
|
|
|
int
|
|
main ()
|
|
{
|
|
const int SIZE = 318;
|
|
const int c0 = 22;
|
|
const int c1 = 112;
|
|
|
|
char *h = (char *) malloc (SIZE);
|
|
|
|
memset (h, c0, SIZE);
|
|
|
|
#pragma acc data create (h[0:SIZE - 44])
|
|
{
|
|
#pragma acc update device (h[0:SIZE - 44])
|
|
|
|
memset (h, c1, 67);
|
|
|
|
void *d = h;
|
|
#pragma acc host_data use_device (d)
|
|
{
|
|
acc_memcpy_from_device (h, d, 12);
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < SIZE; ++i)
|
|
{
|
|
if (i < 12)
|
|
assert (h[i] == c0);
|
|
else if (i < 67)
|
|
assert (h[i] == c1);
|
|
else
|
|
assert (h[i] == c0);
|
|
}
|
|
|
|
free (h);
|
|
|
|
return 0;
|
|
}
|