[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / Atomics / aarch64-atomic-load-lse2_lse128.ll
blob2f030b0e23ab18238291a661f1ff870e65448008
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=+lse2,+lse128 -O0 | FileCheck %s --check-prefixes=CHECK,-O0
4 ; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+lse2,+lse128 -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 ; CHECK-LABEL: load_atomic_i128_aligned_unordered:
232 ; CHECK:    ldp x0, x1, [x0]
233     %r = load atomic i128, ptr %ptr unordered, align 16
234     ret i128 %r
237 define dso_local i128 @load_atomic_i128_aligned_unordered_const(ptr readonly %ptr) {
238 ; CHECK-LABEL: load_atomic_i128_aligned_unordered_const:
239 ; CHECK:    ldp x0, x1, [x0]
240     %r = load atomic i128, ptr %ptr unordered, align 16
241     ret i128 %r
244 define dso_local i128 @load_atomic_i128_aligned_monotonic(ptr %ptr) {
245 ; CHECK-LABEL: load_atomic_i128_aligned_monotonic:
246 ; CHECK:    ldp x0, x1, [x0]
247     %r = load atomic i128, ptr %ptr monotonic, align 16
248     ret i128 %r
251 define dso_local i128 @load_atomic_i128_aligned_monotonic_const(ptr readonly %ptr) {
252 ; CHECK-LABEL: load_atomic_i128_aligned_monotonic_const:
253 ; CHECK:    ldp x0, x1, [x0]
254     %r = load atomic i128, ptr %ptr monotonic, align 16
255     ret i128 %r
258 define dso_local i128 @load_atomic_i128_aligned_acquire(ptr %ptr) {
259 ; CHECK-LABEL: load_atomic_i128_aligned_acquire:
260 ; CHECK:    ldp x0, x1, [x0]
261 ; CHECK:    dmb ishld
262     %r = load atomic i128, ptr %ptr acquire, align 16
263     ret i128 %r
266 define dso_local i128 @load_atomic_i128_aligned_acquire_const(ptr readonly %ptr) {
267 ; CHECK-LABEL: load_atomic_i128_aligned_acquire_const:
268 ; CHECK:    ldp x0, x1, [x0]
269 ; CHECK:    dmb ishld
270     %r = load atomic i128, ptr %ptr acquire, align 16
271     ret i128 %r
274 define dso_local i128 @load_atomic_i128_aligned_seq_cst(ptr %ptr) {
275 ; CHECK-LABEL: load_atomic_i128_aligned_seq_cst:
276 ; CHECK:    ldp x0, x1, [x0]
277 ; CHECK:    dmb ish
278     %r = load atomic i128, ptr %ptr seq_cst, align 16
279     ret i128 %r
282 define dso_local i128 @load_atomic_i128_aligned_seq_cst_const(ptr readonly %ptr) {
283 ; CHECK-LABEL: load_atomic_i128_aligned_seq_cst_const:
284 ; CHECK:    ldp x0, x1, [x0]
285 ; CHECK:    dmb ish
286     %r = load atomic i128, ptr %ptr seq_cst, align 16
287     ret i128 %r
290 define dso_local i8 @load_atomic_i8_unaligned_unordered(ptr %ptr) {
291 ; CHECK-LABEL: load_atomic_i8_unaligned_unordered:
292 ; CHECK:    ldrb w0, [x0]
293     %r = load atomic i8, ptr %ptr unordered, align 1
294     ret i8 %r
297 define dso_local i8 @load_atomic_i8_unaligned_unordered_const(ptr readonly %ptr) {
298 ; CHECK-LABEL: load_atomic_i8_unaligned_unordered_const:
299 ; CHECK:    ldrb w0, [x0]
300     %r = load atomic i8, ptr %ptr unordered, align 1
301     ret i8 %r
304 define dso_local i8 @load_atomic_i8_unaligned_monotonic(ptr %ptr) {
305 ; CHECK-LABEL: load_atomic_i8_unaligned_monotonic:
306 ; CHECK:    ldrb w0, [x0]
307     %r = load atomic i8, ptr %ptr monotonic, align 1
308     ret i8 %r
311 define dso_local i8 @load_atomic_i8_unaligned_monotonic_const(ptr readonly %ptr) {
312 ; CHECK-LABEL: load_atomic_i8_unaligned_monotonic_const:
313 ; CHECK:    ldrb w0, [x0]
314     %r = load atomic i8, ptr %ptr monotonic, align 1
315     ret i8 %r
318 define dso_local i8 @load_atomic_i8_unaligned_acquire(ptr %ptr) {
319 ; CHECK-LABEL: load_atomic_i8_unaligned_acquire:
320 ; CHECK:    ldarb w0, [x0]
321     %r = load atomic i8, ptr %ptr acquire, align 1
322     ret i8 %r
325 define dso_local i8 @load_atomic_i8_unaligned_acquire_const(ptr readonly %ptr) {
326 ; CHECK-LABEL: load_atomic_i8_unaligned_acquire_const:
327 ; CHECK:    ldarb w0, [x0]
328     %r = load atomic i8, ptr %ptr acquire, align 1
329     ret i8 %r
332 define dso_local i8 @load_atomic_i8_unaligned_seq_cst(ptr %ptr) {
333 ; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst:
334 ; CHECK:    ldarb w0, [x0]
335     %r = load atomic i8, ptr %ptr seq_cst, align 1
336     ret i8 %r
339 define dso_local i8 @load_atomic_i8_unaligned_seq_cst_const(ptr readonly %ptr) {
340 ; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst_const:
341 ; CHECK:    ldarb w0, [x0]
342     %r = load atomic i8, ptr %ptr seq_cst, align 1
343     ret i8 %r
346 define dso_local i16 @load_atomic_i16_unaligned_unordered(ptr %ptr) {
347 ; CHECK-LABEL: load_atomic_i16_unaligned_unordered:
348 ; CHECK:    bl __atomic_load
349     %r = load atomic i16, ptr %ptr unordered, align 1
350     ret i16 %r
353 define dso_local i16 @load_atomic_i16_unaligned_unordered_const(ptr readonly %ptr) {
354 ; CHECK-LABEL: load_atomic_i16_unaligned_unordered_const:
355 ; CHECK:    bl __atomic_load
356     %r = load atomic i16, ptr %ptr unordered, align 1
357     ret i16 %r
360 define dso_local i16 @load_atomic_i16_unaligned_monotonic(ptr %ptr) {
361 ; CHECK-LABEL: load_atomic_i16_unaligned_monotonic:
362 ; CHECK:    bl __atomic_load
363     %r = load atomic i16, ptr %ptr monotonic, align 1
364     ret i16 %r
367 define dso_local i16 @load_atomic_i16_unaligned_monotonic_const(ptr readonly %ptr) {
368 ; CHECK-LABEL: load_atomic_i16_unaligned_monotonic_const:
369 ; CHECK:    bl __atomic_load
370     %r = load atomic i16, ptr %ptr monotonic, align 1
371     ret i16 %r
374 define dso_local i16 @load_atomic_i16_unaligned_acquire(ptr %ptr) {
375 ; CHECK-LABEL: load_atomic_i16_unaligned_acquire:
376 ; CHECK:    bl __atomic_load
377     %r = load atomic i16, ptr %ptr acquire, align 1
378     ret i16 %r
381 define dso_local i16 @load_atomic_i16_unaligned_acquire_const(ptr readonly %ptr) {
382 ; CHECK-LABEL: load_atomic_i16_unaligned_acquire_const:
383 ; CHECK:    bl __atomic_load
384     %r = load atomic i16, ptr %ptr acquire, align 1
385     ret i16 %r
388 define dso_local i16 @load_atomic_i16_unaligned_seq_cst(ptr %ptr) {
389 ; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst:
390 ; CHECK:    bl __atomic_load
391     %r = load atomic i16, ptr %ptr seq_cst, align 1
392     ret i16 %r
395 define dso_local i16 @load_atomic_i16_unaligned_seq_cst_const(ptr readonly %ptr) {
396 ; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst_const:
397 ; CHECK:    bl __atomic_load
398     %r = load atomic i16, ptr %ptr seq_cst, align 1
399     ret i16 %r
402 define dso_local i32 @load_atomic_i32_unaligned_unordered(ptr %ptr) {
403 ; CHECK-LABEL: load_atomic_i32_unaligned_unordered:
404 ; CHECK:    bl __atomic_load
405     %r = load atomic i32, ptr %ptr unordered, align 1
406     ret i32 %r
409 define dso_local i32 @load_atomic_i32_unaligned_unordered_const(ptr readonly %ptr) {
410 ; CHECK-LABEL: load_atomic_i32_unaligned_unordered_const:
411 ; CHECK:    bl __atomic_load
412     %r = load atomic i32, ptr %ptr unordered, align 1
413     ret i32 %r
416 define dso_local i32 @load_atomic_i32_unaligned_monotonic(ptr %ptr) {
417 ; CHECK-LABEL: load_atomic_i32_unaligned_monotonic:
418 ; CHECK:    bl __atomic_load
419     %r = load atomic i32, ptr %ptr monotonic, align 1
420     ret i32 %r
423 define dso_local i32 @load_atomic_i32_unaligned_monotonic_const(ptr readonly %ptr) {
424 ; CHECK-LABEL: load_atomic_i32_unaligned_monotonic_const:
425 ; CHECK:    bl __atomic_load
426     %r = load atomic i32, ptr %ptr monotonic, align 1
427     ret i32 %r
430 define dso_local i32 @load_atomic_i32_unaligned_acquire(ptr %ptr) {
431 ; CHECK-LABEL: load_atomic_i32_unaligned_acquire:
432 ; CHECK:    bl __atomic_load
433     %r = load atomic i32, ptr %ptr acquire, align 1
434     ret i32 %r
437 define dso_local i32 @load_atomic_i32_unaligned_acquire_const(ptr readonly %ptr) {
438 ; CHECK-LABEL: load_atomic_i32_unaligned_acquire_const:
439 ; CHECK:    bl __atomic_load
440     %r = load atomic i32, ptr %ptr acquire, align 1
441     ret i32 %r
444 define dso_local i32 @load_atomic_i32_unaligned_seq_cst(ptr %ptr) {
445 ; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst:
446 ; CHECK:    bl __atomic_load
447     %r = load atomic i32, ptr %ptr seq_cst, align 1
448     ret i32 %r
451 define dso_local i32 @load_atomic_i32_unaligned_seq_cst_const(ptr readonly %ptr) {
452 ; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst_const:
453 ; CHECK:    bl __atomic_load
454     %r = load atomic i32, ptr %ptr seq_cst, align 1
455     ret i32 %r
458 define dso_local i64 @load_atomic_i64_unaligned_unordered(ptr %ptr) {
459 ; CHECK-LABEL: load_atomic_i64_unaligned_unordered:
460 ; CHECK:    bl __atomic_load
461     %r = load atomic i64, ptr %ptr unordered, align 1
462     ret i64 %r
465 define dso_local i64 @load_atomic_i64_unaligned_unordered_const(ptr readonly %ptr) {
466 ; CHECK-LABEL: load_atomic_i64_unaligned_unordered_const:
467 ; CHECK:    bl __atomic_load
468     %r = load atomic i64, ptr %ptr unordered, align 1
469     ret i64 %r
472 define dso_local i64 @load_atomic_i64_unaligned_monotonic(ptr %ptr) {
473 ; CHECK-LABEL: load_atomic_i64_unaligned_monotonic:
474 ; CHECK:    bl __atomic_load
475     %r = load atomic i64, ptr %ptr monotonic, align 1
476     ret i64 %r
479 define dso_local i64 @load_atomic_i64_unaligned_monotonic_const(ptr readonly %ptr) {
480 ; CHECK-LABEL: load_atomic_i64_unaligned_monotonic_const:
481 ; CHECK:    bl __atomic_load
482     %r = load atomic i64, ptr %ptr monotonic, align 1
483     ret i64 %r
486 define dso_local i64 @load_atomic_i64_unaligned_acquire(ptr %ptr) {
487 ; CHECK-LABEL: load_atomic_i64_unaligned_acquire:
488 ; CHECK:    bl __atomic_load
489     %r = load atomic i64, ptr %ptr acquire, align 1
490     ret i64 %r
493 define dso_local i64 @load_atomic_i64_unaligned_acquire_const(ptr readonly %ptr) {
494 ; CHECK-LABEL: load_atomic_i64_unaligned_acquire_const:
495 ; CHECK:    bl __atomic_load
496     %r = load atomic i64, ptr %ptr acquire, align 1
497     ret i64 %r
500 define dso_local i64 @load_atomic_i64_unaligned_seq_cst(ptr %ptr) {
501 ; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst:
502 ; CHECK:    bl __atomic_load
503     %r = load atomic i64, ptr %ptr seq_cst, align 1
504     ret i64 %r
507 define dso_local i64 @load_atomic_i64_unaligned_seq_cst_const(ptr readonly %ptr) {
508 ; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst_const:
509 ; CHECK:    bl __atomic_load
510     %r = load atomic i64, ptr %ptr seq_cst, align 1
511     ret i64 %r
514 define dso_local i128 @load_atomic_i128_unaligned_unordered(ptr %ptr) {
515 ; CHECK-LABEL: load_atomic_i128_unaligned_unordered:
516 ; CHECK:    bl __atomic_load
517     %r = load atomic i128, ptr %ptr unordered, align 1
518     ret i128 %r
521 define dso_local i128 @load_atomic_i128_unaligned_unordered_const(ptr readonly %ptr) {
522 ; CHECK-LABEL: load_atomic_i128_unaligned_unordered_const:
523 ; CHECK:    bl __atomic_load
524     %r = load atomic i128, ptr %ptr unordered, align 1
525     ret i128 %r
528 define dso_local i128 @load_atomic_i128_unaligned_monotonic(ptr %ptr) {
529 ; CHECK-LABEL: load_atomic_i128_unaligned_monotonic:
530 ; CHECK:    bl __atomic_load
531     %r = load atomic i128, ptr %ptr monotonic, align 1
532     ret i128 %r
535 define dso_local i128 @load_atomic_i128_unaligned_monotonic_const(ptr readonly %ptr) {
536 ; CHECK-LABEL: load_atomic_i128_unaligned_monotonic_const:
537 ; CHECK:    bl __atomic_load
538     %r = load atomic i128, ptr %ptr monotonic, align 1
539     ret i128 %r
542 define dso_local i128 @load_atomic_i128_unaligned_acquire(ptr %ptr) {
543 ; CHECK-LABEL: load_atomic_i128_unaligned_acquire:
544 ; CHECK:    bl __atomic_load
545     %r = load atomic i128, ptr %ptr acquire, align 1
546     ret i128 %r
549 define dso_local i128 @load_atomic_i128_unaligned_acquire_const(ptr readonly %ptr) {
550 ; CHECK-LABEL: load_atomic_i128_unaligned_acquire_const:
551 ; CHECK:    bl __atomic_load
552     %r = load atomic i128, ptr %ptr acquire, align 1
553     ret i128 %r
556 define dso_local i128 @load_atomic_i128_unaligned_seq_cst(ptr %ptr) {
557 ; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst:
558 ; CHECK:    bl __atomic_load
559     %r = load atomic i128, ptr %ptr seq_cst, align 1
560     ret i128 %r
563 define dso_local i128 @load_atomic_i128_unaligned_seq_cst_const(ptr readonly %ptr) {
564 ; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst_const:
565 ; CHECK:    bl __atomic_load
566     %r = load atomic i128, ptr %ptr seq_cst, align 1
567     ret i128 %r
569 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
570 ; -O0: {{.*}}
571 ; -O1: {{.*}}