summaryrefslogtreecommitdiff
path: root/offload/test/mapping/declare_mapper_api.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'offload/test/mapping/declare_mapper_api.cpp')
-rw-r--r--offload/test/mapping/declare_mapper_api.cpp48
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;
+}