Attachment 'atomicproto.patch'
Download 1 fortran
2 * types.def (BT_ATOMIC_PTR, BT_CONST_ATOMIC_PTR): New
3 primitive data types for volatile atomic pointers.
4 (BT_FN_VOID_APTR): Renamed from BT_FN_VOID_VPTR.
5 (BT_FN_VOID_VPTR_INT, BT_FN_BOOL_VPTR_INT,
6 BT_FN_BOOL_SIZE_CONST_VPTR): Renamed to APTR variant.
7 (BT_FN_I{1,2,4,8,16}_CONST_APTR_INT): New.
8 (BT_FN_I{1,2,4,8,16}_APTR_I{1,2,4,8,16}_INT): New.
9 (BT_FN_VOID_APTR_I{1,2,4,8,16}_INT): New.
10 (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT,
11 BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT,
12 BT_FN_BOOL_VPTR_PTR_I{1,2,4,8,16}_BOOL_INT_INT): Renamed to APTR
13 variant.
14
15 gcc
16 * builtin-types.def (BT_ATOMIC_PTR, BT_CONST_ATOMIC_PTR): New
17 primitive data types for volatile atomic pointers.
18 (BT_FN_VOID_APTR): Renamed from BT_FN_VOID_VPTR.
19 (BT_FN_VOID_VPTR_INT, BT_FN_BOOL_VPTR_INT,
20 BT_FN_BOOL_SIZE_CONST_VPTR): Renamed to APTR variant.
21 (BT_FN_I{1,2,4,8,16}_CONST_APTR_INT): New.
22 (BT_FN_I{1,2,4,8,16}_APTR_I{1,2,4,8,16}_INT): New.
23 (BT_FN_VOID_APTR_I{1,2,4,8,16}_INT): New.
24 (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT,
25 BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT,
26 BT_FN_BOOL_VPTR_PTR_I{1,2,4,8,16}_BOOL_INT_INT): Renamed to APTR
27 variant.
28 * sync-builtins.def: Change all __atomic builtins to use the APTR
29 atomic pointer variant for the first parameter instead of VPTR..
30
31 doc
32 * extend.texi: Add atomic pointer note to __atomic built-ins.
33
34 Index: gcc/fortran/types.def
35 ===================================================================
36 *** gcc/fortran/types.def (revision 202628)
37 --- gcc/fortran/types.def (working copy)
38 *************** DEF_PRIMITIVE_TYPE (BT_CONST_VOLATILE_PT
39 *** 74,79 ****
40 --- 74,87 ----
41 build_pointer_type
42 (build_qualified_type (void_type_node,
43 TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST)))
44 + DEF_PRIMITIVE_TYPE (BT_ATOMIC_PTR,
45 + build_pointer_type
46 + (build_qualified_type (void_type_node,
47 + TYPE_QUAL_VOLATILE|TYPE_QUAL_ATOMIC)))
48 + DEF_PRIMITIVE_TYPE (BT_CONST_ATOMIC_PTR,
49 + build_pointer_type
50 + (build_qualified_type (void_type_node,
51 + TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST|TYPE_QUAL_ATOMIC)))
52 DEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG)
53 DEF_POINTER_TYPE (BT_PTR_ULONGLONG, BT_ULONGLONG)
54 DEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR)
55 *************** DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_VPTR
56 *** 113,122 ****
57 BT_INT)
58 DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR,
59 BT_INT)
60 ! DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VPTR_INT, BT_VOID, BT_VOLATILE_PTR, BT_INT)
61 ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_VPTR_INT, BT_BOOL, BT_VOLATILE_PTR, BT_INT)
62 ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_VPTR, BT_BOOL, BT_SIZE,
63 ! BT_CONST_VOLATILE_PTR)
64
65
66 DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR)
67 --- 121,140 ----
68 BT_INT)
69 DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR,
70 BT_INT)
71 ! DEF_FUNCTION_TYPE_2 (BT_FN_I1_CONST_APTR_INT, BT_I1, BT_CONST_ATOMIC_PTR,
72 ! BT_INT)
73 ! DEF_FUNCTION_TYPE_2 (BT_FN_I2_CONST_APTR_INT, BT_I2, BT_CONST_ATOMIC_PTR,
74 ! BT_INT)
75 ! DEF_FUNCTION_TYPE_2 (BT_FN_I4_CONST_APTR_INT, BT_I4, BT_CONST_ATOMIC_PTR,
76 ! BT_INT)
77 ! DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_APTR_INT, BT_I8, BT_CONST_ATOMIC_PTR,
78 ! BT_INT)
79 ! DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_APTR_INT, BT_I16, BT_CONST_ATOMIC_PTR,
80 ! BT_INT)
81 ! DEF_FUNCTION_TYPE_2 (BT_FN_VOID_APTR_INT, BT_VOID, BT_ATOMIC_PTR, BT_INT)
82 ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_APTR_INT, BT_BOOL, BT_ATOMIC_PTR, BT_INT)
83 ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_APTR, BT_BOOL, BT_SIZE,
84 ! BT_CONST_ATOMIC_PTR)
85
86
87 DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR)
88 *************** DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_IN
89 *** 144,169 ****
90 DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_INT)
91 DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_INT)
92 DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16, BT_INT)
93 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1, BT_INT)
94 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2, BT_INT)
95 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4, BT_INT)
96 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I8_INT, BT_VOID, BT_VOLATILE_PTR, BT_I8, BT_INT)
97 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I16_INT, BT_VOID, BT_VOLATILE_PTR, BT_I16, BT_INT)
98
99 DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT,
100 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
101 DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR,
102 BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
103 ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_VOID, BT_SIZE,
104 ! BT_VOLATILE_PTR, BT_PTR, BT_INT)
105 ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_VOID, BT_SIZE,
106 ! BT_CONST_VOLATILE_PTR, BT_PTR, BT_INT)
107
108 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
109 BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
110 BT_PTR_LONG, BT_PTR_LONG)
111 ! DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_VOID, BT_SIZE,
112 ! BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT)
113
114 DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
115 BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG,
116 --- 162,197 ----
117 DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_INT)
118 DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_INT)
119 DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16, BT_INT)
120 + DEF_FUNCTION_TYPE_3 (BT_FN_I1_APTR_I1_INT, BT_I1, BT_ATOMIC_PTR, BT_I1, BT_INT)
121 + DEF_FUNCTION_TYPE_3 (BT_FN_I2_APTR_I2_INT, BT_I2, BT_ATOMIC_PTR, BT_I2, BT_INT)
122 + DEF_FUNCTION_TYPE_3 (BT_FN_I4_APTR_I4_INT, BT_I4, BT_ATOMIC_PTR, BT_I4, BT_INT)
123 + DEF_FUNCTION_TYPE_3 (BT_FN_I8_APTR_I8_INT, BT_I8, BT_ATOMIC_PTR, BT_I8, BT_INT)
124 + DEF_FUNCTION_TYPE_3 (BT_FN_I16_APTR_I16_INT, BT_I16, BT_ATOMIC_PTR, BT_I16, BT_INT)
125 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1, BT_INT)
126 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2, BT_INT)
127 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4, BT_INT)
128 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I8_INT, BT_VOID, BT_VOLATILE_PTR, BT_I8, BT_INT)
129 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I16_INT, BT_VOID, BT_VOLATILE_PTR, BT_I16, BT_INT)
130 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I1_INT, BT_VOID, BT_ATOMIC_PTR, BT_I1, BT_INT)
131 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I2_INT, BT_VOID, BT_ATOMIC_PTR, BT_I2, BT_INT)
132 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I4_INT, BT_VOID, BT_ATOMIC_PTR, BT_I4, BT_INT)
133 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I8_INT, BT_VOID, BT_ATOMIC_PTR, BT_I8, BT_INT)
134 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I16_INT, BT_VOID, BT_ATOMIC_PTR, BT_I16, BT_INT)
135
136 DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT,
137 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
138 DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR,
139 BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
140 ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_APTR_PTR_INT, BT_VOID, BT_SIZE,
141 ! BT_ATOMIC_PTR, BT_PTR, BT_INT)
142 ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_APTR_PTR_INT, BT_VOID, BT_SIZE,
143 ! BT_CONST_ATOMIC_PTR, BT_PTR, BT_INT)
144
145 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
146 BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
147 BT_PTR_LONG, BT_PTR_LONG)
148 ! DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_APTR_PTR_PTR_INT, BT_VOID, BT_SIZE,
149 ! BT_ATOMIC_PTR, BT_PTR, BT_PTR, BT_INT)
150
151 DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
152 BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG,
153 *************** DEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PT
154 *** 174,196 ****
155 DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
156 BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG,
157 BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG)
158 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT,
159 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT,
160 BT_INT)
161 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT,
162 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT,
163 BT_INT)
164 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT,
165 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT,
166 BT_INT)
167 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT,
168 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT,
169 BT_INT)
170 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT,
171 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT,
172 BT_INT)
173 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE,
174 ! BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT)
175
176 DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
177 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
178 --- 202,224 ----
179 DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
180 BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG,
181 BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG)
182 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I1_BOOL_INT_INT,
183 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT,
184 BT_INT)
185 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I2_BOOL_INT_INT,
186 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT,
187 BT_INT)
188 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I4_BOOL_INT_INT,
189 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT,
190 BT_INT)
191 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I8_BOOL_INT_INT,
192 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT,
193 BT_INT)
194 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I16_BOOL_INT_INT,
195 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT,
196 BT_INT)
197 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_APTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE,
198 ! BT_ATOMIC_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT)
199
200 DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
201 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
202 Index: gcc/builtin-types.def
203 ===================================================================
204 *** gcc/builtin-types.def (revision 202628)
205 --- gcc/builtin-types.def (working copy)
206 *************** DEF_PRIMITIVE_TYPE (BT_CONST_VOLATILE_PT
207 *** 99,104 ****
208 --- 99,112 ----
209 build_pointer_type
210 (build_qualified_type (void_type_node,
211 TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST)))
212 + DEF_PRIMITIVE_TYPE (BT_ATOMIC_PTR,
213 + build_pointer_type
214 + (build_qualified_type (void_type_node,
215 + TYPE_QUAL_VOLATILE|TYPE_QUAL_ATOMIC)))
216 + DEF_PRIMITIVE_TYPE (BT_CONST_ATOMIC_PTR,
217 + build_pointer_type
218 + (build_qualified_type (void_type_node,
219 + TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST|TYPE_QUAL_ATOMIC)))
220 DEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
221 DEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
222 DEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
223 *************** DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLO
224 *** 223,228 ****
225 --- 231,237 ----
226 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64)
227 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128)
228 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
229 + DEF_FUNCTION_TYPE_1 (BT_FN_VOID_APTR, BT_VOID, BT_ATOMIC_PTR)
230 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR)
231 DEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT)
232 DEF_FUNCTION_TYPE_1 (BT_FN_ULONG_ULONG, BT_ULONG, BT_ULONG)
233 *************** DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_VPTR
234 *** 337,346 ****
235 BT_INT)
236 DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR,
237 BT_INT)
238 ! DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VPTR_INT, BT_VOID, BT_VOLATILE_PTR, BT_INT)
239 ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_VPTR_INT, BT_BOOL, BT_VOLATILE_PTR, BT_INT)
240 ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_VPTR, BT_BOOL, BT_SIZE,
241 ! BT_CONST_VOLATILE_PTR)
242
243 DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR)
244
245 --- 346,365 ----
246 BT_INT)
247 DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR,
248 BT_INT)
249 ! DEF_FUNCTION_TYPE_2 (BT_FN_I1_CONST_APTR_INT, BT_I1, BT_CONST_ATOMIC_PTR,
250 ! BT_INT)
251 ! DEF_FUNCTION_TYPE_2 (BT_FN_I2_CONST_APTR_INT, BT_I2, BT_CONST_ATOMIC_PTR,
252 ! BT_INT)
253 ! DEF_FUNCTION_TYPE_2 (BT_FN_I4_CONST_APTR_INT, BT_I4, BT_CONST_ATOMIC_PTR,
254 ! BT_INT)
255 ! DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_APTR_INT, BT_I8, BT_CONST_ATOMIC_PTR,
256 ! BT_INT)
257 ! DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_APTR_INT, BT_I16, BT_CONST_ATOMIC_PTR,
258 ! BT_INT)
259 ! DEF_FUNCTION_TYPE_2 (BT_FN_VOID_APTR_INT, BT_VOID, BT_ATOMIC_PTR, BT_INT)
260 ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_APTR_INT, BT_BOOL, BT_ATOMIC_PTR, BT_INT)
261 ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_APTR, BT_BOOL, BT_SIZE,
262 ! BT_CONST_ATOMIC_PTR)
263
264 DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR)
265
266 *************** DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_IN
267 *** 420,430 ****
268 --- 439,460 ----
269 DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_INT)
270 DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_INT)
271 DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16, BT_INT)
272 + DEF_FUNCTION_TYPE_3 (BT_FN_I1_APTR_I1_INT, BT_I1, BT_ATOMIC_PTR, BT_I1, BT_INT)
273 + DEF_FUNCTION_TYPE_3 (BT_FN_I2_APTR_I2_INT, BT_I2, BT_ATOMIC_PTR, BT_I2, BT_INT)
274 + DEF_FUNCTION_TYPE_3 (BT_FN_I4_APTR_I4_INT, BT_I4, BT_ATOMIC_PTR, BT_I4, BT_INT)
275 + DEF_FUNCTION_TYPE_3 (BT_FN_I8_APTR_I8_INT, BT_I8, BT_ATOMIC_PTR, BT_I8, BT_INT)
276 + DEF_FUNCTION_TYPE_3 (BT_FN_I16_APTR_I16_INT, BT_I16, BT_ATOMIC_PTR, BT_I16, BT_INT)
277 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1, BT_INT)
278 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2, BT_INT)
279 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4, BT_INT)
280 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I8_INT, BT_VOID, BT_VOLATILE_PTR, BT_I8, BT_INT)
281 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I16_INT, BT_VOID, BT_VOLATILE_PTR, BT_I16, BT_INT)
282 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I1_INT, BT_VOID, BT_ATOMIC_PTR, BT_I1, BT_INT)
283 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I2_INT, BT_VOID, BT_ATOMIC_PTR, BT_I2, BT_INT)
284 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I4_INT, BT_VOID, BT_ATOMIC_PTR, BT_I4, BT_INT)
285 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I8_INT, BT_VOID, BT_ATOMIC_PTR, BT_I8, BT_INT)
286 + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I16_INT, BT_VOID, BT_ATOMIC_PTR, BT_I16, BT_INT)
287 +
288
289 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
290 BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
291 *************** DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PT
292 *** 444,453 ****
293 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
294 DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR,
295 BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
296 ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_VOID, BT_SIZE,
297 ! BT_VOLATILE_PTR, BT_PTR, BT_INT)
298 ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_VOID, BT_SIZE,
299 ! BT_CONST_VOLATILE_PTR, BT_PTR, BT_INT)
300
301 DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
302 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
303 --- 474,483 ----
304 BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
305 DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR,
306 BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR)
307 ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_APTR_PTR_INT, BT_VOID, BT_SIZE,
308 ! BT_ATOMIC_PTR, BT_PTR, BT_INT)
309 ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_APTR_PTR_INT, BT_VOID, BT_SIZE,
310 ! BT_CONST_ATOMIC_PTR, BT_PTR, BT_INT)
311
312 DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
313 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
314 *************** DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_IN
315 *** 455,462 ****
316 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
317 BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
318 BT_PTR_LONG, BT_PTR_LONG)
319 ! DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_VOID, BT_SIZE,
320 ! BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT)
321 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_VPTR_PTR_I1_INT_INT,
322 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_INT, BT_INT)
323 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_VPTR_PTR_I2_INT_INT,
324 --- 485,492 ----
325 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
326 BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
327 BT_PTR_LONG, BT_PTR_LONG)
328 ! DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_APTR_PTR_PTR_INT, BT_VOID, BT_SIZE,
329 ! BT_ATOMIC_PTR, BT_PTR, BT_PTR, BT_INT)
330 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_VPTR_PTR_I1_INT_INT,
331 BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_INT, BT_INT)
332 DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_VPTR_PTR_I2_INT_INT,
333 *************** DEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PT
334 *** 480,502 ****
335 DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
336 BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG,
337 BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG)
338 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT,
339 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT,
340 BT_INT)
341 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT,
342 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT,
343 BT_INT)
344 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT,
345 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT,
346 BT_INT)
347 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT,
348 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT,
349 BT_INT)
350 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT,
351 ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT,
352 BT_INT)
353 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE,
354 ! BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT)
355
356
357 DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
358 --- 510,532 ----
359 DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
360 BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG,
361 BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG)
362 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I1_BOOL_INT_INT,
363 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT,
364 BT_INT)
365 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I2_BOOL_INT_INT,
366 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT,
367 BT_INT)
368 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I4_BOOL_INT_INT,
369 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT,
370 BT_INT)
371 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I8_BOOL_INT_INT,
372 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT,
373 BT_INT)
374 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I16_BOOL_INT_INT,
375 ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT,
376 BT_INT)
377 ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_APTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE,
378 ! BT_ATOMIC_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT)
379
380
381 DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
382 Index: gcc/sync-builtins.def
383 ===================================================================
384 *** gcc/sync-builtins.def (revision 202628)
385 --- gcc/sync-builtins.def (working copy)
386 *************** DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SYNCHRON
387 *** 260,567 ****
388 /* __sync* builtins for the C++ memory model. */
389
390 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_TEST_AND_SET, "__atomic_test_and_set",
391 ! BT_FN_BOOL_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
392
393 ! DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_CLEAR, "__atomic_clear", BT_FN_VOID_VPTR_INT,
394 ATTR_NOTHROW_LEAF_LIST)
395
396 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE,
397 "__atomic_exchange",
398 ! BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
399 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_N,
400 "__atomic_exchange_n",
401 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
402 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_1,
403 "__atomic_exchange_1",
404 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
405 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_2,
406 "__atomic_exchange_2",
407 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
408 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_4,
409 "__atomic_exchange_4",
410 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
411 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_8,
412 "__atomic_exchange_8",
413 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
414 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_16,
415 "__atomic_exchange_16",
416 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
417
418 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD,
419 "__atomic_load",
420 ! BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
421 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_N,
422 "__atomic_load_n",
423 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
424 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_1,
425 "__atomic_load_1",
426 ! BT_FN_I1_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
427 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_2,
428 "__atomic_load_2",
429 ! BT_FN_I2_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
430 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_4,
431 "__atomic_load_4",
432 ! BT_FN_I4_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
433 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_8,
434 "__atomic_load_8",
435 ! BT_FN_I8_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
436 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_16,
437 "__atomic_load_16",
438 ! BT_FN_I16_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST)
439
440 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE,
441 "__atomic_compare_exchange",
442 ! BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT,
443 ATTR_NOTHROW_LEAF_LIST)
444 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_N,
445 "__atomic_compare_exchange_n",
446 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
447 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1,
448 "__atomic_compare_exchange_1",
449 ! BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
450 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2,
451 "__atomic_compare_exchange_2",
452 ! BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
453 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4,
454 "__atomic_compare_exchange_4",
455 ! BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
456 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8,
457 "__atomic_compare_exchange_8",
458 ! BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
459 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16,
460 "__atomic_compare_exchange_16",
461 ! BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
462
463 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE,
464 "__atomic_store",
465 ! BT_FN_VOID_SIZE_VPTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
466 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_N,
467 "__atomic_store_n",
468 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
469 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_1,
470 "__atomic_store_1",
471 ! BT_FN_VOID_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
472 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_2,
473 "__atomic_store_2",
474 ! BT_FN_VOID_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
475 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_4,
476 "__atomic_store_4",
477 ! BT_FN_VOID_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
478 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_8,
479 "__atomic_store_8",
480 ! BT_FN_VOID_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
481 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_16,
482 "__atomic_store_16",
483 ! BT_FN_VOID_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
484
485 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_N,
486 "__atomic_add_fetch",
487 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
488 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_1,
489 "__atomic_add_fetch_1",
490 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
491 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_2,
492 "__atomic_add_fetch_2",
493 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
494 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_4,
495 "__atomic_add_fetch_4",
496 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
497 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_8,
498 "__atomic_add_fetch_8",
499 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
500 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_16,
501 "__atomic_add_fetch_16",
502 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
503
504 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_N,
505 "__atomic_sub_fetch",
506 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
507 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_1,
508 "__atomic_sub_fetch_1",
509 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
510 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_2,
511 "__atomic_sub_fetch_2",
512 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
513 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_4,
514 "__atomic_sub_fetch_4",
515 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
516 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_8,
517 "__atomic_sub_fetch_8",
518 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
519 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_16,
520 "__atomic_sub_fetch_16",
521 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
522
523 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_N,
524 "__atomic_and_fetch",
525 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
526 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_1,
527 "__atomic_and_fetch_1",
528 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
529 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_2,
530 "__atomic_and_fetch_2",
531 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
532 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_4,
533 "__atomic_and_fetch_4",
534 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
535 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_8,
536 "__atomic_and_fetch_8",
537 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
538 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_16,
539 "__atomic_and_fetch_16",
540 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
541
542 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_N,
543 "__atomic_nand_fetch",
544 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
545 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_1,
546 "__atomic_nand_fetch_1",
547 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
548 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_2,
549 "__atomic_nand_fetch_2",
550 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
551 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_4,
552 "__atomic_nand_fetch_4",
553 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
554 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_8,
555 "__atomic_nand_fetch_8",
556 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
557 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_16,
558 "__atomic_nand_fetch_16",
559 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
560
561 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_N,
562 "__atomic_xor_fetch",
563 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
564 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_1,
565 "__atomic_xor_fetch_1",
566 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
567 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_2,
568 "__atomic_xor_fetch_2",
569 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
570 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_4,
571 "__atomic_xor_fetch_4",
572 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
573 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_8,
574 "__atomic_xor_fetch_8",
575 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
576 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_16,
577 "__atomic_xor_fetch_16",
578 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
579
580 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_N,
581 "__atomic_or_fetch",
582 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
583 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_1,
584 "__atomic_or_fetch_1",
585 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
586 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_2,
587 "__atomic_or_fetch_2",
588 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
589 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_4,
590 "__atomic_or_fetch_4",
591 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
592 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_8,
593 "__atomic_or_fetch_8",
594 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
595 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_16,
596 "__atomic_or_fetch_16",
597 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
598
599 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_N,
600 "__atomic_fetch_add",
601 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
602 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_1,
603 "__atomic_fetch_add_1",
604 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
605 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_2,
606 "__atomic_fetch_add_2",
607 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
608 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_4,
609 "__atomic_fetch_add_4",
610 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
611 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_8,
612 "__atomic_fetch_add_8",
613 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
614 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_16,
615 "__atomic_fetch_add_16",
616 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
617
618 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_N,
619 "__atomic_fetch_sub",
620 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
621 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_1,
622 "__atomic_fetch_sub_1",
623 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
624 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_2,
625 "__atomic_fetch_sub_2",
626 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
627 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_4,
628 "__atomic_fetch_sub_4",
629 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
630 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_8,
631 "__atomic_fetch_sub_8",
632 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
633 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_16,
634 "__atomic_fetch_sub_16",
635 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
636
637 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_N,
638 "__atomic_fetch_and",
639 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
640 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_1,
641 "__atomic_fetch_and_1",
642 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
643 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_2,
644 "__atomic_fetch_and_2",
645 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
646 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_4,
647 "__atomic_fetch_and_4",
648 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
649 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_8,
650 "__atomic_fetch_and_8",
651 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
652 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_16,
653 "__atomic_fetch_and_16",
654 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
655
656 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_N,
657 "__atomic_fetch_nand",
658 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
659 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_1,
660 "__atomic_fetch_nand_1",
661 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
662 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_2,
663 "__atomic_fetch_nand_2",
664 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
665 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_4,
666 "__atomic_fetch_nand_4",
667 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
668 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_8,
669 "__atomic_fetch_nand_8",
670 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
671 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_16,
672 "__atomic_fetch_nand_16",
673 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
674
675 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_N,
676 "__atomic_fetch_xor",
677 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
678 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_1,
679 "__atomic_fetch_xor_1",
680 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
681 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_2,
682 "__atomic_fetch_xor_2",
683 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
684 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_4,
685 "__atomic_fetch_xor_4",
686 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
687 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_8,
688 "__atomic_fetch_xor_8",
689 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
690 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_16,
691 "__atomic_fetch_xor_16",
692 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
693
694
695 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_N,
696 --- 260,567 ----
697 /* __sync* builtins for the C++ memory model. */
698
699 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_TEST_AND_SET, "__atomic_test_and_set",
700 ! BT_FN_BOOL_APTR_INT, ATTR_NOTHROW_LEAF_LIST)
701
702 ! DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_CLEAR, "__atomic_clear", BT_FN_VOID_APTR_INT,
703 ATTR_NOTHROW_LEAF_LIST)
704
705 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE,
706 "__atomic_exchange",
707 ! BT_FN_VOID_SIZE_APTR_PTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
708 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_N,
709 "__atomic_exchange_n",
710 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
711 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_1,
712 "__atomic_exchange_1",
713 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
714 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_2,
715 "__atomic_exchange_2",
716 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
717 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_4,
718 "__atomic_exchange_4",
719 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
720 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_8,
721 "__atomic_exchange_8",
722 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
723 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_16,
724 "__atomic_exchange_16",
725 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
726
727 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD,
728 "__atomic_load",
729 ! BT_FN_VOID_SIZE_CONST_APTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
730 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_N,
731 "__atomic_load_n",
732 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
733 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_1,
734 "__atomic_load_1",
735 ! BT_FN_I1_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST)
736 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_2,
737 "__atomic_load_2",
738 ! BT_FN_I2_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST)
739 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_4,
740 "__atomic_load_4",
741 ! BT_FN_I4_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST)
742 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_8,
743 "__atomic_load_8",
744 ! BT_FN_I8_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST)
745 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_16,
746 "__atomic_load_16",
747 ! BT_FN_I16_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST)
748
749 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE,
750 "__atomic_compare_exchange",
751 ! BT_FN_BOOL_SIZE_APTR_PTR_PTR_INT_INT,
752 ATTR_NOTHROW_LEAF_LIST)
753 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_N,
754 "__atomic_compare_exchange_n",
755 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
756 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1,
757 "__atomic_compare_exchange_1",
758 ! BT_FN_BOOL_APTR_PTR_I1_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
759 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2,
760 "__atomic_compare_exchange_2",
761 ! BT_FN_BOOL_APTR_PTR_I2_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
762 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4,
763 "__atomic_compare_exchange_4",
764 ! BT_FN_BOOL_APTR_PTR_I4_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
765 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8,
766 "__atomic_compare_exchange_8",
767 ! BT_FN_BOOL_APTR_PTR_I8_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
768 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16,
769 "__atomic_compare_exchange_16",
770 ! BT_FN_BOOL_APTR_PTR_I16_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST)
771
772 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE,
773 "__atomic_store",
774 ! BT_FN_VOID_SIZE_APTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
775 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_N,
776 "__atomic_store_n",
777 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
778 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_1,
779 "__atomic_store_1",
780 ! BT_FN_VOID_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
781 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_2,
782 "__atomic_store_2",
783 ! BT_FN_VOID_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
784 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_4,
785 "__atomic_store_4",
786 ! BT_FN_VOID_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
787 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_8,
788 "__atomic_store_8",
789 ! BT_FN_VOID_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
790 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_16,
791 "__atomic_store_16",
792 ! BT_FN_VOID_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
793
794 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_N,
795 "__atomic_add_fetch",
796 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
797 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_1,
798 "__atomic_add_fetch_1",
799 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
800 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_2,
801 "__atomic_add_fetch_2",
802 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
803 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_4,
804 "__atomic_add_fetch_4",
805 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
806 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_8,
807 "__atomic_add_fetch_8",
808 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
809 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_16,
810 "__atomic_add_fetch_16",
811 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
812
813 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_N,
814 "__atomic_sub_fetch",
815 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
816 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_1,
817 "__atomic_sub_fetch_1",
818 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
819 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_2,
820 "__atomic_sub_fetch_2",
821 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
822 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_4,
823 "__atomic_sub_fetch_4",
824 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
825 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_8,
826 "__atomic_sub_fetch_8",
827 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
828 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_16,
829 "__atomic_sub_fetch_16",
830 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
831
832 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_N,
833 "__atomic_and_fetch",
834 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
835 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_1,
836 "__atomic_and_fetch_1",
837 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
838 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_2,
839 "__atomic_and_fetch_2",
840 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
841 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_4,
842 "__atomic_and_fetch_4",
843 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
844 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_8,
845 "__atomic_and_fetch_8",
846 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
847 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_16,
848 "__atomic_and_fetch_16",
849 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
850
851 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_N,
852 "__atomic_nand_fetch",
853 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
854 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_1,
855 "__atomic_nand_fetch_1",
856 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
857 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_2,
858 "__atomic_nand_fetch_2",
859 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
860 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_4,
861 "__atomic_nand_fetch_4",
862 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
863 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_8,
864 "__atomic_nand_fetch_8",
865 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
866 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_16,
867 "__atomic_nand_fetch_16",
868 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
869
870 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_N,
871 "__atomic_xor_fetch",
872 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
873 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_1,
874 "__atomic_xor_fetch_1",
875 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
876 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_2,
877 "__atomic_xor_fetch_2",
878 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
879 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_4,
880 "__atomic_xor_fetch_4",
881 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
882 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_8,
883 "__atomic_xor_fetch_8",
884 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
885 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_16,
886 "__atomic_xor_fetch_16",
887 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
888
889 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_N,
890 "__atomic_or_fetch",
891 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
892 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_1,
893 "__atomic_or_fetch_1",
894 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
895 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_2,
896 "__atomic_or_fetch_2",
897 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
898 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_4,
899 "__atomic_or_fetch_4",
900 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
901 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_8,
902 "__atomic_or_fetch_8",
903 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
904 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_16,
905 "__atomic_or_fetch_16",
906 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
907
908 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_N,
909 "__atomic_fetch_add",
910 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
911 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_1,
912 "__atomic_fetch_add_1",
913 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
914 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_2,
915 "__atomic_fetch_add_2",
916 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
917 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_4,
918 "__atomic_fetch_add_4",
919 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
920 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_8,
921 "__atomic_fetch_add_8",
922 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
923 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_16,
924 "__atomic_fetch_add_16",
925 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
926
927 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_N,
928 "__atomic_fetch_sub",
929 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
930 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_1,
931 "__atomic_fetch_sub_1",
932 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
933 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_2,
934 "__atomic_fetch_sub_2",
935 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
936 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_4,
937 "__atomic_fetch_sub_4",
938 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
939 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_8,
940 "__atomic_fetch_sub_8",
941 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
942 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_16,
943 "__atomic_fetch_sub_16",
944 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
945
946 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_N,
947 "__atomic_fetch_and",
948 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
949 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_1,
950 "__atomic_fetch_and_1",
951 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
952 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_2,
953 "__atomic_fetch_and_2",
954 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
955 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_4,
956 "__atomic_fetch_and_4",
957 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
958 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_8,
959 "__atomic_fetch_and_8",
960 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
961 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_16,
962 "__atomic_fetch_and_16",
963 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
964
965 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_N,
966 "__atomic_fetch_nand",
967 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
968 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_1,
969 "__atomic_fetch_nand_1",
970 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
971 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_2,
972 "__atomic_fetch_nand_2",
973 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
974 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_4,
975 "__atomic_fetch_nand_4",
976 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
977 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_8,
978 "__atomic_fetch_nand_8",
979 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
980 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_16,
981 "__atomic_fetch_nand_16",
982 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
983
984 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_N,
985 "__atomic_fetch_xor",
986 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
987 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_1,
988 "__atomic_fetch_xor_1",
989 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
990 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_2,
991 "__atomic_fetch_xor_2",
992 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
993 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_4,
994 "__atomic_fetch_xor_4",
995 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
996 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_8,
997 "__atomic_fetch_xor_8",
998 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
999 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_16,
1000 "__atomic_fetch_xor_16",
1001 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
1002
1003
1004 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_N,
1005 *************** DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_
1006 *** 569,595 ****
1007 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
1008 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_1,
1009 "__atomic_fetch_or_1",
1010 ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
1011 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_2,
1012 "__atomic_fetch_or_2",
1013 ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
1014 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4,
1015 "__atomic_fetch_or_4",
1016 ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
1017 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_8,
1018 "__atomic_fetch_or_8",
1019 ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
1020 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_16,
1021 "__atomic_fetch_or_16",
1022 ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
1023
1024 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE,
1025 "__atomic_always_lock_free",
1026 ! BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
1027
1028 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_IS_LOCK_FREE,
1029 "__atomic_is_lock_free",
1030 ! BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST)
1031
1032
1033 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_THREAD_FENCE,
1034 --- 569,595 ----
1035 BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST)
1036 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_1,
1037 "__atomic_fetch_or_1",
1038 ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST)
1039 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_2,
1040 "__atomic_fetch_or_2",
1041 ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST)
1042 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4,
1043 "__atomic_fetch_or_4",
1044 ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST)
1045 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_8,
1046 "__atomic_fetch_or_8",
1047 ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST)
1048 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_16,
1049 "__atomic_fetch_or_16",
1050 ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST)
1051
1052 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE,
1053 "__atomic_always_lock_free",
1054 ! BT_FN_BOOL_SIZE_CONST_APTR, ATTR_CONST_NOTHROW_LEAF_LIST)
1055
1056 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_IS_LOCK_FREE,
1057 "__atomic_is_lock_free",
1058 ! BT_FN_BOOL_SIZE_CONST_APTR, ATTR_CONST_NOTHROW_LEAF_LIST)
1059
1060
1061 DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_THREAD_FENCE,
1062 Index: gcc/doc/extend.texi
1063 ===================================================================
1064 *** gcc/doc/extend.texi (revision 202628)
1065 --- gcc/doc/extend.texi (working copy)
1066 *************** reserved for the memory model. The rema
1067 *** 7320,7325 ****
1068 --- 7320,7334 ----
1069 for future use and should be 0. Use of the predefined atomic values
1070 ensures proper usage.
1071
1072 + All __atomic built-in functions expect the first parameter to be a type with
1073 + the atomic attribute set. It is OK on most targets to continue using the
1074 + non-atomic version for backward compatability. The only time there will be a
1075 + compatability issues is if the atomic implementation for a target overrides
1076 + the alignment of the atomic type in order to implement lock free routines.
1077 + This facility did not exist before GCC 4.9, so there are no compatibility
1078 + issues up until then. Targets with such requirements would have had
1079 + non-function atomic lockfree operations up until this facility became available.
1080 +
1081 @deftypefn {Built-in Function} @var{type} __atomic_load_n (@var{type} *ptr, int memmodel)
1082 This built-in function implements an atomic load operation. It returns the
1083 contents of @code{*@var{ptr}}.
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.