1*dcc27ea4SJoseph Huber // RUN: %libomptarget-compile-generic -O2 && %libomptarget-run-generic 2*dcc27ea4SJoseph Huber // -O2 to run openmp-opt 3*dcc27ea4SJoseph Huber // RUN: %libomptarget-compileopt-generic -O2 && %libomptarget-run-generic 4330d8983SJohannes Doerfert 5330d8983SJohannes Doerfert int main(void) { 6330d8983SJohannes Doerfert long int aa = 0; 7330d8983SJohannes Doerfert 8330d8983SJohannes Doerfert int ng = 12; 9330d8983SJohannes Doerfert int nxyz = 5; 10330d8983SJohannes Doerfert 11330d8983SJohannes Doerfert const long exp = ng * nxyz; 12330d8983SJohannes Doerfert 13330d8983SJohannes Doerfert #pragma omp target map(tofrom : aa) 14330d8983SJohannes Doerfert for (int gid = 0; gid < nxyz; gid++) { 15330d8983SJohannes Doerfert #pragma omp parallel for 16330d8983SJohannes Doerfert for (unsigned int g = 0; g < ng; g++) { 17330d8983SJohannes Doerfert #pragma omp atomic 18330d8983SJohannes Doerfert aa += 1; 19330d8983SJohannes Doerfert } 20330d8983SJohannes Doerfert } 21330d8983SJohannes Doerfert if (aa != exp) { 22330d8983SJohannes Doerfert return 1; 23330d8983SJohannes Doerfert } 24330d8983SJohannes Doerfert return 0; 25330d8983SJohannes Doerfert } 26