124f836e8SJoachim Protze // RUN: %libomptarget-compilexx-run-and-check-generic 202896967SShilei Tian 3ad0f6e1dSJon Chesterfield // UNSUPPORTED: x86_64-pc-linux-gnu 4ae23be84SJoseph Huber // UNSUPPORTED: x86_64-pc-linux-gnu-oldDriver 5*d5d83663SJoseph Huber // UNSUPPORTED: x86_64-pc-linux-gnu-LTO 6ad0f6e1dSJon Chesterfield 702896967SShilei Tian #include <omp.h> 802896967SShilei Tian 902896967SShilei Tian #include <cassert> 1002896967SShilei Tian #include <iostream> 1102896967SShilei Tian main(int argc,char * argv[])1202896967SShilei Tianint main(int argc, char *argv[]) { 1302896967SShilei Tian #pragma omp parallel for 1402896967SShilei Tian for (int i = 0; i < 16; ++i) { 1502896967SShilei Tian for (int n = 1; n < (1 << 13); n <<= 1) { 1602896967SShilei Tian void *p = omp_target_alloc(n * sizeof(int), 0); 1702896967SShilei Tian omp_target_free(p, 0); 1802896967SShilei Tian } 1902896967SShilei Tian } 2002896967SShilei Tian 2102896967SShilei Tian #pragma omp parallel for 2202896967SShilei Tian for (int i = 0; i < 16; ++i) { 2302896967SShilei Tian for (int n = 1; n < (1 << 13); n <<= 1) { 2402896967SShilei Tian int *p = (int *)omp_target_alloc(n * sizeof(int), 0); 2502896967SShilei Tian #pragma omp target teams distribute parallel for is_device_ptr(p) 2602896967SShilei Tian for (int j = 0; j < n; ++j) { 2702896967SShilei Tian p[j] = i; 2802896967SShilei Tian } 2902896967SShilei Tian int buffer[n]; 3002896967SShilei Tian #pragma omp target teams distribute parallel for is_device_ptr(p) \ 3102896967SShilei Tian map(from \ 3202896967SShilei Tian : buffer) 3302896967SShilei Tian for (int j = 0; j < n; ++j) { 3402896967SShilei Tian buffer[j] = p[j]; 3502896967SShilei Tian } 3602896967SShilei Tian for (int j = 0; j < n; ++j) { 3702896967SShilei Tian assert(buffer[j] == i); 3802896967SShilei Tian } 3902896967SShilei Tian omp_target_free(p, 0); 4002896967SShilei Tian } 4102896967SShilei Tian } 4202896967SShilei Tian 4302896967SShilei Tian std::cout << "PASS\n"; 4402896967SShilei Tian return 0; 4502896967SShilei Tian } 4602896967SShilei Tian 4702896967SShilei Tian // CHECK: PASS 48