• Home
  • Raw
  • Download

Lines Matching refs:ATOMICS

3 …ra -verify-machineinstrs -mattr=+outline-atomics < %s | FileCheck %s --check-prefix=OUTLINE-ATOMICS
21 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i8:
22 ; OUTLINE-ATOMICS: // %bb.0:
23 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
24 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
25 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
26 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel
27 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
28 ; OUTLINE-ATOMICS-NEXT: ret
42 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i16:
43 ; OUTLINE-ATOMICS: // %bb.0:
44 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
45 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
46 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
47 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq_rel
48 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
49 ; OUTLINE-ATOMICS-NEXT: ret
63 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32:
64 ; OUTLINE-ATOMICS: // %bb.0:
65 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
66 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
67 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
68 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
69 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
70 ; OUTLINE-ATOMICS-NEXT: ret
84 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64:
85 ; OUTLINE-ATOMICS: // %bb.0:
86 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
87 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
88 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
89 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
90 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
91 ; OUTLINE-ATOMICS-NEXT: ret
105 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_noret:
106 ; OUTLINE-ATOMICS: // %bb.0:
107 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
108 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
109 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
110 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
111 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
112 ; OUTLINE-ATOMICS-NEXT: ret
125 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_noret:
126 ; OUTLINE-ATOMICS: // %bb.0:
127 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
128 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
129 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
130 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
131 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
132 ; OUTLINE-ATOMICS-NEXT: ret
145 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i8:
146 ; OUTLINE-ATOMICS: // %bb.0:
147 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
148 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
149 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
150 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset1_acq_rel
151 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
152 ; OUTLINE-ATOMICS-NEXT: ret
166 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i16:
167 ; OUTLINE-ATOMICS: // %bb.0:
168 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
169 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
170 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
171 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset2_acq_rel
172 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
173 ; OUTLINE-ATOMICS-NEXT: ret
187 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32:
188 ; OUTLINE-ATOMICS: // %bb.0:
189 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
190 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
191 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
192 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_acq_rel
193 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
194 ; OUTLINE-ATOMICS-NEXT: ret
208 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64:
209 ; OUTLINE-ATOMICS: // %bb.0:
210 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
211 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
212 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
213 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_acq_rel
214 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
215 ; OUTLINE-ATOMICS-NEXT: ret
229 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_noret:
230 ; OUTLINE-ATOMICS: // %bb.0:
231 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
232 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
233 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
234 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_acq_rel
235 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
236 ; OUTLINE-ATOMICS-NEXT: ret
249 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_noret:
250 ; OUTLINE-ATOMICS: // %bb.0:
251 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
252 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
253 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
254 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_acq_rel
255 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
256 ; OUTLINE-ATOMICS-NEXT: ret
269 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i8:
270 ; OUTLINE-ATOMICS: // %bb.0:
271 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
272 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
273 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
274 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor1_acq_rel
275 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
276 ; OUTLINE-ATOMICS-NEXT: ret
290 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i16:
291 ; OUTLINE-ATOMICS: // %bb.0:
292 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
293 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
294 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
295 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor2_acq_rel
296 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
297 ; OUTLINE-ATOMICS-NEXT: ret
311 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32:
312 ; OUTLINE-ATOMICS: // %bb.0:
313 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
314 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
315 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
316 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_acq_rel
317 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
318 ; OUTLINE-ATOMICS-NEXT: ret
332 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64:
333 ; OUTLINE-ATOMICS: // %bb.0:
334 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
335 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
336 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
337 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_acq_rel
338 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
339 ; OUTLINE-ATOMICS-NEXT: ret
353 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_noret:
354 ; OUTLINE-ATOMICS: // %bb.0:
355 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
356 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
357 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
358 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_acq_rel
359 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
360 ; OUTLINE-ATOMICS-NEXT: ret
373 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_noret:
374 ; OUTLINE-ATOMICS: // %bb.0:
375 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
376 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
377 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
378 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_acq_rel
379 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
380 ; OUTLINE-ATOMICS-NEXT: ret
393 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i8:
394 ; OUTLINE-ATOMICS: // %bb.0:
395 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
396 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
397 ; OUTLINE-ATOMICS-NEXT: .LBB18_1: // %atomicrmw.start
398 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
399 ; OUTLINE-ATOMICS-NEXT: ldaxrb w10, [x9]
400 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
401 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
402 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
403 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
404 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB18_1
405 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
406 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
407 ; OUTLINE-ATOMICS-NEXT: ret
421 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i16:
422 ; OUTLINE-ATOMICS: // %bb.0:
423 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
424 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
425 ; OUTLINE-ATOMICS-NEXT: .LBB19_1: // %atomicrmw.start
426 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
427 ; OUTLINE-ATOMICS-NEXT: ldaxrh w10, [x9]
428 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
429 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
430 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
431 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
432 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB19_1
433 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
434 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
435 ; OUTLINE-ATOMICS-NEXT: ret
449 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32:
450 ; OUTLINE-ATOMICS: // %bb.0:
451 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
452 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
453 ; OUTLINE-ATOMICS-NEXT: .LBB20_1: // %atomicrmw.start
454 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
455 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
456 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
457 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, le
458 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
459 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB20_1
460 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
461 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
462 ; OUTLINE-ATOMICS-NEXT: ret
476 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64:
477 ; OUTLINE-ATOMICS: // %bb.0:
478 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
479 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
480 ; OUTLINE-ATOMICS-NEXT: .LBB21_1: // %atomicrmw.start
481 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
482 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
483 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
484 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, le
485 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
486 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB21_1
487 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
488 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
489 ; OUTLINE-ATOMICS-NEXT: ret
503 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_noret:
504 ; OUTLINE-ATOMICS: // %bb.0:
505 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
506 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
507 ; OUTLINE-ATOMICS-NEXT: .LBB22_1: // %atomicrmw.start
508 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
509 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
510 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
511 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, le
512 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
513 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB22_1
514 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
515 ; OUTLINE-ATOMICS-NEXT: ret
528 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_noret:
529 ; OUTLINE-ATOMICS: // %bb.0:
530 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
531 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
532 ; OUTLINE-ATOMICS-NEXT: .LBB23_1: // %atomicrmw.start
533 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
534 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
535 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
536 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, le
537 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
538 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB23_1
539 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
540 ; OUTLINE-ATOMICS-NEXT: ret
553 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i8:
554 ; OUTLINE-ATOMICS: // %bb.0:
555 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
556 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
557 ; OUTLINE-ATOMICS-NEXT: .LBB24_1: // %atomicrmw.start
558 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
559 ; OUTLINE-ATOMICS-NEXT: ldaxrb w8, [x9]
560 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
561 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
562 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
563 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB24_1
564 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
565 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
566 ; OUTLINE-ATOMICS-NEXT: ret
580 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i16:
581 ; OUTLINE-ATOMICS: // %bb.0:
582 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
583 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
584 ; OUTLINE-ATOMICS-NEXT: .LBB25_1: // %atomicrmw.start
585 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
586 ; OUTLINE-ATOMICS-NEXT: ldaxrh w8, [x9]
587 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
588 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
589 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
590 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB25_1
591 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
592 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
593 ; OUTLINE-ATOMICS-NEXT: ret
607 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32:
608 ; OUTLINE-ATOMICS: // %bb.0:
609 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
610 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
611 ; OUTLINE-ATOMICS-NEXT: .LBB26_1: // %atomicrmw.start
612 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
613 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
614 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
615 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
616 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
617 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB26_1
618 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
619 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
620 ; OUTLINE-ATOMICS-NEXT: ret
634 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64:
635 ; OUTLINE-ATOMICS: // %bb.0:
636 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
637 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
638 ; OUTLINE-ATOMICS-NEXT: .LBB27_1: // %atomicrmw.start
639 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
640 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
641 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
642 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, ls
643 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
644 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB27_1
645 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
646 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
647 ; OUTLINE-ATOMICS-NEXT: ret
661 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_noret:
662 ; OUTLINE-ATOMICS: // %bb.0:
663 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
664 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
665 ; OUTLINE-ATOMICS-NEXT: .LBB28_1: // %atomicrmw.start
666 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
667 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
668 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
669 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, ls
670 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
671 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB28_1
672 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
673 ; OUTLINE-ATOMICS-NEXT: ret
686 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_noret:
687 ; OUTLINE-ATOMICS: // %bb.0:
688 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
689 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
690 ; OUTLINE-ATOMICS-NEXT: .LBB29_1: // %atomicrmw.start
691 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
692 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
693 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
694 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, ls
695 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
696 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB29_1
697 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
698 ; OUTLINE-ATOMICS-NEXT: ret
711 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i8:
712 ; OUTLINE-ATOMICS: // %bb.0:
713 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
714 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
715 ; OUTLINE-ATOMICS-NEXT: .LBB30_1: // %atomicrmw.start
716 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
717 ; OUTLINE-ATOMICS-NEXT: ldaxrb w10, [x9]
718 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
719 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
720 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
721 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
722 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB30_1
723 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
724 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
725 ; OUTLINE-ATOMICS-NEXT: ret
739 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i16:
740 ; OUTLINE-ATOMICS: // %bb.0:
741 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
742 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
743 ; OUTLINE-ATOMICS-NEXT: .LBB31_1: // %atomicrmw.start
744 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
745 ; OUTLINE-ATOMICS-NEXT: ldaxrh w10, [x9]
746 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
747 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
748 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
749 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
750 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB31_1
751 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
752 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
753 ; OUTLINE-ATOMICS-NEXT: ret
767 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32:
768 ; OUTLINE-ATOMICS: // %bb.0:
769 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
770 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
771 ; OUTLINE-ATOMICS-NEXT: .LBB32_1: // %atomicrmw.start
772 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
773 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
774 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
775 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, gt
776 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
777 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB32_1
778 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
779 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
780 ; OUTLINE-ATOMICS-NEXT: ret
794 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64:
795 ; OUTLINE-ATOMICS: // %bb.0:
796 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
797 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
798 ; OUTLINE-ATOMICS-NEXT: .LBB33_1: // %atomicrmw.start
799 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
800 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
801 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
802 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, gt
803 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
804 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB33_1
805 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
806 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
807 ; OUTLINE-ATOMICS-NEXT: ret
821 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_noret:
822 ; OUTLINE-ATOMICS: // %bb.0:
823 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
824 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
825 ; OUTLINE-ATOMICS-NEXT: .LBB34_1: // %atomicrmw.start
826 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
827 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
828 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
829 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, gt
830 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
831 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB34_1
832 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
833 ; OUTLINE-ATOMICS-NEXT: ret
846 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_noret:
847 ; OUTLINE-ATOMICS: // %bb.0:
848 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
849 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
850 ; OUTLINE-ATOMICS-NEXT: .LBB35_1: // %atomicrmw.start
851 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
852 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
853 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
854 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, gt
855 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
856 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB35_1
857 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
858 ; OUTLINE-ATOMICS-NEXT: ret
871 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i8:
872 ; OUTLINE-ATOMICS: // %bb.0:
873 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
874 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
875 ; OUTLINE-ATOMICS-NEXT: .LBB36_1: // %atomicrmw.start
876 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
877 ; OUTLINE-ATOMICS-NEXT: ldaxrb w8, [x9]
878 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
879 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
880 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
881 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB36_1
882 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
883 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
884 ; OUTLINE-ATOMICS-NEXT: ret
898 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i16:
899 ; OUTLINE-ATOMICS: // %bb.0:
900 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
901 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
902 ; OUTLINE-ATOMICS-NEXT: .LBB37_1: // %atomicrmw.start
903 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
904 ; OUTLINE-ATOMICS-NEXT: ldaxrh w8, [x9]
905 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
906 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
907 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
908 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB37_1
909 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
910 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
911 ; OUTLINE-ATOMICS-NEXT: ret
925 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32:
926 ; OUTLINE-ATOMICS: // %bb.0:
927 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
928 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
929 ; OUTLINE-ATOMICS-NEXT: .LBB38_1: // %atomicrmw.start
930 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
931 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
932 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
933 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
934 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
935 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB38_1
936 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
937 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
938 ; OUTLINE-ATOMICS-NEXT: ret
952 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64:
953 ; OUTLINE-ATOMICS: // %bb.0:
954 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
955 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
956 ; OUTLINE-ATOMICS-NEXT: .LBB39_1: // %atomicrmw.start
957 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
958 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
959 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
960 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, hi
961 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
962 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB39_1
963 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
964 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
965 ; OUTLINE-ATOMICS-NEXT: ret
979 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_noret:
980 ; OUTLINE-ATOMICS: // %bb.0:
981 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
982 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
983 ; OUTLINE-ATOMICS-NEXT: .LBB40_1: // %atomicrmw.start
984 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
985 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
986 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
987 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, hi
988 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
989 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB40_1
990 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
991 ; OUTLINE-ATOMICS-NEXT: ret
1004 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_noret:
1005 ; OUTLINE-ATOMICS: // %bb.0:
1006 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
1007 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
1008 ; OUTLINE-ATOMICS-NEXT: .LBB41_1: // %atomicrmw.start
1009 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
1010 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
1011 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
1012 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, hi
1013 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
1014 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB41_1
1015 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
1016 ; OUTLINE-ATOMICS-NEXT: ret
1029 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i8:
1030 ; OUTLINE-ATOMICS: // %bb.0:
1031 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1032 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
1033 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
1034 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp1_acq_rel
1035 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1036 ; OUTLINE-ATOMICS-NEXT: ret
1050 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i16:
1051 ; OUTLINE-ATOMICS: // %bb.0:
1052 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1053 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
1054 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
1055 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp2_acq_rel
1056 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1057 ; OUTLINE-ATOMICS-NEXT: ret
1071 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32:
1072 ; OUTLINE-ATOMICS: // %bb.0:
1073 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1074 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1075 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1076 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_acq_rel
1077 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1078 ; OUTLINE-ATOMICS-NEXT: ret
1092 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64:
1093 ; OUTLINE-ATOMICS: // %bb.0:
1094 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1095 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1096 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1097 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_acq_rel
1098 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1099 ; OUTLINE-ATOMICS-NEXT: ret
1113 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_noret:
1114 ; OUTLINE-ATOMICS: // %bb.0:
1115 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1116 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1117 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1118 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_acq_rel
1119 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1120 ; OUTLINE-ATOMICS-NEXT: ret
1134 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_noret:
1135 ; OUTLINE-ATOMICS: // %bb.0:
1136 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1137 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1138 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1139 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_acq_rel
1140 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1141 ; OUTLINE-ATOMICS-NEXT: ret
1155 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i8:
1156 ; OUTLINE-ATOMICS: // %bb.0:
1157 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1158 ; OUTLINE-ATOMICS-NEXT: adrp x2, var8
1159 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var8
1160 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas1_acq
1161 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1162 ; OUTLINE-ATOMICS-NEXT: ret
1177 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i8_1:
1178 ; OUTLINE-ATOMICS: // %bb.0:
1179 ; OUTLINE-ATOMICS-NEXT: stp x30, x19, [sp, #-16]! // 16-byte Folded Spill
1180 ; OUTLINE-ATOMICS-NEXT: mov w19, w0
1181 ; OUTLINE-ATOMICS-NEXT: adrp x2, var8
1182 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var8
1183 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas1_acq
1184 ; OUTLINE-ATOMICS-NEXT: cmp w0, w19, uxtb
1185 ; OUTLINE-ATOMICS-NEXT: cset w0, eq
1186 ; OUTLINE-ATOMICS-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload
1187 ; OUTLINE-ATOMICS-NEXT: ret
1204 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i16:
1205 ; OUTLINE-ATOMICS: // %bb.0:
1206 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1207 ; OUTLINE-ATOMICS-NEXT: adrp x2, var16
1208 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var16
1209 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas2_acq
1210 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1211 ; OUTLINE-ATOMICS-NEXT: ret
1226 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i16_1:
1227 ; OUTLINE-ATOMICS: // %bb.0:
1228 ; OUTLINE-ATOMICS-NEXT: stp x30, x19, [sp, #-16]! // 16-byte Folded Spill
1229 ; OUTLINE-ATOMICS-NEXT: mov w19, w0
1230 ; OUTLINE-ATOMICS-NEXT: adrp x2, var16
1231 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var16
1232 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas2_acq
1233 ; OUTLINE-ATOMICS-NEXT: cmp w0, w19, uxth
1234 ; OUTLINE-ATOMICS-NEXT: cset w0, eq
1235 ; OUTLINE-ATOMICS-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload
1236 ; OUTLINE-ATOMICS-NEXT: ret
1254 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i32:
1255 ; OUTLINE-ATOMICS: // %bb.0:
1256 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1257 ; OUTLINE-ATOMICS-NEXT: adrp x2, var32
1258 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var32
1259 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas4_acq
1260 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1261 ; OUTLINE-ATOMICS-NEXT: ret
1277 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i64:
1278 ; OUTLINE-ATOMICS: // %bb.0:
1279 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1280 ; OUTLINE-ATOMICS-NEXT: adrp x2, var64
1281 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var64
1282 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas8_acq
1283 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1284 ; OUTLINE-ATOMICS-NEXT: ret
1300 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i128:
1301 ; OUTLINE-ATOMICS: // %bb.0:
1302 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1303 ; OUTLINE-ATOMICS-NEXT: adrp x4, var128
1304 ; OUTLINE-ATOMICS-NEXT: add x4, x4, :lo12:var128
1305 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas16_acq
1306 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1307 ; OUTLINE-ATOMICS-NEXT: ret
1323 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i8:
1324 ; OUTLINE-ATOMICS: // %bb.0:
1325 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1326 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
1327 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
1328 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
1329 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel
1330 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1331 ; OUTLINE-ATOMICS-NEXT: ret
1346 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i16:
1347 ; OUTLINE-ATOMICS: // %bb.0:
1348 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1349 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
1350 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
1351 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
1352 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq_rel
1353 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1354 ; OUTLINE-ATOMICS-NEXT: ret
1369 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32:
1370 ; OUTLINE-ATOMICS: // %bb.0:
1371 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1372 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
1373 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1374 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1375 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
1376 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1377 ; OUTLINE-ATOMICS-NEXT: ret
1392 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64:
1393 ; OUTLINE-ATOMICS: // %bb.0:
1394 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1395 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
1396 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1397 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1398 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
1399 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1400 ; OUTLINE-ATOMICS-NEXT: ret
1415 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_noret:
1416 ; OUTLINE-ATOMICS: // %bb.0:
1417 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1418 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
1419 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1420 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1421 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
1422 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1423 ; OUTLINE-ATOMICS-NEXT: ret
1438 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_noret:
1439 ; OUTLINE-ATOMICS: // %bb.0:
1440 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1441 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
1442 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1443 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1444 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
1445 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1446 ; OUTLINE-ATOMICS-NEXT: ret
1461 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i8_neg_imm:
1462 ; OUTLINE-ATOMICS: // %bb.0:
1463 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1464 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
1465 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
1466 ; OUTLINE-ATOMICS-NEXT: mov w0, #1
1467 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel
1468 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1469 ; OUTLINE-ATOMICS-NEXT: ret
1484 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i16_neg_imm:
1485 ; OUTLINE-ATOMICS: // %bb.0:
1486 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1487 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
1488 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
1489 ; OUTLINE-ATOMICS-NEXT: mov w0, #1
1490 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq_rel
1491 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1492 ; OUTLINE-ATOMICS-NEXT: ret
1507 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_neg_imm:
1508 ; OUTLINE-ATOMICS: // %bb.0:
1509 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1510 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1511 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1512 ; OUTLINE-ATOMICS-NEXT: mov w0, #1
1513 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
1514 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1515 ; OUTLINE-ATOMICS-NEXT: ret
1530 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_neg_imm:
1531 ; OUTLINE-ATOMICS: // %bb.0:
1532 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1533 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1534 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1535 ; OUTLINE-ATOMICS-NEXT: mov w0, #1
1536 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
1537 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1538 ; OUTLINE-ATOMICS-NEXT: ret
1553 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i8_neg_arg:
1554 ; OUTLINE-ATOMICS: // %bb.0:
1555 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1556 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
1557 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
1558 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel
1559 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1560 ; OUTLINE-ATOMICS-NEXT: ret
1575 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i16_neg_arg:
1576 ; OUTLINE-ATOMICS: // %bb.0:
1577 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1578 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
1579 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
1580 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq_rel
1581 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1582 ; OUTLINE-ATOMICS-NEXT: ret
1597 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_neg_arg:
1598 ; OUTLINE-ATOMICS: // %bb.0:
1599 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1600 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1601 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1602 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
1603 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1604 ; OUTLINE-ATOMICS-NEXT: ret
1619 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_neg_arg:
1620 ; OUTLINE-ATOMICS: // %bb.0:
1621 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1622 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1623 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1624 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
1625 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1626 ; OUTLINE-ATOMICS-NEXT: ret
1641 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i8:
1642 ; OUTLINE-ATOMICS: // %bb.0:
1643 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1644 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
1645 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
1646 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
1647 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr1_acq_rel
1648 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1649 ; OUTLINE-ATOMICS-NEXT: ret
1663 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i16:
1664 ; OUTLINE-ATOMICS: // %bb.0:
1665 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1666 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
1667 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
1668 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
1669 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr2_acq_rel
1670 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1671 ; OUTLINE-ATOMICS-NEXT: ret
1685 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32:
1686 ; OUTLINE-ATOMICS: // %bb.0:
1687 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1688 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
1689 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1690 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1691 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel
1692 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1693 ; OUTLINE-ATOMICS-NEXT: ret
1707 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64:
1708 ; OUTLINE-ATOMICS: // %bb.0:
1709 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1710 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
1711 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1712 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1713 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq_rel
1714 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1715 ; OUTLINE-ATOMICS-NEXT: ret
1729 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i8_inv_imm:
1730 ; OUTLINE-ATOMICS: // %bb.0:
1731 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1732 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
1733 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
1734 ; OUTLINE-ATOMICS-NEXT: mov w0, #1
1735 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr1_acq_rel
1736 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1737 ; OUTLINE-ATOMICS-NEXT: ret
1750 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i16_inv_imm:
1751 ; OUTLINE-ATOMICS: // %bb.0:
1752 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1753 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
1754 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
1755 ; OUTLINE-ATOMICS-NEXT: mov w0, #1
1756 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr2_acq_rel
1757 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1758 ; OUTLINE-ATOMICS-NEXT: ret
1771 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_inv_imm:
1772 ; OUTLINE-ATOMICS: // %bb.0:
1773 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1774 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1775 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1776 ; OUTLINE-ATOMICS-NEXT: mov w0, #1
1777 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel
1778 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1779 ; OUTLINE-ATOMICS-NEXT: ret
1792 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_inv_imm:
1793 ; OUTLINE-ATOMICS: // %bb.0:
1794 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1795 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1796 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1797 ; OUTLINE-ATOMICS-NEXT: mov w0, #1
1798 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq_rel
1799 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1800 ; OUTLINE-ATOMICS-NEXT: ret
1813 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i8_inv_arg:
1814 ; OUTLINE-ATOMICS: // %bb.0:
1815 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1816 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
1817 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
1818 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr1_acq_rel
1819 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1820 ; OUTLINE-ATOMICS-NEXT: ret
1833 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i16_inv_arg:
1834 ; OUTLINE-ATOMICS: // %bb.0:
1835 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1836 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
1837 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
1838 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr2_acq_rel
1839 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1840 ; OUTLINE-ATOMICS-NEXT: ret
1853 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_inv_arg:
1854 ; OUTLINE-ATOMICS: // %bb.0:
1855 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1856 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1857 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1858 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel
1859 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1860 ; OUTLINE-ATOMICS-NEXT: ret
1873 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_inv_arg:
1874 ; OUTLINE-ATOMICS: // %bb.0:
1875 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1876 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1877 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1878 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq_rel
1879 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1880 ; OUTLINE-ATOMICS-NEXT: ret
1893 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_noret:
1894 ; OUTLINE-ATOMICS: // %bb.0:
1895 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1896 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
1897 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1898 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1899 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel
1900 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1901 ; OUTLINE-ATOMICS-NEXT: ret
1915 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_noret:
1916 ; OUTLINE-ATOMICS: // %bb.0:
1917 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1918 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
1919 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
1920 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
1921 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq_rel
1922 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1923 ; OUTLINE-ATOMICS-NEXT: ret
1937 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i8_acq_rel:
1938 ; OUTLINE-ATOMICS: // %bb.0:
1939 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1940 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
1941 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
1942 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel
1943 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1944 ; OUTLINE-ATOMICS-NEXT: ret
1958 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i16_acq_rel:
1959 ; OUTLINE-ATOMICS: // %bb.0:
1960 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1961 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
1962 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
1963 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq_rel
1964 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1965 ; OUTLINE-ATOMICS-NEXT: ret
1979 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_acq_rel:
1980 ; OUTLINE-ATOMICS: // %bb.0:
1981 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
1982 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
1983 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
1984 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
1985 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
1986 ; OUTLINE-ATOMICS-NEXT: ret
2000 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_acq_rel:
2001 ; OUTLINE-ATOMICS: // %bb.0:
2002 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2003 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2004 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2005 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
2006 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2007 ; OUTLINE-ATOMICS-NEXT: ret
2021 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_noret_acq_rel:
2022 ; OUTLINE-ATOMICS: // %bb.0:
2023 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2024 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2025 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2026 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
2027 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2028 ; OUTLINE-ATOMICS-NEXT: ret
2041 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_noret_acq_rel:
2042 ; OUTLINE-ATOMICS: // %bb.0:
2043 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2044 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2045 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2046 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
2047 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2048 ; OUTLINE-ATOMICS-NEXT: ret
2061 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i8_acquire:
2062 ; OUTLINE-ATOMICS: // %bb.0:
2063 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2064 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
2065 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
2066 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq
2067 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2068 ; OUTLINE-ATOMICS-NEXT: ret
2082 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i16_acquire:
2083 ; OUTLINE-ATOMICS: // %bb.0:
2084 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2085 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
2086 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
2087 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq
2088 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2089 ; OUTLINE-ATOMICS-NEXT: ret
2103 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_acquire:
2104 ; OUTLINE-ATOMICS: // %bb.0:
2105 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2106 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2107 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2108 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq
2109 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2110 ; OUTLINE-ATOMICS-NEXT: ret
2124 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_acquire:
2125 ; OUTLINE-ATOMICS: // %bb.0:
2126 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2127 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2128 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2129 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq
2130 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2131 ; OUTLINE-ATOMICS-NEXT: ret
2145 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_noret_acquire:
2146 ; OUTLINE-ATOMICS: // %bb.0:
2147 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2148 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2149 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2150 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq
2151 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2152 ; OUTLINE-ATOMICS-NEXT: ret
2165 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_noret_acquire:
2166 ; OUTLINE-ATOMICS: // %bb.0:
2167 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2168 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2169 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2170 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq
2171 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2172 ; OUTLINE-ATOMICS-NEXT: ret
2185 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i8_monotonic:
2186 ; OUTLINE-ATOMICS: // %bb.0:
2187 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2188 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
2189 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
2190 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_relax
2191 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2192 ; OUTLINE-ATOMICS-NEXT: ret
2206 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i16_monotonic:
2207 ; OUTLINE-ATOMICS: // %bb.0:
2208 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2209 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
2210 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
2211 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_relax
2212 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2213 ; OUTLINE-ATOMICS-NEXT: ret
2227 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_monotonic:
2228 ; OUTLINE-ATOMICS: // %bb.0:
2229 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2230 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2231 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2232 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_relax
2233 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2234 ; OUTLINE-ATOMICS-NEXT: ret
2248 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_monotonic:
2249 ; OUTLINE-ATOMICS: // %bb.0:
2250 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2251 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2252 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2253 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_relax
2254 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2255 ; OUTLINE-ATOMICS-NEXT: ret
2269 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_noret_monotonic:
2270 ; OUTLINE-ATOMICS: // %bb.0:
2271 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2272 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2273 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2274 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_relax
2275 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2276 ; OUTLINE-ATOMICS-NEXT: ret
2289 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_noret_monotonic:
2290 ; OUTLINE-ATOMICS: // %bb.0:
2291 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2292 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2293 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2294 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_relax
2295 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2296 ; OUTLINE-ATOMICS-NEXT: ret
2309 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i8_release:
2310 ; OUTLINE-ATOMICS: // %bb.0:
2311 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2312 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
2313 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
2314 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_rel
2315 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2316 ; OUTLINE-ATOMICS-NEXT: ret
2330 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i16_release:
2331 ; OUTLINE-ATOMICS: // %bb.0:
2332 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2333 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
2334 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
2335 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_rel
2336 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2337 ; OUTLINE-ATOMICS-NEXT: ret
2351 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_release:
2352 ; OUTLINE-ATOMICS: // %bb.0:
2353 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2354 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2355 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2356 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_rel
2357 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2358 ; OUTLINE-ATOMICS-NEXT: ret
2372 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_release:
2373 ; OUTLINE-ATOMICS: // %bb.0:
2374 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2375 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2376 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2377 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_rel
2378 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2379 ; OUTLINE-ATOMICS-NEXT: ret
2393 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_noret_release:
2394 ; OUTLINE-ATOMICS: // %bb.0:
2395 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2396 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2397 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2398 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_rel
2399 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2400 ; OUTLINE-ATOMICS-NEXT: ret
2413 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_noret_release:
2414 ; OUTLINE-ATOMICS: // %bb.0:
2415 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2416 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2417 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2418 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_rel
2419 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2420 ; OUTLINE-ATOMICS-NEXT: ret
2433 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i8_seq_cst:
2434 ; OUTLINE-ATOMICS: // %bb.0:
2435 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2436 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
2437 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
2438 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel
2439 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2440 ; OUTLINE-ATOMICS-NEXT: ret
2454 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i16_seq_cst:
2455 ; OUTLINE-ATOMICS: // %bb.0:
2456 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2457 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
2458 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
2459 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq_rel
2460 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2461 ; OUTLINE-ATOMICS-NEXT: ret
2475 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_seq_cst:
2476 ; OUTLINE-ATOMICS: // %bb.0:
2477 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2478 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2479 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2480 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
2481 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2482 ; OUTLINE-ATOMICS-NEXT: ret
2496 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_seq_cst:
2497 ; OUTLINE-ATOMICS: // %bb.0:
2498 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2499 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2500 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2501 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
2502 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2503 ; OUTLINE-ATOMICS-NEXT: ret
2517 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i32_noret_seq_cst:
2518 ; OUTLINE-ATOMICS: // %bb.0:
2519 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2520 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2521 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2522 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
2523 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2524 ; OUTLINE-ATOMICS-NEXT: ret
2537 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_add_i64_noret_seq_cst:
2538 ; OUTLINE-ATOMICS: // %bb.0:
2539 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2540 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2541 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2542 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
2543 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2544 ; OUTLINE-ATOMICS-NEXT: ret
2557 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i8_acq_rel:
2558 ; OUTLINE-ATOMICS: // %bb.0:
2559 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2560 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2561 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
2562 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
2563 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr1_acq_rel
2564 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2565 ; OUTLINE-ATOMICS-NEXT: ret
2579 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i16_acq_rel:
2580 ; OUTLINE-ATOMICS: // %bb.0:
2581 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2582 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2583 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
2584 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
2585 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr2_acq_rel
2586 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2587 ; OUTLINE-ATOMICS-NEXT: ret
2601 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_acq_rel:
2602 ; OUTLINE-ATOMICS: // %bb.0:
2603 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2604 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2605 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2606 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2607 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel
2608 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2609 ; OUTLINE-ATOMICS-NEXT: ret
2623 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_acq_rel:
2624 ; OUTLINE-ATOMICS: // %bb.0:
2625 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2626 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
2627 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2628 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2629 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq_rel
2630 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2631 ; OUTLINE-ATOMICS-NEXT: ret
2645 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_noret_acq_rel:
2646 ; OUTLINE-ATOMICS: // %bb.0:
2647 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2648 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2649 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2650 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2651 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel
2652 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2653 ; OUTLINE-ATOMICS-NEXT: ret
2667 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_noret_acq_rel:
2668 ; OUTLINE-ATOMICS: // %bb.0:
2669 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2670 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
2671 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2672 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2673 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq_rel
2674 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2675 ; OUTLINE-ATOMICS-NEXT: ret
2689 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i8_acquire:
2690 ; OUTLINE-ATOMICS: // %bb.0:
2691 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2692 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2693 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
2694 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
2695 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr1_acq
2696 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2697 ; OUTLINE-ATOMICS-NEXT: ret
2711 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i16_acquire:
2712 ; OUTLINE-ATOMICS: // %bb.0:
2713 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2714 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2715 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
2716 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
2717 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr2_acq
2718 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2719 ; OUTLINE-ATOMICS-NEXT: ret
2733 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_acquire:
2734 ; OUTLINE-ATOMICS: // %bb.0:
2735 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2736 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2737 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2738 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2739 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq
2740 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2741 ; OUTLINE-ATOMICS-NEXT: ret
2755 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_acquire:
2756 ; OUTLINE-ATOMICS: // %bb.0:
2757 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2758 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
2759 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2760 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2761 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq
2762 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2763 ; OUTLINE-ATOMICS-NEXT: ret
2777 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_noret_acquire:
2778 ; OUTLINE-ATOMICS: // %bb.0:
2779 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2780 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2781 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2782 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2783 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq
2784 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2785 ; OUTLINE-ATOMICS-NEXT: ret
2799 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_noret_acquire:
2800 ; OUTLINE-ATOMICS: // %bb.0:
2801 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2802 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
2803 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2804 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2805 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq
2806 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2807 ; OUTLINE-ATOMICS-NEXT: ret
2821 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i8_monotonic:
2822 ; OUTLINE-ATOMICS: // %bb.0:
2823 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2824 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2825 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
2826 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
2827 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr1_relax
2828 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2829 ; OUTLINE-ATOMICS-NEXT: ret
2843 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i16_monotonic:
2844 ; OUTLINE-ATOMICS: // %bb.0:
2845 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2846 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2847 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
2848 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
2849 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr2_relax
2850 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2851 ; OUTLINE-ATOMICS-NEXT: ret
2865 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_monotonic:
2866 ; OUTLINE-ATOMICS: // %bb.0:
2867 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2868 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2869 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2870 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2871 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_relax
2872 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2873 ; OUTLINE-ATOMICS-NEXT: ret
2887 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_monotonic:
2888 ; OUTLINE-ATOMICS: // %bb.0:
2889 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2890 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
2891 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2892 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2893 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_relax
2894 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2895 ; OUTLINE-ATOMICS-NEXT: ret
2909 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_noret_monotonic:
2910 ; OUTLINE-ATOMICS: // %bb.0:
2911 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2912 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2913 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
2914 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
2915 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_relax
2916 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2917 ; OUTLINE-ATOMICS-NEXT: ret
2931 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_noret_monotonic:
2932 ; OUTLINE-ATOMICS: // %bb.0:
2933 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2934 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
2935 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
2936 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
2937 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_relax
2938 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2939 ; OUTLINE-ATOMICS-NEXT: ret
2953 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i8_release:
2954 ; OUTLINE-ATOMICS: // %bb.0:
2955 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2956 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2957 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
2958 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
2959 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr1_rel
2960 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2961 ; OUTLINE-ATOMICS-NEXT: ret
2975 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i16_release:
2976 ; OUTLINE-ATOMICS: // %bb.0:
2977 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
2978 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
2979 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
2980 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
2981 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr2_rel
2982 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
2983 ; OUTLINE-ATOMICS-NEXT: ret
2997 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_release:
2998 ; OUTLINE-ATOMICS: // %bb.0:
2999 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3000 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
3001 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
3002 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
3003 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_rel
3004 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3005 ; OUTLINE-ATOMICS-NEXT: ret
3019 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_release:
3020 ; OUTLINE-ATOMICS: // %bb.0:
3021 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3022 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
3023 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
3024 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
3025 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_rel
3026 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3027 ; OUTLINE-ATOMICS-NEXT: ret
3041 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_noret_release:
3042 ; OUTLINE-ATOMICS: // %bb.0:
3043 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3044 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
3045 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
3046 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
3047 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_rel
3048 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3049 ; OUTLINE-ATOMICS-NEXT: ret
3063 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_noret_release:
3064 ; OUTLINE-ATOMICS: // %bb.0:
3065 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3066 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
3067 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
3068 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
3069 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_rel
3070 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3071 ; OUTLINE-ATOMICS-NEXT: ret
3085 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i8_seq_cst:
3086 ; OUTLINE-ATOMICS: // %bb.0:
3087 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3088 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
3089 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
3090 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
3091 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr1_acq_rel
3092 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3093 ; OUTLINE-ATOMICS-NEXT: ret
3107 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i16_seq_cst:
3108 ; OUTLINE-ATOMICS: // %bb.0:
3109 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3110 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
3111 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
3112 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
3113 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr2_acq_rel
3114 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3115 ; OUTLINE-ATOMICS-NEXT: ret
3129 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_seq_cst:
3130 ; OUTLINE-ATOMICS: // %bb.0:
3131 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3132 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
3133 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
3134 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
3135 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel
3136 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3137 ; OUTLINE-ATOMICS-NEXT: ret
3151 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_seq_cst:
3152 ; OUTLINE-ATOMICS: // %bb.0:
3153 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3154 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
3155 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
3156 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
3157 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq_rel
3158 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3159 ; OUTLINE-ATOMICS-NEXT: ret
3173 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i32_noret_seq_cst:
3174 ; OUTLINE-ATOMICS: // %bb.0:
3175 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3176 ; OUTLINE-ATOMICS-NEXT: mvn w0, w0
3177 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
3178 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
3179 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr4_acq_rel
3180 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3181 ; OUTLINE-ATOMICS-NEXT: ret
3195 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_and_i64_noret_seq_cst:
3196 ; OUTLINE-ATOMICS: // %bb.0:
3197 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3198 ; OUTLINE-ATOMICS-NEXT: mvn x0, x0
3199 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
3200 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
3201 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldclr8_acq_rel
3202 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3203 ; OUTLINE-ATOMICS-NEXT: ret
3217 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i8_acquire:
3218 ; OUTLINE-ATOMICS: // %bb.0:
3219 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3220 ; OUTLINE-ATOMICS-NEXT: adrp x2, var8
3221 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var8
3222 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas1_acq
3223 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3224 ; OUTLINE-ATOMICS-NEXT: ret
3240 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i16_acquire:
3241 ; OUTLINE-ATOMICS: // %bb.0:
3242 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3243 ; OUTLINE-ATOMICS-NEXT: adrp x2, var16
3244 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var16
3245 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas2_acq
3246 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3247 ; OUTLINE-ATOMICS-NEXT: ret
3263 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i32_acquire:
3264 ; OUTLINE-ATOMICS: // %bb.0:
3265 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3266 ; OUTLINE-ATOMICS-NEXT: adrp x2, var32
3267 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var32
3268 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas4_acq
3269 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3270 ; OUTLINE-ATOMICS-NEXT: ret
3286 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i64_acquire:
3287 ; OUTLINE-ATOMICS: // %bb.0:
3288 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3289 ; OUTLINE-ATOMICS-NEXT: adrp x2, var64
3290 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var64
3291 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas8_acq
3292 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3293 ; OUTLINE-ATOMICS-NEXT: ret
3309 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i128_acquire:
3310 ; OUTLINE-ATOMICS: // %bb.0:
3311 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3312 ; OUTLINE-ATOMICS-NEXT: adrp x4, var128
3313 ; OUTLINE-ATOMICS-NEXT: add x4, x4, :lo12:var128
3314 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas16_acq
3315 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3316 ; OUTLINE-ATOMICS-NEXT: ret
3332 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i8_monotonic:
3333 ; OUTLINE-ATOMICS: // %bb.0:
3334 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3335 ; OUTLINE-ATOMICS-NEXT: adrp x2, var8
3336 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var8
3337 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas1_relax
3338 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3339 ; OUTLINE-ATOMICS-NEXT: ret
3355 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i16_monotonic:
3356 ; OUTLINE-ATOMICS: // %bb.0:
3357 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3358 ; OUTLINE-ATOMICS-NEXT: adrp x2, var16
3359 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var16
3360 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas2_relax
3361 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3362 ; OUTLINE-ATOMICS-NEXT: ret
3378 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i32_monotonic:
3379 ; OUTLINE-ATOMICS: // %bb.0:
3380 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3381 ; OUTLINE-ATOMICS-NEXT: adrp x2, var32
3382 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var32
3383 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas4_relax
3384 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3385 ; OUTLINE-ATOMICS-NEXT: ret
3401 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i64_monotonic:
3402 ; OUTLINE-ATOMICS: // %bb.0:
3403 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3404 ; OUTLINE-ATOMICS-NEXT: adrp x2, var64
3405 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var64
3406 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas8_relax
3407 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3408 ; OUTLINE-ATOMICS-NEXT: ret
3424 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i128_monotonic:
3425 ; OUTLINE-ATOMICS: // %bb.0:
3426 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3427 ; OUTLINE-ATOMICS-NEXT: adrp x4, var128
3428 ; OUTLINE-ATOMICS-NEXT: add x4, x4, :lo12:var128
3429 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas16_relax
3430 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3431 ; OUTLINE-ATOMICS-NEXT: ret
3447 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i8_seq_cst:
3448 ; OUTLINE-ATOMICS: // %bb.0:
3449 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3450 ; OUTLINE-ATOMICS-NEXT: adrp x2, var8
3451 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var8
3452 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas1_acq_rel
3453 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3454 ; OUTLINE-ATOMICS-NEXT: ret
3470 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i16_seq_cst:
3471 ; OUTLINE-ATOMICS: // %bb.0:
3472 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3473 ; OUTLINE-ATOMICS-NEXT: adrp x2, var16
3474 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var16
3475 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas2_acq_rel
3476 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3477 ; OUTLINE-ATOMICS-NEXT: ret
3493 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i32_seq_cst:
3494 ; OUTLINE-ATOMICS: // %bb.0:
3495 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3496 ; OUTLINE-ATOMICS-NEXT: adrp x2, var32
3497 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var32
3498 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas4_acq_rel
3499 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3500 ; OUTLINE-ATOMICS-NEXT: ret
3516 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i64_seq_cst:
3517 ; OUTLINE-ATOMICS: // %bb.0:
3518 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3519 ; OUTLINE-ATOMICS-NEXT: adrp x2, var64
3520 ; OUTLINE-ATOMICS-NEXT: add x2, x2, :lo12:var64
3521 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas8_acq_rel
3522 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3523 ; OUTLINE-ATOMICS-NEXT: ret
3539 ; OUTLINE-ATOMICS-LABEL: test_atomic_cmpxchg_i128_seq_cst:
3540 ; OUTLINE-ATOMICS: // %bb.0:
3541 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
3542 ; OUTLINE-ATOMICS-NEXT: adrp x4, var128
3543 ; OUTLINE-ATOMICS-NEXT: add x4, x4, :lo12:var128
3544 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_cas16_acq_rel
3545 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
3546 ; OUTLINE-ATOMICS-NEXT: ret
3562 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i8_acq_rel:
3563 ; OUTLINE-ATOMICS: // %bb.0:
3564 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
3565 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
3566 ; OUTLINE-ATOMICS-NEXT: .LBB158_1: // %atomicrmw.start
3567 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3568 ; OUTLINE-ATOMICS-NEXT: ldaxrb w10, [x9]
3569 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
3570 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
3571 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
3572 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
3573 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB158_1
3574 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3575 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3576 ; OUTLINE-ATOMICS-NEXT: ret
3590 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i16_acq_rel:
3591 ; OUTLINE-ATOMICS: // %bb.0:
3592 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
3593 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
3594 ; OUTLINE-ATOMICS-NEXT: .LBB159_1: // %atomicrmw.start
3595 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3596 ; OUTLINE-ATOMICS-NEXT: ldaxrh w10, [x9]
3597 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
3598 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
3599 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
3600 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
3601 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB159_1
3602 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3603 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3604 ; OUTLINE-ATOMICS-NEXT: ret
3618 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_acq_rel:
3619 ; OUTLINE-ATOMICS: // %bb.0:
3620 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
3621 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
3622 ; OUTLINE-ATOMICS-NEXT: .LBB160_1: // %atomicrmw.start
3623 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3624 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
3625 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
3626 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, gt
3627 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
3628 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB160_1
3629 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3630 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3631 ; OUTLINE-ATOMICS-NEXT: ret
3645 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_acq_rel:
3646 ; OUTLINE-ATOMICS: // %bb.0:
3647 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
3648 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
3649 ; OUTLINE-ATOMICS-NEXT: .LBB161_1: // %atomicrmw.start
3650 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3651 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
3652 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
3653 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, gt
3654 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
3655 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB161_1
3656 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3657 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
3658 ; OUTLINE-ATOMICS-NEXT: ret
3672 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_noret_acq_rel:
3673 ; OUTLINE-ATOMICS: // %bb.0:
3674 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
3675 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
3676 ; OUTLINE-ATOMICS-NEXT: .LBB162_1: // %atomicrmw.start
3677 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3678 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
3679 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
3680 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, gt
3681 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
3682 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB162_1
3683 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3684 ; OUTLINE-ATOMICS-NEXT: ret
3697 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_noret_acq_rel:
3698 ; OUTLINE-ATOMICS: // %bb.0:
3699 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
3700 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
3701 ; OUTLINE-ATOMICS-NEXT: .LBB163_1: // %atomicrmw.start
3702 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3703 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
3704 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
3705 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, gt
3706 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
3707 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB163_1
3708 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3709 ; OUTLINE-ATOMICS-NEXT: ret
3722 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i8_acquire:
3723 ; OUTLINE-ATOMICS: // %bb.0:
3724 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
3725 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
3726 ; OUTLINE-ATOMICS-NEXT: .LBB164_1: // %atomicrmw.start
3727 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3728 ; OUTLINE-ATOMICS-NEXT: ldaxrb w10, [x9]
3729 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
3730 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
3731 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
3732 ; OUTLINE-ATOMICS-NEXT: stxrb w11, w10, [x9]
3733 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB164_1
3734 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3735 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3736 ; OUTLINE-ATOMICS-NEXT: ret
3750 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i16_acquire:
3751 ; OUTLINE-ATOMICS: // %bb.0:
3752 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
3753 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
3754 ; OUTLINE-ATOMICS-NEXT: .LBB165_1: // %atomicrmw.start
3755 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3756 ; OUTLINE-ATOMICS-NEXT: ldaxrh w10, [x9]
3757 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
3758 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
3759 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
3760 ; OUTLINE-ATOMICS-NEXT: stxrh w11, w10, [x9]
3761 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB165_1
3762 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3763 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3764 ; OUTLINE-ATOMICS-NEXT: ret
3778 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_acquire:
3779 ; OUTLINE-ATOMICS: // %bb.0:
3780 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
3781 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
3782 ; OUTLINE-ATOMICS-NEXT: .LBB166_1: // %atomicrmw.start
3783 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3784 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
3785 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
3786 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, gt
3787 ; OUTLINE-ATOMICS-NEXT: stxr w11, w10, [x9]
3788 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB166_1
3789 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3790 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3791 ; OUTLINE-ATOMICS-NEXT: ret
3805 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_acquire:
3806 ; OUTLINE-ATOMICS: // %bb.0:
3807 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
3808 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
3809 ; OUTLINE-ATOMICS-NEXT: .LBB167_1: // %atomicrmw.start
3810 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3811 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
3812 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
3813 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, gt
3814 ; OUTLINE-ATOMICS-NEXT: stxr w11, x10, [x9]
3815 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB167_1
3816 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3817 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
3818 ; OUTLINE-ATOMICS-NEXT: ret
3832 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_noret_acquire:
3833 ; OUTLINE-ATOMICS: // %bb.0:
3834 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
3835 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
3836 ; OUTLINE-ATOMICS-NEXT: .LBB168_1: // %atomicrmw.start
3837 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3838 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
3839 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
3840 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, gt
3841 ; OUTLINE-ATOMICS-NEXT: stxr w10, w9, [x8]
3842 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB168_1
3843 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3844 ; OUTLINE-ATOMICS-NEXT: ret
3857 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_noret_acquire:
3858 ; OUTLINE-ATOMICS: // %bb.0:
3859 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
3860 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
3861 ; OUTLINE-ATOMICS-NEXT: .LBB169_1: // %atomicrmw.start
3862 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3863 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
3864 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
3865 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, gt
3866 ; OUTLINE-ATOMICS-NEXT: stxr w10, x9, [x8]
3867 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB169_1
3868 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3869 ; OUTLINE-ATOMICS-NEXT: ret
3882 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i8_monotonic:
3883 ; OUTLINE-ATOMICS: // %bb.0:
3884 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
3885 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
3886 ; OUTLINE-ATOMICS-NEXT: .LBB170_1: // %atomicrmw.start
3887 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3888 ; OUTLINE-ATOMICS-NEXT: ldxrb w10, [x9]
3889 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
3890 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
3891 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
3892 ; OUTLINE-ATOMICS-NEXT: stxrb w11, w10, [x9]
3893 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB170_1
3894 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3895 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3896 ; OUTLINE-ATOMICS-NEXT: ret
3910 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i16_monotonic:
3911 ; OUTLINE-ATOMICS: // %bb.0:
3912 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
3913 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
3914 ; OUTLINE-ATOMICS-NEXT: .LBB171_1: // %atomicrmw.start
3915 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3916 ; OUTLINE-ATOMICS-NEXT: ldxrh w10, [x9]
3917 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
3918 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
3919 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
3920 ; OUTLINE-ATOMICS-NEXT: stxrh w11, w10, [x9]
3921 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB171_1
3922 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3923 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3924 ; OUTLINE-ATOMICS-NEXT: ret
3938 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_monotonic:
3939 ; OUTLINE-ATOMICS: // %bb.0:
3940 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
3941 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
3942 ; OUTLINE-ATOMICS-NEXT: .LBB172_1: // %atomicrmw.start
3943 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3944 ; OUTLINE-ATOMICS-NEXT: ldxr w8, [x9]
3945 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
3946 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, gt
3947 ; OUTLINE-ATOMICS-NEXT: stxr w11, w10, [x9]
3948 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB172_1
3949 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3950 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
3951 ; OUTLINE-ATOMICS-NEXT: ret
3965 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_monotonic:
3966 ; OUTLINE-ATOMICS: // %bb.0:
3967 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
3968 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
3969 ; OUTLINE-ATOMICS-NEXT: .LBB173_1: // %atomicrmw.start
3970 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3971 ; OUTLINE-ATOMICS-NEXT: ldxr x8, [x9]
3972 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
3973 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, gt
3974 ; OUTLINE-ATOMICS-NEXT: stxr w11, x10, [x9]
3975 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB173_1
3976 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
3977 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
3978 ; OUTLINE-ATOMICS-NEXT: ret
3992 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_noret_monotonic:
3993 ; OUTLINE-ATOMICS: // %bb.0:
3994 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
3995 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
3996 ; OUTLINE-ATOMICS-NEXT: .LBB174_1: // %atomicrmw.start
3997 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
3998 ; OUTLINE-ATOMICS-NEXT: ldxr w9, [x8]
3999 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
4000 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, gt
4001 ; OUTLINE-ATOMICS-NEXT: stxr w10, w9, [x8]
4002 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB174_1
4003 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4004 ; OUTLINE-ATOMICS-NEXT: ret
4017 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_noret_monotonic:
4018 ; OUTLINE-ATOMICS: // %bb.0:
4019 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
4020 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
4021 ; OUTLINE-ATOMICS-NEXT: .LBB175_1: // %atomicrmw.start
4022 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4023 ; OUTLINE-ATOMICS-NEXT: ldxr x9, [x8]
4024 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
4025 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, gt
4026 ; OUTLINE-ATOMICS-NEXT: stxr w10, x9, [x8]
4027 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB175_1
4028 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4029 ; OUTLINE-ATOMICS-NEXT: ret
4042 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i8_release:
4043 ; OUTLINE-ATOMICS: // %bb.0:
4044 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
4045 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
4046 ; OUTLINE-ATOMICS-NEXT: .LBB176_1: // %atomicrmw.start
4047 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4048 ; OUTLINE-ATOMICS-NEXT: ldxrb w10, [x9]
4049 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
4050 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
4051 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
4052 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
4053 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB176_1
4054 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4055 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4056 ; OUTLINE-ATOMICS-NEXT: ret
4070 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i16_release:
4071 ; OUTLINE-ATOMICS: // %bb.0:
4072 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
4073 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
4074 ; OUTLINE-ATOMICS-NEXT: .LBB177_1: // %atomicrmw.start
4075 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4076 ; OUTLINE-ATOMICS-NEXT: ldxrh w10, [x9]
4077 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
4078 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
4079 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
4080 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
4081 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB177_1
4082 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4083 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4084 ; OUTLINE-ATOMICS-NEXT: ret
4098 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_release:
4099 ; OUTLINE-ATOMICS: // %bb.0:
4100 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
4101 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
4102 ; OUTLINE-ATOMICS-NEXT: .LBB178_1: // %atomicrmw.start
4103 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4104 ; OUTLINE-ATOMICS-NEXT: ldxr w8, [x9]
4105 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
4106 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, gt
4107 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
4108 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB178_1
4109 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4110 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4111 ; OUTLINE-ATOMICS-NEXT: ret
4125 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_release:
4126 ; OUTLINE-ATOMICS: // %bb.0:
4127 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
4128 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
4129 ; OUTLINE-ATOMICS-NEXT: .LBB179_1: // %atomicrmw.start
4130 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4131 ; OUTLINE-ATOMICS-NEXT: ldxr x8, [x9]
4132 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
4133 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, gt
4134 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
4135 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB179_1
4136 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4137 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
4138 ; OUTLINE-ATOMICS-NEXT: ret
4152 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_noret_release:
4153 ; OUTLINE-ATOMICS: // %bb.0:
4154 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
4155 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
4156 ; OUTLINE-ATOMICS-NEXT: .LBB180_1: // %atomicrmw.start
4157 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4158 ; OUTLINE-ATOMICS-NEXT: ldxr w9, [x8]
4159 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
4160 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, gt
4161 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
4162 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB180_1
4163 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4164 ; OUTLINE-ATOMICS-NEXT: ret
4177 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_noret_release:
4178 ; OUTLINE-ATOMICS: // %bb.0:
4179 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
4180 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
4181 ; OUTLINE-ATOMICS-NEXT: .LBB181_1: // %atomicrmw.start
4182 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4183 ; OUTLINE-ATOMICS-NEXT: ldxr x9, [x8]
4184 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
4185 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, gt
4186 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
4187 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB181_1
4188 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4189 ; OUTLINE-ATOMICS-NEXT: ret
4202 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i8_seq_cst:
4203 ; OUTLINE-ATOMICS: // %bb.0:
4204 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
4205 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
4206 ; OUTLINE-ATOMICS-NEXT: .LBB182_1: // %atomicrmw.start
4207 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4208 ; OUTLINE-ATOMICS-NEXT: ldaxrb w10, [x9]
4209 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
4210 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
4211 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
4212 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
4213 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB182_1
4214 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4215 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4216 ; OUTLINE-ATOMICS-NEXT: ret
4230 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i16_seq_cst:
4231 ; OUTLINE-ATOMICS: // %bb.0:
4232 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
4233 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
4234 ; OUTLINE-ATOMICS-NEXT: .LBB183_1: // %atomicrmw.start
4235 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4236 ; OUTLINE-ATOMICS-NEXT: ldaxrh w10, [x9]
4237 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
4238 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
4239 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, gt
4240 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
4241 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB183_1
4242 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4243 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4244 ; OUTLINE-ATOMICS-NEXT: ret
4258 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_seq_cst:
4259 ; OUTLINE-ATOMICS: // %bb.0:
4260 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
4261 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
4262 ; OUTLINE-ATOMICS-NEXT: .LBB184_1: // %atomicrmw.start
4263 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4264 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
4265 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
4266 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, gt
4267 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
4268 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB184_1
4269 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4270 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4271 ; OUTLINE-ATOMICS-NEXT: ret
4285 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_seq_cst:
4286 ; OUTLINE-ATOMICS: // %bb.0:
4287 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
4288 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
4289 ; OUTLINE-ATOMICS-NEXT: .LBB185_1: // %atomicrmw.start
4290 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4291 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
4292 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
4293 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, gt
4294 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
4295 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB185_1
4296 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4297 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
4298 ; OUTLINE-ATOMICS-NEXT: ret
4312 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i32_noret_seq_cst:
4313 ; OUTLINE-ATOMICS: // %bb.0:
4314 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
4315 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
4316 ; OUTLINE-ATOMICS-NEXT: .LBB186_1: // %atomicrmw.start
4317 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4318 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
4319 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
4320 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, gt
4321 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
4322 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB186_1
4323 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4324 ; OUTLINE-ATOMICS-NEXT: ret
4337 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_max_i64_noret_seq_cst:
4338 ; OUTLINE-ATOMICS: // %bb.0:
4339 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
4340 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
4341 ; OUTLINE-ATOMICS-NEXT: .LBB187_1: // %atomicrmw.start
4342 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4343 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
4344 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
4345 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, gt
4346 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
4347 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB187_1
4348 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4349 ; OUTLINE-ATOMICS-NEXT: ret
4362 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i8_acq_rel:
4363 ; OUTLINE-ATOMICS: // %bb.0:
4364 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
4365 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
4366 ; OUTLINE-ATOMICS-NEXT: .LBB188_1: // %atomicrmw.start
4367 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4368 ; OUTLINE-ATOMICS-NEXT: ldaxrb w10, [x9]
4369 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
4370 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
4371 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
4372 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
4373 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB188_1
4374 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4375 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4376 ; OUTLINE-ATOMICS-NEXT: ret
4390 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i16_acq_rel:
4391 ; OUTLINE-ATOMICS: // %bb.0:
4392 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
4393 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
4394 ; OUTLINE-ATOMICS-NEXT: .LBB189_1: // %atomicrmw.start
4395 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4396 ; OUTLINE-ATOMICS-NEXT: ldaxrh w10, [x9]
4397 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
4398 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
4399 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
4400 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
4401 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB189_1
4402 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4403 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4404 ; OUTLINE-ATOMICS-NEXT: ret
4418 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_acq_rel:
4419 ; OUTLINE-ATOMICS: // %bb.0:
4420 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
4421 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
4422 ; OUTLINE-ATOMICS-NEXT: .LBB190_1: // %atomicrmw.start
4423 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4424 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
4425 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
4426 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, le
4427 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
4428 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB190_1
4429 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4430 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4431 ; OUTLINE-ATOMICS-NEXT: ret
4445 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_acq_rel:
4446 ; OUTLINE-ATOMICS: // %bb.0:
4447 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
4448 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
4449 ; OUTLINE-ATOMICS-NEXT: .LBB191_1: // %atomicrmw.start
4450 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4451 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
4452 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
4453 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, le
4454 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
4455 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB191_1
4456 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4457 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
4458 ; OUTLINE-ATOMICS-NEXT: ret
4472 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_noret_acq_rel:
4473 ; OUTLINE-ATOMICS: // %bb.0:
4474 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
4475 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
4476 ; OUTLINE-ATOMICS-NEXT: .LBB192_1: // %atomicrmw.start
4477 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4478 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
4479 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
4480 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, le
4481 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
4482 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB192_1
4483 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4484 ; OUTLINE-ATOMICS-NEXT: ret
4497 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_noret_acq_rel:
4498 ; OUTLINE-ATOMICS: // %bb.0:
4499 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
4500 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
4501 ; OUTLINE-ATOMICS-NEXT: .LBB193_1: // %atomicrmw.start
4502 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4503 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
4504 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
4505 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, le
4506 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
4507 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB193_1
4508 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4509 ; OUTLINE-ATOMICS-NEXT: ret
4522 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i8_acquire:
4523 ; OUTLINE-ATOMICS: // %bb.0:
4524 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
4525 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
4526 ; OUTLINE-ATOMICS-NEXT: .LBB194_1: // %atomicrmw.start
4527 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4528 ; OUTLINE-ATOMICS-NEXT: ldaxrb w10, [x9]
4529 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
4530 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
4531 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
4532 ; OUTLINE-ATOMICS-NEXT: stxrb w11, w10, [x9]
4533 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB194_1
4534 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4535 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4536 ; OUTLINE-ATOMICS-NEXT: ret
4550 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i16_acquire:
4551 ; OUTLINE-ATOMICS: // %bb.0:
4552 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
4553 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
4554 ; OUTLINE-ATOMICS-NEXT: .LBB195_1: // %atomicrmw.start
4555 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4556 ; OUTLINE-ATOMICS-NEXT: ldaxrh w10, [x9]
4557 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
4558 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
4559 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
4560 ; OUTLINE-ATOMICS-NEXT: stxrh w11, w10, [x9]
4561 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB195_1
4562 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4563 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4564 ; OUTLINE-ATOMICS-NEXT: ret
4578 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_acquire:
4579 ; OUTLINE-ATOMICS: // %bb.0:
4580 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
4581 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
4582 ; OUTLINE-ATOMICS-NEXT: .LBB196_1: // %atomicrmw.start
4583 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4584 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
4585 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
4586 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, le
4587 ; OUTLINE-ATOMICS-NEXT: stxr w11, w10, [x9]
4588 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB196_1
4589 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4590 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4591 ; OUTLINE-ATOMICS-NEXT: ret
4605 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_acquire:
4606 ; OUTLINE-ATOMICS: // %bb.0:
4607 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
4608 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
4609 ; OUTLINE-ATOMICS-NEXT: .LBB197_1: // %atomicrmw.start
4610 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4611 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
4612 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
4613 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, le
4614 ; OUTLINE-ATOMICS-NEXT: stxr w11, x10, [x9]
4615 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB197_1
4616 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4617 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
4618 ; OUTLINE-ATOMICS-NEXT: ret
4632 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_noret_acquire:
4633 ; OUTLINE-ATOMICS: // %bb.0:
4634 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
4635 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
4636 ; OUTLINE-ATOMICS-NEXT: .LBB198_1: // %atomicrmw.start
4637 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4638 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
4639 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
4640 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, le
4641 ; OUTLINE-ATOMICS-NEXT: stxr w10, w9, [x8]
4642 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB198_1
4643 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4644 ; OUTLINE-ATOMICS-NEXT: ret
4657 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_noret_acquire:
4658 ; OUTLINE-ATOMICS: // %bb.0:
4659 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
4660 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
4661 ; OUTLINE-ATOMICS-NEXT: .LBB199_1: // %atomicrmw.start
4662 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4663 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
4664 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
4665 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, le
4666 ; OUTLINE-ATOMICS-NEXT: stxr w10, x9, [x8]
4667 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB199_1
4668 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4669 ; OUTLINE-ATOMICS-NEXT: ret
4682 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i8_monotonic:
4683 ; OUTLINE-ATOMICS: // %bb.0:
4684 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
4685 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
4686 ; OUTLINE-ATOMICS-NEXT: .LBB200_1: // %atomicrmw.start
4687 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4688 ; OUTLINE-ATOMICS-NEXT: ldxrb w10, [x9]
4689 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
4690 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
4691 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
4692 ; OUTLINE-ATOMICS-NEXT: stxrb w11, w10, [x9]
4693 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB200_1
4694 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4695 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4696 ; OUTLINE-ATOMICS-NEXT: ret
4710 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i16_monotonic:
4711 ; OUTLINE-ATOMICS: // %bb.0:
4712 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
4713 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
4714 ; OUTLINE-ATOMICS-NEXT: .LBB201_1: // %atomicrmw.start
4715 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4716 ; OUTLINE-ATOMICS-NEXT: ldxrh w10, [x9]
4717 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
4718 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
4719 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
4720 ; OUTLINE-ATOMICS-NEXT: stxrh w11, w10, [x9]
4721 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB201_1
4722 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4723 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4724 ; OUTLINE-ATOMICS-NEXT: ret
4738 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_monotonic:
4739 ; OUTLINE-ATOMICS: // %bb.0:
4740 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
4741 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
4742 ; OUTLINE-ATOMICS-NEXT: .LBB202_1: // %atomicrmw.start
4743 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4744 ; OUTLINE-ATOMICS-NEXT: ldxr w8, [x9]
4745 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
4746 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, le
4747 ; OUTLINE-ATOMICS-NEXT: stxr w11, w10, [x9]
4748 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB202_1
4749 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4750 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4751 ; OUTLINE-ATOMICS-NEXT: ret
4765 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_monotonic:
4766 ; OUTLINE-ATOMICS: // %bb.0:
4767 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
4768 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
4769 ; OUTLINE-ATOMICS-NEXT: .LBB203_1: // %atomicrmw.start
4770 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4771 ; OUTLINE-ATOMICS-NEXT: ldxr x8, [x9]
4772 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
4773 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, le
4774 ; OUTLINE-ATOMICS-NEXT: stxr w11, x10, [x9]
4775 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB203_1
4776 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4777 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
4778 ; OUTLINE-ATOMICS-NEXT: ret
4792 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_noret_monotonic:
4793 ; OUTLINE-ATOMICS: // %bb.0:
4794 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
4795 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
4796 ; OUTLINE-ATOMICS-NEXT: .LBB204_1: // %atomicrmw.start
4797 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4798 ; OUTLINE-ATOMICS-NEXT: ldxr w9, [x8]
4799 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
4800 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, le
4801 ; OUTLINE-ATOMICS-NEXT: stxr w10, w9, [x8]
4802 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB204_1
4803 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4804 ; OUTLINE-ATOMICS-NEXT: ret
4817 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_noret_monotonic:
4818 ; OUTLINE-ATOMICS: // %bb.0:
4819 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
4820 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
4821 ; OUTLINE-ATOMICS-NEXT: .LBB205_1: // %atomicrmw.start
4822 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4823 ; OUTLINE-ATOMICS-NEXT: ldxr x9, [x8]
4824 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
4825 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, le
4826 ; OUTLINE-ATOMICS-NEXT: stxr w10, x9, [x8]
4827 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB205_1
4828 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4829 ; OUTLINE-ATOMICS-NEXT: ret
4842 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i8_release:
4843 ; OUTLINE-ATOMICS: // %bb.0:
4844 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
4845 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
4846 ; OUTLINE-ATOMICS-NEXT: .LBB206_1: // %atomicrmw.start
4847 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4848 ; OUTLINE-ATOMICS-NEXT: ldxrb w10, [x9]
4849 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
4850 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
4851 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
4852 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
4853 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB206_1
4854 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4855 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4856 ; OUTLINE-ATOMICS-NEXT: ret
4870 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i16_release:
4871 ; OUTLINE-ATOMICS: // %bb.0:
4872 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
4873 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
4874 ; OUTLINE-ATOMICS-NEXT: .LBB207_1: // %atomicrmw.start
4875 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4876 ; OUTLINE-ATOMICS-NEXT: ldxrh w10, [x9]
4877 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
4878 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
4879 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
4880 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
4881 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB207_1
4882 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4883 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4884 ; OUTLINE-ATOMICS-NEXT: ret
4898 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_release:
4899 ; OUTLINE-ATOMICS: // %bb.0:
4900 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
4901 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
4902 ; OUTLINE-ATOMICS-NEXT: .LBB208_1: // %atomicrmw.start
4903 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4904 ; OUTLINE-ATOMICS-NEXT: ldxr w8, [x9]
4905 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
4906 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, le
4907 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
4908 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB208_1
4909 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4910 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
4911 ; OUTLINE-ATOMICS-NEXT: ret
4925 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_release:
4926 ; OUTLINE-ATOMICS: // %bb.0:
4927 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
4928 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
4929 ; OUTLINE-ATOMICS-NEXT: .LBB209_1: // %atomicrmw.start
4930 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4931 ; OUTLINE-ATOMICS-NEXT: ldxr x8, [x9]
4932 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
4933 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, le
4934 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
4935 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB209_1
4936 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4937 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
4938 ; OUTLINE-ATOMICS-NEXT: ret
4952 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_noret_release:
4953 ; OUTLINE-ATOMICS: // %bb.0:
4954 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
4955 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
4956 ; OUTLINE-ATOMICS-NEXT: .LBB210_1: // %atomicrmw.start
4957 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4958 ; OUTLINE-ATOMICS-NEXT: ldxr w9, [x8]
4959 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
4960 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, le
4961 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
4962 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB210_1
4963 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4964 ; OUTLINE-ATOMICS-NEXT: ret
4977 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_noret_release:
4978 ; OUTLINE-ATOMICS: // %bb.0:
4979 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
4980 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
4981 ; OUTLINE-ATOMICS-NEXT: .LBB211_1: // %atomicrmw.start
4982 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
4983 ; OUTLINE-ATOMICS-NEXT: ldxr x9, [x8]
4984 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
4985 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, le
4986 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
4987 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB211_1
4988 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
4989 ; OUTLINE-ATOMICS-NEXT: ret
5002 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i8_seq_cst:
5003 ; OUTLINE-ATOMICS: // %bb.0:
5004 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
5005 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
5006 ; OUTLINE-ATOMICS-NEXT: .LBB212_1: // %atomicrmw.start
5007 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
5008 ; OUTLINE-ATOMICS-NEXT: ldaxrb w10, [x9]
5009 ; OUTLINE-ATOMICS-NEXT: sxtb w8, w10
5010 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxtb
5011 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
5012 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
5013 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB212_1
5014 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
5015 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
5016 ; OUTLINE-ATOMICS-NEXT: ret
5030 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i16_seq_cst:
5031 ; OUTLINE-ATOMICS: // %bb.0:
5032 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
5033 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
5034 ; OUTLINE-ATOMICS-NEXT: .LBB213_1: // %atomicrmw.start
5035 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
5036 ; OUTLINE-ATOMICS-NEXT: ldaxrh w10, [x9]
5037 ; OUTLINE-ATOMICS-NEXT: sxth w8, w10
5038 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, sxth
5039 ; OUTLINE-ATOMICS-NEXT: csel w10, w10, w0, le
5040 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
5041 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB213_1
5042 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
5043 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
5044 ; OUTLINE-ATOMICS-NEXT: ret
5058 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_seq_cst:
5059 ; OUTLINE-ATOMICS: // %bb.0:
5060 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
5061 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
5062 ; OUTLINE-ATOMICS-NEXT: .LBB214_1: // %atomicrmw.start
5063 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
5064 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
5065 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
5066 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, le
5067 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
5068 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB214_1
5069 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
5070 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
5071 ; OUTLINE-ATOMICS-NEXT: ret
5085 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_seq_cst:
5086 ; OUTLINE-ATOMICS: // %bb.0:
5087 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
5088 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
5089 ; OUTLINE-ATOMICS-NEXT: .LBB215_1: // %atomicrmw.start
5090 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
5091 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
5092 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
5093 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, le
5094 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
5095 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB215_1
5096 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
5097 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
5098 ; OUTLINE-ATOMICS-NEXT: ret
5112 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i32_noret_seq_cst:
5113 ; OUTLINE-ATOMICS: // %bb.0:
5114 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
5115 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
5116 ; OUTLINE-ATOMICS-NEXT: .LBB216_1: // %atomicrmw.start
5117 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
5118 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
5119 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
5120 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, le
5121 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
5122 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB216_1
5123 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
5124 ; OUTLINE-ATOMICS-NEXT: ret
5137 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_min_i64_noret_seq_cst:
5138 ; OUTLINE-ATOMICS: // %bb.0:
5139 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
5140 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
5141 ; OUTLINE-ATOMICS-NEXT: .LBB217_1: // %atomicrmw.start
5142 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
5143 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
5144 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
5145 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, le
5146 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
5147 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB217_1
5148 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
5149 ; OUTLINE-ATOMICS-NEXT: ret
5162 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i8_acq_rel:
5163 ; OUTLINE-ATOMICS: // %bb.0:
5164 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5165 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
5166 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
5167 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset1_acq_rel
5168 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5169 ; OUTLINE-ATOMICS-NEXT: ret
5183 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i16_acq_rel:
5184 ; OUTLINE-ATOMICS: // %bb.0:
5185 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5186 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
5187 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
5188 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset2_acq_rel
5189 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5190 ; OUTLINE-ATOMICS-NEXT: ret
5204 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_acq_rel:
5205 ; OUTLINE-ATOMICS: // %bb.0:
5206 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5207 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5208 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5209 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_acq_rel
5210 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5211 ; OUTLINE-ATOMICS-NEXT: ret
5225 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_acq_rel:
5226 ; OUTLINE-ATOMICS: // %bb.0:
5227 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5228 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5229 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5230 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_acq_rel
5231 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5232 ; OUTLINE-ATOMICS-NEXT: ret
5246 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_noret_acq_rel:
5247 ; OUTLINE-ATOMICS: // %bb.0:
5248 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5249 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5250 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5251 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_acq_rel
5252 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5253 ; OUTLINE-ATOMICS-NEXT: ret
5266 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_noret_acq_rel:
5267 ; OUTLINE-ATOMICS: // %bb.0:
5268 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5269 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5270 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5271 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_acq_rel
5272 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5273 ; OUTLINE-ATOMICS-NEXT: ret
5286 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i8_acquire:
5287 ; OUTLINE-ATOMICS: // %bb.0:
5288 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5289 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
5290 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
5291 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset1_acq
5292 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5293 ; OUTLINE-ATOMICS-NEXT: ret
5307 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i16_acquire:
5308 ; OUTLINE-ATOMICS: // %bb.0:
5309 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5310 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
5311 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
5312 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset2_acq
5313 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5314 ; OUTLINE-ATOMICS-NEXT: ret
5328 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_acquire:
5329 ; OUTLINE-ATOMICS: // %bb.0:
5330 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5331 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5332 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5333 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_acq
5334 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5335 ; OUTLINE-ATOMICS-NEXT: ret
5349 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_acquire:
5350 ; OUTLINE-ATOMICS: // %bb.0:
5351 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5352 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5353 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5354 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_acq
5355 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5356 ; OUTLINE-ATOMICS-NEXT: ret
5370 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_noret_acquire:
5371 ; OUTLINE-ATOMICS: // %bb.0:
5372 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5373 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5374 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5375 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_acq
5376 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5377 ; OUTLINE-ATOMICS-NEXT: ret
5390 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_noret_acquire:
5391 ; OUTLINE-ATOMICS: // %bb.0:
5392 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5393 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5394 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5395 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_acq
5396 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5397 ; OUTLINE-ATOMICS-NEXT: ret
5410 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i8_monotonic:
5411 ; OUTLINE-ATOMICS: // %bb.0:
5412 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5413 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
5414 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
5415 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset1_relax
5416 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5417 ; OUTLINE-ATOMICS-NEXT: ret
5431 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i16_monotonic:
5432 ; OUTLINE-ATOMICS: // %bb.0:
5433 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5434 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
5435 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
5436 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset2_relax
5437 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5438 ; OUTLINE-ATOMICS-NEXT: ret
5452 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_monotonic:
5453 ; OUTLINE-ATOMICS: // %bb.0:
5454 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5455 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5456 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5457 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_relax
5458 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5459 ; OUTLINE-ATOMICS-NEXT: ret
5473 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_monotonic:
5474 ; OUTLINE-ATOMICS: // %bb.0:
5475 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5476 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5477 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5478 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_relax
5479 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5480 ; OUTLINE-ATOMICS-NEXT: ret
5494 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_noret_monotonic:
5495 ; OUTLINE-ATOMICS: // %bb.0:
5496 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5497 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5498 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5499 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_relax
5500 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5501 ; OUTLINE-ATOMICS-NEXT: ret
5514 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_noret_monotonic:
5515 ; OUTLINE-ATOMICS: // %bb.0:
5516 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5517 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5518 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5519 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_relax
5520 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5521 ; OUTLINE-ATOMICS-NEXT: ret
5534 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i8_release:
5535 ; OUTLINE-ATOMICS: // %bb.0:
5536 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5537 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
5538 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
5539 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset1_rel
5540 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5541 ; OUTLINE-ATOMICS-NEXT: ret
5555 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i16_release:
5556 ; OUTLINE-ATOMICS: // %bb.0:
5557 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5558 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
5559 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
5560 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset2_rel
5561 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5562 ; OUTLINE-ATOMICS-NEXT: ret
5576 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_release:
5577 ; OUTLINE-ATOMICS: // %bb.0:
5578 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5579 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5580 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5581 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_rel
5582 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5583 ; OUTLINE-ATOMICS-NEXT: ret
5597 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_release:
5598 ; OUTLINE-ATOMICS: // %bb.0:
5599 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5600 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5601 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5602 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_rel
5603 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5604 ; OUTLINE-ATOMICS-NEXT: ret
5618 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_noret_release:
5619 ; OUTLINE-ATOMICS: // %bb.0:
5620 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5621 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5622 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5623 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_rel
5624 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5625 ; OUTLINE-ATOMICS-NEXT: ret
5638 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_noret_release:
5639 ; OUTLINE-ATOMICS: // %bb.0:
5640 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5641 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5642 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5643 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_rel
5644 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5645 ; OUTLINE-ATOMICS-NEXT: ret
5658 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i8_seq_cst:
5659 ; OUTLINE-ATOMICS: // %bb.0:
5660 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5661 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
5662 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
5663 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset1_acq_rel
5664 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5665 ; OUTLINE-ATOMICS-NEXT: ret
5679 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i16_seq_cst:
5680 ; OUTLINE-ATOMICS: // %bb.0:
5681 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5682 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
5683 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
5684 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset2_acq_rel
5685 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5686 ; OUTLINE-ATOMICS-NEXT: ret
5700 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_seq_cst:
5701 ; OUTLINE-ATOMICS: // %bb.0:
5702 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5703 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5704 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5705 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_acq_rel
5706 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5707 ; OUTLINE-ATOMICS-NEXT: ret
5721 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_seq_cst:
5722 ; OUTLINE-ATOMICS: // %bb.0:
5723 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5724 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5725 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5726 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_acq_rel
5727 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5728 ; OUTLINE-ATOMICS-NEXT: ret
5742 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i32_noret_seq_cst:
5743 ; OUTLINE-ATOMICS: // %bb.0:
5744 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5745 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5746 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5747 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset4_acq_rel
5748 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5749 ; OUTLINE-ATOMICS-NEXT: ret
5762 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_or_i64_noret_seq_cst:
5763 ; OUTLINE-ATOMICS: // %bb.0:
5764 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5765 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5766 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5767 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldset8_acq_rel
5768 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5769 ; OUTLINE-ATOMICS-NEXT: ret
5782 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i8_acq_rel:
5783 ; OUTLINE-ATOMICS: // %bb.0:
5784 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5785 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
5786 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
5787 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
5788 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel
5789 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5790 ; OUTLINE-ATOMICS-NEXT: ret
5805 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i16_acq_rel:
5806 ; OUTLINE-ATOMICS: // %bb.0:
5807 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5808 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
5809 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
5810 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
5811 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq_rel
5812 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5813 ; OUTLINE-ATOMICS-NEXT: ret
5828 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_acq_rel:
5829 ; OUTLINE-ATOMICS: // %bb.0:
5830 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5831 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
5832 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5833 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5834 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
5835 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5836 ; OUTLINE-ATOMICS-NEXT: ret
5851 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_acq_rel:
5852 ; OUTLINE-ATOMICS: // %bb.0:
5853 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5854 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
5855 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5856 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5857 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
5858 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5859 ; OUTLINE-ATOMICS-NEXT: ret
5874 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_noret_acq_rel:
5875 ; OUTLINE-ATOMICS: // %bb.0:
5876 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5877 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
5878 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5879 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5880 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
5881 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5882 ; OUTLINE-ATOMICS-NEXT: ret
5897 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_noret_acq_rel:
5898 ; OUTLINE-ATOMICS: // %bb.0:
5899 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5900 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
5901 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5902 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5903 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
5904 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5905 ; OUTLINE-ATOMICS-NEXT: ret
5920 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i8_acquire:
5921 ; OUTLINE-ATOMICS: // %bb.0:
5922 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5923 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
5924 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
5925 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
5926 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq
5927 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5928 ; OUTLINE-ATOMICS-NEXT: ret
5943 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i16_acquire:
5944 ; OUTLINE-ATOMICS: // %bb.0:
5945 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5946 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
5947 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
5948 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
5949 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq
5950 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5951 ; OUTLINE-ATOMICS-NEXT: ret
5966 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_acquire:
5967 ; OUTLINE-ATOMICS: // %bb.0:
5968 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5969 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
5970 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
5971 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
5972 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq
5973 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5974 ; OUTLINE-ATOMICS-NEXT: ret
5989 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_acquire:
5990 ; OUTLINE-ATOMICS: // %bb.0:
5991 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
5992 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
5993 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
5994 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
5995 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq
5996 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
5997 ; OUTLINE-ATOMICS-NEXT: ret
6012 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_noret_acquire:
6013 ; OUTLINE-ATOMICS: // %bb.0:
6014 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6015 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6016 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6017 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6018 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq
6019 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6020 ; OUTLINE-ATOMICS-NEXT: ret
6035 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_noret_acquire:
6036 ; OUTLINE-ATOMICS: // %bb.0:
6037 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6038 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
6039 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6040 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6041 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq
6042 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6043 ; OUTLINE-ATOMICS-NEXT: ret
6058 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i8_monotonic:
6059 ; OUTLINE-ATOMICS: // %bb.0:
6060 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6061 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6062 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
6063 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
6064 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_relax
6065 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6066 ; OUTLINE-ATOMICS-NEXT: ret
6081 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i16_monotonic:
6082 ; OUTLINE-ATOMICS: // %bb.0:
6083 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6084 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6085 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
6086 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
6087 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_relax
6088 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6089 ; OUTLINE-ATOMICS-NEXT: ret
6104 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_monotonic:
6105 ; OUTLINE-ATOMICS: // %bb.0:
6106 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6107 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6108 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6109 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6110 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_relax
6111 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6112 ; OUTLINE-ATOMICS-NEXT: ret
6127 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_monotonic:
6128 ; OUTLINE-ATOMICS: // %bb.0:
6129 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6130 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
6131 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6132 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6133 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_relax
6134 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6135 ; OUTLINE-ATOMICS-NEXT: ret
6150 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_noret_monotonic:
6151 ; OUTLINE-ATOMICS: // %bb.0:
6152 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6153 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6154 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6155 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6156 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_relax
6157 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6158 ; OUTLINE-ATOMICS-NEXT: ret
6173 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_noret_monotonic:
6174 ; OUTLINE-ATOMICS: // %bb.0:
6175 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6176 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
6177 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6178 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6179 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_relax
6180 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6181 ; OUTLINE-ATOMICS-NEXT: ret
6196 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i8_release:
6197 ; OUTLINE-ATOMICS: // %bb.0:
6198 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6199 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6200 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
6201 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
6202 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_rel
6203 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6204 ; OUTLINE-ATOMICS-NEXT: ret
6219 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i16_release:
6220 ; OUTLINE-ATOMICS: // %bb.0:
6221 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6222 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6223 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
6224 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
6225 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_rel
6226 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6227 ; OUTLINE-ATOMICS-NEXT: ret
6242 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_release:
6243 ; OUTLINE-ATOMICS: // %bb.0:
6244 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6245 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6246 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6247 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6248 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_rel
6249 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6250 ; OUTLINE-ATOMICS-NEXT: ret
6265 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_release:
6266 ; OUTLINE-ATOMICS: // %bb.0:
6267 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6268 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
6269 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6270 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6271 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_rel
6272 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6273 ; OUTLINE-ATOMICS-NEXT: ret
6288 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_noret_release:
6289 ; OUTLINE-ATOMICS: // %bb.0:
6290 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6291 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6292 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6293 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6294 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_rel
6295 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6296 ; OUTLINE-ATOMICS-NEXT: ret
6311 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_noret_release:
6312 ; OUTLINE-ATOMICS: // %bb.0:
6313 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6314 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
6315 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6316 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6317 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_rel
6318 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6319 ; OUTLINE-ATOMICS-NEXT: ret
6334 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i8_seq_cst:
6335 ; OUTLINE-ATOMICS: // %bb.0:
6336 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6337 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6338 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
6339 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
6340 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd1_acq_rel
6341 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6342 ; OUTLINE-ATOMICS-NEXT: ret
6357 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i16_seq_cst:
6358 ; OUTLINE-ATOMICS: // %bb.0:
6359 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6360 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6361 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
6362 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
6363 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd2_acq_rel
6364 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6365 ; OUTLINE-ATOMICS-NEXT: ret
6380 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_seq_cst:
6381 ; OUTLINE-ATOMICS: // %bb.0:
6382 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6383 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6384 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6385 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6386 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
6387 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6388 ; OUTLINE-ATOMICS-NEXT: ret
6403 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_seq_cst:
6404 ; OUTLINE-ATOMICS: // %bb.0:
6405 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6406 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
6407 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6408 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6409 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
6410 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6411 ; OUTLINE-ATOMICS-NEXT: ret
6426 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i32_noret_seq_cst:
6427 ; OUTLINE-ATOMICS: // %bb.0:
6428 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6429 ; OUTLINE-ATOMICS-NEXT: neg w0, w0
6430 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6431 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6432 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd4_acq_rel
6433 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6434 ; OUTLINE-ATOMICS-NEXT: ret
6449 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_sub_i64_noret_seq_cst:
6450 ; OUTLINE-ATOMICS: // %bb.0:
6451 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6452 ; OUTLINE-ATOMICS-NEXT: neg x0, x0
6453 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6454 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6455 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldadd8_acq_rel
6456 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6457 ; OUTLINE-ATOMICS-NEXT: ret
6472 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i8_acq_rel:
6473 ; OUTLINE-ATOMICS: // %bb.0:
6474 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6475 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
6476 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
6477 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp1_acq_rel
6478 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6479 ; OUTLINE-ATOMICS-NEXT: ret
6493 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i16_acq_rel:
6494 ; OUTLINE-ATOMICS: // %bb.0:
6495 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6496 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
6497 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
6498 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp2_acq_rel
6499 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6500 ; OUTLINE-ATOMICS-NEXT: ret
6514 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_acq_rel:
6515 ; OUTLINE-ATOMICS: // %bb.0:
6516 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6517 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6518 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6519 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_acq_rel
6520 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6521 ; OUTLINE-ATOMICS-NEXT: ret
6535 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_acq_rel:
6536 ; OUTLINE-ATOMICS: // %bb.0:
6537 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6538 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6539 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6540 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_acq_rel
6541 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6542 ; OUTLINE-ATOMICS-NEXT: ret
6556 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_noret_acq_rel:
6557 ; OUTLINE-ATOMICS: // %bb.0:
6558 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6559 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6560 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6561 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_acq_rel
6562 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6563 ; OUTLINE-ATOMICS-NEXT: ret
6577 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_noret_acq_rel:
6578 ; OUTLINE-ATOMICS: // %bb.0:
6579 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6580 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6581 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6582 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_acq_rel
6583 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6584 ; OUTLINE-ATOMICS-NEXT: ret
6598 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i8_acquire:
6599 ; OUTLINE-ATOMICS: // %bb.0:
6600 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6601 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
6602 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
6603 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp1_acq
6604 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6605 ; OUTLINE-ATOMICS-NEXT: ret
6619 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i16_acquire:
6620 ; OUTLINE-ATOMICS: // %bb.0:
6621 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6622 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
6623 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
6624 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp2_acq
6625 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6626 ; OUTLINE-ATOMICS-NEXT: ret
6640 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_acquire:
6641 ; OUTLINE-ATOMICS: // %bb.0:
6642 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6643 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6644 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6645 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_acq
6646 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6647 ; OUTLINE-ATOMICS-NEXT: ret
6661 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_acquire:
6662 ; OUTLINE-ATOMICS: // %bb.0:
6663 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6664 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6665 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6666 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_acq
6667 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6668 ; OUTLINE-ATOMICS-NEXT: ret
6682 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_noret_acquire:
6683 ; OUTLINE-ATOMICS: // %bb.0:
6684 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6685 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6686 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6687 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_acq
6688 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6689 ; OUTLINE-ATOMICS-NEXT: ret
6703 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_noret_acquire:
6704 ; OUTLINE-ATOMICS: // %bb.0:
6705 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6706 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6707 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6708 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_acq
6709 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6710 ; OUTLINE-ATOMICS-NEXT: ret
6724 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i8_monotonic:
6725 ; OUTLINE-ATOMICS: // %bb.0:
6726 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6727 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
6728 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
6729 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp1_relax
6730 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6731 ; OUTLINE-ATOMICS-NEXT: ret
6745 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i16_monotonic:
6746 ; OUTLINE-ATOMICS: // %bb.0:
6747 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6748 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
6749 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
6750 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp2_relax
6751 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6752 ; OUTLINE-ATOMICS-NEXT: ret
6766 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_monotonic:
6767 ; OUTLINE-ATOMICS: // %bb.0:
6768 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6769 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6770 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6771 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_relax
6772 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6773 ; OUTLINE-ATOMICS-NEXT: ret
6787 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_monotonic:
6788 ; OUTLINE-ATOMICS: // %bb.0:
6789 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6790 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6791 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6792 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_relax
6793 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6794 ; OUTLINE-ATOMICS-NEXT: ret
6808 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_noret_monotonic:
6809 ; OUTLINE-ATOMICS: // %bb.0:
6810 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6811 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6812 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6813 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_relax
6814 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6815 ; OUTLINE-ATOMICS-NEXT: ret
6829 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_noret_monotonic:
6830 ; OUTLINE-ATOMICS: // %bb.0:
6831 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6832 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6833 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6834 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_relax
6835 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6836 ; OUTLINE-ATOMICS-NEXT: ret
6850 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i8_release:
6851 ; OUTLINE-ATOMICS: // %bb.0:
6852 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6853 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
6854 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
6855 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp1_rel
6856 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6857 ; OUTLINE-ATOMICS-NEXT: ret
6871 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i16_release:
6872 ; OUTLINE-ATOMICS: // %bb.0:
6873 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6874 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
6875 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
6876 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp2_rel
6877 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6878 ; OUTLINE-ATOMICS-NEXT: ret
6892 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_release:
6893 ; OUTLINE-ATOMICS: // %bb.0:
6894 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6895 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6896 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6897 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_rel
6898 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6899 ; OUTLINE-ATOMICS-NEXT: ret
6913 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_release:
6914 ; OUTLINE-ATOMICS: // %bb.0:
6915 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6916 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6917 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6918 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_rel
6919 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6920 ; OUTLINE-ATOMICS-NEXT: ret
6934 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_noret_release:
6935 ; OUTLINE-ATOMICS: // %bb.0:
6936 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6937 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
6938 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
6939 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_rel
6940 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6941 ; OUTLINE-ATOMICS-NEXT: ret
6955 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_noret_release:
6956 ; OUTLINE-ATOMICS: // %bb.0:
6957 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6958 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
6959 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
6960 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_rel
6961 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6962 ; OUTLINE-ATOMICS-NEXT: ret
6976 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i8_seq_cst:
6977 ; OUTLINE-ATOMICS: // %bb.0:
6978 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
6979 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
6980 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
6981 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp1_acq_rel
6982 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
6983 ; OUTLINE-ATOMICS-NEXT: ret
6997 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i16_seq_cst:
6998 ; OUTLINE-ATOMICS: // %bb.0:
6999 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
7000 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
7001 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
7002 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp2_acq_rel
7003 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
7004 ; OUTLINE-ATOMICS-NEXT: ret
7018 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_seq_cst:
7019 ; OUTLINE-ATOMICS: // %bb.0:
7020 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
7021 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
7022 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
7023 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_acq_rel
7024 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
7025 ; OUTLINE-ATOMICS-NEXT: ret
7039 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_seq_cst:
7040 ; OUTLINE-ATOMICS: // %bb.0:
7041 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
7042 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
7043 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
7044 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_acq_rel
7045 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
7046 ; OUTLINE-ATOMICS-NEXT: ret
7060 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i32_noret_seq_cst:
7061 ; OUTLINE-ATOMICS: // %bb.0:
7062 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
7063 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
7064 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
7065 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp4_acq_rel
7066 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
7067 ; OUTLINE-ATOMICS-NEXT: ret
7081 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xchg_i64_noret_seq_cst:
7082 ; OUTLINE-ATOMICS: // %bb.0:
7083 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
7084 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
7085 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
7086 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_swp8_acq_rel
7087 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
7088 ; OUTLINE-ATOMICS-NEXT: ret
7102 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i8_acq_rel:
7103 ; OUTLINE-ATOMICS: // %bb.0:
7104 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
7105 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
7106 ; OUTLINE-ATOMICS-NEXT: .LBB308_1: // %atomicrmw.start
7107 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7108 ; OUTLINE-ATOMICS-NEXT: ldaxrb w8, [x9]
7109 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
7110 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7111 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
7112 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB308_1
7113 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7114 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7115 ; OUTLINE-ATOMICS-NEXT: ret
7129 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i16_acq_rel:
7130 ; OUTLINE-ATOMICS: // %bb.0:
7131 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
7132 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
7133 ; OUTLINE-ATOMICS-NEXT: .LBB309_1: // %atomicrmw.start
7134 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7135 ; OUTLINE-ATOMICS-NEXT: ldaxrh w8, [x9]
7136 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
7137 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7138 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
7139 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB309_1
7140 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7141 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7142 ; OUTLINE-ATOMICS-NEXT: ret
7156 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_acq_rel:
7157 ; OUTLINE-ATOMICS: // %bb.0:
7158 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
7159 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
7160 ; OUTLINE-ATOMICS-NEXT: .LBB310_1: // %atomicrmw.start
7161 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7162 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
7163 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
7164 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7165 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
7166 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB310_1
7167 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7168 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7169 ; OUTLINE-ATOMICS-NEXT: ret
7183 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_acq_rel:
7184 ; OUTLINE-ATOMICS: // %bb.0:
7185 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
7186 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
7187 ; OUTLINE-ATOMICS-NEXT: .LBB311_1: // %atomicrmw.start
7188 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7189 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
7190 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
7191 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, hi
7192 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
7193 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB311_1
7194 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7195 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
7196 ; OUTLINE-ATOMICS-NEXT: ret
7210 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_noret_acq_rel:
7211 ; OUTLINE-ATOMICS: // %bb.0:
7212 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
7213 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
7214 ; OUTLINE-ATOMICS-NEXT: .LBB312_1: // %atomicrmw.start
7215 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7216 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
7217 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
7218 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, hi
7219 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
7220 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB312_1
7221 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7222 ; OUTLINE-ATOMICS-NEXT: ret
7235 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_noret_acq_rel:
7236 ; OUTLINE-ATOMICS: // %bb.0:
7237 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
7238 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
7239 ; OUTLINE-ATOMICS-NEXT: .LBB313_1: // %atomicrmw.start
7240 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7241 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
7242 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
7243 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, hi
7244 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
7245 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB313_1
7246 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7247 ; OUTLINE-ATOMICS-NEXT: ret
7260 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i8_acquire:
7261 ; OUTLINE-ATOMICS: // %bb.0:
7262 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
7263 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
7264 ; OUTLINE-ATOMICS-NEXT: .LBB314_1: // %atomicrmw.start
7265 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7266 ; OUTLINE-ATOMICS-NEXT: ldaxrb w8, [x9]
7267 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
7268 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7269 ; OUTLINE-ATOMICS-NEXT: stxrb w11, w10, [x9]
7270 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB314_1
7271 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7272 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7273 ; OUTLINE-ATOMICS-NEXT: ret
7287 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i16_acquire:
7288 ; OUTLINE-ATOMICS: // %bb.0:
7289 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
7290 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
7291 ; OUTLINE-ATOMICS-NEXT: .LBB315_1: // %atomicrmw.start
7292 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7293 ; OUTLINE-ATOMICS-NEXT: ldaxrh w8, [x9]
7294 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
7295 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7296 ; OUTLINE-ATOMICS-NEXT: stxrh w11, w10, [x9]
7297 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB315_1
7298 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7299 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7300 ; OUTLINE-ATOMICS-NEXT: ret
7314 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_acquire:
7315 ; OUTLINE-ATOMICS: // %bb.0:
7316 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
7317 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
7318 ; OUTLINE-ATOMICS-NEXT: .LBB316_1: // %atomicrmw.start
7319 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7320 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
7321 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
7322 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7323 ; OUTLINE-ATOMICS-NEXT: stxr w11, w10, [x9]
7324 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB316_1
7325 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7326 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7327 ; OUTLINE-ATOMICS-NEXT: ret
7341 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_acquire:
7342 ; OUTLINE-ATOMICS: // %bb.0:
7343 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
7344 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
7345 ; OUTLINE-ATOMICS-NEXT: .LBB317_1: // %atomicrmw.start
7346 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7347 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
7348 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
7349 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, hi
7350 ; OUTLINE-ATOMICS-NEXT: stxr w11, x10, [x9]
7351 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB317_1
7352 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7353 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
7354 ; OUTLINE-ATOMICS-NEXT: ret
7368 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_noret_acquire:
7369 ; OUTLINE-ATOMICS: // %bb.0:
7370 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
7371 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
7372 ; OUTLINE-ATOMICS-NEXT: .LBB318_1: // %atomicrmw.start
7373 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7374 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
7375 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
7376 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, hi
7377 ; OUTLINE-ATOMICS-NEXT: stxr w10, w9, [x8]
7378 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB318_1
7379 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7380 ; OUTLINE-ATOMICS-NEXT: ret
7393 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_noret_acquire:
7394 ; OUTLINE-ATOMICS: // %bb.0:
7395 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
7396 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
7397 ; OUTLINE-ATOMICS-NEXT: .LBB319_1: // %atomicrmw.start
7398 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7399 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
7400 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
7401 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, hi
7402 ; OUTLINE-ATOMICS-NEXT: stxr w10, x9, [x8]
7403 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB319_1
7404 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7405 ; OUTLINE-ATOMICS-NEXT: ret
7418 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i8_monotonic:
7419 ; OUTLINE-ATOMICS: // %bb.0:
7420 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
7421 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
7422 ; OUTLINE-ATOMICS-NEXT: .LBB320_1: // %atomicrmw.start
7423 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7424 ; OUTLINE-ATOMICS-NEXT: ldxrb w8, [x9]
7425 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
7426 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7427 ; OUTLINE-ATOMICS-NEXT: stxrb w11, w10, [x9]
7428 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB320_1
7429 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7430 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7431 ; OUTLINE-ATOMICS-NEXT: ret
7445 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i16_monotonic:
7446 ; OUTLINE-ATOMICS: // %bb.0:
7447 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
7448 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
7449 ; OUTLINE-ATOMICS-NEXT: .LBB321_1: // %atomicrmw.start
7450 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7451 ; OUTLINE-ATOMICS-NEXT: ldxrh w8, [x9]
7452 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
7453 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7454 ; OUTLINE-ATOMICS-NEXT: stxrh w11, w10, [x9]
7455 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB321_1
7456 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7457 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7458 ; OUTLINE-ATOMICS-NEXT: ret
7472 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_monotonic:
7473 ; OUTLINE-ATOMICS: // %bb.0:
7474 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
7475 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
7476 ; OUTLINE-ATOMICS-NEXT: .LBB322_1: // %atomicrmw.start
7477 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7478 ; OUTLINE-ATOMICS-NEXT: ldxr w8, [x9]
7479 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
7480 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7481 ; OUTLINE-ATOMICS-NEXT: stxr w11, w10, [x9]
7482 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB322_1
7483 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7484 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7485 ; OUTLINE-ATOMICS-NEXT: ret
7499 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_monotonic:
7500 ; OUTLINE-ATOMICS: // %bb.0:
7501 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
7502 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
7503 ; OUTLINE-ATOMICS-NEXT: .LBB323_1: // %atomicrmw.start
7504 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7505 ; OUTLINE-ATOMICS-NEXT: ldxr x8, [x9]
7506 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
7507 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, hi
7508 ; OUTLINE-ATOMICS-NEXT: stxr w11, x10, [x9]
7509 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB323_1
7510 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7511 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
7512 ; OUTLINE-ATOMICS-NEXT: ret
7526 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_noret_monotonic:
7527 ; OUTLINE-ATOMICS: // %bb.0:
7528 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
7529 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
7530 ; OUTLINE-ATOMICS-NEXT: .LBB324_1: // %atomicrmw.start
7531 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7532 ; OUTLINE-ATOMICS-NEXT: ldxr w9, [x8]
7533 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
7534 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, hi
7535 ; OUTLINE-ATOMICS-NEXT: stxr w10, w9, [x8]
7536 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB324_1
7537 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7538 ; OUTLINE-ATOMICS-NEXT: ret
7551 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_noret_monotonic:
7552 ; OUTLINE-ATOMICS: // %bb.0:
7553 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
7554 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
7555 ; OUTLINE-ATOMICS-NEXT: .LBB325_1: // %atomicrmw.start
7556 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7557 ; OUTLINE-ATOMICS-NEXT: ldxr x9, [x8]
7558 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
7559 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, hi
7560 ; OUTLINE-ATOMICS-NEXT: stxr w10, x9, [x8]
7561 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB325_1
7562 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7563 ; OUTLINE-ATOMICS-NEXT: ret
7576 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i8_release:
7577 ; OUTLINE-ATOMICS: // %bb.0:
7578 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
7579 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
7580 ; OUTLINE-ATOMICS-NEXT: .LBB326_1: // %atomicrmw.start
7581 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7582 ; OUTLINE-ATOMICS-NEXT: ldxrb w8, [x9]
7583 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
7584 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7585 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
7586 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB326_1
7587 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7588 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7589 ; OUTLINE-ATOMICS-NEXT: ret
7603 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i16_release:
7604 ; OUTLINE-ATOMICS: // %bb.0:
7605 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
7606 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
7607 ; OUTLINE-ATOMICS-NEXT: .LBB327_1: // %atomicrmw.start
7608 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7609 ; OUTLINE-ATOMICS-NEXT: ldxrh w8, [x9]
7610 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
7611 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7612 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
7613 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB327_1
7614 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7615 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7616 ; OUTLINE-ATOMICS-NEXT: ret
7630 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_release:
7631 ; OUTLINE-ATOMICS: // %bb.0:
7632 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
7633 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
7634 ; OUTLINE-ATOMICS-NEXT: .LBB328_1: // %atomicrmw.start
7635 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7636 ; OUTLINE-ATOMICS-NEXT: ldxr w8, [x9]
7637 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
7638 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7639 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
7640 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB328_1
7641 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7642 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7643 ; OUTLINE-ATOMICS-NEXT: ret
7657 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_release:
7658 ; OUTLINE-ATOMICS: // %bb.0:
7659 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
7660 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
7661 ; OUTLINE-ATOMICS-NEXT: .LBB329_1: // %atomicrmw.start
7662 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7663 ; OUTLINE-ATOMICS-NEXT: ldxr x8, [x9]
7664 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
7665 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, hi
7666 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
7667 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB329_1
7668 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7669 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
7670 ; OUTLINE-ATOMICS-NEXT: ret
7684 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_noret_release:
7685 ; OUTLINE-ATOMICS: // %bb.0:
7686 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
7687 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
7688 ; OUTLINE-ATOMICS-NEXT: .LBB330_1: // %atomicrmw.start
7689 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7690 ; OUTLINE-ATOMICS-NEXT: ldxr w9, [x8]
7691 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
7692 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, hi
7693 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
7694 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB330_1
7695 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7696 ; OUTLINE-ATOMICS-NEXT: ret
7709 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_noret_release:
7710 ; OUTLINE-ATOMICS: // %bb.0:
7711 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
7712 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
7713 ; OUTLINE-ATOMICS-NEXT: .LBB331_1: // %atomicrmw.start
7714 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7715 ; OUTLINE-ATOMICS-NEXT: ldxr x9, [x8]
7716 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
7717 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, hi
7718 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
7719 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB331_1
7720 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7721 ; OUTLINE-ATOMICS-NEXT: ret
7734 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i8_seq_cst:
7735 ; OUTLINE-ATOMICS: // %bb.0:
7736 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
7737 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
7738 ; OUTLINE-ATOMICS-NEXT: .LBB332_1: // %atomicrmw.start
7739 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7740 ; OUTLINE-ATOMICS-NEXT: ldaxrb w8, [x9]
7741 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
7742 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7743 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
7744 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB332_1
7745 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7746 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7747 ; OUTLINE-ATOMICS-NEXT: ret
7761 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i16_seq_cst:
7762 ; OUTLINE-ATOMICS: // %bb.0:
7763 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
7764 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
7765 ; OUTLINE-ATOMICS-NEXT: .LBB333_1: // %atomicrmw.start
7766 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7767 ; OUTLINE-ATOMICS-NEXT: ldaxrh w8, [x9]
7768 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
7769 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7770 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
7771 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB333_1
7772 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7773 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7774 ; OUTLINE-ATOMICS-NEXT: ret
7788 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_seq_cst:
7789 ; OUTLINE-ATOMICS: // %bb.0:
7790 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
7791 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
7792 ; OUTLINE-ATOMICS-NEXT: .LBB334_1: // %atomicrmw.start
7793 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7794 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
7795 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
7796 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, hi
7797 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
7798 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB334_1
7799 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7800 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7801 ; OUTLINE-ATOMICS-NEXT: ret
7815 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_seq_cst:
7816 ; OUTLINE-ATOMICS: // %bb.0:
7817 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
7818 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
7819 ; OUTLINE-ATOMICS-NEXT: .LBB335_1: // %atomicrmw.start
7820 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7821 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
7822 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
7823 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, hi
7824 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
7825 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB335_1
7826 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7827 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
7828 ; OUTLINE-ATOMICS-NEXT: ret
7842 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i32_noret_seq_cst:
7843 ; OUTLINE-ATOMICS: // %bb.0:
7844 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
7845 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
7846 ; OUTLINE-ATOMICS-NEXT: .LBB336_1: // %atomicrmw.start
7847 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7848 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
7849 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
7850 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, hi
7851 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
7852 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB336_1
7853 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7854 ; OUTLINE-ATOMICS-NEXT: ret
7867 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umax_i64_noret_seq_cst:
7868 ; OUTLINE-ATOMICS: // %bb.0:
7869 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
7870 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
7871 ; OUTLINE-ATOMICS-NEXT: .LBB337_1: // %atomicrmw.start
7872 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7873 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
7874 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
7875 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, hi
7876 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
7877 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB337_1
7878 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7879 ; OUTLINE-ATOMICS-NEXT: ret
7892 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i8_acq_rel:
7893 ; OUTLINE-ATOMICS: // %bb.0:
7894 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
7895 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
7896 ; OUTLINE-ATOMICS-NEXT: .LBB338_1: // %atomicrmw.start
7897 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7898 ; OUTLINE-ATOMICS-NEXT: ldaxrb w8, [x9]
7899 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
7900 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
7901 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
7902 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB338_1
7903 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7904 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7905 ; OUTLINE-ATOMICS-NEXT: ret
7919 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i16_acq_rel:
7920 ; OUTLINE-ATOMICS: // %bb.0:
7921 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
7922 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
7923 ; OUTLINE-ATOMICS-NEXT: .LBB339_1: // %atomicrmw.start
7924 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7925 ; OUTLINE-ATOMICS-NEXT: ldaxrh w8, [x9]
7926 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
7927 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
7928 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
7929 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB339_1
7930 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7931 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7932 ; OUTLINE-ATOMICS-NEXT: ret
7946 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_acq_rel:
7947 ; OUTLINE-ATOMICS: // %bb.0:
7948 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
7949 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
7950 ; OUTLINE-ATOMICS-NEXT: .LBB340_1: // %atomicrmw.start
7951 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7952 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
7953 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
7954 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
7955 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
7956 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB340_1
7957 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7958 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
7959 ; OUTLINE-ATOMICS-NEXT: ret
7973 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_acq_rel:
7974 ; OUTLINE-ATOMICS: // %bb.0:
7975 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
7976 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
7977 ; OUTLINE-ATOMICS-NEXT: .LBB341_1: // %atomicrmw.start
7978 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
7979 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
7980 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
7981 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, ls
7982 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
7983 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB341_1
7984 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
7985 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
7986 ; OUTLINE-ATOMICS-NEXT: ret
8000 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_noret_acq_rel:
8001 ; OUTLINE-ATOMICS: // %bb.0:
8002 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
8003 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
8004 ; OUTLINE-ATOMICS-NEXT: .LBB342_1: // %atomicrmw.start
8005 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8006 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
8007 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
8008 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, ls
8009 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
8010 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB342_1
8011 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8012 ; OUTLINE-ATOMICS-NEXT: ret
8025 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_noret_acq_rel:
8026 ; OUTLINE-ATOMICS: // %bb.0:
8027 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
8028 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
8029 ; OUTLINE-ATOMICS-NEXT: .LBB343_1: // %atomicrmw.start
8030 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8031 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
8032 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
8033 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, ls
8034 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
8035 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB343_1
8036 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8037 ; OUTLINE-ATOMICS-NEXT: ret
8050 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i8_acquire:
8051 ; OUTLINE-ATOMICS: // %bb.0:
8052 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
8053 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
8054 ; OUTLINE-ATOMICS-NEXT: .LBB344_1: // %atomicrmw.start
8055 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8056 ; OUTLINE-ATOMICS-NEXT: ldaxrb w8, [x9]
8057 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
8058 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8059 ; OUTLINE-ATOMICS-NEXT: stxrb w11, w10, [x9]
8060 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB344_1
8061 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8062 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8063 ; OUTLINE-ATOMICS-NEXT: ret
8077 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i16_acquire:
8078 ; OUTLINE-ATOMICS: // %bb.0:
8079 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
8080 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
8081 ; OUTLINE-ATOMICS-NEXT: .LBB345_1: // %atomicrmw.start
8082 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8083 ; OUTLINE-ATOMICS-NEXT: ldaxrh w8, [x9]
8084 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
8085 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8086 ; OUTLINE-ATOMICS-NEXT: stxrh w11, w10, [x9]
8087 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB345_1
8088 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8089 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8090 ; OUTLINE-ATOMICS-NEXT: ret
8104 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_acquire:
8105 ; OUTLINE-ATOMICS: // %bb.0:
8106 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
8107 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
8108 ; OUTLINE-ATOMICS-NEXT: .LBB346_1: // %atomicrmw.start
8109 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8110 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
8111 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
8112 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8113 ; OUTLINE-ATOMICS-NEXT: stxr w11, w10, [x9]
8114 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB346_1
8115 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8116 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8117 ; OUTLINE-ATOMICS-NEXT: ret
8131 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_acquire:
8132 ; OUTLINE-ATOMICS: // %bb.0:
8133 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
8134 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
8135 ; OUTLINE-ATOMICS-NEXT: .LBB347_1: // %atomicrmw.start
8136 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8137 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
8138 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
8139 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, ls
8140 ; OUTLINE-ATOMICS-NEXT: stxr w11, x10, [x9]
8141 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB347_1
8142 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8143 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
8144 ; OUTLINE-ATOMICS-NEXT: ret
8158 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_noret_acquire:
8159 ; OUTLINE-ATOMICS: // %bb.0:
8160 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
8161 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
8162 ; OUTLINE-ATOMICS-NEXT: .LBB348_1: // %atomicrmw.start
8163 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8164 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
8165 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
8166 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, ls
8167 ; OUTLINE-ATOMICS-NEXT: stxr w10, w9, [x8]
8168 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB348_1
8169 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8170 ; OUTLINE-ATOMICS-NEXT: ret
8183 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_noret_acquire:
8184 ; OUTLINE-ATOMICS: // %bb.0:
8185 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
8186 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
8187 ; OUTLINE-ATOMICS-NEXT: .LBB349_1: // %atomicrmw.start
8188 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8189 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
8190 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
8191 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, ls
8192 ; OUTLINE-ATOMICS-NEXT: stxr w10, x9, [x8]
8193 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB349_1
8194 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8195 ; OUTLINE-ATOMICS-NEXT: ret
8208 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i8_monotonic:
8209 ; OUTLINE-ATOMICS: // %bb.0:
8210 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
8211 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
8212 ; OUTLINE-ATOMICS-NEXT: .LBB350_1: // %atomicrmw.start
8213 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8214 ; OUTLINE-ATOMICS-NEXT: ldxrb w8, [x9]
8215 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
8216 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8217 ; OUTLINE-ATOMICS-NEXT: stxrb w11, w10, [x9]
8218 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB350_1
8219 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8220 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8221 ; OUTLINE-ATOMICS-NEXT: ret
8235 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i16_monotonic:
8236 ; OUTLINE-ATOMICS: // %bb.0:
8237 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
8238 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
8239 ; OUTLINE-ATOMICS-NEXT: .LBB351_1: // %atomicrmw.start
8240 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8241 ; OUTLINE-ATOMICS-NEXT: ldxrh w8, [x9]
8242 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
8243 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8244 ; OUTLINE-ATOMICS-NEXT: stxrh w11, w10, [x9]
8245 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB351_1
8246 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8247 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8248 ; OUTLINE-ATOMICS-NEXT: ret
8262 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_monotonic:
8263 ; OUTLINE-ATOMICS: // %bb.0:
8264 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
8265 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
8266 ; OUTLINE-ATOMICS-NEXT: .LBB352_1: // %atomicrmw.start
8267 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8268 ; OUTLINE-ATOMICS-NEXT: ldxr w8, [x9]
8269 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
8270 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8271 ; OUTLINE-ATOMICS-NEXT: stxr w11, w10, [x9]
8272 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB352_1
8273 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8274 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8275 ; OUTLINE-ATOMICS-NEXT: ret
8289 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_monotonic:
8290 ; OUTLINE-ATOMICS: // %bb.0:
8291 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
8292 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
8293 ; OUTLINE-ATOMICS-NEXT: .LBB353_1: // %atomicrmw.start
8294 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8295 ; OUTLINE-ATOMICS-NEXT: ldxr x8, [x9]
8296 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
8297 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, ls
8298 ; OUTLINE-ATOMICS-NEXT: stxr w11, x10, [x9]
8299 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB353_1
8300 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8301 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
8302 ; OUTLINE-ATOMICS-NEXT: ret
8316 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_noret_monotonic:
8317 ; OUTLINE-ATOMICS: // %bb.0:
8318 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
8319 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
8320 ; OUTLINE-ATOMICS-NEXT: .LBB354_1: // %atomicrmw.start
8321 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8322 ; OUTLINE-ATOMICS-NEXT: ldxr w9, [x8]
8323 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
8324 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, ls
8325 ; OUTLINE-ATOMICS-NEXT: stxr w10, w9, [x8]
8326 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB354_1
8327 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8328 ; OUTLINE-ATOMICS-NEXT: ret
8341 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_noret_monotonic:
8342 ; OUTLINE-ATOMICS: // %bb.0:
8343 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
8344 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
8345 ; OUTLINE-ATOMICS-NEXT: .LBB355_1: // %atomicrmw.start
8346 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8347 ; OUTLINE-ATOMICS-NEXT: ldxr x9, [x8]
8348 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
8349 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, ls
8350 ; OUTLINE-ATOMICS-NEXT: stxr w10, x9, [x8]
8351 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB355_1
8352 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8353 ; OUTLINE-ATOMICS-NEXT: ret
8366 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i8_release:
8367 ; OUTLINE-ATOMICS: // %bb.0:
8368 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
8369 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
8370 ; OUTLINE-ATOMICS-NEXT: .LBB356_1: // %atomicrmw.start
8371 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8372 ; OUTLINE-ATOMICS-NEXT: ldxrb w8, [x9]
8373 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
8374 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8375 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
8376 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB356_1
8377 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8378 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8379 ; OUTLINE-ATOMICS-NEXT: ret
8393 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i16_release:
8394 ; OUTLINE-ATOMICS: // %bb.0:
8395 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
8396 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
8397 ; OUTLINE-ATOMICS-NEXT: .LBB357_1: // %atomicrmw.start
8398 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8399 ; OUTLINE-ATOMICS-NEXT: ldxrh w8, [x9]
8400 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
8401 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8402 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
8403 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB357_1
8404 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8405 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8406 ; OUTLINE-ATOMICS-NEXT: ret
8420 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_release:
8421 ; OUTLINE-ATOMICS: // %bb.0:
8422 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
8423 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
8424 ; OUTLINE-ATOMICS-NEXT: .LBB358_1: // %atomicrmw.start
8425 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8426 ; OUTLINE-ATOMICS-NEXT: ldxr w8, [x9]
8427 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
8428 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8429 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
8430 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB358_1
8431 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8432 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8433 ; OUTLINE-ATOMICS-NEXT: ret
8447 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_release:
8448 ; OUTLINE-ATOMICS: // %bb.0:
8449 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
8450 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
8451 ; OUTLINE-ATOMICS-NEXT: .LBB359_1: // %atomicrmw.start
8452 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8453 ; OUTLINE-ATOMICS-NEXT: ldxr x8, [x9]
8454 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
8455 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, ls
8456 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
8457 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB359_1
8458 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8459 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
8460 ; OUTLINE-ATOMICS-NEXT: ret
8474 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_noret_release:
8475 ; OUTLINE-ATOMICS: // %bb.0:
8476 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
8477 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
8478 ; OUTLINE-ATOMICS-NEXT: .LBB360_1: // %atomicrmw.start
8479 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8480 ; OUTLINE-ATOMICS-NEXT: ldxr w9, [x8]
8481 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
8482 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, ls
8483 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
8484 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB360_1
8485 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8486 ; OUTLINE-ATOMICS-NEXT: ret
8499 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_noret_release:
8500 ; OUTLINE-ATOMICS: // %bb.0:
8501 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
8502 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
8503 ; OUTLINE-ATOMICS-NEXT: .LBB361_1: // %atomicrmw.start
8504 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8505 ; OUTLINE-ATOMICS-NEXT: ldxr x9, [x8]
8506 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
8507 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, ls
8508 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
8509 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB361_1
8510 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8511 ; OUTLINE-ATOMICS-NEXT: ret
8524 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i8_seq_cst:
8525 ; OUTLINE-ATOMICS: // %bb.0:
8526 ; OUTLINE-ATOMICS-NEXT: adrp x9, var8
8527 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var8
8528 ; OUTLINE-ATOMICS-NEXT: .LBB362_1: // %atomicrmw.start
8529 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8530 ; OUTLINE-ATOMICS-NEXT: ldaxrb w8, [x9]
8531 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxtb
8532 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8533 ; OUTLINE-ATOMICS-NEXT: stlxrb w11, w10, [x9]
8534 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB362_1
8535 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8536 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8537 ; OUTLINE-ATOMICS-NEXT: ret
8551 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i16_seq_cst:
8552 ; OUTLINE-ATOMICS: // %bb.0:
8553 ; OUTLINE-ATOMICS-NEXT: adrp x9, var16
8554 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var16
8555 ; OUTLINE-ATOMICS-NEXT: .LBB363_1: // %atomicrmw.start
8556 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8557 ; OUTLINE-ATOMICS-NEXT: ldaxrh w8, [x9]
8558 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0, uxth
8559 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8560 ; OUTLINE-ATOMICS-NEXT: stlxrh w11, w10, [x9]
8561 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB363_1
8562 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8563 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8564 ; OUTLINE-ATOMICS-NEXT: ret
8578 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_seq_cst:
8579 ; OUTLINE-ATOMICS: // %bb.0:
8580 ; OUTLINE-ATOMICS-NEXT: adrp x9, var32
8581 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var32
8582 ; OUTLINE-ATOMICS-NEXT: .LBB364_1: // %atomicrmw.start
8583 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8584 ; OUTLINE-ATOMICS-NEXT: ldaxr w8, [x9]
8585 ; OUTLINE-ATOMICS-NEXT: cmp w8, w0
8586 ; OUTLINE-ATOMICS-NEXT: csel w10, w8, w0, ls
8587 ; OUTLINE-ATOMICS-NEXT: stlxr w11, w10, [x9]
8588 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB364_1
8589 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8590 ; OUTLINE-ATOMICS-NEXT: mov w0, w8
8591 ; OUTLINE-ATOMICS-NEXT: ret
8605 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_seq_cst:
8606 ; OUTLINE-ATOMICS: // %bb.0:
8607 ; OUTLINE-ATOMICS-NEXT: adrp x9, var64
8608 ; OUTLINE-ATOMICS-NEXT: add x9, x9, :lo12:var64
8609 ; OUTLINE-ATOMICS-NEXT: .LBB365_1: // %atomicrmw.start
8610 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8611 ; OUTLINE-ATOMICS-NEXT: ldaxr x8, [x9]
8612 ; OUTLINE-ATOMICS-NEXT: cmp x8, x0
8613 ; OUTLINE-ATOMICS-NEXT: csel x10, x8, x0, ls
8614 ; OUTLINE-ATOMICS-NEXT: stlxr w11, x10, [x9]
8615 ; OUTLINE-ATOMICS-NEXT: cbnz w11, .LBB365_1
8616 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8617 ; OUTLINE-ATOMICS-NEXT: mov x0, x8
8618 ; OUTLINE-ATOMICS-NEXT: ret
8632 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i32_noret_seq_cst:
8633 ; OUTLINE-ATOMICS: // %bb.0:
8634 ; OUTLINE-ATOMICS-NEXT: adrp x8, var32
8635 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var32
8636 ; OUTLINE-ATOMICS-NEXT: .LBB366_1: // %atomicrmw.start
8637 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8638 ; OUTLINE-ATOMICS-NEXT: ldaxr w9, [x8]
8639 ; OUTLINE-ATOMICS-NEXT: cmp w9, w0
8640 ; OUTLINE-ATOMICS-NEXT: csel w9, w9, w0, ls
8641 ; OUTLINE-ATOMICS-NEXT: stlxr w10, w9, [x8]
8642 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB366_1
8643 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8644 ; OUTLINE-ATOMICS-NEXT: ret
8657 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_umin_i64_noret_seq_cst:
8658 ; OUTLINE-ATOMICS: // %bb.0:
8659 ; OUTLINE-ATOMICS-NEXT: adrp x8, var64
8660 ; OUTLINE-ATOMICS-NEXT: add x8, x8, :lo12:var64
8661 ; OUTLINE-ATOMICS-NEXT: .LBB367_1: // %atomicrmw.start
8662 ; OUTLINE-ATOMICS-NEXT: // =>This Inner Loop Header: Depth=1
8663 ; OUTLINE-ATOMICS-NEXT: ldaxr x9, [x8]
8664 ; OUTLINE-ATOMICS-NEXT: cmp x9, x0
8665 ; OUTLINE-ATOMICS-NEXT: csel x9, x9, x0, ls
8666 ; OUTLINE-ATOMICS-NEXT: stlxr w10, x9, [x8]
8667 ; OUTLINE-ATOMICS-NEXT: cbnz w10, .LBB367_1
8668 ; OUTLINE-ATOMICS-NEXT: // %bb.2: // %atomicrmw.end
8669 ; OUTLINE-ATOMICS-NEXT: ret
8682 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i8_acq_rel:
8683 ; OUTLINE-ATOMICS: // %bb.0:
8684 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8685 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
8686 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
8687 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor1_acq_rel
8688 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8689 ; OUTLINE-ATOMICS-NEXT: ret
8703 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i16_acq_rel:
8704 ; OUTLINE-ATOMICS: // %bb.0:
8705 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8706 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
8707 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
8708 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor2_acq_rel
8709 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8710 ; OUTLINE-ATOMICS-NEXT: ret
8724 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_acq_rel:
8725 ; OUTLINE-ATOMICS: // %bb.0:
8726 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8727 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
8728 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
8729 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_acq_rel
8730 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8731 ; OUTLINE-ATOMICS-NEXT: ret
8745 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_acq_rel:
8746 ; OUTLINE-ATOMICS: // %bb.0:
8747 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8748 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
8749 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
8750 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_acq_rel
8751 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8752 ; OUTLINE-ATOMICS-NEXT: ret
8766 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_noret_acq_rel:
8767 ; OUTLINE-ATOMICS: // %bb.0:
8768 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8769 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
8770 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
8771 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_acq_rel
8772 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8773 ; OUTLINE-ATOMICS-NEXT: ret
8786 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_noret_acq_rel:
8787 ; OUTLINE-ATOMICS: // %bb.0:
8788 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8789 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
8790 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
8791 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_acq_rel
8792 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8793 ; OUTLINE-ATOMICS-NEXT: ret
8806 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i8_acquire:
8807 ; OUTLINE-ATOMICS: // %bb.0:
8808 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8809 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
8810 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
8811 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor1_acq
8812 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8813 ; OUTLINE-ATOMICS-NEXT: ret
8827 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i16_acquire:
8828 ; OUTLINE-ATOMICS: // %bb.0:
8829 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8830 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
8831 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
8832 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor2_acq
8833 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8834 ; OUTLINE-ATOMICS-NEXT: ret
8848 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_acquire:
8849 ; OUTLINE-ATOMICS: // %bb.0:
8850 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8851 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
8852 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
8853 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_acq
8854 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8855 ; OUTLINE-ATOMICS-NEXT: ret
8869 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_acquire:
8870 ; OUTLINE-ATOMICS: // %bb.0:
8871 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8872 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
8873 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
8874 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_acq
8875 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8876 ; OUTLINE-ATOMICS-NEXT: ret
8890 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_noret_acquire:
8891 ; OUTLINE-ATOMICS: // %bb.0:
8892 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8893 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
8894 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
8895 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_acq
8896 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8897 ; OUTLINE-ATOMICS-NEXT: ret
8910 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_noret_acquire:
8911 ; OUTLINE-ATOMICS: // %bb.0:
8912 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8913 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
8914 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
8915 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_acq
8916 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8917 ; OUTLINE-ATOMICS-NEXT: ret
8930 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i8_monotonic:
8931 ; OUTLINE-ATOMICS: // %bb.0:
8932 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8933 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
8934 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
8935 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor1_relax
8936 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8937 ; OUTLINE-ATOMICS-NEXT: ret
8951 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i16_monotonic:
8952 ; OUTLINE-ATOMICS: // %bb.0:
8953 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8954 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
8955 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
8956 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor2_relax
8957 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8958 ; OUTLINE-ATOMICS-NEXT: ret
8972 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_monotonic:
8973 ; OUTLINE-ATOMICS: // %bb.0:
8974 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8975 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
8976 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
8977 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_relax
8978 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
8979 ; OUTLINE-ATOMICS-NEXT: ret
8993 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_monotonic:
8994 ; OUTLINE-ATOMICS: // %bb.0:
8995 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
8996 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
8997 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
8998 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_relax
8999 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9000 ; OUTLINE-ATOMICS-NEXT: ret
9014 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_noret_monotonic:
9015 ; OUTLINE-ATOMICS: // %bb.0:
9016 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9017 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
9018 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
9019 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_relax
9020 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9021 ; OUTLINE-ATOMICS-NEXT: ret
9034 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_noret_monotonic:
9035 ; OUTLINE-ATOMICS: // %bb.0:
9036 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9037 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
9038 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
9039 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_relax
9040 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9041 ; OUTLINE-ATOMICS-NEXT: ret
9054 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i8_release:
9055 ; OUTLINE-ATOMICS: // %bb.0:
9056 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9057 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
9058 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
9059 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor1_rel
9060 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9061 ; OUTLINE-ATOMICS-NEXT: ret
9075 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i16_release:
9076 ; OUTLINE-ATOMICS: // %bb.0:
9077 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9078 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
9079 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
9080 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor2_rel
9081 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9082 ; OUTLINE-ATOMICS-NEXT: ret
9096 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_release:
9097 ; OUTLINE-ATOMICS: // %bb.0:
9098 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9099 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
9100 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
9101 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_rel
9102 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9103 ; OUTLINE-ATOMICS-NEXT: ret
9117 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_release:
9118 ; OUTLINE-ATOMICS: // %bb.0:
9119 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9120 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
9121 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
9122 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_rel
9123 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9124 ; OUTLINE-ATOMICS-NEXT: ret
9138 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_noret_release:
9139 ; OUTLINE-ATOMICS: // %bb.0:
9140 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9141 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
9142 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
9143 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_rel
9144 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9145 ; OUTLINE-ATOMICS-NEXT: ret
9158 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_noret_release:
9159 ; OUTLINE-ATOMICS: // %bb.0:
9160 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9161 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
9162 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
9163 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_rel
9164 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9165 ; OUTLINE-ATOMICS-NEXT: ret
9178 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i8_seq_cst:
9179 ; OUTLINE-ATOMICS: // %bb.0:
9180 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9181 ; OUTLINE-ATOMICS-NEXT: adrp x1, var8
9182 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var8
9183 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor1_acq_rel
9184 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9185 ; OUTLINE-ATOMICS-NEXT: ret
9199 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i16_seq_cst:
9200 ; OUTLINE-ATOMICS: // %bb.0:
9201 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9202 ; OUTLINE-ATOMICS-NEXT: adrp x1, var16
9203 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var16
9204 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor2_acq_rel
9205 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9206 ; OUTLINE-ATOMICS-NEXT: ret
9220 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_seq_cst:
9221 ; OUTLINE-ATOMICS: // %bb.0:
9222 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9223 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
9224 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
9225 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_acq_rel
9226 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9227 ; OUTLINE-ATOMICS-NEXT: ret
9241 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_seq_cst:
9242 ; OUTLINE-ATOMICS: // %bb.0:
9243 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9244 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
9245 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
9246 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_acq_rel
9247 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9248 ; OUTLINE-ATOMICS-NEXT: ret
9262 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i32_noret_seq_cst:
9263 ; OUTLINE-ATOMICS: // %bb.0:
9264 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9265 ; OUTLINE-ATOMICS-NEXT: adrp x1, var32
9266 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var32
9267 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor4_acq_rel
9268 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9269 ; OUTLINE-ATOMICS-NEXT: ret
9282 ; OUTLINE-ATOMICS-LABEL: test_atomic_load_xor_i64_noret_seq_cst:
9283 ; OUTLINE-ATOMICS: // %bb.0:
9284 ; OUTLINE-ATOMICS-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
9285 ; OUTLINE-ATOMICS-NEXT: adrp x1, var64
9286 ; OUTLINE-ATOMICS-NEXT: add x1, x1, :lo12:var64
9287 ; OUTLINE-ATOMICS-NEXT: bl __aarch64_ldeor8_acq_rel
9288 ; OUTLINE-ATOMICS-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
9289 ; OUTLINE-ATOMICS-NEXT: ret