xref: /aosp_15_r20/external/llvm/test/Instrumentation/ThreadSanitizer/atomic.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -tsan -S | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; Check that atomic memory operations are converted to calls into ThreadSanitizer runtime.
3*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine i8 @atomic8_load_unordered(i8* %a) nounwind uwtable {
6*9880d681SAndroid Build Coastguard Workerentry:
7*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i8, i8* %a unordered, align 1, !dbg !7
8*9880d681SAndroid Build Coastguard Worker  ret i8 %0, !dbg !7
9*9880d681SAndroid Build Coastguard Worker}
10*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_load_unordered
11*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_load(i8* %a, i32 0), !dbg
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdefine i8 @atomic8_load_monotonic(i8* %a) nounwind uwtable {
14*9880d681SAndroid Build Coastguard Workerentry:
15*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i8, i8* %a monotonic, align 1, !dbg !7
16*9880d681SAndroid Build Coastguard Worker  ret i8 %0, !dbg !7
17*9880d681SAndroid Build Coastguard Worker}
18*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_load_monotonic
19*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_load(i8* %a, i32 0), !dbg
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine i8 @atomic8_load_acquire(i8* %a) nounwind uwtable {
22*9880d681SAndroid Build Coastguard Workerentry:
23*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i8, i8* %a acquire, align 1, !dbg !7
24*9880d681SAndroid Build Coastguard Worker  ret i8 %0, !dbg !7
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_load_acquire
27*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_load(i8* %a, i32 2), !dbg
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerdefine i8 @atomic8_load_seq_cst(i8* %a) nounwind uwtable {
30*9880d681SAndroid Build Coastguard Workerentry:
31*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i8, i8* %a seq_cst, align 1, !dbg !7
32*9880d681SAndroid Build Coastguard Worker  ret i8 %0, !dbg !7
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_load_seq_cst
35*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_load(i8* %a, i32 5), !dbg
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_store_unordered(i8* %a) nounwind uwtable {
38*9880d681SAndroid Build Coastguard Workerentry:
39*9880d681SAndroid Build Coastguard Worker  store atomic i8 0, i8* %a unordered, align 1, !dbg !7
40*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_store_unordered
43*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic8_store(i8* %a, i8 0, i32 0), !dbg
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_store_monotonic(i8* %a) nounwind uwtable {
46*9880d681SAndroid Build Coastguard Workerentry:
47*9880d681SAndroid Build Coastguard Worker  store atomic i8 0, i8* %a monotonic, align 1, !dbg !7
48*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_store_monotonic
51*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic8_store(i8* %a, i8 0, i32 0), !dbg
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_store_release(i8* %a) nounwind uwtable {
54*9880d681SAndroid Build Coastguard Workerentry:
55*9880d681SAndroid Build Coastguard Worker  store atomic i8 0, i8* %a release, align 1, !dbg !7
56*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
57*9880d681SAndroid Build Coastguard Worker}
58*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_store_release
59*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic8_store(i8* %a, i8 0, i32 3), !dbg
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_store_seq_cst(i8* %a) nounwind uwtable {
62*9880d681SAndroid Build Coastguard Workerentry:
63*9880d681SAndroid Build Coastguard Worker  store atomic i8 0, i8* %a seq_cst, align 1, !dbg !7
64*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
65*9880d681SAndroid Build Coastguard Worker}
66*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_store_seq_cst
67*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic8_store(i8* %a, i8 0, i32 5), !dbg
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xchg_monotonic(i8* %a) nounwind uwtable {
70*9880d681SAndroid Build Coastguard Workerentry:
71*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i8* %a, i8 0 monotonic, !dbg !7
72*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
73*9880d681SAndroid Build Coastguard Worker}
74*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xchg_monotonic
75*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_exchange(i8* %a, i8 0, i32 0), !dbg
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_add_monotonic(i8* %a) nounwind uwtable {
78*9880d681SAndroid Build Coastguard Workerentry:
79*9880d681SAndroid Build Coastguard Worker  atomicrmw add i8* %a, i8 0 monotonic, !dbg !7
80*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
81*9880d681SAndroid Build Coastguard Worker}
82*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_add_monotonic
83*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_add(i8* %a, i8 0, i32 0), !dbg
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_sub_monotonic(i8* %a) nounwind uwtable {
86*9880d681SAndroid Build Coastguard Workerentry:
87*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i8* %a, i8 0 monotonic, !dbg !7
88*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
89*9880d681SAndroid Build Coastguard Worker}
90*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_sub_monotonic
91*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_sub(i8* %a, i8 0, i32 0), !dbg
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_and_monotonic(i8* %a) nounwind uwtable {
94*9880d681SAndroid Build Coastguard Workerentry:
95*9880d681SAndroid Build Coastguard Worker  atomicrmw and i8* %a, i8 0 monotonic, !dbg !7
96*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
97*9880d681SAndroid Build Coastguard Worker}
98*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_and_monotonic
99*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_and(i8* %a, i8 0, i32 0), !dbg
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_or_monotonic(i8* %a) nounwind uwtable {
102*9880d681SAndroid Build Coastguard Workerentry:
103*9880d681SAndroid Build Coastguard Worker  atomicrmw or i8* %a, i8 0 monotonic, !dbg !7
104*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
105*9880d681SAndroid Build Coastguard Worker}
106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_or_monotonic
107*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_or(i8* %a, i8 0, i32 0), !dbg
108*9880d681SAndroid Build Coastguard Worker
109*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xor_monotonic(i8* %a) nounwind uwtable {
110*9880d681SAndroid Build Coastguard Workerentry:
111*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i8* %a, i8 0 monotonic, !dbg !7
112*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xor_monotonic
115*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_xor(i8* %a, i8 0, i32 0), !dbg
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_nand_monotonic(i8* %a) nounwind uwtable {
118*9880d681SAndroid Build Coastguard Workerentry:
119*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i8* %a, i8 0 monotonic, !dbg !7
120*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_nand_monotonic
123*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_nand(i8* %a, i8 0, i32 0), !dbg
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xchg_acquire(i8* %a) nounwind uwtable {
126*9880d681SAndroid Build Coastguard Workerentry:
127*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i8* %a, i8 0 acquire, !dbg !7
128*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
129*9880d681SAndroid Build Coastguard Worker}
130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xchg_acquire
131*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_exchange(i8* %a, i8 0, i32 2), !dbg
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_add_acquire(i8* %a) nounwind uwtable {
134*9880d681SAndroid Build Coastguard Workerentry:
135*9880d681SAndroid Build Coastguard Worker  atomicrmw add i8* %a, i8 0 acquire, !dbg !7
136*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
137*9880d681SAndroid Build Coastguard Worker}
138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_add_acquire
139*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_add(i8* %a, i8 0, i32 2), !dbg
140*9880d681SAndroid Build Coastguard Worker
141*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_sub_acquire(i8* %a) nounwind uwtable {
142*9880d681SAndroid Build Coastguard Workerentry:
143*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i8* %a, i8 0 acquire, !dbg !7
144*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
145*9880d681SAndroid Build Coastguard Worker}
146*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_sub_acquire
147*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_sub(i8* %a, i8 0, i32 2), !dbg
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_and_acquire(i8* %a) nounwind uwtable {
150*9880d681SAndroid Build Coastguard Workerentry:
151*9880d681SAndroid Build Coastguard Worker  atomicrmw and i8* %a, i8 0 acquire, !dbg !7
152*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
153*9880d681SAndroid Build Coastguard Worker}
154*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_and_acquire
155*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_and(i8* %a, i8 0, i32 2), !dbg
156*9880d681SAndroid Build Coastguard Worker
157*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_or_acquire(i8* %a) nounwind uwtable {
158*9880d681SAndroid Build Coastguard Workerentry:
159*9880d681SAndroid Build Coastguard Worker  atomicrmw or i8* %a, i8 0 acquire, !dbg !7
160*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
161*9880d681SAndroid Build Coastguard Worker}
162*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_or_acquire
163*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_or(i8* %a, i8 0, i32 2), !dbg
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xor_acquire(i8* %a) nounwind uwtable {
166*9880d681SAndroid Build Coastguard Workerentry:
167*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i8* %a, i8 0 acquire, !dbg !7
168*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
169*9880d681SAndroid Build Coastguard Worker}
170*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xor_acquire
171*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_xor(i8* %a, i8 0, i32 2), !dbg
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_nand_acquire(i8* %a) nounwind uwtable {
174*9880d681SAndroid Build Coastguard Workerentry:
175*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i8* %a, i8 0 acquire, !dbg !7
176*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_nand_acquire
179*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_nand(i8* %a, i8 0, i32 2), !dbg
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xchg_release(i8* %a) nounwind uwtable {
182*9880d681SAndroid Build Coastguard Workerentry:
183*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i8* %a, i8 0 release, !dbg !7
184*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
185*9880d681SAndroid Build Coastguard Worker}
186*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xchg_release
187*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_exchange(i8* %a, i8 0, i32 3), !dbg
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_add_release(i8* %a) nounwind uwtable {
190*9880d681SAndroid Build Coastguard Workerentry:
191*9880d681SAndroid Build Coastguard Worker  atomicrmw add i8* %a, i8 0 release, !dbg !7
192*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
193*9880d681SAndroid Build Coastguard Worker}
194*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_add_release
195*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_add(i8* %a, i8 0, i32 3), !dbg
196*9880d681SAndroid Build Coastguard Worker
197*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_sub_release(i8* %a) nounwind uwtable {
198*9880d681SAndroid Build Coastguard Workerentry:
199*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i8* %a, i8 0 release, !dbg !7
200*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
201*9880d681SAndroid Build Coastguard Worker}
202*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_sub_release
203*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_sub(i8* %a, i8 0, i32 3), !dbg
204*9880d681SAndroid Build Coastguard Worker
205*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_and_release(i8* %a) nounwind uwtable {
206*9880d681SAndroid Build Coastguard Workerentry:
207*9880d681SAndroid Build Coastguard Worker  atomicrmw and i8* %a, i8 0 release, !dbg !7
208*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
209*9880d681SAndroid Build Coastguard Worker}
210*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_and_release
211*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_and(i8* %a, i8 0, i32 3), !dbg
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_or_release(i8* %a) nounwind uwtable {
214*9880d681SAndroid Build Coastguard Workerentry:
215*9880d681SAndroid Build Coastguard Worker  atomicrmw or i8* %a, i8 0 release, !dbg !7
216*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
217*9880d681SAndroid Build Coastguard Worker}
218*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_or_release
219*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_or(i8* %a, i8 0, i32 3), !dbg
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xor_release(i8* %a) nounwind uwtable {
222*9880d681SAndroid Build Coastguard Workerentry:
223*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i8* %a, i8 0 release, !dbg !7
224*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
225*9880d681SAndroid Build Coastguard Worker}
226*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xor_release
227*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_xor(i8* %a, i8 0, i32 3), !dbg
228*9880d681SAndroid Build Coastguard Worker
229*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_nand_release(i8* %a) nounwind uwtable {
230*9880d681SAndroid Build Coastguard Workerentry:
231*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i8* %a, i8 0 release, !dbg !7
232*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
233*9880d681SAndroid Build Coastguard Worker}
234*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_nand_release
235*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_nand(i8* %a, i8 0, i32 3), !dbg
236*9880d681SAndroid Build Coastguard Worker
237*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xchg_acq_rel(i8* %a) nounwind uwtable {
238*9880d681SAndroid Build Coastguard Workerentry:
239*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i8* %a, i8 0 acq_rel, !dbg !7
240*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
241*9880d681SAndroid Build Coastguard Worker}
242*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xchg_acq_rel
243*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_exchange(i8* %a, i8 0, i32 4), !dbg
244*9880d681SAndroid Build Coastguard Worker
245*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_add_acq_rel(i8* %a) nounwind uwtable {
246*9880d681SAndroid Build Coastguard Workerentry:
247*9880d681SAndroid Build Coastguard Worker  atomicrmw add i8* %a, i8 0 acq_rel, !dbg !7
248*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_add_acq_rel
251*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_add(i8* %a, i8 0, i32 4), !dbg
252*9880d681SAndroid Build Coastguard Worker
253*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_sub_acq_rel(i8* %a) nounwind uwtable {
254*9880d681SAndroid Build Coastguard Workerentry:
255*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i8* %a, i8 0 acq_rel, !dbg !7
256*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
257*9880d681SAndroid Build Coastguard Worker}
258*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_sub_acq_rel
259*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_sub(i8* %a, i8 0, i32 4), !dbg
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_and_acq_rel(i8* %a) nounwind uwtable {
262*9880d681SAndroid Build Coastguard Workerentry:
263*9880d681SAndroid Build Coastguard Worker  atomicrmw and i8* %a, i8 0 acq_rel, !dbg !7
264*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
265*9880d681SAndroid Build Coastguard Worker}
266*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_and_acq_rel
267*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_and(i8* %a, i8 0, i32 4), !dbg
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_or_acq_rel(i8* %a) nounwind uwtable {
270*9880d681SAndroid Build Coastguard Workerentry:
271*9880d681SAndroid Build Coastguard Worker  atomicrmw or i8* %a, i8 0 acq_rel, !dbg !7
272*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
273*9880d681SAndroid Build Coastguard Worker}
274*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_or_acq_rel
275*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_or(i8* %a, i8 0, i32 4), !dbg
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xor_acq_rel(i8* %a) nounwind uwtable {
278*9880d681SAndroid Build Coastguard Workerentry:
279*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i8* %a, i8 0 acq_rel, !dbg !7
280*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
281*9880d681SAndroid Build Coastguard Worker}
282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xor_acq_rel
283*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_xor(i8* %a, i8 0, i32 4), !dbg
284*9880d681SAndroid Build Coastguard Worker
285*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_nand_acq_rel(i8* %a) nounwind uwtable {
286*9880d681SAndroid Build Coastguard Workerentry:
287*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i8* %a, i8 0 acq_rel, !dbg !7
288*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_nand_acq_rel
291*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_nand(i8* %a, i8 0, i32 4), !dbg
292*9880d681SAndroid Build Coastguard Worker
293*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xchg_seq_cst(i8* %a) nounwind uwtable {
294*9880d681SAndroid Build Coastguard Workerentry:
295*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i8* %a, i8 0 seq_cst, !dbg !7
296*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
297*9880d681SAndroid Build Coastguard Worker}
298*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xchg_seq_cst
299*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_exchange(i8* %a, i8 0, i32 5), !dbg
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_add_seq_cst(i8* %a) nounwind uwtable {
302*9880d681SAndroid Build Coastguard Workerentry:
303*9880d681SAndroid Build Coastguard Worker  atomicrmw add i8* %a, i8 0 seq_cst, !dbg !7
304*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_add_seq_cst
307*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_add(i8* %a, i8 0, i32 5), !dbg
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_sub_seq_cst(i8* %a) nounwind uwtable {
310*9880d681SAndroid Build Coastguard Workerentry:
311*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i8* %a, i8 0 seq_cst, !dbg !7
312*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
313*9880d681SAndroid Build Coastguard Worker}
314*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_sub_seq_cst
315*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_sub(i8* %a, i8 0, i32 5), !dbg
316*9880d681SAndroid Build Coastguard Worker
317*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_and_seq_cst(i8* %a) nounwind uwtable {
318*9880d681SAndroid Build Coastguard Workerentry:
319*9880d681SAndroid Build Coastguard Worker  atomicrmw and i8* %a, i8 0 seq_cst, !dbg !7
320*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
321*9880d681SAndroid Build Coastguard Worker}
322*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_and_seq_cst
323*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_and(i8* %a, i8 0, i32 5), !dbg
324*9880d681SAndroid Build Coastguard Worker
325*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_or_seq_cst(i8* %a) nounwind uwtable {
326*9880d681SAndroid Build Coastguard Workerentry:
327*9880d681SAndroid Build Coastguard Worker  atomicrmw or i8* %a, i8 0 seq_cst, !dbg !7
328*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
329*9880d681SAndroid Build Coastguard Worker}
330*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_or_seq_cst
331*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_or(i8* %a, i8 0, i32 5), !dbg
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_xor_seq_cst(i8* %a) nounwind uwtable {
334*9880d681SAndroid Build Coastguard Workerentry:
335*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i8* %a, i8 0 seq_cst, !dbg !7
336*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
337*9880d681SAndroid Build Coastguard Worker}
338*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_xor_seq_cst
339*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_xor(i8* %a, i8 0, i32 5), !dbg
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_nand_seq_cst(i8* %a) nounwind uwtable {
342*9880d681SAndroid Build Coastguard Workerentry:
343*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i8* %a, i8 0 seq_cst, !dbg !7
344*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
345*9880d681SAndroid Build Coastguard Worker}
346*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_nand_seq_cst
347*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_fetch_nand(i8* %a, i8 0, i32 5), !dbg
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_cas_monotonic(i8* %a) nounwind uwtable {
350*9880d681SAndroid Build Coastguard Workerentry:
351*9880d681SAndroid Build Coastguard Worker  cmpxchg i8* %a, i8 0, i8 1 monotonic monotonic, !dbg !7
352*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_cas_monotonic
355*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_compare_exchange_val(i8* %a, i8 0, i8 1, i32 0, i32 0), !dbg
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_cas_acquire(i8* %a) nounwind uwtable {
358*9880d681SAndroid Build Coastguard Workerentry:
359*9880d681SAndroid Build Coastguard Worker  cmpxchg i8* %a, i8 0, i8 1 acquire acquire, !dbg !7
360*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
361*9880d681SAndroid Build Coastguard Worker}
362*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_cas_acquire
363*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_compare_exchange_val(i8* %a, i8 0, i8 1, i32 2, i32 2), !dbg
364*9880d681SAndroid Build Coastguard Worker
365*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_cas_release(i8* %a) nounwind uwtable {
366*9880d681SAndroid Build Coastguard Workerentry:
367*9880d681SAndroid Build Coastguard Worker  cmpxchg i8* %a, i8 0, i8 1 release monotonic, !dbg !7
368*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
369*9880d681SAndroid Build Coastguard Worker}
370*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_cas_release
371*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_compare_exchange_val(i8* %a, i8 0, i8 1, i32 3, i32 0), !dbg
372*9880d681SAndroid Build Coastguard Worker
373*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_cas_acq_rel(i8* %a) nounwind uwtable {
374*9880d681SAndroid Build Coastguard Workerentry:
375*9880d681SAndroid Build Coastguard Worker  cmpxchg i8* %a, i8 0, i8 1 acq_rel acquire, !dbg !7
376*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
377*9880d681SAndroid Build Coastguard Worker}
378*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_cas_acq_rel
379*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_compare_exchange_val(i8* %a, i8 0, i8 1, i32 4, i32 2), !dbg
380*9880d681SAndroid Build Coastguard Worker
381*9880d681SAndroid Build Coastguard Workerdefine void @atomic8_cas_seq_cst(i8* %a) nounwind uwtable {
382*9880d681SAndroid Build Coastguard Workerentry:
383*9880d681SAndroid Build Coastguard Worker  cmpxchg i8* %a, i8 0, i8 1 seq_cst seq_cst, !dbg !7
384*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
385*9880d681SAndroid Build Coastguard Worker}
386*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic8_cas_seq_cst
387*9880d681SAndroid Build Coastguard Worker; CHECK: call i8 @__tsan_atomic8_compare_exchange_val(i8* %a, i8 0, i8 1, i32 5, i32 5), !dbg
388*9880d681SAndroid Build Coastguard Worker
389*9880d681SAndroid Build Coastguard Workerdefine i16 @atomic16_load_unordered(i16* %a) nounwind uwtable {
390*9880d681SAndroid Build Coastguard Workerentry:
391*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i16, i16* %a unordered, align 2, !dbg !7
392*9880d681SAndroid Build Coastguard Worker  ret i16 %0, !dbg !7
393*9880d681SAndroid Build Coastguard Worker}
394*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_load_unordered
395*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_load(i16* %a, i32 0), !dbg
396*9880d681SAndroid Build Coastguard Worker
397*9880d681SAndroid Build Coastguard Workerdefine i16 @atomic16_load_monotonic(i16* %a) nounwind uwtable {
398*9880d681SAndroid Build Coastguard Workerentry:
399*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i16, i16* %a monotonic, align 2, !dbg !7
400*9880d681SAndroid Build Coastguard Worker  ret i16 %0, !dbg !7
401*9880d681SAndroid Build Coastguard Worker}
402*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_load_monotonic
403*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_load(i16* %a, i32 0), !dbg
404*9880d681SAndroid Build Coastguard Worker
405*9880d681SAndroid Build Coastguard Workerdefine i16 @atomic16_load_acquire(i16* %a) nounwind uwtable {
406*9880d681SAndroid Build Coastguard Workerentry:
407*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i16, i16* %a acquire, align 2, !dbg !7
408*9880d681SAndroid Build Coastguard Worker  ret i16 %0, !dbg !7
409*9880d681SAndroid Build Coastguard Worker}
410*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_load_acquire
411*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_load(i16* %a, i32 2), !dbg
412*9880d681SAndroid Build Coastguard Worker
413*9880d681SAndroid Build Coastguard Workerdefine i16 @atomic16_load_seq_cst(i16* %a) nounwind uwtable {
414*9880d681SAndroid Build Coastguard Workerentry:
415*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i16, i16* %a seq_cst, align 2, !dbg !7
416*9880d681SAndroid Build Coastguard Worker  ret i16 %0, !dbg !7
417*9880d681SAndroid Build Coastguard Worker}
418*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_load_seq_cst
419*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_load(i16* %a, i32 5), !dbg
420*9880d681SAndroid Build Coastguard Worker
421*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_store_unordered(i16* %a) nounwind uwtable {
422*9880d681SAndroid Build Coastguard Workerentry:
423*9880d681SAndroid Build Coastguard Worker  store atomic i16 0, i16* %a unordered, align 2, !dbg !7
424*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
425*9880d681SAndroid Build Coastguard Worker}
426*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_store_unordered
427*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic16_store(i16* %a, i16 0, i32 0), !dbg
428*9880d681SAndroid Build Coastguard Worker
429*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_store_monotonic(i16* %a) nounwind uwtable {
430*9880d681SAndroid Build Coastguard Workerentry:
431*9880d681SAndroid Build Coastguard Worker  store atomic i16 0, i16* %a monotonic, align 2, !dbg !7
432*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
433*9880d681SAndroid Build Coastguard Worker}
434*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_store_monotonic
435*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic16_store(i16* %a, i16 0, i32 0), !dbg
436*9880d681SAndroid Build Coastguard Worker
437*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_store_release(i16* %a) nounwind uwtable {
438*9880d681SAndroid Build Coastguard Workerentry:
439*9880d681SAndroid Build Coastguard Worker  store atomic i16 0, i16* %a release, align 2, !dbg !7
440*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
441*9880d681SAndroid Build Coastguard Worker}
442*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_store_release
443*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic16_store(i16* %a, i16 0, i32 3), !dbg
444*9880d681SAndroid Build Coastguard Worker
445*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_store_seq_cst(i16* %a) nounwind uwtable {
446*9880d681SAndroid Build Coastguard Workerentry:
447*9880d681SAndroid Build Coastguard Worker  store atomic i16 0, i16* %a seq_cst, align 2, !dbg !7
448*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
449*9880d681SAndroid Build Coastguard Worker}
450*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_store_seq_cst
451*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic16_store(i16* %a, i16 0, i32 5), !dbg
452*9880d681SAndroid Build Coastguard Worker
453*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xchg_monotonic(i16* %a) nounwind uwtable {
454*9880d681SAndroid Build Coastguard Workerentry:
455*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i16* %a, i16 0 monotonic, !dbg !7
456*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
457*9880d681SAndroid Build Coastguard Worker}
458*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xchg_monotonic
459*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_exchange(i16* %a, i16 0, i32 0), !dbg
460*9880d681SAndroid Build Coastguard Worker
461*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_add_monotonic(i16* %a) nounwind uwtable {
462*9880d681SAndroid Build Coastguard Workerentry:
463*9880d681SAndroid Build Coastguard Worker  atomicrmw add i16* %a, i16 0 monotonic, !dbg !7
464*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
465*9880d681SAndroid Build Coastguard Worker}
466*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_add_monotonic
467*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_add(i16* %a, i16 0, i32 0), !dbg
468*9880d681SAndroid Build Coastguard Worker
469*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_sub_monotonic(i16* %a) nounwind uwtable {
470*9880d681SAndroid Build Coastguard Workerentry:
471*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i16* %a, i16 0 monotonic, !dbg !7
472*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
473*9880d681SAndroid Build Coastguard Worker}
474*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_sub_monotonic
475*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_sub(i16* %a, i16 0, i32 0), !dbg
476*9880d681SAndroid Build Coastguard Worker
477*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_and_monotonic(i16* %a) nounwind uwtable {
478*9880d681SAndroid Build Coastguard Workerentry:
479*9880d681SAndroid Build Coastguard Worker  atomicrmw and i16* %a, i16 0 monotonic, !dbg !7
480*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
481*9880d681SAndroid Build Coastguard Worker}
482*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_and_monotonic
483*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_and(i16* %a, i16 0, i32 0), !dbg
484*9880d681SAndroid Build Coastguard Worker
485*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_or_monotonic(i16* %a) nounwind uwtable {
486*9880d681SAndroid Build Coastguard Workerentry:
487*9880d681SAndroid Build Coastguard Worker  atomicrmw or i16* %a, i16 0 monotonic, !dbg !7
488*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
489*9880d681SAndroid Build Coastguard Worker}
490*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_or_monotonic
491*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_or(i16* %a, i16 0, i32 0), !dbg
492*9880d681SAndroid Build Coastguard Worker
493*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xor_monotonic(i16* %a) nounwind uwtable {
494*9880d681SAndroid Build Coastguard Workerentry:
495*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i16* %a, i16 0 monotonic, !dbg !7
496*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
497*9880d681SAndroid Build Coastguard Worker}
498*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xor_monotonic
499*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_xor(i16* %a, i16 0, i32 0), !dbg
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_nand_monotonic(i16* %a) nounwind uwtable {
502*9880d681SAndroid Build Coastguard Workerentry:
503*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i16* %a, i16 0 monotonic, !dbg !7
504*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
505*9880d681SAndroid Build Coastguard Worker}
506*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_nand_monotonic
507*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_nand(i16* %a, i16 0, i32 0), !dbg
508*9880d681SAndroid Build Coastguard Worker
509*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xchg_acquire(i16* %a) nounwind uwtable {
510*9880d681SAndroid Build Coastguard Workerentry:
511*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i16* %a, i16 0 acquire, !dbg !7
512*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
513*9880d681SAndroid Build Coastguard Worker}
514*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xchg_acquire
515*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_exchange(i16* %a, i16 0, i32 2), !dbg
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_add_acquire(i16* %a) nounwind uwtable {
518*9880d681SAndroid Build Coastguard Workerentry:
519*9880d681SAndroid Build Coastguard Worker  atomicrmw add i16* %a, i16 0 acquire, !dbg !7
520*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
521*9880d681SAndroid Build Coastguard Worker}
522*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_add_acquire
523*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_add(i16* %a, i16 0, i32 2), !dbg
524*9880d681SAndroid Build Coastguard Worker
525*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_sub_acquire(i16* %a) nounwind uwtable {
526*9880d681SAndroid Build Coastguard Workerentry:
527*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i16* %a, i16 0 acquire, !dbg !7
528*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
529*9880d681SAndroid Build Coastguard Worker}
530*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_sub_acquire
531*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_sub(i16* %a, i16 0, i32 2), !dbg
532*9880d681SAndroid Build Coastguard Worker
533*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_and_acquire(i16* %a) nounwind uwtable {
534*9880d681SAndroid Build Coastguard Workerentry:
535*9880d681SAndroid Build Coastguard Worker  atomicrmw and i16* %a, i16 0 acquire, !dbg !7
536*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
537*9880d681SAndroid Build Coastguard Worker}
538*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_and_acquire
539*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_and(i16* %a, i16 0, i32 2), !dbg
540*9880d681SAndroid Build Coastguard Worker
541*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_or_acquire(i16* %a) nounwind uwtable {
542*9880d681SAndroid Build Coastguard Workerentry:
543*9880d681SAndroid Build Coastguard Worker  atomicrmw or i16* %a, i16 0 acquire, !dbg !7
544*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
545*9880d681SAndroid Build Coastguard Worker}
546*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_or_acquire
547*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_or(i16* %a, i16 0, i32 2), !dbg
548*9880d681SAndroid Build Coastguard Worker
549*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xor_acquire(i16* %a) nounwind uwtable {
550*9880d681SAndroid Build Coastguard Workerentry:
551*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i16* %a, i16 0 acquire, !dbg !7
552*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
553*9880d681SAndroid Build Coastguard Worker}
554*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xor_acquire
555*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_xor(i16* %a, i16 0, i32 2), !dbg
556*9880d681SAndroid Build Coastguard Worker
557*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_nand_acquire(i16* %a) nounwind uwtable {
558*9880d681SAndroid Build Coastguard Workerentry:
559*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i16* %a, i16 0 acquire, !dbg !7
560*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
561*9880d681SAndroid Build Coastguard Worker}
562*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_nand_acquire
563*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_nand(i16* %a, i16 0, i32 2), !dbg
564*9880d681SAndroid Build Coastguard Worker
565*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xchg_release(i16* %a) nounwind uwtable {
566*9880d681SAndroid Build Coastguard Workerentry:
567*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i16* %a, i16 0 release, !dbg !7
568*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
569*9880d681SAndroid Build Coastguard Worker}
570*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xchg_release
571*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_exchange(i16* %a, i16 0, i32 3), !dbg
572*9880d681SAndroid Build Coastguard Worker
573*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_add_release(i16* %a) nounwind uwtable {
574*9880d681SAndroid Build Coastguard Workerentry:
575*9880d681SAndroid Build Coastguard Worker  atomicrmw add i16* %a, i16 0 release, !dbg !7
576*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
577*9880d681SAndroid Build Coastguard Worker}
578*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_add_release
579*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_add(i16* %a, i16 0, i32 3), !dbg
580*9880d681SAndroid Build Coastguard Worker
581*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_sub_release(i16* %a) nounwind uwtable {
582*9880d681SAndroid Build Coastguard Workerentry:
583*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i16* %a, i16 0 release, !dbg !7
584*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
585*9880d681SAndroid Build Coastguard Worker}
586*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_sub_release
587*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_sub(i16* %a, i16 0, i32 3), !dbg
588*9880d681SAndroid Build Coastguard Worker
589*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_and_release(i16* %a) nounwind uwtable {
590*9880d681SAndroid Build Coastguard Workerentry:
591*9880d681SAndroid Build Coastguard Worker  atomicrmw and i16* %a, i16 0 release, !dbg !7
592*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
593*9880d681SAndroid Build Coastguard Worker}
594*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_and_release
595*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_and(i16* %a, i16 0, i32 3), !dbg
596*9880d681SAndroid Build Coastguard Worker
597*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_or_release(i16* %a) nounwind uwtable {
598*9880d681SAndroid Build Coastguard Workerentry:
599*9880d681SAndroid Build Coastguard Worker  atomicrmw or i16* %a, i16 0 release, !dbg !7
600*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
601*9880d681SAndroid Build Coastguard Worker}
602*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_or_release
603*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_or(i16* %a, i16 0, i32 3), !dbg
604*9880d681SAndroid Build Coastguard Worker
605*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xor_release(i16* %a) nounwind uwtable {
606*9880d681SAndroid Build Coastguard Workerentry:
607*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i16* %a, i16 0 release, !dbg !7
608*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
609*9880d681SAndroid Build Coastguard Worker}
610*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xor_release
611*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_xor(i16* %a, i16 0, i32 3), !dbg
612*9880d681SAndroid Build Coastguard Worker
613*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_nand_release(i16* %a) nounwind uwtable {
614*9880d681SAndroid Build Coastguard Workerentry:
615*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i16* %a, i16 0 release, !dbg !7
616*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
617*9880d681SAndroid Build Coastguard Worker}
618*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_nand_release
619*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_nand(i16* %a, i16 0, i32 3), !dbg
620*9880d681SAndroid Build Coastguard Worker
621*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xchg_acq_rel(i16* %a) nounwind uwtable {
622*9880d681SAndroid Build Coastguard Workerentry:
623*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i16* %a, i16 0 acq_rel, !dbg !7
624*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
625*9880d681SAndroid Build Coastguard Worker}
626*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xchg_acq_rel
627*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_exchange(i16* %a, i16 0, i32 4), !dbg
628*9880d681SAndroid Build Coastguard Worker
629*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_add_acq_rel(i16* %a) nounwind uwtable {
630*9880d681SAndroid Build Coastguard Workerentry:
631*9880d681SAndroid Build Coastguard Worker  atomicrmw add i16* %a, i16 0 acq_rel, !dbg !7
632*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
633*9880d681SAndroid Build Coastguard Worker}
634*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_add_acq_rel
635*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_add(i16* %a, i16 0, i32 4), !dbg
636*9880d681SAndroid Build Coastguard Worker
637*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_sub_acq_rel(i16* %a) nounwind uwtable {
638*9880d681SAndroid Build Coastguard Workerentry:
639*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i16* %a, i16 0 acq_rel, !dbg !7
640*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
641*9880d681SAndroid Build Coastguard Worker}
642*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_sub_acq_rel
643*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_sub(i16* %a, i16 0, i32 4), !dbg
644*9880d681SAndroid Build Coastguard Worker
645*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_and_acq_rel(i16* %a) nounwind uwtable {
646*9880d681SAndroid Build Coastguard Workerentry:
647*9880d681SAndroid Build Coastguard Worker  atomicrmw and i16* %a, i16 0 acq_rel, !dbg !7
648*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
649*9880d681SAndroid Build Coastguard Worker}
650*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_and_acq_rel
651*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_and(i16* %a, i16 0, i32 4), !dbg
652*9880d681SAndroid Build Coastguard Worker
653*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_or_acq_rel(i16* %a) nounwind uwtable {
654*9880d681SAndroid Build Coastguard Workerentry:
655*9880d681SAndroid Build Coastguard Worker  atomicrmw or i16* %a, i16 0 acq_rel, !dbg !7
656*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
657*9880d681SAndroid Build Coastguard Worker}
658*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_or_acq_rel
659*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_or(i16* %a, i16 0, i32 4), !dbg
660*9880d681SAndroid Build Coastguard Worker
661*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xor_acq_rel(i16* %a) nounwind uwtable {
662*9880d681SAndroid Build Coastguard Workerentry:
663*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i16* %a, i16 0 acq_rel, !dbg !7
664*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
665*9880d681SAndroid Build Coastguard Worker}
666*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xor_acq_rel
667*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_xor(i16* %a, i16 0, i32 4), !dbg
668*9880d681SAndroid Build Coastguard Worker
669*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_nand_acq_rel(i16* %a) nounwind uwtable {
670*9880d681SAndroid Build Coastguard Workerentry:
671*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i16* %a, i16 0 acq_rel, !dbg !7
672*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
673*9880d681SAndroid Build Coastguard Worker}
674*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_nand_acq_rel
675*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_nand(i16* %a, i16 0, i32 4), !dbg
676*9880d681SAndroid Build Coastguard Worker
677*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xchg_seq_cst(i16* %a) nounwind uwtable {
678*9880d681SAndroid Build Coastguard Workerentry:
679*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i16* %a, i16 0 seq_cst, !dbg !7
680*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
681*9880d681SAndroid Build Coastguard Worker}
682*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xchg_seq_cst
683*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_exchange(i16* %a, i16 0, i32 5), !dbg
684*9880d681SAndroid Build Coastguard Worker
685*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_add_seq_cst(i16* %a) nounwind uwtable {
686*9880d681SAndroid Build Coastguard Workerentry:
687*9880d681SAndroid Build Coastguard Worker  atomicrmw add i16* %a, i16 0 seq_cst, !dbg !7
688*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
689*9880d681SAndroid Build Coastguard Worker}
690*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_add_seq_cst
691*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_add(i16* %a, i16 0, i32 5), !dbg
692*9880d681SAndroid Build Coastguard Worker
693*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_sub_seq_cst(i16* %a) nounwind uwtable {
694*9880d681SAndroid Build Coastguard Workerentry:
695*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i16* %a, i16 0 seq_cst, !dbg !7
696*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
697*9880d681SAndroid Build Coastguard Worker}
698*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_sub_seq_cst
699*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_sub(i16* %a, i16 0, i32 5), !dbg
700*9880d681SAndroid Build Coastguard Worker
701*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_and_seq_cst(i16* %a) nounwind uwtable {
702*9880d681SAndroid Build Coastguard Workerentry:
703*9880d681SAndroid Build Coastguard Worker  atomicrmw and i16* %a, i16 0 seq_cst, !dbg !7
704*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
705*9880d681SAndroid Build Coastguard Worker}
706*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_and_seq_cst
707*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_and(i16* %a, i16 0, i32 5), !dbg
708*9880d681SAndroid Build Coastguard Worker
709*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_or_seq_cst(i16* %a) nounwind uwtable {
710*9880d681SAndroid Build Coastguard Workerentry:
711*9880d681SAndroid Build Coastguard Worker  atomicrmw or i16* %a, i16 0 seq_cst, !dbg !7
712*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
713*9880d681SAndroid Build Coastguard Worker}
714*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_or_seq_cst
715*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_or(i16* %a, i16 0, i32 5), !dbg
716*9880d681SAndroid Build Coastguard Worker
717*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_xor_seq_cst(i16* %a) nounwind uwtable {
718*9880d681SAndroid Build Coastguard Workerentry:
719*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i16* %a, i16 0 seq_cst, !dbg !7
720*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
721*9880d681SAndroid Build Coastguard Worker}
722*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_xor_seq_cst
723*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_xor(i16* %a, i16 0, i32 5), !dbg
724*9880d681SAndroid Build Coastguard Worker
725*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_nand_seq_cst(i16* %a) nounwind uwtable {
726*9880d681SAndroid Build Coastguard Workerentry:
727*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i16* %a, i16 0 seq_cst, !dbg !7
728*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
729*9880d681SAndroid Build Coastguard Worker}
730*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_nand_seq_cst
731*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_fetch_nand(i16* %a, i16 0, i32 5), !dbg
732*9880d681SAndroid Build Coastguard Worker
733*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_cas_monotonic(i16* %a) nounwind uwtable {
734*9880d681SAndroid Build Coastguard Workerentry:
735*9880d681SAndroid Build Coastguard Worker  cmpxchg i16* %a, i16 0, i16 1 monotonic monotonic, !dbg !7
736*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
737*9880d681SAndroid Build Coastguard Worker}
738*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_cas_monotonic
739*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_compare_exchange_val(i16* %a, i16 0, i16 1, i32 0, i32 0), !dbg
740*9880d681SAndroid Build Coastguard Worker
741*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_cas_acquire(i16* %a) nounwind uwtable {
742*9880d681SAndroid Build Coastguard Workerentry:
743*9880d681SAndroid Build Coastguard Worker  cmpxchg i16* %a, i16 0, i16 1 acquire acquire, !dbg !7
744*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
745*9880d681SAndroid Build Coastguard Worker}
746*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_cas_acquire
747*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_compare_exchange_val(i16* %a, i16 0, i16 1, i32 2, i32 2), !dbg
748*9880d681SAndroid Build Coastguard Worker
749*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_cas_release(i16* %a) nounwind uwtable {
750*9880d681SAndroid Build Coastguard Workerentry:
751*9880d681SAndroid Build Coastguard Worker  cmpxchg i16* %a, i16 0, i16 1 release monotonic, !dbg !7
752*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
753*9880d681SAndroid Build Coastguard Worker}
754*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_cas_release
755*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_compare_exchange_val(i16* %a, i16 0, i16 1, i32 3, i32 0), !dbg
756*9880d681SAndroid Build Coastguard Worker
757*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_cas_acq_rel(i16* %a) nounwind uwtable {
758*9880d681SAndroid Build Coastguard Workerentry:
759*9880d681SAndroid Build Coastguard Worker  cmpxchg i16* %a, i16 0, i16 1 acq_rel acquire, !dbg !7
760*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
761*9880d681SAndroid Build Coastguard Worker}
762*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_cas_acq_rel
763*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_compare_exchange_val(i16* %a, i16 0, i16 1, i32 4, i32 2), !dbg
764*9880d681SAndroid Build Coastguard Worker
765*9880d681SAndroid Build Coastguard Workerdefine void @atomic16_cas_seq_cst(i16* %a) nounwind uwtable {
766*9880d681SAndroid Build Coastguard Workerentry:
767*9880d681SAndroid Build Coastguard Worker  cmpxchg i16* %a, i16 0, i16 1 seq_cst seq_cst, !dbg !7
768*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
769*9880d681SAndroid Build Coastguard Worker}
770*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic16_cas_seq_cst
771*9880d681SAndroid Build Coastguard Worker; CHECK: call i16 @__tsan_atomic16_compare_exchange_val(i16* %a, i16 0, i16 1, i32 5, i32 5), !dbg
772*9880d681SAndroid Build Coastguard Worker
773*9880d681SAndroid Build Coastguard Workerdefine i32 @atomic32_load_unordered(i32* %a) nounwind uwtable {
774*9880d681SAndroid Build Coastguard Workerentry:
775*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i32, i32* %a unordered, align 4, !dbg !7
776*9880d681SAndroid Build Coastguard Worker  ret i32 %0, !dbg !7
777*9880d681SAndroid Build Coastguard Worker}
778*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_load_unordered
779*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_load(i32* %a, i32 0), !dbg
780*9880d681SAndroid Build Coastguard Worker
781*9880d681SAndroid Build Coastguard Workerdefine i32 @atomic32_load_monotonic(i32* %a) nounwind uwtable {
782*9880d681SAndroid Build Coastguard Workerentry:
783*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i32, i32* %a monotonic, align 4, !dbg !7
784*9880d681SAndroid Build Coastguard Worker  ret i32 %0, !dbg !7
785*9880d681SAndroid Build Coastguard Worker}
786*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_load_monotonic
787*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_load(i32* %a, i32 0), !dbg
788*9880d681SAndroid Build Coastguard Worker
789*9880d681SAndroid Build Coastguard Workerdefine i32 @atomic32_load_acquire(i32* %a) nounwind uwtable {
790*9880d681SAndroid Build Coastguard Workerentry:
791*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i32, i32* %a acquire, align 4, !dbg !7
792*9880d681SAndroid Build Coastguard Worker  ret i32 %0, !dbg !7
793*9880d681SAndroid Build Coastguard Worker}
794*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_load_acquire
795*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_load(i32* %a, i32 2), !dbg
796*9880d681SAndroid Build Coastguard Worker
797*9880d681SAndroid Build Coastguard Workerdefine i32 @atomic32_load_seq_cst(i32* %a) nounwind uwtable {
798*9880d681SAndroid Build Coastguard Workerentry:
799*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i32, i32* %a seq_cst, align 4, !dbg !7
800*9880d681SAndroid Build Coastguard Worker  ret i32 %0, !dbg !7
801*9880d681SAndroid Build Coastguard Worker}
802*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_load_seq_cst
803*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_load(i32* %a, i32 5), !dbg
804*9880d681SAndroid Build Coastguard Worker
805*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_store_unordered(i32* %a) nounwind uwtable {
806*9880d681SAndroid Build Coastguard Workerentry:
807*9880d681SAndroid Build Coastguard Worker  store atomic i32 0, i32* %a unordered, align 4, !dbg !7
808*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
809*9880d681SAndroid Build Coastguard Worker}
810*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_store_unordered
811*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic32_store(i32* %a, i32 0, i32 0), !dbg
812*9880d681SAndroid Build Coastguard Worker
813*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_store_monotonic(i32* %a) nounwind uwtable {
814*9880d681SAndroid Build Coastguard Workerentry:
815*9880d681SAndroid Build Coastguard Worker  store atomic i32 0, i32* %a monotonic, align 4, !dbg !7
816*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
817*9880d681SAndroid Build Coastguard Worker}
818*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_store_monotonic
819*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic32_store(i32* %a, i32 0, i32 0), !dbg
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_store_release(i32* %a) nounwind uwtable {
822*9880d681SAndroid Build Coastguard Workerentry:
823*9880d681SAndroid Build Coastguard Worker  store atomic i32 0, i32* %a release, align 4, !dbg !7
824*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
825*9880d681SAndroid Build Coastguard Worker}
826*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_store_release
827*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic32_store(i32* %a, i32 0, i32 3), !dbg
828*9880d681SAndroid Build Coastguard Worker
829*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_store_seq_cst(i32* %a) nounwind uwtable {
830*9880d681SAndroid Build Coastguard Workerentry:
831*9880d681SAndroid Build Coastguard Worker  store atomic i32 0, i32* %a seq_cst, align 4, !dbg !7
832*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
833*9880d681SAndroid Build Coastguard Worker}
834*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_store_seq_cst
835*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic32_store(i32* %a, i32 0, i32 5), !dbg
836*9880d681SAndroid Build Coastguard Worker
837*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xchg_monotonic(i32* %a) nounwind uwtable {
838*9880d681SAndroid Build Coastguard Workerentry:
839*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i32* %a, i32 0 monotonic, !dbg !7
840*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
841*9880d681SAndroid Build Coastguard Worker}
842*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xchg_monotonic
843*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_exchange(i32* %a, i32 0, i32 0), !dbg
844*9880d681SAndroid Build Coastguard Worker
845*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_add_monotonic(i32* %a) nounwind uwtable {
846*9880d681SAndroid Build Coastguard Workerentry:
847*9880d681SAndroid Build Coastguard Worker  atomicrmw add i32* %a, i32 0 monotonic, !dbg !7
848*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
849*9880d681SAndroid Build Coastguard Worker}
850*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_add_monotonic
851*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_add(i32* %a, i32 0, i32 0), !dbg
852*9880d681SAndroid Build Coastguard Worker
853*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_sub_monotonic(i32* %a) nounwind uwtable {
854*9880d681SAndroid Build Coastguard Workerentry:
855*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i32* %a, i32 0 monotonic, !dbg !7
856*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
857*9880d681SAndroid Build Coastguard Worker}
858*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_sub_monotonic
859*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_sub(i32* %a, i32 0, i32 0), !dbg
860*9880d681SAndroid Build Coastguard Worker
861*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_and_monotonic(i32* %a) nounwind uwtable {
862*9880d681SAndroid Build Coastguard Workerentry:
863*9880d681SAndroid Build Coastguard Worker  atomicrmw and i32* %a, i32 0 monotonic, !dbg !7
864*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
865*9880d681SAndroid Build Coastguard Worker}
866*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_and_monotonic
867*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_and(i32* %a, i32 0, i32 0), !dbg
868*9880d681SAndroid Build Coastguard Worker
869*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_or_monotonic(i32* %a) nounwind uwtable {
870*9880d681SAndroid Build Coastguard Workerentry:
871*9880d681SAndroid Build Coastguard Worker  atomicrmw or i32* %a, i32 0 monotonic, !dbg !7
872*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
873*9880d681SAndroid Build Coastguard Worker}
874*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_or_monotonic
875*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_or(i32* %a, i32 0, i32 0), !dbg
876*9880d681SAndroid Build Coastguard Worker
877*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xor_monotonic(i32* %a) nounwind uwtable {
878*9880d681SAndroid Build Coastguard Workerentry:
879*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i32* %a, i32 0 monotonic, !dbg !7
880*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
881*9880d681SAndroid Build Coastguard Worker}
882*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xor_monotonic
883*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_xor(i32* %a, i32 0, i32 0), !dbg
884*9880d681SAndroid Build Coastguard Worker
885*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_nand_monotonic(i32* %a) nounwind uwtable {
886*9880d681SAndroid Build Coastguard Workerentry:
887*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i32* %a, i32 0 monotonic, !dbg !7
888*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
889*9880d681SAndroid Build Coastguard Worker}
890*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_nand_monotonic
891*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_nand(i32* %a, i32 0, i32 0), !dbg
892*9880d681SAndroid Build Coastguard Worker
893*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xchg_acquire(i32* %a) nounwind uwtable {
894*9880d681SAndroid Build Coastguard Workerentry:
895*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i32* %a, i32 0 acquire, !dbg !7
896*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
897*9880d681SAndroid Build Coastguard Worker}
898*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xchg_acquire
899*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_exchange(i32* %a, i32 0, i32 2), !dbg
900*9880d681SAndroid Build Coastguard Worker
901*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_add_acquire(i32* %a) nounwind uwtable {
902*9880d681SAndroid Build Coastguard Workerentry:
903*9880d681SAndroid Build Coastguard Worker  atomicrmw add i32* %a, i32 0 acquire, !dbg !7
904*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
905*9880d681SAndroid Build Coastguard Worker}
906*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_add_acquire
907*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_add(i32* %a, i32 0, i32 2), !dbg
908*9880d681SAndroid Build Coastguard Worker
909*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_sub_acquire(i32* %a) nounwind uwtable {
910*9880d681SAndroid Build Coastguard Workerentry:
911*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i32* %a, i32 0 acquire, !dbg !7
912*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
913*9880d681SAndroid Build Coastguard Worker}
914*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_sub_acquire
915*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_sub(i32* %a, i32 0, i32 2), !dbg
916*9880d681SAndroid Build Coastguard Worker
917*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_and_acquire(i32* %a) nounwind uwtable {
918*9880d681SAndroid Build Coastguard Workerentry:
919*9880d681SAndroid Build Coastguard Worker  atomicrmw and i32* %a, i32 0 acquire, !dbg !7
920*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
921*9880d681SAndroid Build Coastguard Worker}
922*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_and_acquire
923*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_and(i32* %a, i32 0, i32 2), !dbg
924*9880d681SAndroid Build Coastguard Worker
925*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_or_acquire(i32* %a) nounwind uwtable {
926*9880d681SAndroid Build Coastguard Workerentry:
927*9880d681SAndroid Build Coastguard Worker  atomicrmw or i32* %a, i32 0 acquire, !dbg !7
928*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
929*9880d681SAndroid Build Coastguard Worker}
930*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_or_acquire
931*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_or(i32* %a, i32 0, i32 2), !dbg
932*9880d681SAndroid Build Coastguard Worker
933*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xor_acquire(i32* %a) nounwind uwtable {
934*9880d681SAndroid Build Coastguard Workerentry:
935*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i32* %a, i32 0 acquire, !dbg !7
936*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
937*9880d681SAndroid Build Coastguard Worker}
938*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xor_acquire
939*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_xor(i32* %a, i32 0, i32 2), !dbg
940*9880d681SAndroid Build Coastguard Worker
941*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_nand_acquire(i32* %a) nounwind uwtable {
942*9880d681SAndroid Build Coastguard Workerentry:
943*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i32* %a, i32 0 acquire, !dbg !7
944*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
945*9880d681SAndroid Build Coastguard Worker}
946*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_nand_acquire
947*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_nand(i32* %a, i32 0, i32 2), !dbg
948*9880d681SAndroid Build Coastguard Worker
949*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xchg_release(i32* %a) nounwind uwtable {
950*9880d681SAndroid Build Coastguard Workerentry:
951*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i32* %a, i32 0 release, !dbg !7
952*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
953*9880d681SAndroid Build Coastguard Worker}
954*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xchg_release
955*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_exchange(i32* %a, i32 0, i32 3), !dbg
956*9880d681SAndroid Build Coastguard Worker
957*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_add_release(i32* %a) nounwind uwtable {
958*9880d681SAndroid Build Coastguard Workerentry:
959*9880d681SAndroid Build Coastguard Worker  atomicrmw add i32* %a, i32 0 release, !dbg !7
960*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
961*9880d681SAndroid Build Coastguard Worker}
962*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_add_release
963*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_add(i32* %a, i32 0, i32 3), !dbg
964*9880d681SAndroid Build Coastguard Worker
965*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_sub_release(i32* %a) nounwind uwtable {
966*9880d681SAndroid Build Coastguard Workerentry:
967*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i32* %a, i32 0 release, !dbg !7
968*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
969*9880d681SAndroid Build Coastguard Worker}
970*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_sub_release
971*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_sub(i32* %a, i32 0, i32 3), !dbg
972*9880d681SAndroid Build Coastguard Worker
973*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_and_release(i32* %a) nounwind uwtable {
974*9880d681SAndroid Build Coastguard Workerentry:
975*9880d681SAndroid Build Coastguard Worker  atomicrmw and i32* %a, i32 0 release, !dbg !7
976*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
977*9880d681SAndroid Build Coastguard Worker}
978*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_and_release
979*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_and(i32* %a, i32 0, i32 3), !dbg
980*9880d681SAndroid Build Coastguard Worker
981*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_or_release(i32* %a) nounwind uwtable {
982*9880d681SAndroid Build Coastguard Workerentry:
983*9880d681SAndroid Build Coastguard Worker  atomicrmw or i32* %a, i32 0 release, !dbg !7
984*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
985*9880d681SAndroid Build Coastguard Worker}
986*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_or_release
987*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_or(i32* %a, i32 0, i32 3), !dbg
988*9880d681SAndroid Build Coastguard Worker
989*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xor_release(i32* %a) nounwind uwtable {
990*9880d681SAndroid Build Coastguard Workerentry:
991*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i32* %a, i32 0 release, !dbg !7
992*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
993*9880d681SAndroid Build Coastguard Worker}
994*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xor_release
995*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_xor(i32* %a, i32 0, i32 3), !dbg
996*9880d681SAndroid Build Coastguard Worker
997*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_nand_release(i32* %a) nounwind uwtable {
998*9880d681SAndroid Build Coastguard Workerentry:
999*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i32* %a, i32 0 release, !dbg !7
1000*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1001*9880d681SAndroid Build Coastguard Worker}
1002*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_nand_release
1003*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_nand(i32* %a, i32 0, i32 3), !dbg
1004*9880d681SAndroid Build Coastguard Worker
1005*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xchg_acq_rel(i32* %a) nounwind uwtable {
1006*9880d681SAndroid Build Coastguard Workerentry:
1007*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i32* %a, i32 0 acq_rel, !dbg !7
1008*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1009*9880d681SAndroid Build Coastguard Worker}
1010*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xchg_acq_rel
1011*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_exchange(i32* %a, i32 0, i32 4), !dbg
1012*9880d681SAndroid Build Coastguard Worker
1013*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_add_acq_rel(i32* %a) nounwind uwtable {
1014*9880d681SAndroid Build Coastguard Workerentry:
1015*9880d681SAndroid Build Coastguard Worker  atomicrmw add i32* %a, i32 0 acq_rel, !dbg !7
1016*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1017*9880d681SAndroid Build Coastguard Worker}
1018*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_add_acq_rel
1019*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_add(i32* %a, i32 0, i32 4), !dbg
1020*9880d681SAndroid Build Coastguard Worker
1021*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_sub_acq_rel(i32* %a) nounwind uwtable {
1022*9880d681SAndroid Build Coastguard Workerentry:
1023*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i32* %a, i32 0 acq_rel, !dbg !7
1024*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1025*9880d681SAndroid Build Coastguard Worker}
1026*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_sub_acq_rel
1027*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_sub(i32* %a, i32 0, i32 4), !dbg
1028*9880d681SAndroid Build Coastguard Worker
1029*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_and_acq_rel(i32* %a) nounwind uwtable {
1030*9880d681SAndroid Build Coastguard Workerentry:
1031*9880d681SAndroid Build Coastguard Worker  atomicrmw and i32* %a, i32 0 acq_rel, !dbg !7
1032*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1033*9880d681SAndroid Build Coastguard Worker}
1034*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_and_acq_rel
1035*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_and(i32* %a, i32 0, i32 4), !dbg
1036*9880d681SAndroid Build Coastguard Worker
1037*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_or_acq_rel(i32* %a) nounwind uwtable {
1038*9880d681SAndroid Build Coastguard Workerentry:
1039*9880d681SAndroid Build Coastguard Worker  atomicrmw or i32* %a, i32 0 acq_rel, !dbg !7
1040*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1041*9880d681SAndroid Build Coastguard Worker}
1042*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_or_acq_rel
1043*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_or(i32* %a, i32 0, i32 4), !dbg
1044*9880d681SAndroid Build Coastguard Worker
1045*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xor_acq_rel(i32* %a) nounwind uwtable {
1046*9880d681SAndroid Build Coastguard Workerentry:
1047*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i32* %a, i32 0 acq_rel, !dbg !7
1048*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1049*9880d681SAndroid Build Coastguard Worker}
1050*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xor_acq_rel
1051*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_xor(i32* %a, i32 0, i32 4), !dbg
1052*9880d681SAndroid Build Coastguard Worker
1053*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_nand_acq_rel(i32* %a) nounwind uwtable {
1054*9880d681SAndroid Build Coastguard Workerentry:
1055*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i32* %a, i32 0 acq_rel, !dbg !7
1056*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1057*9880d681SAndroid Build Coastguard Worker}
1058*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_nand_acq_rel
1059*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_nand(i32* %a, i32 0, i32 4), !dbg
1060*9880d681SAndroid Build Coastguard Worker
1061*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xchg_seq_cst(i32* %a) nounwind uwtable {
1062*9880d681SAndroid Build Coastguard Workerentry:
1063*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i32* %a, i32 0 seq_cst, !dbg !7
1064*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1065*9880d681SAndroid Build Coastguard Worker}
1066*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xchg_seq_cst
1067*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_exchange(i32* %a, i32 0, i32 5), !dbg
1068*9880d681SAndroid Build Coastguard Worker
1069*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_add_seq_cst(i32* %a) nounwind uwtable {
1070*9880d681SAndroid Build Coastguard Workerentry:
1071*9880d681SAndroid Build Coastguard Worker  atomicrmw add i32* %a, i32 0 seq_cst, !dbg !7
1072*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1073*9880d681SAndroid Build Coastguard Worker}
1074*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_add_seq_cst
1075*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_add(i32* %a, i32 0, i32 5), !dbg
1076*9880d681SAndroid Build Coastguard Worker
1077*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_sub_seq_cst(i32* %a) nounwind uwtable {
1078*9880d681SAndroid Build Coastguard Workerentry:
1079*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i32* %a, i32 0 seq_cst, !dbg !7
1080*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1081*9880d681SAndroid Build Coastguard Worker}
1082*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_sub_seq_cst
1083*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_sub(i32* %a, i32 0, i32 5), !dbg
1084*9880d681SAndroid Build Coastguard Worker
1085*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_and_seq_cst(i32* %a) nounwind uwtable {
1086*9880d681SAndroid Build Coastguard Workerentry:
1087*9880d681SAndroid Build Coastguard Worker  atomicrmw and i32* %a, i32 0 seq_cst, !dbg !7
1088*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1089*9880d681SAndroid Build Coastguard Worker}
1090*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_and_seq_cst
1091*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_and(i32* %a, i32 0, i32 5), !dbg
1092*9880d681SAndroid Build Coastguard Worker
1093*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_or_seq_cst(i32* %a) nounwind uwtable {
1094*9880d681SAndroid Build Coastguard Workerentry:
1095*9880d681SAndroid Build Coastguard Worker  atomicrmw or i32* %a, i32 0 seq_cst, !dbg !7
1096*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1097*9880d681SAndroid Build Coastguard Worker}
1098*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_or_seq_cst
1099*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_or(i32* %a, i32 0, i32 5), !dbg
1100*9880d681SAndroid Build Coastguard Worker
1101*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_xor_seq_cst(i32* %a) nounwind uwtable {
1102*9880d681SAndroid Build Coastguard Workerentry:
1103*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i32* %a, i32 0 seq_cst, !dbg !7
1104*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1105*9880d681SAndroid Build Coastguard Worker}
1106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_xor_seq_cst
1107*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_xor(i32* %a, i32 0, i32 5), !dbg
1108*9880d681SAndroid Build Coastguard Worker
1109*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_nand_seq_cst(i32* %a) nounwind uwtable {
1110*9880d681SAndroid Build Coastguard Workerentry:
1111*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i32* %a, i32 0 seq_cst, !dbg !7
1112*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1113*9880d681SAndroid Build Coastguard Worker}
1114*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_nand_seq_cst
1115*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_fetch_nand(i32* %a, i32 0, i32 5), !dbg
1116*9880d681SAndroid Build Coastguard Worker
1117*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_cas_monotonic(i32* %a) nounwind uwtable {
1118*9880d681SAndroid Build Coastguard Workerentry:
1119*9880d681SAndroid Build Coastguard Worker  cmpxchg i32* %a, i32 0, i32 1 monotonic monotonic, !dbg !7
1120*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1121*9880d681SAndroid Build Coastguard Worker}
1122*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_cas_monotonic
1123*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_compare_exchange_val(i32* %a, i32 0, i32 1, i32 0, i32 0), !dbg
1124*9880d681SAndroid Build Coastguard Worker
1125*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_cas_acquire(i32* %a) nounwind uwtable {
1126*9880d681SAndroid Build Coastguard Workerentry:
1127*9880d681SAndroid Build Coastguard Worker  cmpxchg i32* %a, i32 0, i32 1 acquire acquire, !dbg !7
1128*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1129*9880d681SAndroid Build Coastguard Worker}
1130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_cas_acquire
1131*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_compare_exchange_val(i32* %a, i32 0, i32 1, i32 2, i32 2), !dbg
1132*9880d681SAndroid Build Coastguard Worker
1133*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_cas_release(i32* %a) nounwind uwtable {
1134*9880d681SAndroid Build Coastguard Workerentry:
1135*9880d681SAndroid Build Coastguard Worker  cmpxchg i32* %a, i32 0, i32 1 release monotonic, !dbg !7
1136*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1137*9880d681SAndroid Build Coastguard Worker}
1138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_cas_release
1139*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_compare_exchange_val(i32* %a, i32 0, i32 1, i32 3, i32 0), !dbg
1140*9880d681SAndroid Build Coastguard Worker
1141*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_cas_acq_rel(i32* %a) nounwind uwtable {
1142*9880d681SAndroid Build Coastguard Workerentry:
1143*9880d681SAndroid Build Coastguard Worker  cmpxchg i32* %a, i32 0, i32 1 acq_rel acquire, !dbg !7
1144*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1145*9880d681SAndroid Build Coastguard Worker}
1146*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_cas_acq_rel
1147*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_compare_exchange_val(i32* %a, i32 0, i32 1, i32 4, i32 2), !dbg
1148*9880d681SAndroid Build Coastguard Worker
1149*9880d681SAndroid Build Coastguard Workerdefine void @atomic32_cas_seq_cst(i32* %a) nounwind uwtable {
1150*9880d681SAndroid Build Coastguard Workerentry:
1151*9880d681SAndroid Build Coastguard Worker  cmpxchg i32* %a, i32 0, i32 1 seq_cst seq_cst, !dbg !7
1152*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1153*9880d681SAndroid Build Coastguard Worker}
1154*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic32_cas_seq_cst
1155*9880d681SAndroid Build Coastguard Worker; CHECK: call i32 @__tsan_atomic32_compare_exchange_val(i32* %a, i32 0, i32 1, i32 5, i32 5), !dbg
1156*9880d681SAndroid Build Coastguard Worker
1157*9880d681SAndroid Build Coastguard Workerdefine i64 @atomic64_load_unordered(i64* %a) nounwind uwtable {
1158*9880d681SAndroid Build Coastguard Workerentry:
1159*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i64, i64* %a unordered, align 8, !dbg !7
1160*9880d681SAndroid Build Coastguard Worker  ret i64 %0, !dbg !7
1161*9880d681SAndroid Build Coastguard Worker}
1162*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_load_unordered
1163*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_load(i64* %a, i32 0), !dbg
1164*9880d681SAndroid Build Coastguard Worker
1165*9880d681SAndroid Build Coastguard Workerdefine i64 @atomic64_load_monotonic(i64* %a) nounwind uwtable {
1166*9880d681SAndroid Build Coastguard Workerentry:
1167*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i64, i64* %a monotonic, align 8, !dbg !7
1168*9880d681SAndroid Build Coastguard Worker  ret i64 %0, !dbg !7
1169*9880d681SAndroid Build Coastguard Worker}
1170*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_load_monotonic
1171*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_load(i64* %a, i32 0), !dbg
1172*9880d681SAndroid Build Coastguard Worker
1173*9880d681SAndroid Build Coastguard Workerdefine i64 @atomic64_load_acquire(i64* %a) nounwind uwtable {
1174*9880d681SAndroid Build Coastguard Workerentry:
1175*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i64, i64* %a acquire, align 8, !dbg !7
1176*9880d681SAndroid Build Coastguard Worker  ret i64 %0, !dbg !7
1177*9880d681SAndroid Build Coastguard Worker}
1178*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_load_acquire
1179*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_load(i64* %a, i32 2), !dbg
1180*9880d681SAndroid Build Coastguard Worker
1181*9880d681SAndroid Build Coastguard Workerdefine i64 @atomic64_load_seq_cst(i64* %a) nounwind uwtable {
1182*9880d681SAndroid Build Coastguard Workerentry:
1183*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i64, i64* %a seq_cst, align 8, !dbg !7
1184*9880d681SAndroid Build Coastguard Worker  ret i64 %0, !dbg !7
1185*9880d681SAndroid Build Coastguard Worker}
1186*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_load_seq_cst
1187*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_load(i64* %a, i32 5), !dbg
1188*9880d681SAndroid Build Coastguard Worker
1189*9880d681SAndroid Build Coastguard Workerdefine i8* @atomic64_load_seq_cst_ptr_ty(i8** %a) nounwind uwtable {
1190*9880d681SAndroid Build Coastguard Workerentry:
1191*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i8*, i8** %a seq_cst, align 8, !dbg !7
1192*9880d681SAndroid Build Coastguard Worker  ret i8* %0, !dbg !7
1193*9880d681SAndroid Build Coastguard Worker}
1194*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_load_seq_cst
1195*9880d681SAndroid Build Coastguard Worker; CHECK: bitcast i8** %{{.+}} to i64*
1196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call i64 @__tsan_atomic64_load(i64* %{{.+}}, i32 5), !dbg
1197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: inttoptr i64 %{{.+}} to i8*
1198*9880d681SAndroid Build Coastguard Worker
1199*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_store_unordered(i64* %a) nounwind uwtable {
1200*9880d681SAndroid Build Coastguard Workerentry:
1201*9880d681SAndroid Build Coastguard Worker  store atomic i64 0, i64* %a unordered, align 8, !dbg !7
1202*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1203*9880d681SAndroid Build Coastguard Worker}
1204*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_store_unordered
1205*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic64_store(i64* %a, i64 0, i32 0), !dbg
1206*9880d681SAndroid Build Coastguard Worker
1207*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_store_monotonic(i64* %a) nounwind uwtable {
1208*9880d681SAndroid Build Coastguard Workerentry:
1209*9880d681SAndroid Build Coastguard Worker  store atomic i64 0, i64* %a monotonic, align 8, !dbg !7
1210*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1211*9880d681SAndroid Build Coastguard Worker}
1212*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_store_monotonic
1213*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic64_store(i64* %a, i64 0, i32 0), !dbg
1214*9880d681SAndroid Build Coastguard Worker
1215*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_store_release(i64* %a) nounwind uwtable {
1216*9880d681SAndroid Build Coastguard Workerentry:
1217*9880d681SAndroid Build Coastguard Worker  store atomic i64 0, i64* %a release, align 8, !dbg !7
1218*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1219*9880d681SAndroid Build Coastguard Worker}
1220*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_store_release
1221*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic64_store(i64* %a, i64 0, i32 3), !dbg
1222*9880d681SAndroid Build Coastguard Worker
1223*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_store_seq_cst(i64* %a) nounwind uwtable {
1224*9880d681SAndroid Build Coastguard Workerentry:
1225*9880d681SAndroid Build Coastguard Worker  store atomic i64 0, i64* %a seq_cst, align 8, !dbg !7
1226*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1227*9880d681SAndroid Build Coastguard Worker}
1228*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_store_seq_cst
1229*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic64_store(i64* %a, i64 0, i32 5), !dbg
1230*9880d681SAndroid Build Coastguard Worker
1231*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_store_seq_cst_ptr_ty(i8** %a, i8* %v) nounwind uwtable {
1232*9880d681SAndroid Build Coastguard Workerentry:
1233*9880d681SAndroid Build Coastguard Worker  store atomic i8* %v, i8** %a seq_cst, align 8, !dbg !7
1234*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1235*9880d681SAndroid Build Coastguard Worker}
1236*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_store_seq_cst
1237*9880d681SAndroid Build Coastguard Worker; CHECK: %{{.*}} = bitcast i8** %{{.*}} to i64*
1238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %{{.*}} = ptrtoint i8* %{{.*}} to i64
1239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @__tsan_atomic64_store(i64* %{{.*}}, i64 %{{.*}}, i32 5), !dbg
1240*9880d681SAndroid Build Coastguard Worker
1241*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xchg_monotonic(i64* %a) nounwind uwtable {
1242*9880d681SAndroid Build Coastguard Workerentry:
1243*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i64* %a, i64 0 monotonic, !dbg !7
1244*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1245*9880d681SAndroid Build Coastguard Worker}
1246*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xchg_monotonic
1247*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_exchange(i64* %a, i64 0, i32 0), !dbg
1248*9880d681SAndroid Build Coastguard Worker
1249*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_add_monotonic(i64* %a) nounwind uwtable {
1250*9880d681SAndroid Build Coastguard Workerentry:
1251*9880d681SAndroid Build Coastguard Worker  atomicrmw add i64* %a, i64 0 monotonic, !dbg !7
1252*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1253*9880d681SAndroid Build Coastguard Worker}
1254*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_add_monotonic
1255*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_add(i64* %a, i64 0, i32 0), !dbg
1256*9880d681SAndroid Build Coastguard Worker
1257*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_sub_monotonic(i64* %a) nounwind uwtable {
1258*9880d681SAndroid Build Coastguard Workerentry:
1259*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i64* %a, i64 0 monotonic, !dbg !7
1260*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1261*9880d681SAndroid Build Coastguard Worker}
1262*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_sub_monotonic
1263*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_sub(i64* %a, i64 0, i32 0), !dbg
1264*9880d681SAndroid Build Coastguard Worker
1265*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_and_monotonic(i64* %a) nounwind uwtable {
1266*9880d681SAndroid Build Coastguard Workerentry:
1267*9880d681SAndroid Build Coastguard Worker  atomicrmw and i64* %a, i64 0 monotonic, !dbg !7
1268*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1269*9880d681SAndroid Build Coastguard Worker}
1270*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_and_monotonic
1271*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_and(i64* %a, i64 0, i32 0), !dbg
1272*9880d681SAndroid Build Coastguard Worker
1273*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_or_monotonic(i64* %a) nounwind uwtable {
1274*9880d681SAndroid Build Coastguard Workerentry:
1275*9880d681SAndroid Build Coastguard Worker  atomicrmw or i64* %a, i64 0 monotonic, !dbg !7
1276*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1277*9880d681SAndroid Build Coastguard Worker}
1278*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_or_monotonic
1279*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_or(i64* %a, i64 0, i32 0), !dbg
1280*9880d681SAndroid Build Coastguard Worker
1281*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xor_monotonic(i64* %a) nounwind uwtable {
1282*9880d681SAndroid Build Coastguard Workerentry:
1283*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i64* %a, i64 0 monotonic, !dbg !7
1284*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1285*9880d681SAndroid Build Coastguard Worker}
1286*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xor_monotonic
1287*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_xor(i64* %a, i64 0, i32 0), !dbg
1288*9880d681SAndroid Build Coastguard Worker
1289*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_nand_monotonic(i64* %a) nounwind uwtable {
1290*9880d681SAndroid Build Coastguard Workerentry:
1291*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i64* %a, i64 0 monotonic, !dbg !7
1292*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1293*9880d681SAndroid Build Coastguard Worker}
1294*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_nand_monotonic
1295*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_nand(i64* %a, i64 0, i32 0), !dbg
1296*9880d681SAndroid Build Coastguard Worker
1297*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xchg_acquire(i64* %a) nounwind uwtable {
1298*9880d681SAndroid Build Coastguard Workerentry:
1299*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i64* %a, i64 0 acquire, !dbg !7
1300*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1301*9880d681SAndroid Build Coastguard Worker}
1302*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xchg_acquire
1303*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_exchange(i64* %a, i64 0, i32 2), !dbg
1304*9880d681SAndroid Build Coastguard Worker
1305*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_add_acquire(i64* %a) nounwind uwtable {
1306*9880d681SAndroid Build Coastguard Workerentry:
1307*9880d681SAndroid Build Coastguard Worker  atomicrmw add i64* %a, i64 0 acquire, !dbg !7
1308*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1309*9880d681SAndroid Build Coastguard Worker}
1310*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_add_acquire
1311*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_add(i64* %a, i64 0, i32 2), !dbg
1312*9880d681SAndroid Build Coastguard Worker
1313*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_sub_acquire(i64* %a) nounwind uwtable {
1314*9880d681SAndroid Build Coastguard Workerentry:
1315*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i64* %a, i64 0 acquire, !dbg !7
1316*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1317*9880d681SAndroid Build Coastguard Worker}
1318*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_sub_acquire
1319*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_sub(i64* %a, i64 0, i32 2), !dbg
1320*9880d681SAndroid Build Coastguard Worker
1321*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_and_acquire(i64* %a) nounwind uwtable {
1322*9880d681SAndroid Build Coastguard Workerentry:
1323*9880d681SAndroid Build Coastguard Worker  atomicrmw and i64* %a, i64 0 acquire, !dbg !7
1324*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1325*9880d681SAndroid Build Coastguard Worker}
1326*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_and_acquire
1327*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_and(i64* %a, i64 0, i32 2), !dbg
1328*9880d681SAndroid Build Coastguard Worker
1329*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_or_acquire(i64* %a) nounwind uwtable {
1330*9880d681SAndroid Build Coastguard Workerentry:
1331*9880d681SAndroid Build Coastguard Worker  atomicrmw or i64* %a, i64 0 acquire, !dbg !7
1332*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1333*9880d681SAndroid Build Coastguard Worker}
1334*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_or_acquire
1335*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_or(i64* %a, i64 0, i32 2), !dbg
1336*9880d681SAndroid Build Coastguard Worker
1337*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xor_acquire(i64* %a) nounwind uwtable {
1338*9880d681SAndroid Build Coastguard Workerentry:
1339*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i64* %a, i64 0 acquire, !dbg !7
1340*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1341*9880d681SAndroid Build Coastguard Worker}
1342*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xor_acquire
1343*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_xor(i64* %a, i64 0, i32 2), !dbg
1344*9880d681SAndroid Build Coastguard Worker
1345*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_nand_acquire(i64* %a) nounwind uwtable {
1346*9880d681SAndroid Build Coastguard Workerentry:
1347*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i64* %a, i64 0 acquire, !dbg !7
1348*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1349*9880d681SAndroid Build Coastguard Worker}
1350*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_nand_acquire
1351*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_nand(i64* %a, i64 0, i32 2), !dbg
1352*9880d681SAndroid Build Coastguard Worker
1353*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xchg_release(i64* %a) nounwind uwtable {
1354*9880d681SAndroid Build Coastguard Workerentry:
1355*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i64* %a, i64 0 release, !dbg !7
1356*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1357*9880d681SAndroid Build Coastguard Worker}
1358*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xchg_release
1359*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_exchange(i64* %a, i64 0, i32 3), !dbg
1360*9880d681SAndroid Build Coastguard Worker
1361*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_add_release(i64* %a) nounwind uwtable {
1362*9880d681SAndroid Build Coastguard Workerentry:
1363*9880d681SAndroid Build Coastguard Worker  atomicrmw add i64* %a, i64 0 release, !dbg !7
1364*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1365*9880d681SAndroid Build Coastguard Worker}
1366*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_add_release
1367*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_add(i64* %a, i64 0, i32 3), !dbg
1368*9880d681SAndroid Build Coastguard Worker
1369*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_sub_release(i64* %a) nounwind uwtable {
1370*9880d681SAndroid Build Coastguard Workerentry:
1371*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i64* %a, i64 0 release, !dbg !7
1372*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1373*9880d681SAndroid Build Coastguard Worker}
1374*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_sub_release
1375*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_sub(i64* %a, i64 0, i32 3), !dbg
1376*9880d681SAndroid Build Coastguard Worker
1377*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_and_release(i64* %a) nounwind uwtable {
1378*9880d681SAndroid Build Coastguard Workerentry:
1379*9880d681SAndroid Build Coastguard Worker  atomicrmw and i64* %a, i64 0 release, !dbg !7
1380*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1381*9880d681SAndroid Build Coastguard Worker}
1382*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_and_release
1383*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_and(i64* %a, i64 0, i32 3), !dbg
1384*9880d681SAndroid Build Coastguard Worker
1385*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_or_release(i64* %a) nounwind uwtable {
1386*9880d681SAndroid Build Coastguard Workerentry:
1387*9880d681SAndroid Build Coastguard Worker  atomicrmw or i64* %a, i64 0 release, !dbg !7
1388*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1389*9880d681SAndroid Build Coastguard Worker}
1390*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_or_release
1391*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_or(i64* %a, i64 0, i32 3), !dbg
1392*9880d681SAndroid Build Coastguard Worker
1393*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xor_release(i64* %a) nounwind uwtable {
1394*9880d681SAndroid Build Coastguard Workerentry:
1395*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i64* %a, i64 0 release, !dbg !7
1396*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1397*9880d681SAndroid Build Coastguard Worker}
1398*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xor_release
1399*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_xor(i64* %a, i64 0, i32 3), !dbg
1400*9880d681SAndroid Build Coastguard Worker
1401*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_nand_release(i64* %a) nounwind uwtable {
1402*9880d681SAndroid Build Coastguard Workerentry:
1403*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i64* %a, i64 0 release, !dbg !7
1404*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1405*9880d681SAndroid Build Coastguard Worker}
1406*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_nand_release
1407*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_nand(i64* %a, i64 0, i32 3), !dbg
1408*9880d681SAndroid Build Coastguard Worker
1409*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xchg_acq_rel(i64* %a) nounwind uwtable {
1410*9880d681SAndroid Build Coastguard Workerentry:
1411*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i64* %a, i64 0 acq_rel, !dbg !7
1412*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1413*9880d681SAndroid Build Coastguard Worker}
1414*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xchg_acq_rel
1415*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_exchange(i64* %a, i64 0, i32 4), !dbg
1416*9880d681SAndroid Build Coastguard Worker
1417*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_add_acq_rel(i64* %a) nounwind uwtable {
1418*9880d681SAndroid Build Coastguard Workerentry:
1419*9880d681SAndroid Build Coastguard Worker  atomicrmw add i64* %a, i64 0 acq_rel, !dbg !7
1420*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1421*9880d681SAndroid Build Coastguard Worker}
1422*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_add_acq_rel
1423*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_add(i64* %a, i64 0, i32 4), !dbg
1424*9880d681SAndroid Build Coastguard Worker
1425*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_sub_acq_rel(i64* %a) nounwind uwtable {
1426*9880d681SAndroid Build Coastguard Workerentry:
1427*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i64* %a, i64 0 acq_rel, !dbg !7
1428*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1429*9880d681SAndroid Build Coastguard Worker}
1430*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_sub_acq_rel
1431*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_sub(i64* %a, i64 0, i32 4), !dbg
1432*9880d681SAndroid Build Coastguard Worker
1433*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_and_acq_rel(i64* %a) nounwind uwtable {
1434*9880d681SAndroid Build Coastguard Workerentry:
1435*9880d681SAndroid Build Coastguard Worker  atomicrmw and i64* %a, i64 0 acq_rel, !dbg !7
1436*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1437*9880d681SAndroid Build Coastguard Worker}
1438*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_and_acq_rel
1439*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_and(i64* %a, i64 0, i32 4), !dbg
1440*9880d681SAndroid Build Coastguard Worker
1441*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_or_acq_rel(i64* %a) nounwind uwtable {
1442*9880d681SAndroid Build Coastguard Workerentry:
1443*9880d681SAndroid Build Coastguard Worker  atomicrmw or i64* %a, i64 0 acq_rel, !dbg !7
1444*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1445*9880d681SAndroid Build Coastguard Worker}
1446*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_or_acq_rel
1447*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_or(i64* %a, i64 0, i32 4), !dbg
1448*9880d681SAndroid Build Coastguard Worker
1449*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xor_acq_rel(i64* %a) nounwind uwtable {
1450*9880d681SAndroid Build Coastguard Workerentry:
1451*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i64* %a, i64 0 acq_rel, !dbg !7
1452*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1453*9880d681SAndroid Build Coastguard Worker}
1454*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xor_acq_rel
1455*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_xor(i64* %a, i64 0, i32 4), !dbg
1456*9880d681SAndroid Build Coastguard Worker
1457*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_nand_acq_rel(i64* %a) nounwind uwtable {
1458*9880d681SAndroid Build Coastguard Workerentry:
1459*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i64* %a, i64 0 acq_rel, !dbg !7
1460*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1461*9880d681SAndroid Build Coastguard Worker}
1462*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_nand_acq_rel
1463*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_nand(i64* %a, i64 0, i32 4), !dbg
1464*9880d681SAndroid Build Coastguard Worker
1465*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xchg_seq_cst(i64* %a) nounwind uwtable {
1466*9880d681SAndroid Build Coastguard Workerentry:
1467*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i64* %a, i64 0 seq_cst, !dbg !7
1468*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1469*9880d681SAndroid Build Coastguard Worker}
1470*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xchg_seq_cst
1471*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_exchange(i64* %a, i64 0, i32 5), !dbg
1472*9880d681SAndroid Build Coastguard Worker
1473*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_add_seq_cst(i64* %a) nounwind uwtable {
1474*9880d681SAndroid Build Coastguard Workerentry:
1475*9880d681SAndroid Build Coastguard Worker  atomicrmw add i64* %a, i64 0 seq_cst, !dbg !7
1476*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1477*9880d681SAndroid Build Coastguard Worker}
1478*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_add_seq_cst
1479*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_add(i64* %a, i64 0, i32 5), !dbg
1480*9880d681SAndroid Build Coastguard Worker
1481*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_sub_seq_cst(i64* %a) nounwind uwtable {
1482*9880d681SAndroid Build Coastguard Workerentry:
1483*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i64* %a, i64 0 seq_cst, !dbg !7
1484*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1485*9880d681SAndroid Build Coastguard Worker}
1486*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_sub_seq_cst
1487*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_sub(i64* %a, i64 0, i32 5), !dbg
1488*9880d681SAndroid Build Coastguard Worker
1489*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_and_seq_cst(i64* %a) nounwind uwtable {
1490*9880d681SAndroid Build Coastguard Workerentry:
1491*9880d681SAndroid Build Coastguard Worker  atomicrmw and i64* %a, i64 0 seq_cst, !dbg !7
1492*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1493*9880d681SAndroid Build Coastguard Worker}
1494*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_and_seq_cst
1495*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_and(i64* %a, i64 0, i32 5), !dbg
1496*9880d681SAndroid Build Coastguard Worker
1497*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_or_seq_cst(i64* %a) nounwind uwtable {
1498*9880d681SAndroid Build Coastguard Workerentry:
1499*9880d681SAndroid Build Coastguard Worker  atomicrmw or i64* %a, i64 0 seq_cst, !dbg !7
1500*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1501*9880d681SAndroid Build Coastguard Worker}
1502*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_or_seq_cst
1503*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_or(i64* %a, i64 0, i32 5), !dbg
1504*9880d681SAndroid Build Coastguard Worker
1505*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_xor_seq_cst(i64* %a) nounwind uwtable {
1506*9880d681SAndroid Build Coastguard Workerentry:
1507*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i64* %a, i64 0 seq_cst, !dbg !7
1508*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1509*9880d681SAndroid Build Coastguard Worker}
1510*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_xor_seq_cst
1511*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_xor(i64* %a, i64 0, i32 5), !dbg
1512*9880d681SAndroid Build Coastguard Worker
1513*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_nand_seq_cst(i64* %a) nounwind uwtable {
1514*9880d681SAndroid Build Coastguard Workerentry:
1515*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i64* %a, i64 0 seq_cst, !dbg !7
1516*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1517*9880d681SAndroid Build Coastguard Worker}
1518*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_nand_seq_cst
1519*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_fetch_nand(i64* %a, i64 0, i32 5), !dbg
1520*9880d681SAndroid Build Coastguard Worker
1521*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_cas_monotonic(i64* %a) nounwind uwtable {
1522*9880d681SAndroid Build Coastguard Workerentry:
1523*9880d681SAndroid Build Coastguard Worker  cmpxchg i64* %a, i64 0, i64 1 monotonic monotonic, !dbg !7
1524*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1525*9880d681SAndroid Build Coastguard Worker}
1526*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_cas_monotonic
1527*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_compare_exchange_val(i64* %a, i64 0, i64 1, i32 0, i32 0), !dbg
1528*9880d681SAndroid Build Coastguard Worker
1529*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_cas_acquire(i64* %a) nounwind uwtable {
1530*9880d681SAndroid Build Coastguard Workerentry:
1531*9880d681SAndroid Build Coastguard Worker  cmpxchg i64* %a, i64 0, i64 1 acquire acquire, !dbg !7
1532*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1533*9880d681SAndroid Build Coastguard Worker}
1534*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_cas_acquire
1535*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_compare_exchange_val(i64* %a, i64 0, i64 1, i32 2, i32 2), !dbg
1536*9880d681SAndroid Build Coastguard Worker
1537*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_cas_release(i64* %a) nounwind uwtable {
1538*9880d681SAndroid Build Coastguard Workerentry:
1539*9880d681SAndroid Build Coastguard Worker  cmpxchg i64* %a, i64 0, i64 1 release monotonic, !dbg !7
1540*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1541*9880d681SAndroid Build Coastguard Worker}
1542*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_cas_release
1543*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_compare_exchange_val(i64* %a, i64 0, i64 1, i32 3, i32 0), !dbg
1544*9880d681SAndroid Build Coastguard Worker
1545*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_cas_acq_rel(i64* %a) nounwind uwtable {
1546*9880d681SAndroid Build Coastguard Workerentry:
1547*9880d681SAndroid Build Coastguard Worker  cmpxchg i64* %a, i64 0, i64 1 acq_rel acquire, !dbg !7
1548*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1549*9880d681SAndroid Build Coastguard Worker}
1550*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_cas_acq_rel
1551*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_compare_exchange_val(i64* %a, i64 0, i64 1, i32 4, i32 2), !dbg
1552*9880d681SAndroid Build Coastguard Worker
1553*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_cas_seq_cst(i64* %a) nounwind uwtable {
1554*9880d681SAndroid Build Coastguard Workerentry:
1555*9880d681SAndroid Build Coastguard Worker  cmpxchg i64* %a, i64 0, i64 1 seq_cst seq_cst, !dbg !7
1556*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1557*9880d681SAndroid Build Coastguard Worker}
1558*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_cas_seq_cst
1559*9880d681SAndroid Build Coastguard Worker; CHECK: call i64 @__tsan_atomic64_compare_exchange_val(i64* %a, i64 0, i64 1, i32 5, i32 5), !dbg
1560*9880d681SAndroid Build Coastguard Worker
1561*9880d681SAndroid Build Coastguard Workerdefine void @atomic64_cas_seq_cst_ptr_ty(i8** %a, i8* %v1, i8* %v2) nounwind uwtable {
1562*9880d681SAndroid Build Coastguard Workerentry:
1563*9880d681SAndroid Build Coastguard Worker  cmpxchg i8** %a, i8* %v1, i8* %v2 seq_cst seq_cst, !dbg !7
1564*9880d681SAndroid Build Coastguard Worker  ret void
1565*9880d681SAndroid Build Coastguard Worker}
1566*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic64_cas_seq_cst
1567*9880d681SAndroid Build Coastguard Worker; CHECK: {{.*}} = ptrtoint i8* %v1 to i64
1568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{.*}} = ptrtoint i8* %v2 to i64
1569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{.*}} = bitcast i8** %a to i64*
1570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{.*}} = call i64 @__tsan_atomic64_compare_exchange_val(i64* {{.*}}, i64 {{.*}}, i64 {{.*}}, i32 5, i32 5), !dbg
1571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{.*}} = icmp eq i64
1572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{.*}} = inttoptr i64 {{.*}} to i8*
1573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{.*}} = insertvalue { i8*, i1 } undef, i8* {{.*}}, 0
1574*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: {{.*}} = insertvalue { i8*, i1 } {{.*}}, i1 {{.*}}, 1
1575*9880d681SAndroid Build Coastguard Worker
1576*9880d681SAndroid Build Coastguard Workerdefine i128 @atomic128_load_unordered(i128* %a) nounwind uwtable {
1577*9880d681SAndroid Build Coastguard Workerentry:
1578*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i128, i128* %a unordered, align 16, !dbg !7
1579*9880d681SAndroid Build Coastguard Worker  ret i128 %0, !dbg !7
1580*9880d681SAndroid Build Coastguard Worker}
1581*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_load_unordered
1582*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_load(i128* %a, i32 0), !dbg
1583*9880d681SAndroid Build Coastguard Worker
1584*9880d681SAndroid Build Coastguard Workerdefine i128 @atomic128_load_monotonic(i128* %a) nounwind uwtable {
1585*9880d681SAndroid Build Coastguard Workerentry:
1586*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i128, i128* %a monotonic, align 16, !dbg !7
1587*9880d681SAndroid Build Coastguard Worker  ret i128 %0, !dbg !7
1588*9880d681SAndroid Build Coastguard Worker}
1589*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_load_monotonic
1590*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_load(i128* %a, i32 0), !dbg
1591*9880d681SAndroid Build Coastguard Worker
1592*9880d681SAndroid Build Coastguard Workerdefine i128 @atomic128_load_acquire(i128* %a) nounwind uwtable {
1593*9880d681SAndroid Build Coastguard Workerentry:
1594*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i128, i128* %a acquire, align 16, !dbg !7
1595*9880d681SAndroid Build Coastguard Worker  ret i128 %0, !dbg !7
1596*9880d681SAndroid Build Coastguard Worker}
1597*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_load_acquire
1598*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_load(i128* %a, i32 2), !dbg
1599*9880d681SAndroid Build Coastguard Worker
1600*9880d681SAndroid Build Coastguard Workerdefine i128 @atomic128_load_seq_cst(i128* %a) nounwind uwtable {
1601*9880d681SAndroid Build Coastguard Workerentry:
1602*9880d681SAndroid Build Coastguard Worker  %0 = load atomic i128, i128* %a seq_cst, align 16, !dbg !7
1603*9880d681SAndroid Build Coastguard Worker  ret i128 %0, !dbg !7
1604*9880d681SAndroid Build Coastguard Worker}
1605*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_load_seq_cst
1606*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_load(i128* %a, i32 5), !dbg
1607*9880d681SAndroid Build Coastguard Worker
1608*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_store_unordered(i128* %a) nounwind uwtable {
1609*9880d681SAndroid Build Coastguard Workerentry:
1610*9880d681SAndroid Build Coastguard Worker  store atomic i128 0, i128* %a unordered, align 16, !dbg !7
1611*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1612*9880d681SAndroid Build Coastguard Worker}
1613*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_store_unordered
1614*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic128_store(i128* %a, i128 0, i32 0), !dbg
1615*9880d681SAndroid Build Coastguard Worker
1616*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_store_monotonic(i128* %a) nounwind uwtable {
1617*9880d681SAndroid Build Coastguard Workerentry:
1618*9880d681SAndroid Build Coastguard Worker  store atomic i128 0, i128* %a monotonic, align 16, !dbg !7
1619*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1620*9880d681SAndroid Build Coastguard Worker}
1621*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_store_monotonic
1622*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic128_store(i128* %a, i128 0, i32 0), !dbg
1623*9880d681SAndroid Build Coastguard Worker
1624*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_store_release(i128* %a) nounwind uwtable {
1625*9880d681SAndroid Build Coastguard Workerentry:
1626*9880d681SAndroid Build Coastguard Worker  store atomic i128 0, i128* %a release, align 16, !dbg !7
1627*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1628*9880d681SAndroid Build Coastguard Worker}
1629*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_store_release
1630*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic128_store(i128* %a, i128 0, i32 3), !dbg
1631*9880d681SAndroid Build Coastguard Worker
1632*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_store_seq_cst(i128* %a) nounwind uwtable {
1633*9880d681SAndroid Build Coastguard Workerentry:
1634*9880d681SAndroid Build Coastguard Worker  store atomic i128 0, i128* %a seq_cst, align 16, !dbg !7
1635*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1636*9880d681SAndroid Build Coastguard Worker}
1637*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_store_seq_cst
1638*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic128_store(i128* %a, i128 0, i32 5), !dbg
1639*9880d681SAndroid Build Coastguard Worker
1640*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xchg_monotonic(i128* %a) nounwind uwtable {
1641*9880d681SAndroid Build Coastguard Workerentry:
1642*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i128* %a, i128 0 monotonic, !dbg !7
1643*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1644*9880d681SAndroid Build Coastguard Worker}
1645*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xchg_monotonic
1646*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_exchange(i128* %a, i128 0, i32 0), !dbg
1647*9880d681SAndroid Build Coastguard Worker
1648*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_add_monotonic(i128* %a) nounwind uwtable {
1649*9880d681SAndroid Build Coastguard Workerentry:
1650*9880d681SAndroid Build Coastguard Worker  atomicrmw add i128* %a, i128 0 monotonic, !dbg !7
1651*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1652*9880d681SAndroid Build Coastguard Worker}
1653*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_add_monotonic
1654*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_add(i128* %a, i128 0, i32 0), !dbg
1655*9880d681SAndroid Build Coastguard Worker
1656*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_sub_monotonic(i128* %a) nounwind uwtable {
1657*9880d681SAndroid Build Coastguard Workerentry:
1658*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i128* %a, i128 0 monotonic, !dbg !7
1659*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1660*9880d681SAndroid Build Coastguard Worker}
1661*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_sub_monotonic
1662*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_sub(i128* %a, i128 0, i32 0), !dbg
1663*9880d681SAndroid Build Coastguard Worker
1664*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_and_monotonic(i128* %a) nounwind uwtable {
1665*9880d681SAndroid Build Coastguard Workerentry:
1666*9880d681SAndroid Build Coastguard Worker  atomicrmw and i128* %a, i128 0 monotonic, !dbg !7
1667*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1668*9880d681SAndroid Build Coastguard Worker}
1669*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_and_monotonic
1670*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_and(i128* %a, i128 0, i32 0), !dbg
1671*9880d681SAndroid Build Coastguard Worker
1672*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_or_monotonic(i128* %a) nounwind uwtable {
1673*9880d681SAndroid Build Coastguard Workerentry:
1674*9880d681SAndroid Build Coastguard Worker  atomicrmw or i128* %a, i128 0 monotonic, !dbg !7
1675*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1676*9880d681SAndroid Build Coastguard Worker}
1677*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_or_monotonic
1678*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_or(i128* %a, i128 0, i32 0), !dbg
1679*9880d681SAndroid Build Coastguard Worker
1680*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xor_monotonic(i128* %a) nounwind uwtable {
1681*9880d681SAndroid Build Coastguard Workerentry:
1682*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i128* %a, i128 0 monotonic, !dbg !7
1683*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1684*9880d681SAndroid Build Coastguard Worker}
1685*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xor_monotonic
1686*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_xor(i128* %a, i128 0, i32 0), !dbg
1687*9880d681SAndroid Build Coastguard Worker
1688*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_nand_monotonic(i128* %a) nounwind uwtable {
1689*9880d681SAndroid Build Coastguard Workerentry:
1690*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i128* %a, i128 0 monotonic, !dbg !7
1691*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1692*9880d681SAndroid Build Coastguard Worker}
1693*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_nand_monotonic
1694*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_nand(i128* %a, i128 0, i32 0), !dbg
1695*9880d681SAndroid Build Coastguard Worker
1696*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xchg_acquire(i128* %a) nounwind uwtable {
1697*9880d681SAndroid Build Coastguard Workerentry:
1698*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i128* %a, i128 0 acquire, !dbg !7
1699*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1700*9880d681SAndroid Build Coastguard Worker}
1701*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xchg_acquire
1702*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_exchange(i128* %a, i128 0, i32 2), !dbg
1703*9880d681SAndroid Build Coastguard Worker
1704*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_add_acquire(i128* %a) nounwind uwtable {
1705*9880d681SAndroid Build Coastguard Workerentry:
1706*9880d681SAndroid Build Coastguard Worker  atomicrmw add i128* %a, i128 0 acquire, !dbg !7
1707*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1708*9880d681SAndroid Build Coastguard Worker}
1709*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_add_acquire
1710*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_add(i128* %a, i128 0, i32 2), !dbg
1711*9880d681SAndroid Build Coastguard Worker
1712*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_sub_acquire(i128* %a) nounwind uwtable {
1713*9880d681SAndroid Build Coastguard Workerentry:
1714*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i128* %a, i128 0 acquire, !dbg !7
1715*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1716*9880d681SAndroid Build Coastguard Worker}
1717*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_sub_acquire
1718*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_sub(i128* %a, i128 0, i32 2), !dbg
1719*9880d681SAndroid Build Coastguard Worker
1720*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_and_acquire(i128* %a) nounwind uwtable {
1721*9880d681SAndroid Build Coastguard Workerentry:
1722*9880d681SAndroid Build Coastguard Worker  atomicrmw and i128* %a, i128 0 acquire, !dbg !7
1723*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1724*9880d681SAndroid Build Coastguard Worker}
1725*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_and_acquire
1726*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_and(i128* %a, i128 0, i32 2), !dbg
1727*9880d681SAndroid Build Coastguard Worker
1728*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_or_acquire(i128* %a) nounwind uwtable {
1729*9880d681SAndroid Build Coastguard Workerentry:
1730*9880d681SAndroid Build Coastguard Worker  atomicrmw or i128* %a, i128 0 acquire, !dbg !7
1731*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1732*9880d681SAndroid Build Coastguard Worker}
1733*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_or_acquire
1734*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_or(i128* %a, i128 0, i32 2), !dbg
1735*9880d681SAndroid Build Coastguard Worker
1736*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xor_acquire(i128* %a) nounwind uwtable {
1737*9880d681SAndroid Build Coastguard Workerentry:
1738*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i128* %a, i128 0 acquire, !dbg !7
1739*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1740*9880d681SAndroid Build Coastguard Worker}
1741*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xor_acquire
1742*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_xor(i128* %a, i128 0, i32 2), !dbg
1743*9880d681SAndroid Build Coastguard Worker
1744*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_nand_acquire(i128* %a) nounwind uwtable {
1745*9880d681SAndroid Build Coastguard Workerentry:
1746*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i128* %a, i128 0 acquire, !dbg !7
1747*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1748*9880d681SAndroid Build Coastguard Worker}
1749*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_nand_acquire
1750*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_nand(i128* %a, i128 0, i32 2), !dbg
1751*9880d681SAndroid Build Coastguard Worker
1752*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xchg_release(i128* %a) nounwind uwtable {
1753*9880d681SAndroid Build Coastguard Workerentry:
1754*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i128* %a, i128 0 release, !dbg !7
1755*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1756*9880d681SAndroid Build Coastguard Worker}
1757*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xchg_release
1758*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_exchange(i128* %a, i128 0, i32 3), !dbg
1759*9880d681SAndroid Build Coastguard Worker
1760*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_add_release(i128* %a) nounwind uwtable {
1761*9880d681SAndroid Build Coastguard Workerentry:
1762*9880d681SAndroid Build Coastguard Worker  atomicrmw add i128* %a, i128 0 release, !dbg !7
1763*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1764*9880d681SAndroid Build Coastguard Worker}
1765*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_add_release
1766*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_add(i128* %a, i128 0, i32 3), !dbg
1767*9880d681SAndroid Build Coastguard Worker
1768*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_sub_release(i128* %a) nounwind uwtable {
1769*9880d681SAndroid Build Coastguard Workerentry:
1770*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i128* %a, i128 0 release, !dbg !7
1771*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1772*9880d681SAndroid Build Coastguard Worker}
1773*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_sub_release
1774*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_sub(i128* %a, i128 0, i32 3), !dbg
1775*9880d681SAndroid Build Coastguard Worker
1776*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_and_release(i128* %a) nounwind uwtable {
1777*9880d681SAndroid Build Coastguard Workerentry:
1778*9880d681SAndroid Build Coastguard Worker  atomicrmw and i128* %a, i128 0 release, !dbg !7
1779*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1780*9880d681SAndroid Build Coastguard Worker}
1781*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_and_release
1782*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_and(i128* %a, i128 0, i32 3), !dbg
1783*9880d681SAndroid Build Coastguard Worker
1784*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_or_release(i128* %a) nounwind uwtable {
1785*9880d681SAndroid Build Coastguard Workerentry:
1786*9880d681SAndroid Build Coastguard Worker  atomicrmw or i128* %a, i128 0 release, !dbg !7
1787*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1788*9880d681SAndroid Build Coastguard Worker}
1789*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_or_release
1790*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_or(i128* %a, i128 0, i32 3), !dbg
1791*9880d681SAndroid Build Coastguard Worker
1792*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xor_release(i128* %a) nounwind uwtable {
1793*9880d681SAndroid Build Coastguard Workerentry:
1794*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i128* %a, i128 0 release, !dbg !7
1795*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1796*9880d681SAndroid Build Coastguard Worker}
1797*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xor_release
1798*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_xor(i128* %a, i128 0, i32 3), !dbg
1799*9880d681SAndroid Build Coastguard Worker
1800*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_nand_release(i128* %a) nounwind uwtable {
1801*9880d681SAndroid Build Coastguard Workerentry:
1802*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i128* %a, i128 0 release, !dbg !7
1803*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1804*9880d681SAndroid Build Coastguard Worker}
1805*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_nand_release
1806*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_nand(i128* %a, i128 0, i32 3), !dbg
1807*9880d681SAndroid Build Coastguard Worker
1808*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xchg_acq_rel(i128* %a) nounwind uwtable {
1809*9880d681SAndroid Build Coastguard Workerentry:
1810*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i128* %a, i128 0 acq_rel, !dbg !7
1811*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1812*9880d681SAndroid Build Coastguard Worker}
1813*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xchg_acq_rel
1814*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_exchange(i128* %a, i128 0, i32 4), !dbg
1815*9880d681SAndroid Build Coastguard Worker
1816*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_add_acq_rel(i128* %a) nounwind uwtable {
1817*9880d681SAndroid Build Coastguard Workerentry:
1818*9880d681SAndroid Build Coastguard Worker  atomicrmw add i128* %a, i128 0 acq_rel, !dbg !7
1819*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1820*9880d681SAndroid Build Coastguard Worker}
1821*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_add_acq_rel
1822*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_add(i128* %a, i128 0, i32 4), !dbg
1823*9880d681SAndroid Build Coastguard Worker
1824*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_sub_acq_rel(i128* %a) nounwind uwtable {
1825*9880d681SAndroid Build Coastguard Workerentry:
1826*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i128* %a, i128 0 acq_rel, !dbg !7
1827*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1828*9880d681SAndroid Build Coastguard Worker}
1829*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_sub_acq_rel
1830*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_sub(i128* %a, i128 0, i32 4), !dbg
1831*9880d681SAndroid Build Coastguard Worker
1832*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_and_acq_rel(i128* %a) nounwind uwtable {
1833*9880d681SAndroid Build Coastguard Workerentry:
1834*9880d681SAndroid Build Coastguard Worker  atomicrmw and i128* %a, i128 0 acq_rel, !dbg !7
1835*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1836*9880d681SAndroid Build Coastguard Worker}
1837*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_and_acq_rel
1838*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_and(i128* %a, i128 0, i32 4), !dbg
1839*9880d681SAndroid Build Coastguard Worker
1840*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_or_acq_rel(i128* %a) nounwind uwtable {
1841*9880d681SAndroid Build Coastguard Workerentry:
1842*9880d681SAndroid Build Coastguard Worker  atomicrmw or i128* %a, i128 0 acq_rel, !dbg !7
1843*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1844*9880d681SAndroid Build Coastguard Worker}
1845*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_or_acq_rel
1846*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_or(i128* %a, i128 0, i32 4), !dbg
1847*9880d681SAndroid Build Coastguard Worker
1848*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xor_acq_rel(i128* %a) nounwind uwtable {
1849*9880d681SAndroid Build Coastguard Workerentry:
1850*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i128* %a, i128 0 acq_rel, !dbg !7
1851*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1852*9880d681SAndroid Build Coastguard Worker}
1853*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xor_acq_rel
1854*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_xor(i128* %a, i128 0, i32 4), !dbg
1855*9880d681SAndroid Build Coastguard Worker
1856*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_nand_acq_rel(i128* %a) nounwind uwtable {
1857*9880d681SAndroid Build Coastguard Workerentry:
1858*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i128* %a, i128 0 acq_rel, !dbg !7
1859*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1860*9880d681SAndroid Build Coastguard Worker}
1861*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_nand_acq_rel
1862*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_nand(i128* %a, i128 0, i32 4), !dbg
1863*9880d681SAndroid Build Coastguard Worker
1864*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xchg_seq_cst(i128* %a) nounwind uwtable {
1865*9880d681SAndroid Build Coastguard Workerentry:
1866*9880d681SAndroid Build Coastguard Worker  atomicrmw xchg i128* %a, i128 0 seq_cst, !dbg !7
1867*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1868*9880d681SAndroid Build Coastguard Worker}
1869*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xchg_seq_cst
1870*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_exchange(i128* %a, i128 0, i32 5), !dbg
1871*9880d681SAndroid Build Coastguard Worker
1872*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_add_seq_cst(i128* %a) nounwind uwtable {
1873*9880d681SAndroid Build Coastguard Workerentry:
1874*9880d681SAndroid Build Coastguard Worker  atomicrmw add i128* %a, i128 0 seq_cst, !dbg !7
1875*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1876*9880d681SAndroid Build Coastguard Worker}
1877*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_add_seq_cst
1878*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_add(i128* %a, i128 0, i32 5), !dbg
1879*9880d681SAndroid Build Coastguard Worker
1880*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_sub_seq_cst(i128* %a) nounwind uwtable {
1881*9880d681SAndroid Build Coastguard Workerentry:
1882*9880d681SAndroid Build Coastguard Worker  atomicrmw sub i128* %a, i128 0 seq_cst, !dbg !7
1883*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1884*9880d681SAndroid Build Coastguard Worker}
1885*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_sub_seq_cst
1886*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_sub(i128* %a, i128 0, i32 5), !dbg
1887*9880d681SAndroid Build Coastguard Worker
1888*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_and_seq_cst(i128* %a) nounwind uwtable {
1889*9880d681SAndroid Build Coastguard Workerentry:
1890*9880d681SAndroid Build Coastguard Worker  atomicrmw and i128* %a, i128 0 seq_cst, !dbg !7
1891*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1892*9880d681SAndroid Build Coastguard Worker}
1893*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_and_seq_cst
1894*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_and(i128* %a, i128 0, i32 5), !dbg
1895*9880d681SAndroid Build Coastguard Worker
1896*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_or_seq_cst(i128* %a) nounwind uwtable {
1897*9880d681SAndroid Build Coastguard Workerentry:
1898*9880d681SAndroid Build Coastguard Worker  atomicrmw or i128* %a, i128 0 seq_cst, !dbg !7
1899*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1900*9880d681SAndroid Build Coastguard Worker}
1901*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_or_seq_cst
1902*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_or(i128* %a, i128 0, i32 5), !dbg
1903*9880d681SAndroid Build Coastguard Worker
1904*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_xor_seq_cst(i128* %a) nounwind uwtable {
1905*9880d681SAndroid Build Coastguard Workerentry:
1906*9880d681SAndroid Build Coastguard Worker  atomicrmw xor i128* %a, i128 0 seq_cst, !dbg !7
1907*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1908*9880d681SAndroid Build Coastguard Worker}
1909*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_xor_seq_cst
1910*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_xor(i128* %a, i128 0, i32 5), !dbg
1911*9880d681SAndroid Build Coastguard Worker
1912*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_nand_seq_cst(i128* %a) nounwind uwtable {
1913*9880d681SAndroid Build Coastguard Workerentry:
1914*9880d681SAndroid Build Coastguard Worker  atomicrmw nand i128* %a, i128 0 seq_cst, !dbg !7
1915*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1916*9880d681SAndroid Build Coastguard Worker}
1917*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_nand_seq_cst
1918*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_fetch_nand(i128* %a, i128 0, i32 5), !dbg
1919*9880d681SAndroid Build Coastguard Worker
1920*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_cas_monotonic(i128* %a) nounwind uwtable {
1921*9880d681SAndroid Build Coastguard Workerentry:
1922*9880d681SAndroid Build Coastguard Worker  cmpxchg i128* %a, i128 0, i128 1 monotonic monotonic, !dbg !7
1923*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1924*9880d681SAndroid Build Coastguard Worker}
1925*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_cas_monotonic
1926*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_compare_exchange_val(i128* %a, i128 0, i128 1, i32 0, i32 0), !dbg
1927*9880d681SAndroid Build Coastguard Worker
1928*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_cas_acquire(i128* %a) nounwind uwtable {
1929*9880d681SAndroid Build Coastguard Workerentry:
1930*9880d681SAndroid Build Coastguard Worker  cmpxchg i128* %a, i128 0, i128 1 acquire acquire, !dbg !7
1931*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1932*9880d681SAndroid Build Coastguard Worker}
1933*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_cas_acquire
1934*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_compare_exchange_val(i128* %a, i128 0, i128 1, i32 2, i32 2), !dbg
1935*9880d681SAndroid Build Coastguard Worker
1936*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_cas_release(i128* %a) nounwind uwtable {
1937*9880d681SAndroid Build Coastguard Workerentry:
1938*9880d681SAndroid Build Coastguard Worker  cmpxchg i128* %a, i128 0, i128 1 release monotonic, !dbg !7
1939*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1940*9880d681SAndroid Build Coastguard Worker}
1941*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_cas_release
1942*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_compare_exchange_val(i128* %a, i128 0, i128 1, i32 3, i32 0), !dbg
1943*9880d681SAndroid Build Coastguard Worker
1944*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_cas_acq_rel(i128* %a) nounwind uwtable {
1945*9880d681SAndroid Build Coastguard Workerentry:
1946*9880d681SAndroid Build Coastguard Worker  cmpxchg i128* %a, i128 0, i128 1 acq_rel acquire, !dbg !7
1947*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1948*9880d681SAndroid Build Coastguard Worker}
1949*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_cas_acq_rel
1950*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_compare_exchange_val(i128* %a, i128 0, i128 1, i32 4, i32 2), !dbg
1951*9880d681SAndroid Build Coastguard Worker
1952*9880d681SAndroid Build Coastguard Workerdefine void @atomic128_cas_seq_cst(i128* %a) nounwind uwtable {
1953*9880d681SAndroid Build Coastguard Workerentry:
1954*9880d681SAndroid Build Coastguard Worker  cmpxchg i128* %a, i128 0, i128 1 seq_cst seq_cst, !dbg !7
1955*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1956*9880d681SAndroid Build Coastguard Worker}
1957*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic128_cas_seq_cst
1958*9880d681SAndroid Build Coastguard Worker; CHECK: call i128 @__tsan_atomic128_compare_exchange_val(i128* %a, i128 0, i128 1, i32 5, i32 5), !dbg
1959*9880d681SAndroid Build Coastguard Worker
1960*9880d681SAndroid Build Coastguard Workerdefine void @atomic_signal_fence_acquire() nounwind uwtable {
1961*9880d681SAndroid Build Coastguard Workerentry:
1962*9880d681SAndroid Build Coastguard Worker  fence singlethread acquire, !dbg !7
1963*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1964*9880d681SAndroid Build Coastguard Worker}
1965*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic_signal_fence_acquire
1966*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic_signal_fence(i32 2), !dbg
1967*9880d681SAndroid Build Coastguard Worker
1968*9880d681SAndroid Build Coastguard Workerdefine void @atomic_thread_fence_acquire() nounwind uwtable {
1969*9880d681SAndroid Build Coastguard Workerentry:
1970*9880d681SAndroid Build Coastguard Worker  fence  acquire, !dbg !7
1971*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1972*9880d681SAndroid Build Coastguard Worker}
1973*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic_thread_fence_acquire
1974*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic_thread_fence(i32 2), !dbg
1975*9880d681SAndroid Build Coastguard Worker
1976*9880d681SAndroid Build Coastguard Workerdefine void @atomic_signal_fence_release() nounwind uwtable {
1977*9880d681SAndroid Build Coastguard Workerentry:
1978*9880d681SAndroid Build Coastguard Worker  fence singlethread release, !dbg !7
1979*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1980*9880d681SAndroid Build Coastguard Worker}
1981*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic_signal_fence_release
1982*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic_signal_fence(i32 3), !dbg
1983*9880d681SAndroid Build Coastguard Worker
1984*9880d681SAndroid Build Coastguard Workerdefine void @atomic_thread_fence_release() nounwind uwtable {
1985*9880d681SAndroid Build Coastguard Workerentry:
1986*9880d681SAndroid Build Coastguard Worker  fence  release, !dbg !7
1987*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1988*9880d681SAndroid Build Coastguard Worker}
1989*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic_thread_fence_release
1990*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic_thread_fence(i32 3), !dbg
1991*9880d681SAndroid Build Coastguard Worker
1992*9880d681SAndroid Build Coastguard Workerdefine void @atomic_signal_fence_acq_rel() nounwind uwtable {
1993*9880d681SAndroid Build Coastguard Workerentry:
1994*9880d681SAndroid Build Coastguard Worker  fence singlethread acq_rel, !dbg !7
1995*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
1996*9880d681SAndroid Build Coastguard Worker}
1997*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic_signal_fence_acq_rel
1998*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic_signal_fence(i32 4), !dbg
1999*9880d681SAndroid Build Coastguard Worker
2000*9880d681SAndroid Build Coastguard Workerdefine void @atomic_thread_fence_acq_rel() nounwind uwtable {
2001*9880d681SAndroid Build Coastguard Workerentry:
2002*9880d681SAndroid Build Coastguard Worker  fence  acq_rel, !dbg !7
2003*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
2004*9880d681SAndroid Build Coastguard Worker}
2005*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic_thread_fence_acq_rel
2006*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic_thread_fence(i32 4), !dbg
2007*9880d681SAndroid Build Coastguard Worker
2008*9880d681SAndroid Build Coastguard Workerdefine void @atomic_signal_fence_seq_cst() nounwind uwtable {
2009*9880d681SAndroid Build Coastguard Workerentry:
2010*9880d681SAndroid Build Coastguard Worker  fence singlethread seq_cst, !dbg !7
2011*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
2012*9880d681SAndroid Build Coastguard Worker}
2013*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic_signal_fence_seq_cst
2014*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic_signal_fence(i32 5), !dbg
2015*9880d681SAndroid Build Coastguard Worker
2016*9880d681SAndroid Build Coastguard Workerdefine void @atomic_thread_fence_seq_cst() nounwind uwtable {
2017*9880d681SAndroid Build Coastguard Workerentry:
2018*9880d681SAndroid Build Coastguard Worker  fence  seq_cst, !dbg !7
2019*9880d681SAndroid Build Coastguard Worker  ret void, !dbg !7
2020*9880d681SAndroid Build Coastguard Worker}
2021*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: atomic_thread_fence_seq_cst
2022*9880d681SAndroid Build Coastguard Worker; CHECK: call void @__tsan_atomic_thread_fence(i32 5), !dbg
2023*9880d681SAndroid Build Coastguard Worker
2024*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!0, !1, !2}
2025*9880d681SAndroid Build Coastguard Worker!llvm.dbg.cu = !{!8}
2026*9880d681SAndroid Build Coastguard Worker!0 = !{i32 2, !"Dwarf Version", i32 4}
2027*9880d681SAndroid Build Coastguard Worker!1 = !{i32 2, !"Debug Info Version", i32 3}
2028*9880d681SAndroid Build Coastguard Worker!2 = !{i32 1, !"PIC Level", i32 2}
2029*9880d681SAndroid Build Coastguard Worker
2030*9880d681SAndroid Build Coastguard Worker!3 = !{}
2031*9880d681SAndroid Build Coastguard Worker!4 = !DISubroutineType(types: !3)
2032*9880d681SAndroid Build Coastguard Worker!5 = !DIFile(filename: "atomic.cpp", directory: "/tmp")
2033*9880d681SAndroid Build Coastguard Worker!6 = distinct !DISubprogram(name: "test", scope: !5, file: !5, line: 99, type: !4, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, unit: !8, variables: !3)
2034*9880d681SAndroid Build Coastguard Worker!7 = !DILocation(line: 100, column: 1, scope: !6)
2035*9880d681SAndroid Build Coastguard Worker
2036*9880d681SAndroid Build Coastguard Worker!8 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang",
2037*9880d681SAndroid Build Coastguard Worker                             file: !5,
2038*9880d681SAndroid Build Coastguard Worker                             isOptimized: true, flags: "-O2",
2039*9880d681SAndroid Build Coastguard Worker                             splitDebugFilename: "abc.debug", emissionKind: 2)
2040