1 // RUN: %libomptarget-compilexx-and-run-generic 2 3 // UNSUPPORTED: amdgcn-amd-amdhsa 4 // UNSUPPORTED: amdgcn-amd-amdhsa-newRTL 5 6 #include <cassert> 7 #include <iostream> 8 #include <stdexcept> 9 10 int main(int argc, char *argv[]) { 11 int a = 0; 12 std::cout << "outside a = " << a << " addr " << &a << std::endl; 13 #pragma omp target map(tofrom : a) depend(out : a) nowait 14 { 15 int sum = 0; 16 for (int i = 0; i < 100000; i++) 17 sum++; 18 a = 1; 19 } 20 21 #pragma omp task depend(inout : a) shared(a) 22 { 23 std::cout << "a = " << a << " addr " << &a << std::endl; 24 if (a != 1) 25 throw std::runtime_error("wrong result!"); 26 a = 2; 27 } 28 29 #pragma omp task depend(inout : a) shared(a) 30 { 31 std::cout << "a = " << a << " addr " << &a << std::endl; 32 if (a != 2) 33 throw std::runtime_error("wrong result!"); 34 a = 3; 35 } 36 37 #pragma omp taskwait 38 39 assert(a == 3 && "wrong result!"); 40 41 return 0; 42 } 43