summaryrefslogtreecommitdiff
path: root/offload/test/api/omp_dynamic_shared_memory_amdgpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'offload/test/api/omp_dynamic_shared_memory_amdgpu.c')
-rw-r--r--offload/test/api/omp_dynamic_shared_memory_amdgpu.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/offload/test/api/omp_dynamic_shared_memory_amdgpu.c b/offload/test/api/omp_dynamic_shared_memory_amdgpu.c
new file mode 100644
index 000000000000..0b4d9d6ea9d4
--- /dev/null
+++ b/offload/test/api/omp_dynamic_shared_memory_amdgpu.c
@@ -0,0 +1,25 @@
+// RUN: %libomptarget-compile-amdgcn-amd-amdhsa -O1 -mllvm -openmp-opt-inline-device
+// RUN: env LIBOMPTARGET_SHARED_MEMORY_SIZE=256 \
+// RUN: %libomptarget-run-amdgcn-amd-amdhsa | %fcheck-amdgcn-amd-amdhsa
+// REQUIRES: amdgcn-amd-amdhsa
+
+#include <omp.h>
+#include <stdio.h>
+
+int main() {
+ int x;
+#pragma omp target parallel map(from : x)
+ {
+ int *buf = llvm_omp_target_dynamic_shared_alloc() + 252;
+#pragma omp barrier
+ if (omp_get_thread_num() == 0)
+ *buf = 1;
+#pragma omp barrier
+ if (omp_get_thread_num() == 1)
+ x = *buf;
+ }
+
+ // CHECK: PASS
+ if (x == 1 && llvm_omp_target_dynamic_shared_alloc() == NULL)
+ printf("PASS\n");
+}