| // 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; | |
| } |