]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgomp/omp_lib.f90.in
Avoid assuming maximum string length is constant [PR102960].
[thirdparty/gcc.git] / libgomp / omp_lib.f90.in
CommitLineData
99dee823 1! Copyright (C) 2005-2021 Free Software Foundation, Inc.
953ff289
DN
2! Contributed by Jakub Jelinek <jakub@redhat.com>.
3
f1f3453e
TS
4! This file is part of the GNU Offloading and Multi Processing Library
5! (libgomp).
953ff289
DN
6
7! Libgomp is free software; you can redistribute it and/or modify it
748086b7
JJ
8! under the terms of the GNU General Public License as published by
9! the Free Software Foundation; either version 3, or (at your option)
10! any later version.
953ff289
DN
11
12! Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
13! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
748086b7 14! FOR A PARTICULAR PURPOSE. See the GNU General Public License for
953ff289
DN
15! more details.
16
748086b7
JJ
17! Under Section 7 of GPL version 3, you are granted additional
18! permissions described in the GCC Runtime Library Exception, version
19! 3.1, as published by the Free Software Foundation.
953ff289 20
748086b7
JJ
21! You should have received a copy of the GNU General Public License and
22! a copy of the GCC Runtime Library Exception along with this program;
23! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
24! <http://www.gnu.org/licenses/>.
953ff289
DN
25
26 module omp_lib_kinds
fff15bad 27 use iso_c_binding, only: c_int, c_intptr_t
b896f9fd 28 implicit none
fff15bad 29 private :: c_int, c_intptr_t
03b8fe49
PB
30 integer, parameter :: omp_lock_kind = @OMP_LOCK_KIND@
31 integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@
a68ab351 32 integer, parameter :: omp_sched_kind = 4
acf0174b 33 integer, parameter :: omp_proc_bind_kind = 4
c7c24828
TB
34 integer, parameter :: omp_sync_hint_kind = 4
35 integer, parameter :: omp_lock_hint_kind = omp_sync_hint_kind
28567c40 36 integer, parameter :: omp_pause_resource_kind = 4
fff15bad
TB
37 integer, parameter :: omp_allocator_handle_kind = c_intptr_t
38 integer, parameter :: omp_alloctrait_key_kind = c_int
39 integer, parameter :: omp_alloctrait_val_kind = c_intptr_t
40 integer, parameter :: omp_memspace_handle_kind = c_intptr_t
2631d95a 41 integer, parameter :: omp_depend_kind = @OMP_DEPEND_KIND@
a6d22fb2 42 integer, parameter :: omp_event_handle_kind = c_intptr_t
acf0174b
JJ
43 integer (omp_sched_kind), parameter :: omp_sched_static = 1
44 integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2
45 integer (omp_sched_kind), parameter :: omp_sched_guided = 3
46 integer (omp_sched_kind), parameter :: omp_sched_auto = 4
d9a6bd32
JJ
47 integer (omp_proc_bind_kind), &
48 parameter :: omp_proc_bind_false = 0
49 integer (omp_proc_bind_kind), &
50 parameter :: omp_proc_bind_true = 1
432de084
TB
51 integer (omp_proc_bind_kind), &
52 parameter :: omp_proc_bind_primary = 2
d9a6bd32
JJ
53 integer (omp_proc_bind_kind), &
54 parameter :: omp_proc_bind_master = 2
55 integer (omp_proc_bind_kind), &
56 parameter :: omp_proc_bind_close = 3
57 integer (omp_proc_bind_kind), &
58 parameter :: omp_proc_bind_spread = 4
59 integer (omp_lock_hint_kind), &
c7c24828 60 parameter :: omp_sync_hint_none = 0
d9a6bd32 61 integer (omp_lock_hint_kind), &
c7c24828 62 parameter :: omp_lock_hint_none = omp_sync_hint_none
d9a6bd32 63 integer (omp_lock_hint_kind), &
c7c24828 64 parameter :: omp_sync_hint_uncontended = 1
d9a6bd32 65 integer (omp_lock_hint_kind), &
c7c24828
TB
66 parameter :: omp_lock_hint_uncontended &
67 = omp_sync_hint_uncontended
d9a6bd32 68 integer (omp_lock_hint_kind), &
c7c24828
TB
69 parameter :: omp_sync_hint_contended = 2
70 integer (omp_lock_hint_kind), &
71 parameter :: omp_lock_hint_contended &
72 = omp_sync_hint_contended
73 integer (omp_lock_hint_kind), &
74 parameter :: omp_sync_hint_nonspeculative = 4
75 integer (omp_lock_hint_kind), &
76 parameter :: omp_lock_hint_nonspeculative &
77 = omp_sync_hint_nonspeculative
78 integer (omp_lock_hint_kind), &
79 parameter :: omp_sync_hint_speculative = 8
80 integer (omp_lock_hint_kind), &
81 parameter :: omp_lock_hint_speculative &
82 = omp_sync_hint_speculative
28567c40
JJ
83 integer (kind=omp_pause_resource_kind), &
84 parameter :: omp_pause_soft = 1
85 integer (kind=omp_pause_resource_kind), &
86 parameter :: omp_pause_hard = 2
fff15bad
TB
87 integer (kind=omp_alloctrait_key_kind), &
88 parameter :: omp_atk_sync_hint = 1
89 integer (kind=omp_alloctrait_key_kind), &
90 parameter :: omp_atk_alignment = 2
91 integer (kind=omp_alloctrait_key_kind), &
92 parameter :: omp_atk_access = 3
93 integer (kind=omp_alloctrait_key_kind), &
94 parameter :: omp_atk_pool_size = 4
95 integer (kind=omp_alloctrait_key_kind), &
96 parameter :: omp_atk_fallback = 5
97 integer (kind=omp_alloctrait_key_kind), &
98 parameter :: omp_atk_fb_data = 6
99 integer (kind=omp_alloctrait_key_kind), &
100 parameter :: omp_atk_pinned = 7
101 integer (kind=omp_alloctrait_key_kind), &
102 parameter :: omp_atk_partition = 8
103 integer (kind=omp_alloctrait_val_kind), &
104 parameter :: omp_atv_default = -1
105 integer (kind=omp_alloctrait_val_kind), &
106 parameter :: omp_atv_false = 0
107 integer (kind=omp_alloctrait_val_kind), &
108 parameter :: omp_atv_true = 1
109 integer (kind=omp_alloctrait_val_kind), &
110 parameter :: omp_atv_contended = 3
111 integer (kind=omp_alloctrait_val_kind), &
112 parameter :: omp_atv_uncontended = 4
113 integer (kind=omp_alloctrait_val_kind), &
114 parameter :: omp_atv_serialized = 5
115 integer (kind=omp_alloctrait_val_kind), &
116 parameter :: omp_atv_sequential = omp_atv_serialized
117 integer (kind=omp_alloctrait_val_kind), &
118 parameter :: omp_atv_private = 6
119 integer (kind=omp_alloctrait_val_kind), &
120 parameter :: omp_atv_all = 7
121 integer (kind=omp_alloctrait_val_kind), &
122 parameter :: omp_atv_thread = 8
123 integer (kind=omp_alloctrait_val_kind), &
124 parameter :: omp_atv_pteam = 9
125 integer (kind=omp_alloctrait_val_kind), &
126 parameter :: omp_atv_cgroup = 10
127 integer (kind=omp_alloctrait_val_kind), &
128 parameter :: omp_atv_default_mem_fb = 11
129 integer (kind=omp_alloctrait_val_kind), &
130 parameter :: omp_atv_null_fb = 12
131 integer (kind=omp_alloctrait_val_kind), &
132 parameter :: omp_atv_abort_fb = 13
133 integer (kind=omp_alloctrait_val_kind), &
134 parameter :: omp_atv_allocator_fb = 14
135 integer (kind=omp_alloctrait_val_kind), &
136 parameter :: omp_atv_environment = 15
137 integer (kind=omp_alloctrait_val_kind), &
138 parameter :: omp_atv_nearest = 16
139 integer (kind=omp_alloctrait_val_kind), &
140 parameter :: omp_atv_blocked = 17
141 integer (kind=omp_alloctrait_val_kind), &
142 parameter :: omp_atv_interleaved = 18
143 integer (kind=omp_allocator_handle_kind), &
144 parameter :: omp_null_allocator = 0
145 integer (kind=omp_allocator_handle_kind), &
146 parameter :: omp_default_mem_alloc = 1
147 integer (kind=omp_allocator_handle_kind), &
148 parameter :: omp_large_cap_mem_alloc = 2
149 integer (kind=omp_allocator_handle_kind), &
150 parameter :: omp_const_mem_alloc = 3
151 integer (kind=omp_allocator_handle_kind), &
152 parameter :: omp_high_bw_mem_alloc = 4
153 integer (kind=omp_allocator_handle_kind), &
154 parameter :: omp_low_lat_mem_alloc = 5
155 integer (kind=omp_allocator_handle_kind), &
156 parameter :: omp_cgroup_mem_alloc = 6
157 integer (kind=omp_allocator_handle_kind), &
158 parameter :: omp_pteam_mem_alloc = 7
159 integer (kind=omp_allocator_handle_kind), &
160 parameter :: omp_thread_mem_alloc = 8
161 integer (omp_memspace_handle_kind), &
162 parameter :: omp_default_mem_space = 0
163 integer (omp_memspace_handle_kind), &
164 parameter :: omp_large_cap_mem_space = 1
165 integer (omp_memspace_handle_kind), &
166 parameter :: omp_const_mem_space = 2
167 integer (omp_memspace_handle_kind), &
168 parameter :: omp_high_bw_mem_space = 3
169 integer (omp_memspace_handle_kind), &
170 parameter :: omp_low_lat_mem_space = 4
171
172 type omp_alloctrait
173 integer (kind=omp_alloctrait_key_kind) key
174 integer (kind=omp_alloctrait_val_kind) value
175 end type omp_alloctrait
953ff289
DN
176 end module
177
178 module omp_lib
179 use omp_lib_kinds
b896f9fd 180 implicit none
8ebd1b31 181 integer, parameter :: openmp_version = 201511
953ff289
DN
182
183 interface
4fed6b25 184 subroutine omp_init_lock (svar)
953ff289 185 use omp_lib_kinds
4fed6b25 186 integer (omp_lock_kind), intent (out) :: svar
953ff289
DN
187 end subroutine omp_init_lock
188 end interface
189
d9a6bd32
JJ
190 interface
191 subroutine omp_init_lock_with_hint (svar, hint)
192 use omp_lib_kinds
193 integer (omp_lock_kind), intent (out) :: svar
194 integer (omp_lock_hint_kind), intent (in) :: hint
195 end subroutine omp_init_lock_with_hint
196 end interface
197
953ff289 198 interface
4fed6b25 199 subroutine omp_init_nest_lock (nvar)
953ff289 200 use omp_lib_kinds
4fed6b25 201 integer (omp_nest_lock_kind), intent (out) :: nvar
953ff289
DN
202 end subroutine omp_init_nest_lock
203 end interface
204
d9a6bd32
JJ
205 interface
206 subroutine omp_init_nest_lock_with_hint (nvar, hint)
207 use omp_lib_kinds
208 integer (omp_nest_lock_kind), intent (out) :: nvar
209 integer (omp_lock_hint_kind), intent (in) :: hint
210 end subroutine omp_init_nest_lock_with_hint
211 end interface
212
953ff289 213 interface
4fed6b25 214 subroutine omp_destroy_lock (svar)
953ff289 215 use omp_lib_kinds
4fed6b25 216 integer (omp_lock_kind), intent (inout) :: svar
953ff289
DN
217 end subroutine omp_destroy_lock
218 end interface
219
220 interface
4fed6b25 221 subroutine omp_destroy_nest_lock (nvar)
953ff289 222 use omp_lib_kinds
4fed6b25 223 integer (omp_nest_lock_kind), intent (inout) :: nvar
953ff289
DN
224 end subroutine omp_destroy_nest_lock
225 end interface
226
227 interface
4fed6b25 228 subroutine omp_set_lock (svar)
953ff289 229 use omp_lib_kinds
4fed6b25 230 integer (omp_lock_kind), intent (inout) :: svar
953ff289
DN
231 end subroutine omp_set_lock
232 end interface
233
234 interface
4fed6b25 235 subroutine omp_set_nest_lock (nvar)
953ff289 236 use omp_lib_kinds
4fed6b25 237 integer (omp_nest_lock_kind), intent (inout) :: nvar
953ff289
DN
238 end subroutine omp_set_nest_lock
239 end interface
240
241 interface
4fed6b25 242 subroutine omp_unset_lock (svar)
953ff289 243 use omp_lib_kinds
4fed6b25 244 integer (omp_lock_kind), intent (inout) :: svar
953ff289
DN
245 end subroutine omp_unset_lock
246 end interface
247
248 interface
4fed6b25 249 subroutine omp_unset_nest_lock (nvar)
953ff289 250 use omp_lib_kinds
4fed6b25 251 integer (omp_nest_lock_kind), intent (inout) :: nvar
953ff289
DN
252 end subroutine omp_unset_nest_lock
253 end interface
254
255 interface omp_set_dynamic
4fed6b25
TB
256 subroutine omp_set_dynamic (dynamic_threads)
257 logical (4), intent (in) :: dynamic_threads
953ff289 258 end subroutine omp_set_dynamic
4fed6b25
TB
259 subroutine omp_set_dynamic_8 (dynamic_threads)
260 logical (8), intent (in) :: dynamic_threads
953ff289
DN
261 end subroutine omp_set_dynamic_8
262 end interface
263
264 interface omp_set_nested
4fed6b25
TB
265 subroutine omp_set_nested (nested)
266 logical (4), intent (in) :: nested
953ff289 267 end subroutine omp_set_nested
4fed6b25
TB
268 subroutine omp_set_nested_8 (nested)
269 logical (8), intent (in) :: nested
953ff289
DN
270 end subroutine omp_set_nested_8
271 end interface
272
273 interface omp_set_num_threads
4fed6b25
TB
274 subroutine omp_set_num_threads (num_threads)
275 integer (4), intent (in) :: num_threads
953ff289 276 end subroutine omp_set_num_threads
4fed6b25
TB
277 subroutine omp_set_num_threads_8 (num_threads)
278 integer (8), intent (in) :: num_threads
953ff289
DN
279 end subroutine omp_set_num_threads_8
280 end interface
281
282 interface
283 function omp_get_dynamic ()
20906c66 284 logical (4) :: omp_get_dynamic
953ff289
DN
285 end function omp_get_dynamic
286 end interface
287
288 interface
289 function omp_get_nested ()
20906c66 290 logical (4) :: omp_get_nested
953ff289
DN
291 end function omp_get_nested
292 end interface
293
294 interface
295 function omp_in_parallel ()
20906c66 296 logical (4) :: omp_in_parallel
953ff289
DN
297 end function omp_in_parallel
298 end interface
299
300 interface
4fed6b25 301 function omp_test_lock (svar)
953ff289 302 use omp_lib_kinds
20906c66 303 logical (4) :: omp_test_lock
4fed6b25 304 integer (omp_lock_kind), intent (inout) :: svar
953ff289
DN
305 end function omp_test_lock
306 end interface
307
308 interface
309 function omp_get_max_threads ()
20906c66 310 integer (4) :: omp_get_max_threads
953ff289
DN
311 end function omp_get_max_threads
312 end interface
313
314 interface
315 function omp_get_num_procs ()
20906c66 316 integer (4) :: omp_get_num_procs
953ff289
DN
317 end function omp_get_num_procs
318 end interface
319
320 interface
321 function omp_get_num_threads ()
20906c66 322 integer (4) :: omp_get_num_threads
953ff289
DN
323 end function omp_get_num_threads
324 end interface
325
326 interface
327 function omp_get_thread_num ()
20906c66 328 integer (4) :: omp_get_thread_num
953ff289
DN
329 end function omp_get_thread_num
330 end interface
331
332 interface
4fed6b25 333 function omp_test_nest_lock (nvar)
953ff289 334 use omp_lib_kinds
20906c66 335 integer (4) :: omp_test_nest_lock
4fed6b25 336 integer (omp_nest_lock_kind), intent (inout) :: nvar
953ff289
DN
337 end function omp_test_nest_lock
338 end interface
339
340 interface
341 function omp_get_wtick ()
342 double precision :: omp_get_wtick
343 end function omp_get_wtick
344 end interface
345
346 interface
347 function omp_get_wtime ()
348 double precision :: omp_get_wtime
349 end function omp_get_wtime
350 end interface
351
a68ab351 352 interface omp_set_schedule
d9a6bd32 353 subroutine omp_set_schedule (kind, chunk_size)
a68ab351
JJ
354 use omp_lib_kinds
355 integer (omp_sched_kind), intent (in) :: kind
d9a6bd32 356 integer (4), intent (in) :: chunk_size
a68ab351 357 end subroutine omp_set_schedule
d9a6bd32 358 subroutine omp_set_schedule_8 (kind, chunk_size)
a68ab351
JJ
359 use omp_lib_kinds
360 integer (omp_sched_kind), intent (in) :: kind
d9a6bd32 361 integer (8), intent (in) :: chunk_size
a68ab351
JJ
362 end subroutine omp_set_schedule_8
363 end interface
364
365 interface omp_get_schedule
d9a6bd32 366 subroutine omp_get_schedule (kind, chunk_size)
a68ab351
JJ
367 use omp_lib_kinds
368 integer (omp_sched_kind), intent (out) :: kind
d9a6bd32 369 integer (4), intent (out) :: chunk_size
a68ab351 370 end subroutine omp_get_schedule
d9a6bd32 371 subroutine omp_get_schedule_8 (kind, chunk_size)
a68ab351
JJ
372 use omp_lib_kinds
373 integer (omp_sched_kind), intent (out) :: kind
d9a6bd32 374 integer (8), intent (out) :: chunk_size
a68ab351
JJ
375 end subroutine omp_get_schedule_8
376 end interface
377
378 interface
379 function omp_get_thread_limit ()
20906c66 380 integer (4) :: omp_get_thread_limit
a68ab351
JJ
381 end function omp_get_thread_limit
382 end interface
383
384 interface omp_set_max_active_levels
385 subroutine omp_set_max_active_levels (max_levels)
a68ab351
JJ
386 integer (4), intent (in) :: max_levels
387 end subroutine omp_set_max_active_levels
388 subroutine omp_set_max_active_levels_8 (max_levels)
a68ab351
JJ
389 integer (8), intent (in) :: max_levels
390 end subroutine omp_set_max_active_levels_8
391 end interface
392
393 interface
394 function omp_get_max_active_levels ()
20906c66 395 integer (4) :: omp_get_max_active_levels
a68ab351
JJ
396 end function omp_get_max_active_levels
397 end interface
398
8949b985
KCY
399 interface
400 function omp_get_supported_active_levels ()
401 integer (4) :: omp_get_supported_active_levels
402 end function omp_get_supported_active_levels
403 end interface
404
a68ab351
JJ
405 interface
406 function omp_get_level ()
20906c66 407 integer (4) :: omp_get_level
a68ab351
JJ
408 end function omp_get_level
409 end interface
410
411 interface omp_get_ancestor_thread_num
412 function omp_get_ancestor_thread_num (level)
a68ab351 413 integer (4), intent (in) :: level
20906c66 414 integer (4) :: omp_get_ancestor_thread_num
a68ab351
JJ
415 end function omp_get_ancestor_thread_num
416 function omp_get_ancestor_thread_num_8 (level)
a68ab351 417 integer (8), intent (in) :: level
20906c66 418 integer (4) :: omp_get_ancestor_thread_num_8
a68ab351
JJ
419 end function omp_get_ancestor_thread_num_8
420 end interface
421
422 interface omp_get_team_size
423 function omp_get_team_size (level)
a68ab351 424 integer (4), intent (in) :: level
20906c66 425 integer (4) :: omp_get_team_size
a68ab351
JJ
426 end function omp_get_team_size
427 function omp_get_team_size_8 (level)
a68ab351 428 integer (8), intent (in) :: level
20906c66 429 integer (4) :: omp_get_team_size_8
a68ab351
JJ
430 end function omp_get_team_size_8
431 end interface
432
433 interface
434 function omp_get_active_level ()
20906c66 435 integer (4) :: omp_get_active_level
a68ab351
JJ
436 end function omp_get_active_level
437 end interface
438
20906c66
JJ
439 interface
440 function omp_in_final ()
20906c66
JJ
441 logical (4) :: omp_in_final
442 end function omp_in_final
443 end interface
444
acf0174b
JJ
445 interface
446 function omp_get_cancellation ()
447 logical (4) :: omp_get_cancellation
448 end function omp_get_cancellation
449 end interface
450
451 interface
452 function omp_get_proc_bind ()
453 use omp_lib_kinds
454 integer (omp_proc_bind_kind) :: omp_get_proc_bind
455 end function omp_get_proc_bind
456 end interface
457
d9a6bd32
JJ
458 interface
459 function omp_get_num_places ()
460 integer (4) :: omp_get_num_places
461 end function omp_get_num_places
462 end interface
463
464 interface omp_get_place_num_procs
465 function omp_get_place_num_procs (place_num)
466 integer (4), intent(in) :: place_num
467 integer (4) :: omp_get_place_num_procs
468 end function omp_get_place_num_procs
469
470 function omp_get_place_num_procs_8 (place_num)
471 integer (8), intent(in) :: place_num
472 integer (4) :: omp_get_place_num_procs_8
473 end function omp_get_place_num_procs_8
474 end interface
475
476 interface omp_get_place_proc_ids
477 subroutine omp_get_place_proc_ids (place_num, ids)
478 integer (4), intent(in) :: place_num
479 integer (4), intent(out) :: ids(*)
480 end subroutine omp_get_place_proc_ids
481
482 subroutine omp_get_place_proc_ids_8 (place_num, ids)
483 integer (8), intent(in) :: place_num
484 integer (8), intent(out) :: ids(*)
485 end subroutine omp_get_place_proc_ids_8
486 end interface
487
488 interface
489 function omp_get_place_num ()
490 integer (4) :: omp_get_place_num
491 end function omp_get_place_num
492 end interface
493
494 interface
495 function omp_get_partition_num_places ()
496 integer (4) :: omp_get_partition_num_places
497 end function omp_get_partition_num_places
498 end interface
499
500 interface omp_get_partition_place_nums
501 subroutine omp_get_partition_place_nums (place_nums)
502 integer (4), intent(out) :: place_nums(*)
503 end subroutine omp_get_partition_place_nums
504
505 subroutine omp_get_partition_place_nums_8 (place_nums)
506 integer (8), intent(out) :: place_nums(*)
507 end subroutine omp_get_partition_place_nums_8
508 end interface
509
acf0174b
JJ
510 interface omp_set_default_device
511 subroutine omp_set_default_device (device_num)
512 integer (4), intent (in) :: device_num
513 end subroutine omp_set_default_device
514 subroutine omp_set_default_device_8 (device_num)
515 integer (8), intent (in) :: device_num
516 end subroutine omp_set_default_device_8
517 end interface
518
519 interface
520 function omp_get_default_device ()
521 integer (4) :: omp_get_default_device
522 end function omp_get_default_device
523 end interface
524
525 interface
526 function omp_get_num_devices ()
527 integer (4) :: omp_get_num_devices
528 end function omp_get_num_devices
529 end interface
530
531 interface
532 function omp_get_num_teams ()
533 integer (4) :: omp_get_num_teams
534 end function omp_get_num_teams
535 end interface
536
537 interface
538 function omp_get_team_num ()
539 integer (4) :: omp_get_team_num
540 end function omp_get_team_num
541 end interface
542
543 interface
544 function omp_is_initial_device ()
545 logical (4) :: omp_is_initial_device
546 end function omp_is_initial_device
547 end interface
548
d9a6bd32
JJ
549 interface
550 function omp_get_initial_device ()
551 integer (4) :: omp_get_initial_device
552 end function omp_get_initial_device
553 end interface
554
0bac793e
CLT
555 interface
556 function omp_get_device_num ()
557 integer (4) :: omp_get_device_num
558 end function omp_get_device_num
559 end interface
560
d9a6bd32
JJ
561 interface
562 function omp_get_max_task_priority ()
563 integer (4) :: omp_get_max_task_priority
564 end function omp_get_max_task_priority
565 end interface
566
07dd3bcd
JJ
567 interface omp_set_num_teams
568 subroutine omp_set_num_teams (num_teams)
569 integer (4), intent (in) :: num_teams
570 end subroutine omp_set_num_teams
571 subroutine omp_set_num_teams_8 (num_teams)
572 integer (8), intent (in) :: num_teams
573 end subroutine omp_set_num_teams_8
574 end interface
575
576 interface
577 function omp_get_max_teams ()
578 integer (4) :: omp_get_max_teams
579 end function omp_get_max_teams
580 end interface
581
582 interface omp_set_teams_thread_limit
583 subroutine omp_set_teams_thread_limit (thread_limit)
584 integer (4), intent (in) :: thread_limit
585 end subroutine omp_set_teams_thread_limit
586 subroutine omp_set_teams_thread_limit_8 (thread_limit)
587 integer (8), intent (in) :: thread_limit
588 end subroutine omp_set_teams_thread_limit_8
589 end interface
590
591 interface
592 function omp_get_teams_thread_limit ()
593 integer (4) :: omp_get_teams_thread_limit
594 end function omp_get_teams_thread_limit
595 end interface
596
a6d22fb2
KCY
597 interface
598 subroutine omp_fulfill_event (event)
599 use omp_lib_kinds
600 integer (kind=omp_event_handle_kind), &
601 value, intent(in) :: event
602 end subroutine omp_fulfill_event
603 end interface
604
28567c40
JJ
605 interface
606 subroutine omp_set_affinity_format (format)
607 character(len=*), intent(in) :: format
608 end subroutine omp_set_affinity_format
609 end interface
610
611 interface
612 function omp_get_affinity_format (buffer)
613 integer (4) :: omp_get_affinity_format
614 character(len=*), intent(out) :: buffer
615 end function omp_get_affinity_format
616 end interface
617
618 interface
619 subroutine omp_display_affinity (format)
620 character(len=*), intent(in) :: format
621 end subroutine omp_display_affinity
622 end interface
623
624 interface
625 function omp_capture_affinity (buffer, format)
626 integer (4) :: omp_capture_affinity
627 character(len=*), intent(out) :: buffer
628 character(len=*), intent(in) :: format
629 end function omp_capture_affinity
630 end interface
631
632 interface
633 function omp_pause_resource (kind, device_num)
634 use omp_lib_kinds
635 integer (4) :: omp_pause_resource
636 integer (kind=omp_pause_resource_kind), &
637 intent(in) :: kind
638 integer (4) :: device_num
639 end function
640 end interface
641
642 interface
643 function omp_pause_resource_all (kind)
644 use omp_lib_kinds
645 integer (4) :: omp_pause_resource_all
646 integer (kind=omp_pause_resource_kind), &
647 intent(in) :: kind
648 end function
649 end interface
650
fff15bad
TB
651 interface omp_init_allocator
652 function omp_init_allocator (memspace, ntraits, traits)
653 use omp_lib_kinds
654 integer (kind=omp_allocator_handle_kind) omp_init_allocator
655 integer (kind=omp_memspace_handle_kind), &
656 intent(in) :: memspace
657 integer (4), intent(in) :: ntraits
658 type (omp_alloctrait), intent(in) :: traits(*)
659 end function
660 function omp_init_allocator_8 (memspace, ntraits, traits)
661 use omp_lib_kinds
662 integer (kind=omp_allocator_handle_kind) omp_init_allocator_8
663 integer (kind=omp_memspace_handle_kind), &
664 intent(in) :: memspace
665 integer (8), intent(in) :: ntraits
666 type (omp_alloctrait), intent(in) :: traits(*)
667 end function
668 end interface
669
670 interface
671 subroutine omp_destroy_allocator (allocator)
672 use omp_lib_kinds
673 integer (kind=omp_allocator_handle_kind), &
674 intent(in) :: allocator
675 end subroutine
676 end interface
677
678 interface
679 subroutine omp_set_default_allocator (allocator)
680 use omp_lib_kinds
681 integer (kind=omp_allocator_handle_kind), &
682 intent(in) :: allocator
683 end subroutine
684 end interface
685
686 interface
687 function omp_get_default_allocator ()
688 use omp_lib_kinds
689 integer (kind=omp_allocator_handle_kind) &
690 omp_get_default_allocator
691 end function
692 end interface
693
7123ae24
UD
694 interface omp_display_env
695 subroutine omp_display_env (verbose)
696 logical (4),intent (in) :: verbose
697 end subroutine omp_display_env
698 subroutine omp_display_env_8 (verbose)
699 logical (8),intent (in) :: verbose
700 end subroutine omp_display_env_8
701 end interface
702
76bb3c50
TB
703 interface
704 function omp_alloc (size, allocator) bind(c)
705 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
706 import :: omp_allocator_handle_kind
707 type(c_ptr) :: omp_alloc
708 integer(c_size_t), value :: size
709 integer(omp_allocator_handle_kind), value :: allocator
710 end function omp_alloc
711 end interface
712
70de20db
TB
713 interface
714 function omp_aligned_alloc (alignment, size, allocator) bind(c)
715 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
716 import :: omp_allocator_handle_kind
717 type(c_ptr) :: omp_aligned_alloc
718 integer(c_size_t), value :: alignment, size
719 integer(omp_allocator_handle_kind), value :: allocator
720 end function omp_aligned_alloc
721 end interface
722
76bb3c50
TB
723 interface
724 subroutine omp_free(ptr, allocator) bind(c)
725 use, intrinsic :: iso_c_binding, only : c_ptr
726 import :: omp_allocator_handle_kind
727 type(c_ptr), value :: ptr
728 integer(omp_allocator_handle_kind), value :: allocator
70de20db
TB
729 end subroutine omp_free
730 end interface
731
732 interface
733 function omp_calloc (nmemb, size, allocator) bind(c)
734 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
735 import :: omp_allocator_handle_kind
736 type(c_ptr) :: omp_calloc
737 integer(c_size_t), value :: nmemb, size
738 integer(omp_allocator_handle_kind), value :: allocator
739 end function omp_calloc
740 end interface
741
742 interface
743 function omp_aligned_calloc (alignment, nmemb, size, allocator) bind(c)
744 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
745 import :: omp_allocator_handle_kind
746 type(c_ptr) :: omp_aligned_calloc
747 integer(c_size_t), value :: alignment, nmemb, size
748 integer(omp_allocator_handle_kind), value :: allocator
749 end function omp_aligned_calloc
750 end interface
751
752 interface
753 function omp_realloc (ptr, size, allocator, free_allocator) bind(c)
754 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
755 import :: omp_allocator_handle_kind
756 type(c_ptr) :: omp_realloc
757 type(c_ptr), value :: ptr
758 integer(c_size_t), value :: size
759 integer(omp_allocator_handle_kind), value :: allocator, free_allocator
760 end function omp_realloc
76bb3c50
TB
761 end interface
762
763 interface
764 function omp_target_alloc (size, device_num) bind(c)
765 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
766 type(c_ptr) :: omp_target_alloc
767 integer(c_size_t), value :: size
768 integer(c_int), value :: device_num
769 end function omp_target_alloc
770 end interface
771
772 interface
773 subroutine omp_target_free (device_ptr, device_num) bind(c)
774 use, intrinsic :: iso_c_binding, only : c_ptr, c_int
775 type(c_ptr), value :: device_ptr
776 integer(c_int), value :: device_num
777 end subroutine omp_target_free
778 end interface
779
780 interface
781 function omp_target_is_present (ptr, device_num) bind(c)
782 use, intrinsic :: iso_c_binding, only : c_ptr, c_int
783 integer(c_int) :: omp_target_is_present
784 type(c_ptr), value :: ptr
785 integer(c_int), value :: device_num
786 end function omp_target_is_present
787 end interface
788
789 interface
790 function omp_target_memcpy (dst, src, length, dst_offset, &
791 src_offset, dst_device_num, &
792 src_device_num) bind(c)
793 use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
794 integer(c_int) :: omp_target_memcpy
795 type(c_ptr), value :: dst, src
796 integer(c_size_t), value :: length, dst_offset, src_offset
797 integer(c_int), value :: dst_device_num, src_device_num
798 end function omp_target_memcpy
799 end interface
800
801 interface
802 function omp_target_memcpy_rect (dst,src,element_size, num_dims, &
803 volume, dst_offsets, src_offsets, &
804 dst_dimensions, src_dimensions, &
805 dst_device_num, src_device_num) &
806 bind(c)
807 use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
808 integer(c_int) :: omp_target_memcpy_rect
809 type(c_ptr), value :: dst, src
810 integer(c_size_t), value :: element_size
811 integer(c_int), value :: num_dims, dst_device_num, src_device_num
812 integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), &
813 src_offsets(*), dst_dimensions(*), &
814 src_dimensions(*)
815 end function omp_target_memcpy_rect
816 end interface
817
818 interface
819 function omp_target_associate_ptr (host_ptr, device_ptr, size, &
820 device_offset, device_num) bind(c)
821 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
822 integer(c_int) :: omp_target_associate_ptr
823 type(c_ptr), value :: host_ptr, device_ptr
824 integer(c_size_t), value :: size, device_offset
825 integer(c_int), value :: device_num
826 end function omp_target_associate_ptr
827 end interface
828
829 interface
830 function omp_target_disassociate_ptr (ptr, device_num) bind(c)
831 use, intrinsic :: iso_c_binding, only : c_ptr, c_int
832 integer(c_int) :: omp_target_disassociate_ptr
833 type(c_ptr), value :: ptr
834 integer(c_int), value :: device_num
835 end function omp_target_disassociate_ptr
836 end interface
837
10508db8
KCY
838#if _OPENMP >= 201811
839!GCC$ ATTRIBUTES DEPRECATED :: omp_get_nested, omp_set_nested
432de084
TB
840#endif
841
842#if _OPENMP >= 202011
f7097793 843!GCC$ ATTRIBUTES DEPRECATED :: omp_proc_bind_master, omp_atv_sequential
10508db8
KCY
844#endif
845
953ff289 846 end module omp_lib