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:
9 %r = load atomic i8, ptr %ptr unordered, align 1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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]
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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