174d23f15SJoseph Huber // RUN: %libomptarget-compile-run-and-check-generic 274d23f15SJoseph Huber 3*e96146cdSJoseph Huber // UNSUPPORTED: nvidiagpu 4*e96146cdSJoseph Huber // UNSUPPORTED: amdgpu 5*e96146cdSJoseph Huber 674d23f15SJoseph Huber #include <assert.h> 774d23f15SJoseph Huber #include <omp.h> 874d23f15SJoseph Huber #include <stdio.h> 974d23f15SJoseph Huber 1074d23f15SJoseph Huber int main() { 11e0326b66SJoseph Huber #pragma omp target 1274d23f15SJoseph Huber { 13e0326b66SJoseph Huber int *ptr; 14e0326b66SJoseph Huber #pragma omp allocate(ptr) allocator(omp_default_mem_alloc) 15e0326b66SJoseph Huber ptr = omp_alloc(sizeof(int), omp_default_mem_alloc); 1674d23f15SJoseph Huber assert(ptr && "Ptr is (null)!"); 17e0326b66SJoseph Huber *ptr = 0; 18e0326b66SJoseph Huber #pragma omp parallel num_threads(32) 19e0326b66SJoseph Huber { 20e0326b66SJoseph Huber #pragma omp atomic 21e0326b66SJoseph Huber *ptr += 1; 22e0326b66SJoseph Huber } 23e0326b66SJoseph Huber assert(*ptr == 32 && "Ptr is not 32"); 2474d23f15SJoseph Huber omp_free(ptr, omp_default_mem_alloc); 2574d23f15SJoseph Huber } 2674d23f15SJoseph Huber 2774d23f15SJoseph Huber // CHECK: PASS 2874d23f15SJoseph Huber printf("PASS\n"); 2974d23f15SJoseph Huber } 30