1*f5eebc25SShilei Tian // RUN: %libomptarget-compilexx-run-and-check-aarch64-unknown-linux-gnu
2*f5eebc25SShilei Tian // RUN: %libomptarget-compilexx-run-and-check-powerpc64-ibm-linux-gnu
3*f5eebc25SShilei Tian // RUN: %libomptarget-compilexx-run-and-check-powerpc64le-ibm-linux-gnu
4*f5eebc25SShilei Tian // RUN: %libomptarget-compilexx-run-and-check-x86_64-pc-linux-gnu
5*f5eebc25SShilei Tian // RUN: %libomptarget-compilexx-run-and-check-nvptx64-nvidia-cuda
6*f5eebc25SShilei Tian 
7*f5eebc25SShilei Tian #include <cassert>
8*f5eebc25SShilei Tian #include <iostream>
9*f5eebc25SShilei Tian 
10*f5eebc25SShilei Tian int main(int argc, char *argv[]) {
11*f5eebc25SShilei Tian   constexpr const int num_threads = 64, N = 128;
12*f5eebc25SShilei Tian   int array[num_threads] = {0};
13*f5eebc25SShilei Tian 
14*f5eebc25SShilei Tian #pragma omp parallel for
15*f5eebc25SShilei Tian   for (int i = 0; i < num_threads; ++i) {
16*f5eebc25SShilei Tian     int tmp[N];
17*f5eebc25SShilei Tian 
18*f5eebc25SShilei Tian     for (int j = 0; j < N; ++j) {
19*f5eebc25SShilei Tian       tmp[j] = i;
20*f5eebc25SShilei Tian     }
21*f5eebc25SShilei Tian 
22*f5eebc25SShilei Tian #pragma omp target teams distribute parallel for map(tofrom : tmp)
23*f5eebc25SShilei Tian     for (int j = 0; j < N; ++j) {
24*f5eebc25SShilei Tian       tmp[j] += j;
25*f5eebc25SShilei Tian     }
26*f5eebc25SShilei Tian 
27*f5eebc25SShilei Tian     for (int j = 0; j < N; ++j) {
28*f5eebc25SShilei Tian       array[i] += tmp[j];
29*f5eebc25SShilei Tian     }
30*f5eebc25SShilei Tian   }
31*f5eebc25SShilei Tian 
32*f5eebc25SShilei Tian   // Verify
33*f5eebc25SShilei Tian   for (int i = 0; i < num_threads; ++i) {
34*f5eebc25SShilei Tian     const int ref = (0 + N - 1) * N / 2 + i * N;
35*f5eebc25SShilei Tian     assert(array[i] == ref);
36*f5eebc25SShilei Tian   }
37*f5eebc25SShilei Tian 
38*f5eebc25SShilei Tian   std::cout << "PASS\n";
39*f5eebc25SShilei Tian 
40*f5eebc25SShilei Tian   return 0;
41*f5eebc25SShilei Tian }
42*f5eebc25SShilei Tian 
43*f5eebc25SShilei Tian // CHECK: PASS
44