xref: /netbsd-src/external/gpl3/gcc.old/dist/libgomp/omp_lib.f90.in (revision b7b7574d3bf8eeb51a1fa3977b59142ec6434a55)
1!  Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
2!  Contributed by Jakub Jelinek <jakub@redhat.com>.
3
4!  This file is part of the GNU OpenMP Library (libgomp).
5
6!  Libgomp is free software; you can redistribute it and/or modify it
7!  under the terms of the GNU General Public License as published by
8!  the Free Software Foundation; either version 3, or (at your option)
9!  any later version.
10
11!  Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
12!  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13!  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14!  more details.
15
16!  Under Section 7 of GPL version 3, you are granted additional
17!  permissions described in the GCC Runtime Library Exception, version
18!  3.1, as published by the Free Software Foundation.
19
20!  You should have received a copy of the GNU General Public License and
21!  a copy of the GCC Runtime Library Exception along with this program;
22!  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23!  <http://www.gnu.org/licenses/>.
24
25      module omp_lib_kinds
26        implicit none
27        integer, parameter :: omp_integer_kind = 4
28        integer, parameter :: omp_logical_kind = 4
29        integer, parameter :: omp_lock_kind = @OMP_LOCK_KIND@
30        integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@
31        integer, parameter :: omp_sched_kind = 4
32      end module
33
34      module omp_lib
35        use omp_lib_kinds
36        implicit none
37        integer, parameter :: openmp_version = 200805
38        integer (omp_sched_kind), parameter :: omp_sched_static = 1
39        integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2
40        integer (omp_sched_kind), parameter :: omp_sched_guided = 3
41        integer (omp_sched_kind), parameter :: omp_sched_auto = 4
42
43        interface
44          subroutine omp_init_lock (lock)
45            use omp_lib_kinds
46            integer (omp_lock_kind), intent (out) :: lock
47          end subroutine omp_init_lock
48        end interface
49
50        interface
51          subroutine omp_init_nest_lock (lock)
52            use omp_lib_kinds
53            integer (omp_nest_lock_kind), intent (out) :: lock
54          end subroutine omp_init_nest_lock
55        end interface
56
57        interface
58          subroutine omp_destroy_lock (lock)
59            use omp_lib_kinds
60            integer (omp_lock_kind), intent (inout) :: lock
61          end subroutine omp_destroy_lock
62        end interface
63
64        interface
65          subroutine omp_destroy_nest_lock (lock)
66            use omp_lib_kinds
67            integer (omp_nest_lock_kind), intent (inout) :: lock
68          end subroutine omp_destroy_nest_lock
69        end interface
70
71        interface
72          subroutine omp_set_lock (lock)
73            use omp_lib_kinds
74            integer (omp_lock_kind), intent (inout) :: lock
75          end subroutine omp_set_lock
76        end interface
77
78        interface
79          subroutine omp_set_nest_lock (lock)
80            use omp_lib_kinds
81            integer (omp_nest_lock_kind), intent (inout) :: lock
82          end subroutine omp_set_nest_lock
83        end interface
84
85        interface
86          subroutine omp_unset_lock (lock)
87            use omp_lib_kinds
88            integer (omp_lock_kind), intent (inout) :: lock
89          end subroutine omp_unset_lock
90        end interface
91
92        interface
93          subroutine omp_unset_nest_lock (lock)
94            use omp_lib_kinds
95            integer (omp_nest_lock_kind), intent (inout) :: lock
96          end subroutine omp_unset_nest_lock
97        end interface
98
99        interface omp_set_dynamic
100          subroutine omp_set_dynamic (set)
101            logical (4), intent (in) :: set
102          end subroutine omp_set_dynamic
103          subroutine omp_set_dynamic_8 (set)
104            logical (8), intent (in) :: set
105          end subroutine omp_set_dynamic_8
106        end interface
107
108        interface omp_set_nested
109          subroutine omp_set_nested (set)
110            logical (4), intent (in) :: set
111          end subroutine omp_set_nested
112          subroutine omp_set_nested_8 (set)
113            logical (8), intent (in) :: set
114          end subroutine omp_set_nested_8
115        end interface
116
117        interface omp_set_num_threads
118          subroutine omp_set_num_threads (set)
119            integer (4), intent (in) :: set
120          end subroutine omp_set_num_threads
121          subroutine omp_set_num_threads_8 (set)
122            integer (8), intent (in) :: set
123          end subroutine omp_set_num_threads_8
124        end interface
125
126        interface
127          function omp_get_dynamic ()
128            use omp_lib_kinds
129            logical (omp_logical_kind) :: omp_get_dynamic
130          end function omp_get_dynamic
131        end interface
132
133        interface
134          function omp_get_nested ()
135            use omp_lib_kinds
136            logical (omp_logical_kind) :: omp_get_nested
137          end function omp_get_nested
138        end interface
139
140        interface
141          function omp_in_parallel ()
142            use omp_lib_kinds
143            logical (omp_logical_kind) :: omp_in_parallel
144          end function omp_in_parallel
145        end interface
146
147        interface
148          function omp_test_lock (lock)
149            use omp_lib_kinds
150            logical (omp_logical_kind) :: omp_test_lock
151            integer (omp_lock_kind), intent (inout) :: lock
152          end function omp_test_lock
153        end interface
154
155        interface
156          function omp_get_max_threads ()
157            use omp_lib_kinds
158            integer (omp_integer_kind) :: omp_get_max_threads
159          end function omp_get_max_threads
160        end interface
161
162        interface
163          function omp_get_num_procs ()
164            use omp_lib_kinds
165            integer (omp_integer_kind) :: omp_get_num_procs
166          end function omp_get_num_procs
167        end interface
168
169        interface
170          function omp_get_num_threads ()
171            use omp_lib_kinds
172            integer (omp_integer_kind) :: omp_get_num_threads
173          end function omp_get_num_threads
174        end interface
175
176        interface
177          function omp_get_thread_num ()
178            use omp_lib_kinds
179            integer (omp_integer_kind) :: omp_get_thread_num
180          end function omp_get_thread_num
181        end interface
182
183        interface
184          function omp_test_nest_lock (lock)
185            use omp_lib_kinds
186            integer (omp_integer_kind) :: omp_test_nest_lock
187            integer (omp_nest_lock_kind), intent (inout) :: lock
188          end function omp_test_nest_lock
189        end interface
190
191        interface
192          function omp_get_wtick ()
193            double precision :: omp_get_wtick
194          end function omp_get_wtick
195        end interface
196
197        interface
198          function omp_get_wtime ()
199            double precision :: omp_get_wtime
200          end function omp_get_wtime
201        end interface
202
203        interface omp_set_schedule
204          subroutine omp_set_schedule (kind, modifier)
205            use omp_lib_kinds
206            integer (omp_sched_kind), intent (in) :: kind
207            integer (4), intent (in) :: modifier
208          end subroutine omp_set_schedule
209          subroutine omp_set_schedule_8 (kind, modifier)
210            use omp_lib_kinds
211            integer (omp_sched_kind), intent (in) :: kind
212            integer (8), intent (in) :: modifier
213          end subroutine omp_set_schedule_8
214         end interface
215
216        interface omp_get_schedule
217          subroutine omp_get_schedule (kind, modifier)
218            use omp_lib_kinds
219            integer (omp_sched_kind), intent (out) :: kind
220            integer (4), intent (out) :: modifier
221          end subroutine omp_get_schedule
222          subroutine omp_get_schedule_8 (kind, modifier)
223            use omp_lib_kinds
224            integer (omp_sched_kind), intent (out) :: kind
225            integer (8), intent (out) :: modifier
226          end subroutine omp_get_schedule_8
227         end interface
228
229        interface
230          function omp_get_thread_limit ()
231            use omp_lib_kinds
232            integer (omp_integer_kind) :: omp_get_thread_limit
233          end function omp_get_thread_limit
234        end interface
235
236        interface omp_set_max_active_levels
237          subroutine omp_set_max_active_levels (max_levels)
238            use omp_lib_kinds
239            integer (4), intent (in) :: max_levels
240          end subroutine omp_set_max_active_levels
241          subroutine omp_set_max_active_levels_8 (max_levels)
242            use omp_lib_kinds
243            integer (8), intent (in) :: max_levels
244          end subroutine omp_set_max_active_levels_8
245        end interface
246
247        interface
248          function omp_get_max_active_levels ()
249            use omp_lib_kinds
250            integer (omp_integer_kind) :: omp_get_max_active_levels
251          end function omp_get_max_active_levels
252        end interface
253
254        interface
255          function omp_get_level ()
256            use omp_lib_kinds
257            integer (omp_integer_kind) :: omp_get_level
258          end function omp_get_level
259        end interface
260
261        interface omp_get_ancestor_thread_num
262          function omp_get_ancestor_thread_num (level)
263            use omp_lib_kinds
264            integer (4), intent (in) :: level
265            integer (omp_integer_kind) :: omp_get_ancestor_thread_num
266          end function omp_get_ancestor_thread_num
267          function omp_get_ancestor_thread_num_8 (level)
268            use omp_lib_kinds
269            integer (8), intent (in) :: level
270            integer (omp_integer_kind) :: omp_get_ancestor_thread_num_8
271          end function omp_get_ancestor_thread_num_8
272        end interface
273
274        interface omp_get_team_size
275          function omp_get_team_size (level)
276            use omp_lib_kinds
277            integer (4), intent (in) :: level
278            integer (omp_integer_kind) :: omp_get_team_size
279          end function omp_get_team_size
280          function omp_get_team_size_8 (level)
281            use omp_lib_kinds
282            integer (8), intent (in) :: level
283            integer (omp_integer_kind) :: omp_get_team_size_8
284          end function omp_get_team_size_8
285        end interface
286
287        interface
288          function omp_get_active_level ()
289            use omp_lib_kinds
290            integer (omp_integer_kind) :: omp_get_active_level
291          end function omp_get_active_level
292        end interface
293
294      end module omp_lib
295