1*330d8983SJohannes Doerfert // RUN: %libomptarget-compile-and-run-generic 2*330d8983SJohannes Doerfert 3*330d8983SJohannes Doerfert #include <assert.h> 4*330d8983SJohannes Doerfert #include <omp.h> 5*330d8983SJohannes Doerfert #include <stdlib.h> 6*330d8983SJohannes Doerfert 7*330d8983SJohannes Doerfert #define N 1024 8*330d8983SJohannes Doerfert #define OFFSET 16 9*330d8983SJohannes Doerfert main(int argc,char * argv[])10*330d8983SJohannes Doerfertint main(int argc, char *argv[]) { 11*330d8983SJohannes Doerfert int *host_data = (int *)malloc(sizeof(int) * N); 12*330d8983SJohannes Doerfert void *device_ptr = omp_get_mapped_ptr(host_data, 0); 13*330d8983SJohannes Doerfert 14*330d8983SJohannes Doerfert assert(device_ptr == NULL && "the pointer should not be mapped right now"); 15*330d8983SJohannes Doerfert 16*330d8983SJohannes Doerfert #pragma omp target enter data map(to: host_data[:N]) 17*330d8983SJohannes Doerfert 18*330d8983SJohannes Doerfert device_ptr = omp_get_mapped_ptr(host_data, 0); 19*330d8983SJohannes Doerfert 20*330d8983SJohannes Doerfert assert(device_ptr && "the pointer should be mapped now"); 21*330d8983SJohannes Doerfert 22*330d8983SJohannes Doerfert void *ptr = NULL; 23*330d8983SJohannes Doerfert 24*330d8983SJohannes Doerfert #pragma omp target map(from: ptr) 25*330d8983SJohannes Doerfert { ptr = host_data; } 26*330d8983SJohannes Doerfert 27*330d8983SJohannes Doerfert assert(ptr == device_ptr && "wrong pointer mapping"); 28*330d8983SJohannes Doerfert 29*330d8983SJohannes Doerfert device_ptr = omp_get_mapped_ptr(host_data + OFFSET, 0); 30*330d8983SJohannes Doerfert 31*330d8983SJohannes Doerfert assert(device_ptr && "the pointer with offset should be mapped"); 32*330d8983SJohannes Doerfert 33*330d8983SJohannes Doerfert #pragma omp target map(from: ptr) 34*330d8983SJohannes Doerfert { ptr = host_data + OFFSET; } 35*330d8983SJohannes Doerfert 36*330d8983SJohannes Doerfert assert(ptr == device_ptr && "wrong pointer mapping"); 37*330d8983SJohannes Doerfert 38*330d8983SJohannes Doerfert return 0; 39*330d8983SJohannes Doerfert } 40