diff options
Diffstat (limited to 'offload/test/mapping/declare_mapper_api.cpp')
| -rw-r--r-- | offload/test/mapping/declare_mapper_api.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/offload/test/mapping/declare_mapper_api.cpp b/offload/test/mapping/declare_mapper_api.cpp new file mode 100644 index 000000000000..041c7f64be21 --- /dev/null +++ b/offload/test/mapping/declare_mapper_api.cpp @@ -0,0 +1,48 @@ +// 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; +} |
