Bug Summary

File:projects/openmp/runtime/src/kmp_ftn_entry.h
Warning:line 123, column 3
Value stored to 'thread' is never read

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -triple x86_64-pc-linux-gnu -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name kmp_ftn_cdecl.cpp -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=cplusplus -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -mrelocation-model pic -pic-level 2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -momit-leaf-frame-pointer -ffunction-sections -fdata-sections -resource-dir /usr/lib/llvm-8/lib/clang/8.0.0 -D _DEBUG -D _GNU_SOURCE -D __STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS -D __STDC_LIMIT_MACROS -D omp_EXPORTS -I /build/llvm-toolchain-snapshot-8~svn345461/build-llvm/projects/openmp/runtime/src -I /build/llvm-toolchain-snapshot-8~svn345461/projects/openmp/runtime/src -I /build/llvm-toolchain-snapshot-8~svn345461/build-llvm/include -I /build/llvm-toolchain-snapshot-8~svn345461/include -I /build/llvm-toolchain-snapshot-8~svn345461/projects/openmp/runtime/src/i18n -I /build/llvm-toolchain-snapshot-8~svn345461/projects/openmp/runtime/src/include/50 -I /build/llvm-toolchain-snapshot-8~svn345461/projects/openmp/runtime/src/thirdparty/ittnotify -U NDEBUG -D _GNU_SOURCE -D _REENTRANT -D _FORTIFY_SOURCE=2 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/x86_64-linux-gnu/c++/6.3.0 -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/backward -internal-isystem /usr/include/clang/8.0.0/include/ -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-8/lib/clang/8.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-unused-parameter -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -Wno-maybe-uninitialized -Wno-comment -Wno-switch -Wno-missing-field-initializers -Wno-missing-braces -std=c++11 -fdeprecated-macro -fdebug-compilation-dir /build/llvm-toolchain-snapshot-8~svn345461/build-llvm/projects/openmp/runtime/src -ferror-limit 19 -fmessage-length 0 -fvisibility-inlines-hidden -fno-rtti -fobjc-runtime=gcc -fdiagnostics-show-option -vectorize-loops -vectorize-slp -analyzer-output=html -analyzer-config stable-report-filename=true -o /tmp/scan-build-2018-10-27-211344-32123-1 -x c++ /build/llvm-toolchain-snapshot-8~svn345461/projects/openmp/runtime/src/kmp_ftn_cdecl.cpp -faddrsig
1/*
2 * kmp_ftn_entry.h -- Fortran entry linkage support for OpenMP.
3 */
4
5//===----------------------------------------------------------------------===//
6//
7// The LLVM Compiler Infrastructure
8//
9// This file is dual licensed under the MIT and the University of Illinois Open
10// Source Licenses. See LICENSE.txt for details.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef FTN_STDCALL
15#error The support file kmp_ftn_entry.h should not be compiled by itself.
16#endif
17
18#ifdef KMP_STUB
19#include "kmp_stub.h"
20#endif
21
22#include "kmp_i18n.h"
23
24#if OMPT_SUPPORT1
25#include "ompt-specific.h"
26#endif
27
28#ifdef __cplusplus201103L
29extern "C" {
30#endif // __cplusplus
31
32/* For compatibility with the Gnu/MS Open MP codegen, omp_set_num_threads(),
33 * omp_set_nested(), and omp_set_dynamic() [in lowercase on MS, and w/o
34 * a trailing underscore on Linux* OS] take call by value integer arguments.
35 * + omp_set_max_active_levels()
36 * + omp_set_schedule()
37 *
38 * For backward compatibility with 9.1 and previous Intel compiler, these
39 * entry points take call by reference integer arguments. */
40#ifdef KMP_GOMP_COMPAT
41#if (KMP_FTN_ENTRIES1 == KMP_FTN_PLAIN1) || (KMP_FTN_ENTRIES1 == KMP_FTN_UPPER3)
42#define PASS_ARGS_BY_VALUE1 1
43#endif
44#endif
45#if KMP_OS_WINDOWS0
46#if (KMP_FTN_ENTRIES1 == KMP_FTN_PLAIN1) || (KMP_FTN_ENTRIES1 == KMP_FTN_APPEND2)
47#define PASS_ARGS_BY_VALUE1 1
48#endif
49#endif
50
51// This macro helps to reduce code duplication.
52#ifdef PASS_ARGS_BY_VALUE1
53#define KMP_DEREF
54#else
55#define KMP_DEREF *
56#endif
57
58void FTN_STDCALL FTN_SET_STACKSIZEkmp_set_stacksize(int KMP_DEREF arg) {
59#ifdef KMP_STUB
60 __kmps_set_stacksize(KMP_DEREF arg);
61#else
62 // __kmp_aux_set_stacksize initializes the library if needed
63 __kmp_aux_set_stacksize((size_t)KMP_DEREF arg);
64#endif
65}
66
67void FTN_STDCALL FTN_SET_STACKSIZE_Skmp_set_stacksize_s(size_t KMP_DEREF arg) {
68#ifdef KMP_STUB
69 __kmps_set_stacksize(KMP_DEREF arg);
70#else
71 // __kmp_aux_set_stacksize initializes the library if needed
72 __kmp_aux_set_stacksize(KMP_DEREF arg);
73#endif
74}
75
76int FTN_STDCALL FTN_GET_STACKSIZEkmp_get_stacksize(void) {
77#ifdef KMP_STUB
78 return __kmps_get_stacksize();
79#else
80 if (!__kmp_init_serial) {
81 __kmp_serial_initialize();
82 }
83 return (int)__kmp_stksize;
84#endif
85}
86
87size_t FTN_STDCALL FTN_GET_STACKSIZE_Skmp_get_stacksize_s(void) {
88#ifdef KMP_STUB
89 return __kmps_get_stacksize();
90#else
91 if (!__kmp_init_serial) {
92 __kmp_serial_initialize();
93 }
94 return __kmp_stksize;
95#endif
96}
97
98void FTN_STDCALL FTN_SET_BLOCKTIMEkmp_set_blocktime(int KMP_DEREF arg) {
99#ifdef KMP_STUB
100 __kmps_set_blocktime(KMP_DEREF arg);
101#else
102 int gtid, tid;
103 kmp_info_t *thread;
104
105 gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
106 tid = __kmp_tid_from_gtid(gtid);
107 thread = __kmp_thread_from_gtid(gtid);
108
109 __kmp_aux_set_blocktime(KMP_DEREF arg, thread, tid);
110#endif
111}
112
113int FTN_STDCALL FTN_GET_BLOCKTIMEkmp_get_blocktime(void) {
114#ifdef KMP_STUB
115 return __kmps_get_blocktime();
116#else
117 int gtid, tid;
118 kmp_info_t *thread;
119 kmp_team_p *team;
120
121 gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
122 tid = __kmp_tid_from_gtid(gtid);
123 thread = __kmp_thread_from_gtid(gtid);
Value stored to 'thread' is never read
124 team = __kmp_threads[gtid]->th.th_team;
125
126 /* These must match the settings used in __kmp_wait_sleep() */
127 if (__kmp_dflt_blocktime == KMP_MAX_BLOCKTIME(2147483647)) {
128 KF_TRACE(10, ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n", gtid,if (kmp_f_debug >= 10) { __kmp_debug_printf ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n"
, gtid, team->t.t_id, tid, (2147483647)); }
129 team->t.t_id, tid, KMP_MAX_BLOCKTIME))if (kmp_f_debug >= 10) { __kmp_debug_printf ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n"
, gtid, team->t.t_id, tid, (2147483647)); }
;
130 return KMP_MAX_BLOCKTIME(2147483647);
131 }
132#ifdef KMP_ADJUST_BLOCKTIME1
133 else if (__kmp_zero_bt && !get__bt_set(team, tid)((team)->t.t_threads[(tid)]->th.th_current_task->td_icvs
.bt_set)
) {
134 KF_TRACE(10, ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n", gtid,if (kmp_f_debug >= 10) { __kmp_debug_printf ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n"
, gtid, team->t.t_id, tid, 0); }
135 team->t.t_id, tid, 0))if (kmp_f_debug >= 10) { __kmp_debug_printf ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n"
, gtid, team->t.t_id, tid, 0); }
;
136 return 0;
137 }
138#endif /* KMP_ADJUST_BLOCKTIME */
139 else {
140 KF_TRACE(10, ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n", gtid,if (kmp_f_debug >= 10) { __kmp_debug_printf ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n"
, gtid, team->t.t_id, tid, ((team)->t.t_threads[(tid)]->
th.th_current_task->td_icvs.blocktime)); }
141 team->t.t_id, tid, get__blocktime(team, tid)))if (kmp_f_debug >= 10) { __kmp_debug_printf ("kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n"
, gtid, team->t.t_id, tid, ((team)->t.t_threads[(tid)]->
th.th_current_task->td_icvs.blocktime)); }
;
142 return get__blocktime(team, tid)((team)->t.t_threads[(tid)]->th.th_current_task->td_icvs
.blocktime)
;
143 }
144#endif
145}
146
147void FTN_STDCALL FTN_SET_LIBRARY_SERIALkmp_set_library_serial(void) {
148#ifdef KMP_STUB
149 __kmps_set_library(library_serial);
150#else
151 // __kmp_user_set_library initializes the library if needed
152 __kmp_user_set_library(library_serial);
153#endif
154}
155
156void FTN_STDCALL FTN_SET_LIBRARY_TURNAROUNDkmp_set_library_turnaround(void) {
157#ifdef KMP_STUB
158 __kmps_set_library(library_turnaround);
159#else
160 // __kmp_user_set_library initializes the library if needed
161 __kmp_user_set_library(library_turnaround);
162#endif
163}
164
165void FTN_STDCALL FTN_SET_LIBRARY_THROUGHPUTkmp_set_library_throughput(void) {
166#ifdef KMP_STUB
167 __kmps_set_library(library_throughput);
168#else
169 // __kmp_user_set_library initializes the library if needed
170 __kmp_user_set_library(library_throughput);
171#endif
172}
173
174void FTN_STDCALL FTN_SET_LIBRARYkmp_set_library(int KMP_DEREF arg) {
175#ifdef KMP_STUB
176 __kmps_set_library(KMP_DEREF arg);
177#else
178 enum library_type lib;
179 lib = (enum library_type)KMP_DEREF arg;
180 // __kmp_user_set_library initializes the library if needed
181 __kmp_user_set_library(lib);
182#endif
183}
184
185int FTN_STDCALL FTN_GET_LIBRARYkmp_get_library(void) {
186#ifdef KMP_STUB
187 return __kmps_get_library();
188#else
189 if (!__kmp_init_serial) {
190 __kmp_serial_initialize();
191 }
192 return ((int)__kmp_library);
193#endif
194}
195
196void FTN_STDCALL FTN_SET_DISP_NUM_BUFFERSkmp_set_disp_num_buffers(int KMP_DEREF arg) {
197#ifdef KMP_STUB
198 ; // empty routine
199#else
200 // ignore after initialization because some teams have already
201 // allocated dispatch buffers
202 if (__kmp_init_serial == 0 && (KMP_DEREF arg) > 0)
203 __kmp_dispatch_num_buffers = KMP_DEREF arg;
204#endif
205}
206
207int FTN_STDCALL FTN_SET_AFFINITYkmp_set_affinity(void **mask) {
208#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
209 return -1;
210#else
211 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
212 __kmp_middle_initialize();
213 }
214 return __kmp_aux_set_affinity(mask);
215#endif
216}
217
218int FTN_STDCALL FTN_GET_AFFINITYkmp_get_affinity(void **mask) {
219#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
220 return -1;
221#else
222 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
223 __kmp_middle_initialize();
224 }
225 return __kmp_aux_get_affinity(mask);
226#endif
227}
228
229int FTN_STDCALL FTN_GET_AFFINITY_MAX_PROCkmp_get_affinity_max_proc(void) {
230#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
231 return 0;
232#else
233 // We really only NEED serial initialization here.
234 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
235 __kmp_middle_initialize();
236 }
237 return __kmp_aux_get_affinity_max_proc();
238#endif
239}
240
241void FTN_STDCALL FTN_CREATE_AFFINITY_MASKkmp_create_affinity_mask(void **mask) {
242#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
243 *mask = NULL__null;
244#else
245 // We really only NEED serial initialization here.
246 kmp_affin_mask_t *mask_internals;
247 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
248 __kmp_middle_initialize();
249 }
250 mask_internals = __kmp_affinity_dispatch->allocate_mask();
251 KMP_CPU_ZERO(mask_internals)(mask_internals)->zero();
252 *mask = mask_internals;
253#endif
254}
255
256void FTN_STDCALL FTN_DESTROY_AFFINITY_MASKkmp_destroy_affinity_mask(void **mask) {
257#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
258// Nothing
259#else
260 // We really only NEED serial initialization here.
261 kmp_affin_mask_t *mask_internals;
262 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
263 __kmp_middle_initialize();
264 }
265 if (__kmp_env_consistency_check) {
266 if (*mask == NULL__null) {
267 KMP_FATAL(AffinityInvalidMask, "kmp_destroy_affinity_mask")__kmp_fatal(__kmp_msg_format(kmp_i18n_msg_AffinityInvalidMask
, "kmp_destroy_affinity_mask"), __kmp_msg_null)
;
268 }
269 }
270 mask_internals = (kmp_affin_mask_t *)(*mask);
271 __kmp_affinity_dispatch->deallocate_mask(mask_internals);
272 *mask = NULL__null;
273#endif
274}
275
276int FTN_STDCALL FTN_SET_AFFINITY_MASK_PROCkmp_set_affinity_mask_proc(int KMP_DEREF proc, void **mask) {
277#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
278 return -1;
279#else
280 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
281 __kmp_middle_initialize();
282 }
283 return __kmp_aux_set_affinity_mask_proc(KMP_DEREF proc, mask);
284#endif
285}
286
287int FTN_STDCALL FTN_UNSET_AFFINITY_MASK_PROCkmp_unset_affinity_mask_proc(int KMP_DEREF proc, void **mask) {
288#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
289 return -1;
290#else
291 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
292 __kmp_middle_initialize();
293 }
294 return __kmp_aux_unset_affinity_mask_proc(KMP_DEREF proc, mask);
295#endif
296}
297
298int FTN_STDCALL FTN_GET_AFFINITY_MASK_PROCkmp_get_affinity_mask_proc(int KMP_DEREF proc, void **mask) {
299#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
300 return -1;
301#else
302 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
303 __kmp_middle_initialize();
304 }
305 return __kmp_aux_get_affinity_mask_proc(KMP_DEREF proc, mask);
306#endif
307}
308
309/* ------------------------------------------------------------------------ */
310
311/* sets the requested number of threads for the next parallel region */
312void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_NUM_THREADS)__kmp_api_omp_set_num_threads(int KMP_DEREF arg) {
313#ifdef KMP_STUB
314// Nothing.
315#else
316 __kmp_set_num_threads(KMP_DEREF arg, __kmp_entry_gtid()__kmp_get_global_thread_id_reg());
317#endif
318}
319
320/* returns the number of threads in current team */
321int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_THREADS)__kmp_api_omp_get_num_threads(void) {
322#ifdef KMP_STUB
323 return 1;
324#else
325 // __kmpc_bound_num_threads initializes the library if needed
326 return __kmpc_bound_num_threads(NULL__null);
327#endif
328}
329
330int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_MAX_THREADS)__kmp_api_omp_get_max_threads(void) {
331#ifdef KMP_STUB
332 return 1;
333#else
334 int gtid;
335 kmp_info_t *thread;
336 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
337 __kmp_middle_initialize();
338 }
339 gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
340 thread = __kmp_threads[gtid];
341 // return thread -> th.th_team -> t.t_current_task[
342 // thread->th.th_info.ds.ds_tid ] -> icvs.nproc;
343 return thread->th.th_current_task->td_icvs.nproc;
344#endif
345}
346
347#if OMP_50_ENABLED(50 >= 50)
348int FTN_STDCALL FTN_CONTROL_TOOLomp_control_tool(int command, int modifier, void *arg) {
349#if defined(KMP_STUB) || !OMPT_SUPPORT1
350 return -2;
351#else
352 OMPT_STORE_RETURN_ADDRESS(__kmp_entry_gtid())if (ompt_enabled.enabled && __kmp_get_global_thread_id_reg
() >= 0 && __kmp_threads[__kmp_get_global_thread_id_reg
()] && !__kmp_threads[__kmp_get_global_thread_id_reg(
)]->th.ompt_thread_info.return_address) __kmp_threads[__kmp_get_global_thread_id_reg
()]->th.ompt_thread_info.return_address = __builtin_return_address
(0)
;
353 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
354 return -2;
355 }
356 kmp_info_t *this_thr = __kmp_threads[__kmp_entry_gtid()__kmp_get_global_thread_id_reg()];
357 ompt_task_info_t *parent_task_info = OMPT_CUR_TASK_INFO(this_thr)(&(this_thr->th.th_current_task->ompt_task_info));
358 parent_task_info->frame.enter_frame = OMPT_GET_FRAME_ADDRESS(1)__builtin_frame_address(1);
359 int ret = __kmp_control_tool(command, modifier, arg);
360 parent_task_info->frame.enter_frame = 0;
361 return ret;
362#endif
363}
364
365/* OpenMP 5.0 Memory Management support */
366void FTN_STDCALL FTN_SET_DEFAULT_ALLOCATORomp_set_default_allocator(const omp_allocator_t *allocator) {
367#ifndef KMP_STUB
368 __kmpc_set_default_allocator(__kmp_entry_gtid()__kmp_get_global_thread_id_reg(), allocator);
369#endif
370}
371const omp_allocator_t *FTN_STDCALL FTN_GET_DEFAULT_ALLOCATORomp_get_default_allocator(void) {
372#ifdef KMP_STUB
373 return NULL__null;
374#else
375 return __kmpc_get_default_allocator(__kmp_entry_gtid()__kmp_get_global_thread_id_reg());
376#endif
377}
378void *FTN_STDCALL FTN_ALLOComp_alloc(size_t size, const omp_allocator_t *allocator) {
379#ifdef KMP_STUB
380 return malloc(size);
381#else
382 return __kmpc_alloc(__kmp_entry_gtid()__kmp_get_global_thread_id_reg(), size, allocator);
383#endif
384}
385void FTN_STDCALL FTN_FREEomp_free(void *ptr, const omp_allocator_t *allocator) {
386#ifdef KMP_STUB
387 free(ptr);
388#else
389 __kmpc_free(__kmp_entry_gtid()__kmp_get_global_thread_id_reg(), ptr, allocator);
390#endif
391}
392#endif /* OMP_50_ENABLED */
393
394int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_THREAD_NUM)__kmp_api_omp_get_thread_num(void) {
395#ifdef KMP_STUB
396 return 0;
397#else
398 int gtid;
399
400#if KMP_OS_DARWIN0 || KMP_OS_FREEBSD0 || KMP_OS_NETBSD0
401 gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
402#elif KMP_OS_WINDOWS0
403 if (!__kmp_init_parallel ||
404 (gtid = (int)((kmp_intptr_t)TlsGetValue(__kmp_gtid_threadprivate_key))) ==
405 0) {
406 // Either library isn't initialized or thread is not registered
407 // 0 is the correct TID in this case
408 return 0;
409 }
410 --gtid; // We keep (gtid+1) in TLS
411#elif KMP_OS_LINUX1
412#ifdef KMP_TDATA_GTID1
413 if (__kmp_gtid_mode >= 3) {
414 if ((gtid = __kmp_gtid) == KMP_GTID_DNE(-2)) {
415 return 0;
416 }
417 } else {
418#endif
419 if (!__kmp_init_parallel ||
420 (gtid = (kmp_intptr_t)(
421 pthread_getspecific(__kmp_gtid_threadprivate_key))) == 0) {
422 return 0;
423 }
424 --gtid;
425#ifdef KMP_TDATA_GTID1
426 }
427#endif
428#else
429#error Unknown or unsupported OS
430#endif
431
432 return __kmp_tid_from_gtid(gtid);
433#endif
434}
435
436int FTN_STDCALL FTN_GET_NUM_KNOWN_THREADSkmp_get_num_known_threads(void) {
437#ifdef KMP_STUB
438 return 1;
439#else
440 if (!__kmp_init_serial) {
441 __kmp_serial_initialize();
442 }
443 /* NOTE: this is not syncronized, so it can change at any moment */
444 /* NOTE: this number also includes threads preallocated in hot-teams */
445 return TCR_4(__kmp_nth)(__kmp_nth);
446#endif
447}
448
449int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_PROCS)__kmp_api_omp_get_num_procs(void) {
450#ifdef KMP_STUB
451 return 1;
452#else
453 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
454 __kmp_middle_initialize();
455 }
456 return __kmp_avail_proc;
457#endif
458}
459
460void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_NESTED)__kmp_api_omp_set_nested(int KMP_DEREF flag) {
461#ifdef KMP_STUB
462 __kmps_set_nested(KMP_DEREF flag);
463#else
464 kmp_info_t *thread;
465 /* For the thread-private internal controls implementation */
466 thread = __kmp_entry_thread();
467 __kmp_save_internal_controls(thread);
468 set__nested(thread, ((KMP_DEREF flag) ? TRUE : FALSE))(((thread)->th.th_current_task->td_icvs.nested) = ((( flag
) ? (!0) : 0)))
;
469#endif
470}
471
472int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NESTED)__kmp_api_omp_get_nested(void) {
473#ifdef KMP_STUB
474 return __kmps_get_nested();
475#else
476 kmp_info_t *thread;
477 thread = __kmp_entry_thread();
478 return get__nested(thread)(((thread)->th.th_current_task->td_icvs.nested) ? ((!0)
) : (0))
;
479#endif
480}
481
482void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_DYNAMIC)__kmp_api_omp_set_dynamic(int KMP_DEREF flag) {
483#ifdef KMP_STUB
484 __kmps_set_dynamic(KMP_DEREF flag ? TRUE(!0) : FALSE0);
485#else
486 kmp_info_t *thread;
487 /* For the thread-private implementation of the internal controls */
488 thread = __kmp_entry_thread();
489 // !!! What if foreign thread calls it?
490 __kmp_save_internal_controls(thread);
491 set__dynamic(thread, KMP_DEREF flag ? TRUE : FALSE)(((thread)->th.th_current_task->td_icvs.dynamic) = (flag
? (!0) : 0))
;
492#endif
493}
494
495int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_DYNAMIC)__kmp_api_omp_get_dynamic(void) {
496#ifdef KMP_STUB
497 return __kmps_get_dynamic();
498#else
499 kmp_info_t *thread;
500 thread = __kmp_entry_thread();
501 return get__dynamic(thread)(((thread)->th.th_current_task->td_icvs.dynamic) ? ((!0
)) : (0))
;
502#endif
503}
504
505int FTN_STDCALL KMP_EXPAND_NAME(FTN_IN_PARALLEL)__kmp_api_omp_in_parallel(void) {
506#ifdef KMP_STUB
507 return 0;
508#else
509 kmp_info_t *th = __kmp_entry_thread();
510#if OMP_40_ENABLED(50 >= 40)
511 if (th->th.th_teams_microtask) {
512 // AC: r_in_parallel does not work inside teams construct where real
513 // parallel is inactive, but all threads have same root, so setting it in
514 // one team affects other teams.
515 // The solution is to use per-team nesting level
516 return (th->th.th_team->t.t_active_level ? 1 : 0);
517 } else
518#endif /* OMP_40_ENABLED */
519 return (th->th.th_root->r.r_in_parallel ? FTN_TRUE(!0) : FTN_FALSE0);
520#endif
521}
522
523void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_SCHEDULE)__kmp_api_omp_set_schedule(kmp_sched_t KMP_DEREF kind,
524 int KMP_DEREF modifier) {
525#ifdef KMP_STUB
526 __kmps_set_schedule(KMP_DEREF kind, KMP_DEREF modifier);
527#else
528 /* TO DO: For the per-task implementation of the internal controls */
529 __kmp_set_schedule(__kmp_entry_gtid()__kmp_get_global_thread_id_reg(), KMP_DEREF kind, KMP_DEREF modifier);
530#endif
531}
532
533void FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_SCHEDULE)__kmp_api_omp_get_schedule(kmp_sched_t *kind,
534 int *modifier) {
535#ifdef KMP_STUB
536 __kmps_get_schedule(kind, modifier);
537#else
538 /* TO DO: For the per-task implementation of the internal controls */
539 __kmp_get_schedule(__kmp_entry_gtid()__kmp_get_global_thread_id_reg(), kind, modifier);
540#endif
541}
542
543void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_MAX_ACTIVE_LEVELS)__kmp_api_omp_set_max_active_levels(int KMP_DEREF arg) {
544#ifdef KMP_STUB
545// Nothing.
546#else
547 /* TO DO: We want per-task implementation of this internal control */
548 __kmp_set_max_active_levels(__kmp_entry_gtid()__kmp_get_global_thread_id_reg(), KMP_DEREF arg);
549#endif
550}
551
552int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_MAX_ACTIVE_LEVELS)__kmp_api_omp_get_max_active_levels(void) {
553#ifdef KMP_STUB
554 return 0;
555#else
556 /* TO DO: We want per-task implementation of this internal control */
557 return __kmp_get_max_active_levels(__kmp_entry_gtid()__kmp_get_global_thread_id_reg());
558#endif
559}
560
561int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_ACTIVE_LEVEL)__kmp_api_omp_get_active_level(void) {
562#ifdef KMP_STUB
563 return 0; // returns 0 if it is called from the sequential part of the program
564#else
565 /* TO DO: For the per-task implementation of the internal controls */
566 return __kmp_entry_thread()->th.th_team->t.t_active_level;
567#endif
568}
569
570int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_LEVEL)__kmp_api_omp_get_level(void) {
571#ifdef KMP_STUB
572 return 0; // returns 0 if it is called from the sequential part of the program
573#else
574 /* TO DO: For the per-task implementation of the internal controls */
575 return __kmp_entry_thread()->th.th_team->t.t_level;
576#endif
577}
578
579int FTN_STDCALL
580 KMP_EXPAND_NAME(FTN_GET_ANCESTOR_THREAD_NUM)__kmp_api_omp_get_ancestor_thread_num(int KMP_DEREF level) {
581#ifdef KMP_STUB
582 return (KMP_DEREF level) ? (-1) : (0);
583#else
584 return __kmp_get_ancestor_thread_num(__kmp_entry_gtid()__kmp_get_global_thread_id_reg(), KMP_DEREF level);
585#endif
586}
587
588int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_TEAM_SIZE)__kmp_api_omp_get_team_size(int KMP_DEREF level) {
589#ifdef KMP_STUB
590 return (KMP_DEREF level) ? (-1) : (1);
591#else
592 return __kmp_get_team_size(__kmp_entry_gtid()__kmp_get_global_thread_id_reg(), KMP_DEREF level);
593#endif
594}
595
596int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_THREAD_LIMIT)__kmp_api_omp_get_thread_limit(void) {
597#ifdef KMP_STUB
598 return 1; // TO DO: clarify whether it returns 1 or 0?
599#else
600 if (!__kmp_init_serial) {
601 __kmp_serial_initialize();
602 }
603 /* global ICV */
604 return __kmp_cg_max_nth;
605#endif
606}
607
608int FTN_STDCALL KMP_EXPAND_NAME(FTN_IN_FINAL)__kmp_api_omp_in_final(void) {
609#ifdef KMP_STUB
610 return 0; // TO DO: clarify whether it returns 1 or 0?
611#else
612 if (!TCR_4(__kmp_init_parallel)(__kmp_init_parallel)) {
613 return 0;
614 }
615 return __kmp_entry_thread()->th.th_current_task->td_flags.final;
616#endif
617}
618
619#if OMP_40_ENABLED(50 >= 40)
620
621kmp_proc_bind_t FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PROC_BIND)__kmp_api_omp_get_proc_bind(void) {
622#ifdef KMP_STUB
623 return __kmps_get_proc_bind();
624#else
625 return get__proc_bind(__kmp_entry_thread())((__kmp_entry_thread())->th.th_current_task->td_icvs.proc_bind
)
;
626#endif
627}
628
629#if OMP_45_ENABLED(50 >= 45)
630int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_PLACES)__kmp_api_omp_get_num_places(void) {
631#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
632 return 0;
633#else
634 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
635 __kmp_middle_initialize();
636 }
637 if (!KMP_AFFINITY_CAPABLE()(__kmp_affin_mask_size > 0))
638 return 0;
639 return __kmp_affinity_num_masks;
640#endif
641}
642
643int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PLACE_NUM_PROCS)__kmp_api_omp_get_place_num_procs(int place_num) {
644#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
645 return 0;
646#else
647 int i;
648 int retval = 0;
649 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
650 __kmp_middle_initialize();
651 }
652 if (!KMP_AFFINITY_CAPABLE()(__kmp_affin_mask_size > 0))
653 return 0;
654 if (place_num < 0 || place_num >= (int)__kmp_affinity_num_masks)
655 return 0;
656 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity_masks, place_num)__kmp_affinity_dispatch->index_mask_array(__kmp_affinity_masks
, place_num)
;
657 KMP_CPU_SET_ITERATE(i, mask)for (i = (mask)->begin(); (int)i != (mask)->end(); i = (
mask)->next(i))
{
658 if ((!KMP_CPU_ISSET(i, __kmp_affin_fullMask)(__kmp_affin_fullMask)->is_set(i)) ||
659 (!KMP_CPU_ISSET(i, mask)(mask)->is_set(i))) {
660 continue;
661 }
662 ++retval;
663 }
664 return retval;
665#endif
666}
667
668void FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PLACE_PROC_IDS)__kmp_api_omp_get_place_proc_ids(int place_num,
669 int *ids) {
670#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
671// Nothing.
672#else
673 int i, j;
674 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
675 __kmp_middle_initialize();
676 }
677 if (!KMP_AFFINITY_CAPABLE()(__kmp_affin_mask_size > 0))
678 return;
679 if (place_num < 0 || place_num >= (int)__kmp_affinity_num_masks)
680 return;
681 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity_masks, place_num)__kmp_affinity_dispatch->index_mask_array(__kmp_affinity_masks
, place_num)
;
682 j = 0;
683 KMP_CPU_SET_ITERATE(i, mask)for (i = (mask)->begin(); (int)i != (mask)->end(); i = (
mask)->next(i))
{
684 if ((!KMP_CPU_ISSET(i, __kmp_affin_fullMask)(__kmp_affin_fullMask)->is_set(i)) ||
685 (!KMP_CPU_ISSET(i, mask)(mask)->is_set(i))) {
686 continue;
687 }
688 ids[j++] = i;
689 }
690#endif
691}
692
693int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PLACE_NUM)__kmp_api_omp_get_place_num(void) {
694#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
695 return -1;
696#else
697 int gtid;
698 kmp_info_t *thread;
699 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
700 __kmp_middle_initialize();
701 }
702 if (!KMP_AFFINITY_CAPABLE()(__kmp_affin_mask_size > 0))
703 return -1;
704 gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
705 thread = __kmp_thread_from_gtid(gtid);
706 if (thread->th.th_current_place < 0)
707 return -1;
708 return thread->th.th_current_place;
709#endif
710}
711
712int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PARTITION_NUM_PLACES)__kmp_api_omp_get_partition_num_places(void) {
713#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
714 return 0;
715#else
716 int gtid, num_places, first_place, last_place;
717 kmp_info_t *thread;
718 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
719 __kmp_middle_initialize();
720 }
721 if (!KMP_AFFINITY_CAPABLE()(__kmp_affin_mask_size > 0))
722 return 0;
723 if (KMP_AFFINITY_NON_PROC_BIND((__kmp_nested_proc_bind.bind_types[0] == proc_bind_false || __kmp_nested_proc_bind
.bind_types[0] == proc_bind_intel) && (__kmp_affinity_num_masks
> 0 || __kmp_affinity_type == affinity_balanced))
) {
724 return 1;
725 }
726 gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
727 thread = __kmp_thread_from_gtid(gtid);
728 first_place = thread->th.th_first_place;
729 last_place = thread->th.th_last_place;
730 if (first_place < 0 || last_place < 0)
731 return 0;
732 if (first_place <= last_place)
733 num_places = last_place - first_place + 1;
734 else
735 num_places = __kmp_affinity_num_masks - first_place + last_place + 1;
736 return num_places;
737#endif
738}
739
740void
741 FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_PARTITION_PLACE_NUMS)__kmp_api_omp_get_partition_place_nums(int *place_nums) {
742#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED1
743// Nothing.
744#else
745 int i, gtid, place_num, first_place, last_place, start, end;
746 kmp_info_t *thread;
747 if (!TCR_4(__kmp_init_middle)(__kmp_init_middle)) {
748 __kmp_middle_initialize();
749 }
750 if (!KMP_AFFINITY_CAPABLE()(__kmp_affin_mask_size > 0))
751 return;
752 gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
753 thread = __kmp_thread_from_gtid(gtid);
754 if (KMP_AFFINITY_NON_PROC_BIND((__kmp_nested_proc_bind.bind_types[0] == proc_bind_false || __kmp_nested_proc_bind
.bind_types[0] == proc_bind_intel) && (__kmp_affinity_num_masks
> 0 || __kmp_affinity_type == affinity_balanced))
) {
755 place_nums[0] = thread->th.th_current_place;
756 return;
757 }
758 first_place = thread->th.th_first_place;
759 last_place = thread->th.th_last_place;
760 if (first_place < 0 || last_place < 0)
761 return;
762 if (first_place <= last_place) {
763 start = first_place;
764 end = last_place;
765 } else {
766 start = last_place;
767 end = first_place;
768 }
769 for (i = 0, place_num = start; place_num <= end; ++place_num, ++i) {
770 place_nums[i] = place_num;
771 }
772#endif
773}
774#endif
775
776int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_NUM_TEAMS)__kmp_api_omp_get_num_teams(void) {
777#ifdef KMP_STUB
778 return 1;
779#else
780 kmp_info_t *thr = __kmp_entry_thread();
781 if (thr->th.th_teams_microtask) {
782 kmp_team_t *team = thr->th.th_team;
783 int tlevel = thr->th.th_teams_level;
784 int ii = team->t.t_level; // the level of the teams construct
785 int dd = team->t.t_serialized;
786 int level = tlevel + 1;
787 KMP_DEBUG_ASSERT(ii >= tlevel)if (!(ii >= tlevel)) { __kmp_debug_assert("ii >= tlevel"
, "/build/llvm-toolchain-snapshot-8~svn345461/projects/openmp/runtime/src/kmp_ftn_entry.h"
, 787); }
;
788 while (ii > level) {
789 for (dd = team->t.t_serialized; (dd > 0) && (ii > level); dd--, ii--) {
790 }
791 if (team->t.t_serialized && (!dd)) {
792 team = team->t.t_parent;
793 continue;
794 }
795 if (ii > level) {
796 team = team->t.t_parent;
797 ii--;
798 }
799 }
800 if (dd > 1) {
801 return 1; // teams region is serialized ( 1 team of 1 thread ).
802 } else {
803 return team->t.t_parent->t.t_nproc;
804 }
805 } else {
806 return 1;
807 }
808#endif
809}
810
811int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_TEAM_NUM)__kmp_api_omp_get_team_num(void) {
812#ifdef KMP_STUB
813 return 0;
814#else
815 kmp_info_t *thr = __kmp_entry_thread();
816 if (thr->th.th_teams_microtask) {
817 kmp_team_t *team = thr->th.th_team;
818 int tlevel = thr->th.th_teams_level; // the level of the teams construct
819 int ii = team->t.t_level;
820 int dd = team->t.t_serialized;
821 int level = tlevel + 1;
822 KMP_DEBUG_ASSERT(ii >= tlevel)if (!(ii >= tlevel)) { __kmp_debug_assert("ii >= tlevel"
, "/build/llvm-toolchain-snapshot-8~svn345461/projects/openmp/runtime/src/kmp_ftn_entry.h"
, 822); }
;
823 while (ii > level) {
824 for (dd = team->t.t_serialized; (dd > 0) && (ii > level); dd--, ii--) {
825 }
826 if (team->t.t_serialized && (!dd)) {
827 team = team->t.t_parent;
828 continue;
829 }
830 if (ii > level) {
831 team = team->t.t_parent;
832 ii--;
833 }
834 }
835 if (dd > 1) {
836 return 0; // teams region is serialized ( 1 team of 1 thread ).
837 } else {
838 return team->t.t_master_tid;
839 }
840 } else {
841 return 0;
842 }
843#endif
844}
845
846int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_DEFAULT_DEVICE)__kmp_api_omp_get_default_device(void) {
847#if KMP_MIC0 || KMP_OS_DARWIN0 || defined(KMP_STUB)
848 return 0;
849#else
850 return __kmp_entry_thread()->th.th_current_task->td_icvs.default_device;
851#endif
852}
853
854void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_DEFAULT_DEVICE)__kmp_api_omp_set_default_device(int KMP_DEREF arg) {
855#if KMP_MIC0 || KMP_OS_DARWIN0 || defined(KMP_STUB)
856// Nothing.
857#else
858 __kmp_entry_thread()->th.th_current_task->td_icvs.default_device =
859 KMP_DEREF arg;
860#endif
861}
862
863#if KMP_MIC0 || KMP_OS_DARWIN0 || defined(KMP_STUB)
864
865int FTN_STDCALL FTN_GET_NUM_DEVICES(void) { return 0; }
866
867#endif // KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB)
868
869#if !KMP_OS_LINUX1
870
871int FTN_STDCALL KMP_EXPAND_NAME(FTN_IS_INITIAL_DEVICE)__kmp_api_omp_is_initial_device(void) { return 1; }
872
873#else
874
875// This internal function is used when the entry from the offload library
876// is not found.
877int _Offload_get_device_number(void) KMP_WEAK_ATTRIBUTE__attribute__((weak));
878
879int FTN_STDCALL KMP_EXPAND_NAME(FTN_IS_INITIAL_DEVICE)__kmp_api_omp_is_initial_device(void) {
880 if (_Offload_get_device_number) {
881 return _Offload_get_device_number() == -1;
882 } else {
883 return 1;
884 }
885}
886
887#endif // ! KMP_OS_LINUX
888
889#endif // OMP_40_ENABLED
890
891#if OMP_45_ENABLED(50 >= 45) && defined(KMP_STUB)
892// OpenMP 4.5 entries for stubs library
893
894int FTN_STDCALL FTN_GET_INITIAL_DEVICE(void) { return -1; }
895
896// As all *target* functions are C-only parameters always passed by value
897void *FTN_STDCALL FTN_TARGET_ALLOC(size_t size, int device_num) { return 0; }
898
899void FTN_STDCALL FTN_TARGET_FREE(void *device_ptr, int device_num) {}
900
901int FTN_STDCALL FTN_TARGET_IS_PRESENT(void *ptr, int device_num) { return 0; }
902
903int FTN_STDCALL FTN_TARGET_MEMCPY(void *dst, void *src, size_t length,
904 size_t dst_offset, size_t src_offset,
905 int dst_device, int src_device) {
906 return -1;
907}
908
909int FTN_STDCALL FTN_TARGET_MEMCPY_RECT(
910 void *dst, void *src, size_t element_size, int num_dims,
911 const size_t *volume, const size_t *dst_offsets, const size_t *src_offsets,
912 const size_t *dst_dimensions, const size_t *src_dimensions, int dst_device,
913 int src_device) {
914 return -1;
915}
916
917int FTN_STDCALL FTN_TARGET_ASSOCIATE_PTR(void *host_ptr, void *device_ptr,
918 size_t size, size_t device_offset,
919 int device_num) {
920 return -1;
921}
922
923int FTN_STDCALL FTN_TARGET_DISASSOCIATE_PTR(void *host_ptr, int device_num) {
924 return -1;
925}
926#endif // OMP_45_ENABLED && defined(KMP_STUB)
927
928#ifdef KMP_STUB
929typedef enum { UNINIT = -1, UNLOCKED, LOCKED } kmp_stub_lock_t;
930#endif /* KMP_STUB */
931
932#if KMP_USE_DYNAMIC_LOCK1
933void FTN_STDCALL FTN_INIT_LOCK_WITH_HINTomp_init_lock_with_hint(void **user_lock,
934 uintptr_t KMP_DEREF hint) {
935#ifdef KMP_STUB
936 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
937#else
938 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
939#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
940 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
941#endif
942 __kmpc_init_lock_with_hint(NULL__null, gtid, user_lock, KMP_DEREF hint);
943#endif
944}
945
946void FTN_STDCALL FTN_INIT_NEST_LOCK_WITH_HINTomp_init_nest_lock_with_hint(void **user_lock,
947 uintptr_t KMP_DEREF hint) {
948#ifdef KMP_STUB
949 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
950#else
951 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
952#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
953 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
954#endif
955 __kmpc_init_nest_lock_with_hint(NULL__null, gtid, user_lock, KMP_DEREF hint);
956#endif
957}
958#endif
959
960/* initialize the lock */
961void FTN_STDCALL KMP_EXPAND_NAME(FTN_INIT_LOCK)__kmp_api_omp_init_lock(void **user_lock) {
962#ifdef KMP_STUB
963 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
964#else
965 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
966#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
967 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
968#endif
969 __kmpc_init_lock(NULL__null, gtid, user_lock);
970#endif
971}
972
973/* initialize the lock */
974void FTN_STDCALL KMP_EXPAND_NAME(FTN_INIT_NEST_LOCK)__kmp_api_omp_init_nest_lock(void **user_lock) {
975#ifdef KMP_STUB
976 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
977#else
978 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
979#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
980 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
981#endif
982 __kmpc_init_nest_lock(NULL__null, gtid, user_lock);
983#endif
984}
985
986void FTN_STDCALL KMP_EXPAND_NAME(FTN_DESTROY_LOCK)__kmp_api_omp_destroy_lock(void **user_lock) {
987#ifdef KMP_STUB
988 *((kmp_stub_lock_t *)user_lock) = UNINIT;
989#else
990 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
991#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
992 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
993#endif
994 __kmpc_destroy_lock(NULL__null, gtid, user_lock);
995#endif
996}
997
998void FTN_STDCALL KMP_EXPAND_NAME(FTN_DESTROY_NEST_LOCK)__kmp_api_omp_destroy_nest_lock(void **user_lock) {
999#ifdef KMP_STUB
1000 *((kmp_stub_lock_t *)user_lock) = UNINIT;
1001#else
1002 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
1003#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
1004 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
1005#endif
1006 __kmpc_destroy_nest_lock(NULL__null, gtid, user_lock);
1007#endif
1008}
1009
1010void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_LOCK)__kmp_api_omp_set_lock(void **user_lock) {
1011#ifdef KMP_STUB
1012 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1013 // TODO: Issue an error.
1014 }
1015 if (*((kmp_stub_lock_t *)user_lock) != UNLOCKED) {
1016 // TODO: Issue an error.
1017 }
1018 *((kmp_stub_lock_t *)user_lock) = LOCKED;
1019#else
1020 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
1021#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
1022 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
1023#endif
1024 __kmpc_set_lock(NULL__null, gtid, user_lock);
1025#endif
1026}
1027
1028void FTN_STDCALL KMP_EXPAND_NAME(FTN_SET_NEST_LOCK)__kmp_api_omp_set_nest_lock(void **user_lock) {
1029#ifdef KMP_STUB
1030 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1031 // TODO: Issue an error.
1032 }
1033 (*((int *)user_lock))++;
1034#else
1035 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
1036#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
1037 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
1038#endif
1039 __kmpc_set_nest_lock(NULL__null, gtid, user_lock);
1040#endif
1041}
1042
1043void FTN_STDCALL KMP_EXPAND_NAME(FTN_UNSET_LOCK)__kmp_api_omp_unset_lock(void **user_lock) {
1044#ifdef KMP_STUB
1045 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1046 // TODO: Issue an error.
1047 }
1048 if (*((kmp_stub_lock_t *)user_lock) == UNLOCKED) {
1049 // TODO: Issue an error.
1050 }
1051 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1052#else
1053 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
1054#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
1055 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
1056#endif
1057 __kmpc_unset_lock(NULL__null, gtid, user_lock);
1058#endif
1059}
1060
1061void FTN_STDCALL KMP_EXPAND_NAME(FTN_UNSET_NEST_LOCK)__kmp_api_omp_unset_nest_lock(void **user_lock) {
1062#ifdef KMP_STUB
1063 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1064 // TODO: Issue an error.
1065 }
1066 if (*((kmp_stub_lock_t *)user_lock) == UNLOCKED) {
1067 // TODO: Issue an error.
1068 }
1069 (*((int *)user_lock))--;
1070#else
1071 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
1072#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
1073 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
1074#endif
1075 __kmpc_unset_nest_lock(NULL__null, gtid, user_lock);
1076#endif
1077}
1078
1079int FTN_STDCALL KMP_EXPAND_NAME(FTN_TEST_LOCK)__kmp_api_omp_test_lock(void **user_lock) {
1080#ifdef KMP_STUB
1081 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1082 // TODO: Issue an error.
1083 }
1084 if (*((kmp_stub_lock_t *)user_lock) == LOCKED) {
1085 return 0;
1086 }
1087 *((kmp_stub_lock_t *)user_lock) = LOCKED;
1088 return 1;
1089#else
1090 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
1091#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
1092 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
1093#endif
1094 return __kmpc_test_lock(NULL__null, gtid, user_lock);
1095#endif
1096}
1097
1098int FTN_STDCALL KMP_EXPAND_NAME(FTN_TEST_NEST_LOCK)__kmp_api_omp_test_nest_lock(void **user_lock) {
1099#ifdef KMP_STUB
1100 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1101 // TODO: Issue an error.
1102 }
1103 return ++(*((int *)user_lock));
1104#else
1105 int gtid = __kmp_entry_gtid()__kmp_get_global_thread_id_reg();
1106#if OMPT_SUPPORT1 && OMPT_OPTIONAL1
1107 OMPT_STORE_RETURN_ADDRESS(gtid)if (ompt_enabled.enabled && gtid >= 0 && __kmp_threads
[gtid] && !__kmp_threads[gtid]->th.ompt_thread_info
.return_address) __kmp_threads[gtid]->th.ompt_thread_info.
return_address = __builtin_return_address(0)
;
1108#endif
1109 return __kmpc_test_nest_lock(NULL__null, gtid, user_lock);
1110#endif
1111}
1112
1113double FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_WTIME)__kmp_api_omp_get_wtime(void) {
1114#ifdef KMP_STUB
1115 return __kmps_get_wtime();
1116#else
1117 double data;
1118#if !KMP_OS_LINUX1
1119 // We don't need library initialization to get the time on Linux* OS. The
1120 // routine can be used to measure library initialization time on Linux* OS now
1121 if (!__kmp_init_serial) {
1122 __kmp_serial_initialize();
1123 }
1124#endif
1125 __kmp_elapsed(&data);
1126 return data;
1127#endif
1128}
1129
1130double FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_WTICK)__kmp_api_omp_get_wtick(void) {
1131#ifdef KMP_STUB
1132 return __kmps_get_wtick();
1133#else
1134 double data;
1135 if (!__kmp_init_serial) {
1136 __kmp_serial_initialize();
1137 }
1138 __kmp_elapsed_tick(&data);
1139 return data;
1140#endif
1141}
1142
1143/* ------------------------------------------------------------------------ */
1144
1145void *FTN_STDCALL FTN_MALLOCkmp_malloc(size_t KMP_DEREF size) {
1146 // kmpc_malloc initializes the library if needed
1147 return kmpc_malloc(KMP_DEREF size);
1148}
1149
1150void *FTN_STDCALL FTN_ALIGNED_MALLOCkmp_aligned_malloc(size_t KMP_DEREF size,
1151 size_t KMP_DEREF alignment) {
1152 // kmpc_aligned_malloc initializes the library if needed
1153 return kmpc_aligned_malloc(KMP_DEREF size, KMP_DEREF alignment);
1154}
1155
1156void *FTN_STDCALL FTN_CALLOCkmp_calloc(size_t KMP_DEREF nelem, size_t KMP_DEREF elsize) {
1157 // kmpc_calloc initializes the library if needed
1158 return kmpc_calloc(KMP_DEREF nelem, KMP_DEREF elsize);
1159}
1160
1161void *FTN_STDCALL FTN_REALLOCkmp_realloc(void *KMP_DEREF ptr, size_t KMP_DEREF size) {
1162 // kmpc_realloc initializes the library if needed
1163 return kmpc_realloc(KMP_DEREF ptr, KMP_DEREF size);
1164}
1165
1166void FTN_STDCALL FTN_KFREEkmp_free(void *KMP_DEREF ptr) {
1167 // does nothing if the library is not initialized
1168 kmpc_free(KMP_DEREF ptr);
1169}
1170
1171void FTN_STDCALL FTN_SET_WARNINGS_ONkmp_set_warnings_on(void) {
1172#ifndef KMP_STUB
1173 __kmp_generate_warnings = kmp_warnings_explicit;
1174#endif
1175}
1176
1177void FTN_STDCALL FTN_SET_WARNINGS_OFFkmp_set_warnings_off(void) {
1178#ifndef KMP_STUB
1179 __kmp_generate_warnings = FALSE0;
1180#endif
1181}
1182
1183void FTN_STDCALL FTN_SET_DEFAULTSkmp_set_defaults(char const *str
1184#ifndef PASS_ARGS_BY_VALUE1
1185 ,
1186 int len
1187#endif
1188 ) {
1189#ifndef KMP_STUB
1190#ifdef PASS_ARGS_BY_VALUE1
1191 int len = (int)KMP_STRLENstrlen(str);
1192#endif
1193 __kmp_aux_set_defaults(str, len);
1194#endif
1195}
1196
1197/* ------------------------------------------------------------------------ */
1198
1199#if OMP_40_ENABLED(50 >= 40)
1200/* returns the status of cancellation */
1201int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_CANCELLATION)__kmp_api_omp_get_cancellation(void) {
1202#ifdef KMP_STUB
1203 return 0 /* false */;
1204#else
1205 // initialize the library if needed
1206 if (!__kmp_init_serial) {
1207 __kmp_serial_initialize();
1208 }
1209 return __kmp_omp_cancellation;
1210#endif
1211}
1212
1213int FTN_STDCALL FTN_GET_CANCELLATION_STATUSkmp_get_cancellation_status(int cancel_kind) {
1214#ifdef KMP_STUB
1215 return 0 /* false */;
1216#else
1217 return __kmp_get_cancellation_status(cancel_kind);
1218#endif
1219}
1220
1221#endif // OMP_40_ENABLED
1222
1223#if OMP_45_ENABLED(50 >= 45)
1224/* returns the maximum allowed task priority */
1225int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_MAX_TASK_PRIORITY)__kmp_api_omp_get_max_task_priority(void) {
1226#ifdef KMP_STUB
1227 return 0;
1228#else
1229 if (!__kmp_init_serial) {
1230 __kmp_serial_initialize();
1231 }
1232 return __kmp_max_task_priority;
1233#endif
1234}
1235#endif
1236
1237// GCC compatibility (versioned symbols)
1238#ifdef KMP_USE_VERSION_SYMBOLS
1239
1240/* These following sections create versioned symbols for the
1241 omp_* routines. The KMP_VERSION_SYMBOL macro expands the API name and
1242 then maps it to a versioned symbol.
1243 libgomp ``versions'' its symbols (OMP_1.0, OMP_2.0, OMP_3.0, ...) while also
1244 retaining the default version which libomp uses: VERSION (defined in
1245 exports_so.txt). If you want to see the versioned symbols for libgomp.so.1
1246 then just type:
1247
1248 objdump -T /path/to/libgomp.so.1 | grep omp_
1249
1250 Example:
1251 Step 1) Create __kmp_api_omp_set_num_threads_10_alias which is alias of
1252 __kmp_api_omp_set_num_threads
1253 Step 2) Set __kmp_api_omp_set_num_threads_10_alias to version:
1254 omp_set_num_threads@OMP_1.0
1255 Step 2B) Set __kmp_api_omp_set_num_threads to default version:
1256 omp_set_num_threads@@VERSION
1257*/
1258
1259// OMP_1.0 versioned symbols
1260KMP_VERSION_SYMBOL(FTN_SET_NUM_THREADS, 10, "OMP_1.0")__typeof__(__kmp_api_omp_set_num_threads) __kmp_api_omp_set_num_threads_10_alias
__attribute__((alias("__kmp_api_omp_set_num_threads"))); __asm__
( ".symver " "__kmp_api_omp_set_num_threads_10_alias" "," "omp_set_num_threads"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_set_num_threads"
"," "omp_set_num_threads" "@@" "VERSION" "\n\t")
;
1261KMP_VERSION_SYMBOL(FTN_GET_NUM_THREADS, 10, "OMP_1.0")__typeof__(__kmp_api_omp_get_num_threads) __kmp_api_omp_get_num_threads_10_alias
__attribute__((alias("__kmp_api_omp_get_num_threads"))); __asm__
( ".symver " "__kmp_api_omp_get_num_threads_10_alias" "," "omp_get_num_threads"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_num_threads"
"," "omp_get_num_threads" "@@" "VERSION" "\n\t")
;
1262KMP_VERSION_SYMBOL(FTN_GET_MAX_THREADS, 10, "OMP_1.0")__typeof__(__kmp_api_omp_get_max_threads) __kmp_api_omp_get_max_threads_10_alias
__attribute__((alias("__kmp_api_omp_get_max_threads"))); __asm__
( ".symver " "__kmp_api_omp_get_max_threads_10_alias" "," "omp_get_max_threads"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_max_threads"
"," "omp_get_max_threads" "@@" "VERSION" "\n\t")
;
1263KMP_VERSION_SYMBOL(FTN_GET_THREAD_NUM, 10, "OMP_1.0")__typeof__(__kmp_api_omp_get_thread_num) __kmp_api_omp_get_thread_num_10_alias
__attribute__((alias("__kmp_api_omp_get_thread_num"))); __asm__
( ".symver " "__kmp_api_omp_get_thread_num_10_alias" "," "omp_get_thread_num"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_thread_num"
"," "omp_get_thread_num" "@@" "VERSION" "\n\t")
;
1264KMP_VERSION_SYMBOL(FTN_GET_NUM_PROCS, 10, "OMP_1.0")__typeof__(__kmp_api_omp_get_num_procs) __kmp_api_omp_get_num_procs_10_alias
__attribute__((alias("__kmp_api_omp_get_num_procs"))); __asm__
( ".symver " "__kmp_api_omp_get_num_procs_10_alias" "," "omp_get_num_procs"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_num_procs"
"," "omp_get_num_procs" "@@" "VERSION" "\n\t")
;
1265KMP_VERSION_SYMBOL(FTN_IN_PARALLEL, 10, "OMP_1.0")__typeof__(__kmp_api_omp_in_parallel) __kmp_api_omp_in_parallel_10_alias
__attribute__((alias("__kmp_api_omp_in_parallel"))); __asm__
( ".symver " "__kmp_api_omp_in_parallel_10_alias" "," "omp_in_parallel"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_in_parallel"
"," "omp_in_parallel" "@@" "VERSION" "\n\t")
;
1266KMP_VERSION_SYMBOL(FTN_SET_DYNAMIC, 10, "OMP_1.0")__typeof__(__kmp_api_omp_set_dynamic) __kmp_api_omp_set_dynamic_10_alias
__attribute__((alias("__kmp_api_omp_set_dynamic"))); __asm__
( ".symver " "__kmp_api_omp_set_dynamic_10_alias" "," "omp_set_dynamic"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_set_dynamic"
"," "omp_set_dynamic" "@@" "VERSION" "\n\t")
;
1267KMP_VERSION_SYMBOL(FTN_GET_DYNAMIC, 10, "OMP_1.0")__typeof__(__kmp_api_omp_get_dynamic) __kmp_api_omp_get_dynamic_10_alias
__attribute__((alias("__kmp_api_omp_get_dynamic"))); __asm__
( ".symver " "__kmp_api_omp_get_dynamic_10_alias" "," "omp_get_dynamic"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_dynamic"
"," "omp_get_dynamic" "@@" "VERSION" "\n\t")
;
1268KMP_VERSION_SYMBOL(FTN_SET_NESTED, 10, "OMP_1.0")__typeof__(__kmp_api_omp_set_nested) __kmp_api_omp_set_nested_10_alias
__attribute__((alias("__kmp_api_omp_set_nested"))); __asm__(
".symver " "__kmp_api_omp_set_nested_10_alias" "," "omp_set_nested"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_set_nested"
"," "omp_set_nested" "@@" "VERSION" "\n\t")
;
1269KMP_VERSION_SYMBOL(FTN_GET_NESTED, 10, "OMP_1.0")__typeof__(__kmp_api_omp_get_nested) __kmp_api_omp_get_nested_10_alias
__attribute__((alias("__kmp_api_omp_get_nested"))); __asm__(
".symver " "__kmp_api_omp_get_nested_10_alias" "," "omp_get_nested"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_nested"
"," "omp_get_nested" "@@" "VERSION" "\n\t")
;
1270KMP_VERSION_SYMBOL(FTN_INIT_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_init_lock) __kmp_api_omp_init_lock_10_alias
__attribute__((alias("__kmp_api_omp_init_lock"))); __asm__( ".symver "
"__kmp_api_omp_init_lock_10_alias" "," "omp_init_lock" "@" "OMP_1.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_init_lock" "," "omp_init_lock"
"@@" "VERSION" "\n\t")
;
1271KMP_VERSION_SYMBOL(FTN_INIT_NEST_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_init_nest_lock) __kmp_api_omp_init_nest_lock_10_alias
__attribute__((alias("__kmp_api_omp_init_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_init_nest_lock_10_alias" "," "omp_init_nest_lock"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_init_nest_lock"
"," "omp_init_nest_lock" "@@" "VERSION" "\n\t")
;
1272KMP_VERSION_SYMBOL(FTN_DESTROY_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_destroy_lock) __kmp_api_omp_destroy_lock_10_alias
__attribute__((alias("__kmp_api_omp_destroy_lock"))); __asm__
( ".symver " "__kmp_api_omp_destroy_lock_10_alias" "," "omp_destroy_lock"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_destroy_lock"
"," "omp_destroy_lock" "@@" "VERSION" "\n\t")
;
1273KMP_VERSION_SYMBOL(FTN_DESTROY_NEST_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_destroy_nest_lock) __kmp_api_omp_destroy_nest_lock_10_alias
__attribute__((alias("__kmp_api_omp_destroy_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_destroy_nest_lock_10_alias" "," "omp_destroy_nest_lock"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_destroy_nest_lock"
"," "omp_destroy_nest_lock" "@@" "VERSION" "\n\t")
;
1274KMP_VERSION_SYMBOL(FTN_SET_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_set_lock) __kmp_api_omp_set_lock_10_alias
__attribute__((alias("__kmp_api_omp_set_lock"))); __asm__( ".symver "
"__kmp_api_omp_set_lock_10_alias" "," "omp_set_lock" "@" "OMP_1.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_set_lock" "," "omp_set_lock"
"@@" "VERSION" "\n\t")
;
1275KMP_VERSION_SYMBOL(FTN_SET_NEST_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_set_nest_lock) __kmp_api_omp_set_nest_lock_10_alias
__attribute__((alias("__kmp_api_omp_set_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_set_nest_lock_10_alias" "," "omp_set_nest_lock"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_set_nest_lock"
"," "omp_set_nest_lock" "@@" "VERSION" "\n\t")
;
1276KMP_VERSION_SYMBOL(FTN_UNSET_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_unset_lock) __kmp_api_omp_unset_lock_10_alias
__attribute__((alias("__kmp_api_omp_unset_lock"))); __asm__(
".symver " "__kmp_api_omp_unset_lock_10_alias" "," "omp_unset_lock"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_unset_lock"
"," "omp_unset_lock" "@@" "VERSION" "\n\t")
;
1277KMP_VERSION_SYMBOL(FTN_UNSET_NEST_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_unset_nest_lock) __kmp_api_omp_unset_nest_lock_10_alias
__attribute__((alias("__kmp_api_omp_unset_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_unset_nest_lock_10_alias" "," "omp_unset_nest_lock"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_unset_nest_lock"
"," "omp_unset_nest_lock" "@@" "VERSION" "\n\t")
;
1278KMP_VERSION_SYMBOL(FTN_TEST_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_test_lock) __kmp_api_omp_test_lock_10_alias
__attribute__((alias("__kmp_api_omp_test_lock"))); __asm__( ".symver "
"__kmp_api_omp_test_lock_10_alias" "," "omp_test_lock" "@" "OMP_1.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_test_lock" "," "omp_test_lock"
"@@" "VERSION" "\n\t")
;
1279KMP_VERSION_SYMBOL(FTN_TEST_NEST_LOCK, 10, "OMP_1.0")__typeof__(__kmp_api_omp_test_nest_lock) __kmp_api_omp_test_nest_lock_10_alias
__attribute__((alias("__kmp_api_omp_test_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_test_nest_lock_10_alias" "," "omp_test_nest_lock"
"@" "OMP_1.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_test_nest_lock"
"," "omp_test_nest_lock" "@@" "VERSION" "\n\t")
;
1280
1281// OMP_2.0 versioned symbols
1282KMP_VERSION_SYMBOL(FTN_GET_WTICK, 20, "OMP_2.0")__typeof__(__kmp_api_omp_get_wtick) __kmp_api_omp_get_wtick_20_alias
__attribute__((alias("__kmp_api_omp_get_wtick"))); __asm__( ".symver "
"__kmp_api_omp_get_wtick_20_alias" "," "omp_get_wtick" "@" "OMP_2.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_get_wtick" "," "omp_get_wtick"
"@@" "VERSION" "\n\t")
;
1283KMP_VERSION_SYMBOL(FTN_GET_WTIME, 20, "OMP_2.0")__typeof__(__kmp_api_omp_get_wtime) __kmp_api_omp_get_wtime_20_alias
__attribute__((alias("__kmp_api_omp_get_wtime"))); __asm__( ".symver "
"__kmp_api_omp_get_wtime_20_alias" "," "omp_get_wtime" "@" "OMP_2.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_get_wtime" "," "omp_get_wtime"
"@@" "VERSION" "\n\t")
;
1284
1285// OMP_3.0 versioned symbols
1286KMP_VERSION_SYMBOL(FTN_SET_SCHEDULE, 30, "OMP_3.0")__typeof__(__kmp_api_omp_set_schedule) __kmp_api_omp_set_schedule_30_alias
__attribute__((alias("__kmp_api_omp_set_schedule"))); __asm__
( ".symver " "__kmp_api_omp_set_schedule_30_alias" "," "omp_set_schedule"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_set_schedule"
"," "omp_set_schedule" "@@" "VERSION" "\n\t")
;
1287KMP_VERSION_SYMBOL(FTN_GET_SCHEDULE, 30, "OMP_3.0")__typeof__(__kmp_api_omp_get_schedule) __kmp_api_omp_get_schedule_30_alias
__attribute__((alias("__kmp_api_omp_get_schedule"))); __asm__
( ".symver " "__kmp_api_omp_get_schedule_30_alias" "," "omp_get_schedule"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_schedule"
"," "omp_get_schedule" "@@" "VERSION" "\n\t")
;
1288KMP_VERSION_SYMBOL(FTN_GET_THREAD_LIMIT, 30, "OMP_3.0")__typeof__(__kmp_api_omp_get_thread_limit) __kmp_api_omp_get_thread_limit_30_alias
__attribute__((alias("__kmp_api_omp_get_thread_limit"))); __asm__
( ".symver " "__kmp_api_omp_get_thread_limit_30_alias" "," "omp_get_thread_limit"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_thread_limit"
"," "omp_get_thread_limit" "@@" "VERSION" "\n\t")
;
1289KMP_VERSION_SYMBOL(FTN_SET_MAX_ACTIVE_LEVELS, 30, "OMP_3.0")__typeof__(__kmp_api_omp_set_max_active_levels) __kmp_api_omp_set_max_active_levels_30_alias
__attribute__((alias("__kmp_api_omp_set_max_active_levels"))
); __asm__( ".symver " "__kmp_api_omp_set_max_active_levels_30_alias"
"," "omp_set_max_active_levels" "@" "OMP_3.0" "\n\t"); __asm__
(".symver " "__kmp_api_omp_set_max_active_levels" "," "omp_set_max_active_levels"
"@@" "VERSION" "\n\t")
;
1290KMP_VERSION_SYMBOL(FTN_GET_MAX_ACTIVE_LEVELS, 30, "OMP_3.0")__typeof__(__kmp_api_omp_get_max_active_levels) __kmp_api_omp_get_max_active_levels_30_alias
__attribute__((alias("__kmp_api_omp_get_max_active_levels"))
); __asm__( ".symver " "__kmp_api_omp_get_max_active_levels_30_alias"
"," "omp_get_max_active_levels" "@" "OMP_3.0" "\n\t"); __asm__
(".symver " "__kmp_api_omp_get_max_active_levels" "," "omp_get_max_active_levels"
"@@" "VERSION" "\n\t")
;
1291KMP_VERSION_SYMBOL(FTN_GET_ANCESTOR_THREAD_NUM, 30, "OMP_3.0")__typeof__(__kmp_api_omp_get_ancestor_thread_num) __kmp_api_omp_get_ancestor_thread_num_30_alias
__attribute__((alias("__kmp_api_omp_get_ancestor_thread_num"
))); __asm__( ".symver " "__kmp_api_omp_get_ancestor_thread_num_30_alias"
"," "omp_get_ancestor_thread_num" "@" "OMP_3.0" "\n\t"); __asm__
(".symver " "__kmp_api_omp_get_ancestor_thread_num" "," "omp_get_ancestor_thread_num"
"@@" "VERSION" "\n\t")
;
1292KMP_VERSION_SYMBOL(FTN_GET_LEVEL, 30, "OMP_3.0")__typeof__(__kmp_api_omp_get_level) __kmp_api_omp_get_level_30_alias
__attribute__((alias("__kmp_api_omp_get_level"))); __asm__( ".symver "
"__kmp_api_omp_get_level_30_alias" "," "omp_get_level" "@" "OMP_3.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_get_level" "," "omp_get_level"
"@@" "VERSION" "\n\t")
;
1293KMP_VERSION_SYMBOL(FTN_GET_TEAM_SIZE, 30, "OMP_3.0")__typeof__(__kmp_api_omp_get_team_size) __kmp_api_omp_get_team_size_30_alias
__attribute__((alias("__kmp_api_omp_get_team_size"))); __asm__
( ".symver " "__kmp_api_omp_get_team_size_30_alias" "," "omp_get_team_size"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_team_size"
"," "omp_get_team_size" "@@" "VERSION" "\n\t")
;
1294KMP_VERSION_SYMBOL(FTN_GET_ACTIVE_LEVEL, 30, "OMP_3.0")__typeof__(__kmp_api_omp_get_active_level) __kmp_api_omp_get_active_level_30_alias
__attribute__((alias("__kmp_api_omp_get_active_level"))); __asm__
( ".symver " "__kmp_api_omp_get_active_level_30_alias" "," "omp_get_active_level"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_active_level"
"," "omp_get_active_level" "@@" "VERSION" "\n\t")
;
1295
1296// the lock routines have a 1.0 and 3.0 version
1297KMP_VERSION_SYMBOL(FTN_INIT_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_init_lock) __kmp_api_omp_init_lock_30_alias
__attribute__((alias("__kmp_api_omp_init_lock"))); __asm__( ".symver "
"__kmp_api_omp_init_lock_30_alias" "," "omp_init_lock" "@" "OMP_3.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_init_lock" "," "omp_init_lock"
"@@" "VERSION" "\n\t")
;
1298KMP_VERSION_SYMBOL(FTN_INIT_NEST_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_init_nest_lock) __kmp_api_omp_init_nest_lock_30_alias
__attribute__((alias("__kmp_api_omp_init_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_init_nest_lock_30_alias" "," "omp_init_nest_lock"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_init_nest_lock"
"," "omp_init_nest_lock" "@@" "VERSION" "\n\t")
;
1299KMP_VERSION_SYMBOL(FTN_DESTROY_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_destroy_lock) __kmp_api_omp_destroy_lock_30_alias
__attribute__((alias("__kmp_api_omp_destroy_lock"))); __asm__
( ".symver " "__kmp_api_omp_destroy_lock_30_alias" "," "omp_destroy_lock"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_destroy_lock"
"," "omp_destroy_lock" "@@" "VERSION" "\n\t")
;
1300KMP_VERSION_SYMBOL(FTN_DESTROY_NEST_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_destroy_nest_lock) __kmp_api_omp_destroy_nest_lock_30_alias
__attribute__((alias("__kmp_api_omp_destroy_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_destroy_nest_lock_30_alias" "," "omp_destroy_nest_lock"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_destroy_nest_lock"
"," "omp_destroy_nest_lock" "@@" "VERSION" "\n\t")
;
1301KMP_VERSION_SYMBOL(FTN_SET_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_set_lock) __kmp_api_omp_set_lock_30_alias
__attribute__((alias("__kmp_api_omp_set_lock"))); __asm__( ".symver "
"__kmp_api_omp_set_lock_30_alias" "," "omp_set_lock" "@" "OMP_3.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_set_lock" "," "omp_set_lock"
"@@" "VERSION" "\n\t")
;
1302KMP_VERSION_SYMBOL(FTN_SET_NEST_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_set_nest_lock) __kmp_api_omp_set_nest_lock_30_alias
__attribute__((alias("__kmp_api_omp_set_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_set_nest_lock_30_alias" "," "omp_set_nest_lock"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_set_nest_lock"
"," "omp_set_nest_lock" "@@" "VERSION" "\n\t")
;
1303KMP_VERSION_SYMBOL(FTN_UNSET_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_unset_lock) __kmp_api_omp_unset_lock_30_alias
__attribute__((alias("__kmp_api_omp_unset_lock"))); __asm__(
".symver " "__kmp_api_omp_unset_lock_30_alias" "," "omp_unset_lock"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_unset_lock"
"," "omp_unset_lock" "@@" "VERSION" "\n\t")
;
1304KMP_VERSION_SYMBOL(FTN_UNSET_NEST_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_unset_nest_lock) __kmp_api_omp_unset_nest_lock_30_alias
__attribute__((alias("__kmp_api_omp_unset_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_unset_nest_lock_30_alias" "," "omp_unset_nest_lock"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_unset_nest_lock"
"," "omp_unset_nest_lock" "@@" "VERSION" "\n\t")
;
1305KMP_VERSION_SYMBOL(FTN_TEST_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_test_lock) __kmp_api_omp_test_lock_30_alias
__attribute__((alias("__kmp_api_omp_test_lock"))); __asm__( ".symver "
"__kmp_api_omp_test_lock_30_alias" "," "omp_test_lock" "@" "OMP_3.0"
"\n\t"); __asm__(".symver " "__kmp_api_omp_test_lock" "," "omp_test_lock"
"@@" "VERSION" "\n\t")
;
1306KMP_VERSION_SYMBOL(FTN_TEST_NEST_LOCK, 30, "OMP_3.0")__typeof__(__kmp_api_omp_test_nest_lock) __kmp_api_omp_test_nest_lock_30_alias
__attribute__((alias("__kmp_api_omp_test_nest_lock"))); __asm__
( ".symver " "__kmp_api_omp_test_nest_lock_30_alias" "," "omp_test_nest_lock"
"@" "OMP_3.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_test_nest_lock"
"," "omp_test_nest_lock" "@@" "VERSION" "\n\t")
;
1307
1308// OMP_3.1 versioned symbol
1309KMP_VERSION_SYMBOL(FTN_IN_FINAL, 31, "OMP_3.1")__typeof__(__kmp_api_omp_in_final) __kmp_api_omp_in_final_31_alias
__attribute__((alias("__kmp_api_omp_in_final"))); __asm__( ".symver "
"__kmp_api_omp_in_final_31_alias" "," "omp_in_final" "@" "OMP_3.1"
"\n\t"); __asm__(".symver " "__kmp_api_omp_in_final" "," "omp_in_final"
"@@" "VERSION" "\n\t")
;
1310
1311#if OMP_40_ENABLED(50 >= 40)
1312// OMP_4.0 versioned symbols
1313KMP_VERSION_SYMBOL(FTN_GET_PROC_BIND, 40, "OMP_4.0")__typeof__(__kmp_api_omp_get_proc_bind) __kmp_api_omp_get_proc_bind_40_alias
__attribute__((alias("__kmp_api_omp_get_proc_bind"))); __asm__
( ".symver " "__kmp_api_omp_get_proc_bind_40_alias" "," "omp_get_proc_bind"
"@" "OMP_4.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_proc_bind"
"," "omp_get_proc_bind" "@@" "VERSION" "\n\t")
;
1314KMP_VERSION_SYMBOL(FTN_GET_NUM_TEAMS, 40, "OMP_4.0")__typeof__(__kmp_api_omp_get_num_teams) __kmp_api_omp_get_num_teams_40_alias
__attribute__((alias("__kmp_api_omp_get_num_teams"))); __asm__
( ".symver " "__kmp_api_omp_get_num_teams_40_alias" "," "omp_get_num_teams"
"@" "OMP_4.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_num_teams"
"," "omp_get_num_teams" "@@" "VERSION" "\n\t")
;
1315KMP_VERSION_SYMBOL(FTN_GET_TEAM_NUM, 40, "OMP_4.0")__typeof__(__kmp_api_omp_get_team_num) __kmp_api_omp_get_team_num_40_alias
__attribute__((alias("__kmp_api_omp_get_team_num"))); __asm__
( ".symver " "__kmp_api_omp_get_team_num_40_alias" "," "omp_get_team_num"
"@" "OMP_4.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_team_num"
"," "omp_get_team_num" "@@" "VERSION" "\n\t")
;
1316KMP_VERSION_SYMBOL(FTN_GET_CANCELLATION, 40, "OMP_4.0")__typeof__(__kmp_api_omp_get_cancellation) __kmp_api_omp_get_cancellation_40_alias
__attribute__((alias("__kmp_api_omp_get_cancellation"))); __asm__
( ".symver " "__kmp_api_omp_get_cancellation_40_alias" "," "omp_get_cancellation"
"@" "OMP_4.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_cancellation"
"," "omp_get_cancellation" "@@" "VERSION" "\n\t")
;
1317KMP_VERSION_SYMBOL(FTN_GET_DEFAULT_DEVICE, 40, "OMP_4.0")__typeof__(__kmp_api_omp_get_default_device) __kmp_api_omp_get_default_device_40_alias
__attribute__((alias("__kmp_api_omp_get_default_device"))); __asm__
( ".symver " "__kmp_api_omp_get_default_device_40_alias" "," "omp_get_default_device"
"@" "OMP_4.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_default_device"
"," "omp_get_default_device" "@@" "VERSION" "\n\t")
;
1318KMP_VERSION_SYMBOL(FTN_SET_DEFAULT_DEVICE, 40, "OMP_4.0")__typeof__(__kmp_api_omp_set_default_device) __kmp_api_omp_set_default_device_40_alias
__attribute__((alias("__kmp_api_omp_set_default_device"))); __asm__
( ".symver " "__kmp_api_omp_set_default_device_40_alias" "," "omp_set_default_device"
"@" "OMP_4.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_set_default_device"
"," "omp_set_default_device" "@@" "VERSION" "\n\t")
;
1319KMP_VERSION_SYMBOL(FTN_IS_INITIAL_DEVICE, 40, "OMP_4.0")__typeof__(__kmp_api_omp_is_initial_device) __kmp_api_omp_is_initial_device_40_alias
__attribute__((alias("__kmp_api_omp_is_initial_device"))); __asm__
( ".symver " "__kmp_api_omp_is_initial_device_40_alias" "," "omp_is_initial_device"
"@" "OMP_4.0" "\n\t"); __asm__(".symver " "__kmp_api_omp_is_initial_device"
"," "omp_is_initial_device" "@@" "VERSION" "\n\t")
;
1320#endif /* OMP_40_ENABLED */
1321
1322#if OMP_45_ENABLED(50 >= 45)
1323// OMP_4.5 versioned symbols
1324KMP_VERSION_SYMBOL(FTN_GET_MAX_TASK_PRIORITY, 45, "OMP_4.5")__typeof__(__kmp_api_omp_get_max_task_priority) __kmp_api_omp_get_max_task_priority_45_alias
__attribute__((alias("__kmp_api_omp_get_max_task_priority"))
); __asm__( ".symver " "__kmp_api_omp_get_max_task_priority_45_alias"
"," "omp_get_max_task_priority" "@" "OMP_4.5" "\n\t"); __asm__
(".symver " "__kmp_api_omp_get_max_task_priority" "," "omp_get_max_task_priority"
"@@" "VERSION" "\n\t")
;
1325KMP_VERSION_SYMBOL(FTN_GET_NUM_PLACES, 45, "OMP_4.5")__typeof__(__kmp_api_omp_get_num_places) __kmp_api_omp_get_num_places_45_alias
__attribute__((alias("__kmp_api_omp_get_num_places"))); __asm__
( ".symver " "__kmp_api_omp_get_num_places_45_alias" "," "omp_get_num_places"
"@" "OMP_4.5" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_num_places"
"," "omp_get_num_places" "@@" "VERSION" "\n\t")
;
1326KMP_VERSION_SYMBOL(FTN_GET_PLACE_NUM_PROCS, 45, "OMP_4.5")__typeof__(__kmp_api_omp_get_place_num_procs) __kmp_api_omp_get_place_num_procs_45_alias
__attribute__((alias("__kmp_api_omp_get_place_num_procs")));
__asm__( ".symver " "__kmp_api_omp_get_place_num_procs_45_alias"
"," "omp_get_place_num_procs" "@" "OMP_4.5" "\n\t"); __asm__
(".symver " "__kmp_api_omp_get_place_num_procs" "," "omp_get_place_num_procs"
"@@" "VERSION" "\n\t")
;
1327KMP_VERSION_SYMBOL(FTN_GET_PLACE_PROC_IDS, 45, "OMP_4.5")__typeof__(__kmp_api_omp_get_place_proc_ids) __kmp_api_omp_get_place_proc_ids_45_alias
__attribute__((alias("__kmp_api_omp_get_place_proc_ids"))); __asm__
( ".symver " "__kmp_api_omp_get_place_proc_ids_45_alias" "," "omp_get_place_proc_ids"
"@" "OMP_4.5" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_place_proc_ids"
"," "omp_get_place_proc_ids" "@@" "VERSION" "\n\t")
;
1328KMP_VERSION_SYMBOL(FTN_GET_PLACE_NUM, 45, "OMP_4.5")__typeof__(__kmp_api_omp_get_place_num) __kmp_api_omp_get_place_num_45_alias
__attribute__((alias("__kmp_api_omp_get_place_num"))); __asm__
( ".symver " "__kmp_api_omp_get_place_num_45_alias" "," "omp_get_place_num"
"@" "OMP_4.5" "\n\t"); __asm__(".symver " "__kmp_api_omp_get_place_num"
"," "omp_get_place_num" "@@" "VERSION" "\n\t")
;
1329KMP_VERSION_SYMBOL(FTN_GET_PARTITION_NUM_PLACES, 45, "OMP_4.5")__typeof__(__kmp_api_omp_get_partition_num_places) __kmp_api_omp_get_partition_num_places_45_alias
__attribute__((alias("__kmp_api_omp_get_partition_num_places"
))); __asm__( ".symver " "__kmp_api_omp_get_partition_num_places_45_alias"
"," "omp_get_partition_num_places" "@" "OMP_4.5" "\n\t"); __asm__
(".symver " "__kmp_api_omp_get_partition_num_places" "," "omp_get_partition_num_places"
"@@" "VERSION" "\n\t")
;
1330KMP_VERSION_SYMBOL(FTN_GET_PARTITION_PLACE_NUMS, 45, "OMP_4.5")__typeof__(__kmp_api_omp_get_partition_place_nums) __kmp_api_omp_get_partition_place_nums_45_alias
__attribute__((alias("__kmp_api_omp_get_partition_place_nums"
))); __asm__( ".symver " "__kmp_api_omp_get_partition_place_nums_45_alias"
"," "omp_get_partition_place_nums" "@" "OMP_4.5" "\n\t"); __asm__
(".symver " "__kmp_api_omp_get_partition_place_nums" "," "omp_get_partition_place_nums"
"@@" "VERSION" "\n\t")
;
1331#endif
1332
1333#if OMP_50_ENABLED(50 >= 50)
1334// OMP_5.0 versioned symbols
1335#endif
1336
1337#endif // KMP_USE_VERSION_SYMBOLS
1338
1339#ifdef __cplusplus201103L
1340} // extern "C"
1341#endif // __cplusplus
1342
1343// end of file //