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