xref: /llvm-project/offload/test/api/is_initial_device.c (revision 1a0cf245ac86c2f35c89cab47f83e9b474032e41)
1*1a0cf245SJan Patrick Lehr // RUN: %libomptarget-compile-run-and-check-x86_64-unknown-linux-gnu
2*1a0cf245SJan Patrick Lehr // RUN: %libomptarget-compile-x86_64-unknown-linux-gnu -DUNUSED -Wall -Werror
3330d8983SJohannes Doerfert 
4330d8983SJohannes Doerfert // only run for x86_64 host offloading:
5*1a0cf245SJan Patrick Lehr // REQUIRES: x86_64-unknown-linux-gnu
6330d8983SJohannes Doerfert 
7330d8983SJohannes Doerfert #include <omp.h>
8330d8983SJohannes Doerfert #include <stdio.h>
9330d8983SJohannes Doerfert 
10330d8983SJohannes Doerfert int main() {
11330d8983SJohannes Doerfert   int errors = 0;
12330d8983SJohannes Doerfert #ifdef UNUSED
13330d8983SJohannes Doerfert // Test if it is OK to leave the variants unused in the header
14330d8983SJohannes Doerfert #else // UNUSED
15330d8983SJohannes Doerfert   int host = omp_is_initial_device();
16330d8983SJohannes Doerfert   int device = 1;
17330d8983SJohannes Doerfert #pragma omp target map(tofrom : device)
18330d8983SJohannes Doerfert   { device = omp_is_initial_device(); }
19330d8983SJohannes Doerfert   if (!host) {
20330d8983SJohannes Doerfert     printf("omp_is_initial_device() returned false on host\n");
21330d8983SJohannes Doerfert     errors++;
22330d8983SJohannes Doerfert   }
23330d8983SJohannes Doerfert   if (device) {
24330d8983SJohannes Doerfert     printf("omp_is_initial_device() returned true on device\n");
25330d8983SJohannes Doerfert     errors++;
26330d8983SJohannes Doerfert   }
27330d8983SJohannes Doerfert #endif // UNUSED
28330d8983SJohannes Doerfert 
29330d8983SJohannes Doerfert   // CHECK: PASS
30330d8983SJohannes Doerfert   printf("%s\n", errors ? "FAIL" : "PASS");
31330d8983SJohannes Doerfert 
32330d8983SJohannes Doerfert   return errors;
33330d8983SJohannes Doerfert }
34