llvm/offload/test/offloading/interop.c

// RUN: %libomptarget-compile-run-and-check-generic
// REQUIRES: nvptx64-nvidia-cuda

#include <assert.h>
#include <omp.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

typedef void *cudaStream_t;

int main() {

  int device_id = omp_get_default_device();

#pragma omp parallel master
  {

    double D0, D2;
    omp_interop_t interop;

#pragma omp interop init(targetsync : interop) device(device_id) nowait
    assert(interop != NULL);

    int err;
    for (int i = omp_ipr_first; i < 0; i++) {
      const char *n =
          omp_get_interop_name(interop, (omp_interop_property_t)(i));
      long int li =
          omp_get_interop_int(interop, (omp_interop_property_t)(i), &err);
      const void *p =
          omp_get_interop_ptr(interop, (omp_interop_property_t)(i), &err);
      const char *s =
          omp_get_interop_str(interop, (omp_interop_property_t)(i), &err);
      const char *n1 =
          omp_get_interop_type_desc(interop, (omp_interop_property_t)(i));
    }
#pragma omp interop use(interop) depend(in : D0, D2)

    cudaStream_t stream =
        (omp_get_interop_ptr(interop, omp_ipr_targetsync, NULL));
    assert(stream != NULL);

#pragma omp interop destroy(interop) depend(in : D0, D2) device(device_id)
  }
  printf("PASS\n");
}
// CHECK: PASS