diff --git a/openmp/libomptarget/DeviceRTL/CMakeLists.txt b/openmp/libomptarget/DeviceRTL/CMakeLists.txt --- a/openmp/libomptarget/DeviceRTL/CMakeLists.txt +++ b/openmp/libomptarget/DeviceRTL/CMakeLists.txt @@ -108,6 +108,7 @@ set(clang_opt_flags -O3 -mllvm -openmp-opt-disable -DSHARED_SCRATCHPAD_SIZE=512) set(link_opt_flags -O3 -openmp-opt-disable) +set(link_export_flag -passes=internalize -internalize-public-api-file=${source_directory}/exports) # Prepend -I to each list element set (LIBOMPTARGET_LLVM_INCLUDE_DIRS_DEVICERTL "${LIBOMPTARGET_LLVM_INCLUDE_DIRS}") @@ -173,10 +174,17 @@ COMMENT "Linking LLVM bitcode ${bclib_name}" ) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/internalized_${bclib_name} + COMMAND ${OPT_TOOL} ${link_export_flag} ${CMAKE_CURRENT_BINARY_DIR}/linked_${bclib_name} + -o ${CMAKE_CURRENT_BINARY_DIR}/internalized_${bclib_name} + DEPENDS ${source_directory}/exports ${CMAKE_CURRENT_BINARY_DIR}/linked_${bclib_name} + COMMENT "Internalizing LLVM bitcode ${bclib_name}" + ) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${bclib_name} - COMMAND ${OPT_TOOL} ${link_opt_flags} ${CMAKE_CURRENT_BINARY_DIR}/linked_${bclib_name} + COMMAND ${OPT_TOOL} ${link_opt_flags} ${CMAKE_CURRENT_BINARY_DIR}/internalized_${bclib_name} -o ${CMAKE_CURRENT_BINARY_DIR}/${bclib_name} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/linked_${bclib_name} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/internalized_${bclib_name} COMMENT "Optimizing LLVM bitcode ${bclib_name}" ) diff --git a/openmp/libomptarget/DeviceRTL/src/exports b/openmp/libomptarget/DeviceRTL/src/exports new file mode 100644 --- /dev/null +++ b/openmp/libomptarget/DeviceRTL/src/exports @@ -0,0 +1,119 @@ +omp_set_dynamic +omp_get_dynamic +omp_set_num_threads +omp_get_max_threads +omp_get_thread_limit +omp_set_max_active_levels +omp_get_max_active_levels +omp_get_active_level +omp_get_level +omp_set_schedule +omp_get_schedule +omp_get_num_threads +omp_get_thread_num +omp_set_nested +omp_get_nested +omp_set_max_active_levels +omp_get_max_active_levels +omp_get_proc_bind +omp_get_num_places +omp_get_place_num_procs +omp_get_place_proc_ids +omp_get_place_num +omp_get_partition_num_places +omp_get_partition_place_nums +omp_get_cancellation +omp_set_default_device +omp_get_default_device +omp_get_num_devices +omp_get_device_num +omp_get_num_teams +omp_get_team_num +omp_get_initial_device +llvm_omp_target_dynamic_shared_alloc +omp_init_lock +omp_destroy_lock +omp_set_lock +omp_unset_lock +omp_test_lock +omp_in_final +omp_get_max_task_priority +omp_get_wtick +omp_get_wtime +__kmpc_alloc_shared +__kmpc_barrier +__kmpc_barrier_simple_generic +__kmpc_barrier_simple_spmd +__kmpc_begin_sharing_variables +__kmpc_cancel +__kmpc_cancel_barrier +__kmpc_cancellationpoint +__kmpc_critical +__kmpc_dispatch_fini_4 +__kmpc_dispatch_fini_4u +__kmpc_dispatch_fini_8 +__kmpc_dispatch_fini_8u +__kmpc_dispatch_init_4 +__kmpc_dispatch_init_4u +__kmpc_dispatch_init_8 +__kmpc_dispatch_init_8u +__kmpc_dispatch_next_4 +__kmpc_dispatch_next_4u +__kmpc_dispatch_next_8 +__kmpc_dispatch_next_8u +__kmpc_distribute_static_fini +__kmpc_distribute_static_init_4 +__kmpc_distribute_static_init_4u +__kmpc_distribute_static_init_8 +__kmpc_distribute_static_init_8u +__kmpc_end_critical +__kmpc_end_master +__kmpc_end_ordered +__kmpc_end_sharing_variables +__kmpc_end_single +__kmpc_end_taskgroup +__kmpc_flush +__kmpc_for_static_fini +__kmpc_for_static_init_4 +__kmpc_for_static_init_4u +__kmpc_for_static_init_8 +__kmpc_for_static_init_8u +__kmpc_free_shared +__kmpc_free_shared like a stack +__kmpc_get_dynamic_shared +__kmpc_get_hardware_num_threads_in_block +__kmpc_get_hardware_thread_id_in_block +__kmpc_get_shared_variables +__kmpc_get_warp_size +__kmpc_global_thread_num +__kmpc_is_spmd_exec_mode +__kmpc_kernel_end_parallel +__kmpc_kernel_parallel +__kmpc_kernel_prepare_parallel +__kmpc_master +__kmpc_nvptx_end_reduce +__kmpc_nvptx_end_reduce_nowait +__kmpc_nvptx_parallel_reduce_nowait_v2 +__kmpc_nvptx_teams_reduce_nowait_v2 +__kmpc_omp_task +__kmpc_omp_task_alloc +__kmpc_omp_task_begin_if0 +__kmpc_omp_task_complete_if0 +__kmpc_omp_taskwait +__kmpc_omp_task_with_deps +__kmpc_omp_taskyield +__kmpc_omp_wait_deps +__kmpc_ordered +__kmpc_parallel_51 +__kmpc_parallel_level +__kmpc_push_num_teams +__kmpc_push_proc_bind +__kmpc_shuffle_int32 +__kmpc_shuffle_int64 +__kmpc_single +__kmpc_syncwarp +__kmpc_target_deinit +__kmpc_target_init +__kmpc_taskgroup +__kmpc_taskloop +__kmpc_warp_active_thread_mask