brintos

brintos / llvm-project-archived public Read only

0
0
Text · 930 B · 1301f27 Raw
48 lines · c
1// RUN: %libomp-compile-and-run2// RUN: env KMP_LOCK_KIND=tas KMP_SPIN_BACKOFF_PARAMS=2048,200 %libomp-run3// RUN: env KMP_LOCK_KIND=futex %libomp-run4#include <stdio.h>5#include "omp_testsuite.h"6 7omp_lock_t lck;8 9int test_omp_lock()10{11  int nr_threads_in_single = 0;12  int result = 0;13  int nr_iterations = 0;14  int i;15 16  omp_init_lock(&lck);17  #pragma omp parallel shared(lck)18  {19    #pragma omp for20    for(i = 0; i < LOOPCOUNT; i++) {21      omp_set_lock(&lck);22      #pragma omp flush23      nr_threads_in_single++;24      #pragma omp flush25      nr_iterations++;26      nr_threads_in_single--;27      result = result + nr_threads_in_single;28      omp_unset_lock(&lck);29    }30  }31  omp_destroy_lock(&lck);32 33  return ((result == 0) && (nr_iterations == LOOPCOUNT));34}35 36int main()37{38  int i;39  int num_failed=0;40 41  for(i = 0; i < REPETITIONS; i++) {42    if(!test_omp_lock()) {43      num_failed++;44    }45  }46  return num_failed;47}48