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:
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: 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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