Retro68/gcc/libgomp/testsuite/libgomp.oacc-c-c++-common/data-1.c
2015-08-28 17:33:40 +02:00

189 lines
3.1 KiB
C

/* { dg-do run } */
#include <stdlib.h>
#include <openacc.h>
int i;
int
is_mapped (void *p, size_t n)
{
#if ACC_MEM_SHARED
return 1;
#else
return acc_is_present (p, n);
#endif
}
int main(void)
{
int j;
i = -1;
j = -2;
#pragma acc data copyin (i, j)
{
if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
abort ();
if (i != -1 || j != -2)
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
}
if (i != 2 || j != 1)
abort ();
i = -1;
j = -2;
#pragma acc data copyout (i, j)
{
if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
abort ();
if (i != -1 || j != -2)
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
#pragma acc parallel present (i, j)
{
i = 4;
j = 2;
}
}
if (i != 4 || j != 2)
abort ();
i = -1;
j = -2;
#pragma acc data create (i, j)
{
if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
abort ();
if (i != -1 || j != -2)
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
}
if (i != 2 || j != 1)
abort ();
i = -1;
j = -2;
#pragma acc data present_or_copyin (i, j)
{
if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
abort ();
if (i != -1 || j != -2)
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
}
if (i != 2 || j != 1)
abort ();
i = -1;
j = -2;
#pragma acc data present_or_copyout (i, j)
{
if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
abort ();
if (i != -1 || j != -2)
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
#pragma acc parallel present (i, j)
{
i = 4;
j = 2;
}
}
if (i != 4 || j != 2)
abort ();
i = -1;
j = -2;
#pragma acc data present_or_copy (i, j)
{
if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
abort ();
if (i != -1 || j != -2)
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
}
#if ACC_MEM_SHARED
if (i != 2 || j != 1)
abort ();
#else
if (i != -1 || j != -2)
abort ();
#endif
i = -1;
j = -2;
#pragma acc data present_or_create (i, j)
{
if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
}
if (i != 2 || j != 1)
abort ();
i = -1;
j = -2;
#pragma acc data copyin (i, j)
{
#pragma acc data present (i, j)
{
if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
abort ();
if (i != -1 || j != -2)
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
}
}
if (i != 2 || j != 1)
abort ();
i = -1;
j = -2;
#pragma acc data
{
#if !ACC_MEM_SHARED
if (is_mapped (&i, sizeof (i)) || is_mapped (&j, sizeof (j)))
abort ();
#endif
if (i != -1 || j != -2)
abort ();
i = 2;
j = 1;
if (i != 2 || j != 1)
abort ();
}
if (i != 2 || j != 1)
abort ();
return 0;
}