blob: 877c6df11aebefd34cddc99adb472670ee764514 [file] [log] [blame]
/* { dg-do run { target { ! openacc_host_selected } } } */
#include <assert.h>
#include "da-utils.h"
int main (void)
{
int n = 20, x = 5, y = 12;
int *****a = (int *****) create_da (sizeof (int), n, 5);
int sum1 = 0, sum2 = 0, sum3 = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int k = 0; k < n; k++)
for (int l = 0; l < n; l++)
for (int m = 0; m < n; m++)
{
a[i][j][k][l][m] = 1;
sum1++;
}
#pragma acc parallel copy (a[x:y][x:y][x:y][x:y][x:y]) copy(sum2)
{
for (int i = x; i < x + y; i++)
for (int j = x; j < x + y; j++)
for (int k = x; k < x + y; k++)
for (int l = x; l < x + y; l++)
for (int m = x; m < x + y; m++)
{
a[i][j][k][l][m] = 0;
sum2++;
}
}
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int k = 0; k < n; k++)
for (int l = 0; l < n; l++)
for (int m = 0; m < n; m++)
sum3 += a[i][j][k][l][m];
assert (sum1 == sum2 + sum3);
return 0;
}