xref: /aosp_15_r20/external/libcxx/www/atomic_design_b.html (revision 58b9f456b02922dfdb1fad8a988d5fd8765ecb80)
1*58b9f456SAndroid Build Coastguard Worker<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2*58b9f456SAndroid Build Coastguard Worker          "http://www.w3.org/TR/html4/strict.dtd">
3*58b9f456SAndroid Build Coastguard Worker<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
4*58b9f456SAndroid Build Coastguard Worker<html>
5*58b9f456SAndroid Build Coastguard Worker<head>
6*58b9f456SAndroid Build Coastguard Worker  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
7*58b9f456SAndroid Build Coastguard Worker  <title>&lt;atomic&gt; design</title>
8*58b9f456SAndroid Build Coastguard Worker  <link type="text/css" rel="stylesheet" href="menu.css">
9*58b9f456SAndroid Build Coastguard Worker  <link type="text/css" rel="stylesheet" href="content.css">
10*58b9f456SAndroid Build Coastguard Worker</head>
11*58b9f456SAndroid Build Coastguard Worker
12*58b9f456SAndroid Build Coastguard Worker<body>
13*58b9f456SAndroid Build Coastguard Worker<div id="menu">
14*58b9f456SAndroid Build Coastguard Worker  <div>
15*58b9f456SAndroid Build Coastguard Worker    <a href="https://llvm.org/">LLVM Home</a>
16*58b9f456SAndroid Build Coastguard Worker  </div>
17*58b9f456SAndroid Build Coastguard Worker
18*58b9f456SAndroid Build Coastguard Worker  <div class="submenu">
19*58b9f456SAndroid Build Coastguard Worker    <label>libc++ Info</label>
20*58b9f456SAndroid Build Coastguard Worker    <a href="/index.html">About</a>
21*58b9f456SAndroid Build Coastguard Worker  </div>
22*58b9f456SAndroid Build Coastguard Worker
23*58b9f456SAndroid Build Coastguard Worker  <div class="submenu">
24*58b9f456SAndroid Build Coastguard Worker    <label>Quick Links</label>
25*58b9f456SAndroid Build Coastguard Worker    <a href="https://lists.llvm.org/mailman/listinfo/cfe-dev">cfe-dev</a>
26*58b9f456SAndroid Build Coastguard Worker    <a href="https://lists.llvm.org/mailman/listinfo/cfe-commits">cfe-commits</a>
27*58b9f456SAndroid Build Coastguard Worker    <a href="https://bugs.llvm.org/">Bug Reports</a>
28*58b9f456SAndroid Build Coastguard Worker    <a href="https://llvm.org/svn/llvm-project/libcxx/trunk/">Browse SVN</a>
29*58b9f456SAndroid Build Coastguard Worker    <a href="https://llvm.org/viewvc/llvm-project/libcxx/trunk/">Browse ViewVC</a>
30*58b9f456SAndroid Build Coastguard Worker  </div>
31*58b9f456SAndroid Build Coastguard Worker</div>
32*58b9f456SAndroid Build Coastguard Worker
33*58b9f456SAndroid Build Coastguard Worker<div id="content">
34*58b9f456SAndroid Build Coastguard Worker  <!--*********************************************************************-->
35*58b9f456SAndroid Build Coastguard Worker  <h1>&lt;atomic&gt; design</h1>
36*58b9f456SAndroid Build Coastguard Worker  <!--*********************************************************************-->
37*58b9f456SAndroid Build Coastguard Worker
38*58b9f456SAndroid Build Coastguard Worker<p>
39*58b9f456SAndroid Build Coastguard WorkerThis is a variation of design A which puts the burden on the library to arrange
40*58b9f456SAndroid Build Coastguard Workerfor the correct manipulation of the run time memory ordering arguments, and only
41*58b9f456SAndroid Build Coastguard Workercalls the compiler for well-defined memory orderings.  I think of this design as
42*58b9f456SAndroid Build Coastguard Workerthe worst of A and C, instead of the best of A and C.  But I offer it as an
43*58b9f456SAndroid Build Coastguard Workeroption in the spirit of completeness.
44*58b9f456SAndroid Build Coastguard Worker</p>
45*58b9f456SAndroid Build Coastguard Worker
46*58b9f456SAndroid Build Coastguard Worker<blockquote><pre>
47*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type must be trivially copyable</font>
48*58b9f456SAndroid Build Coastguard Workerbool __atomic_is_lock_free(const type* atomic_obj);
49*58b9f456SAndroid Build Coastguard Worker
50*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type must be trivially copyable</font>
51*58b9f456SAndroid Build Coastguard Workertype __atomic_load_relaxed(const volatile type* atomic_obj);
52*58b9f456SAndroid Build Coastguard Workertype __atomic_load_consume(const volatile type* atomic_obj);
53*58b9f456SAndroid Build Coastguard Workertype __atomic_load_acquire(const volatile type* atomic_obj);
54*58b9f456SAndroid Build Coastguard Workertype __atomic_load_seq_cst(const volatile type* atomic_obj);
55*58b9f456SAndroid Build Coastguard Worker
56*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type must be trivially copyable</font>
57*58b9f456SAndroid Build Coastguard Workertype __atomic_store_relaxed(volatile type* atomic_obj, type desired);
58*58b9f456SAndroid Build Coastguard Workertype __atomic_store_release(volatile type* atomic_obj, type desired);
59*58b9f456SAndroid Build Coastguard Workertype __atomic_store_seq_cst(volatile type* atomic_obj, type desired);
60*58b9f456SAndroid Build Coastguard Worker
61*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type must be trivially copyable</font>
62*58b9f456SAndroid Build Coastguard Workertype __atomic_exchange_relaxed(volatile type* atomic_obj, type desired);
63*58b9f456SAndroid Build Coastguard Workertype __atomic_exchange_consume(volatile type* atomic_obj, type desired);
64*58b9f456SAndroid Build Coastguard Workertype __atomic_exchange_acquire(volatile type* atomic_obj, type desired);
65*58b9f456SAndroid Build Coastguard Workertype __atomic_exchange_release(volatile type* atomic_obj, type desired);
66*58b9f456SAndroid Build Coastguard Workertype __atomic_exchange_acq_rel(volatile type* atomic_obj, type desired);
67*58b9f456SAndroid Build Coastguard Workertype __atomic_exchange_seq_cst(volatile type* atomic_obj, type desired);
68*58b9f456SAndroid Build Coastguard Worker
69*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type must be trivially copyable</font>
70*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_relaxed_relaxed(volatile type* atomic_obj,
71*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
72*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
73*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_consume_relaxed(volatile type* atomic_obj,
74*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
75*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
76*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_consume_consume(volatile type* atomic_obj,
77*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
78*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
79*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_acquire_relaxed(volatile type* atomic_obj,
80*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
81*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
82*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_acquire_consume(volatile type* atomic_obj,
83*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
84*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
85*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_acquire_acquire(volatile type* atomic_obj,
86*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
87*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
88*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_release_relaxed(volatile type* atomic_obj,
89*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
90*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
91*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_release_consume(volatile type* atomic_obj,
92*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
93*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
94*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_release_acquire(volatile type* atomic_obj,
95*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
96*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
97*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_acq_rel_relaxed(volatile type* atomic_obj,
98*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
99*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
100*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_acq_rel_consume(volatile type* atomic_obj,
101*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
102*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
103*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_acq_rel_acquire(volatile type* atomic_obj,
104*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
105*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
106*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_seq_cst_relaxed(volatile type* atomic_obj,
107*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
108*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
109*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_seq_cst_consume(volatile type* atomic_obj,
110*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
111*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
112*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_seq_cst_acquire(volatile type* atomic_obj,
113*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
114*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
115*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_strong_seq_cst_seq_cst(volatile type* atomic_obj,
116*58b9f456SAndroid Build Coastguard Worker                                                      type* expected,
117*58b9f456SAndroid Build Coastguard Worker                                                      type desired);
118*58b9f456SAndroid Build Coastguard Worker
119*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type must be trivially copyable</font>
120*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_relaxed_relaxed(volatile type* atomic_obj,
121*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
122*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
123*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_consume_relaxed(volatile type* atomic_obj,
124*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
125*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
126*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_consume_consume(volatile type* atomic_obj,
127*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
128*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
129*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_acquire_relaxed(volatile type* atomic_obj,
130*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
131*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
132*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_acquire_consume(volatile type* atomic_obj,
133*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
134*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
135*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_acquire_acquire(volatile type* atomic_obj,
136*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
137*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
138*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_release_relaxed(volatile type* atomic_obj,
139*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
140*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
141*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_release_consume(volatile type* atomic_obj,
142*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
143*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
144*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_release_acquire(volatile type* atomic_obj,
145*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
146*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
147*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_acq_rel_relaxed(volatile type* atomic_obj,
148*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
149*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
150*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_acq_rel_consume(volatile type* atomic_obj,
151*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
152*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
153*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_acq_rel_acquire(volatile type* atomic_obj,
154*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
155*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
156*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_seq_cst_relaxed(volatile type* atomic_obj,
157*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
158*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
159*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_seq_cst_consume(volatile type* atomic_obj,
160*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
161*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
162*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_seq_cst_acquire(volatile type* atomic_obj,
163*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
164*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
165*58b9f456SAndroid Build Coastguard Workerbool __atomic_compare_exchange_weak_seq_cst_seq_cst(volatile type* atomic_obj,
166*58b9f456SAndroid Build Coastguard Worker                                                    type* expected,
167*58b9f456SAndroid Build Coastguard Worker                                                    type desired);
168*58b9f456SAndroid Build Coastguard Worker
169*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type is one of: char, signed char, unsigned char, short, unsigned short, int,</font>
170*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      unsigned int, long, unsigned long, long long, unsigned long long,</font>
171*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      char16_t, char32_t, wchar_t</font>
172*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_add_relaxed(volatile type* atomic_obj, type operand);
173*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_add_consume(volatile type* atomic_obj, type operand);
174*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_add_acquire(volatile type* atomic_obj, type operand);
175*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_add_release(volatile type* atomic_obj, type operand);
176*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_add_acq_rel(volatile type* atomic_obj, type operand);
177*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_add_seq_cst(volatile type* atomic_obj, type operand);
178*58b9f456SAndroid Build Coastguard Worker
179*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type is one of: char, signed char, unsigned char, short, unsigned short, int,</font>
180*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      unsigned int, long, unsigned long, long long, unsigned long long,</font>
181*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      char16_t, char32_t, wchar_t</font>
182*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_sub_relaxed(volatile type* atomic_obj, type operand);
183*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_sub_consume(volatile type* atomic_obj, type operand);
184*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_sub_acquire(volatile type* atomic_obj, type operand);
185*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_sub_release(volatile type* atomic_obj, type operand);
186*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_sub_acq_rel(volatile type* atomic_obj, type operand);
187*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_sub_seq_cst(volatile type* atomic_obj, type operand);
188*58b9f456SAndroid Build Coastguard Worker
189*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type is one of: char, signed char, unsigned char, short, unsigned short, int,</font>
190*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      unsigned int, long, unsigned long, long long, unsigned long long,</font>
191*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      char16_t, char32_t, wchar_t</font>
192*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_and_relaxed(volatile type* atomic_obj, type operand);
193*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_and_consume(volatile type* atomic_obj, type operand);
194*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_and_acquire(volatile type* atomic_obj, type operand);
195*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_and_release(volatile type* atomic_obj, type operand);
196*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_and_acq_rel(volatile type* atomic_obj, type operand);
197*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_and_seq_cst(volatile type* atomic_obj, type operand);
198*58b9f456SAndroid Build Coastguard Worker
199*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type is one of: char, signed char, unsigned char, short, unsigned short, int,</font>
200*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      unsigned int, long, unsigned long, long long, unsigned long long,</font>
201*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      char16_t, char32_t, wchar_t</font>
202*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_or_relaxed(volatile type* atomic_obj, type operand);
203*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_or_consume(volatile type* atomic_obj, type operand);
204*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_or_acquire(volatile type* atomic_obj, type operand);
205*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_or_release(volatile type* atomic_obj, type operand);
206*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_or_acq_rel(volatile type* atomic_obj, type operand);
207*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_or_seq_cst(volatile type* atomic_obj, type operand);
208*58b9f456SAndroid Build Coastguard Worker
209*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">// type is one of: char, signed char, unsigned char, short, unsigned short, int,</font>
210*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      unsigned int, long, unsigned long, long long, unsigned long long,</font>
211*58b9f456SAndroid Build Coastguard Worker<font color="#C80000">//      char16_t, char32_t, wchar_t</font>
212*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_xor_relaxed(volatile type* atomic_obj, type operand);
213*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_xor_consume(volatile type* atomic_obj, type operand);
214*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_xor_acquire(volatile type* atomic_obj, type operand);
215*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_xor_release(volatile type* atomic_obj, type operand);
216*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_xor_acq_rel(volatile type* atomic_obj, type operand);
217*58b9f456SAndroid Build Coastguard Workertype __atomic_fetch_xor_seq_cst(volatile type* atomic_obj, type operand);
218*58b9f456SAndroid Build Coastguard Worker
219*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_add_relaxed(void* volatile* atomic_obj, ptrdiff_t operand);
220*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_add_consume(void* volatile* atomic_obj, ptrdiff_t operand);
221*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_add_acquire(void* volatile* atomic_obj, ptrdiff_t operand);
222*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_add_release(void* volatile* atomic_obj, ptrdiff_t operand);
223*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_add_acq_rel(void* volatile* atomic_obj, ptrdiff_t operand);
224*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_add_seq_cst(void* volatile* atomic_obj, ptrdiff_t operand);
225*58b9f456SAndroid Build Coastguard Worker
226*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_sub_relaxed(void* volatile* atomic_obj, ptrdiff_t operand);
227*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_sub_consume(void* volatile* atomic_obj, ptrdiff_t operand);
228*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_sub_acquire(void* volatile* atomic_obj, ptrdiff_t operand);
229*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_sub_release(void* volatile* atomic_obj, ptrdiff_t operand);
230*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_sub_acq_rel(void* volatile* atomic_obj, ptrdiff_t operand);
231*58b9f456SAndroid Build Coastguard Workervoid* __atomic_fetch_sub_seq_cst(void* volatile* atomic_obj, ptrdiff_t operand);
232*58b9f456SAndroid Build Coastguard Worker
233*58b9f456SAndroid Build Coastguard Workervoid __atomic_thread_fence_relaxed();
234*58b9f456SAndroid Build Coastguard Workervoid __atomic_thread_fence_consume();
235*58b9f456SAndroid Build Coastguard Workervoid __atomic_thread_fence_acquire();
236*58b9f456SAndroid Build Coastguard Workervoid __atomic_thread_fence_release();
237*58b9f456SAndroid Build Coastguard Workervoid __atomic_thread_fence_acq_rel();
238*58b9f456SAndroid Build Coastguard Workervoid __atomic_thread_fence_seq_cst();
239*58b9f456SAndroid Build Coastguard Worker
240*58b9f456SAndroid Build Coastguard Workervoid __atomic_signal_fence_relaxed();
241*58b9f456SAndroid Build Coastguard Workervoid __atomic_signal_fence_consume();
242*58b9f456SAndroid Build Coastguard Workervoid __atomic_signal_fence_acquire();
243*58b9f456SAndroid Build Coastguard Workervoid __atomic_signal_fence_release();
244*58b9f456SAndroid Build Coastguard Workervoid __atomic_signal_fence_acq_rel();
245*58b9f456SAndroid Build Coastguard Workervoid __atomic_signal_fence_seq_cst();
246*58b9f456SAndroid Build Coastguard Worker</pre></blockquote>
247*58b9f456SAndroid Build Coastguard Worker
248*58b9f456SAndroid Build Coastguard Worker</div>
249*58b9f456SAndroid Build Coastguard Worker</body>
250*58b9f456SAndroid Build Coastguard Worker</html>
251