xref: /freebsd-src/contrib/llvm-project/openmp/runtime/src/include/omp_lib.F90.var (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1*0fca6ea1SDimitry Andric! include/omp_lib.f90.var
2*0fca6ea1SDimitry Andric
3*0fca6ea1SDimitry Andric!
4*0fca6ea1SDimitry Andric!//===----------------------------------------------------------------------===//
5*0fca6ea1SDimitry Andric!//
6*0fca6ea1SDimitry Andric!// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
7*0fca6ea1SDimitry Andric!// See https://llvm.org/LICENSE.txt for license information.
8*0fca6ea1SDimitry Andric!// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
9*0fca6ea1SDimitry Andric!//
10*0fca6ea1SDimitry Andric!//===----------------------------------------------------------------------===//
11*0fca6ea1SDimitry Andric!
12*0fca6ea1SDimitry Andric
13*0fca6ea1SDimitry Andric      module omp_lib_kinds
14*0fca6ea1SDimitry Andric
15*0fca6ea1SDimitry Andric        use, intrinsic :: iso_c_binding
16*0fca6ea1SDimitry Andric
17*0fca6ea1SDimitry Andric        ! Set PRIVATE by default to explicitly only export what is meant
18*0fca6ea1SDimitry Andric        ! to be exported by this MODULE.
19*0fca6ea1SDimitry Andric        private
20*0fca6ea1SDimitry Andric
21*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_integer_kind       = c_int
22*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_logical_kind       = 4
23*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_real_kind          = c_float
24*0fca6ea1SDimitry Andric        integer, parameter, public :: kmp_double_kind        = c_double
25*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_lock_kind          = c_intptr_t
26*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_nest_lock_kind     = c_intptr_t
27*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_sched_kind         = omp_integer_kind
28*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_proc_bind_kind     = omp_integer_kind
29*0fca6ea1SDimitry Andric        integer, parameter, public :: kmp_pointer_kind       = c_intptr_t
30*0fca6ea1SDimitry Andric        integer, parameter, public :: kmp_size_t_kind        = c_size_t
31*0fca6ea1SDimitry Andric        integer, parameter, public :: kmp_affinity_mask_kind = c_intptr_t
32*0fca6ea1SDimitry Andric        integer, parameter, public :: kmp_cancel_kind        = omp_integer_kind
33*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_sync_hint_kind     = omp_integer_kind
34*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_lock_hint_kind     = omp_sync_hint_kind
35*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_control_tool_kind  = omp_integer_kind
36*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_control_tool_result_kind = omp_integer_kind
37*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_allocator_handle_kind = c_intptr_t
38*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_memspace_handle_kind = c_intptr_t
39*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_alloctrait_key_kind = omp_integer_kind
40*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_alloctrait_val_kind = c_intptr_t
41*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_interop_kind = c_intptr_t
42*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_interop_fr_kind = omp_integer_kind
43*0fca6ea1SDimitry Andric
44*0fca6ea1SDimitry Andric        type omp_alloctrait
45*0fca6ea1SDimitry Andric          integer(kind=omp_alloctrait_key_kind) key
46*0fca6ea1SDimitry Andric          integer(kind=omp_alloctrait_val_kind) value
47*0fca6ea1SDimitry Andric        end type omp_alloctrait
48*0fca6ea1SDimitry Andric        public :: omp_alloctrait
49*0fca6ea1SDimitry Andric
50*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_pause_resource_kind = omp_integer_kind
51*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_depend_kind = c_intptr_t
52*0fca6ea1SDimitry Andric        integer, parameter, public :: omp_event_handle_kind = c_intptr_t
53*0fca6ea1SDimitry Andric
54*0fca6ea1SDimitry Andric      end module omp_lib_kinds
55*0fca6ea1SDimitry Andric
56*0fca6ea1SDimitry Andric      module omp_lib
57*0fca6ea1SDimitry Andric
58*0fca6ea1SDimitry Andric        use omp_lib_kinds
59*0fca6ea1SDimitry Andric
60*0fca6ea1SDimitry Andric        ! Set PRIVATE by default to explicitly only export what is meant
61*0fca6ea1SDimitry Andric        ! to be exported by this MODULE.
62*0fca6ea1SDimitry Andric        private
63*0fca6ea1SDimitry Andric
64*0fca6ea1SDimitry Andric        ! Re-export definitions in omp_lib_kinds
65*0fca6ea1SDimitry Andric        public :: omp_integer_kind
66*0fca6ea1SDimitry Andric        public :: omp_logical_kind
67*0fca6ea1SDimitry Andric        public :: omp_real_kind
68*0fca6ea1SDimitry Andric        public :: kmp_double_kind
69*0fca6ea1SDimitry Andric        public :: omp_lock_kind
70*0fca6ea1SDimitry Andric        public :: omp_nest_lock_kind
71*0fca6ea1SDimitry Andric        public :: omp_sched_kind
72*0fca6ea1SDimitry Andric        public :: omp_proc_bind_kind
73*0fca6ea1SDimitry Andric        public :: kmp_pointer_kind
74*0fca6ea1SDimitry Andric        public :: kmp_size_t_kind
75*0fca6ea1SDimitry Andric        public :: kmp_affinity_mask_kind
76*0fca6ea1SDimitry Andric        public :: kmp_cancel_kind
77*0fca6ea1SDimitry Andric        public :: omp_sync_hint_kind
78*0fca6ea1SDimitry Andric        public :: omp_lock_hint_kind
79*0fca6ea1SDimitry Andric        public :: omp_control_tool_kind
80*0fca6ea1SDimitry Andric        public :: omp_control_tool_result_kind
81*0fca6ea1SDimitry Andric        public :: omp_allocator_handle_kind
82*0fca6ea1SDimitry Andric        public :: omp_memspace_handle_kind
83*0fca6ea1SDimitry Andric        public :: omp_alloctrait_key_kind
84*0fca6ea1SDimitry Andric        public :: omp_alloctrait_val_kind
85*0fca6ea1SDimitry Andric        public :: omp_interop_kind
86*0fca6ea1SDimitry Andric        public :: omp_interop_fr_kind
87*0fca6ea1SDimitry Andric        public :: omp_alloctrait
88*0fca6ea1SDimitry Andric        public :: omp_pause_resource_kind
89*0fca6ea1SDimitry Andric        public :: omp_depend_kind
90*0fca6ea1SDimitry Andric        public :: omp_event_handle_kind
91*0fca6ea1SDimitry Andric
92*0fca6ea1SDimitry Andric        integer (kind=omp_integer_kind), parameter, public :: openmp_version    = @LIBOMP_OMP_YEAR_MONTH@
93*0fca6ea1SDimitry Andric        integer (kind=omp_integer_kind), parameter, public :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
94*0fca6ea1SDimitry Andric        integer (kind=omp_integer_kind), parameter, public :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
95*0fca6ea1SDimitry Andric        integer (kind=omp_integer_kind), parameter, public :: kmp_version_build = @LIBOMP_VERSION_BUILD@
96*0fca6ea1SDimitry Andric        character(*)               kmp_build_date
97*0fca6ea1SDimitry Andric        parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
98*0fca6ea1SDimitry Andric
99*0fca6ea1SDimitry Andric        integer(kind=omp_sched_kind), parameter, public :: omp_sched_static  = 1
100*0fca6ea1SDimitry Andric        integer(kind=omp_sched_kind), parameter, public :: omp_sched_dynamic = 2
101*0fca6ea1SDimitry Andric        integer(kind=omp_sched_kind), parameter, public :: omp_sched_guided  = 3
102*0fca6ea1SDimitry Andric        integer(kind=omp_sched_kind), parameter, public :: omp_sched_auto    = 4
103*0fca6ea1SDimitry Andric        integer(kind=omp_sched_kind), parameter, public :: omp_sched_monotonic = int(Z'80000000', kind=omp_sched_kind)
104*0fca6ea1SDimitry Andric
105*0fca6ea1SDimitry Andric        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_false = 0
106*0fca6ea1SDimitry Andric        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_true = 1
107*0fca6ea1SDimitry Andric        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_master = 2
108*0fca6ea1SDimitry Andric        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_close = 3
109*0fca6ea1SDimitry Andric        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_spread = 4
110*0fca6ea1SDimitry Andric
111*0fca6ea1SDimitry Andric        integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_parallel = 1
112*0fca6ea1SDimitry Andric        integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_loop = 2
113*0fca6ea1SDimitry Andric        integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_sections = 3
114*0fca6ea1SDimitry Andric        integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_taskgroup = 4
115*0fca6ea1SDimitry Andric
116*0fca6ea1SDimitry Andric        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_none           = 0
117*0fca6ea1SDimitry Andric        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_uncontended    = 1
118*0fca6ea1SDimitry Andric        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_contended      = 2
119*0fca6ea1SDimitry Andric        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_nonspeculative = 4
120*0fca6ea1SDimitry Andric        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_speculative    = 8
121*0fca6ea1SDimitry Andric        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_none = omp_sync_hint_none
122*0fca6ea1SDimitry Andric        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_uncontended = omp_sync_hint_uncontended
123*0fca6ea1SDimitry Andric        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_contended = omp_sync_hint_contended
124*0fca6ea1SDimitry Andric        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative
125*0fca6ea1SDimitry Andric        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_speculative = omp_sync_hint_speculative
126*0fca6ea1SDimitry Andric        integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_hle         = 65536
127*0fca6ea1SDimitry Andric        integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_rtm         = 131072
128*0fca6ea1SDimitry Andric        integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_adaptive    = 262144
129*0fca6ea1SDimitry Andric
130*0fca6ea1SDimitry Andric        integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_start = 1
131*0fca6ea1SDimitry Andric        integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_pause = 2
132*0fca6ea1SDimitry Andric        integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_flush = 3
133*0fca6ea1SDimitry Andric        integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_end = 4
134*0fca6ea1SDimitry Andric
135*0fca6ea1SDimitry Andric        integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_notool = -2
136*0fca6ea1SDimitry Andric        integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_nocallback = -1
137*0fca6ea1SDimitry Andric        integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_success = 0
138*0fca6ea1SDimitry Andric        integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_ignored = 1
139*0fca6ea1SDimitry Andric
140*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_sync_hint = 1
141*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_alignment = 2
142*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_access = 3
143*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pool_size = 4
144*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fallback = 5
145*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fb_data = 6
146*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pinned = 7
147*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_partition = 8
148*0fca6ea1SDimitry Andric
149*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default = -1
150*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_false = 0
151*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_true = 1
152*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_contended = 3
153*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_uncontended = 4
154*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_serialized = 5
155*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_sequential = omp_atv_serialized
156*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_private = 6
157*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_all = 7
158*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_thread = 8
159*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_pteam = 9
160*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_cgroup = 10
161*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default_mem_fb = 11
162*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_null_fb = 12
163*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_abort_fb = 13
164*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_allocator_fb = 14
165*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_environment = 15
166*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_nearest = 16
167*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_blocked = 17
168*0fca6ea1SDimitry Andric        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_interleaved = 18
169*0fca6ea1SDimitry Andric
170*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_null_allocator = 0
171*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_default_mem_alloc = 1
172*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_large_cap_mem_alloc = 2
173*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_const_mem_alloc = 3
174*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_high_bw_mem_alloc = 4
175*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_low_lat_mem_alloc = 5
176*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_cgroup_mem_alloc = 6
177*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_pteam_mem_alloc = 7
178*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_thread_mem_alloc = 8
179*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_host_mem_alloc = 100
180*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_shared_mem_alloc = 101
181*0fca6ea1SDimitry Andric        integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_device_mem_alloc = 102
182*0fca6ea1SDimitry Andric
183*0fca6ea1SDimitry Andric        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_default_mem_space = 0
184*0fca6ea1SDimitry Andric        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_large_cap_mem_space = 1
185*0fca6ea1SDimitry Andric        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_const_mem_space = 2
186*0fca6ea1SDimitry Andric        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_high_bw_mem_space = 3
187*0fca6ea1SDimitry Andric        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_low_lat_mem_space = 4
188*0fca6ea1SDimitry Andric        integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_host_mem_space = 100
189*0fca6ea1SDimitry Andric        integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_shared_mem_space = 101
190*0fca6ea1SDimitry Andric        integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_device_mem_space = 102
191*0fca6ea1SDimitry Andric
192*0fca6ea1SDimitry Andric        integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_resume = 0
193*0fca6ea1SDimitry Andric        integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_soft = 1
194*0fca6ea1SDimitry Andric        integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_hard = 2
195*0fca6ea1SDimitry Andric
196*0fca6ea1SDimitry Andric        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_cuda = 1
197*0fca6ea1SDimitry Andric        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_cuda_driver = 2
198*0fca6ea1SDimitry Andric        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_opencl = 3
199*0fca6ea1SDimitry Andric        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_sycl = 4
200*0fca6ea1SDimitry Andric        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_hip = 5
201*0fca6ea1SDimitry Andric        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_level_zero = 6
202*0fca6ea1SDimitry Andric        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_last = 7
203*0fca6ea1SDimitry Andric
204*0fca6ea1SDimitry Andric        integer (kind=omp_interop_kind), parameter, public :: omp_interop_none = 0
205*0fca6ea1SDimitry Andric
206*0fca6ea1SDimitry Andric        interface
207*0fca6ea1SDimitry Andric
208*0fca6ea1SDimitry Andric!         ***
209*0fca6ea1SDimitry Andric!         *** omp_* entry points
210*0fca6ea1SDimitry Andric!         ***
211*0fca6ea1SDimitry Andric
212*0fca6ea1SDimitry Andric          subroutine omp_set_num_threads(num_threads) bind(c)
213*0fca6ea1SDimitry Andric            use omp_lib_kinds
214*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: num_threads
215*0fca6ea1SDimitry Andric          end subroutine omp_set_num_threads
216*0fca6ea1SDimitry Andric
217*0fca6ea1SDimitry Andric          subroutine omp_set_dynamic(dynamic_threads) bind(c)
218*0fca6ea1SDimitry Andric            use omp_lib_kinds
219*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind), value :: dynamic_threads
220*0fca6ea1SDimitry Andric          end subroutine omp_set_dynamic
221*0fca6ea1SDimitry Andric
222*0fca6ea1SDimitry Andric          subroutine omp_set_nested(nested) bind(c)
223*0fca6ea1SDimitry Andric            use omp_lib_kinds
224*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind), value :: nested
225*0fca6ea1SDimitry Andric          end subroutine omp_set_nested
226*0fca6ea1SDimitry Andric
227*0fca6ea1SDimitry Andric          function omp_get_num_threads() bind(c)
228*0fca6ea1SDimitry Andric            use omp_lib_kinds
229*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_num_threads
230*0fca6ea1SDimitry Andric          end function omp_get_num_threads
231*0fca6ea1SDimitry Andric
232*0fca6ea1SDimitry Andric          function omp_get_max_threads() bind(c)
233*0fca6ea1SDimitry Andric            use omp_lib_kinds
234*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_max_threads
235*0fca6ea1SDimitry Andric          end function omp_get_max_threads
236*0fca6ea1SDimitry Andric
237*0fca6ea1SDimitry Andric          function omp_get_thread_num() bind(c)
238*0fca6ea1SDimitry Andric            use omp_lib_kinds
239*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_thread_num
240*0fca6ea1SDimitry Andric          end function omp_get_thread_num
241*0fca6ea1SDimitry Andric
242*0fca6ea1SDimitry Andric          function omp_get_num_procs() bind(c)
243*0fca6ea1SDimitry Andric            use omp_lib_kinds
244*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_num_procs
245*0fca6ea1SDimitry Andric          end function omp_get_num_procs
246*0fca6ea1SDimitry Andric
247*0fca6ea1SDimitry Andric          function omp_in_parallel() bind(c)
248*0fca6ea1SDimitry Andric            use omp_lib_kinds
249*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind) omp_in_parallel
250*0fca6ea1SDimitry Andric          end function omp_in_parallel
251*0fca6ea1SDimitry Andric
252*0fca6ea1SDimitry Andric          function omp_in_final() bind(c)
253*0fca6ea1SDimitry Andric            use omp_lib_kinds
254*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind) omp_in_final
255*0fca6ea1SDimitry Andric          end function omp_in_final
256*0fca6ea1SDimitry Andric
257*0fca6ea1SDimitry Andric          function omp_get_dynamic() bind(c)
258*0fca6ea1SDimitry Andric            use omp_lib_kinds
259*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind) omp_get_dynamic
260*0fca6ea1SDimitry Andric          end function omp_get_dynamic
261*0fca6ea1SDimitry Andric
262*0fca6ea1SDimitry Andric          function omp_get_nested() bind(c)
263*0fca6ea1SDimitry Andric            use omp_lib_kinds
264*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind) omp_get_nested
265*0fca6ea1SDimitry Andric          end function omp_get_nested
266*0fca6ea1SDimitry Andric
267*0fca6ea1SDimitry Andric          function omp_get_thread_limit() bind(c)
268*0fca6ea1SDimitry Andric            use omp_lib_kinds
269*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_thread_limit
270*0fca6ea1SDimitry Andric          end function omp_get_thread_limit
271*0fca6ea1SDimitry Andric
272*0fca6ea1SDimitry Andric          subroutine omp_set_max_active_levels(max_levels) bind(c)
273*0fca6ea1SDimitry Andric            use omp_lib_kinds
274*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: max_levels
275*0fca6ea1SDimitry Andric          end subroutine omp_set_max_active_levels
276*0fca6ea1SDimitry Andric
277*0fca6ea1SDimitry Andric          function omp_get_max_active_levels() bind(c)
278*0fca6ea1SDimitry Andric            use omp_lib_kinds
279*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_max_active_levels
280*0fca6ea1SDimitry Andric          end function omp_get_max_active_levels
281*0fca6ea1SDimitry Andric
282*0fca6ea1SDimitry Andric          function omp_get_level() bind(c)
283*0fca6ea1SDimitry Andric            use omp_lib_kinds
284*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_level
285*0fca6ea1SDimitry Andric          end function omp_get_level
286*0fca6ea1SDimitry Andric
287*0fca6ea1SDimitry Andric          function omp_get_active_level() bind(c)
288*0fca6ea1SDimitry Andric            use omp_lib_kinds
289*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_active_level
290*0fca6ea1SDimitry Andric          end function omp_get_active_level
291*0fca6ea1SDimitry Andric
292*0fca6ea1SDimitry Andric          function omp_get_ancestor_thread_num(level) bind(c)
293*0fca6ea1SDimitry Andric            use omp_lib_kinds
294*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
295*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: level
296*0fca6ea1SDimitry Andric          end function omp_get_ancestor_thread_num
297*0fca6ea1SDimitry Andric
298*0fca6ea1SDimitry Andric          function omp_get_team_size(level) bind(c)
299*0fca6ea1SDimitry Andric            use omp_lib_kinds
300*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_team_size
301*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: level
302*0fca6ea1SDimitry Andric          end function omp_get_team_size
303*0fca6ea1SDimitry Andric
304*0fca6ea1SDimitry Andric          subroutine omp_set_schedule(kind, chunk_size) bind(c)
305*0fca6ea1SDimitry Andric            use omp_lib_kinds
306*0fca6ea1SDimitry Andric            integer (kind=omp_sched_kind), value :: kind
307*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: chunk_size
308*0fca6ea1SDimitry Andric          end subroutine omp_set_schedule
309*0fca6ea1SDimitry Andric
310*0fca6ea1SDimitry Andric          subroutine omp_get_schedule(kind, chunk_size) bind(c)
311*0fca6ea1SDimitry Andric            use omp_lib_kinds
312*0fca6ea1SDimitry Andric            integer (kind=omp_sched_kind) kind
313*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) chunk_size
314*0fca6ea1SDimitry Andric          end subroutine omp_get_schedule
315*0fca6ea1SDimitry Andric
316*0fca6ea1SDimitry Andric          function omp_get_proc_bind() bind(c)
317*0fca6ea1SDimitry Andric            use omp_lib_kinds
318*0fca6ea1SDimitry Andric            integer (kind=omp_proc_bind_kind) omp_get_proc_bind
319*0fca6ea1SDimitry Andric          end function omp_get_proc_bind
320*0fca6ea1SDimitry Andric
321*0fca6ea1SDimitry Andric          function omp_get_num_places() bind(c)
322*0fca6ea1SDimitry Andric            use omp_lib_kinds
323*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_num_places
324*0fca6ea1SDimitry Andric          end function omp_get_num_places
325*0fca6ea1SDimitry Andric
326*0fca6ea1SDimitry Andric          function omp_get_place_num_procs(place_num) bind(c)
327*0fca6ea1SDimitry Andric            use omp_lib_kinds
328*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: place_num
329*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_place_num_procs
330*0fca6ea1SDimitry Andric          end function omp_get_place_num_procs
331*0fca6ea1SDimitry Andric
332*0fca6ea1SDimitry Andric          subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
333*0fca6ea1SDimitry Andric            use omp_lib_kinds
334*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: place_num
335*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) ids(*)
336*0fca6ea1SDimitry Andric          end subroutine omp_get_place_proc_ids
337*0fca6ea1SDimitry Andric
338*0fca6ea1SDimitry Andric          function omp_get_place_num() bind(c)
339*0fca6ea1SDimitry Andric            use omp_lib_kinds
340*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_place_num
341*0fca6ea1SDimitry Andric          end function omp_get_place_num
342*0fca6ea1SDimitry Andric
343*0fca6ea1SDimitry Andric          function omp_get_partition_num_places() bind(c)
344*0fca6ea1SDimitry Andric            use omp_lib_kinds
345*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_partition_num_places
346*0fca6ea1SDimitry Andric          end function omp_get_partition_num_places
347*0fca6ea1SDimitry Andric
348*0fca6ea1SDimitry Andric          subroutine omp_get_partition_place_nums(place_nums) bind(c)
349*0fca6ea1SDimitry Andric            use omp_lib_kinds
350*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) place_nums(*)
351*0fca6ea1SDimitry Andric          end subroutine omp_get_partition_place_nums
352*0fca6ea1SDimitry Andric
353*0fca6ea1SDimitry Andric          function omp_get_wtime() bind(c)
354*0fca6ea1SDimitry Andric            use omp_lib_kinds
355*0fca6ea1SDimitry Andric            real (kind=kmp_double_kind) omp_get_wtime
356*0fca6ea1SDimitry Andric          end function omp_get_wtime
357*0fca6ea1SDimitry Andric
358*0fca6ea1SDimitry Andric          function omp_get_wtick() bind(c)
359*0fca6ea1SDimitry Andric            use omp_lib_kinds
360*0fca6ea1SDimitry Andric            real (kind=kmp_double_kind) omp_get_wtick
361*0fca6ea1SDimitry Andric          end function omp_get_wtick
362*0fca6ea1SDimitry Andric
363*0fca6ea1SDimitry Andric          function omp_get_default_device() bind(c)
364*0fca6ea1SDimitry Andric            use omp_lib_kinds
365*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_default_device
366*0fca6ea1SDimitry Andric          end function omp_get_default_device
367*0fca6ea1SDimitry Andric
368*0fca6ea1SDimitry Andric          subroutine omp_set_default_device(device_num) bind(c)
369*0fca6ea1SDimitry Andric            use omp_lib_kinds
370*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: device_num
371*0fca6ea1SDimitry Andric          end subroutine omp_set_default_device
372*0fca6ea1SDimitry Andric
373*0fca6ea1SDimitry Andric          function omp_get_num_devices() bind(c)
374*0fca6ea1SDimitry Andric            use omp_lib_kinds
375*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_num_devices
376*0fca6ea1SDimitry Andric          end function omp_get_num_devices
377*0fca6ea1SDimitry Andric
378*0fca6ea1SDimitry Andric          function omp_get_num_teams() bind(c)
379*0fca6ea1SDimitry Andric            use omp_lib_kinds
380*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_num_teams
381*0fca6ea1SDimitry Andric          end function omp_get_num_teams
382*0fca6ea1SDimitry Andric
383*0fca6ea1SDimitry Andric          function omp_get_team_num() bind(c)
384*0fca6ea1SDimitry Andric            use omp_lib_kinds
385*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_team_num
386*0fca6ea1SDimitry Andric          end function omp_get_team_num
387*0fca6ea1SDimitry Andric
388*0fca6ea1SDimitry Andric          function omp_get_cancellation() bind(c)
389*0fca6ea1SDimitry Andric            use omp_lib_kinds
390*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_cancellation
391*0fca6ea1SDimitry Andric          end function omp_get_cancellation
392*0fca6ea1SDimitry Andric
393*0fca6ea1SDimitry Andric          function omp_is_initial_device() bind(c)
394*0fca6ea1SDimitry Andric            use omp_lib_kinds
395*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind) omp_is_initial_device
396*0fca6ea1SDimitry Andric          end function omp_is_initial_device
397*0fca6ea1SDimitry Andric
398*0fca6ea1SDimitry Andric          function omp_get_initial_device() bind(c)
399*0fca6ea1SDimitry Andric            use omp_lib_kinds
400*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_initial_device
401*0fca6ea1SDimitry Andric          end function omp_get_initial_device
402*0fca6ea1SDimitry Andric
403*0fca6ea1SDimitry Andric          function omp_get_device_num() bind(c)
404*0fca6ea1SDimitry Andric            use omp_lib_kinds
405*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_device_num
406*0fca6ea1SDimitry Andric          end function omp_get_device_num
407*0fca6ea1SDimitry Andric
408*0fca6ea1SDimitry Andric          function omp_pause_resource(kind, device_num) bind(c)
409*0fca6ea1SDimitry Andric            use omp_lib_kinds
410*0fca6ea1SDimitry Andric            integer (kind=omp_pause_resource_kind), value :: kind
411*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: device_num
412*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_pause_resource
413*0fca6ea1SDimitry Andric          end function omp_pause_resource
414*0fca6ea1SDimitry Andric
415*0fca6ea1SDimitry Andric          function omp_pause_resource_all(kind) bind(c)
416*0fca6ea1SDimitry Andric            use omp_lib_kinds
417*0fca6ea1SDimitry Andric            integer (kind=omp_pause_resource_kind), value :: kind
418*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_pause_resource_all
419*0fca6ea1SDimitry Andric          end function omp_pause_resource_all
420*0fca6ea1SDimitry Andric
421*0fca6ea1SDimitry Andric          function omp_get_supported_active_levels() bind(c)
422*0fca6ea1SDimitry Andric            use omp_lib_kinds
423*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_supported_active_levels
424*0fca6ea1SDimitry Andric          end function omp_get_supported_active_levels
425*0fca6ea1SDimitry Andric
426*0fca6ea1SDimitry Andric          subroutine omp_fulfill_event(event) bind(c)
427*0fca6ea1SDimitry Andric            use omp_lib_kinds
428*0fca6ea1SDimitry Andric            integer (kind=omp_event_handle_kind), value :: event
429*0fca6ea1SDimitry Andric          end subroutine omp_fulfill_event
430*0fca6ea1SDimitry Andric
431*0fca6ea1SDimitry Andric          subroutine omp_init_lock(svar) bind(c)
432*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
433*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
434*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_init_lock
435*0fca6ea1SDimitry Andric!DIR$ ENDIF
436*0fca6ea1SDimitry Andric#endif
437*0fca6ea1SDimitry Andric            use omp_lib_kinds
438*0fca6ea1SDimitry Andric            integer (kind=omp_lock_kind) svar
439*0fca6ea1SDimitry Andric          end subroutine omp_init_lock
440*0fca6ea1SDimitry Andric
441*0fca6ea1SDimitry Andric          subroutine omp_destroy_lock(svar) bind(c)
442*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
443*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
444*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_destroy_lock
445*0fca6ea1SDimitry Andric!DIR$ ENDIF
446*0fca6ea1SDimitry Andric#endif
447*0fca6ea1SDimitry Andric            use omp_lib_kinds
448*0fca6ea1SDimitry Andric            integer (kind=omp_lock_kind) svar
449*0fca6ea1SDimitry Andric          end subroutine omp_destroy_lock
450*0fca6ea1SDimitry Andric
451*0fca6ea1SDimitry Andric          subroutine omp_set_lock(svar) bind(c)
452*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
453*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
454*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_set_lock
455*0fca6ea1SDimitry Andric!DIR$ ENDIF
456*0fca6ea1SDimitry Andric#endif
457*0fca6ea1SDimitry Andric            use omp_lib_kinds
458*0fca6ea1SDimitry Andric            integer (kind=omp_lock_kind) svar
459*0fca6ea1SDimitry Andric          end subroutine omp_set_lock
460*0fca6ea1SDimitry Andric
461*0fca6ea1SDimitry Andric          subroutine omp_unset_lock(svar) bind(c)
462*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
463*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
464*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_unset_lock
465*0fca6ea1SDimitry Andric!DIR$ ENDIF
466*0fca6ea1SDimitry Andric#endif
467*0fca6ea1SDimitry Andric            use omp_lib_kinds
468*0fca6ea1SDimitry Andric            integer (kind=omp_lock_kind) svar
469*0fca6ea1SDimitry Andric          end subroutine omp_unset_lock
470*0fca6ea1SDimitry Andric
471*0fca6ea1SDimitry Andric          function omp_test_lock(svar) bind(c)
472*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
473*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
474*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_test_lock
475*0fca6ea1SDimitry Andric!DIR$ ENDIF
476*0fca6ea1SDimitry Andric#endif
477*0fca6ea1SDimitry Andric            use omp_lib_kinds
478*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind) omp_test_lock
479*0fca6ea1SDimitry Andric            integer (kind=omp_lock_kind) svar
480*0fca6ea1SDimitry Andric          end function omp_test_lock
481*0fca6ea1SDimitry Andric
482*0fca6ea1SDimitry Andric          subroutine omp_init_nest_lock(nvar) bind(c)
483*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
484*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
485*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_init_nest_lock
486*0fca6ea1SDimitry Andric!DIR$ ENDIF
487*0fca6ea1SDimitry Andric#endif
488*0fca6ea1SDimitry Andric            use omp_lib_kinds
489*0fca6ea1SDimitry Andric            integer (kind=omp_nest_lock_kind) nvar
490*0fca6ea1SDimitry Andric          end subroutine omp_init_nest_lock
491*0fca6ea1SDimitry Andric
492*0fca6ea1SDimitry Andric          subroutine omp_destroy_nest_lock(nvar) bind(c)
493*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
494*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
495*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
496*0fca6ea1SDimitry Andric!DIR$ ENDIF
497*0fca6ea1SDimitry Andric#endif
498*0fca6ea1SDimitry Andric            use omp_lib_kinds
499*0fca6ea1SDimitry Andric            integer (kind=omp_nest_lock_kind) nvar
500*0fca6ea1SDimitry Andric          end subroutine omp_destroy_nest_lock
501*0fca6ea1SDimitry Andric
502*0fca6ea1SDimitry Andric          subroutine omp_set_nest_lock(nvar) bind(c)
503*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
504*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
505*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_set_nest_lock
506*0fca6ea1SDimitry Andric!DIR$ ENDIF
507*0fca6ea1SDimitry Andric#endif
508*0fca6ea1SDimitry Andric            use omp_lib_kinds
509*0fca6ea1SDimitry Andric            integer (kind=omp_nest_lock_kind) nvar
510*0fca6ea1SDimitry Andric          end subroutine omp_set_nest_lock
511*0fca6ea1SDimitry Andric
512*0fca6ea1SDimitry Andric          subroutine omp_unset_nest_lock(nvar) bind(c)
513*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
514*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
515*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_unset_nest_lock
516*0fca6ea1SDimitry Andric!DIR$ ENDIF
517*0fca6ea1SDimitry Andric#endif
518*0fca6ea1SDimitry Andric            use omp_lib_kinds
519*0fca6ea1SDimitry Andric            integer (kind=omp_nest_lock_kind) nvar
520*0fca6ea1SDimitry Andric          end subroutine omp_unset_nest_lock
521*0fca6ea1SDimitry Andric
522*0fca6ea1SDimitry Andric          function omp_test_nest_lock(nvar) bind(c)
523*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER
524*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400)
525*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_test_nest_lock
526*0fca6ea1SDimitry Andric!DIR$ ENDIF
527*0fca6ea1SDimitry Andric#endif
528*0fca6ea1SDimitry Andric            use omp_lib_kinds
529*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_test_nest_lock
530*0fca6ea1SDimitry Andric            integer (kind=omp_nest_lock_kind) nvar
531*0fca6ea1SDimitry Andric          end function omp_test_nest_lock
532*0fca6ea1SDimitry Andric
533*0fca6ea1SDimitry Andric          function omp_get_max_task_priority() bind(c)
534*0fca6ea1SDimitry Andric            use omp_lib_kinds
535*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_max_task_priority
536*0fca6ea1SDimitry Andric          end function omp_get_max_task_priority
537*0fca6ea1SDimitry Andric
538*0fca6ea1SDimitry Andric          subroutine omp_init_lock_with_hint(svar, hint) bind(c)
539*0fca6ea1SDimitry Andric            use omp_lib_kinds
540*0fca6ea1SDimitry Andric            integer (kind=omp_lock_kind) svar
541*0fca6ea1SDimitry Andric            integer (kind=omp_lock_hint_kind), value :: hint
542*0fca6ea1SDimitry Andric          end subroutine omp_init_lock_with_hint
543*0fca6ea1SDimitry Andric
544*0fca6ea1SDimitry Andric          subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c)
545*0fca6ea1SDimitry Andric            use omp_lib_kinds
546*0fca6ea1SDimitry Andric            integer (kind=omp_nest_lock_kind) nvar
547*0fca6ea1SDimitry Andric            integer (kind=omp_lock_hint_kind), value :: hint
548*0fca6ea1SDimitry Andric          end subroutine omp_init_nest_lock_with_hint
549*0fca6ea1SDimitry Andric
550*0fca6ea1SDimitry Andric          function omp_control_tool(command, modifier, arg) bind(c)
551*0fca6ea1SDimitry Andric            use omp_lib_kinds
552*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_control_tool
553*0fca6ea1SDimitry Andric            integer (kind=omp_control_tool_kind), value :: command
554*0fca6ea1SDimitry Andric            integer (kind=omp_control_tool_kind), value :: modifier
555*0fca6ea1SDimitry Andric            integer (kind=kmp_pointer_kind), optional :: arg
556*0fca6ea1SDimitry Andric          end function omp_control_tool
557*0fca6ea1SDimitry Andric
558*0fca6ea1SDimitry Andric          function omp_init_allocator(memspace, ntraits, traits)
559*0fca6ea1SDimitry Andric            use omp_lib_kinds
560*0fca6ea1SDimitry Andric            integer (kind=omp_allocator_handle_kind) omp_init_allocator
561*0fca6ea1SDimitry Andric            integer (kind=omp_memspace_handle_kind) :: memspace
562*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) :: ntraits
563*0fca6ea1SDimitry Andric            type(omp_alloctrait), intent(in) :: traits(*)
564*0fca6ea1SDimitry Andric          end function omp_init_allocator
565*0fca6ea1SDimitry Andric
566*0fca6ea1SDimitry Andric          subroutine omp_destroy_allocator(allocator) bind(c)
567*0fca6ea1SDimitry Andric            use omp_lib_kinds
568*0fca6ea1SDimitry Andric            integer (kind=omp_allocator_handle_kind), value :: allocator
569*0fca6ea1SDimitry Andric          end subroutine omp_destroy_allocator
570*0fca6ea1SDimitry Andric
571*0fca6ea1SDimitry Andric          subroutine omp_set_default_allocator(allocator) bind(c)
572*0fca6ea1SDimitry Andric            use omp_lib_kinds
573*0fca6ea1SDimitry Andric            integer (kind=omp_allocator_handle_kind), value :: allocator
574*0fca6ea1SDimitry Andric          end subroutine omp_set_default_allocator
575*0fca6ea1SDimitry Andric
576*0fca6ea1SDimitry Andric          function omp_get_default_allocator() bind(c)
577*0fca6ea1SDimitry Andric            use omp_lib_kinds
578*0fca6ea1SDimitry Andric            integer (kind=omp_allocator_handle_kind) omp_get_default_allocator
579*0fca6ea1SDimitry Andric          end function omp_get_default_allocator
580*0fca6ea1SDimitry Andric
581*0fca6ea1SDimitry Andric          subroutine omp_set_affinity_format(format)
582*0fca6ea1SDimitry Andric            character (len=*) :: format
583*0fca6ea1SDimitry Andric          end subroutine omp_set_affinity_format
584*0fca6ea1SDimitry Andric
585*0fca6ea1SDimitry Andric          function omp_get_affinity_format(buffer)
586*0fca6ea1SDimitry Andric            use omp_lib_kinds
587*0fca6ea1SDimitry Andric            character (len=*) :: buffer
588*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind) :: omp_get_affinity_format
589*0fca6ea1SDimitry Andric          end function omp_get_affinity_format
590*0fca6ea1SDimitry Andric
591*0fca6ea1SDimitry Andric          subroutine omp_display_affinity(format)
592*0fca6ea1SDimitry Andric            character (len=*) :: format
593*0fca6ea1SDimitry Andric          end subroutine omp_display_affinity
594*0fca6ea1SDimitry Andric
595*0fca6ea1SDimitry Andric          function omp_capture_affinity(buffer, format)
596*0fca6ea1SDimitry Andric            use omp_lib_kinds
597*0fca6ea1SDimitry Andric            character (len=*) :: format
598*0fca6ea1SDimitry Andric            character (len=*) :: buffer
599*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind) :: omp_capture_affinity
600*0fca6ea1SDimitry Andric          end function omp_capture_affinity
601*0fca6ea1SDimitry Andric
602*0fca6ea1SDimitry Andric          subroutine omp_set_num_teams(num_teams) bind(c)
603*0fca6ea1SDimitry Andric            use omp_lib_kinds
604*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: num_teams
605*0fca6ea1SDimitry Andric          end subroutine omp_set_num_teams
606*0fca6ea1SDimitry Andric
607*0fca6ea1SDimitry Andric          function omp_get_max_teams() bind(c)
608*0fca6ea1SDimitry Andric            use omp_lib_kinds
609*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_max_teams
610*0fca6ea1SDimitry Andric          end function omp_get_max_teams
611*0fca6ea1SDimitry Andric
612*0fca6ea1SDimitry Andric          subroutine omp_set_teams_thread_limit(thread_limit) bind(c)
613*0fca6ea1SDimitry Andric            use omp_lib_kinds
614*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: thread_limit
615*0fca6ea1SDimitry Andric          end subroutine omp_set_teams_thread_limit
616*0fca6ea1SDimitry Andric
617*0fca6ea1SDimitry Andric          function omp_get_teams_thread_limit() bind(c)
618*0fca6ea1SDimitry Andric            use omp_lib_kinds
619*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) omp_get_teams_thread_limit
620*0fca6ea1SDimitry Andric          end function omp_get_teams_thread_limit
621*0fca6ea1SDimitry Andric
622*0fca6ea1SDimitry Andric          subroutine omp_display_env(verbose) bind(c)
623*0fca6ea1SDimitry Andric            use omp_lib_kinds
624*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind), value :: verbose
625*0fca6ea1SDimitry Andric          end subroutine omp_display_env
626*0fca6ea1SDimitry Andric
627*0fca6ea1SDimitry Andric          function omp_target_alloc(size, device_num) bind(c)
628*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
629*0fca6ea1SDimitry Andric            type(c_ptr) omp_target_alloc
630*0fca6ea1SDimitry Andric            integer(c_size_t), value :: size
631*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
632*0fca6ea1SDimitry Andric          end function omp_target_alloc
633*0fca6ea1SDimitry Andric
634*0fca6ea1SDimitry Andric          subroutine omp_target_free(device_ptr, device_num) bind(c)
635*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_int
636*0fca6ea1SDimitry Andric            type(c_ptr), value :: device_ptr
637*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
638*0fca6ea1SDimitry Andric          end subroutine omp_target_free
639*0fca6ea1SDimitry Andric
640*0fca6ea1SDimitry Andric          function omp_target_is_present(ptr, device_num) bind(c)
641*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_int
642*0fca6ea1SDimitry Andric            integer(c_int) omp_target_is_present
643*0fca6ea1SDimitry Andric            type(c_ptr), value :: ptr
644*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
645*0fca6ea1SDimitry Andric          end function omp_target_is_present
646*0fca6ea1SDimitry Andric
647*0fca6ea1SDimitry Andric          function omp_target_memcpy(dst, src, length, dst_offset, src_offset, &
648*0fca6ea1SDimitry Andric              dst_device_num, src_device_num) bind(c)
649*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
650*0fca6ea1SDimitry Andric            integer(c_int) omp_target_memcpy
651*0fca6ea1SDimitry Andric            type(c_ptr), value :: dst, src
652*0fca6ea1SDimitry Andric            integer(c_size_t), value :: length, dst_offset, src_offset
653*0fca6ea1SDimitry Andric            integer(c_int), value :: dst_device_num, src_device_num
654*0fca6ea1SDimitry Andric          end function omp_target_memcpy
655*0fca6ea1SDimitry Andric
656*0fca6ea1SDimitry Andric          function omp_target_memcpy_rect(dst, src, element_size, num_dims,    &
657*0fca6ea1SDimitry Andric              volume, dst_offsets, src_offsets, dst_dimensions,                &
658*0fca6ea1SDimitry Andric              src_dimensions, dst_device_num, src_device_num) bind(c)
659*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
660*0fca6ea1SDimitry Andric            integer(c_int) omp_target_memcpy_rect
661*0fca6ea1SDimitry Andric            type(c_ptr), value :: dst, src
662*0fca6ea1SDimitry Andric            integer(c_size_t), value :: element_size
663*0fca6ea1SDimitry Andric            integer(c_int), value :: num_dims, dst_device_num, src_device_num
664*0fca6ea1SDimitry Andric            integer(c_size_t), intent(in) :: volume(*), dst_offsets(*),        &
665*0fca6ea1SDimitry Andric                src_offsets(*), dst_dimensions(*), src_dimensions(*)
666*0fca6ea1SDimitry Andric          end function omp_target_memcpy_rect
667*0fca6ea1SDimitry Andric
668*0fca6ea1SDimitry Andric          function omp_target_memcpy_async(dst, src, length, dst_offset,       &
669*0fca6ea1SDimitry Andric              src_offset, dst_device_num, src_device_num, depobj_count,        &
670*0fca6ea1SDimitry Andric              depobj_list) bind(c)
671*0fca6ea1SDimitry Andric            use omp_lib_kinds
672*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
673*0fca6ea1SDimitry Andric            integer(c_int) omp_target_memcpy_async
674*0fca6ea1SDimitry Andric            type(c_ptr), value :: dst, src
675*0fca6ea1SDimitry Andric            integer(c_size_t), value :: length, dst_offset, src_offset
676*0fca6ea1SDimitry Andric            integer(c_int), value :: dst_device_num, src_device_num,           &
677*0fca6ea1SDimitry Andric                depobj_count
678*0fca6ea1SDimitry Andric            integer(omp_depend_kind), optional :: depobj_list(*)
679*0fca6ea1SDimitry Andric          end function omp_target_memcpy_async
680*0fca6ea1SDimitry Andric
681*0fca6ea1SDimitry Andric          function omp_target_memcpy_rect_async(dst, src, element_size,        &
682*0fca6ea1SDimitry Andric              num_dims, volume, dst_offsets, src_offsets, dst_dimensions,      &
683*0fca6ea1SDimitry Andric              src_dimensions, dst_device_num, src_device_num, depobj_count,    &
684*0fca6ea1SDimitry Andric              depobj_list) bind(c)
685*0fca6ea1SDimitry Andric            use omp_lib_kinds
686*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
687*0fca6ea1SDimitry Andric            integer(c_int) omp_target_memcpy_rect_async
688*0fca6ea1SDimitry Andric            type(c_ptr), value :: dst, src
689*0fca6ea1SDimitry Andric            integer(c_size_t), value :: element_size
690*0fca6ea1SDimitry Andric            integer(c_int), value :: num_dims, dst_device_num, src_device_num, &
691*0fca6ea1SDimitry Andric                depobj_count
692*0fca6ea1SDimitry Andric            integer(c_size_t), intent(in) :: volume(*), dst_offsets(*),        &
693*0fca6ea1SDimitry Andric                src_offsets(*), dst_dimensions(*), src_dimensions(*)
694*0fca6ea1SDimitry Andric            integer (omp_depend_kind), optional :: depobj_list(*)
695*0fca6ea1SDimitry Andric          end function omp_target_memcpy_rect_async
696*0fca6ea1SDimitry Andric
697*0fca6ea1SDimitry Andric          function omp_target_memset(ptr, val, count, device_num) bind(c)
698*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
699*0fca6ea1SDimitry Andric            type(c_ptr) :: omp_target_memset
700*0fca6ea1SDimitry Andric            type(c_ptr), value :: ptr
701*0fca6ea1SDimitry Andric            integer(c_int), value :: val
702*0fca6ea1SDimitry Andric            integer(c_size_t), value :: count
703*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
704*0fca6ea1SDimitry Andric          end function
705*0fca6ea1SDimitry Andric
706*0fca6ea1SDimitry Andric          function omp_target_memset_async(ptr, val, count, device_num, &
707*0fca6ea1SDimitry Andric                                           depobj_count, depobj_list) bind(c)
708*0fca6ea1SDimitry Andric            use omp_lib_kinds
709*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
710*0fca6ea1SDimitry Andric            type(c_ptr) :: omp_target_memset_async
711*0fca6ea1SDimitry Andric            type(c_ptr), value :: ptr
712*0fca6ea1SDimitry Andric            integer(c_int), value :: val
713*0fca6ea1SDimitry Andric            integer(c_size_t), value :: count
714*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
715*0fca6ea1SDimitry Andric            integer(c_int), value :: depobj_count
716*0fca6ea1SDimitry Andric            integer(omp_depend_kind), optional :: depobj_list(*)
717*0fca6ea1SDimitry Andric          end function
718*0fca6ea1SDimitry Andric
719*0fca6ea1SDimitry Andric          function omp_target_associate_ptr(host_ptr, device_ptr, size,        &
720*0fca6ea1SDimitry Andric              device_offset, device_num) bind(c)
721*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
722*0fca6ea1SDimitry Andric            integer(c_int) omp_target_associate_ptr
723*0fca6ea1SDimitry Andric            type(c_ptr), value :: host_ptr, device_ptr
724*0fca6ea1SDimitry Andric            integer(c_size_t), value :: size, device_offset
725*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
726*0fca6ea1SDimitry Andric          end function omp_target_associate_ptr
727*0fca6ea1SDimitry Andric
728*0fca6ea1SDimitry Andric          function omp_get_mapped_ptr(ptr, device_num) bind(c)
729*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_int
730*0fca6ea1SDimitry Andric            type(c_ptr) omp_get_mapped_ptr
731*0fca6ea1SDimitry Andric            type(c_ptr), value :: ptr
732*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
733*0fca6ea1SDimitry Andric          end function omp_get_mapped_ptr
734*0fca6ea1SDimitry Andric
735*0fca6ea1SDimitry Andric          function omp_target_disassociate_ptr(ptr, device_num) bind(c)
736*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only: c_ptr, c_int
737*0fca6ea1SDimitry Andric            integer(c_int) omp_target_disassociate_ptr
738*0fca6ea1SDimitry Andric            type(c_ptr), value :: ptr
739*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
740*0fca6ea1SDimitry Andric          end function omp_target_disassociate_ptr
741*0fca6ea1SDimitry Andric
742*0fca6ea1SDimitry Andric          function omp_target_is_accessible(ptr, size, device_num) bind(c)
743*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
744*0fca6ea1SDimitry Andric            integer(c_int) omp_target_is_accessible
745*0fca6ea1SDimitry Andric            type(c_ptr), value :: ptr
746*0fca6ea1SDimitry Andric            integer(c_size_t), value :: size
747*0fca6ea1SDimitry Andric            integer(c_int), value :: device_num
748*0fca6ea1SDimitry Andric          end function omp_target_is_accessible
749*0fca6ea1SDimitry Andric
750*0fca6ea1SDimitry Andric          function omp_alloc(size, allocator) bind(c)
751*0fca6ea1SDimitry Andric            use omp_lib_kinds
752*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
753*0fca6ea1SDimitry Andric            type(c_ptr) omp_alloc
754*0fca6ea1SDimitry Andric            integer(c_size_t), value :: size
755*0fca6ea1SDimitry Andric            integer(omp_allocator_handle_kind), value :: allocator
756*0fca6ea1SDimitry Andric          end function omp_alloc
757*0fca6ea1SDimitry Andric
758*0fca6ea1SDimitry Andric          function omp_aligned_alloc(alignment, size, allocator) bind(c)
759*0fca6ea1SDimitry Andric            use omp_lib_kinds
760*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
761*0fca6ea1SDimitry Andric            type(c_ptr) omp_aligned_alloc
762*0fca6ea1SDimitry Andric            integer(c_size_t), value :: alignment, size
763*0fca6ea1SDimitry Andric            integer(omp_allocator_handle_kind), value :: allocator
764*0fca6ea1SDimitry Andric          end function omp_aligned_alloc
765*0fca6ea1SDimitry Andric
766*0fca6ea1SDimitry Andric          function omp_calloc(nmemb, size, allocator) bind(c)
767*0fca6ea1SDimitry Andric            use omp_lib_kinds
768*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
769*0fca6ea1SDimitry Andric            type(c_ptr) omp_calloc
770*0fca6ea1SDimitry Andric            integer(c_size_t), value :: nmemb, size
771*0fca6ea1SDimitry Andric            integer(omp_allocator_handle_kind), value :: allocator
772*0fca6ea1SDimitry Andric          end function omp_calloc
773*0fca6ea1SDimitry Andric
774*0fca6ea1SDimitry Andric          function omp_aligned_calloc(alignment, nmemb, size, allocator) bind(c)
775*0fca6ea1SDimitry Andric            use omp_lib_kinds
776*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
777*0fca6ea1SDimitry Andric            type(c_ptr) omp_aligned_calloc
778*0fca6ea1SDimitry Andric            integer(c_size_t), value :: alignment, nmemb, size
779*0fca6ea1SDimitry Andric            integer(omp_allocator_handle_kind), value :: allocator
780*0fca6ea1SDimitry Andric          end function omp_aligned_calloc
781*0fca6ea1SDimitry Andric
782*0fca6ea1SDimitry Andric          function omp_realloc(ptr, size, allocator, free_allocator) bind(c)
783*0fca6ea1SDimitry Andric            use omp_lib_kinds
784*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
785*0fca6ea1SDimitry Andric            type(c_ptr) omp_realloc
786*0fca6ea1SDimitry Andric            type(c_ptr), value :: ptr
787*0fca6ea1SDimitry Andric            integer(c_size_t), value :: size
788*0fca6ea1SDimitry Andric            integer(omp_allocator_handle_kind), value :: allocator
789*0fca6ea1SDimitry Andric            integer(omp_allocator_handle_kind), value :: free_allocator
790*0fca6ea1SDimitry Andric          end function omp_realloc
791*0fca6ea1SDimitry Andric
792*0fca6ea1SDimitry Andric          subroutine omp_free(ptr, allocator) bind(c)
793*0fca6ea1SDimitry Andric            use omp_lib_kinds
794*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding, only : c_ptr
795*0fca6ea1SDimitry Andric            type(c_ptr), value :: ptr
796*0fca6ea1SDimitry Andric            integer(omp_allocator_handle_kind), value :: allocator
797*0fca6ea1SDimitry Andric          end subroutine omp_free
798*0fca6ea1SDimitry Andric
799*0fca6ea1SDimitry Andric          function omp_in_explicit_task() bind(c)
800*0fca6ea1SDimitry Andric            use omp_lib_kinds
801*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind) omp_in_explicit_task
802*0fca6ea1SDimitry Andric          end function omp_in_explicit_task
803*0fca6ea1SDimitry Andric
804*0fca6ea1SDimitry Andric!         ***
805*0fca6ea1SDimitry Andric!         *** kmp_* entry points
806*0fca6ea1SDimitry Andric!         ***
807*0fca6ea1SDimitry Andric
808*0fca6ea1SDimitry Andric          subroutine kmp_set_stacksize(size) bind(c)
809*0fca6ea1SDimitry Andric            use omp_lib_kinds
810*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: size
811*0fca6ea1SDimitry Andric          end subroutine kmp_set_stacksize
812*0fca6ea1SDimitry Andric
813*0fca6ea1SDimitry Andric          subroutine kmp_set_stacksize_s(size) bind(c)
814*0fca6ea1SDimitry Andric            use omp_lib_kinds
815*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind), value :: size
816*0fca6ea1SDimitry Andric          end subroutine kmp_set_stacksize_s
817*0fca6ea1SDimitry Andric
818*0fca6ea1SDimitry Andric          subroutine kmp_set_blocktime(msec) bind(c)
819*0fca6ea1SDimitry Andric            use omp_lib_kinds
820*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: msec
821*0fca6ea1SDimitry Andric          end subroutine kmp_set_blocktime
822*0fca6ea1SDimitry Andric
823*0fca6ea1SDimitry Andric          subroutine kmp_set_library_serial() bind(c)
824*0fca6ea1SDimitry Andric          end subroutine kmp_set_library_serial
825*0fca6ea1SDimitry Andric
826*0fca6ea1SDimitry Andric          subroutine kmp_set_library_turnaround() bind(c)
827*0fca6ea1SDimitry Andric          end subroutine kmp_set_library_turnaround
828*0fca6ea1SDimitry Andric
829*0fca6ea1SDimitry Andric          subroutine kmp_set_library_throughput() bind(c)
830*0fca6ea1SDimitry Andric          end subroutine kmp_set_library_throughput
831*0fca6ea1SDimitry Andric
832*0fca6ea1SDimitry Andric          subroutine kmp_set_library(libnum) bind(c)
833*0fca6ea1SDimitry Andric            use omp_lib_kinds
834*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: libnum
835*0fca6ea1SDimitry Andric          end subroutine kmp_set_library
836*0fca6ea1SDimitry Andric
837*0fca6ea1SDimitry Andric          subroutine kmp_set_defaults(string) bind(c)
838*0fca6ea1SDimitry Andric            use, intrinsic :: iso_c_binding
839*0fca6ea1SDimitry Andric            character (kind=c_char) :: string(*)
840*0fca6ea1SDimitry Andric          end subroutine kmp_set_defaults
841*0fca6ea1SDimitry Andric
842*0fca6ea1SDimitry Andric          function kmp_get_stacksize() bind(c)
843*0fca6ea1SDimitry Andric            use omp_lib_kinds
844*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_get_stacksize
845*0fca6ea1SDimitry Andric          end function kmp_get_stacksize
846*0fca6ea1SDimitry Andric
847*0fca6ea1SDimitry Andric          function kmp_get_stacksize_s() bind(c)
848*0fca6ea1SDimitry Andric            use omp_lib_kinds
849*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
850*0fca6ea1SDimitry Andric          end function kmp_get_stacksize_s
851*0fca6ea1SDimitry Andric
852*0fca6ea1SDimitry Andric          function kmp_get_blocktime() bind(c)
853*0fca6ea1SDimitry Andric            use omp_lib_kinds
854*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_get_blocktime
855*0fca6ea1SDimitry Andric          end function kmp_get_blocktime
856*0fca6ea1SDimitry Andric
857*0fca6ea1SDimitry Andric          function kmp_get_library() bind(c)
858*0fca6ea1SDimitry Andric            use omp_lib_kinds
859*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_get_library
860*0fca6ea1SDimitry Andric          end function kmp_get_library
861*0fca6ea1SDimitry Andric
862*0fca6ea1SDimitry Andric          subroutine kmp_set_disp_num_buffers(num) bind(c)
863*0fca6ea1SDimitry Andric            use omp_lib_kinds
864*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: num
865*0fca6ea1SDimitry Andric          end subroutine kmp_set_disp_num_buffers
866*0fca6ea1SDimitry Andric
867*0fca6ea1SDimitry Andric          function kmp_set_affinity(mask) bind(c)
868*0fca6ea1SDimitry Andric            use omp_lib_kinds
869*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_set_affinity
870*0fca6ea1SDimitry Andric            integer (kind=kmp_affinity_mask_kind) mask
871*0fca6ea1SDimitry Andric          end function kmp_set_affinity
872*0fca6ea1SDimitry Andric
873*0fca6ea1SDimitry Andric          function kmp_get_affinity(mask) bind(c)
874*0fca6ea1SDimitry Andric            use omp_lib_kinds
875*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_get_affinity
876*0fca6ea1SDimitry Andric            integer (kind=kmp_affinity_mask_kind) mask
877*0fca6ea1SDimitry Andric          end function kmp_get_affinity
878*0fca6ea1SDimitry Andric
879*0fca6ea1SDimitry Andric          function kmp_get_affinity_max_proc() bind(c)
880*0fca6ea1SDimitry Andric            use omp_lib_kinds
881*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
882*0fca6ea1SDimitry Andric          end function kmp_get_affinity_max_proc
883*0fca6ea1SDimitry Andric
884*0fca6ea1SDimitry Andric          subroutine kmp_create_affinity_mask(mask) bind(c)
885*0fca6ea1SDimitry Andric            use omp_lib_kinds
886*0fca6ea1SDimitry Andric            integer (kind=kmp_affinity_mask_kind) mask
887*0fca6ea1SDimitry Andric          end subroutine kmp_create_affinity_mask
888*0fca6ea1SDimitry Andric
889*0fca6ea1SDimitry Andric          subroutine kmp_destroy_affinity_mask(mask) bind(c)
890*0fca6ea1SDimitry Andric            use omp_lib_kinds
891*0fca6ea1SDimitry Andric            integer (kind=kmp_affinity_mask_kind) mask
892*0fca6ea1SDimitry Andric          end subroutine kmp_destroy_affinity_mask
893*0fca6ea1SDimitry Andric
894*0fca6ea1SDimitry Andric          function kmp_set_affinity_mask_proc(proc, mask) bind(c)
895*0fca6ea1SDimitry Andric            use omp_lib_kinds
896*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
897*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: proc
898*0fca6ea1SDimitry Andric            integer (kind=kmp_affinity_mask_kind) mask
899*0fca6ea1SDimitry Andric          end function kmp_set_affinity_mask_proc
900*0fca6ea1SDimitry Andric
901*0fca6ea1SDimitry Andric          function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
902*0fca6ea1SDimitry Andric            use omp_lib_kinds
903*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
904*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: proc
905*0fca6ea1SDimitry Andric            integer (kind=kmp_affinity_mask_kind) mask
906*0fca6ea1SDimitry Andric          end function kmp_unset_affinity_mask_proc
907*0fca6ea1SDimitry Andric
908*0fca6ea1SDimitry Andric          function kmp_get_affinity_mask_proc(proc, mask) bind(c)
909*0fca6ea1SDimitry Andric            use omp_lib_kinds
910*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
911*0fca6ea1SDimitry Andric            integer (kind=omp_integer_kind), value :: proc
912*0fca6ea1SDimitry Andric            integer (kind=kmp_affinity_mask_kind) mask
913*0fca6ea1SDimitry Andric          end function kmp_get_affinity_mask_proc
914*0fca6ea1SDimitry Andric
915*0fca6ea1SDimitry Andric          function kmp_malloc(size) bind(c)
916*0fca6ea1SDimitry Andric            use omp_lib_kinds
917*0fca6ea1SDimitry Andric            integer (kind=kmp_pointer_kind) kmp_malloc
918*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind), value :: size
919*0fca6ea1SDimitry Andric          end function kmp_malloc
920*0fca6ea1SDimitry Andric
921*0fca6ea1SDimitry Andric          function kmp_aligned_malloc(size, alignment) bind(c)
922*0fca6ea1SDimitry Andric            use omp_lib_kinds
923*0fca6ea1SDimitry Andric            integer (kind=kmp_pointer_kind) kmp_aligned_malloc
924*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind), value :: size
925*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind), value :: alignment
926*0fca6ea1SDimitry Andric          end function kmp_aligned_malloc
927*0fca6ea1SDimitry Andric
928*0fca6ea1SDimitry Andric          function kmp_calloc(nelem, elsize) bind(c)
929*0fca6ea1SDimitry Andric            use omp_lib_kinds
930*0fca6ea1SDimitry Andric            integer (kind=kmp_pointer_kind) kmp_calloc
931*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind), value :: nelem
932*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind), value :: elsize
933*0fca6ea1SDimitry Andric          end function kmp_calloc
934*0fca6ea1SDimitry Andric
935*0fca6ea1SDimitry Andric          function kmp_realloc(ptr, size) bind(c)
936*0fca6ea1SDimitry Andric            use omp_lib_kinds
937*0fca6ea1SDimitry Andric            integer (kind=kmp_pointer_kind) kmp_realloc
938*0fca6ea1SDimitry Andric            integer (kind=kmp_pointer_kind), value :: ptr
939*0fca6ea1SDimitry Andric            integer (kind=kmp_size_t_kind), value :: size
940*0fca6ea1SDimitry Andric          end function kmp_realloc
941*0fca6ea1SDimitry Andric
942*0fca6ea1SDimitry Andric          subroutine kmp_free(ptr) bind(c)
943*0fca6ea1SDimitry Andric            use omp_lib_kinds
944*0fca6ea1SDimitry Andric            integer (kind=kmp_pointer_kind), value :: ptr
945*0fca6ea1SDimitry Andric          end subroutine kmp_free
946*0fca6ea1SDimitry Andric
947*0fca6ea1SDimitry Andric          subroutine kmp_set_warnings_on() bind(c)
948*0fca6ea1SDimitry Andric          end subroutine kmp_set_warnings_on
949*0fca6ea1SDimitry Andric
950*0fca6ea1SDimitry Andric          subroutine kmp_set_warnings_off() bind(c)
951*0fca6ea1SDimitry Andric          end subroutine kmp_set_warnings_off
952*0fca6ea1SDimitry Andric
953*0fca6ea1SDimitry Andric          function kmp_get_cancellation_status(cancelkind) bind(c)
954*0fca6ea1SDimitry Andric            use omp_lib_kinds
955*0fca6ea1SDimitry Andric            integer (kind=kmp_cancel_kind), value :: cancelkind
956*0fca6ea1SDimitry Andric            logical (kind=omp_logical_kind) kmp_get_cancellation_status
957*0fca6ea1SDimitry Andric          end function kmp_get_cancellation_status
958*0fca6ea1SDimitry Andric
959*0fca6ea1SDimitry Andric        end interface
960*0fca6ea1SDimitry Andric
961*0fca6ea1SDimitry Andric        ! make the above routine definitions public
962*0fca6ea1SDimitry Andric        public :: omp_set_num_threads
963*0fca6ea1SDimitry Andric        public :: omp_set_dynamic
964*0fca6ea1SDimitry Andric        public :: omp_set_nested
965*0fca6ea1SDimitry Andric        public :: omp_get_num_threads
966*0fca6ea1SDimitry Andric        public :: omp_get_max_threads
967*0fca6ea1SDimitry Andric        public :: omp_get_thread_num
968*0fca6ea1SDimitry Andric        public :: omp_get_num_procs
969*0fca6ea1SDimitry Andric        public :: omp_in_parallel
970*0fca6ea1SDimitry Andric        public :: omp_in_final
971*0fca6ea1SDimitry Andric        public :: omp_get_dynamic
972*0fca6ea1SDimitry Andric        public :: omp_get_nested
973*0fca6ea1SDimitry Andric        public :: omp_get_thread_limit
974*0fca6ea1SDimitry Andric        public :: omp_set_max_active_levels
975*0fca6ea1SDimitry Andric        public :: omp_get_max_active_levels
976*0fca6ea1SDimitry Andric        public :: omp_get_level
977*0fca6ea1SDimitry Andric        public :: omp_get_active_level
978*0fca6ea1SDimitry Andric        public :: omp_get_ancestor_thread_num
979*0fca6ea1SDimitry Andric        public :: omp_get_team_size
980*0fca6ea1SDimitry Andric        public :: omp_set_schedule
981*0fca6ea1SDimitry Andric        public :: omp_get_schedule
982*0fca6ea1SDimitry Andric        public :: omp_get_proc_bind
983*0fca6ea1SDimitry Andric        public :: omp_get_num_places
984*0fca6ea1SDimitry Andric        public :: omp_get_place_num_procs
985*0fca6ea1SDimitry Andric        public :: omp_get_place_proc_ids
986*0fca6ea1SDimitry Andric        public :: omp_get_place_num
987*0fca6ea1SDimitry Andric        public :: omp_get_partition_num_places
988*0fca6ea1SDimitry Andric        public :: omp_get_partition_place_nums
989*0fca6ea1SDimitry Andric        public :: omp_get_wtime
990*0fca6ea1SDimitry Andric        public :: omp_get_wtick
991*0fca6ea1SDimitry Andric        public :: omp_get_default_device
992*0fca6ea1SDimitry Andric        public :: omp_set_default_device
993*0fca6ea1SDimitry Andric        public :: omp_get_num_devices
994*0fca6ea1SDimitry Andric        public :: omp_get_num_teams
995*0fca6ea1SDimitry Andric        public :: omp_get_team_num
996*0fca6ea1SDimitry Andric        public :: omp_get_cancellation
997*0fca6ea1SDimitry Andric        public :: omp_is_initial_device
998*0fca6ea1SDimitry Andric        public :: omp_get_initial_device
999*0fca6ea1SDimitry Andric        public :: omp_get_device_num
1000*0fca6ea1SDimitry Andric        public :: omp_pause_resource
1001*0fca6ea1SDimitry Andric        public :: omp_pause_resource_all
1002*0fca6ea1SDimitry Andric        public :: omp_get_supported_active_levels
1003*0fca6ea1SDimitry Andric        public :: omp_fulfill_event
1004*0fca6ea1SDimitry Andric        public :: omp_init_lock
1005*0fca6ea1SDimitry Andric        public :: omp_destroy_lock
1006*0fca6ea1SDimitry Andric        public :: omp_set_lock
1007*0fca6ea1SDimitry Andric        public :: omp_unset_lock
1008*0fca6ea1SDimitry Andric        public :: omp_test_lock
1009*0fca6ea1SDimitry Andric        public :: omp_init_nest_lock
1010*0fca6ea1SDimitry Andric        public :: omp_destroy_nest_lock
1011*0fca6ea1SDimitry Andric        public :: omp_set_nest_lock
1012*0fca6ea1SDimitry Andric        public :: omp_unset_nest_lock
1013*0fca6ea1SDimitry Andric        public :: omp_test_nest_lock
1014*0fca6ea1SDimitry Andric        public :: omp_get_max_task_priority
1015*0fca6ea1SDimitry Andric        public :: omp_init_lock_with_hint
1016*0fca6ea1SDimitry Andric        public :: omp_init_nest_lock_with_hint
1017*0fca6ea1SDimitry Andric        public :: omp_control_tool
1018*0fca6ea1SDimitry Andric        public :: omp_init_allocator
1019*0fca6ea1SDimitry Andric        public :: omp_destroy_allocator
1020*0fca6ea1SDimitry Andric        public :: omp_set_default_allocator
1021*0fca6ea1SDimitry Andric        public :: omp_get_default_allocator
1022*0fca6ea1SDimitry Andric        public :: omp_set_affinity_format
1023*0fca6ea1SDimitry Andric        public :: omp_get_affinity_format
1024*0fca6ea1SDimitry Andric        public :: omp_display_affinity
1025*0fca6ea1SDimitry Andric        public :: omp_capture_affinity
1026*0fca6ea1SDimitry Andric        public :: omp_set_num_teams
1027*0fca6ea1SDimitry Andric        public :: omp_get_max_teams
1028*0fca6ea1SDimitry Andric        public :: omp_set_teams_thread_limit
1029*0fca6ea1SDimitry Andric        public :: omp_get_teams_thread_limit
1030*0fca6ea1SDimitry Andric        public :: omp_display_env
1031*0fca6ea1SDimitry Andric        public :: omp_target_alloc
1032*0fca6ea1SDimitry Andric        public :: omp_target_free
1033*0fca6ea1SDimitry Andric        public :: omp_target_is_present
1034*0fca6ea1SDimitry Andric        public :: omp_target_memcpy
1035*0fca6ea1SDimitry Andric        public :: omp_target_memcpy_rect
1036*0fca6ea1SDimitry Andric        public :: omp_target_memcpy_async
1037*0fca6ea1SDimitry Andric        public :: omp_target_memcpy_rect_async
1038*0fca6ea1SDimitry Andric        public :: omp_target_memset
1039*0fca6ea1SDimitry Andric        public :: omp_target_memset_async
1040*0fca6ea1SDimitry Andric        public :: omp_target_associate_ptr
1041*0fca6ea1SDimitry Andric        public :: omp_get_mapped_ptr
1042*0fca6ea1SDimitry Andric        public :: omp_target_disassociate_ptr
1043*0fca6ea1SDimitry Andric        public :: omp_target_is_accessible
1044*0fca6ea1SDimitry Andric        public :: omp_alloc
1045*0fca6ea1SDimitry Andric        public :: omp_aligned_alloc
1046*0fca6ea1SDimitry Andric        public :: omp_calloc
1047*0fca6ea1SDimitry Andric        public :: omp_aligned_calloc
1048*0fca6ea1SDimitry Andric        public :: omp_realloc
1049*0fca6ea1SDimitry Andric        public :: omp_free
1050*0fca6ea1SDimitry Andric        public :: omp_in_explicit_task
1051*0fca6ea1SDimitry Andric        public :: kmp_set_stacksize
1052*0fca6ea1SDimitry Andric        public :: kmp_set_stacksize_s
1053*0fca6ea1SDimitry Andric        public :: kmp_set_blocktime
1054*0fca6ea1SDimitry Andric        public :: kmp_set_library_serial
1055*0fca6ea1SDimitry Andric        public :: kmp_set_library_turnaround
1056*0fca6ea1SDimitry Andric        public :: kmp_set_library_throughput
1057*0fca6ea1SDimitry Andric        public :: kmp_set_library
1058*0fca6ea1SDimitry Andric        public :: kmp_set_defaults
1059*0fca6ea1SDimitry Andric        public :: kmp_get_stacksize
1060*0fca6ea1SDimitry Andric        public :: kmp_get_stacksize_s
1061*0fca6ea1SDimitry Andric        public :: kmp_get_blocktime
1062*0fca6ea1SDimitry Andric        public :: kmp_get_library
1063*0fca6ea1SDimitry Andric        public :: kmp_set_disp_num_buffers
1064*0fca6ea1SDimitry Andric        public :: kmp_set_affinity
1065*0fca6ea1SDimitry Andric        public :: kmp_get_affinity
1066*0fca6ea1SDimitry Andric        public :: kmp_get_affinity_max_proc
1067*0fca6ea1SDimitry Andric        public :: kmp_create_affinity_mask
1068*0fca6ea1SDimitry Andric        public :: kmp_destroy_affinity_mask
1069*0fca6ea1SDimitry Andric        public :: kmp_set_affinity_mask_proc
1070*0fca6ea1SDimitry Andric        public :: kmp_unset_affinity_mask_proc
1071*0fca6ea1SDimitry Andric        public :: kmp_get_affinity_mask_proc
1072*0fca6ea1SDimitry Andric        public :: kmp_malloc
1073*0fca6ea1SDimitry Andric        public :: kmp_aligned_malloc
1074*0fca6ea1SDimitry Andric        public :: kmp_calloc
1075*0fca6ea1SDimitry Andric        public :: kmp_realloc
1076*0fca6ea1SDimitry Andric        public :: kmp_free
1077*0fca6ea1SDimitry Andric        public :: kmp_set_warnings_on
1078*0fca6ea1SDimitry Andric        public :: kmp_set_warnings_off
1079*0fca6ea1SDimitry Andric        public :: kmp_get_cancellation_status
1080*0fca6ea1SDimitry Andric
1081*0fca6ea1SDimitry Andric      end module omp_lib
1082