; Copyright (c) 2005-2021 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
;     http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.

; This file is organized with a section for each .cpp file.

EXPORTS

; Assertions (assert.cpp)
?assertion_failure@r1@detail@tbb@@YAXPEBDH00@Z

; ITT (tbb_profiling.cpp)
?call_itt_notify@r1@detail@tbb@@YAXHPEAX@Z
?create_itt_sync@r1@detail@tbb@@YAXPEAXPEB_W1@Z
?itt_make_task_group@r1@detail@tbb@@YAXW4itt_domain_enum@d1@23@PEAX_K12W4string_resource_index@d0@23@@Z
?itt_task_begin@r1@detail@tbb@@YAXW4itt_domain_enum@d1@23@PEAX_K12W4string_resource_index@d0@23@@Z
?itt_task_end@r1@detail@tbb@@YAXW4itt_domain_enum@d1@23@@Z
?itt_set_sync_name@r1@detail@tbb@@YAXPEAXPEB_W@Z
?itt_metadata_str_add@r1@detail@tbb@@YAXW4itt_domain_enum@d1@23@PEAX_KW4string_resource_index@d0@23@PEBD@Z
?itt_relation_add@r1@detail@tbb@@YAXW4itt_domain_enum@d1@23@PEAX_KW4itt_relation@d0@23@12@Z
?itt_region_begin@r1@detail@tbb@@YAXW4itt_domain_enum@d1@23@PEAX_K12W4string_resource_index@d0@23@@Z
?itt_region_end@r1@detail@tbb@@YAXW4itt_domain_enum@d1@23@PEAX_K@Z
?itt_metadata_ptr_add@r1@detail@tbb@@YAXW4itt_domain_enum@d1@23@PEAX_KW4string_resource_index@d0@23@1@Z

; Allocators (tbb_allocator.cpp)
?cache_aligned_allocate@r1@detail@tbb@@YAPEAX_K@Z
?cache_aligned_deallocate@r1@detail@tbb@@YAXPEAX@Z
?cache_line_size@r1@detail@tbb@@YA_KXZ
?allocate_memory@r1@detail@tbb@@YAPEAX_K@Z
?deallocate_memory@r1@detail@tbb@@YAXPEAX@Z
?is_tbbmalloc_used@r1@detail@tbb@@YA_NXZ

; Small object pool (small_object_pool.cpp)
?allocate@r1@detail@tbb@@YAPEAXAEAPEAVsmall_object_pool@d1@23@_KAEBUexecution_data@523@@Z
?allocate@r1@detail@tbb@@YAPEAXAEAPEAVsmall_object_pool@d1@23@_K@Z
?deallocate@r1@detail@tbb@@YAXAEAVsmall_object_pool@d1@23@PEAX_KAEBUexecution_data@523@@Z
?deallocate@r1@detail@tbb@@YAXAEAVsmall_object_pool@d1@23@PEAX_K@Z

; Error handling (exception.cpp)
?throw_exception@r1@detail@tbb@@YAXW4exception_id@d0@23@@Z
?what@bad_last_alloc@r1@detail@tbb@@UEBAPEBDXZ
?what@user_abort@r1@detail@tbb@@UEBAPEBDXZ
?what@missing_wait@r1@detail@tbb@@UEBAPEBDXZ

; RTM Mutex (rtm_mutex.cpp)
?try_acquire@r1@detail@tbb@@YA_NAEAVrtm_mutex@d1@23@AEAVscoped_lock@4523@@Z
?acquire@r1@detail@tbb@@YAXAEAVrtm_mutex@d1@23@AEAVscoped_lock@4523@_N@Z
?release@r1@detail@tbb@@YAXAEAVscoped_lock@rtm_mutex@d1@23@@Z

; RTM RW Mutex (rtm_rw_mutex.cpp)
?acquire_writer@r1@detail@tbb@@YAXAEAVrtm_rw_mutex@d1@23@AEAVscoped_lock@4523@_N@Z
?acquire_reader@r1@detail@tbb@@YAXAEAVrtm_rw_mutex@d1@23@AEAVscoped_lock@4523@_N@Z
?upgrade@r1@detail@tbb@@YA_NAEAVscoped_lock@rtm_rw_mutex@d1@23@@Z
?downgrade@r1@detail@tbb@@YA_NAEAVscoped_lock@rtm_rw_mutex@d1@23@@Z
?try_acquire_writer@r1@detail@tbb@@YA_NAEAVrtm_rw_mutex@d1@23@AEAVscoped_lock@4523@@Z
?try_acquire_reader@r1@detail@tbb@@YA_NAEAVrtm_rw_mutex@d1@23@AEAVscoped_lock@4523@@Z
?release@r1@detail@tbb@@YAXAEAVscoped_lock@rtm_rw_mutex@d1@23@@Z

; Tasks and partitioners (task.cpp)
?suspend@r1@detail@tbb@@YAXP6AXPEAXPEAUsuspend_point_type@123@@Z0@Z
?resume@r1@detail@tbb@@YAXPEAUsuspend_point_type@123@@Z
?current_suspend_point@r1@detail@tbb@@YAPEAUsuspend_point_type@123@XZ
?notify_waiters@r1@detail@tbb@@YAX_K@Z

; Task dispatcher (task_dispatcher.cpp)
?spawn@r1@detail@tbb@@YAXAEAVtask@d1@23@AEAVtask_group_context@523@@Z
?spawn@r1@detail@tbb@@YAXAEAVtask@d1@23@AEAVtask_group_context@523@G@Z
?execute_and_wait@r1@detail@tbb@@YAXAEAVtask@d1@23@AEAVtask_group_context@523@AEAVwait_context@523@1@Z
?execution_slot@r1@detail@tbb@@YAGPEBUexecution_data@d1@23@@Z
?wait@r1@detail@tbb@@YAXAEAVwait_context@d1@23@AEAVtask_group_context@523@@Z
?submit@r1@detail@tbb@@YAXAEAVtask@d1@23@AEAVtask_group_context@523@PEAVarena@123@_K@Z
?current_context@r1@detail@tbb@@YAPEAVtask_group_context@d1@23@XZ

; Task group context (task_group_context.cpp)
?initialize@r1@detail@tbb@@YAXAEAVtask_group_context@d1@23@@Z
?destroy@r1@detail@tbb@@YAXAEAVtask_group_context@d1@23@@Z
?is_group_execution_cancelled@r1@detail@tbb@@YA_NAEAVtask_group_context@d1@23@@Z
?reset@r1@detail@tbb@@YAXAEAVtask_group_context@d1@23@@Z
?cancel_group_execution@r1@detail@tbb@@YA_NAEAVtask_group_context@d1@23@@Z
?capture_fp_settings@r1@detail@tbb@@YAXAEAVtask_group_context@d1@23@@Z

; Task arena (arena.cpp)
?max_concurrency@r1@detail@tbb@@YAHPEBVtask_arena_base@d1@23@@Z
?initialize@r1@detail@tbb@@YAXAEAVtask_arena_base@d1@23@@Z
?terminate@r1@detail@tbb@@YAXAEAVtask_arena_base@d1@23@@Z
?execute@r1@detail@tbb@@YAXAEAVtask_arena_base@d1@23@AEAVdelegate_base@523@@Z
?wait@r1@detail@tbb@@YAXAEAVtask_arena_base@d1@23@@Z
?attach@r1@detail@tbb@@YA_NAEAVtask_arena_base@d1@23@@Z
?isolate_within_arena@r1@detail@tbb@@YAXAEAVdelegate_base@d1@23@_J@Z
?enqueue@r1@detail@tbb@@YAXAEAVtask@d1@23@PEAVtask_arena_base@523@@Z
?enqueue@r1@detail@tbb@@YAXAEAVtask@d1@23@AEAVtask_group_context@523@PEAVtask_arena_base@523@@Z

; System topology parsing and threads pinning (governor.cpp)
?numa_node_count@r1@detail@tbb@@YAIXZ
?fill_numa_indices@r1@detail@tbb@@YAXPEAH@Z
?core_type_count@r1@detail@tbb@@YAI_J@Z
?fill_core_type_indices@r1@detail@tbb@@YAXPEAH_J@Z
?numa_default_concurrency@r1@detail@tbb@@YAHH@Z
?constraints_default_concurrency@r1@detail@tbb@@YAHAEBUconstraints@d1@23@_J@Z
?constraints_threads_per_core@r1@detail@tbb@@YAHAEBUconstraints@d1@23@_J@Z

; Observer (observer_proxy.cpp)
?observe@r1@detail@tbb@@YAXAEAVtask_scheduler_observer@d1@23@_N@Z

; Queuing RW Mutex (queuing_rw_mutex.cpp)
?construct@r1@detail@tbb@@YAXAEAVqueuing_rw_mutex@d1@23@@Z
?try_acquire@r1@detail@tbb@@YA_NAEAVqueuing_rw_mutex@d1@23@AEAVscoped_lock@4523@_N@Z
?acquire@r1@detail@tbb@@YAXAEAVqueuing_rw_mutex@d1@23@AEAVscoped_lock@4523@_N@Z
?release@r1@detail@tbb@@YAXAEAVscoped_lock@queuing_rw_mutex@d1@23@@Z
?upgrade_to_writer@r1@detail@tbb@@YA_NAEAVscoped_lock@queuing_rw_mutex@d1@23@@Z
?downgrade_to_reader@r1@detail@tbb@@YA_NAEAVscoped_lock@queuing_rw_mutex@d1@23@@Z
?is_writer@r1@detail@tbb@@YA_NAEBVscoped_lock@queuing_rw_mutex@d1@23@@Z

; Global control (global_control.cpp)
?global_control_active_value@r1@detail@tbb@@YA_KH@Z
?create@r1@detail@tbb@@YAXAEAVglobal_control@d1@23@@Z
?destroy@r1@detail@tbb@@YAXAEAVglobal_control@d1@23@@Z
?get@r1@detail@tbb@@YAXAEAVtask_scheduler_handle@d1@23@@Z
?finalize@r1@detail@tbb@@YA_NAEAVtask_scheduler_handle@d1@23@_J@Z

; Parallel pipeline (parallel_pipeline.cpp)
?set_end_of_input@r1@detail@tbb@@YAXAEAVbase_filter@d1@23@@Z
?parallel_pipeline@r1@detail@tbb@@YAXAEAVtask_group_context@d1@23@_KAEBVfilter_node@523@@Z

; Concurrent bounded queue (concurrent_bounded_queue.cpp)
?allocate_bounded_queue_rep@r1@detail@tbb@@YAPEAE_K@Z
?deallocate_bounded_queue_rep@r1@detail@tbb@@YAXPEAE_K@Z
?wait_bounded_queue_monitor@r1@detail@tbb@@YAXPEAVconcurrent_monitor@123@_K_JAEAVdelegate_base@d1@23@@Z
?abort_bounded_queue_monitors@r1@detail@tbb@@YAXPEAVconcurrent_monitor@123@@Z
?notify_bounded_queue_monitor@r1@detail@tbb@@YAXPEAVconcurrent_monitor@123@_K1@Z

; Concurrent monitor (address_waiter.cpp)
?wait_on_address@r1@detail@tbb@@YAXPEAXAEAVdelegate_base@d1@23@_K@Z
?notify_by_address@r1@detail@tbb@@YAXPEAX_K@Z
?notify_by_address_one@r1@detail@tbb@@YAXPEAX@Z
?notify_by_address_all@r1@detail@tbb@@YAXPEAX@Z

;; Versioning (version.cpp)
TBB_runtime_interface_version
TBB_runtime_version
