xref: /llvm-project/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-load-v8_1a.ll (revision f3fb973924a9ba3bdd8dfee4dc85337e8b033ab4)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --filter-out "\b(sp)\b" --filter "^\s*(ld|st[^r]|swp|cas|bl|add|and|eor|orn|orr|sub|mvn|sxt|cmp|ccmp|csel|dmb)"
2; The base test file was generated by ./llvm/test/CodeGen/AArch64/Atomics/generate-tests.py
3; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+v8.1a -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+v8.1a -O1 | FileCheck %s --check-prefixes=CHECK,-O1
5
6define dso_local i8 @load_atomic_i8_aligned_unordered(ptr %ptr) {
7; CHECK-LABEL: load_atomic_i8_aligned_unordered:
8; CHECK:    ldrb w0, [x0]
9    %r = load atomic i8, ptr %ptr unordered, align 1
10    ret i8 %r
11}
12
13define dso_local i8 @load_atomic_i8_aligned_unordered_const(ptr readonly %ptr) {
14; CHECK-LABEL: load_atomic_i8_aligned_unordered_const:
15; CHECK:    ldrb w0, [x0]
16    %r = load atomic i8, ptr %ptr unordered, align 1
17    ret i8 %r
18}
19
20define dso_local i8 @load_atomic_i8_aligned_monotonic(ptr %ptr) {
21; CHECK-LABEL: load_atomic_i8_aligned_monotonic:
22; CHECK:    ldrb w0, [x0]
23    %r = load atomic i8, ptr %ptr monotonic, align 1
24    ret i8 %r
25}
26
27define dso_local i8 @load_atomic_i8_aligned_monotonic_const(ptr readonly %ptr) {
28; CHECK-LABEL: load_atomic_i8_aligned_monotonic_const:
29; CHECK:    ldrb w0, [x0]
30    %r = load atomic i8, ptr %ptr monotonic, align 1
31    ret i8 %r
32}
33
34define dso_local i8 @load_atomic_i8_aligned_acquire(ptr %ptr) {
35; CHECK-LABEL: load_atomic_i8_aligned_acquire:
36; CHECK:    ldarb w0, [x0]
37    %r = load atomic i8, ptr %ptr acquire, align 1
38    ret i8 %r
39}
40
41define dso_local i8 @load_atomic_i8_aligned_acquire_const(ptr readonly %ptr) {
42; CHECK-LABEL: load_atomic_i8_aligned_acquire_const:
43; CHECK:    ldarb w0, [x0]
44    %r = load atomic i8, ptr %ptr acquire, align 1
45    ret i8 %r
46}
47
48define dso_local i8 @load_atomic_i8_aligned_seq_cst(ptr %ptr) {
49; CHECK-LABEL: load_atomic_i8_aligned_seq_cst:
50; CHECK:    ldarb w0, [x0]
51    %r = load atomic i8, ptr %ptr seq_cst, align 1
52    ret i8 %r
53}
54
55define dso_local i8 @load_atomic_i8_aligned_seq_cst_const(ptr readonly %ptr) {
56; CHECK-LABEL: load_atomic_i8_aligned_seq_cst_const:
57; CHECK:    ldarb w0, [x0]
58    %r = load atomic i8, ptr %ptr seq_cst, align 1
59    ret i8 %r
60}
61
62define dso_local i16 @load_atomic_i16_aligned_unordered(ptr %ptr) {
63; CHECK-LABEL: load_atomic_i16_aligned_unordered:
64; CHECK:    ldrh w0, [x0]
65    %r = load atomic i16, ptr %ptr unordered, align 2
66    ret i16 %r
67}
68
69define dso_local i16 @load_atomic_i16_aligned_unordered_const(ptr readonly %ptr) {
70; CHECK-LABEL: load_atomic_i16_aligned_unordered_const:
71; CHECK:    ldrh w0, [x0]
72    %r = load atomic i16, ptr %ptr unordered, align 2
73    ret i16 %r
74}
75
76define dso_local i16 @load_atomic_i16_aligned_monotonic(ptr %ptr) {
77; CHECK-LABEL: load_atomic_i16_aligned_monotonic:
78; CHECK:    ldrh w0, [x0]
79    %r = load atomic i16, ptr %ptr monotonic, align 2
80    ret i16 %r
81}
82
83define dso_local i16 @load_atomic_i16_aligned_monotonic_const(ptr readonly %ptr) {
84; CHECK-LABEL: load_atomic_i16_aligned_monotonic_const:
85; CHECK:    ldrh w0, [x0]
86    %r = load atomic i16, ptr %ptr monotonic, align 2
87    ret i16 %r
88}
89
90define dso_local i16 @load_atomic_i16_aligned_acquire(ptr %ptr) {
91; CHECK-LABEL: load_atomic_i16_aligned_acquire:
92; CHECK:    ldarh w0, [x0]
93    %r = load atomic i16, ptr %ptr acquire, align 2
94    ret i16 %r
95}
96
97define dso_local i16 @load_atomic_i16_aligned_acquire_const(ptr readonly %ptr) {
98; CHECK-LABEL: load_atomic_i16_aligned_acquire_const:
99; CHECK:    ldarh w0, [x0]
100    %r = load atomic i16, ptr %ptr acquire, align 2
101    ret i16 %r
102}
103
104define dso_local i16 @load_atomic_i16_aligned_seq_cst(ptr %ptr) {
105; CHECK-LABEL: load_atomic_i16_aligned_seq_cst:
106; CHECK:    ldarh w0, [x0]
107    %r = load atomic i16, ptr %ptr seq_cst, align 2
108    ret i16 %r
109}
110
111define dso_local i16 @load_atomic_i16_aligned_seq_cst_const(ptr readonly %ptr) {
112; CHECK-LABEL: load_atomic_i16_aligned_seq_cst_const:
113; CHECK:    ldarh w0, [x0]
114    %r = load atomic i16, ptr %ptr seq_cst, align 2
115    ret i16 %r
116}
117
118define dso_local i32 @load_atomic_i32_aligned_unordered(ptr %ptr) {
119; CHECK-LABEL: load_atomic_i32_aligned_unordered:
120; CHECK:    ldr w0, [x0]
121    %r = load atomic i32, ptr %ptr unordered, align 4
122    ret i32 %r
123}
124
125define dso_local i32 @load_atomic_i32_aligned_unordered_const(ptr readonly %ptr) {
126; CHECK-LABEL: load_atomic_i32_aligned_unordered_const:
127; CHECK:    ldr w0, [x0]
128    %r = load atomic i32, ptr %ptr unordered, align 4
129    ret i32 %r
130}
131
132define dso_local i32 @load_atomic_i32_aligned_monotonic(ptr %ptr) {
133; CHECK-LABEL: load_atomic_i32_aligned_monotonic:
134; CHECK:    ldr w0, [x0]
135    %r = load atomic i32, ptr %ptr monotonic, align 4
136    ret i32 %r
137}
138
139define dso_local i32 @load_atomic_i32_aligned_monotonic_const(ptr readonly %ptr) {
140; CHECK-LABEL: load_atomic_i32_aligned_monotonic_const:
141; CHECK:    ldr w0, [x0]
142    %r = load atomic i32, ptr %ptr monotonic, align 4
143    ret i32 %r
144}
145
146define dso_local i32 @load_atomic_i32_aligned_acquire(ptr %ptr) {
147; CHECK-LABEL: load_atomic_i32_aligned_acquire:
148; CHECK:    ldar w0, [x0]
149    %r = load atomic i32, ptr %ptr acquire, align 4
150    ret i32 %r
151}
152
153define dso_local i32 @load_atomic_i32_aligned_acquire_const(ptr readonly %ptr) {
154; CHECK-LABEL: load_atomic_i32_aligned_acquire_const:
155; CHECK:    ldar w0, [x0]
156    %r = load atomic i32, ptr %ptr acquire, align 4
157    ret i32 %r
158}
159
160define dso_local i32 @load_atomic_i32_aligned_seq_cst(ptr %ptr) {
161; CHECK-LABEL: load_atomic_i32_aligned_seq_cst:
162; CHECK:    ldar w0, [x0]
163    %r = load atomic i32, ptr %ptr seq_cst, align 4
164    ret i32 %r
165}
166
167define dso_local i32 @load_atomic_i32_aligned_seq_cst_const(ptr readonly %ptr) {
168; CHECK-LABEL: load_atomic_i32_aligned_seq_cst_const:
169; CHECK:    ldar w0, [x0]
170    %r = load atomic i32, ptr %ptr seq_cst, align 4
171    ret i32 %r
172}
173
174define dso_local i64 @load_atomic_i64_aligned_unordered(ptr %ptr) {
175; CHECK-LABEL: load_atomic_i64_aligned_unordered:
176; CHECK:    ldr x0, [x0]
177    %r = load atomic i64, ptr %ptr unordered, align 8
178    ret i64 %r
179}
180
181define dso_local i64 @load_atomic_i64_aligned_unordered_const(ptr readonly %ptr) {
182; CHECK-LABEL: load_atomic_i64_aligned_unordered_const:
183; CHECK:    ldr x0, [x0]
184    %r = load atomic i64, ptr %ptr unordered, align 8
185    ret i64 %r
186}
187
188define dso_local i64 @load_atomic_i64_aligned_monotonic(ptr %ptr) {
189; CHECK-LABEL: load_atomic_i64_aligned_monotonic:
190; CHECK:    ldr x0, [x0]
191    %r = load atomic i64, ptr %ptr monotonic, align 8
192    ret i64 %r
193}
194
195define dso_local i64 @load_atomic_i64_aligned_monotonic_const(ptr readonly %ptr) {
196; CHECK-LABEL: load_atomic_i64_aligned_monotonic_const:
197; CHECK:    ldr x0, [x0]
198    %r = load atomic i64, ptr %ptr monotonic, align 8
199    ret i64 %r
200}
201
202define dso_local i64 @load_atomic_i64_aligned_acquire(ptr %ptr) {
203; CHECK-LABEL: load_atomic_i64_aligned_acquire:
204; CHECK:    ldar x0, [x0]
205    %r = load atomic i64, ptr %ptr acquire, align 8
206    ret i64 %r
207}
208
209define dso_local i64 @load_atomic_i64_aligned_acquire_const(ptr readonly %ptr) {
210; CHECK-LABEL: load_atomic_i64_aligned_acquire_const:
211; CHECK:    ldar x0, [x0]
212    %r = load atomic i64, ptr %ptr acquire, align 8
213    ret i64 %r
214}
215
216define dso_local i64 @load_atomic_i64_aligned_seq_cst(ptr %ptr) {
217; CHECK-LABEL: load_atomic_i64_aligned_seq_cst:
218; CHECK:    ldar x0, [x0]
219    %r = load atomic i64, ptr %ptr seq_cst, align 8
220    ret i64 %r
221}
222
223define dso_local i64 @load_atomic_i64_aligned_seq_cst_const(ptr readonly %ptr) {
224; CHECK-LABEL: load_atomic_i64_aligned_seq_cst_const:
225; CHECK:    ldar x0, [x0]
226    %r = load atomic i64, ptr %ptr seq_cst, align 8
227    ret i64 %r
228}
229
230define dso_local i128 @load_atomic_i128_aligned_unordered(ptr %ptr) {
231; -O0-LABEL: load_atomic_i128_aligned_unordered:
232; -O0:    casp x2, x3, x0, x1, [x8]
233;
234; -O1-LABEL: load_atomic_i128_aligned_unordered:
235; -O1:    casp x2, x3, x2, x3, [x0]
236    %r = load atomic i128, ptr %ptr unordered, align 16
237    ret i128 %r
238}
239
240define dso_local i128 @load_atomic_i128_aligned_unordered_const(ptr readonly %ptr) {
241; -O0-LABEL: load_atomic_i128_aligned_unordered_const:
242; -O0:    casp x2, x3, x0, x1, [x8]
243;
244; -O1-LABEL: load_atomic_i128_aligned_unordered_const:
245; -O1:    casp x2, x3, x2, x3, [x0]
246    %r = load atomic i128, ptr %ptr unordered, align 16
247    ret i128 %r
248}
249
250define dso_local i128 @load_atomic_i128_aligned_monotonic(ptr %ptr) {
251; -O0-LABEL: load_atomic_i128_aligned_monotonic:
252; -O0:    casp x2, x3, x0, x1, [x8]
253;
254; -O1-LABEL: load_atomic_i128_aligned_monotonic:
255; -O1:    casp x2, x3, x2, x3, [x0]
256    %r = load atomic i128, ptr %ptr monotonic, align 16
257    ret i128 %r
258}
259
260define dso_local i128 @load_atomic_i128_aligned_monotonic_const(ptr readonly %ptr) {
261; -O0-LABEL: load_atomic_i128_aligned_monotonic_const:
262; -O0:    casp x2, x3, x0, x1, [x8]
263;
264; -O1-LABEL: load_atomic_i128_aligned_monotonic_const:
265; -O1:    casp x2, x3, x2, x3, [x0]
266    %r = load atomic i128, ptr %ptr monotonic, align 16
267    ret i128 %r
268}
269
270define dso_local i128 @load_atomic_i128_aligned_acquire(ptr %ptr) {
271; -O0-LABEL: load_atomic_i128_aligned_acquire:
272; -O0:    caspa x2, x3, x0, x1, [x8]
273;
274; -O1-LABEL: load_atomic_i128_aligned_acquire:
275; -O1:    caspa x2, x3, x2, x3, [x0]
276    %r = load atomic i128, ptr %ptr acquire, align 16
277    ret i128 %r
278}
279
280define dso_local i128 @load_atomic_i128_aligned_acquire_const(ptr readonly %ptr) {
281; -O0-LABEL: load_atomic_i128_aligned_acquire_const:
282; -O0:    caspa x2, x3, x0, x1, [x8]
283;
284; -O1-LABEL: load_atomic_i128_aligned_acquire_const:
285; -O1:    caspa x2, x3, x2, x3, [x0]
286    %r = load atomic i128, ptr %ptr acquire, align 16
287    ret i128 %r
288}
289
290define dso_local i128 @load_atomic_i128_aligned_seq_cst(ptr %ptr) {
291; -O0-LABEL: load_atomic_i128_aligned_seq_cst:
292; -O0:    caspal x2, x3, x0, x1, [x8]
293;
294; -O1-LABEL: load_atomic_i128_aligned_seq_cst:
295; -O1:    caspal x2, x3, x2, x3, [x0]
296    %r = load atomic i128, ptr %ptr seq_cst, align 16
297    ret i128 %r
298}
299
300define dso_local i128 @load_atomic_i128_aligned_seq_cst_const(ptr readonly %ptr) {
301; -O0-LABEL: load_atomic_i128_aligned_seq_cst_const:
302; -O0:    caspal x2, x3, x0, x1, [x8]
303;
304; -O1-LABEL: load_atomic_i128_aligned_seq_cst_const:
305; -O1:    caspal x2, x3, x2, x3, [x0]
306    %r = load atomic i128, ptr %ptr seq_cst, align 16
307    ret i128 %r
308}
309
310define dso_local i8 @load_atomic_i8_unaligned_unordered(ptr %ptr) {
311; CHECK-LABEL: load_atomic_i8_unaligned_unordered:
312; CHECK:    ldrb w0, [x0]
313    %r = load atomic i8, ptr %ptr unordered, align 1
314    ret i8 %r
315}
316
317define dso_local i8 @load_atomic_i8_unaligned_unordered_const(ptr readonly %ptr) {
318; CHECK-LABEL: load_atomic_i8_unaligned_unordered_const:
319; CHECK:    ldrb w0, [x0]
320    %r = load atomic i8, ptr %ptr unordered, align 1
321    ret i8 %r
322}
323
324define dso_local i8 @load_atomic_i8_unaligned_monotonic(ptr %ptr) {
325; CHECK-LABEL: load_atomic_i8_unaligned_monotonic:
326; CHECK:    ldrb w0, [x0]
327    %r = load atomic i8, ptr %ptr monotonic, align 1
328    ret i8 %r
329}
330
331define dso_local i8 @load_atomic_i8_unaligned_monotonic_const(ptr readonly %ptr) {
332; CHECK-LABEL: load_atomic_i8_unaligned_monotonic_const:
333; CHECK:    ldrb w0, [x0]
334    %r = load atomic i8, ptr %ptr monotonic, align 1
335    ret i8 %r
336}
337
338define dso_local i8 @load_atomic_i8_unaligned_acquire(ptr %ptr) {
339; CHECK-LABEL: load_atomic_i8_unaligned_acquire:
340; CHECK:    ldarb w0, [x0]
341    %r = load atomic i8, ptr %ptr acquire, align 1
342    ret i8 %r
343}
344
345define dso_local i8 @load_atomic_i8_unaligned_acquire_const(ptr readonly %ptr) {
346; CHECK-LABEL: load_atomic_i8_unaligned_acquire_const:
347; CHECK:    ldarb w0, [x0]
348    %r = load atomic i8, ptr %ptr acquire, align 1
349    ret i8 %r
350}
351
352define dso_local i8 @load_atomic_i8_unaligned_seq_cst(ptr %ptr) {
353; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst:
354; CHECK:    ldarb w0, [x0]
355    %r = load atomic i8, ptr %ptr seq_cst, align 1
356    ret i8 %r
357}
358
359define dso_local i8 @load_atomic_i8_unaligned_seq_cst_const(ptr readonly %ptr) {
360; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst_const:
361; CHECK:    ldarb w0, [x0]
362    %r = load atomic i8, ptr %ptr seq_cst, align 1
363    ret i8 %r
364}
365
366define dso_local i16 @load_atomic_i16_unaligned_unordered(ptr %ptr) {
367; CHECK-LABEL: load_atomic_i16_unaligned_unordered:
368; CHECK:    bl __atomic_load
369    %r = load atomic i16, ptr %ptr unordered, align 1
370    ret i16 %r
371}
372
373define dso_local i16 @load_atomic_i16_unaligned_unordered_const(ptr readonly %ptr) {
374; CHECK-LABEL: load_atomic_i16_unaligned_unordered_const:
375; CHECK:    bl __atomic_load
376    %r = load atomic i16, ptr %ptr unordered, align 1
377    ret i16 %r
378}
379
380define dso_local i16 @load_atomic_i16_unaligned_monotonic(ptr %ptr) {
381; CHECK-LABEL: load_atomic_i16_unaligned_monotonic:
382; CHECK:    bl __atomic_load
383    %r = load atomic i16, ptr %ptr monotonic, align 1
384    ret i16 %r
385}
386
387define dso_local i16 @load_atomic_i16_unaligned_monotonic_const(ptr readonly %ptr) {
388; CHECK-LABEL: load_atomic_i16_unaligned_monotonic_const:
389; CHECK:    bl __atomic_load
390    %r = load atomic i16, ptr %ptr monotonic, align 1
391    ret i16 %r
392}
393
394define dso_local i16 @load_atomic_i16_unaligned_acquire(ptr %ptr) {
395; CHECK-LABEL: load_atomic_i16_unaligned_acquire:
396; CHECK:    bl __atomic_load
397    %r = load atomic i16, ptr %ptr acquire, align 1
398    ret i16 %r
399}
400
401define dso_local i16 @load_atomic_i16_unaligned_acquire_const(ptr readonly %ptr) {
402; CHECK-LABEL: load_atomic_i16_unaligned_acquire_const:
403; CHECK:    bl __atomic_load
404    %r = load atomic i16, ptr %ptr acquire, align 1
405    ret i16 %r
406}
407
408define dso_local i16 @load_atomic_i16_unaligned_seq_cst(ptr %ptr) {
409; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst:
410; CHECK:    bl __atomic_load
411    %r = load atomic i16, ptr %ptr seq_cst, align 1
412    ret i16 %r
413}
414
415define dso_local i16 @load_atomic_i16_unaligned_seq_cst_const(ptr readonly %ptr) {
416; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst_const:
417; CHECK:    bl __atomic_load
418    %r = load atomic i16, ptr %ptr seq_cst, align 1
419    ret i16 %r
420}
421
422define dso_local i32 @load_atomic_i32_unaligned_unordered(ptr %ptr) {
423; CHECK-LABEL: load_atomic_i32_unaligned_unordered:
424; CHECK:    bl __atomic_load
425    %r = load atomic i32, ptr %ptr unordered, align 1
426    ret i32 %r
427}
428
429define dso_local i32 @load_atomic_i32_unaligned_unordered_const(ptr readonly %ptr) {
430; CHECK-LABEL: load_atomic_i32_unaligned_unordered_const:
431; CHECK:    bl __atomic_load
432    %r = load atomic i32, ptr %ptr unordered, align 1
433    ret i32 %r
434}
435
436define dso_local i32 @load_atomic_i32_unaligned_monotonic(ptr %ptr) {
437; CHECK-LABEL: load_atomic_i32_unaligned_monotonic:
438; CHECK:    bl __atomic_load
439    %r = load atomic i32, ptr %ptr monotonic, align 1
440    ret i32 %r
441}
442
443define dso_local i32 @load_atomic_i32_unaligned_monotonic_const(ptr readonly %ptr) {
444; CHECK-LABEL: load_atomic_i32_unaligned_monotonic_const:
445; CHECK:    bl __atomic_load
446    %r = load atomic i32, ptr %ptr monotonic, align 1
447    ret i32 %r
448}
449
450define dso_local i32 @load_atomic_i32_unaligned_acquire(ptr %ptr) {
451; CHECK-LABEL: load_atomic_i32_unaligned_acquire:
452; CHECK:    bl __atomic_load
453    %r = load atomic i32, ptr %ptr acquire, align 1
454    ret i32 %r
455}
456
457define dso_local i32 @load_atomic_i32_unaligned_acquire_const(ptr readonly %ptr) {
458; CHECK-LABEL: load_atomic_i32_unaligned_acquire_const:
459; CHECK:    bl __atomic_load
460    %r = load atomic i32, ptr %ptr acquire, align 1
461    ret i32 %r
462}
463
464define dso_local i32 @load_atomic_i32_unaligned_seq_cst(ptr %ptr) {
465; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst:
466; CHECK:    bl __atomic_load
467    %r = load atomic i32, ptr %ptr seq_cst, align 1
468    ret i32 %r
469}
470
471define dso_local i32 @load_atomic_i32_unaligned_seq_cst_const(ptr readonly %ptr) {
472; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst_const:
473; CHECK:    bl __atomic_load
474    %r = load atomic i32, ptr %ptr seq_cst, align 1
475    ret i32 %r
476}
477
478define dso_local i64 @load_atomic_i64_unaligned_unordered(ptr %ptr) {
479; CHECK-LABEL: load_atomic_i64_unaligned_unordered:
480; CHECK:    bl __atomic_load
481    %r = load atomic i64, ptr %ptr unordered, align 1
482    ret i64 %r
483}
484
485define dso_local i64 @load_atomic_i64_unaligned_unordered_const(ptr readonly %ptr) {
486; CHECK-LABEL: load_atomic_i64_unaligned_unordered_const:
487; CHECK:    bl __atomic_load
488    %r = load atomic i64, ptr %ptr unordered, align 1
489    ret i64 %r
490}
491
492define dso_local i64 @load_atomic_i64_unaligned_monotonic(ptr %ptr) {
493; CHECK-LABEL: load_atomic_i64_unaligned_monotonic:
494; CHECK:    bl __atomic_load
495    %r = load atomic i64, ptr %ptr monotonic, align 1
496    ret i64 %r
497}
498
499define dso_local i64 @load_atomic_i64_unaligned_monotonic_const(ptr readonly %ptr) {
500; CHECK-LABEL: load_atomic_i64_unaligned_monotonic_const:
501; CHECK:    bl __atomic_load
502    %r = load atomic i64, ptr %ptr monotonic, align 1
503    ret i64 %r
504}
505
506define dso_local i64 @load_atomic_i64_unaligned_acquire(ptr %ptr) {
507; CHECK-LABEL: load_atomic_i64_unaligned_acquire:
508; CHECK:    bl __atomic_load
509    %r = load atomic i64, ptr %ptr acquire, align 1
510    ret i64 %r
511}
512
513define dso_local i64 @load_atomic_i64_unaligned_acquire_const(ptr readonly %ptr) {
514; CHECK-LABEL: load_atomic_i64_unaligned_acquire_const:
515; CHECK:    bl __atomic_load
516    %r = load atomic i64, ptr %ptr acquire, align 1
517    ret i64 %r
518}
519
520define dso_local i64 @load_atomic_i64_unaligned_seq_cst(ptr %ptr) {
521; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst:
522; CHECK:    bl __atomic_load
523    %r = load atomic i64, ptr %ptr seq_cst, align 1
524    ret i64 %r
525}
526
527define dso_local i64 @load_atomic_i64_unaligned_seq_cst_const(ptr readonly %ptr) {
528; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst_const:
529; CHECK:    bl __atomic_load
530    %r = load atomic i64, ptr %ptr seq_cst, align 1
531    ret i64 %r
532}
533
534define dso_local i128 @load_atomic_i128_unaligned_unordered(ptr %ptr) {
535; CHECK-LABEL: load_atomic_i128_unaligned_unordered:
536; CHECK:    bl __atomic_load
537    %r = load atomic i128, ptr %ptr unordered, align 1
538    ret i128 %r
539}
540
541define dso_local i128 @load_atomic_i128_unaligned_unordered_const(ptr readonly %ptr) {
542; CHECK-LABEL: load_atomic_i128_unaligned_unordered_const:
543; CHECK:    bl __atomic_load
544    %r = load atomic i128, ptr %ptr unordered, align 1
545    ret i128 %r
546}
547
548define dso_local i128 @load_atomic_i128_unaligned_monotonic(ptr %ptr) {
549; CHECK-LABEL: load_atomic_i128_unaligned_monotonic:
550; CHECK:    bl __atomic_load
551    %r = load atomic i128, ptr %ptr monotonic, align 1
552    ret i128 %r
553}
554
555define dso_local i128 @load_atomic_i128_unaligned_monotonic_const(ptr readonly %ptr) {
556; CHECK-LABEL: load_atomic_i128_unaligned_monotonic_const:
557; CHECK:    bl __atomic_load
558    %r = load atomic i128, ptr %ptr monotonic, align 1
559    ret i128 %r
560}
561
562define dso_local i128 @load_atomic_i128_unaligned_acquire(ptr %ptr) {
563; CHECK-LABEL: load_atomic_i128_unaligned_acquire:
564; CHECK:    bl __atomic_load
565    %r = load atomic i128, ptr %ptr acquire, align 1
566    ret i128 %r
567}
568
569define dso_local i128 @load_atomic_i128_unaligned_acquire_const(ptr readonly %ptr) {
570; CHECK-LABEL: load_atomic_i128_unaligned_acquire_const:
571; CHECK:    bl __atomic_load
572    %r = load atomic i128, ptr %ptr acquire, align 1
573    ret i128 %r
574}
575
576define dso_local i128 @load_atomic_i128_unaligned_seq_cst(ptr %ptr) {
577; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst:
578; CHECK:    bl __atomic_load
579    %r = load atomic i128, ptr %ptr seq_cst, align 1
580    ret i128 %r
581}
582
583define dso_local i128 @load_atomic_i128_unaligned_seq_cst_const(ptr readonly %ptr) {
584; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst_const:
585; CHECK:    bl __atomic_load
586    %r = load atomic i128, ptr %ptr seq_cst, align 1
587    ret i128 %r
588}
589