[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / Atomics / aarch64-atomic-load-v8_1a.ll
blobe14610ba6b1cc30a21e4fed6c403a9677c96cbaf
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
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:    casp x2, x3, x0, x1, [x8]
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
240 define 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]
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
250 define 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]
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
260 define 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]
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
270 define 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]
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
280 define 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]
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
290 define 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]
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
300 define 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]
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
310 define 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
317 define 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
324 define 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
331 define 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
338 define 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
345 define 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
352 define 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
359 define 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
366 define 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
373 define 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
380 define 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
387 define 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
394 define 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
401 define 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
408 define 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
415 define 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
422 define 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
429 define 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
436 define 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
443 define 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
450 define 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
457 define 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
464 define 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
471 define 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
478 define 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
485 define 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
492 define 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
499 define 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
506 define 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
513 define 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
520 define 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
527 define 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
534 define 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
541 define 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
548 define 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
555 define 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
562 define 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
569 define 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
576 define 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
583 define 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