[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / Atomics / aarch64_be-atomic-load-v8a.ll
blob06caa68f35565cbd34a39b76bc9dce9fb89f9815
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=+v8a -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64_be -mattr=+v8a -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:    ldxp x1, x0, [x9]
233 ; -O0:    cmp x1, x10
234 ; -O0:    cmp x0, x10
235 ; -O0:    stxp w8, x10, x10, [x9]
236 ; -O0:    stxp w8, x1, x0, [x9]
238 ; -O1-LABEL: load_atomic_i128_aligned_unordered:
239 ; -O1:    ldxp x1, x0, [x8]
240 ; -O1:    stxp w9, x1, x0, [x8]
241     %r = load atomic i128, ptr %ptr unordered, align 16
242     ret i128 %r
245 define dso_local i128 @load_atomic_i128_aligned_unordered_const(ptr readonly %ptr) {
246 ; -O0-LABEL: load_atomic_i128_aligned_unordered_const:
247 ; -O0:    ldxp x1, x0, [x9]
248 ; -O0:    cmp x1, x10
249 ; -O0:    cmp x0, x10
250 ; -O0:    stxp w8, x10, x10, [x9]
251 ; -O0:    stxp w8, x1, x0, [x9]
253 ; -O1-LABEL: load_atomic_i128_aligned_unordered_const:
254 ; -O1:    ldxp x1, x0, [x8]
255 ; -O1:    stxp w9, x1, x0, [x8]
256     %r = load atomic i128, ptr %ptr unordered, align 16
257     ret i128 %r
260 define dso_local i128 @load_atomic_i128_aligned_monotonic(ptr %ptr) {
261 ; -O0-LABEL: load_atomic_i128_aligned_monotonic:
262 ; -O0:    ldxp x1, x0, [x9]
263 ; -O0:    cmp x1, x10
264 ; -O0:    cmp x0, x10
265 ; -O0:    stxp w8, x10, x10, [x9]
266 ; -O0:    stxp w8, x1, x0, [x9]
268 ; -O1-LABEL: load_atomic_i128_aligned_monotonic:
269 ; -O1:    ldxp x1, x0, [x8]
270 ; -O1:    stxp w9, x1, x0, [x8]
271     %r = load atomic i128, ptr %ptr monotonic, align 16
272     ret i128 %r
275 define dso_local i128 @load_atomic_i128_aligned_monotonic_const(ptr readonly %ptr) {
276 ; -O0-LABEL: load_atomic_i128_aligned_monotonic_const:
277 ; -O0:    ldxp x1, x0, [x9]
278 ; -O0:    cmp x1, x10
279 ; -O0:    cmp x0, x10
280 ; -O0:    stxp w8, x10, x10, [x9]
281 ; -O0:    stxp w8, x1, x0, [x9]
283 ; -O1-LABEL: load_atomic_i128_aligned_monotonic_const:
284 ; -O1:    ldxp x1, x0, [x8]
285 ; -O1:    stxp w9, x1, x0, [x8]
286     %r = load atomic i128, ptr %ptr monotonic, align 16
287     ret i128 %r
290 define dso_local i128 @load_atomic_i128_aligned_acquire(ptr %ptr) {
291 ; -O0-LABEL: load_atomic_i128_aligned_acquire:
292 ; -O0:    ldaxp x1, x0, [x9]
293 ; -O0:    cmp x1, x10
294 ; -O0:    cmp x0, x10
295 ; -O0:    stxp w8, x10, x10, [x9]
296 ; -O0:    stxp w8, x1, x0, [x9]
298 ; -O1-LABEL: load_atomic_i128_aligned_acquire:
299 ; -O1:    ldaxp x1, x0, [x8]
300 ; -O1:    stxp w9, x1, x0, [x8]
301     %r = load atomic i128, ptr %ptr acquire, align 16
302     ret i128 %r
305 define dso_local i128 @load_atomic_i128_aligned_acquire_const(ptr readonly %ptr) {
306 ; -O0-LABEL: load_atomic_i128_aligned_acquire_const:
307 ; -O0:    ldaxp x1, x0, [x9]
308 ; -O0:    cmp x1, x10
309 ; -O0:    cmp x0, x10
310 ; -O0:    stxp w8, x10, x10, [x9]
311 ; -O0:    stxp w8, x1, x0, [x9]
313 ; -O1-LABEL: load_atomic_i128_aligned_acquire_const:
314 ; -O1:    ldaxp x1, x0, [x8]
315 ; -O1:    stxp w9, x1, x0, [x8]
316     %r = load atomic i128, ptr %ptr acquire, align 16
317     ret i128 %r
320 define dso_local i128 @load_atomic_i128_aligned_seq_cst(ptr %ptr) {
321 ; -O0-LABEL: load_atomic_i128_aligned_seq_cst:
322 ; -O0:    ldaxp x1, x0, [x9]
323 ; -O0:    cmp x1, x10
324 ; -O0:    cmp x0, x10
325 ; -O0:    stlxp w8, x10, x10, [x9]
326 ; -O0:    stlxp w8, x1, x0, [x9]
328 ; -O1-LABEL: load_atomic_i128_aligned_seq_cst:
329 ; -O1:    ldaxp x1, x0, [x8]
330 ; -O1:    stlxp w9, x1, x0, [x8]
331     %r = load atomic i128, ptr %ptr seq_cst, align 16
332     ret i128 %r
335 define dso_local i128 @load_atomic_i128_aligned_seq_cst_const(ptr readonly %ptr) {
336 ; -O0-LABEL: load_atomic_i128_aligned_seq_cst_const:
337 ; -O0:    ldaxp x1, x0, [x9]
338 ; -O0:    cmp x1, x10
339 ; -O0:    cmp x0, x10
340 ; -O0:    stlxp w8, x10, x10, [x9]
341 ; -O0:    stlxp w8, x1, x0, [x9]
343 ; -O1-LABEL: load_atomic_i128_aligned_seq_cst_const:
344 ; -O1:    ldaxp x1, x0, [x8]
345 ; -O1:    stlxp w9, x1, x0, [x8]
346     %r = load atomic i128, ptr %ptr seq_cst, align 16
347     ret i128 %r
350 define dso_local i8 @load_atomic_i8_unaligned_unordered(ptr %ptr) {
351 ; CHECK-LABEL: load_atomic_i8_unaligned_unordered:
352 ; CHECK:    ldrb w0, [x0]
353     %r = load atomic i8, ptr %ptr unordered, align 1
354     ret i8 %r
357 define dso_local i8 @load_atomic_i8_unaligned_unordered_const(ptr readonly %ptr) {
358 ; CHECK-LABEL: load_atomic_i8_unaligned_unordered_const:
359 ; CHECK:    ldrb w0, [x0]
360     %r = load atomic i8, ptr %ptr unordered, align 1
361     ret i8 %r
364 define dso_local i8 @load_atomic_i8_unaligned_monotonic(ptr %ptr) {
365 ; CHECK-LABEL: load_atomic_i8_unaligned_monotonic:
366 ; CHECK:    ldrb w0, [x0]
367     %r = load atomic i8, ptr %ptr monotonic, align 1
368     ret i8 %r
371 define dso_local i8 @load_atomic_i8_unaligned_monotonic_const(ptr readonly %ptr) {
372 ; CHECK-LABEL: load_atomic_i8_unaligned_monotonic_const:
373 ; CHECK:    ldrb w0, [x0]
374     %r = load atomic i8, ptr %ptr monotonic, align 1
375     ret i8 %r
378 define dso_local i8 @load_atomic_i8_unaligned_acquire(ptr %ptr) {
379 ; CHECK-LABEL: load_atomic_i8_unaligned_acquire:
380 ; CHECK:    ldarb w0, [x0]
381     %r = load atomic i8, ptr %ptr acquire, align 1
382     ret i8 %r
385 define dso_local i8 @load_atomic_i8_unaligned_acquire_const(ptr readonly %ptr) {
386 ; CHECK-LABEL: load_atomic_i8_unaligned_acquire_const:
387 ; CHECK:    ldarb w0, [x0]
388     %r = load atomic i8, ptr %ptr acquire, align 1
389     ret i8 %r
392 define dso_local i8 @load_atomic_i8_unaligned_seq_cst(ptr %ptr) {
393 ; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst:
394 ; CHECK:    ldarb w0, [x0]
395     %r = load atomic i8, ptr %ptr seq_cst, align 1
396     ret i8 %r
399 define dso_local i8 @load_atomic_i8_unaligned_seq_cst_const(ptr readonly %ptr) {
400 ; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst_const:
401 ; CHECK:    ldarb w0, [x0]
402     %r = load atomic i8, ptr %ptr seq_cst, align 1
403     ret i8 %r
406 define dso_local i16 @load_atomic_i16_unaligned_unordered(ptr %ptr) {
407 ; CHECK-LABEL: load_atomic_i16_unaligned_unordered:
408 ; CHECK:    bl __atomic_load
409     %r = load atomic i16, ptr %ptr unordered, align 1
410     ret i16 %r
413 define dso_local i16 @load_atomic_i16_unaligned_unordered_const(ptr readonly %ptr) {
414 ; CHECK-LABEL: load_atomic_i16_unaligned_unordered_const:
415 ; CHECK:    bl __atomic_load
416     %r = load atomic i16, ptr %ptr unordered, align 1
417     ret i16 %r
420 define dso_local i16 @load_atomic_i16_unaligned_monotonic(ptr %ptr) {
421 ; CHECK-LABEL: load_atomic_i16_unaligned_monotonic:
422 ; CHECK:    bl __atomic_load
423     %r = load atomic i16, ptr %ptr monotonic, align 1
424     ret i16 %r
427 define dso_local i16 @load_atomic_i16_unaligned_monotonic_const(ptr readonly %ptr) {
428 ; CHECK-LABEL: load_atomic_i16_unaligned_monotonic_const:
429 ; CHECK:    bl __atomic_load
430     %r = load atomic i16, ptr %ptr monotonic, align 1
431     ret i16 %r
434 define dso_local i16 @load_atomic_i16_unaligned_acquire(ptr %ptr) {
435 ; CHECK-LABEL: load_atomic_i16_unaligned_acquire:
436 ; CHECK:    bl __atomic_load
437     %r = load atomic i16, ptr %ptr acquire, align 1
438     ret i16 %r
441 define dso_local i16 @load_atomic_i16_unaligned_acquire_const(ptr readonly %ptr) {
442 ; CHECK-LABEL: load_atomic_i16_unaligned_acquire_const:
443 ; CHECK:    bl __atomic_load
444     %r = load atomic i16, ptr %ptr acquire, align 1
445     ret i16 %r
448 define dso_local i16 @load_atomic_i16_unaligned_seq_cst(ptr %ptr) {
449 ; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst:
450 ; CHECK:    bl __atomic_load
451     %r = load atomic i16, ptr %ptr seq_cst, align 1
452     ret i16 %r
455 define dso_local i16 @load_atomic_i16_unaligned_seq_cst_const(ptr readonly %ptr) {
456 ; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst_const:
457 ; CHECK:    bl __atomic_load
458     %r = load atomic i16, ptr %ptr seq_cst, align 1
459     ret i16 %r
462 define dso_local i32 @load_atomic_i32_unaligned_unordered(ptr %ptr) {
463 ; CHECK-LABEL: load_atomic_i32_unaligned_unordered:
464 ; CHECK:    bl __atomic_load
465     %r = load atomic i32, ptr %ptr unordered, align 1
466     ret i32 %r
469 define dso_local i32 @load_atomic_i32_unaligned_unordered_const(ptr readonly %ptr) {
470 ; CHECK-LABEL: load_atomic_i32_unaligned_unordered_const:
471 ; CHECK:    bl __atomic_load
472     %r = load atomic i32, ptr %ptr unordered, align 1
473     ret i32 %r
476 define dso_local i32 @load_atomic_i32_unaligned_monotonic(ptr %ptr) {
477 ; CHECK-LABEL: load_atomic_i32_unaligned_monotonic:
478 ; CHECK:    bl __atomic_load
479     %r = load atomic i32, ptr %ptr monotonic, align 1
480     ret i32 %r
483 define dso_local i32 @load_atomic_i32_unaligned_monotonic_const(ptr readonly %ptr) {
484 ; CHECK-LABEL: load_atomic_i32_unaligned_monotonic_const:
485 ; CHECK:    bl __atomic_load
486     %r = load atomic i32, ptr %ptr monotonic, align 1
487     ret i32 %r
490 define dso_local i32 @load_atomic_i32_unaligned_acquire(ptr %ptr) {
491 ; CHECK-LABEL: load_atomic_i32_unaligned_acquire:
492 ; CHECK:    bl __atomic_load
493     %r = load atomic i32, ptr %ptr acquire, align 1
494     ret i32 %r
497 define dso_local i32 @load_atomic_i32_unaligned_acquire_const(ptr readonly %ptr) {
498 ; CHECK-LABEL: load_atomic_i32_unaligned_acquire_const:
499 ; CHECK:    bl __atomic_load
500     %r = load atomic i32, ptr %ptr acquire, align 1
501     ret i32 %r
504 define dso_local i32 @load_atomic_i32_unaligned_seq_cst(ptr %ptr) {
505 ; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst:
506 ; CHECK:    bl __atomic_load
507     %r = load atomic i32, ptr %ptr seq_cst, align 1
508     ret i32 %r
511 define dso_local i32 @load_atomic_i32_unaligned_seq_cst_const(ptr readonly %ptr) {
512 ; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst_const:
513 ; CHECK:    bl __atomic_load
514     %r = load atomic i32, ptr %ptr seq_cst, align 1
515     ret i32 %r
518 define dso_local i64 @load_atomic_i64_unaligned_unordered(ptr %ptr) {
519 ; CHECK-LABEL: load_atomic_i64_unaligned_unordered:
520 ; CHECK:    bl __atomic_load
521     %r = load atomic i64, ptr %ptr unordered, align 1
522     ret i64 %r
525 define dso_local i64 @load_atomic_i64_unaligned_unordered_const(ptr readonly %ptr) {
526 ; CHECK-LABEL: load_atomic_i64_unaligned_unordered_const:
527 ; CHECK:    bl __atomic_load
528     %r = load atomic i64, ptr %ptr unordered, align 1
529     ret i64 %r
532 define dso_local i64 @load_atomic_i64_unaligned_monotonic(ptr %ptr) {
533 ; CHECK-LABEL: load_atomic_i64_unaligned_monotonic:
534 ; CHECK:    bl __atomic_load
535     %r = load atomic i64, ptr %ptr monotonic, align 1
536     ret i64 %r
539 define dso_local i64 @load_atomic_i64_unaligned_monotonic_const(ptr readonly %ptr) {
540 ; CHECK-LABEL: load_atomic_i64_unaligned_monotonic_const:
541 ; CHECK:    bl __atomic_load
542     %r = load atomic i64, ptr %ptr monotonic, align 1
543     ret i64 %r
546 define dso_local i64 @load_atomic_i64_unaligned_acquire(ptr %ptr) {
547 ; CHECK-LABEL: load_atomic_i64_unaligned_acquire:
548 ; CHECK:    bl __atomic_load
549     %r = load atomic i64, ptr %ptr acquire, align 1
550     ret i64 %r
553 define dso_local i64 @load_atomic_i64_unaligned_acquire_const(ptr readonly %ptr) {
554 ; CHECK-LABEL: load_atomic_i64_unaligned_acquire_const:
555 ; CHECK:    bl __atomic_load
556     %r = load atomic i64, ptr %ptr acquire, align 1
557     ret i64 %r
560 define dso_local i64 @load_atomic_i64_unaligned_seq_cst(ptr %ptr) {
561 ; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst:
562 ; CHECK:    bl __atomic_load
563     %r = load atomic i64, ptr %ptr seq_cst, align 1
564     ret i64 %r
567 define dso_local i64 @load_atomic_i64_unaligned_seq_cst_const(ptr readonly %ptr) {
568 ; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst_const:
569 ; CHECK:    bl __atomic_load
570     %r = load atomic i64, ptr %ptr seq_cst, align 1
571     ret i64 %r
574 define dso_local i128 @load_atomic_i128_unaligned_unordered(ptr %ptr) {
575 ; CHECK-LABEL: load_atomic_i128_unaligned_unordered:
576 ; CHECK:    bl __atomic_load
577     %r = load atomic i128, ptr %ptr unordered, align 1
578     ret i128 %r
581 define dso_local i128 @load_atomic_i128_unaligned_unordered_const(ptr readonly %ptr) {
582 ; CHECK-LABEL: load_atomic_i128_unaligned_unordered_const:
583 ; CHECK:    bl __atomic_load
584     %r = load atomic i128, ptr %ptr unordered, align 1
585     ret i128 %r
588 define dso_local i128 @load_atomic_i128_unaligned_monotonic(ptr %ptr) {
589 ; CHECK-LABEL: load_atomic_i128_unaligned_monotonic:
590 ; CHECK:    bl __atomic_load
591     %r = load atomic i128, ptr %ptr monotonic, align 1
592     ret i128 %r
595 define dso_local i128 @load_atomic_i128_unaligned_monotonic_const(ptr readonly %ptr) {
596 ; CHECK-LABEL: load_atomic_i128_unaligned_monotonic_const:
597 ; CHECK:    bl __atomic_load
598     %r = load atomic i128, ptr %ptr monotonic, align 1
599     ret i128 %r
602 define dso_local i128 @load_atomic_i128_unaligned_acquire(ptr %ptr) {
603 ; CHECK-LABEL: load_atomic_i128_unaligned_acquire:
604 ; CHECK:    bl __atomic_load
605     %r = load atomic i128, ptr %ptr acquire, align 1
606     ret i128 %r
609 define dso_local i128 @load_atomic_i128_unaligned_acquire_const(ptr readonly %ptr) {
610 ; CHECK-LABEL: load_atomic_i128_unaligned_acquire_const:
611 ; CHECK:    bl __atomic_load
612     %r = load atomic i128, ptr %ptr acquire, align 1
613     ret i128 %r
616 define dso_local i128 @load_atomic_i128_unaligned_seq_cst(ptr %ptr) {
617 ; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst:
618 ; CHECK:    bl __atomic_load
619     %r = load atomic i128, ptr %ptr seq_cst, align 1
620     ret i128 %r
623 define dso_local i128 @load_atomic_i128_unaligned_seq_cst_const(ptr readonly %ptr) {
624 ; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst_const:
625 ; CHECK:    bl __atomic_load
626     %r = load atomic i128, ptr %ptr seq_cst, align 1
627     ret i128 %r