xref: /llvm-project/openmp/runtime/test/tasking/kmp_task_deps.h (revision f5e50b21da0cb543064b2d0b9304ce0b368cf2bb)
1 #ifndef KMP_TASK_DEPS_H
2 #define KMP_TASK_DEPS_H
3 
4 #include <stddef.h> /* size_t */
5 
6 // ---------------------------------------------------------------------------
7 // internal data to emulate compiler codegen
8 typedef struct DEP {
9   size_t addr;
10   size_t len;
11   unsigned char flags;
12 } dep;
13 
14 typedef struct task {
15   void **shareds;
16   void *entry;
17   int part_id;
18   void *destr_thunk;
19   int priority;
20   long long device_id;
21   int f_priv;
22 } kmp_task_t;
23 typedef int (*entry_t)(int, kmp_task_t *);
24 typedef struct ID {
25   int reserved_1;
26   int flags;
27   int reserved_2;
28   int reserved_3;
29   char *psource;
30 } id;
31 
32 #define TIED 1
33 
34 struct kmp_depnode_list;
35 
36 typedef struct kmp_base_depnode {
37   struct kmp_depnode_list *successors;
38   /* [...] more stuff down here */
39 } kmp_base_depnode_t;
40 
41 typedef struct kmp_depnode_list {
42   struct kmp_base_depnode *node;
43   struct kmp_depnode_list *next;
44 } kmp_depnode_list_t;
45 
46 static id loc = {0, 2, 0, 0, ";file;func;0;0;;"};
47 kmp_task_t *__kmpc_omp_task_alloc(id *loc, int gtid, int flags, size_t sz,
48                                   size_t shar, entry_t rtn);
49 int __kmpc_omp_task_with_deps(id *loc, int gtid, kmp_task_t *task, int nd,
50                               dep *dep_lst, int nd_noalias,
51                               dep *noalias_dep_lst);
52 kmp_depnode_list_t *__kmpc_task_get_successors(kmp_task_t *task);
53 kmp_base_depnode_t *__kmpc_task_get_depnode(kmp_task_t *task);
54 int __kmpc_global_thread_num(id *);
55 
56 #endif /* KMP_TASK_DEPS_H */
57