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