source: libcfa/prelude/sync-builtins.cf @ c960331

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since c960331 was c701332a, checked in by Thierry Delisle <tdelisle@…>, 5 years ago

Cleanup of builtin atomics to remove _1,2,4 suffix versions and support all basic ints

  • Property mode set to 100644
File size: 43.6 KB
Line 
1char __sync_fetch_and_add(volatile char *, char,...);
2signed char __sync_fetch_and_add(volatile signed char *, signed char,...);
3unsigned char __sync_fetch_and_add(volatile unsigned char *, unsigned char,...);
4signed short __sync_fetch_and_add(volatile signed short *, signed short,...);
5unsigned short __sync_fetch_and_add(volatile unsigned short *, unsigned short,...);
6signed int __sync_fetch_and_add(volatile signed int *, signed int,...);
7unsigned int __sync_fetch_and_add(volatile unsigned int *, unsigned int,...);
8signed long int __sync_fetch_and_add(volatile signed long int *, signed long int,...);
9unsigned long int __sync_fetch_and_add(volatile unsigned long int *, unsigned long int,...);
10signed long long int __sync_fetch_and_add(volatile signed long long int *, signed long long int,...);
11unsigned long long int __sync_fetch_and_add(volatile unsigned long long int *, unsigned long long int,...);
12#if defined(__SIZEOF_INT128__)
13signed __int128 __sync_fetch_and_add(volatile signed __int128 *, signed __int128,...);
14unsigned __int128 __sync_fetch_and_add(volatile unsigned __int128 *, unsigned __int128,...);
15#endif
16
17char __sync_fetch_and_sub(volatile char *, char,...);
18signed char __sync_fetch_and_sub(volatile signed char *, signed char,...);
19unsigned char __sync_fetch_and_sub(volatile unsigned char *, unsigned char,...);
20signed short __sync_fetch_and_sub(volatile signed short *, signed short,...);
21unsigned short __sync_fetch_and_sub(volatile unsigned short *, unsigned short,...);
22signed int __sync_fetch_and_sub(volatile signed int *, signed int,...);
23unsigned int __sync_fetch_and_sub(volatile unsigned int *, unsigned int,...);
24signed long int __sync_fetch_and_sub(volatile signed long int *, signed long int,...);
25unsigned long int __sync_fetch_and_sub(volatile unsigned long int *, unsigned long int,...);
26signed long long int __sync_fetch_and_sub(volatile signed long long int *, signed long long int,...);
27unsigned long long int __sync_fetch_and_sub(volatile unsigned long long int *, unsigned long long int,...);
28#if defined(__SIZEOF_INT128__)
29signed __int128 __sync_fetch_and_sub(volatile signed __int128 *, signed __int128,...);
30unsigned __int128 __sync_fetch_and_sub(volatile unsigned __int128 *, unsigned __int128,...);
31#endif
32
33char __sync_fetch_and_or(volatile char *, char,...);
34signed char __sync_fetch_and_or(volatile signed char *, signed char,...);
35unsigned char __sync_fetch_and_or(volatile unsigned char *, unsigned char,...);
36signed short __sync_fetch_and_or(volatile signed short *, signed short,...);
37unsigned short __sync_fetch_and_or(volatile unsigned short *, unsigned short,...);
38signed int __sync_fetch_and_or(volatile signed int *, signed int,...);
39unsigned int __sync_fetch_and_or(volatile unsigned int *, unsigned int,...);
40signed long int __sync_fetch_and_or(volatile signed long int *, signed long int,...);
41unsigned long int __sync_fetch_and_or(volatile unsigned long int *, unsigned long int,...);
42signed long long int __sync_fetch_and_or(volatile signed long long int *, signed long long int,...);
43unsigned long long int __sync_fetch_and_or(volatile unsigned long long int *, unsigned long long int,...);
44#if defined(__SIZEOF_INT128__)
45signed __int128 __sync_fetch_and_or(volatile signed __int128 *, signed __int128,...);
46unsigned __int128 __sync_fetch_and_or(volatile unsigned __int128 *, unsigned __int128,...);
47#endif
48
49char __sync_fetch_and_and(volatile char *, char,...);
50signed char __sync_fetch_and_and(volatile signed char *, signed char,...);
51unsigned char __sync_fetch_and_and(volatile unsigned char *, unsigned char,...);
52signed short __sync_fetch_and_and(volatile signed short *, signed short,...);
53unsigned short __sync_fetch_and_and(volatile unsigned short *, unsigned short,...);
54signed int __sync_fetch_and_and(volatile signed int *, signed int,...);
55unsigned int __sync_fetch_and_and(volatile unsigned int *, unsigned int,...);
56signed long int __sync_fetch_and_and(volatile signed long int *, signed long int,...);
57unsigned long int __sync_fetch_and_and(volatile unsigned long int *, unsigned long int,...);
58signed long long int __sync_fetch_and_and(volatile signed long long int *, signed long long int,...);
59unsigned long long int __sync_fetch_and_and(volatile unsigned long long int *, unsigned long long int,...);
60#if defined(__SIZEOF_INT128__)
61signed __int128 __sync_fetch_and_and(volatile signed __int128 *, signed __int128,...);
62unsigned __int128 __sync_fetch_and_and(volatile unsigned __int128 *, unsigned __int128,...);
63#endif
64
65char __sync_fetch_and_xor(volatile char *, char,...);
66signed char __sync_fetch_and_xor(volatile signed char *, signed char,...);
67unsigned char __sync_fetch_and_xor(volatile unsigned char *, unsigned char,...);
68signed short __sync_fetch_and_xor(volatile signed short *, signed short,...);
69unsigned short __sync_fetch_and_xor(volatile unsigned short *, unsigned short,...);
70signed int __sync_fetch_and_xor(volatile signed int *, signed int,...);
71unsigned int __sync_fetch_and_xor(volatile unsigned int *, unsigned int,...);
72signed long int __sync_fetch_and_xor(volatile signed long int *, signed long int,...);
73unsigned long int __sync_fetch_and_xor(volatile unsigned long int *, unsigned long int,...);
74signed long long int __sync_fetch_and_xor(volatile signed long long int *, signed long long int,...);
75unsigned long long int __sync_fetch_and_xor(volatile unsigned long long int *, unsigned long long int,...);
76#if defined(__SIZEOF_INT128__)
77signed __int128 __sync_fetch_and_xor(volatile signed __int128 *, signed __int128,...);
78unsigned __int128 __sync_fetch_and_xor(volatile unsigned __int128 *, unsigned __int128,...);
79#endif
80
81char __sync_fetch_and_nand(volatile char *, char,...);
82signed char __sync_fetch_and_nand(volatile signed char *, signed char,...);
83unsigned char __sync_fetch_and_nand(volatile unsigned char *, unsigned char,...);
84signed short __sync_fetch_and_nand(volatile signed short *, signed short,...);
85unsigned short __sync_fetch_and_nand(volatile unsigned short *, unsigned short,...);
86signed int __sync_fetch_and_nand(volatile signed int *, signed int,...);
87unsigned int __sync_fetch_and_nand(volatile unsigned int *, unsigned int,...);
88signed long int __sync_fetch_and_nand(volatile signed long int *, signed long int,...);
89unsigned long int __sync_fetch_and_nand(volatile unsigned long int *, unsigned long int,...);
90signed long long int __sync_fetch_and_nand(volatile signed long long int *, signed long long int,...);
91unsigned long long int __sync_fetch_and_nand(volatile unsigned long long int *, unsigned long long int,...);
92#if defined(__SIZEOF_INT128__)
93signed __int128 __sync_fetch_and_nand(volatile signed __int128 *, signed __int128,...);
94unsigned __int128 __sync_fetch_and_nand(volatile unsigned __int128 *, unsigned __int128,...);
95#endif
96
97char __sync_add_and_fetch(volatile char *, char,...);
98signed char __sync_add_and_fetch(volatile signed char *, signed char,...);
99unsigned char __sync_add_and_fetch(volatile unsigned char *, unsigned char,...);
100signed short __sync_add_and_fetch(volatile signed short *, signed short,...);
101unsigned short __sync_add_and_fetch(volatile unsigned short *, unsigned short,...);
102signed int __sync_add_and_fetch(volatile signed int *, signed int,...);
103signed int __sync_add_and_fetch(volatile signed int *, signed int,...);
104signed long int __sync_add_and_fetch(volatile signed long int *, signed long int,...);
105unsigned long int __sync_add_and_fetch(volatile unsigned long int *, unsigned long int,...);
106signed long long int __sync_add_and_fetch(volatile signed long long int *, signed long long int,...);
107unsigned long long int __sync_add_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
108#if defined(__SIZEOF_INT128__)
109signed __int128 __sync_add_and_fetch(volatile signed __int128 *, signed __int128,...);
110unsigned __int128 __sync_add_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
111#endif
112
113char __sync_sub_and_fetch(volatile char *, char,...);
114signed char __sync_sub_and_fetch(volatile signed char *, signed char,...);
115unsigned char __sync_sub_and_fetch(volatile unsigned char *, unsigned char,...);
116signed short __sync_sub_and_fetch(volatile signed short *, signed short,...);
117unsigned short __sync_sub_and_fetch(volatile unsigned short *, unsigned short,...);
118signed int __sync_sub_and_fetch(volatile signed int *, signed int,...);
119unsigned int __sync_sub_and_fetch(volatile unsigned int *, unsigned int,...);
120signed long int __sync_sub_and_fetch(volatile signed long int *, signed long int,...);
121unsigned long int __sync_sub_and_fetch(volatile unsigned long int *, unsigned long int,...);
122signed long long int __sync_sub_and_fetch(volatile signed long long int *, signed long long int,...);
123unsigned long long int __sync_sub_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
124#if defined(__SIZEOF_INT128__)
125signed __int128 __sync_sub_and_fetch(volatile signed __int128 *, signed __int128,...);
126unsigned __int128 __sync_sub_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
127#endif
128
129char __sync_or_and_fetch(volatile char *, char,...);
130signed char __sync_or_and_fetch(volatile signed char *, signed char,...);
131unsigned char __sync_or_and_fetch(volatile unsigned char *, unsigned char,...);
132signed short __sync_or_and_fetch(volatile signed short *, signed short,...);
133unsigned short __sync_or_and_fetch(volatile unsigned short *, unsigned short,...);
134signed int __sync_or_and_fetch(volatile signed int *, signed int,...);
135unsigned int __sync_or_and_fetch(volatile unsigned int *, unsigned int,...);
136signed long int __sync_or_and_fetch(volatile signed long int *, signed long int,...);
137unsigned long int __sync_or_and_fetch(volatile unsigned long int *, unsigned long int,...);
138signed long long int __sync_or_and_fetch(volatile signed long long int *, signed long long int,...);
139unsigned long long int __sync_or_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
140#if defined(__SIZEOF_INT128__)
141signed __int128 __sync_or_and_fetch(volatile signed __int128 *, signed __int128,...);
142unsigned __int128 __sync_or_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
143#endif
144
145char __sync_and_and_fetch(volatile char *, char,...);
146signed char __sync_and_and_fetch(volatile signed char *, signed char,...);
147unsigned char __sync_and_and_fetch(volatile unsigned char *, unsigned char,...);
148signed short __sync_and_and_fetch(volatile signed short *, signed short,...);
149unsigned short __sync_and_and_fetch(volatile unsigned short *, unsigned short,...);
150signed int __sync_and_and_fetch(volatile signed int *, signed int,...);
151unsigned int __sync_and_and_fetch(volatile unsigned int *, unsigned int,...);
152signed long int __sync_and_and_fetch(volatile signed long int *, signed long int,...);
153unsigned long int __sync_and_and_fetch(volatile unsigned long int *, unsigned long int,...);
154signed long long int __sync_and_and_fetch(volatile signed long long int *, signed long long int,...);
155unsigned long long int __sync_and_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
156#if defined(__SIZEOF_INT128__)
157signed __int128 __sync_and_and_fetch(volatile signed __int128 *, signed __int128,...);
158unsigned __int128 __sync_and_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
159#endif
160
161char __sync_xor_and_fetch(volatile char *, char,...);
162signed char __sync_xor_and_fetch(volatile signed char *, signed char,...);
163unsigned char __sync_xor_and_fetch(volatile unsigned char *, unsigned char,...);
164signed short __sync_xor_and_fetch(volatile signed short *, signed short,...);
165unsigned short __sync_xor_and_fetch(volatile unsigned short *, unsigned short,...);
166signed int __sync_xor_and_fetch(volatile signed int *, signed int,...);
167unsigned int __sync_xor_and_fetch(volatile unsigned int *, unsigned int,...);
168signed long int __sync_xor_and_fetch(volatile signed long int *, signed long int,...);
169unsigned long int __sync_xor_and_fetch(volatile unsigned long int *, unsigned long int,...);
170signed long long int __sync_xor_and_fetch(volatile signed long long int *, signed long long int,...);
171unsigned long long int __sync_xor_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
172#if defined(__SIZEOF_INT128__)
173signed __int128 __sync_xor_and_fetch(volatile signed __int128 *, signed __int128,...);
174unsigned __int128 __sync_xor_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
175#endif
176
177char __sync_nand_and_fetch(volatile char *, char,...);
178signed char __sync_nand_and_fetch(volatile signed char *, signed char,...);
179unsigned char __sync_nand_and_fetch(volatile unsigned char *, unsigned char,...);
180signed short __sync_nand_and_fetch(volatile signed short *, signed short,...);
181unsigned short __sync_nand_and_fetch(volatile unsigned short *, unsigned short,...);
182signed int __sync_nand_and_fetch(volatile signed int *, signed int,...);
183unsigned int __sync_nand_and_fetch(volatile unsigned int *, unsigned int,...);
184signed long int __sync_nand_and_fetch(volatile signed long int *, signed long int,...);
185unsigned long int __sync_nand_and_fetch(volatile unsigned long int *, unsigned long int,...);
186signed long long int __sync_nand_and_fetch(volatile signed long long int *, signed long long int,...);
187unsigned long long int __sync_nand_and_fetch(volatile unsigned long long int *, unsigned long long int,...);
188#if defined(__SIZEOF_INT128__)
189signed __int128 __sync_nand_and_fetch(volatile signed __int128 *, signed __int128,...);
190unsigned __int128 __sync_nand_and_fetch(volatile unsigned __int128 *, unsigned __int128,...);
191#endif
192
193_Bool __sync_bool_compare_and_swap(volatile char *, char, char,...);
194_Bool __sync_bool_compare_and_swap(volatile signed char *, signed char, signed char,...);
195_Bool __sync_bool_compare_and_swap(volatile unsigned char *, unsigned char, unsigned char,...);
196_Bool __sync_bool_compare_and_swap(volatile short *, signed short, signed short,...);
197_Bool __sync_bool_compare_and_swap(volatile short *, unsigned short, unsigned short,...);
198_Bool __sync_bool_compare_and_swap(volatile signed int *, signed int, signed int,...);
199_Bool __sync_bool_compare_and_swap(volatile unsigned int *, unsigned int, unsigned int,...);
200_Bool __sync_bool_compare_and_swap(volatile signed long int *, signed long int, signed long int,...);
201_Bool __sync_bool_compare_and_swap(volatile unsigned long int *, unsigned long int, unsigned long int,...);
202_Bool __sync_bool_compare_and_swap(volatile signed long long int *, signed long long int, signed long long int,...);
203_Bool __sync_bool_compare_and_swap(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
204#if defined(__SIZEOF_INT128__)
205_Bool __sync_bool_compare_and_swap(volatile signed __int128 *, signed __int128, signed __int128,...);
206_Bool __sync_bool_compare_and_swap(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
207#endif
208forall(dtype T) _Bool __sync_bool_compare_and_swap(T * volatile *, T *, T*, ...);
209
210char __sync_val_compare_and_swap(volatile char *, char, char,...);
211signed char __sync_val_compare_and_swap(volatile signed char *, signed char, signed char,...);
212unsigned char __sync_val_compare_and_swap(volatile unsigned char *, unsigned char, unsigned char,...);
213signed short __sync_val_compare_and_swap(volatile signed short *, signed short, signed short,...);
214unsigned short __sync_val_compare_and_swap(volatile unsigned short *, unsigned short, unsigned short,...);
215signed int __sync_val_compare_and_swap(volatile signed int *, signed int, signed int,...);
216unsigned int __sync_val_compare_and_swap(volatile unsigned int *, unsigned int, unsigned int,...);
217signed long int __sync_val_compare_and_swap(volatile signed long int *, signed long int, signed long int,...);
218unsigned long int __sync_val_compare_and_swap(volatile unsigned long int *, unsigned long int, unsigned long int,...);
219signed long long int __sync_val_compare_and_swap(volatile signed long long int *, signed long long int, signed long long int,...);
220unsigned long long int __sync_val_compare_and_swap(volatile unsigned long long int *, unsigned long long int, unsigned long long int,...);
221#if defined(__SIZEOF_INT128__)
222signed __int128 __sync_val_compare_and_swap(volatile signed __int128 *, signed __int128, signed __int128,...);
223unsigned __int128 __sync_val_compare_and_swap(volatile unsigned __int128 *, unsigned __int128, unsigned __int128,...);
224#endif
225forall(dtype T) T * __sync_val_compare_and_swap(T * volatile *, T *, T*,...);
226
227char __sync_lock_test_and_set(volatile char *, char,...);
228signed char __sync_lock_test_and_set(volatile signed char *, signed char,...);
229unsigned char __sync_lock_test_and_set(volatile unsigned char *, unsigned char,...);
230signed short __sync_lock_test_and_set(volatile signed short *, signed short,...);
231unsigned short __sync_lock_test_and_set(volatile unsigned short *, unsigned short,...);
232signed int __sync_lock_test_and_set(volatile signed int *, signed int,...);
233unsigned int __sync_lock_test_and_set(volatile unsigned int *, unsigned int,...);
234signed long int __sync_lock_test_and_set(volatile signed long int *, signed long int,...);
235unsigned long int __sync_lock_test_and_set(volatile unsigned long int *, unsigned long int,...);
236signed long long int __sync_lock_test_and_set(volatile signed long long int *, signed long long int,...);
237unsigned long long int __sync_lock_test_and_set(volatile unsigned long long int *, unsigned long long int,...);
238#if defined(__SIZEOF_INT128__)
239signed __int128 __sync_lock_test_and_set(volatile signed __int128 *, signed __int128,...);
240unsigned __int128 __sync_lock_test_and_set(volatile unsigned __int128 *, unsigned __int128,...);
241#endif
242
243void __sync_lock_release(volatile char *,...);
244void __sync_lock_release(volatile signed char *,...);
245void __sync_lock_release(volatile unsigned char *,...);
246void __sync_lock_release(volatile signed short *,...);
247void __sync_lock_release(volatile unsigned short *,...);
248void __sync_lock_release(volatile signed int *,...);
249void __sync_lock_release(volatile unsigned int *,...);
250void __sync_lock_release(volatile signed long int *,...);
251void __sync_lock_release(volatile unsigned long int *,...);
252void __sync_lock_release(volatile signed long long int *,...);
253void __sync_lock_release(volatile unsigned long long int *,...);
254#if defined(__SIZEOF_INT128__)
255void __sync_lock_release(volatile signed __int128 *,...);
256void __sync_lock_release(volatile unsigned __int128 *,...);
257#endif
258
259void __sync_synchronize();
260
261
262
263
264_Bool __atomic_test_and_set(volatile _Bool *, int);
265_Bool __atomic_test_and_set(volatile char *, int);
266_Bool __atomic_test_and_set(volatile signed char *, int);
267_Bool __atomic_test_and_set(volatile unsigned char *, int);
268_Bool __atomic_test_and_set(volatile signed short *, int);
269_Bool __atomic_test_and_set(volatile unsigned short *, int);
270_Bool __atomic_test_and_set(volatile signed int *, int);
271_Bool __atomic_test_and_set(volatile unsigned int *, int);
272_Bool __atomic_test_and_set(volatile signed long int *, int);
273_Bool __atomic_test_and_set(volatile unsigned long int *, int);
274_Bool __atomic_test_and_set(volatile signed long long int *, int);
275_Bool __atomic_test_and_set(volatile unsigned long long int *, int);
276#if defined(__SIZEOF_INT128__)
277_Bool __atomic_test_and_set(volatile signed __int128 *, int);
278_Bool __atomic_test_and_set(volatile unsigned __int128 *, int);
279#endif
280
281void __atomic_clear(volatile _Bool *, int);
282void __atomic_clear(volatile char *, int);
283void __atomic_clear(volatile signed char *, int);
284void __atomic_clear(volatile unsigned char *, int);
285void __atomic_clear(volatile signed short *, int);
286void __atomic_clear(volatile unsigned short *, int);
287void __atomic_clear(volatile signed int *, int);
288void __atomic_clear(volatile unsigned int *, int);
289void __atomic_clear(volatile signed long int *, int);
290void __atomic_clear(volatile unsigned long int *, int);
291void __atomic_clear(volatile signed long long int *, int);
292void __atomic_clear(volatile unsigned long long int *, int);
293#if defined(__SIZEOF_INT128__)
294void __atomic_clear(volatile signed __int128 *, int);
295void __atomic_clear(volatile unsigned __int128 *, int);
296#endif
297
298_Bool __atomic_exchange_n(volatile _Bool *, _Bool, int);
299void __atomic_exchange(volatile _Bool *, volatile _Bool *, volatile _Bool *, int);
300char __atomic_exchange_n(volatile char *, char, int);
301void __atomic_exchange(volatile char *, volatile char *, volatile char *, int);
302signed char __atomic_exchange_n(volatile signed char *, signed char, int);
303void __atomic_exchange(volatile signed char *, volatile signed char *, volatile signed char *, int);
304unsigned char __atomic_exchange_n(volatile unsigned char *, unsigned char, int);
305void __atomic_exchange(volatile unsigned char *, volatile unsigned char *, volatile unsigned char *, int);
306signed short __atomic_exchange_n(volatile signed short *, signed short, int);
307void __atomic_exchange(volatile signed short *, volatile signed short *, volatile signed short *, int);
308unsigned short __atomic_exchange_n(volatile unsigned short *, unsigned short, int);
309void __atomic_exchange(volatile unsigned short *, volatile unsigned short *, volatile unsigned short *, int);
310signed int __atomic_exchange_n(volatile signed int *, signed int, int);
311void __atomic_exchange(volatile signed int *, volatile signed int *, volatile signed int *, int);
312unsigned int __atomic_exchange_n(volatile unsigned int *, unsigned int, int);
313void __atomic_exchange(volatile unsigned int *, volatile unsigned int *, volatile unsigned int *, int);
314signed long int __atomic_exchange_n(volatile signed long int *, signed long int, int);
315void __atomic_exchange(volatile signed long int *, volatile signed long int *, volatile signed long int *, int);
316unsigned long int __atomic_exchange_n(volatile unsigned long int *, unsigned long int, int);
317void __atomic_exchange(volatile unsigned long int *, volatile unsigned long int *, volatile unsigned long int *, int);
318signed long long int __atomic_exchange_n(volatile signed long long int *, signed long long int, int);
319void __atomic_exchange(volatile signed long long int *, volatile signed long long int *, volatile signed long long int *, int);
320unsigned long long int __atomic_exchange_n(volatile unsigned long long int *, unsigned long long int, int);
321void __atomic_exchange(volatile unsigned long long int *, volatile unsigned long long int *, volatile unsigned long long int *, int);
322#if defined(__SIZEOF_INT128__)
323signed __int128 __atomic_exchange_n(volatile signed __int128 *, signed __int128, int);
324void __atomic_exchange(volatile signed __int128 *, volatile signed __int128 *, volatile signed __int128 *, int);
325unsigned __int128 __atomic_exchange_n(volatile unsigned __int128 *, unsigned __int128, int);
326void __atomic_exchange(volatile unsigned __int128 *, volatile unsigned __int128 *, volatile unsigned __int128 *, int);
327#endif
328forall(dtype T) T * __atomic_exchange_n(T * volatile *, T *, int);
329forall(dtype T) void __atomic_exchange(T * volatile *, T * volatile *, T * volatile *, int);
330
331_Bool __atomic_load_n(const volatile _Bool *, int);
332void __atomic_load(const volatile _Bool *, volatile _Bool *, int);
333char __atomic_load_n(const volatile char *, int);
334void __atomic_load(const volatile char *, volatile char *, int);
335signed char __atomic_load_n(const volatile signed char *, int);
336void __atomic_load(const volatile signed char *, volatile signed char *, int);
337unsigned char __atomic_load_n(const volatile unsigned char *, int);
338void __atomic_load(const volatile unsigned char *, volatile unsigned char *, int);
339signed short __atomic_load_n(const volatile signed short *, int);
340void __atomic_load(const volatile signed short *, volatile signed short *, int);
341unsigned short __atomic_load_n(const volatile unsigned short *, int);
342void __atomic_load(const volatile unsigned short *, volatile unsigned short *, int);
343signed int __atomic_load_n(const volatile signed int *, int);
344void __atomic_load(const volatile signed int *, volatile signed int *, int);
345unsigned int __atomic_load_n(const volatile unsigned int *, int);
346void __atomic_load(const volatile unsigned int *, volatile unsigned int *, int);
347signed long int __atomic_load_n(const volatile signed long int *, int);
348void __atomic_load(const volatile signed long int *, volatile signed long int *, int);
349unsigned long int __atomic_load_n(const volatile unsigned long int *, int);
350void __atomic_load(const volatile unsigned long int *, volatile unsigned long int *, int);
351signed long long int __atomic_load_n(const volatile signed long long int *, int);
352void __atomic_load(const volatile signed long long int *, volatile signed long long int *, int);
353unsigned long long int __atomic_load_n(const volatile unsigned long long int *, int);
354void __atomic_load(const volatile unsigned long long int *, volatile unsigned long long int *, int);
355#if defined(__SIZEOF_INT128__)
356signed __int128 __atomic_load_n(const volatile signed __int128 *, int);
357void __atomic_load(const volatile signed __int128 *, volatile signed __int128 *, int);
358unsigned __int128 __atomic_load_n(const volatile unsigned __int128 *, int);
359void __atomic_load(const volatile unsigned __int128 *, volatile unsigned __int128 *, int);
360#endif
361forall(dtype T) T * __atomic_load_n(T * const volatile *, int);
362forall(dtype T) void __atomic_load(T * const volatile *, T **, int);
363
364_Bool __atomic_compare_exchange_n(volatile char *, char *, char, _Bool, int, int);
365_Bool __atomic_compare_exchange  (volatile char *, char *, char *, _Bool, int, int);
366_Bool __atomic_compare_exchange_n(volatile signed char *, signed char *, signed char, _Bool, int, int);
367_Bool __atomic_compare_exchange  (volatile signed char *, signed char *, signed char *, _Bool, int, int);
368_Bool __atomic_compare_exchange_n(volatile unsigned char *, unsigned char *, unsigned char, _Bool, int, int);
369_Bool __atomic_compare_exchange  (volatile unsigned char *, unsigned char *, unsigned char *, _Bool, int, int);
370_Bool __atomic_compare_exchange_n(volatile signed short *, signed short *, signed short, _Bool, int, int);
371_Bool __atomic_compare_exchange  (volatile signed short *, signed short *, signed short *, _Bool, int, int);
372_Bool __atomic_compare_exchange_n(volatile unsigned short *, unsigned short *, unsigned short, _Bool, int, int);
373_Bool __atomic_compare_exchange  (volatile unsigned short *, unsigned short *, unsigned short *, _Bool, int, int);
374_Bool __atomic_compare_exchange_n(volatile signed int *, signed int *, signed int, _Bool, int, int);
375_Bool __atomic_compare_exchange  (volatile signed int *, signed int *, signed int *, _Bool, int, int);
376_Bool __atomic_compare_exchange_n(volatile unsigned int *, unsigned int *, unsigned int, _Bool, int, int);
377_Bool __atomic_compare_exchange  (volatile unsigned int *, unsigned int *, unsigned int *, _Bool, int, int);
378_Bool __atomic_compare_exchange_n(volatile signed long int *, signed long int *, signed long int, _Bool, int, int);
379_Bool __atomic_compare_exchange  (volatile signed long int *, signed long int *, signed long int *, _Bool, int, int);
380_Bool __atomic_compare_exchange_n(volatile unsigned long int *, unsigned long int *, unsigned long int, _Bool, int, int);
381_Bool __atomic_compare_exchange  (volatile unsigned long int *, unsigned long int *, unsigned long int *, _Bool, int, int);
382_Bool __atomic_compare_exchange_n(volatile signed long long int *, signed long long int *, signed long long int, _Bool, int, int);
383_Bool __atomic_compare_exchange  (volatile signed long long int *, signed long long int *, signed long long int *, _Bool, int, int);
384_Bool __atomic_compare_exchange_n(volatile unsigned long long int *, unsigned long long int *, unsigned long long int, _Bool, int, int);
385_Bool __atomic_compare_exchange  (volatile unsigned long long int *, unsigned long long int *, unsigned long long int *, _Bool, int, int);
386#if defined(__SIZEOF_INT128__)
387_Bool __atomic_compare_exchange_n (volatile signed __int128 *, signed __int128 *, signed __int128, _Bool, int, int);
388_Bool __atomic_compare_exchange   (volatile signed __int128 *, signed __int128 *, signed __int128 *, _Bool, int, int);
389_Bool __atomic_compare_exchange_n (volatile unsigned __int128 *, unsigned __int128 *, unsigned __int128, _Bool, int, int);
390_Bool __atomic_compare_exchange   (volatile unsigned __int128 *, unsigned __int128 *, unsigned __int128 *, _Bool, int, int);
391#endif
392forall(dtype T) _Bool __atomic_compare_exchange_n (T * volatile *, T **, T*, _Bool, int, int);
393forall(dtype T) _Bool __atomic_compare_exchange   (T * volatile *, T **, T**, _Bool, int, int);
394
395void __atomic_store_n(volatile _Bool *, _Bool, int);
396void __atomic_store(volatile _Bool *, _Bool *, int);
397void __atomic_store_n(volatile char *, char, int);
398void __atomic_store(volatile char *, char *, int);
399void __atomic_store_n(volatile signed char *, signed char, int);
400void __atomic_store(volatile signed char *, signed char *, int);
401void __atomic_store_n(volatile unsigned char *, unsigned char, int);
402void __atomic_store(volatile unsigned char *, unsigned char *, int);
403void __atomic_store_n(volatile signed short *, signed short, int);
404void __atomic_store(volatile signed short *, signed short *, int);
405void __atomic_store_n(volatile unsigned short *, unsigned short, int);
406void __atomic_store(volatile unsigned short *, unsigned short *, int);
407void __atomic_store_n(volatile signed int *, signed int, int);
408void __atomic_store(volatile signed int *, signed int *, int);
409void __atomic_store_n(volatile unsigned int *, unsigned int, int);
410void __atomic_store(volatile unsigned int *, unsigned int *, int);
411void __atomic_store_n(volatile signed long int *, signed long int, int);
412void __atomic_store(volatile signed long int *, signed long int *, int);
413void __atomic_store_n(volatile unsigned long int *, unsigned long int, int);
414void __atomic_store(volatile unsigned long int *, unsigned long int *, int);
415void __atomic_store_n(volatile signed long long int *, signed long long int, int);
416void __atomic_store(volatile signed long long int *, signed long long int *, int);
417void __atomic_store_n(volatile unsigned long long int *, unsigned long long int, int);
418void __atomic_store(volatile unsigned long long int *, unsigned long long int *, int);
419#if defined(__SIZEOF_INT128__)
420void __atomic_store_n(volatile signed __int128 *, signed __int128, int);
421void __atomic_store(volatile signed __int128 *, signed __int128 *, int);
422void __atomic_store_n(volatile unsigned __int128 *, unsigned __int128, int);
423void __atomic_store(volatile unsigned __int128 *, unsigned __int128 *, int);
424#endif
425forall(dtype T) void __atomic_store_n(T * volatile *, T *, int);
426forall(dtype T) void __atomic_store(T * volatile *, T **, int);
427
428char __atomic_add_fetch  (volatile char *, char, int);
429signed char __atomic_add_fetch  (volatile signed char *, signed char, int);
430unsigned char __atomic_add_fetch  (volatile unsigned char *, unsigned char, int);
431signed short __atomic_add_fetch  (volatile signed short *, signed short, int);
432unsigned short __atomic_add_fetch  (volatile unsigned short *, unsigned short, int);
433signed int __atomic_add_fetch  (volatile signed int *, signed int, int);
434unsigned int __atomic_add_fetch  (volatile unsigned int *, unsigned int, int);
435signed long int __atomic_add_fetch  (volatile signed long int *, signed long int, int);
436unsigned long int __atomic_add_fetch  (volatile unsigned long int *, unsigned long int, int);
437signed long long int __atomic_add_fetch  (volatile signed long long int *, signed long long int, int);
438unsigned long long int __atomic_add_fetch  (volatile unsigned long long int *, unsigned long long int, int);
439#if defined(__SIZEOF_INT128__)
440signed __int128 __atomic_add_fetch   (volatile signed __int128 *, signed __int128, int);
441unsigned __int128 __atomic_add_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
442#endif
443
444char __atomic_sub_fetch  (volatile char *, char, int);
445signed char __atomic_sub_fetch  (volatile signed char *, signed char, int);
446unsigned char __atomic_sub_fetch  (volatile unsigned char *, unsigned char, int);
447signed short __atomic_sub_fetch  (volatile signed short *, signed short, int);
448unsigned short __atomic_sub_fetch  (volatile unsigned short *, unsigned short, int);
449signed int __atomic_sub_fetch  (volatile signed int *, signed int, int);
450unsigned int __atomic_sub_fetch  (volatile unsigned int *, unsigned int, int);
451signed long long int __atomic_sub_fetch  (volatile signed long int *, signed long int, int);
452unsigned long long int __atomic_sub_fetch  (volatile unsigned long int *, unsigned long int, int);
453signed long long int __atomic_sub_fetch  (volatile signed long long int *, signed long long int, int);
454unsigned long long int __atomic_sub_fetch  (volatile unsigned long long int *, unsigned long long int, int);
455#if defined(__SIZEOF_INT128__)
456signed __int128 __atomic_sub_fetch   (volatile signed __int128 *, signed __int128, int);
457unsigned __int128 __atomic_sub_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
458#endif
459
460char __atomic_and_fetch  (volatile char *, char, int);
461signed char __atomic_and_fetch  (volatile signed char *, signed char, int);
462unsigned char __atomic_and_fetch  (volatile unsigned char *, unsigned char, int);
463signed short __atomic_and_fetch  (volatile signed short *, signed short, int);
464unsigned short __atomic_and_fetch  (volatile unsigned short *, unsigned short, int);
465signed int __atomic_and_fetch  (volatile signed int *, signed int, int);
466unsigned int __atomic_and_fetch  (volatile unsigned int *, unsigned int, int);
467signed long int __atomic_and_fetch  (volatile signed long int *, signed long int, int);
468unsigned long int __atomic_and_fetch  (volatile unsigned long int *, unsigned long int, int);
469signed long long int __atomic_and_fetch  (volatile signed long long int *, signed long long int, int);
470unsigned long long int __atomic_and_fetch  (volatile unsigned long long int *, unsigned long long int, int);
471#if defined(__SIZEOF_INT128__)
472signed __int128 __atomic_and_fetch   (volatile signed __int128 *, signed __int128, int);
473unsigned __int128 __atomic_and_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
474#endif
475
476char __atomic_nand_fetch  (volatile char *, char, int);
477signed char __atomic_nand_fetch  (volatile signed char *, signed char, int);
478unsigned char __atomic_nand_fetch  (volatile unsigned char *, unsigned char, int);
479signed short __atomic_nand_fetch  (volatile signed short *, signed short, int);
480unsigned short __atomic_nand_fetch  (volatile unsigned short *, unsigned short, int);
481signed int __atomic_nand_fetch  (volatile signed int *, signed int, int);
482unsigned int __atomic_nand_fetch  (volatile unsigned int *, unsigned int, int);
483signed long int __atomic_nand_fetch  (volatile signed long int *, signed long int, int);
484unsigned long int __atomic_nand_fetch  (volatile unsigned long int *, unsigned long int, int);
485signed long long int __atomic_nand_fetch  (volatile signed long long int *, signed long long int, int);
486unsigned long long int __atomic_nand_fetch  (volatile unsigned long long int *, unsigned long long int, int);
487#if defined(__SIZEOF_INT128__)
488signed __int128 __atomic_nand_fetch   (volatile signed __int128 *, signed __int128, int);
489unsigned __int128 __atomic_nand_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
490#endif
491
492char __atomic_xor_fetch  (volatile char *, char, int);
493signed char __atomic_xor_fetch  (volatile signed char *, signed char, int);
494unsigned char __atomic_xor_fetch  (volatile unsigned char *, unsigned char, int);
495signed short __atomic_xor_fetch  (volatile signed short *, signed short, int);
496unsigned short __atomic_xor_fetch  (volatile unsigned short *, unsigned short, int);
497signed int __atomic_xor_fetch  (volatile signed int *, signed int, int);
498unsigned int __atomic_xor_fetch  (volatile unsigned int *, unsigned int, int);
499signed long int __atomic_xor_fetch  (volatile signed long int *, signed long int, int);
500unsigned long int __atomic_xor_fetch  (volatile unsigned long int *, unsigned long int, int);
501signed long long int __atomic_xor_fetch  (volatile signed long long int *, signed long long int, int);
502unsigned long long int __atomic_xor_fetch  (volatile unsigned long long int *, unsigned long long int, int);
503#if defined(__SIZEOF_INT128__)
504signed __int128 __atomic_xor_fetch   (volatile signed __int128 *, signed __int128, int);
505unsigned __int128 __atomic_xor_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
506#endif
507
508char __atomic_or_fetch  (volatile char *, char, int);
509signed char __atomic_or_fetch  (volatile signed char *, signed char, int);
510unsigned char __atomic_or_fetch  (volatile unsigned char *, unsigned char, int);
511signed short __atomic_or_fetch  (volatile signed short *, signed short, int);
512unsigned short __atomic_or_fetch  (volatile unsigned short *, unsigned short, int);
513signed int __atomic_or_fetch  (volatile signed int *, signed int, int);
514unsigned int __atomic_or_fetch  (volatile unsigned int *, unsigned int, int);
515signed long int __atomic_or_fetch  (volatile signed long int *, signed long int, int);
516unsigned long int __atomic_or_fetch  (volatile unsigned long int *, unsigned long int, int);
517signed long long int __atomic_or_fetch  (volatile signed long long int *, signed long long int, int);
518unsigned long long int __atomic_or_fetch  (volatile unsigned long long int *, unsigned long long int, int);
519#if defined(__SIZEOF_INT128__)
520signed __int128 __atomic_or_fetch   (volatile signed __int128 *, signed __int128, int);
521unsigned __int128 __atomic_or_fetch   (volatile unsigned __int128 *, unsigned __int128, int);
522#endif
523
524char __atomic_fetch_add  (volatile char *, char, int);
525signed char __atomic_fetch_add  (volatile signed char *, signed char, int);
526unsigned char __atomic_fetch_add  (volatile unsigned char *, unsigned char, int);
527signed short __atomic_fetch_add  (volatile signed short *, signed short, int);
528unsigned short __atomic_fetch_add  (volatile unsigned short *, unsigned short, int);
529signed int __atomic_fetch_add  (volatile signed int *, signed int, int);
530unsigned int __atomic_fetch_add  (volatile unsigned int *, unsigned int, int);
531signed long int __atomic_fetch_add  (volatile signed long int *, signed long int, int);
532unsigned long int __atomic_fetch_add  (volatile unsigned long int *, unsigned long int, int);
533signed long long int __atomic_fetch_add  (volatile signed long long int *, signed long long int, int);
534unsigned long long int __atomic_fetch_add  (volatile unsigned long long int *, unsigned long long int, int);
535#if defined(__SIZEOF_INT128__)
536signed __int128 __atomic_fetch_add   (volatile signed __int128 *, signed __int128, int);
537unsigned __int128 __atomic_fetch_add   (volatile unsigned __int128 *, unsigned __int128, int);
538#endif
539
540char __atomic_fetch_sub  (volatile char *, char, int);
541signed char __atomic_fetch_sub  (volatile signed char *, signed char, int);
542unsigned char __atomic_fetch_sub  (volatile unsigned char *, unsigned char, int);
543signed short __atomic_fetch_sub  (volatile signed short *, signed short, int);
544unsigned short __atomic_fetch_sub  (volatile unsigned short *, unsigned short, int);
545signed int __atomic_fetch_sub  (volatile signed int *, signed int, int);
546unsigned int __atomic_fetch_sub  (volatile unsigned int *, unsigned int, int);
547signed long int __atomic_fetch_sub  (volatile signed long int *, signed long int, int);
548unsigned long int __atomic_fetch_sub  (volatile unsigned long int *, unsigned long int, int);
549signed long long int __atomic_fetch_sub  (volatile signed long long int *, signed long long int, int);
550unsigned long long int __atomic_fetch_sub  (volatile unsigned long long int *, unsigned long long int, int);
551#if defined(__SIZEOF_INT128__)
552signed __int128 __atomic_fetch_sub   (volatile signed  __int128 *, signed __int128, int);
553unsigned __int128 __atomic_fetch_sub   (volatile unsigned  __int128 *, unsigned __int128, int);
554#endif
555
556char __atomic_fetch_and  (volatile char *, char, int);
557signed char __atomic_fetch_and  (volatile signed char *, signed char, int);
558unsigned char __atomic_fetch_and  (volatile unsigned char *, unsigned char, int);
559signed short __atomic_fetch_and  (volatile signed short *, signed short, int);
560unsigned short __atomic_fetch_and  (volatile unsigned short *, unsigned short, int);
561signed int __atomic_fetch_and  (volatile signed int *, signed int, int);
562unsigned int __atomic_fetch_and  (volatile unsigned int *, unsigned int, int);
563signed long int __atomic_fetch_and  (volatile signed long int *, signed long int, int);
564unsigned long int __atomic_fetch_and  (volatile unsigned long int *, unsigned long int, int);
565signed long long int __atomic_fetch_and  (volatile signed long long int *, signed long long int, int);
566unsigned long long int __atomic_fetch_and  (volatile unsigned long long int *, unsigned long long int, int);
567#if defined(__SIZEOF_INT128__)
568signed __int128 __atomic_fetch_and   (volatile signed __int128 *, signed __int128, int);
569unsigned __int128 __atomic_fetch_and   (volatile unsigned __int128 *, unsigned __int128, int);
570#endif
571
572char __atomic_fetch_nand  (volatile char *, char, int);
573signed char __atomic_fetch_nand  (volatile signed char *, signed char, int);
574unsigned char __atomic_fetch_nand  (volatile unsigned char *, unsigned char, int);
575signed short __atomic_fetch_nand  (volatile signed short *, signed short, int);
576unsigned short __atomic_fetch_nand  (volatile unsigned short *, unsigned short, int);
577signed int __atomic_fetch_nand  (volatile signed int *, signed int, int);
578unsigned int __atomic_fetch_nand  (volatile unsigned int *, unsigned int, int);
579signed long int __atomic_fetch_nand  (volatile signed long int *, signed long int, int);
580unsigned long int __atomic_fetch_nand  (volatile unsigned long int *, unsigned long int, int);
581signed long long int __atomic_fetch_nand  (volatile signed long long int *, signed long long int, int);
582unsigned long long int __atomic_fetch_nand  (volatile unsigned long long int *, unsigned long long int, int);
583#if defined(__SIZEOF_INT128__)
584signed __int128 __atomic_fetch_nand   (volatile signed __int128 *, signed __int128, int);
585unsigned __int128 __atomic_fetch_nand   (volatile unsigned __int128 *, unsigned __int128, int);
586#endif
587
588char __atomic_fetch_xor  (volatile char *, char, int);
589signed char __atomic_fetch_xor  (volatile signed char *, signed char, int);
590unsigned char __atomic_fetch_xor  (volatile unsigned char *, unsigned char, int);
591signed short __atomic_fetch_xor  (volatile signed short *, signed short, int);
592unsigned short __atomic_fetch_xor  (volatile unsigned short *, unsigned short, int);
593signed int __atomic_fetch_xor  (volatile signed int *, signed int, int);
594unsigned int __atomic_fetch_xor  (volatile unsigned int *, unsigned int, int);
595signed long int __atomic_fetch_xor  (volatile signed long int *, signed long int, int);
596unsigned long int __atomic_fetch_xor  (volatile unsigned long int *, unsigned long int, int);
597signed long long int __atomic_fetch_xor  (volatile signed long long int *, signed long long int, int);
598unsigned long long int __atomic_fetch_xor  (volatile unsigned long long int *, unsigned long long int, int);
599#if defined(__SIZEOF_INT128__)
600signed __int128 __atomic_fetch_xor   (volatile signed __int128 *, signed __int128, int);
601unsigned __int128 __atomic_fetch_xor   (volatile unsigned __int128 *, unsigned __int128, int);
602#endif
603
604char __atomic_fetch_or  (volatile char *, char, int);
605signed char __atomic_fetch_or  (volatile signed char *, signed char, int);
606unsigned char __atomic_fetch_or  (volatile unsigned char *, unsigned char, int);
607signed short __atomic_fetch_or  (volatile signed short *, signed short, int);
608unsigned short __atomic_fetch_or  (volatile unsigned short *, unsigned short, int);
609signed int __atomic_fetch_or  (volatile signed int *, signed int, int);
610unsigned int __atomic_fetch_or  (volatile unsigned int *, unsigned int, int);
611signed long int __atomic_fetch_or  (volatile signed long int *, signed long int, int);
612unsigned long int __atomic_fetch_or  (volatile unsigned long int *, unsigned long int, int);
613signed long long int __atomic_fetch_or  (volatile signed long long int *, signed long long int, int);
614unsigned long long int __atomic_fetch_or  (volatile unsigned long long int *, unsigned long long int, int);
615#if defined(__SIZEOF_INT128__)
616signed __int128 __atomic_fetch_or   (volatile signed __int128 *, signed __int128, int);
617unsigned __int128 __atomic_fetch_or   (volatile unsigned __int128 *, unsigned __int128, int);
618#endif
619
620_Bool __atomic_always_lock_free(unsigned long, const volatile void *);
621_Bool __atomic_is_lock_free(unsigned long, const volatile void *);
622
623void __atomic_thread_fence (int);
624void __atomic_signal_fence (int);
625void __atomic_feraiseexcept(int);
Note: See TracBrowser for help on using the repository browser.