1 /*
2  * include/50/omp.h.var
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 __OMP_H
17 #   define __OMP_H
18 
19 #   define KMP_VERSION_MAJOR    5
20 #   define KMP_VERSION_MINOR    0
21 #   define KMP_VERSION_BUILD    20140926
22 #   define KMP_BUILD_DATE       "No_Timestamp"
23 
24 #   ifdef __cplusplus
25     extern "C" {
26 #   endif
27 
28 #   if defined(_WIN32)
29 #       define __KAI_KMPC_CONVENTION __cdecl
30 #   else
31 #       define __KAI_KMPC_CONVENTION
32 #   endif
33 
34     /* schedule kind constants */
35     typedef enum omp_sched_t {
36 	omp_sched_static  = 1,
37 	omp_sched_dynamic = 2,
38 	omp_sched_guided  = 3,
39 	omp_sched_auto    = 4
40     } omp_sched_t;
41 
42     /* set API functions */
43     extern void   __KAI_KMPC_CONVENTION  omp_set_num_threads (int);
44     extern void   __KAI_KMPC_CONVENTION  omp_set_dynamic     (int);
45     extern void   __KAI_KMPC_CONVENTION  omp_set_nested      (int);
46     extern void   __KAI_KMPC_CONVENTION  omp_set_max_active_levels (int);
47     extern void   __KAI_KMPC_CONVENTION  omp_set_schedule          (omp_sched_t, int);
48 
49     /* query API functions */
50     extern int    __KAI_KMPC_CONVENTION  omp_get_num_threads  (void);
51     extern int    __KAI_KMPC_CONVENTION  omp_get_dynamic      (void);
52     extern int    __KAI_KMPC_CONVENTION  omp_get_nested       (void);
53     extern int    __KAI_KMPC_CONVENTION  omp_get_max_threads  (void);
54     extern int    __KAI_KMPC_CONVENTION  omp_get_thread_num   (void);
55     extern int    __KAI_KMPC_CONVENTION  omp_get_num_procs    (void);
56     extern int    __KAI_KMPC_CONVENTION  omp_in_parallel      (void);
57     extern int    __KAI_KMPC_CONVENTION  omp_in_final         (void);
58     extern int    __KAI_KMPC_CONVENTION  omp_get_active_level        (void);
59     extern int    __KAI_KMPC_CONVENTION  omp_get_level               (void);
60     extern int    __KAI_KMPC_CONVENTION  omp_get_ancestor_thread_num (int);
61     extern int    __KAI_KMPC_CONVENTION  omp_get_team_size           (int);
62     extern int    __KAI_KMPC_CONVENTION  omp_get_thread_limit        (void);
63     extern int    __KAI_KMPC_CONVENTION  omp_get_max_active_levels   (void);
64     extern void   __KAI_KMPC_CONVENTION  omp_get_schedule            (omp_sched_t *, int *);
65     extern int    __KAI_KMPC_CONVENTION  omp_get_max_task_priority   (void);
66 
67     /* lock API functions */
68     typedef struct omp_lock_t {
69         void * _lk;
70     } omp_lock_t;
71 
72     extern void   __KAI_KMPC_CONVENTION  omp_init_lock    (omp_lock_t *);
73     extern void   __KAI_KMPC_CONVENTION  omp_set_lock     (omp_lock_t *);
74     extern void   __KAI_KMPC_CONVENTION  omp_unset_lock   (omp_lock_t *);
75     extern void   __KAI_KMPC_CONVENTION  omp_destroy_lock (omp_lock_t *);
76     extern int    __KAI_KMPC_CONVENTION  omp_test_lock    (omp_lock_t *);
77 
78     /* nested lock API functions */
79     typedef struct omp_nest_lock_t {
80         void * _lk;
81     } omp_nest_lock_t;
82 
83     extern void   __KAI_KMPC_CONVENTION  omp_init_nest_lock    (omp_nest_lock_t *);
84     extern void   __KAI_KMPC_CONVENTION  omp_set_nest_lock     (omp_nest_lock_t *);
85     extern void   __KAI_KMPC_CONVENTION  omp_unset_nest_lock   (omp_nest_lock_t *);
86     extern void   __KAI_KMPC_CONVENTION  omp_destroy_nest_lock (omp_nest_lock_t *);
87     extern int    __KAI_KMPC_CONVENTION  omp_test_nest_lock    (omp_nest_lock_t *);
88 
89     /* lock hint type for dynamic user lock */
90     typedef enum omp_lock_hint_t {
91         omp_lock_hint_none           = 0,
92         omp_lock_hint_uncontended    = 1,
93         omp_lock_hint_contended      = (1<<1 ),
94         omp_lock_hint_nonspeculative = (1<<2 ),
95         omp_lock_hint_speculative    = (1<<3 ),
96         kmp_lock_hint_hle            = (1<<16),
97         kmp_lock_hint_rtm            = (1<<17),
98         kmp_lock_hint_adaptive       = (1<<18)
99     } omp_lock_hint_t;
100 
101     /* hinted lock initializers */
102     extern void __KAI_KMPC_CONVENTION omp_init_lock_with_hint(omp_lock_t *, omp_lock_hint_t);
103     extern void __KAI_KMPC_CONVENTION omp_init_nest_lock_with_hint(omp_nest_lock_t *, omp_lock_hint_t);
104 
105     /* time API functions */
106     extern double __KAI_KMPC_CONVENTION  omp_get_wtime (void);
107     extern double __KAI_KMPC_CONVENTION  omp_get_wtick (void);
108 
109     /* OpenMP 4.0 */
110     extern int  __KAI_KMPC_CONVENTION  omp_get_default_device (void);
111     extern void __KAI_KMPC_CONVENTION  omp_set_default_device (int);
112     extern int  __KAI_KMPC_CONVENTION  omp_is_initial_device (void);
113     extern int  __KAI_KMPC_CONVENTION  omp_get_num_devices (void);
114     extern int  __KAI_KMPC_CONVENTION  omp_get_num_teams (void);
115     extern int  __KAI_KMPC_CONVENTION  omp_get_team_num (void);
116     extern int  __KAI_KMPC_CONVENTION  omp_get_cancellation (void);
117 
118 #   include <stdlib.h>
119     /* OpenMP 4.5 */
120     extern int   __KAI_KMPC_CONVENTION  omp_get_initial_device (void);
121     extern void* __KAI_KMPC_CONVENTION  omp_target_alloc(size_t, int);
122     extern void  __KAI_KMPC_CONVENTION  omp_target_free(void *, int);
123     extern int   __KAI_KMPC_CONVENTION  omp_target_is_present(void *, int);
124     extern int   __KAI_KMPC_CONVENTION  omp_target_memcpy(void *, void *, size_t, size_t, size_t, int, int);
125     extern int   __KAI_KMPC_CONVENTION  omp_target_memcpy_rect(void *, void *, size_t, int, const size_t *,
126                                             const size_t *, const size_t *, const size_t *, const size_t *, int, int);
127     extern int   __KAI_KMPC_CONVENTION  omp_target_associate_ptr(void *, void *, size_t, size_t, int);
128     extern int   __KAI_KMPC_CONVENTION  omp_target_disassociate_ptr(void *, int);
129 
130     /* kmp API functions */
131     extern int    __KAI_KMPC_CONVENTION  kmp_get_stacksize          (void);
132     extern void   __KAI_KMPC_CONVENTION  kmp_set_stacksize          (int);
133     extern size_t __KAI_KMPC_CONVENTION  kmp_get_stacksize_s        (void);
134     extern void   __KAI_KMPC_CONVENTION  kmp_set_stacksize_s        (size_t);
135     extern int    __KAI_KMPC_CONVENTION  kmp_get_blocktime          (void);
136     extern int    __KAI_KMPC_CONVENTION  kmp_get_library            (void);
137     extern void   __KAI_KMPC_CONVENTION  kmp_set_blocktime          (int);
138     extern void   __KAI_KMPC_CONVENTION  kmp_set_library            (int);
139     extern void   __KAI_KMPC_CONVENTION  kmp_set_library_serial     (void);
140     extern void   __KAI_KMPC_CONVENTION  kmp_set_library_turnaround (void);
141     extern void   __KAI_KMPC_CONVENTION  kmp_set_library_throughput (void);
142     extern void   __KAI_KMPC_CONVENTION  kmp_set_defaults           (char const *);
143     extern void   __KAI_KMPC_CONVENTION  kmp_set_disp_num_buffers   (int);
144 
145     /* Intel affinity API */
146     typedef void * kmp_affinity_mask_t;
147 
148     extern int    __KAI_KMPC_CONVENTION  kmp_set_affinity             (kmp_affinity_mask_t *);
149     extern int    __KAI_KMPC_CONVENTION  kmp_get_affinity             (kmp_affinity_mask_t *);
150     extern int    __KAI_KMPC_CONVENTION  kmp_get_affinity_max_proc    (void);
151     extern void   __KAI_KMPC_CONVENTION  kmp_create_affinity_mask     (kmp_affinity_mask_t *);
152     extern void   __KAI_KMPC_CONVENTION  kmp_destroy_affinity_mask    (kmp_affinity_mask_t *);
153     extern int    __KAI_KMPC_CONVENTION  kmp_set_affinity_mask_proc   (int, kmp_affinity_mask_t *);
154     extern int    __KAI_KMPC_CONVENTION  kmp_unset_affinity_mask_proc (int, kmp_affinity_mask_t *);
155     extern int    __KAI_KMPC_CONVENTION  kmp_get_affinity_mask_proc   (int, kmp_affinity_mask_t *);
156 
157     /* OpenMP 4.0 affinity API */
158     typedef enum omp_proc_bind_t {
159         omp_proc_bind_false = 0,
160         omp_proc_bind_true = 1,
161         omp_proc_bind_master = 2,
162         omp_proc_bind_close = 3,
163         omp_proc_bind_spread = 4
164     } omp_proc_bind_t;
165 
166     extern omp_proc_bind_t __KAI_KMPC_CONVENTION omp_get_proc_bind (void);
167 
168     /* OpenMP 4.5 affinity API */
169     extern int  __KAI_KMPC_CONVENTION omp_get_num_places (void);
170     extern int  __KAI_KMPC_CONVENTION omp_get_place_num_procs (int);
171     extern void __KAI_KMPC_CONVENTION omp_get_place_proc_ids (int, int *);
172     extern int  __KAI_KMPC_CONVENTION omp_get_place_num (void);
173     extern int  __KAI_KMPC_CONVENTION omp_get_partition_num_places (void);
174     extern void __KAI_KMPC_CONVENTION omp_get_partition_place_nums (int *);
175 
176     extern void * __KAI_KMPC_CONVENTION  kmp_malloc  (size_t);
177     extern void * __KAI_KMPC_CONVENTION  kmp_aligned_malloc  (size_t, size_t);
178     extern void * __KAI_KMPC_CONVENTION  kmp_calloc  (size_t, size_t);
179     extern void * __KAI_KMPC_CONVENTION  kmp_realloc (void *, size_t);
180     extern void   __KAI_KMPC_CONVENTION  kmp_free    (void *);
181 
182     extern void   __KAI_KMPC_CONVENTION  kmp_set_warnings_on(void);
183     extern void   __KAI_KMPC_CONVENTION  kmp_set_warnings_off(void);
184 
185     /* OpenMP 5.0 Tool Control */
186     typedef enum omp_control_tool_result_t {
187         omp_control_tool_notool = -2,
188         omp_control_tool_nocallback = -1,
189         omp_control_tool_success = 0,
190         omp_control_tool_ignored = 1
191     } omp_control_tool_result_t;
192 
193     typedef enum omp_control_tool_t {
194         omp_control_tool_start = 1,
195         omp_control_tool_pause = 2,
196         omp_control_tool_flush = 3,
197         omp_control_tool_end = 4
198     } omp_control_tool_t;
199 
200     extern int __KAI_KMPC_CONVENTION omp_control_tool(int, int, void*);
201 
202 #   undef __KAI_KMPC_CONVENTION
203 
204     /* Warning:
205        The following typedefs are not standard, deprecated and will be removed in a future release.
206     */
207     typedef int     omp_int_t;
208     typedef double  omp_wtime_t;
209 
210 #   ifdef __cplusplus
211     }
212 #   endif
213 
214 #endif /* __OMP_H */
215 
216