| // RUN: %libomp-compile-and-run |
| |
| // Linking fails for icc 18/19 |
| // UNSUPPORTED: icc-18, icc-19 |
| |
| #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; |
| } |