xref: /llvm-project/llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-load-rcpc3.ll (revision 7c84f94eb9f9c39229ca26d21d3bcb0b35efdc71)
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=+lse2,+rcpc3 -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+lse2,+rcpc3 -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:    ldaprb 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:    ldaprb 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:    ldaprh 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:    ldaprh 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:    ldapr 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:    ldapr 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:    ldapr 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:    ldapr 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; CHECK-LABEL: load_atomic_i128_aligned_unordered:
232; CHECK:    ldp x0, x1, [x0]
233    %r = load atomic i128, ptr %ptr unordered, align 16
234    ret i128 %r
235}
236
237define dso_local i128 @load_atomic_i128_aligned_unordered_const(ptr readonly %ptr) {
238; CHECK-LABEL: load_atomic_i128_aligned_unordered_const:
239; CHECK:    ldp x0, x1, [x0]
240    %r = load atomic i128, ptr %ptr unordered, align 16
241    ret i128 %r
242}
243
244define dso_local i128 @load_atomic_i128_aligned_monotonic(ptr %ptr) {
245; CHECK-LABEL: load_atomic_i128_aligned_monotonic:
246; CHECK:    ldp x0, x1, [x0]
247    %r = load atomic i128, ptr %ptr monotonic, align 16
248    ret i128 %r
249}
250
251define dso_local i128 @load_atomic_i128_aligned_monotonic_const(ptr readonly %ptr) {
252; CHECK-LABEL: load_atomic_i128_aligned_monotonic_const:
253; CHECK:    ldp x0, x1, [x0]
254    %r = load atomic i128, ptr %ptr monotonic, align 16
255    ret i128 %r
256}
257
258define dso_local i128 @load_atomic_i128_aligned_acquire(ptr %ptr) {
259; CHECK-LABEL: load_atomic_i128_aligned_acquire:
260; CHECK:    ldiapp x0, x1, [x0]
261    %r = load atomic i128, ptr %ptr acquire, align 16
262    ret i128 %r
263}
264
265define dso_local i128 @load_atomic_i128_aligned_acquire_const(ptr readonly %ptr) {
266; CHECK-LABEL: load_atomic_i128_aligned_acquire_const:
267; CHECK:    ldiapp x0, x1, [x0]
268    %r = load atomic i128, ptr %ptr acquire, align 16
269    ret i128 %r
270}
271
272define dso_local i128 @load_atomic_i128_aligned_seq_cst(ptr %ptr) {
273; CHECK-LABEL: load_atomic_i128_aligned_seq_cst:
274; CHECK:    ldp x0, x1, [x0]
275; CHECK:    dmb ish
276    %r = load atomic i128, ptr %ptr seq_cst, align 16
277    ret i128 %r
278}
279
280define dso_local i128 @load_atomic_i128_aligned_seq_cst_const(ptr readonly %ptr) {
281; CHECK-LABEL: load_atomic_i128_aligned_seq_cst_const:
282; CHECK:    ldp x0, x1, [x0]
283; CHECK:    dmb ish
284    %r = load atomic i128, ptr %ptr seq_cst, align 16
285    ret i128 %r
286}
287
288define dso_local i8 @load_atomic_i8_unaligned_unordered(ptr %ptr) {
289; CHECK-LABEL: load_atomic_i8_unaligned_unordered:
290; CHECK:    ldrb w0, [x0]
291    %r = load atomic i8, ptr %ptr unordered, align 1
292    ret i8 %r
293}
294
295define dso_local i8 @load_atomic_i8_unaligned_unordered_const(ptr readonly %ptr) {
296; CHECK-LABEL: load_atomic_i8_unaligned_unordered_const:
297; CHECK:    ldrb w0, [x0]
298    %r = load atomic i8, ptr %ptr unordered, align 1
299    ret i8 %r
300}
301
302define dso_local i8 @load_atomic_i8_unaligned_monotonic(ptr %ptr) {
303; CHECK-LABEL: load_atomic_i8_unaligned_monotonic:
304; CHECK:    ldrb w0, [x0]
305    %r = load atomic i8, ptr %ptr monotonic, align 1
306    ret i8 %r
307}
308
309define dso_local i8 @load_atomic_i8_unaligned_monotonic_const(ptr readonly %ptr) {
310; CHECK-LABEL: load_atomic_i8_unaligned_monotonic_const:
311; CHECK:    ldrb w0, [x0]
312    %r = load atomic i8, ptr %ptr monotonic, align 1
313    ret i8 %r
314}
315
316define dso_local i8 @load_atomic_i8_unaligned_acquire(ptr %ptr) {
317; CHECK-LABEL: load_atomic_i8_unaligned_acquire:
318; CHECK:    ldaprb w0, [x0]
319    %r = load atomic i8, ptr %ptr acquire, align 1
320    ret i8 %r
321}
322
323define dso_local i8 @load_atomic_i8_unaligned_acquire_const(ptr readonly %ptr) {
324; CHECK-LABEL: load_atomic_i8_unaligned_acquire_const:
325; CHECK:    ldaprb w0, [x0]
326    %r = load atomic i8, ptr %ptr acquire, align 1
327    ret i8 %r
328}
329
330define dso_local i8 @load_atomic_i8_unaligned_seq_cst(ptr %ptr) {
331; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst:
332; CHECK:    ldarb w0, [x0]
333    %r = load atomic i8, ptr %ptr seq_cst, align 1
334    ret i8 %r
335}
336
337define dso_local i8 @load_atomic_i8_unaligned_seq_cst_const(ptr readonly %ptr) {
338; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst_const:
339; CHECK:    ldarb w0, [x0]
340    %r = load atomic i8, ptr %ptr seq_cst, align 1
341    ret i8 %r
342}
343
344define dso_local i16 @load_atomic_i16_unaligned_unordered(ptr %ptr) {
345; CHECK-LABEL: load_atomic_i16_unaligned_unordered:
346; CHECK:    bl __atomic_load
347    %r = load atomic i16, ptr %ptr unordered, align 1
348    ret i16 %r
349}
350
351define dso_local i16 @load_atomic_i16_unaligned_unordered_const(ptr readonly %ptr) {
352; CHECK-LABEL: load_atomic_i16_unaligned_unordered_const:
353; CHECK:    bl __atomic_load
354    %r = load atomic i16, ptr %ptr unordered, align 1
355    ret i16 %r
356}
357
358define dso_local i16 @load_atomic_i16_unaligned_monotonic(ptr %ptr) {
359; CHECK-LABEL: load_atomic_i16_unaligned_monotonic:
360; CHECK:    bl __atomic_load
361    %r = load atomic i16, ptr %ptr monotonic, align 1
362    ret i16 %r
363}
364
365define dso_local i16 @load_atomic_i16_unaligned_monotonic_const(ptr readonly %ptr) {
366; CHECK-LABEL: load_atomic_i16_unaligned_monotonic_const:
367; CHECK:    bl __atomic_load
368    %r = load atomic i16, ptr %ptr monotonic, align 1
369    ret i16 %r
370}
371
372define dso_local i16 @load_atomic_i16_unaligned_acquire(ptr %ptr) {
373; CHECK-LABEL: load_atomic_i16_unaligned_acquire:
374; CHECK:    bl __atomic_load
375    %r = load atomic i16, ptr %ptr acquire, align 1
376    ret i16 %r
377}
378
379define dso_local i16 @load_atomic_i16_unaligned_acquire_const(ptr readonly %ptr) {
380; CHECK-LABEL: load_atomic_i16_unaligned_acquire_const:
381; CHECK:    bl __atomic_load
382    %r = load atomic i16, ptr %ptr acquire, align 1
383    ret i16 %r
384}
385
386define dso_local i16 @load_atomic_i16_unaligned_seq_cst(ptr %ptr) {
387; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst:
388; CHECK:    bl __atomic_load
389    %r = load atomic i16, ptr %ptr seq_cst, align 1
390    ret i16 %r
391}
392
393define dso_local i16 @load_atomic_i16_unaligned_seq_cst_const(ptr readonly %ptr) {
394; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst_const:
395; CHECK:    bl __atomic_load
396    %r = load atomic i16, ptr %ptr seq_cst, align 1
397    ret i16 %r
398}
399
400define dso_local i32 @load_atomic_i32_unaligned_unordered(ptr %ptr) {
401; CHECK-LABEL: load_atomic_i32_unaligned_unordered:
402; CHECK:    bl __atomic_load
403    %r = load atomic i32, ptr %ptr unordered, align 1
404    ret i32 %r
405}
406
407define dso_local i32 @load_atomic_i32_unaligned_unordered_const(ptr readonly %ptr) {
408; CHECK-LABEL: load_atomic_i32_unaligned_unordered_const:
409; CHECK:    bl __atomic_load
410    %r = load atomic i32, ptr %ptr unordered, align 1
411    ret i32 %r
412}
413
414define dso_local i32 @load_atomic_i32_unaligned_monotonic(ptr %ptr) {
415; CHECK-LABEL: load_atomic_i32_unaligned_monotonic:
416; CHECK:    bl __atomic_load
417    %r = load atomic i32, ptr %ptr monotonic, align 1
418    ret i32 %r
419}
420
421define dso_local i32 @load_atomic_i32_unaligned_monotonic_const(ptr readonly %ptr) {
422; CHECK-LABEL: load_atomic_i32_unaligned_monotonic_const:
423; CHECK:    bl __atomic_load
424    %r = load atomic i32, ptr %ptr monotonic, align 1
425    ret i32 %r
426}
427
428define dso_local i32 @load_atomic_i32_unaligned_acquire(ptr %ptr) {
429; CHECK-LABEL: load_atomic_i32_unaligned_acquire:
430; CHECK:    bl __atomic_load
431    %r = load atomic i32, ptr %ptr acquire, align 1
432    ret i32 %r
433}
434
435define dso_local i32 @load_atomic_i32_unaligned_acquire_const(ptr readonly %ptr) {
436; CHECK-LABEL: load_atomic_i32_unaligned_acquire_const:
437; CHECK:    bl __atomic_load
438    %r = load atomic i32, ptr %ptr acquire, align 1
439    ret i32 %r
440}
441
442define dso_local i32 @load_atomic_i32_unaligned_seq_cst(ptr %ptr) {
443; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst:
444; CHECK:    bl __atomic_load
445    %r = load atomic i32, ptr %ptr seq_cst, align 1
446    ret i32 %r
447}
448
449define dso_local i32 @load_atomic_i32_unaligned_seq_cst_const(ptr readonly %ptr) {
450; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst_const:
451; CHECK:    bl __atomic_load
452    %r = load atomic i32, ptr %ptr seq_cst, align 1
453    ret i32 %r
454}
455
456define dso_local i64 @load_atomic_i64_unaligned_unordered(ptr %ptr) {
457; CHECK-LABEL: load_atomic_i64_unaligned_unordered:
458; CHECK:    bl __atomic_load
459    %r = load atomic i64, ptr %ptr unordered, align 1
460    ret i64 %r
461}
462
463define dso_local i64 @load_atomic_i64_unaligned_unordered_const(ptr readonly %ptr) {
464; CHECK-LABEL: load_atomic_i64_unaligned_unordered_const:
465; CHECK:    bl __atomic_load
466    %r = load atomic i64, ptr %ptr unordered, align 1
467    ret i64 %r
468}
469
470define dso_local i64 @load_atomic_i64_unaligned_monotonic(ptr %ptr) {
471; CHECK-LABEL: load_atomic_i64_unaligned_monotonic:
472; CHECK:    bl __atomic_load
473    %r = load atomic i64, ptr %ptr monotonic, align 1
474    ret i64 %r
475}
476
477define dso_local i64 @load_atomic_i64_unaligned_monotonic_const(ptr readonly %ptr) {
478; CHECK-LABEL: load_atomic_i64_unaligned_monotonic_const:
479; CHECK:    bl __atomic_load
480    %r = load atomic i64, ptr %ptr monotonic, align 1
481    ret i64 %r
482}
483
484define dso_local i64 @load_atomic_i64_unaligned_acquire(ptr %ptr) {
485; CHECK-LABEL: load_atomic_i64_unaligned_acquire:
486; CHECK:    bl __atomic_load
487    %r = load atomic i64, ptr %ptr acquire, align 1
488    ret i64 %r
489}
490
491define dso_local i64 @load_atomic_i64_unaligned_acquire_const(ptr readonly %ptr) {
492; CHECK-LABEL: load_atomic_i64_unaligned_acquire_const:
493; CHECK:    bl __atomic_load
494    %r = load atomic i64, ptr %ptr acquire, align 1
495    ret i64 %r
496}
497
498define dso_local i64 @load_atomic_i64_unaligned_seq_cst(ptr %ptr) {
499; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst:
500; CHECK:    bl __atomic_load
501    %r = load atomic i64, ptr %ptr seq_cst, align 1
502    ret i64 %r
503}
504
505define dso_local i64 @load_atomic_i64_unaligned_seq_cst_const(ptr readonly %ptr) {
506; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst_const:
507; CHECK:    bl __atomic_load
508    %r = load atomic i64, ptr %ptr seq_cst, align 1
509    ret i64 %r
510}
511
512define dso_local i128 @load_atomic_i128_unaligned_unordered(ptr %ptr) {
513; CHECK-LABEL: load_atomic_i128_unaligned_unordered:
514; CHECK:    bl __atomic_load
515    %r = load atomic i128, ptr %ptr unordered, align 1
516    ret i128 %r
517}
518
519define dso_local i128 @load_atomic_i128_unaligned_unordered_const(ptr readonly %ptr) {
520; CHECK-LABEL: load_atomic_i128_unaligned_unordered_const:
521; CHECK:    bl __atomic_load
522    %r = load atomic i128, ptr %ptr unordered, align 1
523    ret i128 %r
524}
525
526define dso_local i128 @load_atomic_i128_unaligned_monotonic(ptr %ptr) {
527; CHECK-LABEL: load_atomic_i128_unaligned_monotonic:
528; CHECK:    bl __atomic_load
529    %r = load atomic i128, ptr %ptr monotonic, align 1
530    ret i128 %r
531}
532
533define dso_local i128 @load_atomic_i128_unaligned_monotonic_const(ptr readonly %ptr) {
534; CHECK-LABEL: load_atomic_i128_unaligned_monotonic_const:
535; CHECK:    bl __atomic_load
536    %r = load atomic i128, ptr %ptr monotonic, align 1
537    ret i128 %r
538}
539
540define dso_local i128 @load_atomic_i128_unaligned_acquire(ptr %ptr) {
541; CHECK-LABEL: load_atomic_i128_unaligned_acquire:
542; CHECK:    bl __atomic_load
543    %r = load atomic i128, ptr %ptr acquire, align 1
544    ret i128 %r
545}
546
547define dso_local i128 @load_atomic_i128_unaligned_acquire_const(ptr readonly %ptr) {
548; CHECK-LABEL: load_atomic_i128_unaligned_acquire_const:
549; CHECK:    bl __atomic_load
550    %r = load atomic i128, ptr %ptr acquire, align 1
551    ret i128 %r
552}
553
554define dso_local i128 @load_atomic_i128_unaligned_seq_cst(ptr %ptr) {
555; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst:
556; CHECK:    bl __atomic_load
557    %r = load atomic i128, ptr %ptr seq_cst, align 1
558    ret i128 %r
559}
560
561define dso_local i128 @load_atomic_i128_unaligned_seq_cst_const(ptr readonly %ptr) {
562; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst_const:
563; CHECK:    bl __atomic_load
564    %r = load atomic i128, ptr %ptr seq_cst, align 1
565    ret i128 %r
566}
567;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
568; -O0: {{.*}}
569; -O1: {{.*}}
570