1*330d8983SJohannes Doerfert // RUN: %libomptarget-compile-run-and-check-generic 2*330d8983SJohannes Doerfert 3*330d8983SJohannes Doerfert #include <omp.h> 4*330d8983SJohannes Doerfert #include <stdio.h> 5*330d8983SJohannes Doerfert 6*330d8983SJohannes Doerfert #pragma omp declare target 7*330d8983SJohannes Doerfert int isHost; 8*330d8983SJohannes Doerfert #pragma omp end declare target 9*330d8983SJohannes Doerfert main(void)10*330d8983SJohannes Doerfertint main(void) { 11*330d8983SJohannes Doerfert isHost = -1; 12*330d8983SJohannes Doerfert 13*330d8983SJohannes Doerfert #pragma omp target enter data map(to : isHost) 14*330d8983SJohannes Doerfert 15*330d8983SJohannes Doerfert #pragma omp target 16*330d8983SJohannes Doerfert { isHost = omp_is_initial_device(); } 17*330d8983SJohannes Doerfert #pragma omp target update from(isHost) 18*330d8983SJohannes Doerfert 19*330d8983SJohannes Doerfert if (isHost < 0) { 20*330d8983SJohannes Doerfert printf("Runtime error, isHost=%d\n", isHost); 21*330d8983SJohannes Doerfert } 22*330d8983SJohannes Doerfert 23*330d8983SJohannes Doerfert #pragma omp target exit data map(delete : isHost) 24*330d8983SJohannes Doerfert 25*330d8983SJohannes Doerfert // CHECK: Target region executed on the device 26*330d8983SJohannes Doerfert printf("Target region executed on the %s\n", isHost ? "host" : "device"); 27*330d8983SJohannes Doerfert 28*330d8983SJohannes Doerfert return isHost; 29*330d8983SJohannes Doerfert } 30