1! include/30/omp_lib.f90.var
2
3!
4!//===----------------------------------------------------------------------===//
5!//
6!//                     The LLVM Compiler Infrastructure
7!//
8!// This file is dual licensed under the MIT and the University of Illinois Open
9!// Source Licenses. See LICENSE.txt for details.
10!//
11!//===----------------------------------------------------------------------===//
12!
13
14      module omp_lib_kinds
15
16        use, intrinsic :: iso_c_binding
17
18        integer, parameter :: omp_integer_kind       = c_int
19        integer, parameter :: omp_logical_kind       = 4
20        integer, parameter :: omp_real_kind          = c_float
21        integer, parameter :: kmp_double_kind        = c_double
22        integer, parameter :: omp_lock_kind          = c_intptr_t
23        integer, parameter :: omp_nest_lock_kind     = c_intptr_t
24        integer, parameter :: omp_sched_kind         = omp_integer_kind
25        integer, parameter :: kmp_pointer_kind       = c_intptr_t
26        integer, parameter :: kmp_size_t_kind        = c_size_t
27        integer, parameter :: kmp_affinity_mask_kind = c_intptr_t
28
29      end module omp_lib_kinds
30
31      module omp_lib
32
33        use omp_lib_kinds
34
35        integer (kind=omp_integer_kind), parameter :: openmp_version    = @LIBOMP_OMP_YEAR_MONTH@
36        integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
37        integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
38        integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@
39        character(*)               kmp_build_date
40        parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
41
42        integer(kind=omp_sched_kind), parameter :: omp_sched_static  = 1
43        integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2
44        integer(kind=omp_sched_kind), parameter :: omp_sched_guided  = 3
45        integer(kind=omp_sched_kind), parameter :: omp_sched_auto    = 4
46
47        interface
48
49!         ***
50!         *** omp_* entry points
51!         ***
52
53          subroutine omp_set_num_threads(nthreads) bind(c)
54            use omp_lib_kinds
55            integer (kind=omp_integer_kind), value :: nthreads
56          end subroutine omp_set_num_threads
57
58          subroutine omp_set_dynamic(enable) bind(c)
59            use omp_lib_kinds
60            logical (kind=omp_logical_kind), value :: enable
61          end subroutine omp_set_dynamic
62
63          subroutine omp_set_nested(enable) bind(c)
64            use omp_lib_kinds
65            logical (kind=omp_logical_kind), value :: enable
66          end subroutine omp_set_nested
67
68          function omp_get_num_threads() bind(c)
69            use omp_lib_kinds
70            integer (kind=omp_integer_kind) omp_get_num_threads
71          end function omp_get_num_threads
72
73          function omp_get_max_threads() bind(c)
74            use omp_lib_kinds
75            integer (kind=omp_integer_kind) omp_get_max_threads
76          end function omp_get_max_threads
77
78          function omp_get_thread_num() bind(c)
79            use omp_lib_kinds
80            integer (kind=omp_integer_kind) omp_get_thread_num
81          end function omp_get_thread_num
82
83          function omp_get_num_procs() bind(c)
84            use omp_lib_kinds
85            integer (kind=omp_integer_kind) omp_get_num_procs
86          end function omp_get_num_procs
87
88          function omp_in_parallel() bind(c)
89            use omp_lib_kinds
90            logical (kind=omp_logical_kind) omp_in_parallel
91          end function omp_in_parallel
92
93          function omp_in_final() bind(c)
94            use omp_lib_kinds
95            logical (kind=omp_logical_kind) omp_in_final
96          end function omp_in_final
97
98          function omp_get_dynamic() bind(c)
99            use omp_lib_kinds
100            logical (kind=omp_logical_kind) omp_get_dynamic
101          end function omp_get_dynamic
102
103          function omp_get_nested() bind(c)
104            use omp_lib_kinds
105            logical (kind=omp_logical_kind) omp_get_nested
106          end function omp_get_nested
107
108          function omp_get_thread_limit() bind(c)
109            use omp_lib_kinds
110            integer (kind=omp_integer_kind) omp_get_thread_limit
111          end function omp_get_thread_limit
112
113          subroutine omp_set_max_active_levels(max_levels) bind(c)
114            use omp_lib_kinds
115            integer (kind=omp_integer_kind), value :: max_levels
116          end subroutine omp_set_max_active_levels
117
118          function omp_get_max_active_levels() bind(c)
119            use omp_lib_kinds
120            integer (kind=omp_integer_kind) omp_get_max_active_levels
121          end function omp_get_max_active_levels
122
123          function omp_get_level() bind(c)
124            use omp_lib_kinds
125            integer (kind=omp_integer_kind) :: omp_get_level
126          end function omp_get_level
127
128          function omp_get_active_level() bind(c)
129            use omp_lib_kinds
130            integer (kind=omp_integer_kind) :: omp_get_active_level
131          end function omp_get_active_level
132
133          function omp_get_ancestor_thread_num(level) bind(c)
134            use omp_lib_kinds
135            integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
136            integer (kind=omp_integer_kind), value :: level
137          end function omp_get_ancestor_thread_num
138
139          function omp_get_team_size(level) bind(c)
140            use omp_lib_kinds
141            integer (kind=omp_integer_kind) omp_get_team_size
142            integer (kind=omp_integer_kind), value :: level
143          end function omp_get_team_size
144
145          subroutine omp_set_schedule(kind, modifier) bind(c)
146            use omp_lib_kinds
147            integer (kind=omp_sched_kind), value :: kind
148            integer (kind=omp_integer_kind), value :: modifier
149          end subroutine omp_set_schedule
150
151          subroutine omp_get_schedule(kind, modifier) bind(c)
152            use omp_lib_kinds
153            integer (kind=omp_sched_kind)   :: kind
154            integer (kind=omp_integer_kind) :: modifier
155          end subroutine omp_get_schedule
156
157          function omp_get_wtime() bind(c)
158            use omp_lib_kinds
159            real (kind=kmp_double_kind) omp_get_wtime
160          end function omp_get_wtime
161
162          function omp_get_wtick() bind(c)
163            use omp_lib_kinds
164            real (kind=kmp_double_kind) omp_get_wtick
165          end function omp_get_wtick
166
167          subroutine omp_init_lock(lockvar) bind(c)
168            use omp_lib_kinds
169            integer (kind=omp_lock_kind) lockvar
170          end subroutine omp_init_lock
171
172          subroutine omp_destroy_lock(lockvar) bind(c)
173            use omp_lib_kinds
174            integer (kind=omp_lock_kind) lockvar
175          end subroutine omp_destroy_lock
176
177          subroutine omp_set_lock(lockvar) bind(c)
178            use omp_lib_kinds
179            integer (kind=omp_lock_kind) lockvar
180          end subroutine omp_set_lock
181
182          subroutine omp_unset_lock(lockvar) bind(c)
183            use omp_lib_kinds
184            integer (kind=omp_lock_kind) lockvar
185          end subroutine omp_unset_lock
186
187          function omp_test_lock(lockvar) bind(c)
188            use omp_lib_kinds
189            logical (kind=omp_logical_kind) omp_test_lock
190            integer (kind=omp_lock_kind) lockvar
191          end function omp_test_lock
192
193          subroutine omp_init_nest_lock(lockvar) bind(c)
194            use omp_lib_kinds
195            integer (kind=omp_nest_lock_kind) lockvar
196          end subroutine omp_init_nest_lock
197
198          subroutine omp_destroy_nest_lock(lockvar) bind(c)
199            use omp_lib_kinds
200            integer (kind=omp_nest_lock_kind) lockvar
201          end subroutine omp_destroy_nest_lock
202
203          subroutine omp_set_nest_lock(lockvar) bind(c)
204            use omp_lib_kinds
205            integer (kind=omp_nest_lock_kind) lockvar
206          end subroutine omp_set_nest_lock
207
208          subroutine omp_unset_nest_lock(lockvar) bind(c)
209            use omp_lib_kinds
210            integer (kind=omp_nest_lock_kind) lockvar
211          end subroutine omp_unset_nest_lock
212
213          function omp_test_nest_lock(lockvar) bind(c)
214            use omp_lib_kinds
215            integer (kind=omp_integer_kind) omp_test_nest_lock
216            integer (kind=omp_nest_lock_kind) lockvar
217          end function omp_test_nest_lock
218
219!         ***
220!         *** kmp_* entry points
221!         ***
222
223          subroutine kmp_set_stacksize(size) bind(c)
224            use omp_lib_kinds
225            integer (kind=omp_integer_kind), value :: size
226          end subroutine kmp_set_stacksize
227
228          subroutine kmp_set_stacksize_s(size) bind(c)
229            use omp_lib_kinds
230            integer (kind=kmp_size_t_kind), value :: size
231          end subroutine kmp_set_stacksize_s
232
233          subroutine kmp_set_blocktime(msec) bind(c)
234            use omp_lib_kinds
235            integer (kind=omp_integer_kind), value :: msec
236          end subroutine kmp_set_blocktime
237
238          subroutine kmp_set_library_serial() bind(c)
239          end subroutine kmp_set_library_serial
240
241          subroutine kmp_set_library_turnaround() bind(c)
242          end subroutine kmp_set_library_turnaround
243
244          subroutine kmp_set_library_throughput() bind(c)
245          end subroutine kmp_set_library_throughput
246
247          subroutine kmp_set_library(libnum) bind(c)
248            use omp_lib_kinds
249            integer (kind=omp_integer_kind), value :: libnum
250          end subroutine kmp_set_library
251
252          subroutine kmp_set_defaults(string) bind(c)
253            use, intrinsic :: iso_c_binding
254            character (kind=c_char) :: string(*)
255          end subroutine kmp_set_defaults
256
257          function kmp_get_stacksize() bind(c)
258            use omp_lib_kinds
259            integer (kind=omp_integer_kind) kmp_get_stacksize
260          end function kmp_get_stacksize
261
262          function kmp_get_stacksize_s() bind(c)
263            use omp_lib_kinds
264            integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
265          end function kmp_get_stacksize_s
266
267          function kmp_get_blocktime() bind(c)
268            use omp_lib_kinds
269            integer (kind=omp_integer_kind) kmp_get_blocktime
270          end function kmp_get_blocktime
271
272          function kmp_get_library() bind(c)
273            use omp_lib_kinds
274            integer (kind=omp_integer_kind) kmp_get_library
275          end function kmp_get_library
276
277          function kmp_set_affinity(mask) bind(c)
278            use omp_lib_kinds
279            integer (kind=omp_integer_kind) kmp_set_affinity
280            integer (kind=kmp_affinity_mask_kind) mask
281          end function kmp_set_affinity
282
283          function kmp_get_affinity(mask) bind(c)
284            use omp_lib_kinds
285            integer (kind=omp_integer_kind) kmp_get_affinity
286            integer (kind=kmp_affinity_mask_kind) mask
287          end function kmp_get_affinity
288
289          function kmp_get_affinity_max_proc() bind(c)
290            use omp_lib_kinds
291            integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
292          end function kmp_get_affinity_max_proc
293
294          subroutine kmp_create_affinity_mask(mask) bind(c)
295            use omp_lib_kinds
296            integer (kind=kmp_affinity_mask_kind) mask
297          end subroutine kmp_create_affinity_mask
298
299          subroutine kmp_destroy_affinity_mask(mask) bind(c)
300            use omp_lib_kinds
301            integer (kind=kmp_affinity_mask_kind) mask
302          end subroutine kmp_destroy_affinity_mask
303
304          function kmp_set_affinity_mask_proc(proc, mask) bind(c)
305            use omp_lib_kinds
306            integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
307            integer (kind=omp_integer_kind), value :: proc
308            integer (kind=kmp_affinity_mask_kind) mask
309          end function kmp_set_affinity_mask_proc
310
311          function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
312            use omp_lib_kinds
313            integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
314            integer (kind=omp_integer_kind), value :: proc
315            integer (kind=kmp_affinity_mask_kind) mask
316          end function kmp_unset_affinity_mask_proc
317
318          function kmp_get_affinity_mask_proc(proc, mask) bind(c)
319            use omp_lib_kinds
320            integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
321            integer (kind=omp_integer_kind), value :: proc
322            integer (kind=kmp_affinity_mask_kind) mask
323          end function kmp_get_affinity_mask_proc
324
325          function kmp_malloc(size) bind(c)
326            use omp_lib_kinds
327            integer (kind=kmp_pointer_kind) kmp_malloc
328            integer (kind=kmp_size_t_kind), value :: size
329          end function kmp_malloc
330
331          function kmp_aligned_malloc(size, alignment) bind(c)
332            use omp_lib_kinds
333            integer (kind=kmp_pointer_kind) kmp_aligned_malloc
334            integer (kind=kmp_size_t_kind), value :: size
335            integer (kind=kmp_size_t_kind), value :: alignment
336          end function kmp_aligned_malloc
337
338          function kmp_calloc(nelem, elsize) bind(c)
339            use omp_lib_kinds
340            integer (kind=kmp_pointer_kind) kmp_calloc
341            integer (kind=kmp_size_t_kind), value :: nelem
342            integer (kind=kmp_size_t_kind), value :: elsize
343          end function kmp_calloc
344
345          function kmp_realloc(ptr, size) bind(c)
346            use omp_lib_kinds
347            integer (kind=kmp_pointer_kind) kmp_realloc
348            integer (kind=kmp_pointer_kind), value :: ptr
349            integer (kind=kmp_size_t_kind), value :: size
350          end function kmp_realloc
351
352          subroutine kmp_free(ptr) bind(c)
353            use omp_lib_kinds
354            integer (kind=kmp_pointer_kind), value :: ptr
355          end subroutine kmp_free
356
357          subroutine kmp_set_warnings_on() bind(c)
358          end subroutine kmp_set_warnings_on
359
360          subroutine kmp_set_warnings_off() bind(c)
361          end subroutine kmp_set_warnings_off
362
363        end interface
364
365      end module omp_lib
366