1! Copyright (C) 2005-2015 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 module omp_lib_kinds 27 implicit none 28 integer, parameter :: omp_lock_kind = @OMP_LOCK_KIND@ 29 integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@ 30 integer, parameter :: omp_sched_kind = 4 31 integer, parameter :: omp_proc_bind_kind = 4 32 integer (omp_sched_kind), parameter :: omp_sched_static = 1 33 integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2 34 integer (omp_sched_kind), parameter :: omp_sched_guided = 3 35 integer (omp_sched_kind), parameter :: omp_sched_auto = 4 36 integer (omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0 37 integer (omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1 38 integer (omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2 39 integer (omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3 40 integer (omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4 41 end module 42 43 module omp_lib 44 use omp_lib_kinds 45 implicit none 46 integer, parameter :: openmp_version = 201307 47 48 interface 49 subroutine omp_init_lock (svar) 50 use omp_lib_kinds 51 integer (omp_lock_kind), intent (out) :: svar 52 end subroutine omp_init_lock 53 end interface 54 55 interface 56 subroutine omp_init_nest_lock (nvar) 57 use omp_lib_kinds 58 integer (omp_nest_lock_kind), intent (out) :: nvar 59 end subroutine omp_init_nest_lock 60 end interface 61 62 interface 63 subroutine omp_destroy_lock (svar) 64 use omp_lib_kinds 65 integer (omp_lock_kind), intent (inout) :: svar 66 end subroutine omp_destroy_lock 67 end interface 68 69 interface 70 subroutine omp_destroy_nest_lock (nvar) 71 use omp_lib_kinds 72 integer (omp_nest_lock_kind), intent (inout) :: nvar 73 end subroutine omp_destroy_nest_lock 74 end interface 75 76 interface 77 subroutine omp_set_lock (svar) 78 use omp_lib_kinds 79 integer (omp_lock_kind), intent (inout) :: svar 80 end subroutine omp_set_lock 81 end interface 82 83 interface 84 subroutine omp_set_nest_lock (nvar) 85 use omp_lib_kinds 86 integer (omp_nest_lock_kind), intent (inout) :: nvar 87 end subroutine omp_set_nest_lock 88 end interface 89 90 interface 91 subroutine omp_unset_lock (svar) 92 use omp_lib_kinds 93 integer (omp_lock_kind), intent (inout) :: svar 94 end subroutine omp_unset_lock 95 end interface 96 97 interface 98 subroutine omp_unset_nest_lock (nvar) 99 use omp_lib_kinds 100 integer (omp_nest_lock_kind), intent (inout) :: nvar 101 end subroutine omp_unset_nest_lock 102 end interface 103 104 interface omp_set_dynamic 105 subroutine omp_set_dynamic (dynamic_threads) 106 logical (4), intent (in) :: dynamic_threads 107 end subroutine omp_set_dynamic 108 subroutine omp_set_dynamic_8 (dynamic_threads) 109 logical (8), intent (in) :: dynamic_threads 110 end subroutine omp_set_dynamic_8 111 end interface 112 113 interface omp_set_nested 114 subroutine omp_set_nested (nested) 115 logical (4), intent (in) :: nested 116 end subroutine omp_set_nested 117 subroutine omp_set_nested_8 (nested) 118 logical (8), intent (in) :: nested 119 end subroutine omp_set_nested_8 120 end interface 121 122 interface omp_set_num_threads 123 subroutine omp_set_num_threads (num_threads) 124 integer (4), intent (in) :: num_threads 125 end subroutine omp_set_num_threads 126 subroutine omp_set_num_threads_8 (num_threads) 127 integer (8), intent (in) :: num_threads 128 end subroutine omp_set_num_threads_8 129 end interface 130 131 interface 132 function omp_get_dynamic () 133 logical (4) :: omp_get_dynamic 134 end function omp_get_dynamic 135 end interface 136 137 interface 138 function omp_get_nested () 139 logical (4) :: omp_get_nested 140 end function omp_get_nested 141 end interface 142 143 interface 144 function omp_in_parallel () 145 logical (4) :: omp_in_parallel 146 end function omp_in_parallel 147 end interface 148 149 interface 150 function omp_test_lock (svar) 151 use omp_lib_kinds 152 logical (4) :: omp_test_lock 153 integer (omp_lock_kind), intent (inout) :: svar 154 end function omp_test_lock 155 end interface 156 157 interface 158 function omp_get_max_threads () 159 integer (4) :: omp_get_max_threads 160 end function omp_get_max_threads 161 end interface 162 163 interface 164 function omp_get_num_procs () 165 integer (4) :: omp_get_num_procs 166 end function omp_get_num_procs 167 end interface 168 169 interface 170 function omp_get_num_threads () 171 integer (4) :: omp_get_num_threads 172 end function omp_get_num_threads 173 end interface 174 175 interface 176 function omp_get_thread_num () 177 integer (4) :: omp_get_thread_num 178 end function omp_get_thread_num 179 end interface 180 181 interface 182 function omp_test_nest_lock (nvar) 183 use omp_lib_kinds 184 integer (4) :: omp_test_nest_lock 185 integer (omp_nest_lock_kind), intent (inout) :: nvar 186 end function omp_test_nest_lock 187 end interface 188 189 interface 190 function omp_get_wtick () 191 double precision :: omp_get_wtick 192 end function omp_get_wtick 193 end interface 194 195 interface 196 function omp_get_wtime () 197 double precision :: omp_get_wtime 198 end function omp_get_wtime 199 end interface 200 201 interface omp_set_schedule 202 subroutine omp_set_schedule (kind, modifier) 203 use omp_lib_kinds 204 integer (omp_sched_kind), intent (in) :: kind 205 integer (4), intent (in) :: modifier 206 end subroutine omp_set_schedule 207 subroutine omp_set_schedule_8 (kind, modifier) 208 use omp_lib_kinds 209 integer (omp_sched_kind), intent (in) :: kind 210 integer (8), intent (in) :: modifier 211 end subroutine omp_set_schedule_8 212 end interface 213 214 interface omp_get_schedule 215 subroutine omp_get_schedule (kind, modifier) 216 use omp_lib_kinds 217 integer (omp_sched_kind), intent (out) :: kind 218 integer (4), intent (out) :: modifier 219 end subroutine omp_get_schedule 220 subroutine omp_get_schedule_8 (kind, modifier) 221 use omp_lib_kinds 222 integer (omp_sched_kind), intent (out) :: kind 223 integer (8), intent (out) :: modifier 224 end subroutine omp_get_schedule_8 225 end interface 226 227 interface 228 function omp_get_thread_limit () 229 integer (4) :: omp_get_thread_limit 230 end function omp_get_thread_limit 231 end interface 232 233 interface omp_set_max_active_levels 234 subroutine omp_set_max_active_levels (max_levels) 235 integer (4), intent (in) :: max_levels 236 end subroutine omp_set_max_active_levels 237 subroutine omp_set_max_active_levels_8 (max_levels) 238 integer (8), intent (in) :: max_levels 239 end subroutine omp_set_max_active_levels_8 240 end interface 241 242 interface 243 function omp_get_max_active_levels () 244 integer (4) :: omp_get_max_active_levels 245 end function omp_get_max_active_levels 246 end interface 247 248 interface 249 function omp_get_level () 250 integer (4) :: omp_get_level 251 end function omp_get_level 252 end interface 253 254 interface omp_get_ancestor_thread_num 255 function omp_get_ancestor_thread_num (level) 256 integer (4), intent (in) :: level 257 integer (4) :: omp_get_ancestor_thread_num 258 end function omp_get_ancestor_thread_num 259 function omp_get_ancestor_thread_num_8 (level) 260 integer (8), intent (in) :: level 261 integer (4) :: omp_get_ancestor_thread_num_8 262 end function omp_get_ancestor_thread_num_8 263 end interface 264 265 interface omp_get_team_size 266 function omp_get_team_size (level) 267 integer (4), intent (in) :: level 268 integer (4) :: omp_get_team_size 269 end function omp_get_team_size 270 function omp_get_team_size_8 (level) 271 integer (8), intent (in) :: level 272 integer (4) :: omp_get_team_size_8 273 end function omp_get_team_size_8 274 end interface 275 276 interface 277 function omp_get_active_level () 278 integer (4) :: omp_get_active_level 279 end function omp_get_active_level 280 end interface 281 282 interface 283 function omp_in_final () 284 logical (4) :: omp_in_final 285 end function omp_in_final 286 end interface 287 288 interface 289 function omp_get_cancellation () 290 logical (4) :: omp_get_cancellation 291 end function omp_get_cancellation 292 end interface 293 294 interface 295 function omp_get_proc_bind () 296 use omp_lib_kinds 297 integer (omp_proc_bind_kind) :: omp_get_proc_bind 298 end function omp_get_proc_bind 299 end interface 300 301 interface omp_set_default_device 302 subroutine omp_set_default_device (device_num) 303 integer (4), intent (in) :: device_num 304 end subroutine omp_set_default_device 305 subroutine omp_set_default_device_8 (device_num) 306 integer (8), intent (in) :: device_num 307 end subroutine omp_set_default_device_8 308 end interface 309 310 interface 311 function omp_get_default_device () 312 integer (4) :: omp_get_default_device 313 end function omp_get_default_device 314 end interface 315 316 interface 317 function omp_get_num_devices () 318 integer (4) :: omp_get_num_devices 319 end function omp_get_num_devices 320 end interface 321 322 interface 323 function omp_get_num_teams () 324 integer (4) :: omp_get_num_teams 325 end function omp_get_num_teams 326 end interface 327 328 interface 329 function omp_get_team_num () 330 integer (4) :: omp_get_team_num 331 end function omp_get_team_num 332 end interface 333 334 interface 335 function omp_is_initial_device () 336 logical (4) :: omp_is_initial_device 337 end function omp_is_initial_device 338 end interface 339 340 end module omp_lib 341