Lines Matching full:no
2 ; RUN: llc -mtriple=riscv32 -mattr=+no-trailing-seq-cst-fence < %s | FileCheck %s --check-prefixes=RV32,RV32-NO-ATOMIC
3 ; RUN: llc -mtriple=riscv32 < %s | FileCheck %s --check-prefixes=RV32,RV32-NO-ATOMIC
4 ; RUN: llc -mtriple=riscv32 -mattr=+forced-atomics,+no-trailing-seq-cst-fence < %s | FileCheck %s --check-prefixes=RV32,RV32-ATOMIC
6 ; RUN: llc -mtriple=riscv64 -mattr=+no-trailing-seq-cst-fence < %s | FileCheck %s --check-prefixes=RV64,RV64-NO-ATOMIC
7 ; RUN: llc -mtriple=riscv64 < %s | FileCheck %s --check-prefixes=RV64,RV64-NO-ATOMIC
8 ; RUN: llc -mtriple=riscv64 -mattr=+forced-atomics,+no-trailing-seq-cst-fence < %s | FileCheck %s --check-prefixes=RV64,RV64-ATOMIC
12 ; RV32-NO-ATOMIC-LABEL: load8:
13 ; RV32-NO-ATOMIC: # %bb.0:
14 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
15 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
16 ; RV32-NO-ATOMIC-NEXT: li a1, 5
17 ; RV32-NO-ATOMIC-NEXT: call __atomic_load_1
18 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
19 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
20 ; RV32-NO-ATOMIC-NEXT: ret
36 ; RV64-NO-ATOMIC-LABEL: load8:
37 ; RV64-NO-ATOMIC: # %bb.0:
38 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
39 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
40 ; RV64-NO-ATOMIC-NEXT: li a1, 5
41 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_1
42 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
43 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
44 ; RV64-NO-ATOMIC-NEXT: ret
64 ; RV32-NO-ATOMIC-LABEL: store8:
65 ; RV32-NO-ATOMIC: # %bb.0:
66 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
67 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
68 ; RV32-NO-ATOMIC-NEXT: li a2, 5
69 ; RV32-NO-ATOMIC-NEXT: li a1, 0
70 ; RV32-NO-ATOMIC-NEXT: call __atomic_store_1
71 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
72 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
73 ; RV32-NO-ATOMIC-NEXT: ret
88 ; RV64-NO-ATOMIC-LABEL: store8:
89 ; RV64-NO-ATOMIC: # %bb.0:
90 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
91 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
92 ; RV64-NO-ATOMIC-NEXT: li a2, 5
93 ; RV64-NO-ATOMIC-NEXT: li a1, 0
94 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_1
95 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
96 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
97 ; RV64-NO-ATOMIC-NEXT: ret
116 ; RV32-NO-ATOMIC-LABEL: rmw8:
117 ; RV32-NO-ATOMIC: # %bb.0:
118 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
119 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
120 ; RV32-NO-ATOMIC-NEXT: li a1, 1
121 ; RV32-NO-ATOMIC-NEXT: li a2, 5
122 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_add_1
123 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
124 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
125 ; RV32-NO-ATOMIC-NEXT: ret
147 ; RV64-NO-ATOMIC-LABEL: rmw8:
148 ; RV64-NO-ATOMIC: # %bb.0:
149 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
150 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
151 ; RV64-NO-ATOMIC-NEXT: li a1, 1
152 ; RV64-NO-ATOMIC-NEXT: li a2, 5
153 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_add_1
154 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
155 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
156 ; RV64-NO-ATOMIC-NEXT: ret
182 ; RV32-NO-ATOMIC-LABEL: cmpxchg8:
183 ; RV32-NO-ATOMIC: # %bb.0:
184 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
185 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
186 ; RV32-NO-ATOMIC-NEXT: sb zero, 11(sp)
187 ; RV32-NO-ATOMIC-NEXT: addi a1, sp, 11
188 ; RV32-NO-ATOMIC-NEXT: li a2, 1
189 ; RV32-NO-ATOMIC-NEXT: li a3, 5
190 ; RV32-NO-ATOMIC-NEXT: li a4, 5
191 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_1
192 ; RV32-NO-ATOMIC-NEXT: lbu a0, 11(sp)
193 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
194 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
195 ; RV32-NO-ATOMIC-NEXT: ret
219 ; RV64-NO-ATOMIC-LABEL: cmpxchg8:
220 ; RV64-NO-ATOMIC: # %bb.0:
221 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
222 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
223 ; RV64-NO-ATOMIC-NEXT: sb zero, 7(sp)
224 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 7
225 ; RV64-NO-ATOMIC-NEXT: li a2, 1
226 ; RV64-NO-ATOMIC-NEXT: li a3, 5
227 ; RV64-NO-ATOMIC-NEXT: li a4, 5
228 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_1
229 ; RV64-NO-ATOMIC-NEXT: lbu a0, 7(sp)
230 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
231 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
232 ; RV64-NO-ATOMIC-NEXT: ret
261 ; RV32-NO-ATOMIC-LABEL: load16:
262 ; RV32-NO-ATOMIC: # %bb.0:
263 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
264 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
265 ; RV32-NO-ATOMIC-NEXT: li a1, 5
266 ; RV32-NO-ATOMIC-NEXT: call __atomic_load_2
267 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
268 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
269 ; RV32-NO-ATOMIC-NEXT: ret
285 ; RV64-NO-ATOMIC-LABEL: load16:
286 ; RV64-NO-ATOMIC: # %bb.0:
287 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
288 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
289 ; RV64-NO-ATOMIC-NEXT: li a1, 5
290 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_2
291 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
292 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
293 ; RV64-NO-ATOMIC-NEXT: ret
313 ; RV32-NO-ATOMIC-LABEL: store16:
314 ; RV32-NO-ATOMIC: # %bb.0:
315 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
316 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
317 ; RV32-NO-ATOMIC-NEXT: li a2, 5
318 ; RV32-NO-ATOMIC-NEXT: li a1, 0
319 ; RV32-NO-ATOMIC-NEXT: call __atomic_store_2
320 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
321 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
322 ; RV32-NO-ATOMIC-NEXT: ret
337 ; RV64-NO-ATOMIC-LABEL: store16:
338 ; RV64-NO-ATOMIC: # %bb.0:
339 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
340 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
341 ; RV64-NO-ATOMIC-NEXT: li a2, 5
342 ; RV64-NO-ATOMIC-NEXT: li a1, 0
343 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_2
344 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
345 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
346 ; RV64-NO-ATOMIC-NEXT: ret
365 ; RV32-NO-ATOMIC-LABEL: rmw16:
366 ; RV32-NO-ATOMIC: # %bb.0:
367 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
368 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
369 ; RV32-NO-ATOMIC-NEXT: li a1, 1
370 ; RV32-NO-ATOMIC-NEXT: li a2, 5
371 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_add_2
372 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
373 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
374 ; RV32-NO-ATOMIC-NEXT: ret
396 ; RV64-NO-ATOMIC-LABEL: rmw16:
397 ; RV64-NO-ATOMIC: # %bb.0:
398 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
399 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
400 ; RV64-NO-ATOMIC-NEXT: li a1, 1
401 ; RV64-NO-ATOMIC-NEXT: li a2, 5
402 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_add_2
403 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
404 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
405 ; RV64-NO-ATOMIC-NEXT: ret
431 ; RV32-NO-ATOMIC-LABEL: cmpxchg16:
432 ; RV32-NO-ATOMIC: # %bb.0:
433 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
434 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
435 ; RV32-NO-ATOMIC-NEXT: sh zero, 10(sp)
436 ; RV32-NO-ATOMIC-NEXT: addi a1, sp, 10
437 ; RV32-NO-ATOMIC-NEXT: li a2, 1
438 ; RV32-NO-ATOMIC-NEXT: li a3, 5
439 ; RV32-NO-ATOMIC-NEXT: li a4, 5
440 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_2
441 ; RV32-NO-ATOMIC-NEXT: lh a0, 10(sp)
442 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
443 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
444 ; RV32-NO-ATOMIC-NEXT: ret
468 ; RV64-NO-ATOMIC-LABEL: cmpxchg16:
469 ; RV64-NO-ATOMIC: # %bb.0:
470 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
471 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
472 ; RV64-NO-ATOMIC-NEXT: sh zero, 6(sp)
473 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 6
474 ; RV64-NO-ATOMIC-NEXT: li a2, 1
475 ; RV64-NO-ATOMIC-NEXT: li a3, 5
476 ; RV64-NO-ATOMIC-NEXT: li a4, 5
477 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_2
478 ; RV64-NO-ATOMIC-NEXT: lh a0, 6(sp)
479 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
480 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
481 ; RV64-NO-ATOMIC-NEXT: ret
510 ; RV32-NO-ATOMIC-LABEL: load32_unordered:
511 ; RV32-NO-ATOMIC: # %bb.0:
512 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
513 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
514 ; RV32-NO-ATOMIC-NEXT: li a1, 0
515 ; RV32-NO-ATOMIC-NEXT: call __atomic_load_4
516 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
517 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
518 ; RV32-NO-ATOMIC-NEXT: ret
530 ; RV64-NO-ATOMIC-LABEL: load32_unordered:
531 ; RV64-NO-ATOMIC: # %bb.0:
532 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
533 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
534 ; RV64-NO-ATOMIC-NEXT: li a1, 0
535 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_4
536 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
537 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
538 ; RV64-NO-ATOMIC-NEXT: ret
554 ; RV32-NO-ATOMIC-LABEL: load32_monotonic:
555 ; RV32-NO-ATOMIC: # %bb.0:
556 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
557 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
558 ; RV32-NO-ATOMIC-NEXT: li a1, 0
559 ; RV32-NO-ATOMIC-NEXT: call __atomic_load_4
560 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
561 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
562 ; RV32-NO-ATOMIC-NEXT: ret
574 ; RV64-NO-ATOMIC-LABEL: load32_monotonic:
575 ; RV64-NO-ATOMIC: # %bb.0:
576 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
577 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
578 ; RV64-NO-ATOMIC-NEXT: li a1, 0
579 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_4
580 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
581 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
582 ; RV64-NO-ATOMIC-NEXT: ret
598 ; RV32-NO-ATOMIC-LABEL: load32_acquire:
599 ; RV32-NO-ATOMIC: # %bb.0:
600 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
601 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
602 ; RV32-NO-ATOMIC-NEXT: li a1, 2
603 ; RV32-NO-ATOMIC-NEXT: call __atomic_load_4
604 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
605 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
606 ; RV32-NO-ATOMIC-NEXT: ret
620 ; RV64-NO-ATOMIC-LABEL: load32_acquire:
621 ; RV64-NO-ATOMIC: # %bb.0:
622 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
623 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
624 ; RV64-NO-ATOMIC-NEXT: li a1, 2
625 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_4
626 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
627 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
628 ; RV64-NO-ATOMIC-NEXT: ret
646 ; RV32-NO-ATOMIC-LABEL: load32_seq_cst:
647 ; RV32-NO-ATOMIC: # %bb.0:
648 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
649 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
650 ; RV32-NO-ATOMIC-NEXT: li a1, 5
651 ; RV32-NO-ATOMIC-NEXT: call __atomic_load_4
652 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
653 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
654 ; RV32-NO-ATOMIC-NEXT: ret
670 ; RV64-NO-ATOMIC-LABEL: load32_seq_cst:
671 ; RV64-NO-ATOMIC: # %bb.0:
672 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
673 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
674 ; RV64-NO-ATOMIC-NEXT: li a1, 5
675 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_4
676 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
677 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
678 ; RV64-NO-ATOMIC-NEXT: ret
698 ; RV32-NO-ATOMIC-LABEL: store32_unordered:
699 ; RV32-NO-ATOMIC: # %bb.0:
700 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
701 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
702 ; RV32-NO-ATOMIC-NEXT: li a1, 0
703 ; RV32-NO-ATOMIC-NEXT: li a2, 0
704 ; RV32-NO-ATOMIC-NEXT: call __atomic_store_4
705 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
706 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
707 ; RV32-NO-ATOMIC-NEXT: ret
719 ; RV64-NO-ATOMIC-LABEL: store32_unordered:
720 ; RV64-NO-ATOMIC: # %bb.0:
721 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
722 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
723 ; RV64-NO-ATOMIC-NEXT: li a1, 0
724 ; RV64-NO-ATOMIC-NEXT: li a2, 0
725 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_4
726 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
727 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
728 ; RV64-NO-ATOMIC-NEXT: ret
744 ; RV32-NO-ATOMIC-LABEL: store32_monotonic:
745 ; RV32-NO-ATOMIC: # %bb.0:
746 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
747 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
748 ; RV32-NO-ATOMIC-NEXT: li a1, 0
749 ; RV32-NO-ATOMIC-NEXT: li a2, 0
750 ; RV32-NO-ATOMIC-NEXT: call __atomic_store_4
751 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
752 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
753 ; RV32-NO-ATOMIC-NEXT: ret
765 ; RV64-NO-ATOMIC-LABEL: store32_monotonic:
766 ; RV64-NO-ATOMIC: # %bb.0:
767 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
768 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
769 ; RV64-NO-ATOMIC-NEXT: li a1, 0
770 ; RV64-NO-ATOMIC-NEXT: li a2, 0
771 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_4
772 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
773 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
774 ; RV64-NO-ATOMIC-NEXT: ret
790 ; RV32-NO-ATOMIC-LABEL: store32_release:
791 ; RV32-NO-ATOMIC: # %bb.0:
792 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
793 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
794 ; RV32-NO-ATOMIC-NEXT: li a2, 3
795 ; RV32-NO-ATOMIC-NEXT: li a1, 0
796 ; RV32-NO-ATOMIC-NEXT: call __atomic_store_4
797 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
798 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
799 ; RV32-NO-ATOMIC-NEXT: ret
813 ; RV64-NO-ATOMIC-LABEL: store32_release:
814 ; RV64-NO-ATOMIC: # %bb.0:
815 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
816 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
817 ; RV64-NO-ATOMIC-NEXT: li a2, 3
818 ; RV64-NO-ATOMIC-NEXT: li a1, 0
819 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_4
820 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
821 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
822 ; RV64-NO-ATOMIC-NEXT: ret
840 ; RV32-NO-ATOMIC-LABEL: store32_seq_cst:
841 ; RV32-NO-ATOMIC: # %bb.0:
842 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
843 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
844 ; RV32-NO-ATOMIC-NEXT: li a2, 5
845 ; RV32-NO-ATOMIC-NEXT: li a1, 0
846 ; RV32-NO-ATOMIC-NEXT: call __atomic_store_4
847 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
848 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
849 ; RV32-NO-ATOMIC-NEXT: ret
864 ; RV64-NO-ATOMIC-LABEL: store32_seq_cst:
865 ; RV64-NO-ATOMIC: # %bb.0:
866 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
867 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
868 ; RV64-NO-ATOMIC-NEXT: li a2, 5
869 ; RV64-NO-ATOMIC-NEXT: li a1, 0
870 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_4
871 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
872 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
873 ; RV64-NO-ATOMIC-NEXT: ret
892 ; RV32-NO-ATOMIC-LABEL: rmw32_add_monotonic:
893 ; RV32-NO-ATOMIC: # %bb.0:
894 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
895 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
896 ; RV32-NO-ATOMIC-NEXT: li a1, 1
897 ; RV32-NO-ATOMIC-NEXT: li a2, 0
898 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_add_4
899 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
900 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
901 ; RV32-NO-ATOMIC-NEXT: ret
923 ; RV64-NO-ATOMIC-LABEL: rmw32_add_monotonic:
924 ; RV64-NO-ATOMIC: # %bb.0:
925 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
926 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
927 ; RV64-NO-ATOMIC-NEXT: li a1, 1
928 ; RV64-NO-ATOMIC-NEXT: li a2, 0
929 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_add_4
930 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
931 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
932 ; RV64-NO-ATOMIC-NEXT: ret
958 ; RV32-NO-ATOMIC-LABEL: rmw32_add_seq_cst:
959 ; RV32-NO-ATOMIC: # %bb.0:
960 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
961 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
962 ; RV32-NO-ATOMIC-NEXT: li a1, 1
963 ; RV32-NO-ATOMIC-NEXT: li a2, 5
964 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_add_4
965 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
966 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
967 ; RV32-NO-ATOMIC-NEXT: ret
989 ; RV64-NO-ATOMIC-LABEL: rmw32_add_seq_cst:
990 ; RV64-NO-ATOMIC: # %bb.0:
991 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
992 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
993 ; RV64-NO-ATOMIC-NEXT: li a1, 1
994 ; RV64-NO-ATOMIC-NEXT: li a2, 5
995 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_add_4
996 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
997 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
998 ; RV64-NO-ATOMIC-NEXT: ret
1024 ; RV32-NO-ATOMIC-LABEL: rmw32_sub_seq_cst:
1025 ; RV32-NO-ATOMIC: # %bb.0:
1026 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1027 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1028 ; RV32-NO-ATOMIC-NEXT: li a1, 1
1029 ; RV32-NO-ATOMIC-NEXT: li a2, 5
1030 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_sub_4
1031 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1032 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1033 ; RV32-NO-ATOMIC-NEXT: ret
1055 ; RV64-NO-ATOMIC-LABEL: rmw32_sub_seq_cst:
1056 ; RV64-NO-ATOMIC: # %bb.0:
1057 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
1058 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
1059 ; RV64-NO-ATOMIC-NEXT: li a1, 1
1060 ; RV64-NO-ATOMIC-NEXT: li a2, 5
1061 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_sub_4
1062 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
1063 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
1064 ; RV64-NO-ATOMIC-NEXT: ret
1090 ; RV32-NO-ATOMIC-LABEL: rmw32_and_seq_cst:
1091 ; RV32-NO-ATOMIC: # %bb.0:
1092 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1093 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1094 ; RV32-NO-ATOMIC-NEXT: li a1, 1
1095 ; RV32-NO-ATOMIC-NEXT: li a2, 5
1096 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_and_4
1097 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1098 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1099 ; RV32-NO-ATOMIC-NEXT: ret
1121 ; RV64-NO-ATOMIC-LABEL: rmw32_and_seq_cst:
1122 ; RV64-NO-ATOMIC: # %bb.0:
1123 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
1124 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
1125 ; RV64-NO-ATOMIC-NEXT: li a1, 1
1126 ; RV64-NO-ATOMIC-NEXT: li a2, 5
1127 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_and_4
1128 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
1129 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
1130 ; RV64-NO-ATOMIC-NEXT: ret
1156 ; RV32-NO-ATOMIC-LABEL: rmw32_nand_seq_cst:
1157 ; RV32-NO-ATOMIC: # %bb.0:
1158 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1159 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1160 ; RV32-NO-ATOMIC-NEXT: li a1, 1
1161 ; RV32-NO-ATOMIC-NEXT: li a2, 5
1162 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_nand_4
1163 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1164 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1165 ; RV32-NO-ATOMIC-NEXT: ret
1187 ; RV64-NO-ATOMIC-LABEL: rmw32_nand_seq_cst:
1188 ; RV64-NO-ATOMIC: # %bb.0:
1189 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
1190 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
1191 ; RV64-NO-ATOMIC-NEXT: li a1, 1
1192 ; RV64-NO-ATOMIC-NEXT: li a2, 5
1193 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_nand_4
1194 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
1195 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
1196 ; RV64-NO-ATOMIC-NEXT: ret
1222 ; RV32-NO-ATOMIC-LABEL: rmw32_or_seq_cst:
1223 ; RV32-NO-ATOMIC: # %bb.0:
1224 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1225 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1226 ; RV32-NO-ATOMIC-NEXT: li a1, 1
1227 ; RV32-NO-ATOMIC-NEXT: li a2, 5
1228 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_or_4
1229 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1230 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1231 ; RV32-NO-ATOMIC-NEXT: ret
1253 ; RV64-NO-ATOMIC-LABEL: rmw32_or_seq_cst:
1254 ; RV64-NO-ATOMIC: # %bb.0:
1255 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
1256 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
1257 ; RV64-NO-ATOMIC-NEXT: li a1, 1
1258 ; RV64-NO-ATOMIC-NEXT: li a2, 5
1259 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_or_4
1260 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
1261 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
1262 ; RV64-NO-ATOMIC-NEXT: ret
1288 ; RV32-NO-ATOMIC-LABEL: rmw32_xor_seq_cst:
1289 ; RV32-NO-ATOMIC: # %bb.0:
1290 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1291 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1292 ; RV32-NO-ATOMIC-NEXT: li a1, 1
1293 ; RV32-NO-ATOMIC-NEXT: li a2, 5
1294 ; RV32-NO-ATOMIC-NEXT: call __atomic_fetch_xor_4
1295 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1296 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1297 ; RV32-NO-ATOMIC-NEXT: ret
1319 ; RV64-NO-ATOMIC-LABEL: rmw32_xor_seq_cst:
1320 ; RV64-NO-ATOMIC: # %bb.0:
1321 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
1322 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
1323 ; RV64-NO-ATOMIC-NEXT: li a1, 1
1324 ; RV64-NO-ATOMIC-NEXT: li a2, 5
1325 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_xor_4
1326 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
1327 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
1328 ; RV64-NO-ATOMIC-NEXT: ret
1354 ; RV32-NO-ATOMIC-LABEL: rmw32_max_seq_cst:
1355 ; RV32-NO-ATOMIC: # %bb.0:
1356 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1357 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1358 ; RV32-NO-ATOMIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
1359 ; RV32-NO-ATOMIC-NEXT: mv s0, a0
1360 ; RV32-NO-ATOMIC-NEXT: lw a1, 0(a0)
1361 ; RV32-NO-ATOMIC-NEXT: j .LBB23_2
1362 ; RV32-NO-ATOMIC-NEXT: .LBB23_1: # %atomicrmw.start
1363 ; RV32-NO-ATOMIC-NEXT: # in Loop: Header=BB23_2 Depth=1
1364 ; RV32-NO-ATOMIC-NEXT: sw a1, 4(sp)
1365 ; RV32-NO-ATOMIC-NEXT: addi a1, sp, 4
1366 ; RV32-NO-ATOMIC-NEXT: li a3, 5
1367 ; RV32-NO-ATOMIC-NEXT: li a4, 5
1368 ; RV32-NO-ATOMIC-NEXT: mv a0, s0
1369 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1370 ; RV32-NO-ATOMIC-NEXT: lw a1, 4(sp)
1371 ; RV32-NO-ATOMIC-NEXT: bnez a0, .LBB23_4
1372 ; RV32-NO-ATOMIC-NEXT: .LBB23_2: # %atomicrmw.start
1373 ; RV32-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1374 ; RV32-NO-ATOMIC-NEXT: mv a2, a1
1375 ; RV32-NO-ATOMIC-NEXT: bgtz a1, .LBB23_1
1376 ; RV32-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
1377 ; RV32-NO-ATOMIC-NEXT: # in Loop: Header=BB23_2 Depth=1
1378 ; RV32-NO-ATOMIC-NEXT: li a2, 1
1379 ; RV32-NO-ATOMIC-NEXT: j .LBB23_1
1380 ; RV32-NO-ATOMIC-NEXT: .LBB23_4: # %atomicrmw.end
1381 ; RV32-NO-ATOMIC-NEXT: mv a0, a1
1382 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1383 ; RV32-NO-ATOMIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
1384 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1385 ; RV32-NO-ATOMIC-NEXT: ret
1407 ; RV64-NO-ATOMIC-LABEL: rmw32_max_seq_cst:
1408 ; RV64-NO-ATOMIC: # %bb.0:
1409 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
1410 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
1411 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
1412 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
1413 ; RV64-NO-ATOMIC-NEXT: lw a1, 0(a0)
1414 ; RV64-NO-ATOMIC-NEXT: j .LBB23_2
1415 ; RV64-NO-ATOMIC-NEXT: .LBB23_1: # %atomicrmw.start
1416 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB23_2 Depth=1
1417 ; RV64-NO-ATOMIC-NEXT: sw a1, 12(sp)
1418 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 12
1419 ; RV64-NO-ATOMIC-NEXT: li a3, 5
1420 ; RV64-NO-ATOMIC-NEXT: li a4, 5
1421 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
1422 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1423 ; RV64-NO-ATOMIC-NEXT: lw a1, 12(sp)
1424 ; RV64-NO-ATOMIC-NEXT: bnez a0, .LBB23_4
1425 ; RV64-NO-ATOMIC-NEXT: .LBB23_2: # %atomicrmw.start
1426 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1427 ; RV64-NO-ATOMIC-NEXT: li a0, 1
1428 ; RV64-NO-ATOMIC-NEXT: mv a2, a1
1429 ; RV64-NO-ATOMIC-NEXT: blt a0, a1, .LBB23_1
1430 ; RV64-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
1431 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB23_2 Depth=1
1432 ; RV64-NO-ATOMIC-NEXT: li a2, 1
1433 ; RV64-NO-ATOMIC-NEXT: j .LBB23_1
1434 ; RV64-NO-ATOMIC-NEXT: .LBB23_4: # %atomicrmw.end
1435 ; RV64-NO-ATOMIC-NEXT: mv a0, a1
1436 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
1437 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
1438 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
1439 ; RV64-NO-ATOMIC-NEXT: ret
1465 ; RV32-NO-ATOMIC-LABEL: rmw32_min_seq_cst:
1466 ; RV32-NO-ATOMIC: # %bb.0:
1467 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1468 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1469 ; RV32-NO-ATOMIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
1470 ; RV32-NO-ATOMIC-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
1471 ; RV32-NO-ATOMIC-NEXT: mv s0, a0
1472 ; RV32-NO-ATOMIC-NEXT: lw a1, 0(a0)
1473 ; RV32-NO-ATOMIC-NEXT: li s1, 2
1474 ; RV32-NO-ATOMIC-NEXT: j .LBB24_2
1475 ; RV32-NO-ATOMIC-NEXT: .LBB24_1: # %atomicrmw.start
1476 ; RV32-NO-ATOMIC-NEXT: # in Loop: Header=BB24_2 Depth=1
1477 ; RV32-NO-ATOMIC-NEXT: sw a1, 0(sp)
1478 ; RV32-NO-ATOMIC-NEXT: mv a1, sp
1479 ; RV32-NO-ATOMIC-NEXT: li a3, 5
1480 ; RV32-NO-ATOMIC-NEXT: li a4, 5
1481 ; RV32-NO-ATOMIC-NEXT: mv a0, s0
1482 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1483 ; RV32-NO-ATOMIC-NEXT: lw a1, 0(sp)
1484 ; RV32-NO-ATOMIC-NEXT: bnez a0, .LBB24_4
1485 ; RV32-NO-ATOMIC-NEXT: .LBB24_2: # %atomicrmw.start
1486 ; RV32-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1487 ; RV32-NO-ATOMIC-NEXT: mv a2, a1
1488 ; RV32-NO-ATOMIC-NEXT: blt a1, s1, .LBB24_1
1489 ; RV32-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
1490 ; RV32-NO-ATOMIC-NEXT: # in Loop: Header=BB24_2 Depth=1
1491 ; RV32-NO-ATOMIC-NEXT: li a2, 1
1492 ; RV32-NO-ATOMIC-NEXT: j .LBB24_1
1493 ; RV32-NO-ATOMIC-NEXT: .LBB24_4: # %atomicrmw.end
1494 ; RV32-NO-ATOMIC-NEXT: mv a0, a1
1495 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1496 ; RV32-NO-ATOMIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
1497 ; RV32-NO-ATOMIC-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
1498 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1499 ; RV32-NO-ATOMIC-NEXT: ret
1521 ; RV64-NO-ATOMIC-LABEL: rmw32_min_seq_cst:
1522 ; RV64-NO-ATOMIC: # %bb.0:
1523 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
1524 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
1525 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
1526 ; RV64-NO-ATOMIC-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
1527 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
1528 ; RV64-NO-ATOMIC-NEXT: lw a1, 0(a0)
1529 ; RV64-NO-ATOMIC-NEXT: li s1, 2
1530 ; RV64-NO-ATOMIC-NEXT: j .LBB24_2
1531 ; RV64-NO-ATOMIC-NEXT: .LBB24_1: # %atomicrmw.start
1532 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB24_2 Depth=1
1533 ; RV64-NO-ATOMIC-NEXT: sw a1, 4(sp)
1534 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 4
1535 ; RV64-NO-ATOMIC-NEXT: li a3, 5
1536 ; RV64-NO-ATOMIC-NEXT: li a4, 5
1537 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
1538 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1539 ; RV64-NO-ATOMIC-NEXT: lw a1, 4(sp)
1540 ; RV64-NO-ATOMIC-NEXT: bnez a0, .LBB24_4
1541 ; RV64-NO-ATOMIC-NEXT: .LBB24_2: # %atomicrmw.start
1542 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1543 ; RV64-NO-ATOMIC-NEXT: mv a2, a1
1544 ; RV64-NO-ATOMIC-NEXT: blt a1, s1, .LBB24_1
1545 ; RV64-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
1546 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB24_2 Depth=1
1547 ; RV64-NO-ATOMIC-NEXT: li a2, 1
1548 ; RV64-NO-ATOMIC-NEXT: j .LBB24_1
1549 ; RV64-NO-ATOMIC-NEXT: .LBB24_4: # %atomicrmw.end
1550 ; RV64-NO-ATOMIC-NEXT: mv a0, a1
1551 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
1552 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
1553 ; RV64-NO-ATOMIC-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
1554 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
1555 ; RV64-NO-ATOMIC-NEXT: ret
1581 ; RV32-NO-ATOMIC-LABEL: rmw32_umax_seq_cst:
1582 ; RV32-NO-ATOMIC: # %bb.0:
1583 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1584 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1585 ; RV32-NO-ATOMIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
1586 ; RV32-NO-ATOMIC-NEXT: mv s0, a0
1587 ; RV32-NO-ATOMIC-NEXT: lw a1, 0(a0)
1588 ; RV32-NO-ATOMIC-NEXT: .LBB25_1: # %atomicrmw.start
1589 ; RV32-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1590 ; RV32-NO-ATOMIC-NEXT: seqz a2, a1
1591 ; RV32-NO-ATOMIC-NEXT: add a2, a1, a2
1592 ; RV32-NO-ATOMIC-NEXT: sw a1, 4(sp)
1593 ; RV32-NO-ATOMIC-NEXT: addi a1, sp, 4
1594 ; RV32-NO-ATOMIC-NEXT: li a3, 5
1595 ; RV32-NO-ATOMIC-NEXT: li a4, 5
1596 ; RV32-NO-ATOMIC-NEXT: mv a0, s0
1597 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1598 ; RV32-NO-ATOMIC-NEXT: lw a1, 4(sp)
1599 ; RV32-NO-ATOMIC-NEXT: beqz a0, .LBB25_1
1600 ; RV32-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
1601 ; RV32-NO-ATOMIC-NEXT: mv a0, a1
1602 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1603 ; RV32-NO-ATOMIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
1604 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1605 ; RV32-NO-ATOMIC-NEXT: ret
1627 ; RV64-NO-ATOMIC-LABEL: rmw32_umax_seq_cst:
1628 ; RV64-NO-ATOMIC: # %bb.0:
1629 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
1630 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
1631 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
1632 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
1633 ; RV64-NO-ATOMIC-NEXT: lw a1, 0(a0)
1634 ; RV64-NO-ATOMIC-NEXT: j .LBB25_2
1635 ; RV64-NO-ATOMIC-NEXT: .LBB25_1: # %atomicrmw.start
1636 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB25_2 Depth=1
1637 ; RV64-NO-ATOMIC-NEXT: sw a1, 12(sp)
1638 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 12
1639 ; RV64-NO-ATOMIC-NEXT: li a3, 5
1640 ; RV64-NO-ATOMIC-NEXT: li a4, 5
1641 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
1642 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1643 ; RV64-NO-ATOMIC-NEXT: lw a1, 12(sp)
1644 ; RV64-NO-ATOMIC-NEXT: bnez a0, .LBB25_4
1645 ; RV64-NO-ATOMIC-NEXT: .LBB25_2: # %atomicrmw.start
1646 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1647 ; RV64-NO-ATOMIC-NEXT: li a0, 1
1648 ; RV64-NO-ATOMIC-NEXT: mv a2, a1
1649 ; RV64-NO-ATOMIC-NEXT: bltu a0, a1, .LBB25_1
1650 ; RV64-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
1651 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB25_2 Depth=1
1652 ; RV64-NO-ATOMIC-NEXT: li a2, 1
1653 ; RV64-NO-ATOMIC-NEXT: j .LBB25_1
1654 ; RV64-NO-ATOMIC-NEXT: .LBB25_4: # %atomicrmw.end
1655 ; RV64-NO-ATOMIC-NEXT: mv a0, a1
1656 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
1657 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
1658 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
1659 ; RV64-NO-ATOMIC-NEXT: ret
1685 ; RV32-NO-ATOMIC-LABEL: rmw32_umin_seq_cst:
1686 ; RV32-NO-ATOMIC: # %bb.0:
1687 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1688 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1689 ; RV32-NO-ATOMIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
1690 ; RV32-NO-ATOMIC-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
1691 ; RV32-NO-ATOMIC-NEXT: mv s0, a0
1692 ; RV32-NO-ATOMIC-NEXT: lw a1, 0(a0)
1693 ; RV32-NO-ATOMIC-NEXT: li s1, 2
1694 ; RV32-NO-ATOMIC-NEXT: j .LBB26_2
1695 ; RV32-NO-ATOMIC-NEXT: .LBB26_1: # %atomicrmw.start
1696 ; RV32-NO-ATOMIC-NEXT: # in Loop: Header=BB26_2 Depth=1
1697 ; RV32-NO-ATOMIC-NEXT: sw a1, 0(sp)
1698 ; RV32-NO-ATOMIC-NEXT: mv a1, sp
1699 ; RV32-NO-ATOMIC-NEXT: li a3, 5
1700 ; RV32-NO-ATOMIC-NEXT: li a4, 5
1701 ; RV32-NO-ATOMIC-NEXT: mv a0, s0
1702 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1703 ; RV32-NO-ATOMIC-NEXT: lw a1, 0(sp)
1704 ; RV32-NO-ATOMIC-NEXT: bnez a0, .LBB26_4
1705 ; RV32-NO-ATOMIC-NEXT: .LBB26_2: # %atomicrmw.start
1706 ; RV32-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1707 ; RV32-NO-ATOMIC-NEXT: mv a2, a1
1708 ; RV32-NO-ATOMIC-NEXT: bltu a1, s1, .LBB26_1
1709 ; RV32-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
1710 ; RV32-NO-ATOMIC-NEXT: # in Loop: Header=BB26_2 Depth=1
1711 ; RV32-NO-ATOMIC-NEXT: li a2, 1
1712 ; RV32-NO-ATOMIC-NEXT: j .LBB26_1
1713 ; RV32-NO-ATOMIC-NEXT: .LBB26_4: # %atomicrmw.end
1714 ; RV32-NO-ATOMIC-NEXT: mv a0, a1
1715 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1716 ; RV32-NO-ATOMIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
1717 ; RV32-NO-ATOMIC-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
1718 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1719 ; RV32-NO-ATOMIC-NEXT: ret
1741 ; RV64-NO-ATOMIC-LABEL: rmw32_umin_seq_cst:
1742 ; RV64-NO-ATOMIC: # %bb.0:
1743 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
1744 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
1745 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
1746 ; RV64-NO-ATOMIC-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
1747 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
1748 ; RV64-NO-ATOMIC-NEXT: lw a1, 0(a0)
1749 ; RV64-NO-ATOMIC-NEXT: li s1, 2
1750 ; RV64-NO-ATOMIC-NEXT: j .LBB26_2
1751 ; RV64-NO-ATOMIC-NEXT: .LBB26_1: # %atomicrmw.start
1752 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB26_2 Depth=1
1753 ; RV64-NO-ATOMIC-NEXT: sw a1, 4(sp)
1754 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 4
1755 ; RV64-NO-ATOMIC-NEXT: li a3, 5
1756 ; RV64-NO-ATOMIC-NEXT: li a4, 5
1757 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
1758 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1759 ; RV64-NO-ATOMIC-NEXT: lw a1, 4(sp)
1760 ; RV64-NO-ATOMIC-NEXT: bnez a0, .LBB26_4
1761 ; RV64-NO-ATOMIC-NEXT: .LBB26_2: # %atomicrmw.start
1762 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1763 ; RV64-NO-ATOMIC-NEXT: mv a2, a1
1764 ; RV64-NO-ATOMIC-NEXT: bltu a1, s1, .LBB26_1
1765 ; RV64-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
1766 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB26_2 Depth=1
1767 ; RV64-NO-ATOMIC-NEXT: li a2, 1
1768 ; RV64-NO-ATOMIC-NEXT: j .LBB26_1
1769 ; RV64-NO-ATOMIC-NEXT: .LBB26_4: # %atomicrmw.end
1770 ; RV64-NO-ATOMIC-NEXT: mv a0, a1
1771 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
1772 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
1773 ; RV64-NO-ATOMIC-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
1774 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
1775 ; RV64-NO-ATOMIC-NEXT: ret
1801 ; RV32-NO-ATOMIC-LABEL: rmw32_xchg_seq_cst:
1802 ; RV32-NO-ATOMIC: # %bb.0:
1803 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1804 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1805 ; RV32-NO-ATOMIC-NEXT: li a1, 1
1806 ; RV32-NO-ATOMIC-NEXT: li a2, 5
1807 ; RV32-NO-ATOMIC-NEXT: call __atomic_exchange_4
1808 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1809 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1810 ; RV32-NO-ATOMIC-NEXT: ret
1832 ; RV64-NO-ATOMIC-LABEL: rmw32_xchg_seq_cst:
1833 ; RV64-NO-ATOMIC: # %bb.0:
1834 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
1835 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
1836 ; RV64-NO-ATOMIC-NEXT: li a1, 1
1837 ; RV64-NO-ATOMIC-NEXT: li a2, 5
1838 ; RV64-NO-ATOMIC-NEXT: call __atomic_exchange_4
1839 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
1840 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
1841 ; RV64-NO-ATOMIC-NEXT: ret
1867 ; RV32-NO-ATOMIC-LABEL: rmw32_fadd_seq_cst:
1868 ; RV32-NO-ATOMIC: # %bb.0:
1869 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
1870 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
1871 ; RV32-NO-ATOMIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
1872 ; RV32-NO-ATOMIC-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
1873 ; RV32-NO-ATOMIC-NEXT: mv s0, a0
1874 ; RV32-NO-ATOMIC-NEXT: lw s1, 0(a0)
1875 ; RV32-NO-ATOMIC-NEXT: .LBB28_1: # %atomicrmw.start
1876 ; RV32-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1877 ; RV32-NO-ATOMIC-NEXT: lui a1, 260096
1878 ; RV32-NO-ATOMIC-NEXT: mv a0, s1
1879 ; RV32-NO-ATOMIC-NEXT: call __addsf3
1880 ; RV32-NO-ATOMIC-NEXT: mv a2, a0
1881 ; RV32-NO-ATOMIC-NEXT: sw s1, 0(sp)
1882 ; RV32-NO-ATOMIC-NEXT: mv a1, sp
1883 ; RV32-NO-ATOMIC-NEXT: li a3, 5
1884 ; RV32-NO-ATOMIC-NEXT: li a4, 5
1885 ; RV32-NO-ATOMIC-NEXT: mv a0, s0
1886 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1887 ; RV32-NO-ATOMIC-NEXT: lw s1, 0(sp)
1888 ; RV32-NO-ATOMIC-NEXT: beqz a0, .LBB28_1
1889 ; RV32-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
1890 ; RV32-NO-ATOMIC-NEXT: mv a0, s1
1891 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
1892 ; RV32-NO-ATOMIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
1893 ; RV32-NO-ATOMIC-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
1894 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
1895 ; RV32-NO-ATOMIC-NEXT: ret
1947 ; RV64-NO-ATOMIC-LABEL: rmw32_fadd_seq_cst:
1948 ; RV64-NO-ATOMIC: # %bb.0:
1949 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
1950 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
1951 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
1952 ; RV64-NO-ATOMIC-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
1953 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
1954 ; RV64-NO-ATOMIC-NEXT: lw s1, 0(a0)
1955 ; RV64-NO-ATOMIC-NEXT: .LBB28_1: # %atomicrmw.start
1956 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
1957 ; RV64-NO-ATOMIC-NEXT: lui a1, 260096
1958 ; RV64-NO-ATOMIC-NEXT: mv a0, s1
1959 ; RV64-NO-ATOMIC-NEXT: call __addsf3
1960 ; RV64-NO-ATOMIC-NEXT: mv a2, a0
1961 ; RV64-NO-ATOMIC-NEXT: sw s1, 4(sp)
1962 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 4
1963 ; RV64-NO-ATOMIC-NEXT: li a3, 5
1964 ; RV64-NO-ATOMIC-NEXT: li a4, 5
1965 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
1966 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
1967 ; RV64-NO-ATOMIC-NEXT: lw s1, 4(sp)
1968 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB28_1
1969 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
1970 ; RV64-NO-ATOMIC-NEXT: mv a0, s1
1971 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
1972 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
1973 ; RV64-NO-ATOMIC-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
1974 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
1975 ; RV64-NO-ATOMIC-NEXT: ret
2041 ; RV32-NO-ATOMIC-LABEL: rmw32_fsub_seq_cst:
2042 ; RV32-NO-ATOMIC: # %bb.0:
2043 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
2044 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2045 ; RV32-NO-ATOMIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2046 ; RV32-NO-ATOMIC-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
2047 ; RV32-NO-ATOMIC-NEXT: mv s0, a0
2048 ; RV32-NO-ATOMIC-NEXT: lw s1, 0(a0)
2049 ; RV32-NO-ATOMIC-NEXT: .LBB29_1: # %atomicrmw.start
2050 ; RV32-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
2051 ; RV32-NO-ATOMIC-NEXT: lui a1, 784384
2052 ; RV32-NO-ATOMIC-NEXT: mv a0, s1
2053 ; RV32-NO-ATOMIC-NEXT: call __addsf3
2054 ; RV32-NO-ATOMIC-NEXT: mv a2, a0
2055 ; RV32-NO-ATOMIC-NEXT: sw s1, 0(sp)
2056 ; RV32-NO-ATOMIC-NEXT: mv a1, sp
2057 ; RV32-NO-ATOMIC-NEXT: li a3, 5
2058 ; RV32-NO-ATOMIC-NEXT: li a4, 5
2059 ; RV32-NO-ATOMIC-NEXT: mv a0, s0
2060 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2061 ; RV32-NO-ATOMIC-NEXT: lw s1, 0(sp)
2062 ; RV32-NO-ATOMIC-NEXT: beqz a0, .LBB29_1
2063 ; RV32-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
2064 ; RV32-NO-ATOMIC-NEXT: mv a0, s1
2065 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2066 ; RV32-NO-ATOMIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2067 ; RV32-NO-ATOMIC-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
2068 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
2069 ; RV32-NO-ATOMIC-NEXT: ret
2121 ; RV64-NO-ATOMIC-LABEL: rmw32_fsub_seq_cst:
2122 ; RV64-NO-ATOMIC: # %bb.0:
2123 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
2124 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
2125 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
2126 ; RV64-NO-ATOMIC-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
2127 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
2128 ; RV64-NO-ATOMIC-NEXT: lw s1, 0(a0)
2129 ; RV64-NO-ATOMIC-NEXT: .LBB29_1: # %atomicrmw.start
2130 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
2131 ; RV64-NO-ATOMIC-NEXT: lui a1, 784384
2132 ; RV64-NO-ATOMIC-NEXT: mv a0, s1
2133 ; RV64-NO-ATOMIC-NEXT: call __addsf3
2134 ; RV64-NO-ATOMIC-NEXT: mv a2, a0
2135 ; RV64-NO-ATOMIC-NEXT: sw s1, 4(sp)
2136 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 4
2137 ; RV64-NO-ATOMIC-NEXT: li a3, 5
2138 ; RV64-NO-ATOMIC-NEXT: li a4, 5
2139 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
2140 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2141 ; RV64-NO-ATOMIC-NEXT: lw s1, 4(sp)
2142 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB29_1
2143 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
2144 ; RV64-NO-ATOMIC-NEXT: mv a0, s1
2145 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
2146 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
2147 ; RV64-NO-ATOMIC-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
2148 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
2149 ; RV64-NO-ATOMIC-NEXT: ret
2215 ; RV32-NO-ATOMIC-LABEL: rmw32_fmin_seq_cst:
2216 ; RV32-NO-ATOMIC: # %bb.0:
2217 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
2218 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2219 ; RV32-NO-ATOMIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2220 ; RV32-NO-ATOMIC-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
2221 ; RV32-NO-ATOMIC-NEXT: mv s0, a0
2222 ; RV32-NO-ATOMIC-NEXT: lw s1, 0(a0)
2223 ; RV32-NO-ATOMIC-NEXT: .LBB30_1: # %atomicrmw.start
2224 ; RV32-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
2225 ; RV32-NO-ATOMIC-NEXT: lui a1, 260096
2226 ; RV32-NO-ATOMIC-NEXT: mv a0, s1
2227 ; RV32-NO-ATOMIC-NEXT: call fminf
2228 ; RV32-NO-ATOMIC-NEXT: mv a2, a0
2229 ; RV32-NO-ATOMIC-NEXT: sw s1, 0(sp)
2230 ; RV32-NO-ATOMIC-NEXT: mv a1, sp
2231 ; RV32-NO-ATOMIC-NEXT: li a3, 5
2232 ; RV32-NO-ATOMIC-NEXT: li a4, 5
2233 ; RV32-NO-ATOMIC-NEXT: mv a0, s0
2234 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2235 ; RV32-NO-ATOMIC-NEXT: lw s1, 0(sp)
2236 ; RV32-NO-ATOMIC-NEXT: beqz a0, .LBB30_1
2237 ; RV32-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
2238 ; RV32-NO-ATOMIC-NEXT: mv a0, s1
2239 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2240 ; RV32-NO-ATOMIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2241 ; RV32-NO-ATOMIC-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
2242 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
2243 ; RV32-NO-ATOMIC-NEXT: ret
2295 ; RV64-NO-ATOMIC-LABEL: rmw32_fmin_seq_cst:
2296 ; RV64-NO-ATOMIC: # %bb.0:
2297 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
2298 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
2299 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
2300 ; RV64-NO-ATOMIC-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
2301 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
2302 ; RV64-NO-ATOMIC-NEXT: lw s1, 0(a0)
2303 ; RV64-NO-ATOMIC-NEXT: .LBB30_1: # %atomicrmw.start
2304 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
2305 ; RV64-NO-ATOMIC-NEXT: lui a1, 260096
2306 ; RV64-NO-ATOMIC-NEXT: mv a0, s1
2307 ; RV64-NO-ATOMIC-NEXT: call fminf
2308 ; RV64-NO-ATOMIC-NEXT: mv a2, a0
2309 ; RV64-NO-ATOMIC-NEXT: sw s1, 4(sp)
2310 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 4
2311 ; RV64-NO-ATOMIC-NEXT: li a3, 5
2312 ; RV64-NO-ATOMIC-NEXT: li a4, 5
2313 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
2314 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2315 ; RV64-NO-ATOMIC-NEXT: lw s1, 4(sp)
2316 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB30_1
2317 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
2318 ; RV64-NO-ATOMIC-NEXT: mv a0, s1
2319 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
2320 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
2321 ; RV64-NO-ATOMIC-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
2322 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
2323 ; RV64-NO-ATOMIC-NEXT: ret
2389 ; RV32-NO-ATOMIC-LABEL: rmw32_fmax_seq_cst:
2390 ; RV32-NO-ATOMIC: # %bb.0:
2391 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
2392 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2393 ; RV32-NO-ATOMIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2394 ; RV32-NO-ATOMIC-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
2395 ; RV32-NO-ATOMIC-NEXT: mv s0, a0
2396 ; RV32-NO-ATOMIC-NEXT: lw s1, 0(a0)
2397 ; RV32-NO-ATOMIC-NEXT: .LBB31_1: # %atomicrmw.start
2398 ; RV32-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
2399 ; RV32-NO-ATOMIC-NEXT: lui a1, 260096
2400 ; RV32-NO-ATOMIC-NEXT: mv a0, s1
2401 ; RV32-NO-ATOMIC-NEXT: call fmaxf
2402 ; RV32-NO-ATOMIC-NEXT: mv a2, a0
2403 ; RV32-NO-ATOMIC-NEXT: sw s1, 0(sp)
2404 ; RV32-NO-ATOMIC-NEXT: mv a1, sp
2405 ; RV32-NO-ATOMIC-NEXT: li a3, 5
2406 ; RV32-NO-ATOMIC-NEXT: li a4, 5
2407 ; RV32-NO-ATOMIC-NEXT: mv a0, s0
2408 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2409 ; RV32-NO-ATOMIC-NEXT: lw s1, 0(sp)
2410 ; RV32-NO-ATOMIC-NEXT: beqz a0, .LBB31_1
2411 ; RV32-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
2412 ; RV32-NO-ATOMIC-NEXT: mv a0, s1
2413 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2414 ; RV32-NO-ATOMIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2415 ; RV32-NO-ATOMIC-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
2416 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
2417 ; RV32-NO-ATOMIC-NEXT: ret
2469 ; RV64-NO-ATOMIC-LABEL: rmw32_fmax_seq_cst:
2470 ; RV64-NO-ATOMIC: # %bb.0:
2471 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
2472 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
2473 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
2474 ; RV64-NO-ATOMIC-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
2475 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
2476 ; RV64-NO-ATOMIC-NEXT: lw s1, 0(a0)
2477 ; RV64-NO-ATOMIC-NEXT: .LBB31_1: # %atomicrmw.start
2478 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
2479 ; RV64-NO-ATOMIC-NEXT: lui a1, 260096
2480 ; RV64-NO-ATOMIC-NEXT: mv a0, s1
2481 ; RV64-NO-ATOMIC-NEXT: call fmaxf
2482 ; RV64-NO-ATOMIC-NEXT: mv a2, a0
2483 ; RV64-NO-ATOMIC-NEXT: sw s1, 4(sp)
2484 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 4
2485 ; RV64-NO-ATOMIC-NEXT: li a3, 5
2486 ; RV64-NO-ATOMIC-NEXT: li a4, 5
2487 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
2488 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2489 ; RV64-NO-ATOMIC-NEXT: lw s1, 4(sp)
2490 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB31_1
2491 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
2492 ; RV64-NO-ATOMIC-NEXT: mv a0, s1
2493 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
2494 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
2495 ; RV64-NO-ATOMIC-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
2496 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
2497 ; RV64-NO-ATOMIC-NEXT: ret
2563 ; RV32-NO-ATOMIC-LABEL: cmpxchg32_monotonic:
2564 ; RV32-NO-ATOMIC: # %bb.0:
2565 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
2566 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2567 ; RV32-NO-ATOMIC-NEXT: sw zero, 8(sp)
2568 ; RV32-NO-ATOMIC-NEXT: addi a1, sp, 8
2569 ; RV32-NO-ATOMIC-NEXT: li a2, 1
2570 ; RV32-NO-ATOMIC-NEXT: li a3, 0
2571 ; RV32-NO-ATOMIC-NEXT: li a4, 0
2572 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2573 ; RV32-NO-ATOMIC-NEXT: lw a0, 8(sp)
2574 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2575 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
2576 ; RV32-NO-ATOMIC-NEXT: ret
2600 ; RV64-NO-ATOMIC-LABEL: cmpxchg32_monotonic:
2601 ; RV64-NO-ATOMIC: # %bb.0:
2602 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2603 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2604 ; RV64-NO-ATOMIC-NEXT: sw zero, 4(sp)
2605 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 4
2606 ; RV64-NO-ATOMIC-NEXT: li a2, 1
2607 ; RV64-NO-ATOMIC-NEXT: li a3, 0
2608 ; RV64-NO-ATOMIC-NEXT: li a4, 0
2609 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2610 ; RV64-NO-ATOMIC-NEXT: lw a0, 4(sp)
2611 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2612 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2613 ; RV64-NO-ATOMIC-NEXT: ret
2642 ; RV32-NO-ATOMIC-LABEL: cmpxchg32_seq_cst:
2643 ; RV32-NO-ATOMIC: # %bb.0:
2644 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, -16
2645 ; RV32-NO-ATOMIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2646 ; RV32-NO-ATOMIC-NEXT: sw zero, 8(sp)
2647 ; RV32-NO-ATOMIC-NEXT: addi a1, sp, 8
2648 ; RV32-NO-ATOMIC-NEXT: li a2, 1
2649 ; RV32-NO-ATOMIC-NEXT: li a3, 5
2650 ; RV32-NO-ATOMIC-NEXT: li a4, 5
2651 ; RV32-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2652 ; RV32-NO-ATOMIC-NEXT: lw a0, 8(sp)
2653 ; RV32-NO-ATOMIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2654 ; RV32-NO-ATOMIC-NEXT: addi sp, sp, 16
2655 ; RV32-NO-ATOMIC-NEXT: ret
2679 ; RV64-NO-ATOMIC-LABEL: cmpxchg32_seq_cst:
2680 ; RV64-NO-ATOMIC: # %bb.0:
2681 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2682 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2683 ; RV64-NO-ATOMIC-NEXT: sw zero, 4(sp)
2684 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 4
2685 ; RV64-NO-ATOMIC-NEXT: li a2, 1
2686 ; RV64-NO-ATOMIC-NEXT: li a3, 5
2687 ; RV64-NO-ATOMIC-NEXT: li a4, 5
2688 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_4
2689 ; RV64-NO-ATOMIC-NEXT: lw a0, 4(sp)
2690 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2691 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2692 ; RV64-NO-ATOMIC-NEXT: ret
2731 ; RV64-NO-ATOMIC-LABEL: load64_unordered:
2732 ; RV64-NO-ATOMIC: # %bb.0:
2733 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2734 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2735 ; RV64-NO-ATOMIC-NEXT: li a1, 0
2736 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_8
2737 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2738 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2739 ; RV64-NO-ATOMIC-NEXT: ret
2765 ; RV64-NO-ATOMIC-LABEL: load64_monotonic:
2766 ; RV64-NO-ATOMIC: # %bb.0:
2767 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2768 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2769 ; RV64-NO-ATOMIC-NEXT: li a1, 0
2770 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_8
2771 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2772 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2773 ; RV64-NO-ATOMIC-NEXT: ret
2799 ; RV64-NO-ATOMIC-LABEL: load64_acquire:
2800 ; RV64-NO-ATOMIC: # %bb.0:
2801 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2802 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2803 ; RV64-NO-ATOMIC-NEXT: li a1, 2
2804 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_8
2805 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2806 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2807 ; RV64-NO-ATOMIC-NEXT: ret
2835 ; RV64-NO-ATOMIC-LABEL: load64_seq_cst:
2836 ; RV64-NO-ATOMIC: # %bb.0:
2837 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2838 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2839 ; RV64-NO-ATOMIC-NEXT: li a1, 5
2840 ; RV64-NO-ATOMIC-NEXT: call __atomic_load_8
2841 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2842 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2843 ; RV64-NO-ATOMIC-NEXT: ret
2875 ; RV64-NO-ATOMIC-LABEL: store64_unordered:
2876 ; RV64-NO-ATOMIC: # %bb.0:
2877 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2878 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2879 ; RV64-NO-ATOMIC-NEXT: li a1, 0
2880 ; RV64-NO-ATOMIC-NEXT: li a2, 0
2881 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_8
2882 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2883 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2884 ; RV64-NO-ATOMIC-NEXT: ret
2912 ; RV64-NO-ATOMIC-LABEL: store64_monotonic:
2913 ; RV64-NO-ATOMIC: # %bb.0:
2914 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2915 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2916 ; RV64-NO-ATOMIC-NEXT: li a1, 0
2917 ; RV64-NO-ATOMIC-NEXT: li a2, 0
2918 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_8
2919 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2920 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2921 ; RV64-NO-ATOMIC-NEXT: ret
2949 ; RV64-NO-ATOMIC-LABEL: store64_release:
2950 ; RV64-NO-ATOMIC: # %bb.0:
2951 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2952 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2953 ; RV64-NO-ATOMIC-NEXT: li a2, 3
2954 ; RV64-NO-ATOMIC-NEXT: li a1, 0
2955 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_8
2956 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2957 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2958 ; RV64-NO-ATOMIC-NEXT: ret
2988 ; RV64-NO-ATOMIC-LABEL: store64:
2989 ; RV64-NO-ATOMIC: # %bb.0:
2990 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
2991 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
2992 ; RV64-NO-ATOMIC-NEXT: li a2, 5
2993 ; RV64-NO-ATOMIC-NEXT: li a1, 0
2994 ; RV64-NO-ATOMIC-NEXT: call __atomic_store_8
2995 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
2996 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
2997 ; RV64-NO-ATOMIC-NEXT: ret
3028 ; RV64-NO-ATOMIC-LABEL: rmw64_monotonic:
3029 ; RV64-NO-ATOMIC: # %bb.0:
3030 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
3031 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
3032 ; RV64-NO-ATOMIC-NEXT: li a1, 1
3033 ; RV64-NO-ATOMIC-NEXT: li a2, 0
3034 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_add_8
3035 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
3036 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
3037 ; RV64-NO-ATOMIC-NEXT: ret
3075 ; RV64-NO-ATOMIC-LABEL: rmw64_add_seq_cst:
3076 ; RV64-NO-ATOMIC: # %bb.0:
3077 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
3078 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
3079 ; RV64-NO-ATOMIC-NEXT: li a1, 1
3080 ; RV64-NO-ATOMIC-NEXT: li a2, 5
3081 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_add_8
3082 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
3083 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
3084 ; RV64-NO-ATOMIC-NEXT: ret
3122 ; RV64-NO-ATOMIC-LABEL: rmw64_sub_seq_cst:
3123 ; RV64-NO-ATOMIC: # %bb.0:
3124 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
3125 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
3126 ; RV64-NO-ATOMIC-NEXT: li a1, 1
3127 ; RV64-NO-ATOMIC-NEXT: li a2, 5
3128 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_sub_8
3129 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
3130 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
3131 ; RV64-NO-ATOMIC-NEXT: ret
3169 ; RV64-NO-ATOMIC-LABEL: rmw64_and_seq_cst:
3170 ; RV64-NO-ATOMIC: # %bb.0:
3171 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
3172 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
3173 ; RV64-NO-ATOMIC-NEXT: li a1, 1
3174 ; RV64-NO-ATOMIC-NEXT: li a2, 5
3175 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_and_8
3176 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
3177 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
3178 ; RV64-NO-ATOMIC-NEXT: ret
3216 ; RV64-NO-ATOMIC-LABEL: rmw64_nand_seq_cst:
3217 ; RV64-NO-ATOMIC: # %bb.0:
3218 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
3219 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
3220 ; RV64-NO-ATOMIC-NEXT: li a1, 1
3221 ; RV64-NO-ATOMIC-NEXT: li a2, 5
3222 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_nand_8
3223 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
3224 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
3225 ; RV64-NO-ATOMIC-NEXT: ret
3263 ; RV64-NO-ATOMIC-LABEL: rmw64_or_seq_cst:
3264 ; RV64-NO-ATOMIC: # %bb.0:
3265 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
3266 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
3267 ; RV64-NO-ATOMIC-NEXT: li a1, 1
3268 ; RV64-NO-ATOMIC-NEXT: li a2, 5
3269 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_or_8
3270 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
3271 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
3272 ; RV64-NO-ATOMIC-NEXT: ret
3310 ; RV64-NO-ATOMIC-LABEL: rmw64_xor_seq_cst:
3311 ; RV64-NO-ATOMIC: # %bb.0:
3312 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
3313 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
3314 ; RV64-NO-ATOMIC-NEXT: li a1, 1
3315 ; RV64-NO-ATOMIC-NEXT: li a2, 5
3316 ; RV64-NO-ATOMIC-NEXT: call __atomic_fetch_xor_8
3317 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
3318 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
3319 ; RV64-NO-ATOMIC-NEXT: ret
3393 ; RV64-NO-ATOMIC-LABEL: rmw64_max_seq_cst:
3394 ; RV64-NO-ATOMIC: # %bb.0:
3395 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
3396 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
3397 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
3398 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
3399 ; RV64-NO-ATOMIC-NEXT: ld a1, 0(a0)
3400 ; RV64-NO-ATOMIC-NEXT: j .LBB49_2
3401 ; RV64-NO-ATOMIC-NEXT: .LBB49_1: # %atomicrmw.start
3402 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB49_2 Depth=1
3403 ; RV64-NO-ATOMIC-NEXT: sd a1, 8(sp)
3404 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 8
3405 ; RV64-NO-ATOMIC-NEXT: li a3, 5
3406 ; RV64-NO-ATOMIC-NEXT: li a4, 5
3407 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
3408 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
3409 ; RV64-NO-ATOMIC-NEXT: ld a1, 8(sp)
3410 ; RV64-NO-ATOMIC-NEXT: bnez a0, .LBB49_4
3411 ; RV64-NO-ATOMIC-NEXT: .LBB49_2: # %atomicrmw.start
3412 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
3413 ; RV64-NO-ATOMIC-NEXT: mv a2, a1
3414 ; RV64-NO-ATOMIC-NEXT: bgtz a1, .LBB49_1
3415 ; RV64-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
3416 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB49_2 Depth=1
3417 ; RV64-NO-ATOMIC-NEXT: li a2, 1
3418 ; RV64-NO-ATOMIC-NEXT: j .LBB49_1
3419 ; RV64-NO-ATOMIC-NEXT: .LBB49_4: # %atomicrmw.end
3420 ; RV64-NO-ATOMIC-NEXT: mv a0, a1
3421 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
3422 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
3423 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
3424 ; RV64-NO-ATOMIC-NEXT: ret
3497 ; RV64-NO-ATOMIC-LABEL: rmw64_min_seq_cst:
3498 ; RV64-NO-ATOMIC: # %bb.0:
3499 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
3500 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
3501 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
3502 ; RV64-NO-ATOMIC-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
3503 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
3504 ; RV64-NO-ATOMIC-NEXT: ld a1, 0(a0)
3505 ; RV64-NO-ATOMIC-NEXT: li s1, 2
3506 ; RV64-NO-ATOMIC-NEXT: j .LBB50_2
3507 ; RV64-NO-ATOMIC-NEXT: .LBB50_1: # %atomicrmw.start
3508 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB50_2 Depth=1
3509 ; RV64-NO-ATOMIC-NEXT: sd a1, 0(sp)
3510 ; RV64-NO-ATOMIC-NEXT: mv a1, sp
3511 ; RV64-NO-ATOMIC-NEXT: li a3, 5
3512 ; RV64-NO-ATOMIC-NEXT: li a4, 5
3513 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
3514 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
3515 ; RV64-NO-ATOMIC-NEXT: ld a1, 0(sp)
3516 ; RV64-NO-ATOMIC-NEXT: bnez a0, .LBB50_4
3517 ; RV64-NO-ATOMIC-NEXT: .LBB50_2: # %atomicrmw.start
3518 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
3519 ; RV64-NO-ATOMIC-NEXT: mv a2, a1
3520 ; RV64-NO-ATOMIC-NEXT: blt a1, s1, .LBB50_1
3521 ; RV64-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
3522 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB50_2 Depth=1
3523 ; RV64-NO-ATOMIC-NEXT: li a2, 1
3524 ; RV64-NO-ATOMIC-NEXT: j .LBB50_1
3525 ; RV64-NO-ATOMIC-NEXT: .LBB50_4: # %atomicrmw.end
3526 ; RV64-NO-ATOMIC-NEXT: mv a0, a1
3527 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
3528 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
3529 ; RV64-NO-ATOMIC-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
3530 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
3531 ; RV64-NO-ATOMIC-NEXT: ret
3599 ; RV64-NO-ATOMIC-LABEL: rmw64_umax_seq_cst:
3600 ; RV64-NO-ATOMIC: # %bb.0:
3601 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
3602 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
3603 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
3604 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
3605 ; RV64-NO-ATOMIC-NEXT: ld a1, 0(a0)
3606 ; RV64-NO-ATOMIC-NEXT: .LBB51_1: # %atomicrmw.start
3607 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
3608 ; RV64-NO-ATOMIC-NEXT: seqz a2, a1
3609 ; RV64-NO-ATOMIC-NEXT: add a2, a1, a2
3610 ; RV64-NO-ATOMIC-NEXT: sd a1, 8(sp)
3611 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 8
3612 ; RV64-NO-ATOMIC-NEXT: li a3, 5
3613 ; RV64-NO-ATOMIC-NEXT: li a4, 5
3614 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
3615 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
3616 ; RV64-NO-ATOMIC-NEXT: ld a1, 8(sp)
3617 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB51_1
3618 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
3619 ; RV64-NO-ATOMIC-NEXT: mv a0, a1
3620 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
3621 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
3622 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
3623 ; RV64-NO-ATOMIC-NEXT: ret
3690 ; RV64-NO-ATOMIC-LABEL: rmw64_umin_seq_cst:
3691 ; RV64-NO-ATOMIC: # %bb.0:
3692 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -32
3693 ; RV64-NO-ATOMIC-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
3694 ; RV64-NO-ATOMIC-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
3695 ; RV64-NO-ATOMIC-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
3696 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
3697 ; RV64-NO-ATOMIC-NEXT: ld a1, 0(a0)
3698 ; RV64-NO-ATOMIC-NEXT: li s1, 2
3699 ; RV64-NO-ATOMIC-NEXT: j .LBB52_2
3700 ; RV64-NO-ATOMIC-NEXT: .LBB52_1: # %atomicrmw.start
3701 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB52_2 Depth=1
3702 ; RV64-NO-ATOMIC-NEXT: sd a1, 0(sp)
3703 ; RV64-NO-ATOMIC-NEXT: mv a1, sp
3704 ; RV64-NO-ATOMIC-NEXT: li a3, 5
3705 ; RV64-NO-ATOMIC-NEXT: li a4, 5
3706 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
3707 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
3708 ; RV64-NO-ATOMIC-NEXT: ld a1, 0(sp)
3709 ; RV64-NO-ATOMIC-NEXT: bnez a0, .LBB52_4
3710 ; RV64-NO-ATOMIC-NEXT: .LBB52_2: # %atomicrmw.start
3711 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
3712 ; RV64-NO-ATOMIC-NEXT: mv a2, a1
3713 ; RV64-NO-ATOMIC-NEXT: bltu a1, s1, .LBB52_1
3714 ; RV64-NO-ATOMIC-NEXT: # %bb.3: # %atomicrmw.start
3715 ; RV64-NO-ATOMIC-NEXT: # in Loop: Header=BB52_2 Depth=1
3716 ; RV64-NO-ATOMIC-NEXT: li a2, 1
3717 ; RV64-NO-ATOMIC-NEXT: j .LBB52_1
3718 ; RV64-NO-ATOMIC-NEXT: .LBB52_4: # %atomicrmw.end
3719 ; RV64-NO-ATOMIC-NEXT: mv a0, a1
3720 ; RV64-NO-ATOMIC-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
3721 ; RV64-NO-ATOMIC-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
3722 ; RV64-NO-ATOMIC-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
3723 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 32
3724 ; RV64-NO-ATOMIC-NEXT: ret
3762 ; RV64-NO-ATOMIC-LABEL: rmw64_xchg_seq_cst:
3763 ; RV64-NO-ATOMIC: # %bb.0:
3764 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
3765 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
3766 ; RV64-NO-ATOMIC-NEXT: li a1, 1
3767 ; RV64-NO-ATOMIC-NEXT: li a2, 5
3768 ; RV64-NO-ATOMIC-NEXT: call __atomic_exchange_8
3769 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
3770 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
3771 ; RV64-NO-ATOMIC-NEXT: ret
3836 ; RV64-NO-ATOMIC-LABEL: rmw64_fadd_seq_cst:
3837 ; RV64-NO-ATOMIC: # %bb.0:
3838 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -48
3839 ; RV64-NO-ATOMIC-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
3840 ; RV64-NO-ATOMIC-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
3841 ; RV64-NO-ATOMIC-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
3842 ; RV64-NO-ATOMIC-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
3843 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
3844 ; RV64-NO-ATOMIC-NEXT: ld s2, 0(a0)
3845 ; RV64-NO-ATOMIC-NEXT: li s1, 1023
3846 ; RV64-NO-ATOMIC-NEXT: slli s1, s1, 52
3847 ; RV64-NO-ATOMIC-NEXT: .LBB54_1: # %atomicrmw.start
3848 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
3849 ; RV64-NO-ATOMIC-NEXT: mv a0, s2
3850 ; RV64-NO-ATOMIC-NEXT: mv a1, s1
3851 ; RV64-NO-ATOMIC-NEXT: call __adddf3
3852 ; RV64-NO-ATOMIC-NEXT: mv a2, a0
3853 ; RV64-NO-ATOMIC-NEXT: sd s2, 8(sp)
3854 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 8
3855 ; RV64-NO-ATOMIC-NEXT: li a3, 5
3856 ; RV64-NO-ATOMIC-NEXT: li a4, 5
3857 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
3858 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
3859 ; RV64-NO-ATOMIC-NEXT: ld s2, 8(sp)
3860 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB54_1
3861 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
3862 ; RV64-NO-ATOMIC-NEXT: mv a0, s2
3863 ; RV64-NO-ATOMIC-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
3864 ; RV64-NO-ATOMIC-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
3865 ; RV64-NO-ATOMIC-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
3866 ; RV64-NO-ATOMIC-NEXT: ld s2, 16(sp) # 8-byte Folded Reload
3867 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 48
3868 ; RV64-NO-ATOMIC-NEXT: ret
3971 ; RV64-NO-ATOMIC-LABEL: rmw64_fsub_seq_cst:
3972 ; RV64-NO-ATOMIC: # %bb.0:
3973 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -48
3974 ; RV64-NO-ATOMIC-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
3975 ; RV64-NO-ATOMIC-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
3976 ; RV64-NO-ATOMIC-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
3977 ; RV64-NO-ATOMIC-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
3978 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
3979 ; RV64-NO-ATOMIC-NEXT: ld s2, 0(a0)
3980 ; RV64-NO-ATOMIC-NEXT: li s1, -1025
3981 ; RV64-NO-ATOMIC-NEXT: slli s1, s1, 52
3982 ; RV64-NO-ATOMIC-NEXT: .LBB55_1: # %atomicrmw.start
3983 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
3984 ; RV64-NO-ATOMIC-NEXT: mv a0, s2
3985 ; RV64-NO-ATOMIC-NEXT: mv a1, s1
3986 ; RV64-NO-ATOMIC-NEXT: call __adddf3
3987 ; RV64-NO-ATOMIC-NEXT: mv a2, a0
3988 ; RV64-NO-ATOMIC-NEXT: sd s2, 8(sp)
3989 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 8
3990 ; RV64-NO-ATOMIC-NEXT: li a3, 5
3991 ; RV64-NO-ATOMIC-NEXT: li a4, 5
3992 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
3993 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
3994 ; RV64-NO-ATOMIC-NEXT: ld s2, 8(sp)
3995 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB55_1
3996 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
3997 ; RV64-NO-ATOMIC-NEXT: mv a0, s2
3998 ; RV64-NO-ATOMIC-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
3999 ; RV64-NO-ATOMIC-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
4000 ; RV64-NO-ATOMIC-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
4001 ; RV64-NO-ATOMIC-NEXT: ld s2, 16(sp) # 8-byte Folded Reload
4002 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 48
4003 ; RV64-NO-ATOMIC-NEXT: ret
4106 ; RV64-NO-ATOMIC-LABEL: rmw64_fmin_seq_cst:
4107 ; RV64-NO-ATOMIC: # %bb.0:
4108 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -48
4109 ; RV64-NO-ATOMIC-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
4110 ; RV64-NO-ATOMIC-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
4111 ; RV64-NO-ATOMIC-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
4112 ; RV64-NO-ATOMIC-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
4113 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
4114 ; RV64-NO-ATOMIC-NEXT: ld s2, 0(a0)
4115 ; RV64-NO-ATOMIC-NEXT: li s1, 1023
4116 ; RV64-NO-ATOMIC-NEXT: slli s1, s1, 52
4117 ; RV64-NO-ATOMIC-NEXT: .LBB56_1: # %atomicrmw.start
4118 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
4119 ; RV64-NO-ATOMIC-NEXT: mv a0, s2
4120 ; RV64-NO-ATOMIC-NEXT: mv a1, s1
4121 ; RV64-NO-ATOMIC-NEXT: call fmin
4122 ; RV64-NO-ATOMIC-NEXT: mv a2, a0
4123 ; RV64-NO-ATOMIC-NEXT: sd s2, 8(sp)
4124 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 8
4125 ; RV64-NO-ATOMIC-NEXT: li a3, 5
4126 ; RV64-NO-ATOMIC-NEXT: li a4, 5
4127 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
4128 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
4129 ; RV64-NO-ATOMIC-NEXT: ld s2, 8(sp)
4130 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB56_1
4131 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
4132 ; RV64-NO-ATOMIC-NEXT: mv a0, s2
4133 ; RV64-NO-ATOMIC-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
4134 ; RV64-NO-ATOMIC-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
4135 ; RV64-NO-ATOMIC-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
4136 ; RV64-NO-ATOMIC-NEXT: ld s2, 16(sp) # 8-byte Folded Reload
4137 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 48
4138 ; RV64-NO-ATOMIC-NEXT: ret
4241 ; RV64-NO-ATOMIC-LABEL: rmw64_fmax_seq_cst:
4242 ; RV64-NO-ATOMIC: # %bb.0:
4243 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -48
4244 ; RV64-NO-ATOMIC-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
4245 ; RV64-NO-ATOMIC-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
4246 ; RV64-NO-ATOMIC-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
4247 ; RV64-NO-ATOMIC-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
4248 ; RV64-NO-ATOMIC-NEXT: mv s0, a0
4249 ; RV64-NO-ATOMIC-NEXT: ld s2, 0(a0)
4250 ; RV64-NO-ATOMIC-NEXT: li s1, 1023
4251 ; RV64-NO-ATOMIC-NEXT: slli s1, s1, 52
4252 ; RV64-NO-ATOMIC-NEXT: .LBB57_1: # %atomicrmw.start
4253 ; RV64-NO-ATOMIC-NEXT: # =>This Inner Loop Header: Depth=1
4254 ; RV64-NO-ATOMIC-NEXT: mv a0, s2
4255 ; RV64-NO-ATOMIC-NEXT: mv a1, s1
4256 ; RV64-NO-ATOMIC-NEXT: call fmax
4257 ; RV64-NO-ATOMIC-NEXT: mv a2, a0
4258 ; RV64-NO-ATOMIC-NEXT: sd s2, 8(sp)
4259 ; RV64-NO-ATOMIC-NEXT: addi a1, sp, 8
4260 ; RV64-NO-ATOMIC-NEXT: li a3, 5
4261 ; RV64-NO-ATOMIC-NEXT: li a4, 5
4262 ; RV64-NO-ATOMIC-NEXT: mv a0, s0
4263 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
4264 ; RV64-NO-ATOMIC-NEXT: ld s2, 8(sp)
4265 ; RV64-NO-ATOMIC-NEXT: beqz a0, .LBB57_1
4266 ; RV64-NO-ATOMIC-NEXT: # %bb.2: # %atomicrmw.end
4267 ; RV64-NO-ATOMIC-NEXT: mv a0, s2
4268 ; RV64-NO-ATOMIC-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
4269 ; RV64-NO-ATOMIC-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
4270 ; RV64-NO-ATOMIC-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
4271 ; RV64-NO-ATOMIC-NEXT: ld s2, 16(sp) # 8-byte Folded Reload
4272 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 48
4273 ; RV64-NO-ATOMIC-NEXT: ret
4355 ; RV64-NO-ATOMIC-LABEL: cmpxchg64_monotonic:
4356 ; RV64-NO-ATOMIC: # %bb.0:
4357 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
4358 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
4359 ; RV64-NO-ATOMIC-NEXT: sd zero, 0(sp)
4360 ; RV64-NO-ATOMIC-NEXT: mv a1, sp
4361 ; RV64-NO-ATOMIC-NEXT: li a2, 1
4362 ; RV64-NO-ATOMIC-NEXT: li a3, 0
4363 ; RV64-NO-ATOMIC-NEXT: li a4, 0
4364 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
4365 ; RV64-NO-ATOMIC-NEXT: ld a0, 0(sp)
4366 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
4367 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
4368 ; RV64-NO-ATOMIC-NEXT: ret
4415 ; RV64-NO-ATOMIC-LABEL: cmpxchg64_seq_cst:
4416 ; RV64-NO-ATOMIC: # %bb.0:
4417 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, -16
4418 ; RV64-NO-ATOMIC-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
4419 ; RV64-NO-ATOMIC-NEXT: sd zero, 0(sp)
4420 ; RV64-NO-ATOMIC-NEXT: mv a1, sp
4421 ; RV64-NO-ATOMIC-NEXT: li a2, 1
4422 ; RV64-NO-ATOMIC-NEXT: li a3, 5
4423 ; RV64-NO-ATOMIC-NEXT: li a4, 5
4424 ; RV64-NO-ATOMIC-NEXT: call __atomic_compare_exchange_8
4425 ; RV64-NO-ATOMIC-NEXT: ld a0, 0(sp)
4426 ; RV64-NO-ATOMIC-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
4427 ; RV64-NO-ATOMIC-NEXT: addi sp, sp, 16
4428 ; RV64-NO-ATOMIC-NEXT: ret