[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / Atomics / aarch64-atomic-load-rcpc3.ll
blob435f0a0c01765cee2717c6679cc18450a86f6e41
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
6 define 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
13 define 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
20 define 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
27 define 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
34 define 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
41 define 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
48 define 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
55 define 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
62 define 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
69 define 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
76 define 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
83 define 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
90 define 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
97 define 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
104 define 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
111 define 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
118 define 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
125 define 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
132 define 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
139 define 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
146 define 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
153 define 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
160 define 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
167 define 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
174 define 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
181 define 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
188 define 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
195 define 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
202 define 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
209 define 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
216 define 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
223 define 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
230 define 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
237 define 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
244 define 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
251 define 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
258 define 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
265 define 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
272 define 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
280 define 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
288 define 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
295 define 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
302 define 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
309 define 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
316 define 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
323 define 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
330 define 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
337 define 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
344 define 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
351 define 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
358 define 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
365 define 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
372 define 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
379 define 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
386 define 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
393 define 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
400 define 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
407 define 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
414 define 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
421 define 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
428 define 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
435 define 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
442 define 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
449 define 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
456 define 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
463 define 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
470 define 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
477 define 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
484 define 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
491 define 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
498 define 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
505 define 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
512 define 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
519 define 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
526 define 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
533 define 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
540 define 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
547 define 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
554 define 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
561 define 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
567 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
568 ; -O0: {{.*}}
569 ; -O1: {{.*}}