1169689Skan/* This file contains the definitions and documentation for the
2169689Skan   OpenMP builtins used in the GNU compiler.
3169689Skan   Copyright (C) 2005 Free Software Foundation, Inc.
4169689Skan
5169689SkanThis file is part of GCC.
6169689Skan
7169689SkanGCC is free software; you can redistribute it and/or modify it under
8169689Skanthe terms of the GNU General Public License as published by the Free
9169689SkanSoftware Foundation; either version 2, or (at your option) any later
10169689Skanversion.
11169689Skan
12169689SkanGCC is distributed in the hope that it will be useful, but WITHOUT ANY
13169689SkanWARRANTY; without even the implied warranty of MERCHANTABILITY or
14169689SkanFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15169689Skanfor more details.
16169689Skan
17169689SkanYou should have received a copy of the GNU General Public License
18169689Skanalong with GCC; see the file COPYING.  If not, write to the Free
19169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
20169689Skan02110-1301, USA.  */
21169689Skan
22169689Skan/* Before including this file, you should define a macro:
23169689Skan
24169689Skan     DEF_GOMP_BUILTIN (ENUM, NAME, TYPE, ATTRS)
25169689Skan
26169689Skan   See builtins.def for details.  */
27169689Skan
28169689SkanDEF_GOMP_BUILTIN (BUILT_IN_OMP_GET_THREAD_NUM, "omp_get_thread_num",
29169689Skan		  BT_FN_INT, ATTR_CONST_NOTHROW_LIST)
30169689SkanDEF_GOMP_BUILTIN (BUILT_IN_OMP_GET_NUM_THREADS, "omp_get_num_threads",
31169689Skan		  BT_FN_INT, ATTR_CONST_NOTHROW_LIST)
32169689Skan
33169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_ATOMIC_START, "GOMP_atomic_start",
34169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
35169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_ATOMIC_END, "GOMP_atomic_end",
36169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
37169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_BARRIER, "GOMP_barrier",
38169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
39169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_START, "GOMP_critical_start",
40169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
41169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_END, "GOMP_critical_end",
42169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
43169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_NAME_START,
44169689Skan		  "GOMP_critical_name_start",
45169689Skan		  BT_FN_VOID_PTRPTR, ATTR_NOTHROW_LIST)
46169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_CRITICAL_NAME_END,
47169689Skan		  "GOMP_critical_name_end",
48169689Skan		  BT_FN_VOID_PTRPTR, ATTR_NOTHROW_LIST)
49169689Skan/* NOTE: Do not change the order of BUILT_IN_GOMP_LOOP_*_START.  They
50169689Skan   are used in index arithmetic with enum omp_clause_schedule_kind
51169689Skan   in omp-low.c.  */
52169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_STATIC_START,
53169689Skan		  "GOMP_loop_static_start",
54169689Skan		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
55169689Skan		  ATTR_NOTHROW_LIST)
56169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_DYNAMIC_START,
57169689Skan		  "GOMP_loop_dynamic_start",
58169689Skan		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
59169689Skan		  ATTR_NOTHROW_LIST)
60169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_GUIDED_START,
61169689Skan		  "GOMP_loop_guided_start",
62169689Skan		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
63169689Skan		  ATTR_NOTHROW_LIST)
64169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_RUNTIME_START,
65169689Skan		  "GOMP_loop_runtime_start",
66169689Skan		  BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
67169689Skan		  ATTR_NOTHROW_LIST)
68169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
69169689Skan		  "GOMP_loop_ordered_static_start",
70169689Skan		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
71169689Skan		  ATTR_NOTHROW_LIST)
72169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
73169689Skan		  "GOMP_loop_ordered_dynamic_start",
74169689Skan		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
75169689Skan		  ATTR_NOTHROW_LIST)
76169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
77169689Skan		  "GOMP_loop_ordered_guided_start",
78169689Skan		  BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
79169689Skan		  ATTR_NOTHROW_LIST)
80169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
81169689Skan		  "GOMP_loop_ordered_runtime_start",
82169689Skan		  BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
83169689Skan		  ATTR_NOTHROW_LIST)
84169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_STATIC_NEXT, "GOMP_loop_static_next",
85169689Skan		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
86169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT, "GOMP_loop_dynamic_next",
87169689Skan		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
88169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_GUIDED_NEXT, "GOMP_loop_guided_next",
89169689Skan		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
90169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_RUNTIME_NEXT, "GOMP_loop_runtime_next",
91169689Skan		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
92169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
93169689Skan		  "GOMP_loop_ordered_static_next",
94169689Skan		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
95169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
96169689Skan		  "GOMP_loop_ordered_dynamic_next",
97169689Skan		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
98169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
99169689Skan		  "GOMP_loop_ordered_guided_next",
100169689Skan		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
101169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
102169689Skan		  "GOMP_loop_ordered_runtime_next",
103169689Skan		  BT_FN_BOOL_LONGPTR_LONGPTR, ATTR_NOTHROW_LIST)
104169689Skan/* NOTE: Do not change the order of BUILT_IN_GOMP_PARALLEL_LOOP_*_START.
105169689Skan   They are used in index arithmetic with enum omp_clause_schedule_kind
106169689Skan   in omp-low.c.  */
107169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
108169689Skan		  "GOMP_parallel_loop_static_start",
109169689Skan		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
110169689Skan		  ATTR_NOTHROW_LIST)
111169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
112169689Skan		  "GOMP_parallel_loop_dynamic_start",
113169689Skan		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
114169689Skan		  ATTR_NOTHROW_LIST)
115169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
116169689Skan		  "GOMP_parallel_loop_guided_start",
117169689Skan		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
118169689Skan		  ATTR_NOTHROW_LIST)
119169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
120169689Skan		  "GOMP_parallel_loop_runtime_start",
121169689Skan		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
122169689Skan		  ATTR_NOTHROW_LIST)
123169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END, "GOMP_loop_end",
124169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
125169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END_NOWAIT, "GOMP_loop_end_nowait",
126169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
127169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_ORDERED_START, "GOMP_ordered_start",
128169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
129169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_ORDERED_END, "GOMP_ordered_end",
130169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
131169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_START, "GOMP_parallel_start",
132169689Skan		  BT_FN_VOID_OMPFN_PTR_UINT, ATTR_NOTHROW_LIST)
133169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_END, "GOMP_parallel_end",
134169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
135169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_START, "GOMP_sections_start",
136169689Skan		  BT_FN_UINT_UINT, ATTR_NOTHROW_LIST)
137169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_NEXT, "GOMP_sections_next",
138169689Skan		  BT_FN_UINT, ATTR_NOTHROW_LIST)
139169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_SECTIONS_START,
140169689Skan		  "GOMP_parallel_sections_start",
141169689Skan		  BT_FN_VOID_OMPFN_PTR_UINT_UINT, ATTR_NOTHROW_LIST)
142169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END, "GOMP_sections_end",
143169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
144169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END_NOWAIT,
145169689Skan		  "GOMP_sections_end_nowait",
146169689Skan		  BT_FN_VOID, ATTR_NOTHROW_LIST)
147169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_START, "GOMP_single_start",
148169689Skan		  BT_FN_BOOL, ATTR_NOTHROW_LIST)
149169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_COPY_START, "GOMP_single_copy_start",
150169689Skan		  BT_FN_PTR, ATTR_NOTHROW_LIST)
151169689SkanDEF_GOMP_BUILTIN (BUILT_IN_GOMP_SINGLE_COPY_END, "GOMP_single_copy_end",
152169689Skan		  BT_FN_VOID_PTR, ATTR_NOTHROW_LIST)
153