xref: /llvm-project/llvm/test/CodeGen/M68k/CodeModel/Large/Atomics/load-store.ll (revision 4cce10743d2275710d3d2e0de8013386a9799092)
1*4cce1074Sknickish; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68000 --code-model=large | FileCheck %s --check-prefix=NO-ATOMIC
3*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68010 --code-model=large | FileCheck %s --check-prefix=NO-ATOMIC
4*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68000 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=NO-ATOMIC-PIC
5*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68010 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=NO-ATOMIC-PIC
6*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68020 --code-model=large | FileCheck %s --check-prefix=ATOMIC
7*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68030 --code-model=large | FileCheck %s --check-prefix=ATOMIC
8*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68040 --code-model=large | FileCheck %s --check-prefix=ATOMIC
9*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68020 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC
10*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68030 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC
11*4cce1074Sknickish; RUN: llc %s -o - -mtriple=m68k -mcpu=M68040 --code-model=large --relocation-model=pic | FileCheck %s --check-prefix=ATOMIC-PIC
12*4cce1074Sknickish
13*4cce1074Sknickishdefine i8 @atomic_load_i8_unordered(ptr %a) nounwind {
14*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i8_unordered:
15*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
16*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
17*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b (%a0), %d0
18*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
19*4cce1074Sknickish;
20*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i8_unordered:
21*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
22*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
23*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b (%a0), %d0
24*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
25*4cce1074Sknickish;
26*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i8_unordered:
27*4cce1074Sknickish; ATOMIC:       ; %bb.0:
28*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
29*4cce1074Sknickish; ATOMIC-NEXT:    move.b (%a0), %d0
30*4cce1074Sknickish; ATOMIC-NEXT:    rts
31*4cce1074Sknickish;
32*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i8_unordered:
33*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
34*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
35*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b (%a0), %d0
36*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
37*4cce1074Sknickish  %1 = load atomic i8, ptr %a unordered, align 1
38*4cce1074Sknickish  ret i8 %1
39*4cce1074Sknickish}
40*4cce1074Sknickish
41*4cce1074Sknickishdefine i8 @atomic_load_i8_monotonic(ptr %a) nounwind {
42*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i8_monotonic:
43*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
44*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
45*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b (%a0), %d0
46*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
47*4cce1074Sknickish;
48*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i8_monotonic:
49*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
50*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
51*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b (%a0), %d0
52*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
53*4cce1074Sknickish;
54*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i8_monotonic:
55*4cce1074Sknickish; ATOMIC:       ; %bb.0:
56*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
57*4cce1074Sknickish; ATOMIC-NEXT:    move.b (%a0), %d0
58*4cce1074Sknickish; ATOMIC-NEXT:    rts
59*4cce1074Sknickish;
60*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i8_monotonic:
61*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
62*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
63*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b (%a0), %d0
64*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
65*4cce1074Sknickish  %1 = load atomic i8, ptr %a monotonic, align 1
66*4cce1074Sknickish  ret i8 %1
67*4cce1074Sknickish}
68*4cce1074Sknickish
69*4cce1074Sknickishdefine i8 @atomic_load_i8_acquire(ptr %a) nounwind {
70*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i8_acquire:
71*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
72*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
73*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b (%a0), %d0
74*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
75*4cce1074Sknickish;
76*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i8_acquire:
77*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
78*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
79*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b (%a0), %d0
80*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
81*4cce1074Sknickish;
82*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i8_acquire:
83*4cce1074Sknickish; ATOMIC:       ; %bb.0:
84*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
85*4cce1074Sknickish; ATOMIC-NEXT:    move.b (%a0), %d0
86*4cce1074Sknickish; ATOMIC-NEXT:    rts
87*4cce1074Sknickish;
88*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i8_acquire:
89*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
90*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
91*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b (%a0), %d0
92*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
93*4cce1074Sknickish  %1 = load atomic i8, ptr %a acquire, align 1
94*4cce1074Sknickish  ret i8 %1
95*4cce1074Sknickish}
96*4cce1074Sknickish
97*4cce1074Sknickishdefine i8 @atomic_load_i8_seq_cst(ptr %a) nounwind {
98*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i8_seq_cst:
99*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
100*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
101*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b (%a0), %d0
102*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
103*4cce1074Sknickish;
104*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i8_seq_cst:
105*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
106*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
107*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b (%a0), %d0
108*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
109*4cce1074Sknickish;
110*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i8_seq_cst:
111*4cce1074Sknickish; ATOMIC:       ; %bb.0:
112*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
113*4cce1074Sknickish; ATOMIC-NEXT:    move.b (%a0), %d0
114*4cce1074Sknickish; ATOMIC-NEXT:    rts
115*4cce1074Sknickish;
116*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i8_seq_cst:
117*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
118*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
119*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b (%a0), %d0
120*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
121*4cce1074Sknickish  %1 = load atomic i8, ptr %a seq_cst, align 1
122*4cce1074Sknickish  ret i8 %1
123*4cce1074Sknickish}
124*4cce1074Sknickish
125*4cce1074Sknickishdefine i16 @atomic_load_i16_unordered(ptr %a) nounwind {
126*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i16_unordered:
127*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
128*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
129*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w (%a0), %d0
130*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
131*4cce1074Sknickish;
132*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i16_unordered:
133*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
134*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
135*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w (%a0), %d0
136*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
137*4cce1074Sknickish;
138*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i16_unordered:
139*4cce1074Sknickish; ATOMIC:       ; %bb.0:
140*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
141*4cce1074Sknickish; ATOMIC-NEXT:    move.w (%a0), %d0
142*4cce1074Sknickish; ATOMIC-NEXT:    rts
143*4cce1074Sknickish;
144*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i16_unordered:
145*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
146*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
147*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w (%a0), %d0
148*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
149*4cce1074Sknickish  %1 = load atomic i16, ptr %a unordered, align 2
150*4cce1074Sknickish  ret i16 %1
151*4cce1074Sknickish}
152*4cce1074Sknickish
153*4cce1074Sknickishdefine i16 @atomic_load_i16_monotonic(ptr %a) nounwind {
154*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i16_monotonic:
155*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
156*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
157*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w (%a0), %d0
158*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
159*4cce1074Sknickish;
160*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i16_monotonic:
161*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
162*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
163*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w (%a0), %d0
164*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
165*4cce1074Sknickish;
166*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i16_monotonic:
167*4cce1074Sknickish; ATOMIC:       ; %bb.0:
168*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
169*4cce1074Sknickish; ATOMIC-NEXT:    move.w (%a0), %d0
170*4cce1074Sknickish; ATOMIC-NEXT:    rts
171*4cce1074Sknickish;
172*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i16_monotonic:
173*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
174*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
175*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w (%a0), %d0
176*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
177*4cce1074Sknickish  %1 = load atomic i16, ptr %a monotonic, align 2
178*4cce1074Sknickish  ret i16 %1
179*4cce1074Sknickish}
180*4cce1074Sknickish
181*4cce1074Sknickishdefine i16 @atomic_load_i16_acquire(ptr %a) nounwind {
182*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i16_acquire:
183*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
184*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
185*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w (%a0), %d0
186*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
187*4cce1074Sknickish;
188*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i16_acquire:
189*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
190*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
191*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w (%a0), %d0
192*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
193*4cce1074Sknickish;
194*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i16_acquire:
195*4cce1074Sknickish; ATOMIC:       ; %bb.0:
196*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
197*4cce1074Sknickish; ATOMIC-NEXT:    move.w (%a0), %d0
198*4cce1074Sknickish; ATOMIC-NEXT:    rts
199*4cce1074Sknickish;
200*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i16_acquire:
201*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
202*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
203*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w (%a0), %d0
204*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
205*4cce1074Sknickish  %1 = load atomic i16, ptr %a acquire, align 2
206*4cce1074Sknickish  ret i16 %1
207*4cce1074Sknickish}
208*4cce1074Sknickish
209*4cce1074Sknickishdefine i16 @atomic_load_i16_seq_cst(ptr %a) nounwind {
210*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i16_seq_cst:
211*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
212*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
213*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w (%a0), %d0
214*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
215*4cce1074Sknickish;
216*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i16_seq_cst:
217*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
218*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
219*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w (%a0), %d0
220*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
221*4cce1074Sknickish;
222*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i16_seq_cst:
223*4cce1074Sknickish; ATOMIC:       ; %bb.0:
224*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
225*4cce1074Sknickish; ATOMIC-NEXT:    move.w (%a0), %d0
226*4cce1074Sknickish; ATOMIC-NEXT:    rts
227*4cce1074Sknickish;
228*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i16_seq_cst:
229*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
230*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
231*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w (%a0), %d0
232*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
233*4cce1074Sknickish  %1 = load atomic i16, ptr %a seq_cst, align 2
234*4cce1074Sknickish  ret i16 %1
235*4cce1074Sknickish}
236*4cce1074Sknickish
237*4cce1074Sknickishdefine i32 @atomic_load_i32_unordered(ptr %a) nounwind {
238*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i32_unordered:
239*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
240*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
241*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (%a0), %d0
242*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
243*4cce1074Sknickish;
244*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i32_unordered:
245*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
246*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
247*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (%a0), %d0
248*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
249*4cce1074Sknickish;
250*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i32_unordered:
251*4cce1074Sknickish; ATOMIC:       ; %bb.0:
252*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
253*4cce1074Sknickish; ATOMIC-NEXT:    move.l (%a0), %d0
254*4cce1074Sknickish; ATOMIC-NEXT:    rts
255*4cce1074Sknickish;
256*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i32_unordered:
257*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
258*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
259*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (%a0), %d0
260*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
261*4cce1074Sknickish  %1 = load atomic i32, ptr %a unordered, align 4
262*4cce1074Sknickish  ret i32 %1
263*4cce1074Sknickish}
264*4cce1074Sknickish
265*4cce1074Sknickishdefine i32 @atomic_load_i32_monotonic(ptr %a) nounwind {
266*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i32_monotonic:
267*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
268*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
269*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (%a0), %d0
270*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
271*4cce1074Sknickish;
272*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i32_monotonic:
273*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
274*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
275*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (%a0), %d0
276*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
277*4cce1074Sknickish;
278*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i32_monotonic:
279*4cce1074Sknickish; ATOMIC:       ; %bb.0:
280*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
281*4cce1074Sknickish; ATOMIC-NEXT:    move.l (%a0), %d0
282*4cce1074Sknickish; ATOMIC-NEXT:    rts
283*4cce1074Sknickish;
284*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i32_monotonic:
285*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
286*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
287*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (%a0), %d0
288*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
289*4cce1074Sknickish  %1 = load atomic i32, ptr %a monotonic, align 4
290*4cce1074Sknickish  ret i32 %1
291*4cce1074Sknickish}
292*4cce1074Sknickish
293*4cce1074Sknickishdefine i32 @atomic_load_i32_acquire(ptr %a) nounwind {
294*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i32_acquire:
295*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
296*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
297*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (%a0), %d0
298*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
299*4cce1074Sknickish;
300*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i32_acquire:
301*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
302*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
303*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (%a0), %d0
304*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
305*4cce1074Sknickish;
306*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i32_acquire:
307*4cce1074Sknickish; ATOMIC:       ; %bb.0:
308*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
309*4cce1074Sknickish; ATOMIC-NEXT:    move.l (%a0), %d0
310*4cce1074Sknickish; ATOMIC-NEXT:    rts
311*4cce1074Sknickish;
312*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i32_acquire:
313*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
314*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
315*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (%a0), %d0
316*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
317*4cce1074Sknickish  %1 = load atomic i32, ptr %a acquire, align 4
318*4cce1074Sknickish  ret i32 %1
319*4cce1074Sknickish}
320*4cce1074Sknickish
321*4cce1074Sknickishdefine i32 @atomic_load_i32_seq_cst(ptr %a) nounwind {
322*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i32_seq_cst:
323*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
324*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
325*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (%a0), %d0
326*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
327*4cce1074Sknickish;
328*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i32_seq_cst:
329*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
330*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
331*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (%a0), %d0
332*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
333*4cce1074Sknickish;
334*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i32_seq_cst:
335*4cce1074Sknickish; ATOMIC:       ; %bb.0:
336*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
337*4cce1074Sknickish; ATOMIC-NEXT:    move.l (%a0), %d0
338*4cce1074Sknickish; ATOMIC-NEXT:    rts
339*4cce1074Sknickish;
340*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i32_seq_cst:
341*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
342*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
343*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (%a0), %d0
344*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
345*4cce1074Sknickish  %1 = load atomic i32, ptr %a seq_cst, align 4
346*4cce1074Sknickish  ret i32 %1
347*4cce1074Sknickish}
348*4cce1074Sknickish
349*4cce1074Sknickishdefine i64 @atomic_load_i64_unordered(ptr %a) nounwind {
350*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i64_unordered:
351*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
352*4cce1074Sknickish; NO-ATOMIC-NEXT:    suba.l #12, %sp
353*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l #0, (4,%sp)
354*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)
355*4cce1074Sknickish; NO-ATOMIC-NEXT:    jsr __atomic_load_8
356*4cce1074Sknickish; NO-ATOMIC-NEXT:    adda.l #12, %sp
357*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
358*4cce1074Sknickish;
359*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i64_unordered:
360*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
361*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    suba.l #12, %sp
362*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l #0, (4,%sp)
363*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (16,%sp), (%sp)
364*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    jsr (__atomic_load_8@PLT,%pc)
365*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    adda.l #12, %sp
366*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
367*4cce1074Sknickish;
368*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i64_unordered:
369*4cce1074Sknickish; ATOMIC:       ; %bb.0:
370*4cce1074Sknickish; ATOMIC-NEXT:    suba.l #12, %sp
371*4cce1074Sknickish; ATOMIC-NEXT:    move.l #0, (4,%sp)
372*4cce1074Sknickish; ATOMIC-NEXT:    move.l (16,%sp), (%sp)
373*4cce1074Sknickish; ATOMIC-NEXT:    jsr __atomic_load_8
374*4cce1074Sknickish; ATOMIC-NEXT:    adda.l #12, %sp
375*4cce1074Sknickish; ATOMIC-NEXT:    rts
376*4cce1074Sknickish;
377*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i64_unordered:
378*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
379*4cce1074Sknickish; ATOMIC-PIC-NEXT:    suba.l #12, %sp
380*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l #0, (4,%sp)
381*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (16,%sp), (%sp)
382*4cce1074Sknickish; ATOMIC-PIC-NEXT:    jsr (__atomic_load_8@PLT,%pc)
383*4cce1074Sknickish; ATOMIC-PIC-NEXT:    adda.l #12, %sp
384*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
385*4cce1074Sknickish  %1 = load atomic i64, ptr %a unordered, align 8
386*4cce1074Sknickish  ret i64 %1
387*4cce1074Sknickish}
388*4cce1074Sknickish
389*4cce1074Sknickishdefine i64 @atomic_load_i64_monotonic(ptr %a) nounwind {
390*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i64_monotonic:
391*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
392*4cce1074Sknickish; NO-ATOMIC-NEXT:    suba.l #12, %sp
393*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l #0, (4,%sp)
394*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)
395*4cce1074Sknickish; NO-ATOMIC-NEXT:    jsr __atomic_load_8
396*4cce1074Sknickish; NO-ATOMIC-NEXT:    adda.l #12, %sp
397*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
398*4cce1074Sknickish;
399*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i64_monotonic:
400*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
401*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    suba.l #12, %sp
402*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l #0, (4,%sp)
403*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (16,%sp), (%sp)
404*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    jsr (__atomic_load_8@PLT,%pc)
405*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    adda.l #12, %sp
406*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
407*4cce1074Sknickish;
408*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i64_monotonic:
409*4cce1074Sknickish; ATOMIC:       ; %bb.0:
410*4cce1074Sknickish; ATOMIC-NEXT:    suba.l #12, %sp
411*4cce1074Sknickish; ATOMIC-NEXT:    move.l #0, (4,%sp)
412*4cce1074Sknickish; ATOMIC-NEXT:    move.l (16,%sp), (%sp)
413*4cce1074Sknickish; ATOMIC-NEXT:    jsr __atomic_load_8
414*4cce1074Sknickish; ATOMIC-NEXT:    adda.l #12, %sp
415*4cce1074Sknickish; ATOMIC-NEXT:    rts
416*4cce1074Sknickish;
417*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i64_monotonic:
418*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
419*4cce1074Sknickish; ATOMIC-PIC-NEXT:    suba.l #12, %sp
420*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l #0, (4,%sp)
421*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (16,%sp), (%sp)
422*4cce1074Sknickish; ATOMIC-PIC-NEXT:    jsr (__atomic_load_8@PLT,%pc)
423*4cce1074Sknickish; ATOMIC-PIC-NEXT:    adda.l #12, %sp
424*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
425*4cce1074Sknickish  %1 = load atomic i64, ptr %a monotonic, align 8
426*4cce1074Sknickish  ret i64 %1
427*4cce1074Sknickish}
428*4cce1074Sknickish
429*4cce1074Sknickishdefine i64 @atomic_load_i64_acquire(ptr %a) nounwind {
430*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i64_acquire:
431*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
432*4cce1074Sknickish; NO-ATOMIC-NEXT:    suba.l #12, %sp
433*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l #2, (4,%sp)
434*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)
435*4cce1074Sknickish; NO-ATOMIC-NEXT:    jsr __atomic_load_8
436*4cce1074Sknickish; NO-ATOMIC-NEXT:    adda.l #12, %sp
437*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
438*4cce1074Sknickish;
439*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i64_acquire:
440*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
441*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    suba.l #12, %sp
442*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l #2, (4,%sp)
443*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (16,%sp), (%sp)
444*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    jsr (__atomic_load_8@PLT,%pc)
445*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    adda.l #12, %sp
446*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
447*4cce1074Sknickish;
448*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i64_acquire:
449*4cce1074Sknickish; ATOMIC:       ; %bb.0:
450*4cce1074Sknickish; ATOMIC-NEXT:    suba.l #12, %sp
451*4cce1074Sknickish; ATOMIC-NEXT:    move.l #2, (4,%sp)
452*4cce1074Sknickish; ATOMIC-NEXT:    move.l (16,%sp), (%sp)
453*4cce1074Sknickish; ATOMIC-NEXT:    jsr __atomic_load_8
454*4cce1074Sknickish; ATOMIC-NEXT:    adda.l #12, %sp
455*4cce1074Sknickish; ATOMIC-NEXT:    rts
456*4cce1074Sknickish;
457*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i64_acquire:
458*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
459*4cce1074Sknickish; ATOMIC-PIC-NEXT:    suba.l #12, %sp
460*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l #2, (4,%sp)
461*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (16,%sp), (%sp)
462*4cce1074Sknickish; ATOMIC-PIC-NEXT:    jsr (__atomic_load_8@PLT,%pc)
463*4cce1074Sknickish; ATOMIC-PIC-NEXT:    adda.l #12, %sp
464*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
465*4cce1074Sknickish  %1 = load atomic i64, ptr %a acquire, align 8
466*4cce1074Sknickish  ret i64 %1
467*4cce1074Sknickish}
468*4cce1074Sknickish
469*4cce1074Sknickishdefine i64 @atomic_load_i64_seq_cst(ptr %a) nounwind {
470*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_load_i64_seq_cst:
471*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
472*4cce1074Sknickish; NO-ATOMIC-NEXT:    suba.l #12, %sp
473*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l #5, (4,%sp)
474*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (16,%sp), (%sp)
475*4cce1074Sknickish; NO-ATOMIC-NEXT:    jsr __atomic_load_8
476*4cce1074Sknickish; NO-ATOMIC-NEXT:    adda.l #12, %sp
477*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
478*4cce1074Sknickish;
479*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_load_i64_seq_cst:
480*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
481*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    suba.l #12, %sp
482*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l #5, (4,%sp)
483*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (16,%sp), (%sp)
484*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    jsr (__atomic_load_8@PLT,%pc)
485*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    adda.l #12, %sp
486*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
487*4cce1074Sknickish;
488*4cce1074Sknickish; ATOMIC-LABEL: atomic_load_i64_seq_cst:
489*4cce1074Sknickish; ATOMIC:       ; %bb.0:
490*4cce1074Sknickish; ATOMIC-NEXT:    suba.l #12, %sp
491*4cce1074Sknickish; ATOMIC-NEXT:    move.l #5, (4,%sp)
492*4cce1074Sknickish; ATOMIC-NEXT:    move.l (16,%sp), (%sp)
493*4cce1074Sknickish; ATOMIC-NEXT:    jsr __atomic_load_8
494*4cce1074Sknickish; ATOMIC-NEXT:    adda.l #12, %sp
495*4cce1074Sknickish; ATOMIC-NEXT:    rts
496*4cce1074Sknickish;
497*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_load_i64_seq_cst:
498*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
499*4cce1074Sknickish; ATOMIC-PIC-NEXT:    suba.l #12, %sp
500*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l #5, (4,%sp)
501*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (16,%sp), (%sp)
502*4cce1074Sknickish; ATOMIC-PIC-NEXT:    jsr (__atomic_load_8@PLT,%pc)
503*4cce1074Sknickish; ATOMIC-PIC-NEXT:    adda.l #12, %sp
504*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
505*4cce1074Sknickish  %1 = load atomic i64, ptr %a seq_cst, align 8
506*4cce1074Sknickish  ret i64 %1
507*4cce1074Sknickish}
508*4cce1074Sknickish
509*4cce1074Sknickishdefine void @atomic_store_i8_unordered(ptr %a, i8 %val) nounwind {
510*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i8_unordered:
511*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
512*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0
513*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
514*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b %d0, (%a0)
515*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
516*4cce1074Sknickish;
517*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i8_unordered:
518*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
519*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b (11,%sp), %d0
520*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
521*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b %d0, (%a0)
522*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
523*4cce1074Sknickish;
524*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i8_unordered:
525*4cce1074Sknickish; ATOMIC:       ; %bb.0:
526*4cce1074Sknickish; ATOMIC-NEXT:    move.b (11,%sp), %d0
527*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
528*4cce1074Sknickish; ATOMIC-NEXT:    move.b %d0, (%a0)
529*4cce1074Sknickish; ATOMIC-NEXT:    rts
530*4cce1074Sknickish;
531*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i8_unordered:
532*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
533*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b (11,%sp), %d0
534*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
535*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b %d0, (%a0)
536*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
537*4cce1074Sknickish  store atomic i8 %val, ptr %a unordered, align 1
538*4cce1074Sknickish  ret void
539*4cce1074Sknickish}
540*4cce1074Sknickish
541*4cce1074Sknickishdefine void @atomic_store_i8_monotonic(ptr %a, i8 %val) nounwind {
542*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i8_monotonic:
543*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
544*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0
545*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
546*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b %d0, (%a0)
547*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
548*4cce1074Sknickish;
549*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i8_monotonic:
550*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
551*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b (11,%sp), %d0
552*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
553*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b %d0, (%a0)
554*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
555*4cce1074Sknickish;
556*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i8_monotonic:
557*4cce1074Sknickish; ATOMIC:       ; %bb.0:
558*4cce1074Sknickish; ATOMIC-NEXT:    move.b (11,%sp), %d0
559*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
560*4cce1074Sknickish; ATOMIC-NEXT:    move.b %d0, (%a0)
561*4cce1074Sknickish; ATOMIC-NEXT:    rts
562*4cce1074Sknickish;
563*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i8_monotonic:
564*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
565*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b (11,%sp), %d0
566*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
567*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b %d0, (%a0)
568*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
569*4cce1074Sknickish  store atomic i8 %val, ptr %a monotonic, align 1
570*4cce1074Sknickish  ret void
571*4cce1074Sknickish}
572*4cce1074Sknickish
573*4cce1074Sknickishdefine void @atomic_store_i8_release(ptr %a, i8 %val) nounwind {
574*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i8_release:
575*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
576*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0
577*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
578*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b %d0, (%a0)
579*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
580*4cce1074Sknickish;
581*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i8_release:
582*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
583*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b (11,%sp), %d0
584*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
585*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b %d0, (%a0)
586*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
587*4cce1074Sknickish;
588*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i8_release:
589*4cce1074Sknickish; ATOMIC:       ; %bb.0:
590*4cce1074Sknickish; ATOMIC-NEXT:    move.b (11,%sp), %d0
591*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
592*4cce1074Sknickish; ATOMIC-NEXT:    move.b %d0, (%a0)
593*4cce1074Sknickish; ATOMIC-NEXT:    rts
594*4cce1074Sknickish;
595*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i8_release:
596*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
597*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b (11,%sp), %d0
598*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
599*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b %d0, (%a0)
600*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
601*4cce1074Sknickish  store atomic i8 %val, ptr %a release, align 1
602*4cce1074Sknickish  ret void
603*4cce1074Sknickish}
604*4cce1074Sknickish
605*4cce1074Sknickishdefine void @atomic_store_i8_seq_cst(ptr %a, i8 %val) nounwind {
606*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i8_seq_cst:
607*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
608*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b (11,%sp), %d0
609*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
610*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.b %d0, (%a0)
611*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
612*4cce1074Sknickish;
613*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i8_seq_cst:
614*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
615*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b (11,%sp), %d0
616*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
617*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.b %d0, (%a0)
618*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
619*4cce1074Sknickish;
620*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i8_seq_cst:
621*4cce1074Sknickish; ATOMIC:       ; %bb.0:
622*4cce1074Sknickish; ATOMIC-NEXT:    move.b (11,%sp), %d0
623*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
624*4cce1074Sknickish; ATOMIC-NEXT:    move.b %d0, (%a0)
625*4cce1074Sknickish; ATOMIC-NEXT:    rts
626*4cce1074Sknickish;
627*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i8_seq_cst:
628*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
629*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b (11,%sp), %d0
630*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
631*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.b %d0, (%a0)
632*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
633*4cce1074Sknickish  store atomic i8 %val, ptr %a seq_cst, align 1
634*4cce1074Sknickish  ret void
635*4cce1074Sknickish}
636*4cce1074Sknickish
637*4cce1074Sknickishdefine void @atomic_store_i16_unordered(ptr %a, i16 %val) nounwind {
638*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i16_unordered:
639*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
640*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0
641*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
642*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w %d0, (%a0)
643*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
644*4cce1074Sknickish;
645*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i16_unordered:
646*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
647*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w (10,%sp), %d0
648*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
649*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w %d0, (%a0)
650*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
651*4cce1074Sknickish;
652*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i16_unordered:
653*4cce1074Sknickish; ATOMIC:       ; %bb.0:
654*4cce1074Sknickish; ATOMIC-NEXT:    move.w (10,%sp), %d0
655*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
656*4cce1074Sknickish; ATOMIC-NEXT:    move.w %d0, (%a0)
657*4cce1074Sknickish; ATOMIC-NEXT:    rts
658*4cce1074Sknickish;
659*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i16_unordered:
660*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
661*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w (10,%sp), %d0
662*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
663*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w %d0, (%a0)
664*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
665*4cce1074Sknickish  store atomic i16 %val, ptr %a unordered, align 2
666*4cce1074Sknickish  ret void
667*4cce1074Sknickish}
668*4cce1074Sknickish
669*4cce1074Sknickishdefine void @atomic_store_i16_monotonic(ptr %a, i16 %val) nounwind {
670*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i16_monotonic:
671*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
672*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0
673*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
674*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w %d0, (%a0)
675*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
676*4cce1074Sknickish;
677*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i16_monotonic:
678*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
679*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w (10,%sp), %d0
680*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
681*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w %d0, (%a0)
682*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
683*4cce1074Sknickish;
684*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i16_monotonic:
685*4cce1074Sknickish; ATOMIC:       ; %bb.0:
686*4cce1074Sknickish; ATOMIC-NEXT:    move.w (10,%sp), %d0
687*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
688*4cce1074Sknickish; ATOMIC-NEXT:    move.w %d0, (%a0)
689*4cce1074Sknickish; ATOMIC-NEXT:    rts
690*4cce1074Sknickish;
691*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i16_monotonic:
692*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
693*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w (10,%sp), %d0
694*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
695*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w %d0, (%a0)
696*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
697*4cce1074Sknickish  store atomic i16 %val, ptr %a monotonic, align 2
698*4cce1074Sknickish  ret void
699*4cce1074Sknickish}
700*4cce1074Sknickish
701*4cce1074Sknickishdefine void @atomic_store_i16_release(ptr %a, i16 %val) nounwind {
702*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i16_release:
703*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
704*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0
705*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
706*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w %d0, (%a0)
707*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
708*4cce1074Sknickish;
709*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i16_release:
710*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
711*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w (10,%sp), %d0
712*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
713*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w %d0, (%a0)
714*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
715*4cce1074Sknickish;
716*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i16_release:
717*4cce1074Sknickish; ATOMIC:       ; %bb.0:
718*4cce1074Sknickish; ATOMIC-NEXT:    move.w (10,%sp), %d0
719*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
720*4cce1074Sknickish; ATOMIC-NEXT:    move.w %d0, (%a0)
721*4cce1074Sknickish; ATOMIC-NEXT:    rts
722*4cce1074Sknickish;
723*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i16_release:
724*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
725*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w (10,%sp), %d0
726*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
727*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w %d0, (%a0)
728*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
729*4cce1074Sknickish  store atomic i16 %val, ptr %a release, align 2
730*4cce1074Sknickish  ret void
731*4cce1074Sknickish}
732*4cce1074Sknickish
733*4cce1074Sknickishdefine void @atomic_store_i16_seq_cst(ptr %a, i16 %val) nounwind {
734*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i16_seq_cst:
735*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
736*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w (10,%sp), %d0
737*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
738*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.w %d0, (%a0)
739*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
740*4cce1074Sknickish;
741*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i16_seq_cst:
742*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
743*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w (10,%sp), %d0
744*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
745*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.w %d0, (%a0)
746*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
747*4cce1074Sknickish;
748*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i16_seq_cst:
749*4cce1074Sknickish; ATOMIC:       ; %bb.0:
750*4cce1074Sknickish; ATOMIC-NEXT:    move.w (10,%sp), %d0
751*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
752*4cce1074Sknickish; ATOMIC-NEXT:    move.w %d0, (%a0)
753*4cce1074Sknickish; ATOMIC-NEXT:    rts
754*4cce1074Sknickish;
755*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i16_seq_cst:
756*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
757*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w (10,%sp), %d0
758*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
759*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.w %d0, (%a0)
760*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
761*4cce1074Sknickish  store atomic i16 %val, ptr %a seq_cst, align 2
762*4cce1074Sknickish  ret void
763*4cce1074Sknickish}
764*4cce1074Sknickish
765*4cce1074Sknickishdefine void @atomic_store_i32_unordered(ptr %a, i32 %val) nounwind {
766*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i32_unordered:
767*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
768*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0
769*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
770*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l %d0, (%a0)
771*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
772*4cce1074Sknickish;
773*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i32_unordered:
774*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
775*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (8,%sp), %d0
776*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
777*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l %d0, (%a0)
778*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
779*4cce1074Sknickish;
780*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i32_unordered:
781*4cce1074Sknickish; ATOMIC:       ; %bb.0:
782*4cce1074Sknickish; ATOMIC-NEXT:    move.l (8,%sp), %d0
783*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
784*4cce1074Sknickish; ATOMIC-NEXT:    move.l %d0, (%a0)
785*4cce1074Sknickish; ATOMIC-NEXT:    rts
786*4cce1074Sknickish;
787*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i32_unordered:
788*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
789*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (8,%sp), %d0
790*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
791*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l %d0, (%a0)
792*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
793*4cce1074Sknickish  store atomic i32 %val, ptr %a unordered, align 4
794*4cce1074Sknickish  ret void
795*4cce1074Sknickish}
796*4cce1074Sknickish
797*4cce1074Sknickishdefine void @atomic_store_i32_monotonic(ptr %a, i32 %val) nounwind {
798*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i32_monotonic:
799*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
800*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0
801*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
802*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l %d0, (%a0)
803*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
804*4cce1074Sknickish;
805*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i32_monotonic:
806*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
807*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (8,%sp), %d0
808*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
809*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l %d0, (%a0)
810*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
811*4cce1074Sknickish;
812*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i32_monotonic:
813*4cce1074Sknickish; ATOMIC:       ; %bb.0:
814*4cce1074Sknickish; ATOMIC-NEXT:    move.l (8,%sp), %d0
815*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
816*4cce1074Sknickish; ATOMIC-NEXT:    move.l %d0, (%a0)
817*4cce1074Sknickish; ATOMIC-NEXT:    rts
818*4cce1074Sknickish;
819*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i32_monotonic:
820*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
821*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (8,%sp), %d0
822*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
823*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l %d0, (%a0)
824*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
825*4cce1074Sknickish  store atomic i32 %val, ptr %a monotonic, align 4
826*4cce1074Sknickish  ret void
827*4cce1074Sknickish}
828*4cce1074Sknickish
829*4cce1074Sknickishdefine void @atomic_store_i32_release(ptr %a, i32 %val) nounwind {
830*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i32_release:
831*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
832*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0
833*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
834*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l %d0, (%a0)
835*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
836*4cce1074Sknickish;
837*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i32_release:
838*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
839*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (8,%sp), %d0
840*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
841*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l %d0, (%a0)
842*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
843*4cce1074Sknickish;
844*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i32_release:
845*4cce1074Sknickish; ATOMIC:       ; %bb.0:
846*4cce1074Sknickish; ATOMIC-NEXT:    move.l (8,%sp), %d0
847*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
848*4cce1074Sknickish; ATOMIC-NEXT:    move.l %d0, (%a0)
849*4cce1074Sknickish; ATOMIC-NEXT:    rts
850*4cce1074Sknickish;
851*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i32_release:
852*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
853*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (8,%sp), %d0
854*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
855*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l %d0, (%a0)
856*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
857*4cce1074Sknickish  store atomic i32 %val, ptr %a release, align 4
858*4cce1074Sknickish  ret void
859*4cce1074Sknickish}
860*4cce1074Sknickish
861*4cce1074Sknickishdefine void @atomic_store_i32_seq_cst(ptr %a, i32 %val) nounwind {
862*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i32_seq_cst:
863*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
864*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (8,%sp), %d0
865*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
866*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l %d0, (%a0)
867*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
868*4cce1074Sknickish;
869*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i32_seq_cst:
870*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
871*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (8,%sp), %d0
872*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
873*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l %d0, (%a0)
874*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
875*4cce1074Sknickish;
876*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i32_seq_cst:
877*4cce1074Sknickish; ATOMIC:       ; %bb.0:
878*4cce1074Sknickish; ATOMIC-NEXT:    move.l (8,%sp), %d0
879*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
880*4cce1074Sknickish; ATOMIC-NEXT:    move.l %d0, (%a0)
881*4cce1074Sknickish; ATOMIC-NEXT:    rts
882*4cce1074Sknickish;
883*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i32_seq_cst:
884*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
885*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (8,%sp), %d0
886*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
887*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l %d0, (%a0)
888*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
889*4cce1074Sknickish  store atomic i32 %val, ptr %a seq_cst, align 4
890*4cce1074Sknickish  ret void
891*4cce1074Sknickish}
892*4cce1074Sknickish
893*4cce1074Sknickishdefine void @atomic_store_i64_unordered(ptr %a, i64 %val) nounwind {
894*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i64_unordered:
895*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
896*4cce1074Sknickish; NO-ATOMIC-NEXT:    suba.l #20, %sp
897*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l #0, (12,%sp)
898*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
899*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
900*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)
901*4cce1074Sknickish; NO-ATOMIC-NEXT:    jsr __atomic_store_8
902*4cce1074Sknickish; NO-ATOMIC-NEXT:    adda.l #20, %sp
903*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
904*4cce1074Sknickish;
905*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i64_unordered:
906*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
907*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    suba.l #20, %sp
908*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l #0, (12,%sp)
909*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (32,%sp), (8,%sp)
910*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (28,%sp), (4,%sp)
911*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (24,%sp), (%sp)
912*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    jsr (__atomic_store_8@PLT,%pc)
913*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    adda.l #20, %sp
914*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
915*4cce1074Sknickish;
916*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i64_unordered:
917*4cce1074Sknickish; ATOMIC:       ; %bb.0:
918*4cce1074Sknickish; ATOMIC-NEXT:    suba.l #20, %sp
919*4cce1074Sknickish; ATOMIC-NEXT:    move.l #0, (12,%sp)
920*4cce1074Sknickish; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
921*4cce1074Sknickish; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
922*4cce1074Sknickish; ATOMIC-NEXT:    move.l (24,%sp), (%sp)
923*4cce1074Sknickish; ATOMIC-NEXT:    jsr __atomic_store_8
924*4cce1074Sknickish; ATOMIC-NEXT:    adda.l #20, %sp
925*4cce1074Sknickish; ATOMIC-NEXT:    rts
926*4cce1074Sknickish;
927*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i64_unordered:
928*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
929*4cce1074Sknickish; ATOMIC-PIC-NEXT:    suba.l #20, %sp
930*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l #0, (12,%sp)
931*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (32,%sp), (8,%sp)
932*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (28,%sp), (4,%sp)
933*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (24,%sp), (%sp)
934*4cce1074Sknickish; ATOMIC-PIC-NEXT:    jsr (__atomic_store_8@PLT,%pc)
935*4cce1074Sknickish; ATOMIC-PIC-NEXT:    adda.l #20, %sp
936*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
937*4cce1074Sknickish  store atomic i64 %val, ptr %a unordered, align 8
938*4cce1074Sknickish  ret void
939*4cce1074Sknickish}
940*4cce1074Sknickish
941*4cce1074Sknickishdefine void @atomic_store_i64_monotonic(ptr %a, i64 %val) nounwind {
942*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i64_monotonic:
943*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
944*4cce1074Sknickish; NO-ATOMIC-NEXT:    suba.l #20, %sp
945*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l #0, (12,%sp)
946*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
947*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
948*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)
949*4cce1074Sknickish; NO-ATOMIC-NEXT:    jsr __atomic_store_8
950*4cce1074Sknickish; NO-ATOMIC-NEXT:    adda.l #20, %sp
951*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
952*4cce1074Sknickish;
953*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i64_monotonic:
954*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
955*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    suba.l #20, %sp
956*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l #0, (12,%sp)
957*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (32,%sp), (8,%sp)
958*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (28,%sp), (4,%sp)
959*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (24,%sp), (%sp)
960*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    jsr (__atomic_store_8@PLT,%pc)
961*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    adda.l #20, %sp
962*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
963*4cce1074Sknickish;
964*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i64_monotonic:
965*4cce1074Sknickish; ATOMIC:       ; %bb.0:
966*4cce1074Sknickish; ATOMIC-NEXT:    suba.l #20, %sp
967*4cce1074Sknickish; ATOMIC-NEXT:    move.l #0, (12,%sp)
968*4cce1074Sknickish; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
969*4cce1074Sknickish; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
970*4cce1074Sknickish; ATOMIC-NEXT:    move.l (24,%sp), (%sp)
971*4cce1074Sknickish; ATOMIC-NEXT:    jsr __atomic_store_8
972*4cce1074Sknickish; ATOMIC-NEXT:    adda.l #20, %sp
973*4cce1074Sknickish; ATOMIC-NEXT:    rts
974*4cce1074Sknickish;
975*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i64_monotonic:
976*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
977*4cce1074Sknickish; ATOMIC-PIC-NEXT:    suba.l #20, %sp
978*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l #0, (12,%sp)
979*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (32,%sp), (8,%sp)
980*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (28,%sp), (4,%sp)
981*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (24,%sp), (%sp)
982*4cce1074Sknickish; ATOMIC-PIC-NEXT:    jsr (__atomic_store_8@PLT,%pc)
983*4cce1074Sknickish; ATOMIC-PIC-NEXT:    adda.l #20, %sp
984*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
985*4cce1074Sknickish  store atomic i64 %val, ptr %a monotonic, align 8
986*4cce1074Sknickish  ret void
987*4cce1074Sknickish}
988*4cce1074Sknickish
989*4cce1074Sknickishdefine void @atomic_store_i64_release(ptr %a, i64 %val) nounwind {
990*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i64_release:
991*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
992*4cce1074Sknickish; NO-ATOMIC-NEXT:    suba.l #20, %sp
993*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l #3, (12,%sp)
994*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
995*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
996*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)
997*4cce1074Sknickish; NO-ATOMIC-NEXT:    jsr __atomic_store_8
998*4cce1074Sknickish; NO-ATOMIC-NEXT:    adda.l #20, %sp
999*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
1000*4cce1074Sknickish;
1001*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i64_release:
1002*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
1003*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    suba.l #20, %sp
1004*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l #3, (12,%sp)
1005*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (32,%sp), (8,%sp)
1006*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (28,%sp), (4,%sp)
1007*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (24,%sp), (%sp)
1008*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    jsr (__atomic_store_8@PLT,%pc)
1009*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    adda.l #20, %sp
1010*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
1011*4cce1074Sknickish;
1012*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i64_release:
1013*4cce1074Sknickish; ATOMIC:       ; %bb.0:
1014*4cce1074Sknickish; ATOMIC-NEXT:    suba.l #20, %sp
1015*4cce1074Sknickish; ATOMIC-NEXT:    move.l #3, (12,%sp)
1016*4cce1074Sknickish; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
1017*4cce1074Sknickish; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
1018*4cce1074Sknickish; ATOMIC-NEXT:    move.l (24,%sp), (%sp)
1019*4cce1074Sknickish; ATOMIC-NEXT:    jsr __atomic_store_8
1020*4cce1074Sknickish; ATOMIC-NEXT:    adda.l #20, %sp
1021*4cce1074Sknickish; ATOMIC-NEXT:    rts
1022*4cce1074Sknickish;
1023*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i64_release:
1024*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
1025*4cce1074Sknickish; ATOMIC-PIC-NEXT:    suba.l #20, %sp
1026*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l #3, (12,%sp)
1027*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (32,%sp), (8,%sp)
1028*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (28,%sp), (4,%sp)
1029*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (24,%sp), (%sp)
1030*4cce1074Sknickish; ATOMIC-PIC-NEXT:    jsr (__atomic_store_8@PLT,%pc)
1031*4cce1074Sknickish; ATOMIC-PIC-NEXT:    adda.l #20, %sp
1032*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
1033*4cce1074Sknickish  store atomic i64 %val, ptr %a release, align 8
1034*4cce1074Sknickish  ret void
1035*4cce1074Sknickish}
1036*4cce1074Sknickish
1037*4cce1074Sknickishdefine void @atomic_store_i64_seq_cst(ptr %a, i64 %val) nounwind {
1038*4cce1074Sknickish; NO-ATOMIC-LABEL: atomic_store_i64_seq_cst:
1039*4cce1074Sknickish; NO-ATOMIC:       ; %bb.0:
1040*4cce1074Sknickish; NO-ATOMIC-NEXT:    suba.l #20, %sp
1041*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l #5, (12,%sp)
1042*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
1043*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
1044*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (24,%sp), (%sp)
1045*4cce1074Sknickish; NO-ATOMIC-NEXT:    jsr __atomic_store_8
1046*4cce1074Sknickish; NO-ATOMIC-NEXT:    adda.l #20, %sp
1047*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
1048*4cce1074Sknickish;
1049*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: atomic_store_i64_seq_cst:
1050*4cce1074Sknickish; NO-ATOMIC-PIC:       ; %bb.0:
1051*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    suba.l #20, %sp
1052*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l #5, (12,%sp)
1053*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (32,%sp), (8,%sp)
1054*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (28,%sp), (4,%sp)
1055*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (24,%sp), (%sp)
1056*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    jsr (__atomic_store_8@PLT,%pc)
1057*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    adda.l #20, %sp
1058*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
1059*4cce1074Sknickish;
1060*4cce1074Sknickish; ATOMIC-LABEL: atomic_store_i64_seq_cst:
1061*4cce1074Sknickish; ATOMIC:       ; %bb.0:
1062*4cce1074Sknickish; ATOMIC-NEXT:    suba.l #20, %sp
1063*4cce1074Sknickish; ATOMIC-NEXT:    move.l #5, (12,%sp)
1064*4cce1074Sknickish; ATOMIC-NEXT:    move.l (32,%sp), (8,%sp)
1065*4cce1074Sknickish; ATOMIC-NEXT:    move.l (28,%sp), (4,%sp)
1066*4cce1074Sknickish; ATOMIC-NEXT:    move.l (24,%sp), (%sp)
1067*4cce1074Sknickish; ATOMIC-NEXT:    jsr __atomic_store_8
1068*4cce1074Sknickish; ATOMIC-NEXT:    adda.l #20, %sp
1069*4cce1074Sknickish; ATOMIC-NEXT:    rts
1070*4cce1074Sknickish;
1071*4cce1074Sknickish; ATOMIC-PIC-LABEL: atomic_store_i64_seq_cst:
1072*4cce1074Sknickish; ATOMIC-PIC:       ; %bb.0:
1073*4cce1074Sknickish; ATOMIC-PIC-NEXT:    suba.l #20, %sp
1074*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l #5, (12,%sp)
1075*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (32,%sp), (8,%sp)
1076*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (28,%sp), (4,%sp)
1077*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (24,%sp), (%sp)
1078*4cce1074Sknickish; ATOMIC-PIC-NEXT:    jsr (__atomic_store_8@PLT,%pc)
1079*4cce1074Sknickish; ATOMIC-PIC-NEXT:    adda.l #20, %sp
1080*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
1081*4cce1074Sknickish  store atomic i64 %val, ptr %a seq_cst, align 8
1082*4cce1074Sknickish  ret void
1083*4cce1074Sknickish}
1084*4cce1074Sknickish
1085*4cce1074Sknickishdefine void @store_arid(ptr nonnull align 4 %a) {
1086*4cce1074Sknickish; NO-ATOMIC-LABEL: store_arid:
1087*4cce1074Sknickish; NO-ATOMIC:         .cfi_startproc
1088*4cce1074Sknickish; NO-ATOMIC-NEXT:  ; %bb.0: ; %start
1089*4cce1074Sknickish; NO-ATOMIC-NEXT:    moveq #1, %d0
1090*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
1091*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l %d0, (32,%a0)
1092*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
1093*4cce1074Sknickish;
1094*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: store_arid:
1095*4cce1074Sknickish; NO-ATOMIC-PIC:         .cfi_startproc
1096*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:  ; %bb.0: ; %start
1097*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    moveq #1, %d0
1098*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
1099*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l %d0, (32,%a0)
1100*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
1101*4cce1074Sknickish;
1102*4cce1074Sknickish; ATOMIC-LABEL: store_arid:
1103*4cce1074Sknickish; ATOMIC:         .cfi_startproc
1104*4cce1074Sknickish; ATOMIC-NEXT:  ; %bb.0: ; %start
1105*4cce1074Sknickish; ATOMIC-NEXT:    moveq #1, %d0
1106*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
1107*4cce1074Sknickish; ATOMIC-NEXT:    move.l %d0, (32,%a0)
1108*4cce1074Sknickish; ATOMIC-NEXT:    rts
1109*4cce1074Sknickish;
1110*4cce1074Sknickish; ATOMIC-PIC-LABEL: store_arid:
1111*4cce1074Sknickish; ATOMIC-PIC:         .cfi_startproc
1112*4cce1074Sknickish; ATOMIC-PIC-NEXT:  ; %bb.0: ; %start
1113*4cce1074Sknickish; ATOMIC-PIC-NEXT:    moveq #1, %d0
1114*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
1115*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l %d0, (32,%a0)
1116*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
1117*4cce1074Sknickishstart:
1118*4cce1074Sknickish  %1 = getelementptr inbounds i32, ptr %a, i32 8
1119*4cce1074Sknickish  store atomic i32 1, ptr %1 seq_cst, align 4
1120*4cce1074Sknickish  br label %exit
1121*4cce1074Sknickish
1122*4cce1074Sknickishexit:                                              ; preds = %start
1123*4cce1074Sknickish  ret void
1124*4cce1074Sknickish}
1125*4cce1074Sknickish
1126*4cce1074Sknickishdefine i32 @load_arid(ptr nonnull align 4 %a) {
1127*4cce1074Sknickish; NO-ATOMIC-LABEL: load_arid:
1128*4cce1074Sknickish; NO-ATOMIC:         .cfi_startproc
1129*4cce1074Sknickish; NO-ATOMIC-NEXT:  ; %bb.0: ; %start
1130*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (4,%sp), %a0
1131*4cce1074Sknickish; NO-ATOMIC-NEXT:    move.l (32,%a0), %d0
1132*4cce1074Sknickish; NO-ATOMIC-NEXT:    rts
1133*4cce1074Sknickish;
1134*4cce1074Sknickish; NO-ATOMIC-PIC-LABEL: load_arid:
1135*4cce1074Sknickish; NO-ATOMIC-PIC:         .cfi_startproc
1136*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:  ; %bb.0: ; %start
1137*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
1138*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    move.l (32,%a0), %d0
1139*4cce1074Sknickish; NO-ATOMIC-PIC-NEXT:    rts
1140*4cce1074Sknickish;
1141*4cce1074Sknickish; ATOMIC-LABEL: load_arid:
1142*4cce1074Sknickish; ATOMIC:         .cfi_startproc
1143*4cce1074Sknickish; ATOMIC-NEXT:  ; %bb.0: ; %start
1144*4cce1074Sknickish; ATOMIC-NEXT:    move.l (4,%sp), %a0
1145*4cce1074Sknickish; ATOMIC-NEXT:    move.l (32,%a0), %d0
1146*4cce1074Sknickish; ATOMIC-NEXT:    rts
1147*4cce1074Sknickish;
1148*4cce1074Sknickish; ATOMIC-PIC-LABEL: load_arid:
1149*4cce1074Sknickish; ATOMIC-PIC:         .cfi_startproc
1150*4cce1074Sknickish; ATOMIC-PIC-NEXT:  ; %bb.0: ; %start
1151*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (4,%sp), %a0
1152*4cce1074Sknickish; ATOMIC-PIC-NEXT:    move.l (32,%a0), %d0
1153*4cce1074Sknickish; ATOMIC-PIC-NEXT:    rts
1154*4cce1074Sknickishstart:
1155*4cce1074Sknickish  %1 = getelementptr inbounds i32, ptr %a, i32 8
1156*4cce1074Sknickish  %2 = load atomic i32, ptr %1 seq_cst, align 4
1157*4cce1074Sknickish  br label %exit
1158*4cce1074Sknickish
1159*4cce1074Sknickishexit:                                              ; preds = %start
1160*4cce1074Sknickish  ret i32 %2
1161*4cce1074Sknickish}
1162