xref: /llvm-project/offload/test/offloading/high_trip_count_block_limit.cpp (revision 1a0cf245ac86c2f35c89cab47f83e9b474032e41)
1597d2f76STim Gymnich // clang-format off
2597d2f76STim Gymnich // RUN: %libomptarget-compilexx-generic && env LIBOMPTARGET_REUSE_BLOCKS_FOR_HIGH_TRIP_COUNT=False %libomptarget-run-generic 2>&1 | %fcheck-generic
3597d2f76STim Gymnich // RUN: %libomptarget-compilexx-generic && %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefix=DEFAULT
4597d2f76STim Gymnich 
5597d2f76STim Gymnich // UNSUPPORTED: aarch64-unknown-linux-gnu
6597d2f76STim Gymnich // UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
7*1a0cf245SJan Patrick Lehr // UNSUPPORTED: x86_64-unknown-linux-gnu
8*1a0cf245SJan Patrick Lehr // UNSUPPORTED: x86_64-unknown-linux-gnu-LTO
9597d2f76STim Gymnich // UNSUPPORTED: s390x-ibm-linux-gnu
10597d2f76STim Gymnich // UNSUPPORTED: s390x-ibm-linux-gnu-LTO
11597d2f76STim Gymnich // clang-format on
12597d2f76STim Gymnich 
13597d2f76STim Gymnich /*
14597d2f76STim Gymnich   Check if there is a thread for each loop iteration
15597d2f76STim Gymnich */
16597d2f76STim Gymnich #include <omp.h>
17597d2f76STim Gymnich #include <stdio.h>
18597d2f76STim Gymnich 
19597d2f76STim Gymnich int main() {
20597d2f76STim Gymnich   int N = 819200;
21597d2f76STim Gymnich   int num_threads[N];
22597d2f76STim Gymnich 
23597d2f76STim Gymnich #pragma omp target teams distribute parallel for
24597d2f76STim Gymnich   for (int j = 0; j < N; j++) {
25597d2f76STim Gymnich     num_threads[j] = omp_get_num_threads() * omp_get_num_teams();
26597d2f76STim Gymnich   }
27597d2f76STim Gymnich 
28597d2f76STim Gymnich   if (num_threads[0] == N)
29597d2f76STim Gymnich     // CHECK: PASS
30597d2f76STim Gymnich     printf("PASS\n");
31597d2f76STim Gymnich   else
32597d2f76STim Gymnich     // DEFAULT: FAIL
33597d2f76STim Gymnich     printf("FAIL: num_threads: %d\n != N: %d", num_threads[0], N);
34597d2f76STim Gymnich   return 0;
35597d2f76STim Gymnich }
36