LLVM OpenMP* Runtime Library
kmp_ftn_os.h
1 /*
2  * kmp_ftn_os.h -- KPTS Fortran defines header file.
3  */
4 
5 
6 //===----------------------------------------------------------------------===//
7 //
8 // The LLVM Compiler Infrastructure
9 //
10 // This file is dual licensed under the MIT and the University of Illinois Open
11 // Source Licenses. See LICENSE.txt for details.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 
16 #ifndef KMP_FTN_OS_H
17 #define KMP_FTN_OS_H
18 
19 // KMP_FNT_ENTRIES may be one of: KMP_FTN_PLAIN, KMP_FTN_UPPER, KMP_FTN_APPEND, KMP_FTN_UAPPEND.
20 
21 
22 /* -------------------------- External definitions ------------------------ */
23 
24 #if KMP_FTN_ENTRIES == KMP_FTN_PLAIN
25 
26  #define FTN_SET_STACKSIZE kmp_set_stacksize
27  #define FTN_SET_STACKSIZE_S kmp_set_stacksize_s
28  #define FTN_GET_STACKSIZE kmp_get_stacksize
29  #define FTN_GET_STACKSIZE_S kmp_get_stacksize_s
30  #define FTN_SET_BLOCKTIME kmp_set_blocktime
31  #define FTN_GET_BLOCKTIME kmp_get_blocktime
32  #define FTN_SET_LIBRARY_SERIAL kmp_set_library_serial
33  #define FTN_SET_LIBRARY_TURNAROUND kmp_set_library_turnaround
34  #define FTN_SET_LIBRARY_THROUGHPUT kmp_set_library_throughput
35  #define FTN_SET_LIBRARY kmp_set_library
36  #define FTN_GET_LIBRARY kmp_get_library
37  #define FTN_SET_DEFAULTS kmp_set_defaults
38  #define FTN_SET_AFFINITY kmp_set_affinity
39  #define FTN_GET_AFFINITY kmp_get_affinity
40  #define FTN_GET_AFFINITY_MAX_PROC kmp_get_affinity_max_proc
41  #define FTN_CREATE_AFFINITY_MASK kmp_create_affinity_mask
42  #define FTN_DESTROY_AFFINITY_MASK kmp_destroy_affinity_mask
43  #define FTN_SET_AFFINITY_MASK_PROC kmp_set_affinity_mask_proc
44  #define FTN_UNSET_AFFINITY_MASK_PROC kmp_unset_affinity_mask_proc
45  #define FTN_GET_AFFINITY_MASK_PROC kmp_get_affinity_mask_proc
46 
47  #define FTN_MALLOC kmp_malloc
48  #define FTN_CALLOC kmp_calloc
49  #define FTN_REALLOC kmp_realloc
50  #define FTN_FREE kmp_free
51 
52  #define FTN_GET_NUM_KNOWN_THREADS kmp_get_num_known_threads
53 
54  #define FTN_SET_NUM_THREADS omp_set_num_threads
55  #define FTN_GET_NUM_THREADS omp_get_num_threads
56  #define FTN_GET_MAX_THREADS omp_get_max_threads
57  #define FTN_GET_THREAD_NUM omp_get_thread_num
58  #define FTN_GET_NUM_PROCS omp_get_num_procs
59  #define FTN_SET_DYNAMIC omp_set_dynamic
60  #define FTN_GET_DYNAMIC omp_get_dynamic
61  #define FTN_SET_NESTED omp_set_nested
62  #define FTN_GET_NESTED omp_get_nested
63  #define FTN_IN_PARALLEL omp_in_parallel
64  #define FTN_GET_THREAD_LIMIT omp_get_thread_limit
65  #define FTN_SET_SCHEDULE omp_set_schedule
66  #define FTN_GET_SCHEDULE omp_get_schedule
67  #define FTN_SET_MAX_ACTIVE_LEVELS omp_set_max_active_levels
68  #define FTN_GET_MAX_ACTIVE_LEVELS omp_get_max_active_levels
69  #define FTN_GET_ACTIVE_LEVEL omp_get_active_level
70  #define FTN_GET_LEVEL omp_get_level
71  #define FTN_GET_ANCESTOR_THREAD_NUM omp_get_ancestor_thread_num
72  #define FTN_GET_TEAM_SIZE omp_get_team_size
73  #define FTN_IN_FINAL omp_in_final
74 // #define FTN_SET_PROC_BIND omp_set_proc_bind
75  #define FTN_GET_PROC_BIND omp_get_proc_bind
76 // #define FTN_CURR_PROC_BIND omp_curr_proc_bind
77 #if OMP_40_ENABLED
78  #define FTN_GET_NUM_TEAMS omp_get_num_teams
79  #define FTN_GET_TEAM_NUM omp_get_team_num
80 #endif
81  #define FTN_INIT_LOCK omp_init_lock
82 #if KMP_USE_DYNAMIC_LOCK
83  #define FTN_INIT_LOCK_WITH_HINT omp_init_lock_with_hint
84  #define FTN_INIT_NEST_LOCK_WITH_HINT omp_init_nest_lock_with_hint
85 #endif
86  #define FTN_DESTROY_LOCK omp_destroy_lock
87  #define FTN_SET_LOCK omp_set_lock
88  #define FTN_UNSET_LOCK omp_unset_lock
89  #define FTN_TEST_LOCK omp_test_lock
90  #define FTN_INIT_NEST_LOCK omp_init_nest_lock
91  #define FTN_DESTROY_NEST_LOCK omp_destroy_nest_lock
92  #define FTN_SET_NEST_LOCK omp_set_nest_lock
93  #define FTN_UNSET_NEST_LOCK omp_unset_nest_lock
94  #define FTN_TEST_NEST_LOCK omp_test_nest_lock
95 
96  #define FTN_SET_WARNINGS_ON kmp_set_warnings_on
97  #define FTN_SET_WARNINGS_OFF kmp_set_warnings_off
98 
99  #define FTN_GET_WTIME omp_get_wtime
100  #define FTN_GET_WTICK omp_get_wtick
101 
102 #if OMP_40_ENABLED
103 #if KMP_MIC || KMP_OS_DARWIN
104  #define FTN_GET_DEFAULT_DEVICE omp_get_default_device
105  #define FTN_SET_DEFAULT_DEVICE omp_set_default_device
106  #define FTN_GET_NUM_DEVICES omp_get_num_devices
107 #endif
108  #define FTN_IS_INITIAL_DEVICE omp_is_initial_device
109 #endif
110 
111 #if OMP_40_ENABLED
112  #define FTN_GET_CANCELLATION omp_get_cancellation
113  #define FTN_GET_CANCELLATION_STATUS kmp_get_cancellation_status
114 #endif
115 
116 #endif /* KMP_FTN_PLAIN */
117 
118 /* ------------------------------------------------------------------------ */
119 
120 #if KMP_FTN_ENTRIES == KMP_FTN_APPEND
121 
122  #define FTN_SET_STACKSIZE kmp_set_stacksize_
123  #define FTN_SET_STACKSIZE_S kmp_set_stacksize_s_
124  #define FTN_GET_STACKSIZE kmp_get_stacksize_
125  #define FTN_GET_STACKSIZE_S kmp_get_stacksize_s_
126  #define FTN_SET_BLOCKTIME kmp_set_blocktime_
127  #define FTN_GET_BLOCKTIME kmp_get_blocktime_
128  #define FTN_SET_LIBRARY_SERIAL kmp_set_library_serial_
129  #define FTN_SET_LIBRARY_TURNAROUND kmp_set_library_turnaround_
130  #define FTN_SET_LIBRARY_THROUGHPUT kmp_set_library_throughput_
131  #define FTN_SET_LIBRARY kmp_set_library_
132  #define FTN_GET_LIBRARY kmp_get_library_
133  #define FTN_SET_DEFAULTS kmp_set_defaults_
134  #define FTN_SET_AFFINITY kmp_set_affinity_
135  #define FTN_GET_AFFINITY kmp_get_affinity_
136  #define FTN_GET_AFFINITY_MAX_PROC kmp_get_affinity_max_proc_
137  #define FTN_CREATE_AFFINITY_MASK kmp_create_affinity_mask_
138  #define FTN_DESTROY_AFFINITY_MASK kmp_destroy_affinity_mask_
139  #define FTN_SET_AFFINITY_MASK_PROC kmp_set_affinity_mask_proc_
140  #define FTN_UNSET_AFFINITY_MASK_PROC kmp_unset_affinity_mask_proc_
141  #define FTN_GET_AFFINITY_MASK_PROC kmp_get_affinity_mask_proc_
142 
143  #define FTN_MALLOC kmp_malloc_
144  #define FTN_CALLOC kmp_calloc_
145  #define FTN_REALLOC kmp_realloc_
146  #define FTN_FREE kmp_free_
147 
148  #define FTN_GET_NUM_KNOWN_THREADS kmp_get_num_known_threads_
149 
150  #define FTN_SET_NUM_THREADS omp_set_num_threads_
151  #define FTN_GET_NUM_THREADS omp_get_num_threads_
152  #define FTN_GET_MAX_THREADS omp_get_max_threads_
153  #define FTN_GET_THREAD_NUM omp_get_thread_num_
154  #define FTN_GET_NUM_PROCS omp_get_num_procs_
155  #define FTN_SET_DYNAMIC omp_set_dynamic_
156  #define FTN_GET_DYNAMIC omp_get_dynamic_
157  #define FTN_SET_NESTED omp_set_nested_
158  #define FTN_GET_NESTED omp_get_nested_
159  #define FTN_IN_PARALLEL omp_in_parallel_
160  #define FTN_GET_THREAD_LIMIT omp_get_thread_limit_
161  #define FTN_SET_SCHEDULE omp_set_schedule_
162  #define FTN_GET_SCHEDULE omp_get_schedule_
163  #define FTN_SET_MAX_ACTIVE_LEVELS omp_set_max_active_levels_
164  #define FTN_GET_MAX_ACTIVE_LEVELS omp_get_max_active_levels_
165  #define FTN_GET_ACTIVE_LEVEL omp_get_active_level_
166  #define FTN_GET_LEVEL omp_get_level_
167  #define FTN_GET_ANCESTOR_THREAD_NUM omp_get_ancestor_thread_num_
168  #define FTN_GET_TEAM_SIZE omp_get_team_size_
169  #define FTN_IN_FINAL omp_in_final_
170 // #define FTN_SET_PROC_BIND omp_set_proc_bind_
171  #define FTN_GET_PROC_BIND omp_get_proc_bind_
172 // #define FTN_CURR_PROC_BIND omp_curr_proc_bind_
173 #if OMP_40_ENABLED
174  #define FTN_GET_NUM_TEAMS omp_get_num_teams_
175  #define FTN_GET_TEAM_NUM omp_get_team_num_
176 #endif
177  #define FTN_INIT_LOCK omp_init_lock_
178 #if KMP_USE_DYNAMIC_LOCK
179  #define FTN_INIT_LOCK_WITH_HINT omp_init_lock_with_hint_
180  #define FTN_INIT_NEST_LOCK_WITH_HINT omp_init_nest_lock_with_hint_
181 #endif
182  #define FTN_DESTROY_LOCK omp_destroy_lock_
183  #define FTN_SET_LOCK omp_set_lock_
184  #define FTN_UNSET_LOCK omp_unset_lock_
185  #define FTN_TEST_LOCK omp_test_lock_
186  #define FTN_INIT_NEST_LOCK omp_init_nest_lock_
187  #define FTN_DESTROY_NEST_LOCK omp_destroy_nest_lock_
188  #define FTN_SET_NEST_LOCK omp_set_nest_lock_
189  #define FTN_UNSET_NEST_LOCK omp_unset_nest_lock_
190  #define FTN_TEST_NEST_LOCK omp_test_nest_lock_
191 
192  #define FTN_SET_WARNINGS_ON kmp_set_warnings_on_
193  #define FTN_SET_WARNINGS_OFF kmp_set_warnings_off_
194 
195  #define FTN_GET_WTIME omp_get_wtime_
196  #define FTN_GET_WTICK omp_get_wtick_
197 
198 #if OMP_40_ENABLED
199 #if KMP_MIC || KMP_OS_DARWIN
200  #define FTN_GET_DEFAULT_DEVICE omp_get_default_device_
201  #define FTN_SET_DEFAULT_DEVICE omp_set_default_device_
202  #define FTN_GET_NUM_DEVICES omp_get_num_devices_
203 #endif
204  #define FTN_IS_INITIAL_DEVICE omp_is_initial_device_
205 #endif
206 
207 
208 #if OMP_40_ENABLED
209  #define FTN_GET_CANCELLATION omp_get_cancellation_
210  #define FTN_GET_CANCELLATION_STATUS kmp_get_cancellation_status_
211 #endif
212 
213 #endif /* KMP_FTN_APPEND */
214 
215 /* ------------------------------------------------------------------------ */
216 
217 #if KMP_FTN_ENTRIES == KMP_FTN_UPPER
218 
219  #define FTN_SET_STACKSIZE KMP_SET_STACKSIZE
220  #define FTN_SET_STACKSIZE_S KMP_SET_STACKSIZE_S
221  #define FTN_GET_STACKSIZE KMP_GET_STACKSIZE
222  #define FTN_GET_STACKSIZE_S KMP_GET_STACKSIZE_S
223  #define FTN_SET_BLOCKTIME KMP_SET_BLOCKTIME
224  #define FTN_GET_BLOCKTIME KMP_GET_BLOCKTIME
225  #define FTN_SET_LIBRARY_SERIAL KMP_SET_LIBRARY_SERIAL
226  #define FTN_SET_LIBRARY_TURNAROUND KMP_SET_LIBRARY_TURNAROUND
227  #define FTN_SET_LIBRARY_THROUGHPUT KMP_SET_LIBRARY_THROUGHPUT
228  #define FTN_SET_LIBRARY KMP_SET_LIBRARY
229  #define FTN_GET_LIBRARY KMP_GET_LIBRARY
230  #define FTN_SET_DEFAULTS KMP_SET_DEFAULTS
231  #define FTN_SET_AFFINITY KMP_SET_AFFINITY
232  #define FTN_GET_AFFINITY KMP_GET_AFFINITY
233  #define FTN_GET_AFFINITY_MAX_PROC KMP_GET_AFFINITY_MAX_PROC
234  #define FTN_CREATE_AFFINITY_MASK KMP_CREATE_AFFINITY_MASK
235  #define FTN_DESTROY_AFFINITY_MASK KMP_DESTROY_AFFINITY_MASK
236  #define FTN_SET_AFFINITY_MASK_PROC KMP_SET_AFFINITY_MASK_PROC
237  #define FTN_UNSET_AFFINITY_MASK_PROC KMP_UNSET_AFFINITY_MASK_PROC
238  #define FTN_GET_AFFINITY_MASK_PROC KMP_GET_AFFINITY_MASK_PROC
239 
240  #define FTN_MALLOC KMP_MALLOC
241  #define FTN_CALLOC KMP_CALLOC
242  #define FTN_REALLOC KMP_REALLOC
243  #define FTN_FREE KMP_FREE
244 
245  #define FTN_GET_NUM_KNOWN_THREADS KMP_GET_NUM_KNOWN_THREADS
246 
247  #define FTN_SET_NUM_THREADS OMP_SET_NUM_THREADS
248  #define FTN_GET_NUM_THREADS OMP_GET_NUM_THREADS
249  #define FTN_GET_MAX_THREADS OMP_GET_MAX_THREADS
250  #define FTN_GET_THREAD_NUM OMP_GET_THREAD_NUM
251  #define FTN_GET_NUM_PROCS OMP_GET_NUM_PROCS
252  #define FTN_SET_DYNAMIC OMP_SET_DYNAMIC
253  #define FTN_GET_DYNAMIC OMP_GET_DYNAMIC
254  #define FTN_SET_NESTED OMP_SET_NESTED
255  #define FTN_GET_NESTED OMP_GET_NESTED
256  #define FTN_IN_PARALLEL OMP_IN_PARALLEL
257  #define FTN_GET_THREAD_LIMIT OMP_GET_THREAD_LIMIT
258  #define FTN_SET_SCHEDULE OMP_SET_SCHEDULE
259  #define FTN_GET_SCHEDULE OMP_GET_SCHEDULE
260  #define FTN_SET_MAX_ACTIVE_LEVELS OMP_SET_MAX_ACTIVE_LEVELS
261  #define FTN_GET_MAX_ACTIVE_LEVELS OMP_GET_MAX_ACTIVE_LEVELS
262  #define FTN_GET_ACTIVE_LEVEL OMP_GET_ACTIVE_LEVEL
263  #define FTN_GET_LEVEL OMP_GET_LEVEL
264  #define FTN_GET_ANCESTOR_THREAD_NUM OMP_GET_ANCESTOR_THREAD_NUM
265  #define FTN_GET_TEAM_SIZE OMP_GET_TEAM_SIZE
266  #define FTN_IN_FINAL OMP_IN_FINAL
267 // #define FTN_SET_PROC_BIND OMP_SET_PROC_BIND
268  #define FTN_GET_PROC_BIND OMP_GET_PROC_BIND
269 // #define FTN_CURR_PROC_BIND OMP_CURR_PROC_BIND
270 #if OMP_40_ENABLED
271  #define FTN_GET_NUM_TEAMS OMP_GET_NUM_TEAMS
272  #define FTN_GET_TEAM_NUM OMP_GET_TEAM_NUM
273 #endif
274  #define FTN_INIT_LOCK OMP_INIT_LOCK
275 #if KMP_USE_DYNAMIC_LOCK
276  #define FTN_INIT_LOCK_WITH_HINT OMP_INIT_LOCK_WITH_HINT
277  #define FTN_INIT_NEST_LOCK_WITH_HINT OMP_INIT_NEST_LOCK_WITH_HINT
278 #endif
279  #define FTN_DESTROY_LOCK OMP_DESTROY_LOCK
280  #define FTN_SET_LOCK OMP_SET_LOCK
281  #define FTN_UNSET_LOCK OMP_UNSET_LOCK
282  #define FTN_TEST_LOCK OMP_TEST_LOCK
283  #define FTN_INIT_NEST_LOCK OMP_INIT_NEST_LOCK
284  #define FTN_DESTROY_NEST_LOCK OMP_DESTROY_NEST_LOCK
285  #define FTN_SET_NEST_LOCK OMP_SET_NEST_LOCK
286  #define FTN_UNSET_NEST_LOCK OMP_UNSET_NEST_LOCK
287  #define FTN_TEST_NEST_LOCK OMP_TEST_NEST_LOCK
288 
289  #define FTN_SET_WARNINGS_ON KMP_SET_WARNINGS_ON
290  #define FTN_SET_WARNINGS_OFF KMP_SET_WARNINGS_OFF
291 
292  #define FTN_GET_WTIME OMP_GET_WTIME
293  #define FTN_GET_WTICK OMP_GET_WTICK
294 
295 #if OMP_40_ENABLED
296 #if KMP_MIC || KMP_OS_DARWIN
297  #define FTN_GET_DEFAULT_DEVICE OMP_GET_DEFAULT_DEVICE
298  #define FTN_SET_DEFAULT_DEVICE OMP_SET_DEFAULT_DEVICE
299  #define FTN_GET_NUM_DEVICES OMP_GET_NUM_DEVICES
300 #endif
301  #define FTN_IS_INITIAL_DEVICE OMP_IS_INITIAL_DEVICE
302 #endif
303 
304 
305 #if OMP_40_ENABLED
306  #define FTN_GET_CANCELLATION OMP_GET_CANCELLATION
307  #define FTN_GET_CANCELLATION_STATUS KMP_GET_CANCELLATION_STATUS
308 #endif
309 
310 #endif /* KMP_FTN_UPPER */
311 
312 /* ------------------------------------------------------------------------ */
313 
314 #if KMP_FTN_ENTRIES == KMP_FTN_UAPPEND
315 
316  #define FTN_SET_STACKSIZE KMP_SET_STACKSIZE_
317  #define FTN_SET_STACKSIZE_S KMP_SET_STACKSIZE_S_
318  #define FTN_GET_STACKSIZE KMP_GET_STACKSIZE_
319  #define FTN_GET_STACKSIZE_S KMP_GET_STACKSIZE_S_
320  #define FTN_SET_BLOCKTIME KMP_SET_BLOCKTIME_
321  #define FTN_GET_BLOCKTIME KMP_GET_BLOCKTIME_
322  #define FTN_SET_LIBRARY_SERIAL KMP_SET_LIBRARY_SERIAL_
323  #define FTN_SET_LIBRARY_TURNAROUND KMP_SET_LIBRARY_TURNAROUND_
324  #define FTN_SET_LIBRARY_THROUGHPUT KMP_SET_LIBRARY_THROUGHPUT_
325  #define FTN_SET_LIBRARY KMP_SET_LIBRARY_
326  #define FTN_GET_LIBRARY KMP_GET_LIBRARY_
327  #define FTN_SET_DEFAULTS KMP_SET_DEFAULTS_
328  #define FTN_SET_AFFINITY KMP_SET_AFFINITY_
329  #define FTN_GET_AFFINITY KMP_GET_AFFINITY_
330  #define FTN_GET_AFFINITY_MAX_PROC KMP_GET_AFFINITY_MAX_PROC_
331  #define FTN_CREATE_AFFINITY_MASK KMP_CREATE_AFFINITY_MASK_
332  #define FTN_DESTROY_AFFINITY_MASK KMP_DESTROY_AFFINITY_MASK_
333  #define FTN_SET_AFFINITY_MASK_PROC KMP_SET_AFFINITY_MASK_PROC_
334  #define FTN_UNSET_AFFINITY_MASK_PROC KMP_UNSET_AFFINITY_MASK_PROC_
335  #define FTN_GET_AFFINITY_MASK_PROC KMP_GET_AFFINITY_MASK_PROC_
336 
337  #define FTN_MALLOC KMP_MALLOC_
338  #define FTN_CALLOC KMP_CALLOC_
339  #define FTN_REALLOC KMP_REALLOC_
340  #define FTN_FREE KMP_FREE_
341 
342  #define FTN_GET_NUM_KNOWN_THREADS KMP_GET_NUM_KNOWN_THREADS_
343 
344  #define FTN_SET_NUM_THREADS OMP_SET_NUM_THREADS_
345  #define FTN_GET_NUM_THREADS OMP_GET_NUM_THREADS_
346  #define FTN_GET_MAX_THREADS OMP_GET_MAX_THREADS_
347  #define FTN_GET_THREAD_NUM OMP_GET_THREAD_NUM_
348  #define FTN_GET_NUM_PROCS OMP_GET_NUM_PROCS_
349  #define FTN_SET_DYNAMIC OMP_SET_DYNAMIC_
350  #define FTN_GET_DYNAMIC OMP_GET_DYNAMIC_
351  #define FTN_SET_NESTED OMP_SET_NESTED_
352  #define FTN_GET_NESTED OMP_GET_NESTED_
353  #define FTN_IN_PARALLEL OMP_IN_PARALLEL_
354  #define FTN_GET_THREAD_LIMIT OMP_GET_THREAD_LIMIT_
355  #define FTN_SET_SCHEDULE OMP_SET_SCHEDULE_
356  #define FTN_GET_SCHEDULE OMP_GET_SCHEDULE_
357  #define FTN_SET_MAX_ACTIVE_LEVELS OMP_SET_MAX_ACTIVE_LEVELS_
358  #define FTN_GET_MAX_ACTIVE_LEVELS OMP_GET_MAX_ACTIVE_LEVELS_
359  #define FTN_GET_ACTIVE_LEVEL OMP_GET_ACTIVE_LEVEL_
360  #define FTN_GET_LEVEL OMP_GET_LEVEL_
361  #define FTN_GET_ANCESTOR_THREAD_NUM OMP_GET_ANCESTOR_THREAD_NUM_
362  #define FTN_GET_TEAM_SIZE OMP_GET_TEAM_SIZE_
363  #define FTN_IN_FINAL OMP_IN_FINAL_
364 // #define FTN_SET_PROC_BIND OMP_SET_PROC_BIND_
365  #define FTN_GET_PROC_BIND OMP_GET_PROC_BIND_
366 // #define FTN_CURR_PROC_BIND OMP_CURR_PROC_BIND_
367 #if OMP_40_ENABLED
368  #define FTN_GET_NUM_TEAMS OMP_GET_NUM_TEAMS_
369  #define FTN_GET_TEAM_NUM OMP_GET_TEAM_NUM_
370 #endif
371  #define FTN_INIT_LOCK OMP_INIT_LOCK_
372 #if KMP_USE_DYNAMIC_LOCK
373  #define FTN_INIT_LOCK_WITH_HINT OMP_INIT_LOCK_WITH_HINT_
374  #define FTN_INIT_NEST_LOCK_WITH_HINT OMP_INIT_NEST_LOCK_WITH_HINT_
375 #endif
376  #define FTN_DESTROY_LOCK OMP_DESTROY_LOCK_
377  #define FTN_SET_LOCK OMP_SET_LOCK_
378  #define FTN_UNSET_LOCK OMP_UNSET_LOCK_
379  #define FTN_TEST_LOCK OMP_TEST_LOCK_
380  #define FTN_INIT_NEST_LOCK OMP_INIT_NEST_LOCK_
381  #define FTN_DESTROY_NEST_LOCK OMP_DESTROY_NEST_LOCK_
382  #define FTN_SET_NEST_LOCK OMP_SET_NEST_LOCK_
383  #define FTN_UNSET_NEST_LOCK OMP_UNSET_NEST_LOCK_
384  #define FTN_TEST_NEST_LOCK OMP_TEST_NEST_LOCK_
385 
386  #define FTN_SET_WARNINGS_ON KMP_SET_WARNINGS_ON_
387  #define FTN_SET_WARNINGS_OFF KMP_SET_WARNINGS_OFF_
388 
389  #define FTN_GET_WTIME OMP_GET_WTIME_
390  #define FTN_GET_WTICK OMP_GET_WTICK_
391 
392 #if OMP_40_ENABLED
393 #if KMP_MIC || KMP_OS_DARWIN
394  #define FTN_GET_DEFAULT_DEVICE OMP_GET_DEFAULT_DEVICE_
395  #define FTN_SET_DEFAULT_DEVICE OMP_SET_DEFAULT_DEVICE_
396  #define FTN_GET_NUM_DEVICES OMP_GET_NUM_DEVICES_
397 #endif
398  #define FTN_IS_INITIAL_DEVICE OMP_IS_INITIAL_DEVICE_
399 #endif
400 
401 
402 #if OMP_40_ENABLED
403  #define FTN_GET_CANCELLATION OMP_GET_CANCELLATION_
404  #define FTN_GET_CANCELLATION_STATUS KMP_GET_CANCELLATION_STATUS_
405 #endif
406 
407 #endif /* KMP_FTN_UAPPEND */
408 
409 /* ------------------------------------------------------------------ */
410 /* -------------------------- GOMP API NAMES ------------------------ */
411 // All GOMP_1.0 symbols
412 #define KMP_API_NAME_GOMP_ATOMIC_END GOMP_atomic_end
413 #define KMP_API_NAME_GOMP_ATOMIC_START GOMP_atomic_start
414 #define KMP_API_NAME_GOMP_BARRIER GOMP_barrier
415 #define KMP_API_NAME_GOMP_CRITICAL_END GOMP_critical_end
416 #define KMP_API_NAME_GOMP_CRITICAL_NAME_END GOMP_critical_name_end
417 #define KMP_API_NAME_GOMP_CRITICAL_NAME_START GOMP_critical_name_start
418 #define KMP_API_NAME_GOMP_CRITICAL_START GOMP_critical_start
419 #define KMP_API_NAME_GOMP_LOOP_DYNAMIC_NEXT GOMP_loop_dynamic_next
420 #define KMP_API_NAME_GOMP_LOOP_DYNAMIC_START GOMP_loop_dynamic_start
421 #define KMP_API_NAME_GOMP_LOOP_END GOMP_loop_end
422 #define KMP_API_NAME_GOMP_LOOP_END_NOWAIT GOMP_loop_end_nowait
423 #define KMP_API_NAME_GOMP_LOOP_GUIDED_NEXT GOMP_loop_guided_next
424 #define KMP_API_NAME_GOMP_LOOP_GUIDED_START GOMP_loop_guided_start
425 #define KMP_API_NAME_GOMP_LOOP_ORDERED_DYNAMIC_NEXT GOMP_loop_ordered_dynamic_next
426 #define KMP_API_NAME_GOMP_LOOP_ORDERED_DYNAMIC_START GOMP_loop_ordered_dynamic_start
427 #define KMP_API_NAME_GOMP_LOOP_ORDERED_GUIDED_NEXT GOMP_loop_ordered_guided_next
428 #define KMP_API_NAME_GOMP_LOOP_ORDERED_GUIDED_START GOMP_loop_ordered_guided_start
429 #define KMP_API_NAME_GOMP_LOOP_ORDERED_RUNTIME_NEXT GOMP_loop_ordered_runtime_next
430 #define KMP_API_NAME_GOMP_LOOP_ORDERED_RUNTIME_START GOMP_loop_ordered_runtime_start
431 #define KMP_API_NAME_GOMP_LOOP_ORDERED_STATIC_NEXT GOMP_loop_ordered_static_next
432 #define KMP_API_NAME_GOMP_LOOP_ORDERED_STATIC_START GOMP_loop_ordered_static_start
433 #define KMP_API_NAME_GOMP_LOOP_RUNTIME_NEXT GOMP_loop_runtime_next
434 #define KMP_API_NAME_GOMP_LOOP_RUNTIME_START GOMP_loop_runtime_start
435 #define KMP_API_NAME_GOMP_LOOP_STATIC_NEXT GOMP_loop_static_next
436 #define KMP_API_NAME_GOMP_LOOP_STATIC_START GOMP_loop_static_start
437 #define KMP_API_NAME_GOMP_ORDERED_END GOMP_ordered_end
438 #define KMP_API_NAME_GOMP_ORDERED_START GOMP_ordered_start
439 #define KMP_API_NAME_GOMP_PARALLEL_END GOMP_parallel_end
440 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_DYNAMIC_START GOMP_parallel_loop_dynamic_start
441 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_GUIDED_START GOMP_parallel_loop_guided_start
442 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_RUNTIME_START GOMP_parallel_loop_runtime_start
443 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_STATIC_START GOMP_parallel_loop_static_start
444 #define KMP_API_NAME_GOMP_PARALLEL_SECTIONS_START GOMP_parallel_sections_start
445 #define KMP_API_NAME_GOMP_PARALLEL_START GOMP_parallel_start
446 #define KMP_API_NAME_GOMP_SECTIONS_END GOMP_sections_end
447 #define KMP_API_NAME_GOMP_SECTIONS_END_NOWAIT GOMP_sections_end_nowait
448 #define KMP_API_NAME_GOMP_SECTIONS_NEXT GOMP_sections_next
449 #define KMP_API_NAME_GOMP_SECTIONS_START GOMP_sections_start
450 #define KMP_API_NAME_GOMP_SINGLE_COPY_END GOMP_single_copy_end
451 #define KMP_API_NAME_GOMP_SINGLE_COPY_START GOMP_single_copy_start
452 #define KMP_API_NAME_GOMP_SINGLE_START GOMP_single_start
453 
454 // All GOMP_2.0 symbols
455 #define KMP_API_NAME_GOMP_TASK GOMP_task
456 #define KMP_API_NAME_GOMP_TASKWAIT GOMP_taskwait
457 #define KMP_API_NAME_GOMP_LOOP_ULL_DYNAMIC_NEXT GOMP_loop_ull_dynamic_next
458 #define KMP_API_NAME_GOMP_LOOP_ULL_DYNAMIC_START GOMP_loop_ull_dynamic_start
459 #define KMP_API_NAME_GOMP_LOOP_ULL_GUIDED_NEXT GOMP_loop_ull_guided_next
460 #define KMP_API_NAME_GOMP_LOOP_ULL_GUIDED_START GOMP_loop_ull_guided_start
461 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT GOMP_loop_ull_ordered_dynamic_next
462 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START GOMP_loop_ull_ordered_dynamic_start
463 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT GOMP_loop_ull_ordered_guided_next
464 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_GUIDED_START GOMP_loop_ull_ordered_guided_start
465 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT GOMP_loop_ull_ordered_runtime_next
466 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_RUNTIME_START GOMP_loop_ull_ordered_runtime_start
467 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT GOMP_loop_ull_ordered_static_next
468 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_STATIC_START GOMP_loop_ull_ordered_static_start
469 #define KMP_API_NAME_GOMP_LOOP_ULL_RUNTIME_NEXT GOMP_loop_ull_runtime_next
470 #define KMP_API_NAME_GOMP_LOOP_ULL_RUNTIME_START GOMP_loop_ull_runtime_start
471 #define KMP_API_NAME_GOMP_LOOP_ULL_STATIC_NEXT GOMP_loop_ull_static_next
472 #define KMP_API_NAME_GOMP_LOOP_ULL_STATIC_START GOMP_loop_ull_static_start
473 
474 // All GOMP_3.0 symbols
475 #define KMP_API_NAME_GOMP_TASKYIELD GOMP_taskyield
476 
477 // All GOMP_4.0 symbols
478 // TODO: As of 2013-10-14, none of the GOMP_4.0 functions are implemented in libomp
479 #define KMP_API_NAME_GOMP_BARRIER_CANCEL GOMP_barrier_cancel
480 #define KMP_API_NAME_GOMP_CANCEL GOMP_cancel
481 #define KMP_API_NAME_GOMP_CANCELLATION_POINT GOMP_cancellation_point
482 #define KMP_API_NAME_GOMP_LOOP_END_CANCEL GOMP_loop_end_cancel
483 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_DYNAMIC GOMP_parallel_loop_dynamic
484 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_GUIDED GOMP_parallel_loop_guided
485 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_RUNTIME GOMP_parallel_loop_runtime
486 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_STATIC GOMP_parallel_loop_static
487 #define KMP_API_NAME_GOMP_PARALLEL_SECTIONS GOMP_parallel_sections
488 #define KMP_API_NAME_GOMP_PARALLEL GOMP_parallel
489 #define KMP_API_NAME_GOMP_SECTIONS_END_CANCEL GOMP_sections_end_cancel
490 #define KMP_API_NAME_GOMP_TASKGROUP_START GOMP_taskgroup_start
491 #define KMP_API_NAME_GOMP_TASKGROUP_END GOMP_taskgroup_end
492 /* Target functions should be taken care of by liboffload */
493 #define KMP_API_NAME_GOMP_TARGET GOMP_target
494 #define KMP_API_NAME_GOMP_TARGET_DATA GOMP_target_data
495 #define KMP_API_NAME_GOMP_TARGET_END_DATA GOMP_target_end_data
496 #define KMP_API_NAME_GOMP_TARGET_UPDATE GOMP_target_update
497 #define KMP_API_NAME_GOMP_TEAMS GOMP_teams
498 
499 #ifdef KMP_USE_VERSION_SYMBOLS
500  #define xstr(x) str(x)
501  #define str(x) #x
502 
503  // If Linux, xexpand prepends __kmp_api_ to the real API name
504  #define xexpand(api_name) expand(api_name)
505  #define expand(api_name) __kmp_api_##api_name
506 
507  #define xaliasify(api_name,ver) aliasify(api_name,ver)
508  #define aliasify(api_name,ver) __typeof__(__kmp_api_##api_name) __kmp_api_##api_name##_##ver##_alias __attribute__((alias(xstr(__kmp_api_##api_name))))
509 
510  #define xversionify(api_name, version_num, version_str) versionify(api_name, version_num, version_str, "VERSION")
511  #define versionify(api_name, version_num, version_str, default_ver) \
512  __asm__(".symver " xstr(__kmp_api_##api_name##_##version_num##_alias) "," xstr(api_name) "@" version_str "\n\t"); \
513  __asm__(".symver " xstr(__kmp_api_##api_name) "," xstr(api_name) "@@" default_ver "\n\t")
514 
515 #else // KMP_USE_VERSION_SYMBOLS
516  #define xstr(x) /* Nothing */
517  #define str(x) /* Nothing */
518 
519  // if Windows or Mac, xexpand does no name transformation
520  #define xexpand(api_name) expand(api_name)
521  #define expand(api_name) api_name
522 
523  #define xaliasify(api_name,ver) /* Nothing */
524  #define aliasify(api_name,ver) /* Nothing */
525 
526  #define xversionify(api_name, version_num, version_str) /* Nothing */
527  #define versionify(api_name, version_num, version_str, default_ver) /* Nothing */
528 
529 #endif // KMP_USE_VERSION_SYMBOLS
530 
531 #endif /* KMP_FTN_OS_H */
532