// clang-format off
// RUN: %libomptarget-compile-generic && env LIBOMPTARGET_DEBUG=1 %libomptarget-run-generic 2>&1 | %fcheck-generic -allow-empty -check-prefix=DEBUG
// REQUIRES: libomptarget-debug
// XFAIL: intelgpu
// clang-format on

/*
  Test for looptripcount being popped from runtime stack.
*/
#include <omp.h>
#include <stdio.h>
int main() {
  int N = 128;
  int NN = 1024;
  int num_teams[NN];
  int num_threads[NN];

  printf("#pragma omp target teams distribute parallel for thread_limit(4)\n");
#pragma omp target teams distribute parallel for thread_limit(4)
  for (int j = 0; j < N; j++) {
    num_threads[j] = omp_get_num_threads();
    num_teams[j] = omp_get_num_teams();
  }
  printf("num_threads %d num_teams %d\n", num_threads[0], num_teams[0]);
  // DEBUG: loop trip count is 128
  printf("#pragma omp target teams distribute parallel for\n");
#pragma omp target teams distribute parallel for
  for (int j = 0; j < N; j++) {
    num_threads[j] = omp_get_num_threads();
    num_teams[j] = omp_get_num_teams();
  }
  printf("num_threads %d num_teams %d\n", num_threads[0], num_teams[0]);
  // DEBUG: loop trip count is 128
  return 0;
}
