xref: /llvm-project/offload/test/offloading/thread_limit.c (revision 8823448807f3b1a1362d1417e062d763734e02f5)
1330d8983SJohannes Doerfert // clang-format off
2330d8983SJohannes Doerfert // RUN: %libomptarget-compile-generic
3330d8983SJohannes Doerfert // RUN: env LIBOMPTARGET_INFO=16 \
4330d8983SJohannes Doerfert // RUN:   %libomptarget-run-generic 2>&1 | %fcheck-generic --check-prefix=DEFAULT
5330d8983SJohannes Doerfert 
6330d8983SJohannes Doerfert // UNSUPPORTED: nvptx64-nvidia-cuda
7330d8983SJohannes Doerfert // UNSUPPORTED: nvptx64-nvidia-cuda-LTO
8*88234488SEthan Luis McDonough // REQUIRES: gpu
9330d8983SJohannes Doerfert 
main()10330d8983SJohannes Doerfert int main() {
11330d8983SJohannes Doerfert   int n = 1 << 20;
12330d8983SJohannes Doerfert   int th = 12;
13330d8983SJohannes Doerfert   int te = n / th;
14330d8983SJohannes Doerfert // DEFAULT: 12 (MaxFlatWorkGroupSize:
15330d8983SJohannes Doerfert #pragma omp target
16330d8983SJohannes Doerfert #pragma omp teams loop num_teams(te), thread_limit(th)
17330d8983SJohannes Doerfert   for (int i = 0; i < n; i++) {
18330d8983SJohannes Doerfert   }
19330d8983SJohannes Doerfert 
20330d8983SJohannes Doerfert // DEFAULT: 13 (MaxFlatWorkGroupSize:
21330d8983SJohannes Doerfert   #pragma omp target
22330d8983SJohannes Doerfert   #pragma omp teams distribute parallel for simd num_teams(te), thread_limit(th+1) simdlen(64)
23330d8983SJohannes Doerfert   for(int i = 0; i < n; i++) {
24330d8983SJohannes Doerfert   }
25330d8983SJohannes Doerfert   return 0;
26330d8983SJohannes Doerfert }
27