| // RUN: %libomptarget-compilexx-run-and-check-generic |
| |
| #include <cinttypes> |
| #include <cstdio> |
| #include <cstdlib> |
| #include <vector> |
| |
| // Data structure definitions copied from OpenMP RTL. |
| struct MapComponentInfoTy { |
| void *Base; |
| void *Begin; |
| int64_t Size; |
| int64_t Type; |
| void *Name; |
| MapComponentInfoTy() = default; |
| MapComponentInfoTy(void *Base, void *Begin, int64_t Size, int64_t Type, |
| void *Name) |
| : Base(Base), Begin(Begin), Size(Size), Type(Type), Name(Name) {} |
| }; |
| |
| struct MapperComponentsTy { |
| std::vector<MapComponentInfoTy> Components; |
| }; |
| |
| // OpenMP RTL interfaces |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| int64_t __tgt_mapper_num_components(void *rt_mapper_handle); |
| void __tgt_push_mapper_component(void *rt_mapper_handle, void *base, |
| void *begin, int64_t size, int64_t type, |
| void *name); |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| int main(int argc, char *argv[]) { |
| MapperComponentsTy MC; |
| void *base, *begin; |
| int64_t size, type; |
| // Push 2 elements into MC. |
| __tgt_push_mapper_component((void *)&MC, base, begin, size, type, nullptr); |
| __tgt_push_mapper_component((void *)&MC, base, begin, size, type, nullptr); |
| int64_t num = __tgt_mapper_num_components((void *)&MC); |
| // CHECK: num=2 |
| printf("num=%" PRId64 "\n", num); |
| return 0; |
| } |