xref: /netbsd-src/external/gpl3/gcc/dist/libgomp/omp_lib.h.in (revision 345cf9fb81bd0411c53e25d62cd93bdcaa865312)
1!  Copyright (C) 2005-2022 Free Software Foundation, Inc.
2!  Contributed by Jakub Jelinek <jakub@redhat.com>.
3
4!  This file is part of the GNU Offloading and Multi Processing Library
5!  (libgomp).
6
7!  Libgomp is free software; you can redistribute it and/or modify it
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.
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
14!  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15!  more details.
16
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.
20
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/>.
25
26      integer omp_lock_kind, omp_nest_lock_kind, openmp_version
27      parameter (omp_lock_kind = @OMP_LOCK_KIND@)
28      parameter (omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@)
29      integer omp_depend_kind
30      parameter (omp_depend_kind = @OMP_DEPEND_KIND@)
31      integer omp_sched_kind
32      parameter (omp_sched_kind = 4)
33      integer (omp_sched_kind) omp_sched_static, omp_sched_dynamic
34      integer (omp_sched_kind) omp_sched_guided, omp_sched_auto
35      parameter (omp_sched_static = 1)
36      parameter (omp_sched_dynamic = 2)
37      parameter (omp_sched_guided = 3)
38      parameter (omp_sched_auto = 4)
39      integer omp_proc_bind_kind
40      parameter (omp_proc_bind_kind = 4)
41      integer (omp_proc_bind_kind) omp_proc_bind_false
42      integer (omp_proc_bind_kind) omp_proc_bind_true
43      integer (omp_proc_bind_kind) omp_proc_bind_primary
44      integer (omp_proc_bind_kind) omp_proc_bind_master
45      integer (omp_proc_bind_kind) omp_proc_bind_close
46      integer (omp_proc_bind_kind) omp_proc_bind_spread
47      parameter (omp_proc_bind_false = 0)
48      parameter (omp_proc_bind_true = 1)
49      parameter (omp_proc_bind_primary = 2)
50      parameter (omp_proc_bind_master = 2)
51      parameter (omp_proc_bind_close = 3)
52      parameter (omp_proc_bind_spread = 4)
53      integer omp_sync_hint_kind
54      integer omp_lock_hint_kind
55      parameter (omp_sync_hint_kind = 4)
56      parameter (omp_lock_hint_kind = omp_sync_hint_kind)
57      integer (omp_sync_hint_kind) omp_sync_hint_none
58      integer (omp_lock_hint_kind) omp_lock_hint_none
59      integer (omp_sync_hint_kind) omp_sync_hint_uncontended
60      integer (omp_lock_hint_kind) omp_lock_hint_uncontended
61      integer (omp_sync_hint_kind) omp_sync_hint_contended
62      integer (omp_sync_hint_kind) omp_lock_hint_contended
63      integer (omp_lock_hint_kind) omp_sync_hint_nonspeculative
64      integer (omp_lock_hint_kind) omp_lock_hint_nonspeculative
65      integer (omp_sync_hint_kind) omp_sync_hint_speculative
66      integer (omp_lock_hint_kind) omp_lock_hint_speculative
67      parameter (omp_sync_hint_none = 0)
68      parameter (omp_lock_hint_none = 0)
69      parameter (omp_sync_hint_uncontended = 1)
70      parameter (omp_lock_hint_uncontended = 1)
71      parameter (omp_sync_hint_contended = 2)
72      parameter (omp_lock_hint_contended = 2)
73      parameter (omp_sync_hint_nonspeculative = 4)
74      parameter (omp_lock_hint_nonspeculative = 4)
75      parameter (omp_sync_hint_speculative = 8)
76      parameter (omp_lock_hint_speculative = 8)
77      parameter (openmp_version = 201511)
78      integer omp_pause_resource_kind
79      parameter (omp_pause_resource_kind = 4)
80      integer (omp_pause_resource_kind) omp_pause_soft
81      integer (omp_pause_resource_kind) omp_pause_hard
82      parameter (omp_pause_soft = 1)
83      parameter (omp_pause_hard = 2)
84
85      integer omp_allocator_handle_kind, omp_alloctrait_key_kind
86      integer omp_alloctrait_val_kind, omp_memspace_handle_kind
87      integer omp_event_handle_kind
88      parameter (omp_allocator_handle_kind = @INTPTR_T_KIND@)
89      parameter (omp_alloctrait_key_kind = 4)
90      parameter (omp_alloctrait_val_kind = @INTPTR_T_KIND@)
91      parameter (omp_memspace_handle_kind = @INTPTR_T_KIND@)
92      parameter (omp_event_handle_kind = @INTPTR_T_KIND@)
93      integer (omp_alloctrait_key_kind) omp_atk_sync_hint
94      integer (omp_alloctrait_key_kind) omp_atk_alignment
95      integer (omp_alloctrait_key_kind) omp_atk_access
96      integer (omp_alloctrait_key_kind) omp_atk_pool_size
97      integer (omp_alloctrait_key_kind) omp_atk_fallback
98      integer (omp_alloctrait_key_kind) omp_atk_fb_data
99      integer (omp_alloctrait_key_kind) omp_atk_pinned
100      integer (omp_alloctrait_key_kind) omp_atk_partition
101      parameter (omp_atk_sync_hint = 1)
102      parameter (omp_atk_alignment = 2)
103      parameter (omp_atk_access = 3)
104      parameter (omp_atk_pool_size = 4)
105      parameter (omp_atk_fallback = 5)
106      parameter (omp_atk_fb_data = 6)
107      parameter (omp_atk_pinned = 7)
108      parameter (omp_atk_partition = 8)
109      integer (omp_alloctrait_val_kind) omp_atv_false
110      integer (omp_alloctrait_val_kind) omp_atv_true
111      integer (omp_alloctrait_val_kind) omp_atv_default
112      integer (omp_alloctrait_val_kind) omp_atv_contended
113      integer (omp_alloctrait_val_kind) omp_atv_uncontended
114      integer (omp_alloctrait_val_kind) omp_atv_serialized
115      integer (omp_alloctrait_val_kind) omp_atv_sequential
116      integer (omp_alloctrait_val_kind) omp_atv_private
117      integer (omp_alloctrait_val_kind) omp_atv_all
118      integer (omp_alloctrait_val_kind) omp_atv_thread
119      integer (omp_alloctrait_val_kind) omp_atv_pteam
120      integer (omp_alloctrait_val_kind) omp_atv_cgroup
121      integer (omp_alloctrait_val_kind) omp_atv_default_mem_fb
122      integer (omp_alloctrait_val_kind) omp_atv_null_fb
123      integer (omp_alloctrait_val_kind) omp_atv_abort_fb
124      integer (omp_alloctrait_val_kind) omp_atv_allocator_fb
125      integer (omp_alloctrait_val_kind) omp_atv_environment
126      integer (omp_alloctrait_val_kind) omp_atv_nearest
127      integer (omp_alloctrait_val_kind) omp_atv_blocked
128      integer (omp_alloctrait_val_kind) omp_atv_interleaved
129      parameter (omp_atv_default = -1)
130      parameter (omp_atv_false = 0)
131      parameter (omp_atv_true = 1)
132      parameter (omp_atv_contended = 3)
133      parameter (omp_atv_uncontended = 4)
134      parameter (omp_atv_serialized = 5)
135      parameter (omp_atv_sequential = omp_atv_serialized)
136      parameter (omp_atv_private = 6)
137      parameter (omp_atv_all = 7)
138      parameter (omp_atv_thread = 8)
139      parameter (omp_atv_pteam = 9)
140      parameter (omp_atv_cgroup = 10)
141      parameter (omp_atv_default_mem_fb = 11)
142      parameter (omp_atv_null_fb = 12)
143      parameter (omp_atv_abort_fb = 13)
144      parameter (omp_atv_allocator_fb = 14)
145      parameter (omp_atv_environment = 15)
146      parameter (omp_atv_nearest = 16)
147      parameter (omp_atv_blocked = 17)
148      parameter (omp_atv_interleaved = 18)
149      integer (omp_allocator_handle_kind) omp_null_allocator
150      integer (omp_allocator_handle_kind) omp_default_mem_alloc
151      integer (omp_allocator_handle_kind) omp_large_cap_mem_alloc
152      integer (omp_allocator_handle_kind) omp_const_mem_alloc
153      integer (omp_allocator_handle_kind) omp_high_bw_mem_alloc
154      integer (omp_allocator_handle_kind) omp_low_lat_mem_alloc
155      integer (omp_allocator_handle_kind) omp_cgroup_mem_alloc
156      integer (omp_allocator_handle_kind) omp_pteam_mem_alloc
157      integer (omp_allocator_handle_kind) omp_thread_mem_alloc
158      parameter (omp_null_allocator = 0)
159      parameter (omp_default_mem_alloc = 1)
160      parameter (omp_large_cap_mem_alloc = 2)
161      parameter (omp_const_mem_alloc = 3)
162      parameter (omp_high_bw_mem_alloc = 4)
163      parameter (omp_low_lat_mem_alloc = 5)
164      parameter (omp_cgroup_mem_alloc = 6)
165      parameter (omp_pteam_mem_alloc = 7)
166      parameter (omp_thread_mem_alloc = 8)
167      integer (omp_memspace_handle_kind) omp_default_mem_space
168      integer (omp_memspace_handle_kind) omp_large_cap_mem_space
169      integer (omp_memspace_handle_kind) omp_const_mem_space
170      integer (omp_memspace_handle_kind) omp_high_bw_mem_space
171      integer (omp_memspace_handle_kind) omp_low_lat_mem_space
172      parameter (omp_default_mem_space = 0)
173      parameter (omp_large_cap_mem_space = 1)
174      parameter (omp_const_mem_space = 2)
175      parameter (omp_high_bw_mem_space = 3)
176      parameter (omp_low_lat_mem_space = 4)
177
178      type omp_alloctrait
179        integer (omp_alloctrait_key_kind) key
180        integer (omp_alloctrait_val_kind) value
181      end type omp_alloctrait
182
183      external omp_init_lock, omp_init_nest_lock
184      external omp_init_lock_with_hint
185      external omp_init_nest_lock_with_hint
186      external omp_destroy_lock, omp_destroy_nest_lock
187      external omp_set_lock, omp_set_nest_lock
188      external omp_unset_lock, omp_unset_nest_lock
189      external omp_set_dynamic, omp_set_nested
190      external omp_set_num_threads
191
192      external omp_get_dynamic, omp_get_nested
193      logical(4) omp_get_dynamic, omp_get_nested
194      external omp_test_lock, omp_in_parallel
195      logical(4) omp_test_lock, omp_in_parallel
196
197      external omp_get_max_threads, omp_get_num_procs
198      integer(4) omp_get_max_threads, omp_get_num_procs
199      external omp_get_num_threads, omp_get_thread_num
200      integer(4) omp_get_num_threads, omp_get_thread_num
201      external omp_test_nest_lock
202      integer(4) omp_test_nest_lock
203
204      external omp_get_wtick, omp_get_wtime
205      double precision omp_get_wtick, omp_get_wtime
206
207      external omp_set_schedule, omp_get_schedule
208      external omp_get_thread_limit, omp_set_max_active_levels
209      external omp_get_max_active_levels, omp_get_level
210      external omp_get_ancestor_thread_num, omp_get_team_size
211      external omp_get_active_level
212      external omp_get_supported_active_levels
213      integer(4) omp_get_thread_limit, omp_get_max_active_levels
214      integer(4) omp_get_level, omp_get_ancestor_thread_num
215      integer(4) omp_get_team_size, omp_get_active_level
216      integer(4) omp_get_supported_active_levels
217
218      external omp_in_final
219      logical(4) omp_in_final
220
221      external omp_get_cancellation
222      logical(4) omp_get_cancellation
223
224      external omp_get_proc_bind
225      integer(omp_proc_bind_kind) omp_get_proc_bind
226
227      integer(4) omp_get_num_places
228      external omp_get_num_places
229      integer(4) omp_get_place_num_procs
230      external omp_get_place_num_procs
231      external omp_get_place_proc_ids
232      integer(4) omp_get_place_num
233      external omp_get_place_num
234      integer(4) omp_get_partition_num_places
235      external omp_get_partition_num_places
236      external omp_get_partition_place_nums
237
238      external omp_set_default_device, omp_get_default_device
239      external omp_get_num_devices, omp_get_num_teams
240      external omp_get_team_num
241      integer(4) omp_get_default_device, omp_get_num_devices
242      integer(4) omp_get_num_teams, omp_get_team_num
243
244      external omp_is_initial_device
245      logical(4) omp_is_initial_device
246      external omp_get_initial_device
247      integer(4) omp_get_initial_device
248
249      external omp_get_device_num
250      integer(4) omp_get_device_num
251
252      external omp_get_max_task_priority
253      integer(4) omp_get_max_task_priority
254
255      external omp_set_num_teams, omp_set_teams_thread_limit
256      external omp_get_max_teams, omp_get_teams_thread_limit
257      integer(4) omp_get_max_teams, omp_get_teams_thread_limit
258
259      external omp_fulfill_event
260
261      external omp_set_affinity_format, omp_get_affinity_format
262      external omp_display_affinity, omp_capture_affinity
263      integer(4) omp_get_affinity_format
264      integer(4) omp_capture_affinity
265
266      external omp_pause_resource, omp_pause_resource_all
267      integer(4) omp_pause_resource
268      integer(4) omp_pause_resource_all
269
270      external omp_init_allocator
271      integer (omp_allocator_handle_kind) omp_init_allocator
272      external omp_destroy_allocator
273      external omp_set_default_allocator
274      external omp_get_default_allocator
275      integer (omp_allocator_handle_kind) omp_get_default_allocator
276
277      external omp_display_env
278
279      interface
280        function omp_alloc (size, allocator) bind(c)
281          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
282          use, intrinsic :: omp_lib_kinds
283          type(c_ptr) :: omp_alloc
284          integer(c_size_t), value :: size
285          integer(omp_allocator_handle_kind), value :: allocator
286        end function omp_alloc
287      end interface
288
289      interface
290        function omp_aligned_alloc (alignment, size, allocator) bind(c)
291          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
292          use, intrinsic :: omp_lib_kinds
293          type(c_ptr) :: omp_aligned_alloc
294          integer(c_size_t), value :: alignment, size
295          integer(omp_allocator_handle_kind), value :: allocator
296        end function omp_aligned_alloc
297      end interface
298
299      interface
300        subroutine omp_free(ptr, allocator) bind(c)
301          use, intrinsic :: iso_c_binding, only : c_ptr
302          use, intrinsic :: omp_lib_kinds
303          type(c_ptr), value :: ptr
304          integer(omp_allocator_handle_kind), value :: allocator
305        end subroutine omp_free
306      end interface
307
308      interface
309        function omp_calloc (nmemb, size, allocator) bind(c)
310          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
311          use, intrinsic :: omp_lib_kinds
312          type(c_ptr) :: omp_calloc
313          integer(c_size_t), value :: nmemb, size
314          integer(omp_allocator_handle_kind), value :: allocator
315        end function omp_calloc
316      end interface
317
318      interface
319        function omp_aligned_calloc (alignment, nmemb, size, allocator)   &
320     &      bind(c)
321          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
322          use, intrinsic :: omp_lib_kinds
323          type(c_ptr) :: omp_aligned_calloc
324          integer(c_size_t), value :: alignment, nmemb, size
325          integer(omp_allocator_handle_kind), value :: allocator
326        end function omp_aligned_calloc
327      end interface
328
329      interface
330        function omp_realloc (ptr, size, allocator, free_allocator)      &
331     &      bind(c)
332          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
333          use, intrinsic :: omp_lib_kinds
334          type(c_ptr) :: omp_realloc
335          type(c_ptr), value :: ptr
336          integer(c_size_t), value :: size
337          integer(omp_allocator_handle_kind), value :: allocator
338          integer(omp_allocator_handle_kind), value :: free_allocator
339        end function omp_realloc
340      end interface
341
342      interface
343        function omp_target_alloc (size, device_num) bind(c)
344          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
345          type(c_ptr) :: omp_target_alloc
346          integer(c_size_t), value :: size
347          integer(c_int), value :: device_num
348        end function omp_target_alloc
349      end interface
350
351      interface
352        subroutine omp_target_free (device_ptr, device_num) bind(c)
353          use, intrinsic :: iso_c_binding, only : c_ptr, c_int
354          type(c_ptr), value :: device_ptr
355          integer(c_int), value :: device_num
356        end subroutine omp_target_free
357      end interface
358
359      interface
360        function omp_target_is_present (ptr, device_num) bind(c)
361          use, intrinsic :: iso_c_binding, only : c_ptr, c_int
362          integer(c_int) :: omp_target_is_present
363          type(c_ptr), value :: ptr
364          integer(c_int), value :: device_num
365        end function omp_target_is_present
366      end interface
367
368      interface
369        function omp_target_memcpy (dst, src, length, dst_offset,          &
370     &                              src_offset, dst_device_num,            &
371     &                              src_device_num) bind(c)
372          use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
373          integer(c_int) :: omp_target_memcpy
374          type(c_ptr), value :: dst, src
375          integer(c_size_t), value :: length, dst_offset, src_offset
376          integer(c_int), value :: dst_device_num, src_device_num
377        end function omp_target_memcpy
378      end interface
379
380      interface
381        function omp_target_memcpy_rect (dst,src,element_size, num_dims,   &
382     &                                   volume, dst_offsets,              &
383     &                                   src_offsets, dst_dimensions,      &
384     &                                   src_dimensions, dst_device_num,   &
385     &                                   src_device_num) bind(c)
386          use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
387          integer(c_int) :: omp_target_memcpy_rect
388          type(c_ptr), value :: dst, src
389          integer(c_size_t), value :: element_size
390          integer(c_int), value :: num_dims
391          integer(c_int), value :: dst_device_num, src_device_num
392          integer(c_size_t), intent(in) :: volume(*), dst_offsets(*)
393          integer(c_size_t), intent(in) :: src_offsets(*)
394          integer(c_size_t), intent(in) :: dst_dimensions(*)
395          integer(c_size_t), intent(in) :: src_dimensions(*)
396        end function omp_target_memcpy_rect
397      end interface
398
399      interface
400        function omp_target_associate_ptr (host_ptr, device_ptr, size,     &
401     &                                     device_offset, device_num)      &
402     &      bind(c)
403          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
404          integer(c_int) :: omp_target_associate_ptr
405          type(c_ptr), value :: host_ptr, device_ptr
406          integer(c_size_t), value :: size, device_offset
407          integer(c_int), value :: device_num
408        end function omp_target_associate_ptr
409      end interface
410
411      interface
412        function omp_target_disassociate_ptr (ptr, device_num) bind(c)
413          use, intrinsic :: iso_c_binding, only : c_ptr, c_int
414          integer(c_int) :: omp_target_disassociate_ptr
415          type(c_ptr), value :: ptr
416          integer(c_int), value :: device_num
417        end function omp_target_disassociate_ptr
418      end interface
419