summaryrefslogtreecommitdiffstats
path: root/openmp/runtime/test/api/omp_pause_resource.c
diff options
context:
space:
mode:
authorJonathan Peyton <jonathan.l.peyton@intel.com>2019-01-16 20:07:39 +0000
committerJonathan Peyton <jonathan.l.peyton@intel.com>2019-01-16 20:07:39 +0000
commit9b8bb323c94768ae788d77fc597f057d97b9eb17 (patch)
tree12c14373815b1a903478b5feebb041ca5f1af3c6 /openmp/runtime/test/api/omp_pause_resource.c
parent837da5d3ecdda47cc8cbc08420eea6d1327117e5 (diff)
downloadbcm5719-llvm-9b8bb323c94768ae788d77fc597f057d97b9eb17.tar.gz
bcm5719-llvm-9b8bb323c94768ae788d77fc597f057d97b9eb17.zip
[OpenMP] Add omp_pause_resource* API
Add omp_pause_resource and omp_pause_resource_all API and enum, plus stub for internal implementation. Implemented callable helper function to do local pause, and added basic functionality for hard and soft pause. Patch by Terry Wilmarth Differential Revision: https://reviews.llvm.org/D55078 llvm-svn: 351372
Diffstat (limited to 'openmp/runtime/test/api/omp_pause_resource.c')
-rw-r--r--openmp/runtime/test/api/omp_pause_resource.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/openmp/runtime/test/api/omp_pause_resource.c b/openmp/runtime/test/api/omp_pause_resource.c
new file mode 100644
index 00000000000..32c1120ab0e
--- /dev/null
+++ b/openmp/runtime/test/api/omp_pause_resource.c
@@ -0,0 +1,58 @@
+// RUN: %libomp-compile-and-run
+#include <stdio.h>
+#include "omp_testsuite.h"
+
+int test_omp_pause_resource() {
+ int fails, nthreads, my_dev;
+
+ fails = 0;
+ nthreads = 0;
+ my_dev = omp_get_initial_device();
+
+#pragma omp parallel
+#pragma omp single
+ nthreads = omp_get_num_threads();
+
+ if (omp_pause_resource(omp_pause_soft, my_dev))
+ fails++;
+
+#pragma omp parallel shared(nthreads)
+#pragma omp single
+ nthreads = omp_get_num_threads();
+
+ if (nthreads == 0)
+ fails++;
+ if (omp_pause_resource(omp_pause_hard, my_dev))
+ fails++;
+ nthreads = 0;
+
+#pragma omp parallel shared(nthreads)
+#pragma omp single
+ nthreads = omp_get_num_threads();
+
+ if (nthreads == 0)
+ fails++;
+ if (omp_pause_resource_all(omp_pause_soft))
+ fails++;
+ nthreads = 0;
+
+#pragma omp parallel shared(nthreads)
+#pragma omp single
+ nthreads = omp_get_num_threads();
+
+ if (nthreads == 0)
+ fails++;
+ return fails == 0;
+}
+
+int main() {
+ int i;
+ int num_failed = 0;
+
+ for (i = 0; i < REPETITIONS; i++) {
+ if (!test_omp_pause_resource()) {
+ num_failed++;
+ }
+ }
+ return num_failed;
+}
OpenPOWER on IntegriCloud