]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/openmp/runtime/src/include/45/omp_lib.f90.var
MFC r355070:
[FreeBSD/FreeBSD.git] / contrib / openmp / runtime / src / include / 45 / omp_lib.f90.var
1 ! include/45/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 :: omp_proc_bind_kind     = omp_integer_kind
26         integer, parameter :: kmp_pointer_kind       = c_intptr_t
27         integer, parameter :: kmp_size_t_kind        = c_size_t
28         integer, parameter :: kmp_affinity_mask_kind = c_intptr_t
29         integer, parameter :: kmp_cancel_kind        = omp_integer_kind
30         integer, parameter :: omp_lock_hint_kind     = omp_integer_kind
31
32       end module omp_lib_kinds
33
34       module omp_lib
35
36         use omp_lib_kinds
37
38         integer (kind=omp_integer_kind), parameter :: openmp_version    = @LIBOMP_OMP_YEAR_MONTH@
39         integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
40         integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
41         integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@
42         character(*)               kmp_build_date
43         parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
44
45         integer(kind=omp_sched_kind), parameter :: omp_sched_static  = 1
46         integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2
47         integer(kind=omp_sched_kind), parameter :: omp_sched_guided  = 3
48         integer(kind=omp_sched_kind), parameter :: omp_sched_auto    = 4
49
50
51         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0
52         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1
53         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2
54         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3
55         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4
56
57         integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_parallel = 1
58         integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_loop = 2
59         integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_sections = 3
60         integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_taskgroup = 4
61
62         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_none           = 0
63         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_uncontended    = 1
64         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_contended      = 2
65         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_nonspeculative = 4
66         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_speculative    = 8
67         integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_hle            = 65536
68         integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_rtm            = 131072
69         integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_adaptive       = 262144
70
71         interface
72
73 !         ***
74 !         *** omp_* entry points
75 !         ***
76
77           subroutine omp_set_num_threads(num_threads) bind(c)
78             use omp_lib_kinds
79             integer (kind=omp_integer_kind), value :: num_threads
80           end subroutine omp_set_num_threads
81
82           subroutine omp_set_dynamic(dynamic_threads) bind(c)
83             use omp_lib_kinds
84             logical (kind=omp_logical_kind), value :: dynamic_threads
85           end subroutine omp_set_dynamic
86
87           subroutine omp_set_nested(nested) bind(c)
88             use omp_lib_kinds
89             logical (kind=omp_logical_kind), value :: nested
90           end subroutine omp_set_nested
91
92           function omp_get_num_threads() bind(c)
93             use omp_lib_kinds
94             integer (kind=omp_integer_kind) omp_get_num_threads
95           end function omp_get_num_threads
96
97           function omp_get_max_threads() bind(c)
98             use omp_lib_kinds
99             integer (kind=omp_integer_kind) omp_get_max_threads
100           end function omp_get_max_threads
101
102           function omp_get_thread_num() bind(c)
103             use omp_lib_kinds
104             integer (kind=omp_integer_kind) omp_get_thread_num
105           end function omp_get_thread_num
106
107           function omp_get_num_procs() bind(c)
108             use omp_lib_kinds
109             integer (kind=omp_integer_kind) omp_get_num_procs
110           end function omp_get_num_procs
111
112           function omp_in_parallel() bind(c)
113             use omp_lib_kinds
114             logical (kind=omp_logical_kind) omp_in_parallel
115           end function omp_in_parallel
116
117           function omp_in_final() bind(c)
118             use omp_lib_kinds
119             logical (kind=omp_logical_kind) omp_in_final
120           end function omp_in_final
121
122           function omp_get_dynamic() bind(c)
123             use omp_lib_kinds
124             logical (kind=omp_logical_kind) omp_get_dynamic
125           end function omp_get_dynamic
126
127           function omp_get_nested() bind(c)
128             use omp_lib_kinds
129             logical (kind=omp_logical_kind) omp_get_nested
130           end function omp_get_nested
131
132           function omp_get_thread_limit() bind(c)
133             use omp_lib_kinds
134             integer (kind=omp_integer_kind) omp_get_thread_limit
135           end function omp_get_thread_limit
136
137           subroutine omp_set_max_active_levels(max_levels) bind(c)
138             use omp_lib_kinds
139             integer (kind=omp_integer_kind), value :: max_levels
140           end subroutine omp_set_max_active_levels
141
142           function omp_get_max_active_levels() bind(c)
143             use omp_lib_kinds
144             integer (kind=omp_integer_kind) omp_get_max_active_levels
145           end function omp_get_max_active_levels
146
147           function omp_get_level() bind(c)
148             use omp_lib_kinds
149             integer (kind=omp_integer_kind) omp_get_level
150           end function omp_get_level
151
152           function omp_get_active_level() bind(c)
153             use omp_lib_kinds
154             integer (kind=omp_integer_kind) omp_get_active_level
155           end function omp_get_active_level
156
157           function omp_get_ancestor_thread_num(level) bind(c)
158             use omp_lib_kinds
159             integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
160             integer (kind=omp_integer_kind), value :: level
161           end function omp_get_ancestor_thread_num
162
163           function omp_get_team_size(level) bind(c)
164             use omp_lib_kinds
165             integer (kind=omp_integer_kind) omp_get_team_size
166             integer (kind=omp_integer_kind), value :: level
167           end function omp_get_team_size
168
169           subroutine omp_set_schedule(kind, chunk_size) bind(c)
170             use omp_lib_kinds
171             integer (kind=omp_sched_kind), value :: kind
172             integer (kind=omp_integer_kind), value :: chunk_size
173           end subroutine omp_set_schedule
174
175           subroutine omp_get_schedule(kind, chunk_size) bind(c)
176             use omp_lib_kinds
177             integer (kind=omp_sched_kind) kind
178             integer (kind=omp_integer_kind) chunk_size
179           end subroutine omp_get_schedule
180
181           function omp_get_proc_bind() bind(c)
182             use omp_lib_kinds
183             integer (kind=omp_proc_bind_kind) omp_get_proc_bind
184           end function omp_get_proc_bind
185
186           function omp_get_num_places() bind(c)
187             use omp_lib_kinds
188             integer (kind=omp_integer_kind) omp_get_num_places
189           end function omp_get_num_places
190
191           function omp_get_place_num_procs(place_num) bind(c)
192             use omp_lib_kinds
193             integer (kind=omp_integer_kind), value :: place_num
194             integer (kind=omp_integer_kind) omp_get_place_num_procs
195           end function omp_get_place_num_procs
196
197           subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
198             use omp_lib_kinds
199             integer (kind=omp_integer_kind), value :: place_num
200             integer (kind=omp_integer_kind) ids(*)
201           end subroutine omp_get_place_proc_ids
202
203           function omp_get_place_num() bind(c)
204             use omp_lib_kinds
205             integer (kind=omp_integer_kind) omp_get_place_num
206           end function omp_get_place_num
207
208           function omp_get_partition_num_places() bind(c)
209             use omp_lib_kinds
210             integer (kind=omp_integer_kind) omp_get_partition_num_places
211           end function omp_get_partition_num_places
212
213           subroutine omp_get_partition_place_nums(place_nums) bind(c)
214             use omp_lib_kinds
215             integer (kind=omp_integer_kind) place_nums(*)
216           end subroutine omp_get_partition_place_nums
217
218           function omp_get_wtime() bind(c)
219             use omp_lib_kinds
220             real (kind=kmp_double_kind) omp_get_wtime
221           end function omp_get_wtime
222
223           function omp_get_wtick() bind(c)
224             use omp_lib_kinds
225             real (kind=kmp_double_kind) omp_get_wtick
226           end function omp_get_wtick
227
228           function omp_get_default_device() bind(c)
229             use omp_lib_kinds
230             integer (kind=omp_integer_kind) omp_get_default_device
231           end function omp_get_default_device
232
233           subroutine omp_set_default_device(device_num) bind(c)
234             use omp_lib_kinds
235             integer (kind=omp_integer_kind), value :: device_num
236           end subroutine omp_set_default_device
237
238           function omp_get_num_devices() bind(c)
239             use omp_lib_kinds
240             integer (kind=omp_integer_kind) omp_get_num_devices
241           end function omp_get_num_devices
242
243           function omp_get_num_teams() bind(c)
244             use omp_lib_kinds
245             integer (kind=omp_integer_kind) omp_get_num_teams
246           end function omp_get_num_teams
247
248           function omp_get_team_num() bind(c)
249             use omp_lib_kinds
250             integer (kind=omp_integer_kind) omp_get_team_num
251           end function omp_get_team_num
252
253           function omp_get_cancellation() bind(c)
254             use omp_lib_kinds
255             integer (kind=omp_integer_kind) omp_get_cancellation
256           end function omp_get_cancellation
257
258           function omp_is_initial_device() bind(c)
259             use omp_lib_kinds
260             logical (kind=omp_logical_kind) omp_is_initial_device
261           end function omp_is_initial_device
262
263           function omp_get_initial_device() bind(c)
264             use omp_lib_kinds
265             integer (kind=omp_integer_kind) omp_get_initial_device
266           end function omp_get_initial_device
267
268           subroutine omp_init_lock(svar) bind(c)
269 !DIR$ IF(__INTEL_COMPILER.GE.1400)
270 !DIR$ attributes known_intrinsic :: omp_init_lock
271 !DIR$ ENDIF
272             use omp_lib_kinds
273             integer (kind=omp_lock_kind) svar
274           end subroutine omp_init_lock
275
276           subroutine omp_destroy_lock(svar) bind(c)
277 !DIR$ IF(__INTEL_COMPILER.GE.1400)
278 !DIR$ attributes known_intrinsic :: omp_destroy_lock
279 !DIR$ ENDIF
280             use omp_lib_kinds
281             integer (kind=omp_lock_kind) svar
282           end subroutine omp_destroy_lock
283
284           subroutine omp_set_lock(svar) bind(c)
285 !DIR$ IF(__INTEL_COMPILER.GE.1400)
286 !DIR$ attributes known_intrinsic :: omp_set_lock
287 !DIR$ ENDIF
288             use omp_lib_kinds
289             integer (kind=omp_lock_kind) svar
290           end subroutine omp_set_lock
291
292           subroutine omp_unset_lock(svar) bind(c)
293 !DIR$ IF(__INTEL_COMPILER.GE.1400)
294 !DIR$ attributes known_intrinsic :: omp_unset_lock
295 !DIR$ ENDIF
296             use omp_lib_kinds
297             integer (kind=omp_lock_kind) svar
298           end subroutine omp_unset_lock
299
300           function omp_test_lock(svar) bind(c)
301 !DIR$ IF(__INTEL_COMPILER.GE.1400)
302 !DIR$ attributes known_intrinsic :: omp_test_lock
303 !DIR$ ENDIF
304             use omp_lib_kinds
305             logical (kind=omp_logical_kind) omp_test_lock
306             integer (kind=omp_lock_kind) svar
307           end function omp_test_lock
308
309           subroutine omp_init_nest_lock(nvar) bind(c)
310 !DIR$ IF(__INTEL_COMPILER.GE.1400)
311 !DIR$ attributes known_intrinsic :: omp_init_nest_lock
312 !DIR$ ENDIF
313             use omp_lib_kinds
314             integer (kind=omp_nest_lock_kind) nvar
315           end subroutine omp_init_nest_lock
316
317           subroutine omp_destroy_nest_lock(nvar) bind(c)
318 !DIR$ IF(__INTEL_COMPILER.GE.1400)
319 !DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
320 !DIR$ ENDIF
321             use omp_lib_kinds
322             integer (kind=omp_nest_lock_kind) nvar
323           end subroutine omp_destroy_nest_lock
324
325           subroutine omp_set_nest_lock(nvar) bind(c)
326 !DIR$ IF(__INTEL_COMPILER.GE.1400)
327 !DIR$ attributes known_intrinsic :: omp_set_nest_lock
328 !DIR$ ENDIF
329             use omp_lib_kinds
330             integer (kind=omp_nest_lock_kind) nvar
331           end subroutine omp_set_nest_lock
332
333           subroutine omp_unset_nest_lock(nvar) bind(c)
334 !DIR$ IF(__INTEL_COMPILER.GE.1400)
335 !DIR$ attributes known_intrinsic :: omp_unset_nest_lock
336 !DIR$ ENDIF
337             use omp_lib_kinds
338             integer (kind=omp_nest_lock_kind) nvar
339           end subroutine omp_unset_nest_lock
340
341           function omp_test_nest_lock(nvar) bind(c)
342 !DIR$ IF(__INTEL_COMPILER.GE.1400)
343 !DIR$ attributes known_intrinsic :: omp_test_nest_lock
344 !DIR$ ENDIF
345             use omp_lib_kinds
346             integer (kind=omp_integer_kind) omp_test_nest_lock
347             integer (kind=omp_nest_lock_kind) nvar
348           end function omp_test_nest_lock
349
350           function omp_get_max_task_priority() bind(c)
351             use omp_lib_kinds
352             integer (kind=omp_integer_kind) omp_get_max_task_priority
353           end function omp_get_max_task_priority
354
355 !         ***
356 !         *** kmp_* entry points
357 !         ***
358
359           subroutine kmp_set_stacksize(size) bind(c)
360             use omp_lib_kinds
361             integer (kind=omp_integer_kind), value :: size
362           end subroutine kmp_set_stacksize
363
364           subroutine kmp_set_stacksize_s(size) bind(c)
365             use omp_lib_kinds
366             integer (kind=kmp_size_t_kind), value :: size
367           end subroutine kmp_set_stacksize_s
368
369           subroutine kmp_set_blocktime(msec) bind(c)
370             use omp_lib_kinds
371             integer (kind=omp_integer_kind), value :: msec
372           end subroutine kmp_set_blocktime
373
374           subroutine kmp_set_library_serial() bind(c)
375           end subroutine kmp_set_library_serial
376
377           subroutine kmp_set_library_turnaround() bind(c)
378           end subroutine kmp_set_library_turnaround
379
380           subroutine kmp_set_library_throughput() bind(c)
381           end subroutine kmp_set_library_throughput
382
383           subroutine kmp_set_library(libnum) bind(c)
384             use omp_lib_kinds
385             integer (kind=omp_integer_kind), value :: libnum
386           end subroutine kmp_set_library
387
388           subroutine kmp_set_defaults(string) bind(c)
389             use, intrinsic :: iso_c_binding
390             character (kind=c_char) :: string(*)
391           end subroutine kmp_set_defaults
392
393           function kmp_get_stacksize() bind(c)
394             use omp_lib_kinds
395             integer (kind=omp_integer_kind) kmp_get_stacksize
396           end function kmp_get_stacksize
397
398           function kmp_get_stacksize_s() bind(c)
399             use omp_lib_kinds
400             integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
401           end function kmp_get_stacksize_s
402
403           function kmp_get_blocktime() bind(c)
404             use omp_lib_kinds
405             integer (kind=omp_integer_kind) kmp_get_blocktime
406           end function kmp_get_blocktime
407
408           function kmp_get_library() bind(c)
409             use omp_lib_kinds
410             integer (kind=omp_integer_kind) kmp_get_library
411           end function kmp_get_library
412
413           subroutine kmp_set_disp_num_buffers(num) bind(c)
414             use omp_lib_kinds
415             integer (kind=omp_integer_kind), value :: num
416           end subroutine kmp_set_disp_num_buffers
417
418           function kmp_set_affinity(mask) bind(c)
419             use omp_lib_kinds
420             integer (kind=omp_integer_kind) kmp_set_affinity
421             integer (kind=kmp_affinity_mask_kind) mask
422           end function kmp_set_affinity
423
424           function kmp_get_affinity(mask) bind(c)
425             use omp_lib_kinds
426             integer (kind=omp_integer_kind) kmp_get_affinity
427             integer (kind=kmp_affinity_mask_kind) mask
428           end function kmp_get_affinity
429
430           function kmp_get_affinity_max_proc() bind(c)
431             use omp_lib_kinds
432             integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
433           end function kmp_get_affinity_max_proc
434
435           subroutine kmp_create_affinity_mask(mask) bind(c)
436             use omp_lib_kinds
437             integer (kind=kmp_affinity_mask_kind) mask
438           end subroutine kmp_create_affinity_mask
439
440           subroutine kmp_destroy_affinity_mask(mask) bind(c)
441             use omp_lib_kinds
442             integer (kind=kmp_affinity_mask_kind) mask
443           end subroutine kmp_destroy_affinity_mask
444
445           function kmp_set_affinity_mask_proc(proc, mask) bind(c)
446             use omp_lib_kinds
447             integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
448             integer (kind=omp_integer_kind), value :: proc
449             integer (kind=kmp_affinity_mask_kind) mask
450           end function kmp_set_affinity_mask_proc
451
452           function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
453             use omp_lib_kinds
454             integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
455             integer (kind=omp_integer_kind), value :: proc
456             integer (kind=kmp_affinity_mask_kind) mask
457           end function kmp_unset_affinity_mask_proc
458
459           function kmp_get_affinity_mask_proc(proc, mask) bind(c)
460             use omp_lib_kinds
461             integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
462             integer (kind=omp_integer_kind), value :: proc
463             integer (kind=kmp_affinity_mask_kind) mask
464           end function kmp_get_affinity_mask_proc
465
466           function kmp_malloc(size) bind(c)
467             use omp_lib_kinds
468             integer (kind=kmp_pointer_kind) kmp_malloc
469             integer (kind=kmp_size_t_kind), value :: size
470           end function kmp_malloc
471
472           function kmp_aligned_malloc(size, alignment) bind(c)
473             use omp_lib_kinds
474             integer (kind=kmp_pointer_kind) kmp_aligned_malloc
475             integer (kind=kmp_size_t_kind), value :: size
476             integer (kind=kmp_size_t_kind), value :: alignment
477           end function kmp_aligned_malloc
478
479           function kmp_calloc(nelem, elsize) bind(c)
480             use omp_lib_kinds
481             integer (kind=kmp_pointer_kind) kmp_calloc
482             integer (kind=kmp_size_t_kind), value :: nelem
483             integer (kind=kmp_size_t_kind), value :: elsize
484           end function kmp_calloc
485
486           function kmp_realloc(ptr, size) bind(c)
487             use omp_lib_kinds
488             integer (kind=kmp_pointer_kind) kmp_realloc
489             integer (kind=kmp_pointer_kind), value :: ptr
490             integer (kind=kmp_size_t_kind), value :: size
491           end function kmp_realloc
492
493           subroutine kmp_free(ptr) bind(c)
494             use omp_lib_kinds
495             integer (kind=kmp_pointer_kind), value :: ptr
496           end subroutine kmp_free
497
498           subroutine kmp_set_warnings_on() bind(c)
499           end subroutine kmp_set_warnings_on
500
501           subroutine kmp_set_warnings_off() bind(c)
502           end subroutine kmp_set_warnings_off
503
504           function kmp_get_cancellation_status(cancelkind) bind(c)
505             use omp_lib_kinds
506             integer (kind=kmp_cancel_kind), value :: cancelkind
507             logical (kind=omp_logical_kind) kmp_get_cancellation_status
508           end function kmp_get_cancellation_status
509
510           subroutine omp_init_lock_with_hint(svar, hint) bind(c)
511             use omp_lib_kinds
512             integer (kind=omp_lock_kind) svar
513             integer (kind=omp_lock_hint_kind), value :: hint
514           end subroutine omp_init_lock_with_hint
515
516           subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c)
517             use omp_lib_kinds
518             integer (kind=omp_nest_lock_kind) nvar
519             integer (kind=omp_lock_hint_kind), value :: hint
520           end subroutine omp_init_nest_lock_with_hint
521
522         end interface
523
524       end module omp_lib