/* This test exercises combined directives. */ /* { dg-do run } */ #include int main (int argc, char **argv) { const int N = 32; float a[N], b[N]; int i; for (i = 0; i < N; i++) { a[i] = 1.0; b[i] = 0.0; } #pragma acc parallel loop copy (a[0:N]) copy (b[0:N]) for (i = 0; i < N; i++) { b[i] = 2.0; a[i] = a[i] + b[i]; } for (i = 0; i < N; i++) { if (a[i] != 3.0) abort (); if (b[i] != 2.0) abort (); } #pragma acc kernels loop copy (a[0:N]) copy (b[0:N]) for (i = 0; i < N; i++) { b[i] = 3.0; a[i] = a[i] + b[i]; } for (i = 0; i < N; i++) { if (a[i] != 6.0) abort (); if (b[i] != 3.0) abort (); } return 0; }