xref: /llvm-project/llvm/test/CodeGen/M68k/Atomics/load-store.ll (revision 4cce10743d2275710d3d2e0de8013386a9799092)
1e086b24dSSheng; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2e086b24dSSheng; RUN: llc %s -o - -mtriple=m68k -mcpu=M68000 | FileCheck %s --check-prefix=NO-ATOMIC
3e086b24dSSheng; RUN: llc %s -o - -mtriple=m68k -mcpu=M68010 | FileCheck %s --check-prefix=NO-ATOMIC
4e086b24dSSheng; RUN: llc %s -o - -mtriple=m68k -mcpu=M68020 | FileCheck %s --check-prefix=ATOMIC
5e086b24dSSheng; RUN: llc %s -o - -mtriple=m68k -mcpu=M68030 | FileCheck %s --check-prefix=ATOMIC
6e086b24dSSheng; RUN: llc %s -o - -mtriple=m68k -mcpu=M68040 | FileCheck %s --check-prefix=ATOMIC
7e086b24dSSheng
8cd0d11beSFangrui Songdefine i8 @atomic_load_i8_unordered(ptr %a) nounwind {
9e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i8_unordered:
10e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
11e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
12e086b24dSSheng; NO-ATOMIC-NEXT:    move.b (%a0), %d0
13e086b24dSSheng; NO-ATOMIC-NEXT:    rts
14e086b24dSSheng;
15e086b24dSSheng; ATOMIC-LABEL: atomic_load_i8_unordered:
16e086b24dSSheng; ATOMIC:       ; %bb.0:
17e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
18e086b24dSSheng; ATOMIC-NEXT:    move.b (%a0), %d0
19e086b24dSSheng; ATOMIC-NEXT:    rts
20cd0d11beSFangrui Song  %1 = load atomic i8, ptr %a unordered, align 1
21e086b24dSSheng  ret i8 %1
22e086b24dSSheng}
23e086b24dSSheng
24cd0d11beSFangrui Songdefine i8 @atomic_load_i8_monotonic(ptr %a) nounwind {
25e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i8_monotonic:
26e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
27e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
28e086b24dSSheng; NO-ATOMIC-NEXT:    move.b (%a0), %d0
29e086b24dSSheng; NO-ATOMIC-NEXT:    rts
30e086b24dSSheng;
31e086b24dSSheng; ATOMIC-LABEL: atomic_load_i8_monotonic:
32e086b24dSSheng; ATOMIC:       ; %bb.0:
33e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
34e086b24dSSheng; ATOMIC-NEXT:    move.b (%a0), %d0
35e086b24dSSheng; ATOMIC-NEXT:    rts
36cd0d11beSFangrui Song  %1 = load atomic i8, ptr %a monotonic, align 1
37e086b24dSSheng  ret i8 %1
38e086b24dSSheng}
39e086b24dSSheng
40cd0d11beSFangrui Songdefine i8 @atomic_load_i8_acquire(ptr %a) nounwind {
41e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i8_acquire:
42e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
43e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
44e086b24dSSheng; NO-ATOMIC-NEXT:    move.b (%a0), %d0
45e086b24dSSheng; NO-ATOMIC-NEXT:    rts
46e086b24dSSheng;
47e086b24dSSheng; ATOMIC-LABEL: atomic_load_i8_acquire:
48e086b24dSSheng; ATOMIC:       ; %bb.0:
49e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
50e086b24dSSheng; ATOMIC-NEXT:    move.b (%a0), %d0
51e086b24dSSheng; ATOMIC-NEXT:    rts
52cd0d11beSFangrui Song  %1 = load atomic i8, ptr %a acquire, align 1
53e086b24dSSheng  ret i8 %1
54e086b24dSSheng}
55e086b24dSSheng
56cd0d11beSFangrui Songdefine i8 @atomic_load_i8_seq_cst(ptr %a) nounwind {
57e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i8_seq_cst:
58e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
59e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
60e086b24dSSheng; NO-ATOMIC-NEXT:    move.b (%a0), %d0
61e086b24dSSheng; NO-ATOMIC-NEXT:    rts
62e086b24dSSheng;
63e086b24dSSheng; ATOMIC-LABEL: atomic_load_i8_seq_cst:
64e086b24dSSheng; ATOMIC:       ; %bb.0:
65e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
66e086b24dSSheng; ATOMIC-NEXT:    move.b (%a0), %d0
67e086b24dSSheng; ATOMIC-NEXT:    rts
68cd0d11beSFangrui Song  %1 = load atomic i8, ptr %a seq_cst, align 1
69e086b24dSSheng  ret i8 %1
70e086b24dSSheng}
71e086b24dSSheng
72cd0d11beSFangrui Songdefine i16 @atomic_load_i16_unordered(ptr %a) nounwind {
73e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i16_unordered:
74e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
75e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
76e086b24dSSheng; NO-ATOMIC-NEXT:    move.w (%a0), %d0
77e086b24dSSheng; NO-ATOMIC-NEXT:    rts
78e086b24dSSheng;
79e086b24dSSheng; ATOMIC-LABEL: atomic_load_i16_unordered:
80e086b24dSSheng; ATOMIC:       ; %bb.0:
81e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
82e086b24dSSheng; ATOMIC-NEXT:    move.w (%a0), %d0
83e086b24dSSheng; ATOMIC-NEXT:    rts
84cd0d11beSFangrui Song  %1 = load atomic i16, ptr %a unordered, align 2
85e086b24dSSheng  ret i16 %1
86e086b24dSSheng}
87e086b24dSSheng
88cd0d11beSFangrui Songdefine i16 @atomic_load_i16_monotonic(ptr %a) nounwind {
89e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i16_monotonic:
90e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
91e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
92e086b24dSSheng; NO-ATOMIC-NEXT:    move.w (%a0), %d0
93e086b24dSSheng; NO-ATOMIC-NEXT:    rts
94e086b24dSSheng;
95e086b24dSSheng; ATOMIC-LABEL: atomic_load_i16_monotonic:
96e086b24dSSheng; ATOMIC:       ; %bb.0:
97e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
98e086b24dSSheng; ATOMIC-NEXT:    move.w (%a0), %d0
99e086b24dSSheng; ATOMIC-NEXT:    rts
100cd0d11beSFangrui Song  %1 = load atomic i16, ptr %a monotonic, align 2
101e086b24dSSheng  ret i16 %1
102e086b24dSSheng}
103e086b24dSSheng
104cd0d11beSFangrui Songdefine i16 @atomic_load_i16_acquire(ptr %a) nounwind {
105e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i16_acquire:
106e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
107e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
108e086b24dSSheng; NO-ATOMIC-NEXT:    move.w (%a0), %d0
109e086b24dSSheng; NO-ATOMIC-NEXT:    rts
110e086b24dSSheng;
111e086b24dSSheng; ATOMIC-LABEL: atomic_load_i16_acquire:
112e086b24dSSheng; ATOMIC:       ; %bb.0:
113e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
114e086b24dSSheng; ATOMIC-NEXT:    move.w (%a0), %d0
115e086b24dSSheng; ATOMIC-NEXT:    rts
116cd0d11beSFangrui Song  %1 = load atomic i16, ptr %a acquire, align 2
117e086b24dSSheng  ret i16 %1
118e086b24dSSheng}
119e086b24dSSheng
120cd0d11beSFangrui Songdefine i16 @atomic_load_i16_seq_cst(ptr %a) nounwind {
121e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i16_seq_cst:
122e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
123e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
124e086b24dSSheng; NO-ATOMIC-NEXT:    move.w (%a0), %d0
125e086b24dSSheng; NO-ATOMIC-NEXT:    rts
126e086b24dSSheng;
127e086b24dSSheng; ATOMIC-LABEL: atomic_load_i16_seq_cst:
128e086b24dSSheng; ATOMIC:       ; %bb.0:
129e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
130e086b24dSSheng; ATOMIC-NEXT:    move.w (%a0), %d0
131e086b24dSSheng; ATOMIC-NEXT:    rts
132cd0d11beSFangrui Song  %1 = load atomic i16, ptr %a seq_cst, align 2
133e086b24dSSheng  ret i16 %1
134e086b24dSSheng}
135e086b24dSSheng
136cd0d11beSFangrui Songdefine i32 @atomic_load_i32_unordered(ptr %a) nounwind {
137e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i32_unordered:
138e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
139e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
140e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (%a0), %d0
141e086b24dSSheng; NO-ATOMIC-NEXT:    rts
142e086b24dSSheng;
143e086b24dSSheng; ATOMIC-LABEL: atomic_load_i32_unordered:
144e086b24dSSheng; ATOMIC:       ; %bb.0:
145e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
146e086b24dSSheng; ATOMIC-NEXT:    move.l (%a0), %d0
147e086b24dSSheng; ATOMIC-NEXT:    rts
148cd0d11beSFangrui Song  %1 = load atomic i32, ptr %a unordered, align 4
149e086b24dSSheng  ret i32 %1
150e086b24dSSheng}
151e086b24dSSheng
152cd0d11beSFangrui Songdefine i32 @atomic_load_i32_monotonic(ptr %a) nounwind {
153e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i32_monotonic:
154e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
155e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
156e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (%a0), %d0
157e086b24dSSheng; NO-ATOMIC-NEXT:    rts
158e086b24dSSheng;
159e086b24dSSheng; ATOMIC-LABEL: atomic_load_i32_monotonic:
160e086b24dSSheng; ATOMIC:       ; %bb.0:
161e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
162e086b24dSSheng; ATOMIC-NEXT:    move.l (%a0), %d0
163e086b24dSSheng; ATOMIC-NEXT:    rts
164cd0d11beSFangrui Song  %1 = load atomic i32, ptr %a monotonic, align 4
165e086b24dSSheng  ret i32 %1
166e086b24dSSheng}
167e086b24dSSheng
168cd0d11beSFangrui Songdefine i32 @atomic_load_i32_acquire(ptr %a) nounwind {
169e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i32_acquire:
170e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
171e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
172e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (%a0), %d0
173e086b24dSSheng; NO-ATOMIC-NEXT:    rts
174e086b24dSSheng;
175e086b24dSSheng; ATOMIC-LABEL: atomic_load_i32_acquire:
176e086b24dSSheng; ATOMIC:       ; %bb.0:
177e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
178e086b24dSSheng; ATOMIC-NEXT:    move.l (%a0), %d0
179e086b24dSSheng; ATOMIC-NEXT:    rts
180cd0d11beSFangrui Song  %1 = load atomic i32, ptr %a acquire, align 4
181e086b24dSSheng  ret i32 %1
182e086b24dSSheng}
183e086b24dSSheng
184cd0d11beSFangrui Songdefine i32 @atomic_load_i32_seq_cst(ptr %a) nounwind {
185e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i32_seq_cst:
186e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
187e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
188e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (%a0), %d0
189e086b24dSSheng; NO-ATOMIC-NEXT:    rts
190e086b24dSSheng;
191e086b24dSSheng; ATOMIC-LABEL: atomic_load_i32_seq_cst:
192e086b24dSSheng; ATOMIC:       ; %bb.0:
193e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
194e086b24dSSheng; ATOMIC-NEXT:    move.l (%a0), %d0
195e086b24dSSheng; ATOMIC-NEXT:    rts
196cd0d11beSFangrui Song  %1 = load atomic i32, ptr %a seq_cst, align 4
197e086b24dSSheng  ret i32 %1
198e086b24dSSheng}
199e086b24dSSheng
200cd0d11beSFangrui Songdefine i64 @atomic_load_i64_unordered(ptr %a) nounwind {
201e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i64_unordered:
202e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
203e086b24dSSheng; NO-ATOMIC-NEXT:    suba.l #12, %sp
204e086b24dSSheng; NO-ATOMIC-NEXT:    move.l #0, (4,%sp)
205e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)
206ebbc5de7SPeter Lafreniere; NO-ATOMIC-NEXT:    jsr __atomic_load_8
207e086b24dSSheng; NO-ATOMIC-NEXT:    adda.l #12, %sp
208e086b24dSSheng; NO-ATOMIC-NEXT:    rts
209e086b24dSSheng;
210e086b24dSSheng; ATOMIC-LABEL: atomic_load_i64_unordered:
211e086b24dSSheng; ATOMIC:       ; %bb.0:
212e086b24dSSheng; ATOMIC-NEXT:    suba.l #12, %sp
213e086b24dSSheng; ATOMIC-NEXT:    move.l #0, (4,%sp)
214e086b24dSSheng; ATOMIC-NEXT:    move.l (16,%sp), (%sp)
215ebbc5de7SPeter Lafreniere; ATOMIC-NEXT:    jsr __atomic_load_8
216e086b24dSSheng; ATOMIC-NEXT:    adda.l #12, %sp
217e086b24dSSheng; ATOMIC-NEXT:    rts
218cd0d11beSFangrui Song  %1 = load atomic i64, ptr %a unordered, align 8
219e086b24dSSheng  ret i64 %1
220e086b24dSSheng}
221e086b24dSSheng
222cd0d11beSFangrui Songdefine i64 @atomic_load_i64_monotonic(ptr %a) nounwind {
223e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i64_monotonic:
224e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
225e086b24dSSheng; NO-ATOMIC-NEXT:    suba.l #12, %sp
226e086b24dSSheng; NO-ATOMIC-NEXT:    move.l #0, (4,%sp)
227e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)
228ebbc5de7SPeter Lafreniere; NO-ATOMIC-NEXT:    jsr __atomic_load_8
229e086b24dSSheng; NO-ATOMIC-NEXT:    adda.l #12, %sp
230e086b24dSSheng; NO-ATOMIC-NEXT:    rts
231e086b24dSSheng;
232e086b24dSSheng; ATOMIC-LABEL: atomic_load_i64_monotonic:
233e086b24dSSheng; ATOMIC:       ; %bb.0:
234e086b24dSSheng; ATOMIC-NEXT:    suba.l #12, %sp
235e086b24dSSheng; ATOMIC-NEXT:    move.l #0, (4,%sp)
236e086b24dSSheng; ATOMIC-NEXT:    move.l (16,%sp), (%sp)
237ebbc5de7SPeter Lafreniere; ATOMIC-NEXT:    jsr __atomic_load_8
238e086b24dSSheng; ATOMIC-NEXT:    adda.l #12, %sp
239e086b24dSSheng; ATOMIC-NEXT:    rts
240cd0d11beSFangrui Song  %1 = load atomic i64, ptr %a monotonic, align 8
241e086b24dSSheng  ret i64 %1
242e086b24dSSheng}
243e086b24dSSheng
244cd0d11beSFangrui Songdefine i64 @atomic_load_i64_acquire(ptr %a) nounwind {
245e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i64_acquire:
246e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
247e086b24dSSheng; NO-ATOMIC-NEXT:    suba.l #12, %sp
248e086b24dSSheng; NO-ATOMIC-NEXT:    move.l #2, (4,%sp)
249e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)
250ebbc5de7SPeter Lafreniere; NO-ATOMIC-NEXT:    jsr __atomic_load_8
251e086b24dSSheng; NO-ATOMIC-NEXT:    adda.l #12, %sp
252e086b24dSSheng; NO-ATOMIC-NEXT:    rts
253e086b24dSSheng;
254e086b24dSSheng; ATOMIC-LABEL: atomic_load_i64_acquire:
255e086b24dSSheng; ATOMIC:       ; %bb.0:
256e086b24dSSheng; ATOMIC-NEXT:    suba.l #12, %sp
257e086b24dSSheng; ATOMIC-NEXT:    move.l #2, (4,%sp)
258e086b24dSSheng; ATOMIC-NEXT:    move.l (16,%sp), (%sp)
259ebbc5de7SPeter Lafreniere; ATOMIC-NEXT:    jsr __atomic_load_8
260e086b24dSSheng; ATOMIC-NEXT:    adda.l #12, %sp
261e086b24dSSheng; ATOMIC-NEXT:    rts
262cd0d11beSFangrui Song  %1 = load atomic i64, ptr %a acquire, align 8
263e086b24dSSheng  ret i64 %1
264e086b24dSSheng}
265e086b24dSSheng
266cd0d11beSFangrui Songdefine i64 @atomic_load_i64_seq_cst(ptr %a) nounwind {
267e086b24dSSheng; NO-ATOMIC-LABEL: atomic_load_i64_seq_cst:
268e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
269e086b24dSSheng; NO-ATOMIC-NEXT:    suba.l #12, %sp
270e086b24dSSheng; NO-ATOMIC-NEXT:    move.l #5, (4,%sp)
271e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)
272ebbc5de7SPeter Lafreniere; NO-ATOMIC-NEXT:    jsr __atomic_load_8
273e086b24dSSheng; NO-ATOMIC-NEXT:    adda.l #12, %sp
274e086b24dSSheng; NO-ATOMIC-NEXT:    rts
275e086b24dSSheng;
276e086b24dSSheng; ATOMIC-LABEL: atomic_load_i64_seq_cst:
277e086b24dSSheng; ATOMIC:       ; %bb.0:
278e086b24dSSheng; ATOMIC-NEXT:    suba.l #12, %sp
279e086b24dSSheng; ATOMIC-NEXT:    move.l #5, (4,%sp)
280e086b24dSSheng; ATOMIC-NEXT:    move.l (16,%sp), (%sp)
281ebbc5de7SPeter Lafreniere; ATOMIC-NEXT:    jsr __atomic_load_8
282e086b24dSSheng; ATOMIC-NEXT:    adda.l #12, %sp
283e086b24dSSheng; ATOMIC-NEXT:    rts
284cd0d11beSFangrui Song  %1 = load atomic i64, ptr %a seq_cst, align 8
285e086b24dSSheng  ret i64 %1
286e086b24dSSheng}
287e086b24dSSheng
288cd0d11beSFangrui Songdefine void @atomic_store_i8_unordered(ptr %a, i8 %val) nounwind {
289e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i8_unordered:
290e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
291e086b24dSSheng; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0
292e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
293e086b24dSSheng; NO-ATOMIC-NEXT:    move.b %d0, (%a0)
294e086b24dSSheng; NO-ATOMIC-NEXT:    rts
295e086b24dSSheng;
296e086b24dSSheng; ATOMIC-LABEL: atomic_store_i8_unordered:
297e086b24dSSheng; ATOMIC:       ; %bb.0:
298e086b24dSSheng; ATOMIC-NEXT:    move.b (11,%sp), %d0
299e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
300e086b24dSSheng; ATOMIC-NEXT:    move.b %d0, (%a0)
301e086b24dSSheng; ATOMIC-NEXT:    rts
302cd0d11beSFangrui Song  store atomic i8 %val, ptr %a unordered, align 1
303e086b24dSSheng  ret void
304e086b24dSSheng}
305e086b24dSSheng
306cd0d11beSFangrui Songdefine void @atomic_store_i8_monotonic(ptr %a, i8 %val) nounwind {
307e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i8_monotonic:
308e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
309e086b24dSSheng; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0
310e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
311e086b24dSSheng; NO-ATOMIC-NEXT:    move.b %d0, (%a0)
312e086b24dSSheng; NO-ATOMIC-NEXT:    rts
313e086b24dSSheng;
314e086b24dSSheng; ATOMIC-LABEL: atomic_store_i8_monotonic:
315e086b24dSSheng; ATOMIC:       ; %bb.0:
316e086b24dSSheng; ATOMIC-NEXT:    move.b (11,%sp), %d0
317e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
318e086b24dSSheng; ATOMIC-NEXT:    move.b %d0, (%a0)
319e086b24dSSheng; ATOMIC-NEXT:    rts
320cd0d11beSFangrui Song  store atomic i8 %val, ptr %a monotonic, align 1
321e086b24dSSheng  ret void
322e086b24dSSheng}
323e086b24dSSheng
324cd0d11beSFangrui Songdefine void @atomic_store_i8_release(ptr %a, i8 %val) nounwind {
325e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i8_release:
326e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
327e086b24dSSheng; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0
328e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
329e086b24dSSheng; NO-ATOMIC-NEXT:    move.b %d0, (%a0)
330e086b24dSSheng; NO-ATOMIC-NEXT:    rts
331e086b24dSSheng;
332e086b24dSSheng; ATOMIC-LABEL: atomic_store_i8_release:
333e086b24dSSheng; ATOMIC:       ; %bb.0:
334e086b24dSSheng; ATOMIC-NEXT:    move.b (11,%sp), %d0
335e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
336e086b24dSSheng; ATOMIC-NEXT:    move.b %d0, (%a0)
337e086b24dSSheng; ATOMIC-NEXT:    rts
338cd0d11beSFangrui Song  store atomic i8 %val, ptr %a release, align 1
339e086b24dSSheng  ret void
340e086b24dSSheng}
341e086b24dSSheng
342cd0d11beSFangrui Songdefine void @atomic_store_i8_seq_cst(ptr %a, i8 %val) nounwind {
343e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i8_seq_cst:
344e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
345e086b24dSSheng; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0
346e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
347e086b24dSSheng; NO-ATOMIC-NEXT:    move.b %d0, (%a0)
348e086b24dSSheng; NO-ATOMIC-NEXT:    rts
349e086b24dSSheng;
350e086b24dSSheng; ATOMIC-LABEL: atomic_store_i8_seq_cst:
351e086b24dSSheng; ATOMIC:       ; %bb.0:
352e086b24dSSheng; ATOMIC-NEXT:    move.b (11,%sp), %d0
353e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
354e086b24dSSheng; ATOMIC-NEXT:    move.b %d0, (%a0)
355e086b24dSSheng; ATOMIC-NEXT:    rts
356cd0d11beSFangrui Song  store atomic i8 %val, ptr %a seq_cst, align 1
357e086b24dSSheng  ret void
358e086b24dSSheng}
359e086b24dSSheng
360cd0d11beSFangrui Songdefine void @atomic_store_i16_unordered(ptr %a, i16 %val) nounwind {
361e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i16_unordered:
362e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
363e086b24dSSheng; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0
364e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
365e086b24dSSheng; NO-ATOMIC-NEXT:    move.w %d0, (%a0)
366e086b24dSSheng; NO-ATOMIC-NEXT:    rts
367e086b24dSSheng;
368e086b24dSSheng; ATOMIC-LABEL: atomic_store_i16_unordered:
369e086b24dSSheng; ATOMIC:       ; %bb.0:
370e086b24dSSheng; ATOMIC-NEXT:    move.w (10,%sp), %d0
371e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
372e086b24dSSheng; ATOMIC-NEXT:    move.w %d0, (%a0)
373e086b24dSSheng; ATOMIC-NEXT:    rts
374cd0d11beSFangrui Song  store atomic i16 %val, ptr %a unordered, align 2
375e086b24dSSheng  ret void
376e086b24dSSheng}
377e086b24dSSheng
378cd0d11beSFangrui Songdefine void @atomic_store_i16_monotonic(ptr %a, i16 %val) nounwind {
379e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i16_monotonic:
380e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
381e086b24dSSheng; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0
382e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
383e086b24dSSheng; NO-ATOMIC-NEXT:    move.w %d0, (%a0)
384e086b24dSSheng; NO-ATOMIC-NEXT:    rts
385e086b24dSSheng;
386e086b24dSSheng; ATOMIC-LABEL: atomic_store_i16_monotonic:
387e086b24dSSheng; ATOMIC:       ; %bb.0:
388e086b24dSSheng; ATOMIC-NEXT:    move.w (10,%sp), %d0
389e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
390e086b24dSSheng; ATOMIC-NEXT:    move.w %d0, (%a0)
391e086b24dSSheng; ATOMIC-NEXT:    rts
392cd0d11beSFangrui Song  store atomic i16 %val, ptr %a monotonic, align 2
393e086b24dSSheng  ret void
394e086b24dSSheng}
395e086b24dSSheng
396cd0d11beSFangrui Songdefine void @atomic_store_i16_release(ptr %a, i16 %val) nounwind {
397e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i16_release:
398e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
399e086b24dSSheng; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0
400e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
401e086b24dSSheng; NO-ATOMIC-NEXT:    move.w %d0, (%a0)
402e086b24dSSheng; NO-ATOMIC-NEXT:    rts
403e086b24dSSheng;
404e086b24dSSheng; ATOMIC-LABEL: atomic_store_i16_release:
405e086b24dSSheng; ATOMIC:       ; %bb.0:
406e086b24dSSheng; ATOMIC-NEXT:    move.w (10,%sp), %d0
407e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
408e086b24dSSheng; ATOMIC-NEXT:    move.w %d0, (%a0)
409e086b24dSSheng; ATOMIC-NEXT:    rts
410cd0d11beSFangrui Song  store atomic i16 %val, ptr %a release, align 2
411e086b24dSSheng  ret void
412e086b24dSSheng}
413e086b24dSSheng
414cd0d11beSFangrui Songdefine void @atomic_store_i16_seq_cst(ptr %a, i16 %val) nounwind {
415e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i16_seq_cst:
416e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
417e086b24dSSheng; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0
418e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
419e086b24dSSheng; NO-ATOMIC-NEXT:    move.w %d0, (%a0)
420e086b24dSSheng; NO-ATOMIC-NEXT:    rts
421e086b24dSSheng;
422e086b24dSSheng; ATOMIC-LABEL: atomic_store_i16_seq_cst:
423e086b24dSSheng; ATOMIC:       ; %bb.0:
424e086b24dSSheng; ATOMIC-NEXT:    move.w (10,%sp), %d0
425e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
426e086b24dSSheng; ATOMIC-NEXT:    move.w %d0, (%a0)
427e086b24dSSheng; ATOMIC-NEXT:    rts
428cd0d11beSFangrui Song  store atomic i16 %val, ptr %a seq_cst, align 2
429e086b24dSSheng  ret void
430e086b24dSSheng}
431e086b24dSSheng
432cd0d11beSFangrui Songdefine void @atomic_store_i32_unordered(ptr %a, i32 %val) nounwind {
433e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i32_unordered:
434e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
435e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0
436e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
437e086b24dSSheng; NO-ATOMIC-NEXT:    move.l %d0, (%a0)
438e086b24dSSheng; NO-ATOMIC-NEXT:    rts
439e086b24dSSheng;
440e086b24dSSheng; ATOMIC-LABEL: atomic_store_i32_unordered:
441e086b24dSSheng; ATOMIC:       ; %bb.0:
442e086b24dSSheng; ATOMIC-NEXT:    move.l (8,%sp), %d0
443e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
444e086b24dSSheng; ATOMIC-NEXT:    move.l %d0, (%a0)
445e086b24dSSheng; ATOMIC-NEXT:    rts
446cd0d11beSFangrui Song  store atomic i32 %val, ptr %a unordered, align 4
447e086b24dSSheng  ret void
448e086b24dSSheng}
449e086b24dSSheng
450cd0d11beSFangrui Songdefine void @atomic_store_i32_monotonic(ptr %a, i32 %val) nounwind {
451e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i32_monotonic:
452e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
453e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0
454e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
455e086b24dSSheng; NO-ATOMIC-NEXT:    move.l %d0, (%a0)
456e086b24dSSheng; NO-ATOMIC-NEXT:    rts
457e086b24dSSheng;
458e086b24dSSheng; ATOMIC-LABEL: atomic_store_i32_monotonic:
459e086b24dSSheng; ATOMIC:       ; %bb.0:
460e086b24dSSheng; ATOMIC-NEXT:    move.l (8,%sp), %d0
461e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
462e086b24dSSheng; ATOMIC-NEXT:    move.l %d0, (%a0)
463e086b24dSSheng; ATOMIC-NEXT:    rts
464cd0d11beSFangrui Song  store atomic i32 %val, ptr %a monotonic, align 4
465e086b24dSSheng  ret void
466e086b24dSSheng}
467e086b24dSSheng
468cd0d11beSFangrui Songdefine void @atomic_store_i32_release(ptr %a, i32 %val) nounwind {
469e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i32_release:
470e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
471e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0
472e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
473e086b24dSSheng; NO-ATOMIC-NEXT:    move.l %d0, (%a0)
474e086b24dSSheng; NO-ATOMIC-NEXT:    rts
475e086b24dSSheng;
476e086b24dSSheng; ATOMIC-LABEL: atomic_store_i32_release:
477e086b24dSSheng; ATOMIC:       ; %bb.0:
478e086b24dSSheng; ATOMIC-NEXT:    move.l (8,%sp), %d0
479e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
480e086b24dSSheng; ATOMIC-NEXT:    move.l %d0, (%a0)
481e086b24dSSheng; ATOMIC-NEXT:    rts
482cd0d11beSFangrui Song  store atomic i32 %val, ptr %a release, align 4
483e086b24dSSheng  ret void
484e086b24dSSheng}
485e086b24dSSheng
486cd0d11beSFangrui Songdefine void @atomic_store_i32_seq_cst(ptr %a, i32 %val) nounwind {
487e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i32_seq_cst:
488e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
489e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0
490e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
491e086b24dSSheng; NO-ATOMIC-NEXT:    move.l %d0, (%a0)
492e086b24dSSheng; NO-ATOMIC-NEXT:    rts
493e086b24dSSheng;
494e086b24dSSheng; ATOMIC-LABEL: atomic_store_i32_seq_cst:
495e086b24dSSheng; ATOMIC:       ; %bb.0:
496e086b24dSSheng; ATOMIC-NEXT:    move.l (8,%sp), %d0
497e086b24dSSheng; ATOMIC-NEXT:    move.l (4,%sp), %a0
498e086b24dSSheng; ATOMIC-NEXT:    move.l %d0, (%a0)
499e086b24dSSheng; ATOMIC-NEXT:    rts
500cd0d11beSFangrui Song  store atomic i32 %val, ptr %a seq_cst, align 4
501e086b24dSSheng  ret void
502e086b24dSSheng}
503e086b24dSSheng
504cd0d11beSFangrui Songdefine void @atomic_store_i64_unordered(ptr %a, i64 %val) nounwind {
505e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i64_unordered:
506e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
507e086b24dSSheng; NO-ATOMIC-NEXT:    suba.l #20, %sp
508e086b24dSSheng; NO-ATOMIC-NEXT:    move.l #0, (12,%sp)
509e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
510e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
511e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)
512ebbc5de7SPeter Lafreniere; NO-ATOMIC-NEXT:    jsr __atomic_store_8
513e086b24dSSheng; NO-ATOMIC-NEXT:    adda.l #20, %sp
514e086b24dSSheng; NO-ATOMIC-NEXT:    rts
515e086b24dSSheng;
516e086b24dSSheng; ATOMIC-LABEL: atomic_store_i64_unordered:
517e086b24dSSheng; ATOMIC:       ; %bb.0:
518e086b24dSSheng; ATOMIC-NEXT:    suba.l #20, %sp
519e086b24dSSheng; ATOMIC-NEXT:    move.l #0, (12,%sp)
520e086b24dSSheng; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
521e086b24dSSheng; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
522e086b24dSSheng; ATOMIC-NEXT:    move.l (24,%sp), (%sp)
523ebbc5de7SPeter Lafreniere; ATOMIC-NEXT:    jsr __atomic_store_8
524e086b24dSSheng; ATOMIC-NEXT:    adda.l #20, %sp
525e086b24dSSheng; ATOMIC-NEXT:    rts
526cd0d11beSFangrui Song  store atomic i64 %val, ptr %a unordered, align 8
527e086b24dSSheng  ret void
528e086b24dSSheng}
529e086b24dSSheng
530cd0d11beSFangrui Songdefine void @atomic_store_i64_monotonic(ptr %a, i64 %val) nounwind {
531e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i64_monotonic:
532e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
533e086b24dSSheng; NO-ATOMIC-NEXT:    suba.l #20, %sp
534e086b24dSSheng; NO-ATOMIC-NEXT:    move.l #0, (12,%sp)
535e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
536e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
537e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)
538ebbc5de7SPeter Lafreniere; NO-ATOMIC-NEXT:    jsr __atomic_store_8
539e086b24dSSheng; NO-ATOMIC-NEXT:    adda.l #20, %sp
540e086b24dSSheng; NO-ATOMIC-NEXT:    rts
541e086b24dSSheng;
542e086b24dSSheng; ATOMIC-LABEL: atomic_store_i64_monotonic:
543e086b24dSSheng; ATOMIC:       ; %bb.0:
544e086b24dSSheng; ATOMIC-NEXT:    suba.l #20, %sp
545e086b24dSSheng; ATOMIC-NEXT:    move.l #0, (12,%sp)
546e086b24dSSheng; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
547e086b24dSSheng; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
548e086b24dSSheng; ATOMIC-NEXT:    move.l (24,%sp), (%sp)
549ebbc5de7SPeter Lafreniere; ATOMIC-NEXT:    jsr __atomic_store_8
550e086b24dSSheng; ATOMIC-NEXT:    adda.l #20, %sp
551e086b24dSSheng; ATOMIC-NEXT:    rts
552cd0d11beSFangrui Song  store atomic i64 %val, ptr %a monotonic, align 8
553e086b24dSSheng  ret void
554e086b24dSSheng}
555e086b24dSSheng
556cd0d11beSFangrui Songdefine void @atomic_store_i64_release(ptr %a, i64 %val) nounwind {
557e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i64_release:
558e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
559e086b24dSSheng; NO-ATOMIC-NEXT:    suba.l #20, %sp
560e086b24dSSheng; NO-ATOMIC-NEXT:    move.l #3, (12,%sp)
561e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
562e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
563e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)
564ebbc5de7SPeter Lafreniere; NO-ATOMIC-NEXT:    jsr __atomic_store_8
565e086b24dSSheng; NO-ATOMIC-NEXT:    adda.l #20, %sp
566e086b24dSSheng; NO-ATOMIC-NEXT:    rts
567e086b24dSSheng;
568e086b24dSSheng; ATOMIC-LABEL: atomic_store_i64_release:
569e086b24dSSheng; ATOMIC:       ; %bb.0:
570e086b24dSSheng; ATOMIC-NEXT:    suba.l #20, %sp
571e086b24dSSheng; ATOMIC-NEXT:    move.l #3, (12,%sp)
572e086b24dSSheng; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
573e086b24dSSheng; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
574e086b24dSSheng; ATOMIC-NEXT:    move.l (24,%sp), (%sp)
575ebbc5de7SPeter Lafreniere; ATOMIC-NEXT:    jsr __atomic_store_8
576e086b24dSSheng; ATOMIC-NEXT:    adda.l #20, %sp
577e086b24dSSheng; ATOMIC-NEXT:    rts
578cd0d11beSFangrui Song  store atomic i64 %val, ptr %a release, align 8
579e086b24dSSheng  ret void
580e086b24dSSheng}
581e086b24dSSheng
582cd0d11beSFangrui Songdefine void @atomic_store_i64_seq_cst(ptr %a, i64 %val) nounwind {
583e086b24dSSheng; NO-ATOMIC-LABEL: atomic_store_i64_seq_cst:
584e086b24dSSheng; NO-ATOMIC:       ; %bb.0:
585e086b24dSSheng; NO-ATOMIC-NEXT:    suba.l #20, %sp
586e086b24dSSheng; NO-ATOMIC-NEXT:    move.l #5, (12,%sp)
587e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
588e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
589e086b24dSSheng; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)
590ebbc5de7SPeter Lafreniere; NO-ATOMIC-NEXT:    jsr __atomic_store_8
591e086b24dSSheng; NO-ATOMIC-NEXT:    adda.l #20, %sp
592e086b24dSSheng; NO-ATOMIC-NEXT:    rts
593e086b24dSSheng;
594e086b24dSSheng; ATOMIC-LABEL: atomic_store_i64_seq_cst:
595e086b24dSSheng; ATOMIC:       ; %bb.0:
596e086b24dSSheng; ATOMIC-NEXT:    suba.l #20, %sp
597e086b24dSSheng; ATOMIC-NEXT:    move.l #5, (12,%sp)
598e086b24dSSheng; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
599e086b24dSSheng; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
600e086b24dSSheng; ATOMIC-NEXT:    move.l (24,%sp), (%sp)
601ebbc5de7SPeter Lafreniere; ATOMIC-NEXT:    jsr __atomic_store_8
602e086b24dSSheng; ATOMIC-NEXT:    adda.l #20, %sp
603e086b24dSSheng; ATOMIC-NEXT:    rts
604cd0d11beSFangrui Song  store atomic i64 %val, ptr %a seq_cst, align 8
605e086b24dSSheng  ret void
606e086b24dSSheng}
607*4cce1074Sknickish
608*4cce1074Sknickishdefine void @store_arid(ptr nonnull align 4 %a) {
609*4cce1074Sknickish; NO-ATOMIC-LABEL: store_arid:
610*4cce1074Sknickish; NO-ATOMIC:         .cfi_startproc
611*4cce1074Sknickish; NO-ATOMIC-NEXT:  ; %bb.0: ; %start
612*4cce1074Sknickish; NO-ATOMIC-NEXT:    moveq #1, %d0
613*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
614*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l %d0, (32,%a0)
615*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
616*4cce1074Sknickish;
617*4cce1074Sknickish; ATOMIC-LABEL: store_arid:
618*4cce1074Sknickish; ATOMIC:         .cfi_startproc
619*4cce1074Sknickish; ATOMIC-NEXT:  ; %bb.0: ; %start
620*4cce1074Sknickish; ATOMIC-NEXT:    moveq #1, %d0
621*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
622*4cce1074Sknickish; ATOMIC-NEXT:    move.l %d0, (32,%a0)
623*4cce1074Sknickish; ATOMIC-NEXT:    rts
624*4cce1074Sknickishstart:
625*4cce1074Sknickish  %1 = getelementptr inbounds i32, ptr %a, i32 8
626*4cce1074Sknickish  store atomic i32 1, ptr %1 seq_cst, align 4
627*4cce1074Sknickish  br label %exit
628*4cce1074Sknickish
629*4cce1074Sknickishexit:                                              ; preds = %start
630*4cce1074Sknickish  ret void
631*4cce1074Sknickish}
632*4cce1074Sknickish
633*4cce1074Sknickishdefine i32 @load_arid(ptr nonnull align 4 %a) {
634*4cce1074Sknickish; NO-ATOMIC-LABEL: load_arid:
635*4cce1074Sknickish; NO-ATOMIC:         .cfi_startproc
636*4cce1074Sknickish; NO-ATOMIC-NEXT:  ; %bb.0: ; %start
637*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
638*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (32,%a0), %d0
639*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
640*4cce1074Sknickish;
641*4cce1074Sknickish; ATOMIC-LABEL: load_arid:
642*4cce1074Sknickish; ATOMIC:         .cfi_startproc
643*4cce1074Sknickish; ATOMIC-NEXT:  ; %bb.0: ; %start
644*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
645*4cce1074Sknickish; ATOMIC-NEXT:    move.l (32,%a0), %d0
646*4cce1074Sknickish; ATOMIC-NEXT:    rts
647*4cce1074Sknickishstart:
648*4cce1074Sknickish  %1 = getelementptr inbounds i32, ptr %a, i32 8
649*4cce1074Sknickish  %2 = load atomic i32, ptr %1 seq_cst, align 4
650*4cce1074Sknickish  br label %exit
651*4cce1074Sknickish
652*4cce1074Sknickishexit:                                              ; preds = %start
653*4cce1074Sknickish  ret i32 %2
654*4cce1074Sknickish}
655