1 // RUN: %libomptarget-compile-run-and-check-aarch64-unknown-linux-gnu 2 // RUN: %libomptarget-compile-run-and-check-powerpc64-ibm-linux-gnu 3 // RUN: %libomptarget-compile-run-and-check-powerpc64le-ibm-linux-gnu 4 // RUN: %libomptarget-compile-run-and-check-x86_64-pc-linux-gnu 5 6 #include <cstdio> 7 #include <cstdlib> 8 9 // Data structure definitions copied from OpenMP RTL. 10 struct MapComponentInfoTy { 11 void *Base; 12 void *Begin; 13 int64_t Size; 14 int64_t Type; 15 MapComponentInfoTy() = default; 16 MapComponentInfoTy(void *Base, void *Begin, int64_t Size, int64_t Type) 17 : Base(Base), Begin(Begin), Size(Size), Type(Type) {} 18 }; 19 20 struct MapperComponentsTy { 21 std::vector<MapComponentInfoTy> Components; 22 }; 23 24 // OpenMP RTL interfaces 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 int64_t __tgt_mapper_num_components(void *rt_mapper_handle); 29 void __tgt_push_mapper_component(void *rt_mapper_handle, void *base, 30 void *begin, int64_t size, int64_t type); 31 #ifdef __cplusplus 32 } 33 #endif 34 35 int main(int argc, char *argv[]) { 36 MapperComponentsTy MC; 37 void *base, *begin; 38 int64_t size, type; 39 // Push 2 elements into MC. 40 __tgt_push_mapper_component((void *)&MC, base, begin, size, type); 41 __tgt_push_mapper_component((void *)&MC, base, begin, size, type); 42 int64_t num = __tgt_mapper_num_components((void *)&MC); 43 // CHECK: num=2 44 printf("num=%lld\n", num); 45 return 0; 46 } 47