19b8bb323SJonathan Peyton // RUN: %libomp-compile-and-run 2*047890bcSJoachim Protze 3*047890bcSJoachim Protze // Linking fails for icc 18/19 4*047890bcSJoachim Protze // UNSUPPORTED: icc-18, icc-19 5*047890bcSJoachim Protze 69b8bb323SJonathan Peyton #include <stdio.h> 79b8bb323SJonathan Peyton #include "omp_testsuite.h" 89b8bb323SJonathan Peyton test_omp_pause_resource()99b8bb323SJonathan Peytonint test_omp_pause_resource() { 109b8bb323SJonathan Peyton int fails, nthreads, my_dev; 119b8bb323SJonathan Peyton 129b8bb323SJonathan Peyton fails = 0; 139b8bb323SJonathan Peyton nthreads = 0; 149b8bb323SJonathan Peyton my_dev = omp_get_initial_device(); 159b8bb323SJonathan Peyton 169b8bb323SJonathan Peyton #pragma omp parallel 179b8bb323SJonathan Peyton #pragma omp single 189b8bb323SJonathan Peyton nthreads = omp_get_num_threads(); 199b8bb323SJonathan Peyton 209b8bb323SJonathan Peyton if (omp_pause_resource(omp_pause_soft, my_dev)) 219b8bb323SJonathan Peyton fails++; 229b8bb323SJonathan Peyton 239b8bb323SJonathan Peyton #pragma omp parallel shared(nthreads) 249b8bb323SJonathan Peyton #pragma omp single 259b8bb323SJonathan Peyton nthreads = omp_get_num_threads(); 269b8bb323SJonathan Peyton 279b8bb323SJonathan Peyton if (nthreads == 0) 289b8bb323SJonathan Peyton fails++; 299b8bb323SJonathan Peyton if (omp_pause_resource(omp_pause_hard, my_dev)) 309b8bb323SJonathan Peyton fails++; 319b8bb323SJonathan Peyton nthreads = 0; 329b8bb323SJonathan Peyton 339b8bb323SJonathan Peyton #pragma omp parallel shared(nthreads) 349b8bb323SJonathan Peyton #pragma omp single 359b8bb323SJonathan Peyton nthreads = omp_get_num_threads(); 369b8bb323SJonathan Peyton 379b8bb323SJonathan Peyton if (nthreads == 0) 389b8bb323SJonathan Peyton fails++; 399b8bb323SJonathan Peyton if (omp_pause_resource_all(omp_pause_soft)) 409b8bb323SJonathan Peyton fails++; 419b8bb323SJonathan Peyton nthreads = 0; 429b8bb323SJonathan Peyton 439b8bb323SJonathan Peyton #pragma omp parallel shared(nthreads) 449b8bb323SJonathan Peyton #pragma omp single 459b8bb323SJonathan Peyton nthreads = omp_get_num_threads(); 469b8bb323SJonathan Peyton 479b8bb323SJonathan Peyton if (nthreads == 0) 489b8bb323SJonathan Peyton fails++; 499b8bb323SJonathan Peyton return fails == 0; 509b8bb323SJonathan Peyton } 519b8bb323SJonathan Peyton main()529b8bb323SJonathan Peytonint main() { 539b8bb323SJonathan Peyton int i; 549b8bb323SJonathan Peyton int num_failed = 0; 559b8bb323SJonathan Peyton 569b8bb323SJonathan Peyton for (i = 0; i < REPETITIONS; i++) { 579b8bb323SJonathan Peyton if (!test_omp_pause_resource()) { 589b8bb323SJonathan Peyton num_failed++; 599b8bb323SJonathan Peyton } 609b8bb323SJonathan Peyton } 619b8bb323SJonathan Peyton return num_failed; 629b8bb323SJonathan Peyton } 63