forked from OSchip/llvm-project
63 lines
1.1 KiB
C
63 lines
1.1 KiB
C
// 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;
|
|
}
|