Add PR check to suggest alternatives to using undef (#118506)
[llvm-project.git] / llvm / test / CodeGen / AArch64 / Atomics / aarch64_be-atomic-load-outline_atomics.ll
blob7a2dfd84dcadc4e0dc7d2114347ebf0698cde3e9
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=+outline-atomics -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64_be -mattr=+outline-atomics -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:    ldarb 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:    ldarb 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:    ldarh 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:    ldarh 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:    ldar 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:    ldar 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:    ldar 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:    ldar 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 ; -O0-LABEL: load_atomic_i128_aligned_unordered:
232 ; -O0:    bl __aarch64_cas16_relax
234 ; -O1-LABEL: load_atomic_i128_aligned_unordered:
235 ; -O1:    ldxp x1, x0, [x8]
236 ; -O1:    stxp w9, x1, x0, [x8]
237     %r = load atomic i128, ptr %ptr unordered, align 16
238     ret i128 %r
241 define dso_local i128 @load_atomic_i128_aligned_unordered_const(ptr readonly %ptr) {
242 ; -O0-LABEL: load_atomic_i128_aligned_unordered_const:
243 ; -O0:    bl __aarch64_cas16_relax
245 ; -O1-LABEL: load_atomic_i128_aligned_unordered_const:
246 ; -O1:    ldxp x1, x0, [x8]
247 ; -O1:    stxp w9, x1, x0, [x8]
248     %r = load atomic i128, ptr %ptr unordered, align 16
249     ret i128 %r
252 define dso_local i128 @load_atomic_i128_aligned_monotonic(ptr %ptr) {
253 ; -O0-LABEL: load_atomic_i128_aligned_monotonic:
254 ; -O0:    bl __aarch64_cas16_relax
256 ; -O1-LABEL: load_atomic_i128_aligned_monotonic:
257 ; -O1:    ldxp x1, x0, [x8]
258 ; -O1:    stxp w9, x1, x0, [x8]
259     %r = load atomic i128, ptr %ptr monotonic, align 16
260     ret i128 %r
263 define dso_local i128 @load_atomic_i128_aligned_monotonic_const(ptr readonly %ptr) {
264 ; -O0-LABEL: load_atomic_i128_aligned_monotonic_const:
265 ; -O0:    bl __aarch64_cas16_relax
267 ; -O1-LABEL: load_atomic_i128_aligned_monotonic_const:
268 ; -O1:    ldxp x1, x0, [x8]
269 ; -O1:    stxp w9, x1, x0, [x8]
270     %r = load atomic i128, ptr %ptr monotonic, align 16
271     ret i128 %r
274 define dso_local i128 @load_atomic_i128_aligned_acquire(ptr %ptr) {
275 ; -O0-LABEL: load_atomic_i128_aligned_acquire:
276 ; -O0:    bl __aarch64_cas16_acq
278 ; -O1-LABEL: load_atomic_i128_aligned_acquire:
279 ; -O1:    ldaxp x1, x0, [x8]
280 ; -O1:    stxp w9, x1, x0, [x8]
281     %r = load atomic i128, ptr %ptr acquire, align 16
282     ret i128 %r
285 define dso_local i128 @load_atomic_i128_aligned_acquire_const(ptr readonly %ptr) {
286 ; -O0-LABEL: load_atomic_i128_aligned_acquire_const:
287 ; -O0:    bl __aarch64_cas16_acq
289 ; -O1-LABEL: load_atomic_i128_aligned_acquire_const:
290 ; -O1:    ldaxp x1, x0, [x8]
291 ; -O1:    stxp w9, x1, x0, [x8]
292     %r = load atomic i128, ptr %ptr acquire, align 16
293     ret i128 %r
296 define dso_local i128 @load_atomic_i128_aligned_seq_cst(ptr %ptr) {
297 ; -O0-LABEL: load_atomic_i128_aligned_seq_cst:
298 ; -O0:    bl __aarch64_cas16_acq_rel
300 ; -O1-LABEL: load_atomic_i128_aligned_seq_cst:
301 ; -O1:    ldaxp x1, x0, [x8]
302 ; -O1:    stlxp w9, x1, x0, [x8]
303     %r = load atomic i128, ptr %ptr seq_cst, align 16
304     ret i128 %r
307 define dso_local i128 @load_atomic_i128_aligned_seq_cst_const(ptr readonly %ptr) {
308 ; -O0-LABEL: load_atomic_i128_aligned_seq_cst_const:
309 ; -O0:    bl __aarch64_cas16_acq_rel
311 ; -O1-LABEL: load_atomic_i128_aligned_seq_cst_const:
312 ; -O1:    ldaxp x1, x0, [x8]
313 ; -O1:    stlxp w9, x1, x0, [x8]
314     %r = load atomic i128, ptr %ptr seq_cst, align 16
315     ret i128 %r
318 define dso_local i8 @load_atomic_i8_unaligned_unordered(ptr %ptr) {
319 ; CHECK-LABEL: load_atomic_i8_unaligned_unordered:
320 ; CHECK:    ldrb w0, [x0]
321     %r = load atomic i8, ptr %ptr unordered, align 1
322     ret i8 %r
325 define dso_local i8 @load_atomic_i8_unaligned_unordered_const(ptr readonly %ptr) {
326 ; CHECK-LABEL: load_atomic_i8_unaligned_unordered_const:
327 ; CHECK:    ldrb w0, [x0]
328     %r = load atomic i8, ptr %ptr unordered, align 1
329     ret i8 %r
332 define dso_local i8 @load_atomic_i8_unaligned_monotonic(ptr %ptr) {
333 ; CHECK-LABEL: load_atomic_i8_unaligned_monotonic:
334 ; CHECK:    ldrb w0, [x0]
335     %r = load atomic i8, ptr %ptr monotonic, align 1
336     ret i8 %r
339 define dso_local i8 @load_atomic_i8_unaligned_monotonic_const(ptr readonly %ptr) {
340 ; CHECK-LABEL: load_atomic_i8_unaligned_monotonic_const:
341 ; CHECK:    ldrb w0, [x0]
342     %r = load atomic i8, ptr %ptr monotonic, align 1
343     ret i8 %r
346 define dso_local i8 @load_atomic_i8_unaligned_acquire(ptr %ptr) {
347 ; CHECK-LABEL: load_atomic_i8_unaligned_acquire:
348 ; CHECK:    ldarb w0, [x0]
349     %r = load atomic i8, ptr %ptr acquire, align 1
350     ret i8 %r
353 define dso_local i8 @load_atomic_i8_unaligned_acquire_const(ptr readonly %ptr) {
354 ; CHECK-LABEL: load_atomic_i8_unaligned_acquire_const:
355 ; CHECK:    ldarb w0, [x0]
356     %r = load atomic i8, ptr %ptr acquire, align 1
357     ret i8 %r
360 define dso_local i8 @load_atomic_i8_unaligned_seq_cst(ptr %ptr) {
361 ; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst:
362 ; CHECK:    ldarb w0, [x0]
363     %r = load atomic i8, ptr %ptr seq_cst, align 1
364     ret i8 %r
367 define dso_local i8 @load_atomic_i8_unaligned_seq_cst_const(ptr readonly %ptr) {
368 ; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst_const:
369 ; CHECK:    ldarb w0, [x0]
370     %r = load atomic i8, ptr %ptr seq_cst, align 1
371     ret i8 %r
374 define dso_local i16 @load_atomic_i16_unaligned_unordered(ptr %ptr) {
375 ; CHECK-LABEL: load_atomic_i16_unaligned_unordered:
376 ; CHECK:    bl __atomic_load
377     %r = load atomic i16, ptr %ptr unordered, align 1
378     ret i16 %r
381 define dso_local i16 @load_atomic_i16_unaligned_unordered_const(ptr readonly %ptr) {
382 ; CHECK-LABEL: load_atomic_i16_unaligned_unordered_const:
383 ; CHECK:    bl __atomic_load
384     %r = load atomic i16, ptr %ptr unordered, align 1
385     ret i16 %r
388 define dso_local i16 @load_atomic_i16_unaligned_monotonic(ptr %ptr) {
389 ; CHECK-LABEL: load_atomic_i16_unaligned_monotonic:
390 ; CHECK:    bl __atomic_load
391     %r = load atomic i16, ptr %ptr monotonic, align 1
392     ret i16 %r
395 define dso_local i16 @load_atomic_i16_unaligned_monotonic_const(ptr readonly %ptr) {
396 ; CHECK-LABEL: load_atomic_i16_unaligned_monotonic_const:
397 ; CHECK:    bl __atomic_load
398     %r = load atomic i16, ptr %ptr monotonic, align 1
399     ret i16 %r
402 define dso_local i16 @load_atomic_i16_unaligned_acquire(ptr %ptr) {
403 ; CHECK-LABEL: load_atomic_i16_unaligned_acquire:
404 ; CHECK:    bl __atomic_load
405     %r = load atomic i16, ptr %ptr acquire, align 1
406     ret i16 %r
409 define dso_local i16 @load_atomic_i16_unaligned_acquire_const(ptr readonly %ptr) {
410 ; CHECK-LABEL: load_atomic_i16_unaligned_acquire_const:
411 ; CHECK:    bl __atomic_load
412     %r = load atomic i16, ptr %ptr acquire, align 1
413     ret i16 %r
416 define dso_local i16 @load_atomic_i16_unaligned_seq_cst(ptr %ptr) {
417 ; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst:
418 ; CHECK:    bl __atomic_load
419     %r = load atomic i16, ptr %ptr seq_cst, align 1
420     ret i16 %r
423 define dso_local i16 @load_atomic_i16_unaligned_seq_cst_const(ptr readonly %ptr) {
424 ; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst_const:
425 ; CHECK:    bl __atomic_load
426     %r = load atomic i16, ptr %ptr seq_cst, align 1
427     ret i16 %r
430 define dso_local i32 @load_atomic_i32_unaligned_unordered(ptr %ptr) {
431 ; CHECK-LABEL: load_atomic_i32_unaligned_unordered:
432 ; CHECK:    bl __atomic_load
433     %r = load atomic i32, ptr %ptr unordered, align 1
434     ret i32 %r
437 define dso_local i32 @load_atomic_i32_unaligned_unordered_const(ptr readonly %ptr) {
438 ; CHECK-LABEL: load_atomic_i32_unaligned_unordered_const:
439 ; CHECK:    bl __atomic_load
440     %r = load atomic i32, ptr %ptr unordered, align 1
441     ret i32 %r
444 define dso_local i32 @load_atomic_i32_unaligned_monotonic(ptr %ptr) {
445 ; CHECK-LABEL: load_atomic_i32_unaligned_monotonic:
446 ; CHECK:    bl __atomic_load
447     %r = load atomic i32, ptr %ptr monotonic, align 1
448     ret i32 %r
451 define dso_local i32 @load_atomic_i32_unaligned_monotonic_const(ptr readonly %ptr) {
452 ; CHECK-LABEL: load_atomic_i32_unaligned_monotonic_const:
453 ; CHECK:    bl __atomic_load
454     %r = load atomic i32, ptr %ptr monotonic, align 1
455     ret i32 %r
458 define dso_local i32 @load_atomic_i32_unaligned_acquire(ptr %ptr) {
459 ; CHECK-LABEL: load_atomic_i32_unaligned_acquire:
460 ; CHECK:    bl __atomic_load
461     %r = load atomic i32, ptr %ptr acquire, align 1
462     ret i32 %r
465 define dso_local i32 @load_atomic_i32_unaligned_acquire_const(ptr readonly %ptr) {
466 ; CHECK-LABEL: load_atomic_i32_unaligned_acquire_const:
467 ; CHECK:    bl __atomic_load
468     %r = load atomic i32, ptr %ptr acquire, align 1
469     ret i32 %r
472 define dso_local i32 @load_atomic_i32_unaligned_seq_cst(ptr %ptr) {
473 ; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst:
474 ; CHECK:    bl __atomic_load
475     %r = load atomic i32, ptr %ptr seq_cst, align 1
476     ret i32 %r
479 define dso_local i32 @load_atomic_i32_unaligned_seq_cst_const(ptr readonly %ptr) {
480 ; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst_const:
481 ; CHECK:    bl __atomic_load
482     %r = load atomic i32, ptr %ptr seq_cst, align 1
483     ret i32 %r
486 define dso_local i64 @load_atomic_i64_unaligned_unordered(ptr %ptr) {
487 ; CHECK-LABEL: load_atomic_i64_unaligned_unordered:
488 ; CHECK:    bl __atomic_load
489     %r = load atomic i64, ptr %ptr unordered, align 1
490     ret i64 %r
493 define dso_local i64 @load_atomic_i64_unaligned_unordered_const(ptr readonly %ptr) {
494 ; CHECK-LABEL: load_atomic_i64_unaligned_unordered_const:
495 ; CHECK:    bl __atomic_load
496     %r = load atomic i64, ptr %ptr unordered, align 1
497     ret i64 %r
500 define dso_local i64 @load_atomic_i64_unaligned_monotonic(ptr %ptr) {
501 ; CHECK-LABEL: load_atomic_i64_unaligned_monotonic:
502 ; CHECK:    bl __atomic_load
503     %r = load atomic i64, ptr %ptr monotonic, align 1
504     ret i64 %r
507 define dso_local i64 @load_atomic_i64_unaligned_monotonic_const(ptr readonly %ptr) {
508 ; CHECK-LABEL: load_atomic_i64_unaligned_monotonic_const:
509 ; CHECK:    bl __atomic_load
510     %r = load atomic i64, ptr %ptr monotonic, align 1
511     ret i64 %r
514 define dso_local i64 @load_atomic_i64_unaligned_acquire(ptr %ptr) {
515 ; CHECK-LABEL: load_atomic_i64_unaligned_acquire:
516 ; CHECK:    bl __atomic_load
517     %r = load atomic i64, ptr %ptr acquire, align 1
518     ret i64 %r
521 define dso_local i64 @load_atomic_i64_unaligned_acquire_const(ptr readonly %ptr) {
522 ; CHECK-LABEL: load_atomic_i64_unaligned_acquire_const:
523 ; CHECK:    bl __atomic_load
524     %r = load atomic i64, ptr %ptr acquire, align 1
525     ret i64 %r
528 define dso_local i64 @load_atomic_i64_unaligned_seq_cst(ptr %ptr) {
529 ; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst:
530 ; CHECK:    bl __atomic_load
531     %r = load atomic i64, ptr %ptr seq_cst, align 1
532     ret i64 %r
535 define dso_local i64 @load_atomic_i64_unaligned_seq_cst_const(ptr readonly %ptr) {
536 ; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst_const:
537 ; CHECK:    bl __atomic_load
538     %r = load atomic i64, ptr %ptr seq_cst, align 1
539     ret i64 %r
542 define dso_local i128 @load_atomic_i128_unaligned_unordered(ptr %ptr) {
543 ; CHECK-LABEL: load_atomic_i128_unaligned_unordered:
544 ; CHECK:    bl __atomic_load
545     %r = load atomic i128, ptr %ptr unordered, align 1
546     ret i128 %r
549 define dso_local i128 @load_atomic_i128_unaligned_unordered_const(ptr readonly %ptr) {
550 ; CHECK-LABEL: load_atomic_i128_unaligned_unordered_const:
551 ; CHECK:    bl __atomic_load
552     %r = load atomic i128, ptr %ptr unordered, align 1
553     ret i128 %r
556 define dso_local i128 @load_atomic_i128_unaligned_monotonic(ptr %ptr) {
557 ; CHECK-LABEL: load_atomic_i128_unaligned_monotonic:
558 ; CHECK:    bl __atomic_load
559     %r = load atomic i128, ptr %ptr monotonic, align 1
560     ret i128 %r
563 define dso_local i128 @load_atomic_i128_unaligned_monotonic_const(ptr readonly %ptr) {
564 ; CHECK-LABEL: load_atomic_i128_unaligned_monotonic_const:
565 ; CHECK:    bl __atomic_load
566     %r = load atomic i128, ptr %ptr monotonic, align 1
567     ret i128 %r
570 define dso_local i128 @load_atomic_i128_unaligned_acquire(ptr %ptr) {
571 ; CHECK-LABEL: load_atomic_i128_unaligned_acquire:
572 ; CHECK:    bl __atomic_load
573     %r = load atomic i128, ptr %ptr acquire, align 1
574     ret i128 %r
577 define dso_local i128 @load_atomic_i128_unaligned_acquire_const(ptr readonly %ptr) {
578 ; CHECK-LABEL: load_atomic_i128_unaligned_acquire_const:
579 ; CHECK:    bl __atomic_load
580     %r = load atomic i128, ptr %ptr acquire, align 1
581     ret i128 %r
584 define dso_local i128 @load_atomic_i128_unaligned_seq_cst(ptr %ptr) {
585 ; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst:
586 ; CHECK:    bl __atomic_load
587     %r = load atomic i128, ptr %ptr seq_cst, align 1
588     ret i128 %r
591 define dso_local i128 @load_atomic_i128_unaligned_seq_cst_const(ptr readonly %ptr) {
592 ; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst_const:
593 ; CHECK:    bl __atomic_load
594     %r = load atomic i128, ptr %ptr seq_cst, align 1
595     ret i128 %r