xref: /llvm-project/offload/test/api/omp_device_alloc.c (revision e96146cd46b29e0d100a4566358da8fb38bea43e)
1 // RUN: %libomptarget-compile-run-and-check-generic
2 
3 // UNSUPPORTED: nvidiagpu
4 // UNSUPPORTED: amdgpu
5 
6 #include <assert.h>
7 #include <omp.h>
8 #include <stdio.h>
9 
10 int main() {
11 #pragma omp target
12   {
13     int *ptr;
14 #pragma omp allocate(ptr) allocator(omp_default_mem_alloc)
15     ptr = omp_alloc(sizeof(int), omp_default_mem_alloc);
16     assert(ptr && "Ptr is (null)!");
17     *ptr = 0;
18 #pragma omp parallel num_threads(32)
19     {
20 #pragma omp atomic
21       *ptr += 1;
22     }
23     assert(*ptr == 32 && "Ptr is not 32");
24     omp_free(ptr, omp_default_mem_alloc);
25   }
26 
27   // CHECK: PASS
28   printf("PASS\n");
29 }
30