xref: /llvm-project/llvm/test/CodeGen/RISCV/atomic-rmw-discard.ll (revision 9122c5235ec85ce0c0ad337e862b006e7b349d84)
135216779SYingwei Zheng; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
235216779SYingwei Zheng; RUN: llc -O3 -mtriple=riscv32 -mattr=+a -verify-machineinstrs < %s \
335216779SYingwei Zheng; RUN:   | FileCheck -check-prefixes=RV32 %s
435216779SYingwei Zheng; RUN: llc -O3 -mtriple=riscv64 -mattr=+a -verify-machineinstrs < %s \
535216779SYingwei Zheng; RUN:   | FileCheck -check-prefixes=RV64 %s
635216779SYingwei Zheng
735216779SYingwei Zhengdefine void @amoswap_w_discard(ptr %a, i32 %b) nounwind {
835216779SYingwei Zheng; RV32-LABEL: amoswap_w_discard:
935216779SYingwei Zheng; RV32:       # %bb.0:
1093fde2eaSYingwei Zheng; RV32-NEXT:    amoswap.w.aqrl zero, a1, (a0)
1135216779SYingwei Zheng; RV32-NEXT:    ret
1235216779SYingwei Zheng;
1335216779SYingwei Zheng; RV64-LABEL: amoswap_w_discard:
1435216779SYingwei Zheng; RV64:       # %bb.0:
1593fde2eaSYingwei Zheng; RV64-NEXT:    amoswap.w.aqrl zero, a1, (a0)
1635216779SYingwei Zheng; RV64-NEXT:    ret
1735216779SYingwei Zheng  %1 = atomicrmw xchg ptr %a, i32 %b seq_cst
1835216779SYingwei Zheng  ret void
1935216779SYingwei Zheng}
2035216779SYingwei Zheng
2135216779SYingwei Zhengdefine void @amoswap_d_discard(ptr %a, i64 %b) nounwind {
2235216779SYingwei Zheng; RV32-LABEL: amoswap_d_discard:
2335216779SYingwei Zheng; RV32:       # %bb.0:
2435216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -16
2535216779SYingwei Zheng; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
2635216779SYingwei Zheng; RV32-NEXT:    li a3, 5
27eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_exchange_8
2835216779SYingwei Zheng; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
2935216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 16
3035216779SYingwei Zheng; RV32-NEXT:    ret
3135216779SYingwei Zheng;
3235216779SYingwei Zheng; RV64-LABEL: amoswap_d_discard:
3335216779SYingwei Zheng; RV64:       # %bb.0:
3493fde2eaSYingwei Zheng; RV64-NEXT:    amoswap.d.aqrl zero, a1, (a0)
3535216779SYingwei Zheng; RV64-NEXT:    ret
3635216779SYingwei Zheng  %1 = atomicrmw xchg ptr %a, i64 %b seq_cst
3735216779SYingwei Zheng  ret void
3835216779SYingwei Zheng}
3935216779SYingwei Zheng
4035216779SYingwei Zhengdefine void @amoadd_w_discard(ptr %a, i32 %b) nounwind {
4135216779SYingwei Zheng; RV32-LABEL: amoadd_w_discard:
4235216779SYingwei Zheng; RV32:       # %bb.0:
4393fde2eaSYingwei Zheng; RV32-NEXT:    amoadd.w.aqrl zero, a1, (a0)
4435216779SYingwei Zheng; RV32-NEXT:    ret
4535216779SYingwei Zheng;
4635216779SYingwei Zheng; RV64-LABEL: amoadd_w_discard:
4735216779SYingwei Zheng; RV64:       # %bb.0:
4893fde2eaSYingwei Zheng; RV64-NEXT:    amoadd.w.aqrl zero, a1, (a0)
4935216779SYingwei Zheng; RV64-NEXT:    ret
5035216779SYingwei Zheng  %1 = atomicrmw add ptr %a, i32 %b seq_cst
5135216779SYingwei Zheng  ret void
5235216779SYingwei Zheng}
5335216779SYingwei Zheng
5435216779SYingwei Zhengdefine void @amoadd_d_discard(ptr %a, i64 %b) nounwind {
5535216779SYingwei Zheng; RV32-LABEL: amoadd_d_discard:
5635216779SYingwei Zheng; RV32:       # %bb.0:
5735216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -16
5835216779SYingwei Zheng; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
5935216779SYingwei Zheng; RV32-NEXT:    li a3, 5
60eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_fetch_add_8
6135216779SYingwei Zheng; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
6235216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 16
6335216779SYingwei Zheng; RV32-NEXT:    ret
6435216779SYingwei Zheng;
6535216779SYingwei Zheng; RV64-LABEL: amoadd_d_discard:
6635216779SYingwei Zheng; RV64:       # %bb.0:
6793fde2eaSYingwei Zheng; RV64-NEXT:    amoadd.d.aqrl zero, a1, (a0)
6835216779SYingwei Zheng; RV64-NEXT:    ret
6935216779SYingwei Zheng  %1 = atomicrmw add ptr %a, i64 %b seq_cst
7035216779SYingwei Zheng  ret void
7135216779SYingwei Zheng}
7235216779SYingwei Zheng
7335216779SYingwei Zhengdefine void @amoand_w_discard(ptr %a, i32 %b) nounwind {
7435216779SYingwei Zheng; RV32-LABEL: amoand_w_discard:
7535216779SYingwei Zheng; RV32:       # %bb.0:
7693fde2eaSYingwei Zheng; RV32-NEXT:    amoand.w.aqrl zero, a1, (a0)
7735216779SYingwei Zheng; RV32-NEXT:    ret
7835216779SYingwei Zheng;
7935216779SYingwei Zheng; RV64-LABEL: amoand_w_discard:
8035216779SYingwei Zheng; RV64:       # %bb.0:
8193fde2eaSYingwei Zheng; RV64-NEXT:    amoand.w.aqrl zero, a1, (a0)
8235216779SYingwei Zheng; RV64-NEXT:    ret
8335216779SYingwei Zheng  %1 = atomicrmw and ptr %a, i32 %b seq_cst
8435216779SYingwei Zheng  ret void
8535216779SYingwei Zheng}
8635216779SYingwei Zheng
8735216779SYingwei Zhengdefine void @amoand_d_discard(ptr %a, i64 %b) nounwind {
8835216779SYingwei Zheng; RV32-LABEL: amoand_d_discard:
8935216779SYingwei Zheng; RV32:       # %bb.0:
9035216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -16
9135216779SYingwei Zheng; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
9235216779SYingwei Zheng; RV32-NEXT:    li a3, 5
93eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_fetch_and_8
9435216779SYingwei Zheng; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
9535216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 16
9635216779SYingwei Zheng; RV32-NEXT:    ret
9735216779SYingwei Zheng;
9835216779SYingwei Zheng; RV64-LABEL: amoand_d_discard:
9935216779SYingwei Zheng; RV64:       # %bb.0:
10093fde2eaSYingwei Zheng; RV64-NEXT:    amoand.d.aqrl zero, a1, (a0)
10135216779SYingwei Zheng; RV64-NEXT:    ret
10235216779SYingwei Zheng  %1 = atomicrmw and ptr %a, i64 %b seq_cst
10335216779SYingwei Zheng  ret void
10435216779SYingwei Zheng}
10535216779SYingwei Zheng
10635216779SYingwei Zhengdefine void @amoor_w_discard(ptr %a, i32 %b) nounwind {
10735216779SYingwei Zheng; RV32-LABEL: amoor_w_discard:
10835216779SYingwei Zheng; RV32:       # %bb.0:
10993fde2eaSYingwei Zheng; RV32-NEXT:    amoor.w.aqrl zero, a1, (a0)
11035216779SYingwei Zheng; RV32-NEXT:    ret
11135216779SYingwei Zheng;
11235216779SYingwei Zheng; RV64-LABEL: amoor_w_discard:
11335216779SYingwei Zheng; RV64:       # %bb.0:
11493fde2eaSYingwei Zheng; RV64-NEXT:    amoor.w.aqrl zero, a1, (a0)
11535216779SYingwei Zheng; RV64-NEXT:    ret
11635216779SYingwei Zheng  %1 = atomicrmw or ptr %a, i32 %b seq_cst
11735216779SYingwei Zheng  ret void
11835216779SYingwei Zheng}
11935216779SYingwei Zheng
12035216779SYingwei Zhengdefine void @amoor_d_discard(ptr %a, i64 %b) nounwind {
12135216779SYingwei Zheng; RV32-LABEL: amoor_d_discard:
12235216779SYingwei Zheng; RV32:       # %bb.0:
12335216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -16
12435216779SYingwei Zheng; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
12535216779SYingwei Zheng; RV32-NEXT:    li a3, 5
126eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_fetch_or_8
12735216779SYingwei Zheng; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
12835216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 16
12935216779SYingwei Zheng; RV32-NEXT:    ret
13035216779SYingwei Zheng;
13135216779SYingwei Zheng; RV64-LABEL: amoor_d_discard:
13235216779SYingwei Zheng; RV64:       # %bb.0:
13393fde2eaSYingwei Zheng; RV64-NEXT:    amoor.d.aqrl zero, a1, (a0)
13435216779SYingwei Zheng; RV64-NEXT:    ret
13535216779SYingwei Zheng  %1 = atomicrmw or ptr %a, i64 %b seq_cst
13635216779SYingwei Zheng  ret void
13735216779SYingwei Zheng}
13835216779SYingwei Zheng
13935216779SYingwei Zhengdefine void @amoxor_w_discard(ptr %a, i32 %b) nounwind {
14035216779SYingwei Zheng; RV32-LABEL: amoxor_w_discard:
14135216779SYingwei Zheng; RV32:       # %bb.0:
14293fde2eaSYingwei Zheng; RV32-NEXT:    amoor.w.aqrl zero, a1, (a0)
14335216779SYingwei Zheng; RV32-NEXT:    ret
14435216779SYingwei Zheng;
14535216779SYingwei Zheng; RV64-LABEL: amoxor_w_discard:
14635216779SYingwei Zheng; RV64:       # %bb.0:
14793fde2eaSYingwei Zheng; RV64-NEXT:    amoor.w.aqrl zero, a1, (a0)
14835216779SYingwei Zheng; RV64-NEXT:    ret
14935216779SYingwei Zheng  %1 = atomicrmw or ptr %a, i32 %b seq_cst
15035216779SYingwei Zheng  ret void
15135216779SYingwei Zheng}
15235216779SYingwei Zheng
15335216779SYingwei Zhengdefine void @amoxor_d_discard(ptr %a, i64 %b) nounwind {
15435216779SYingwei Zheng; RV32-LABEL: amoxor_d_discard:
15535216779SYingwei Zheng; RV32:       # %bb.0:
15635216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -16
15735216779SYingwei Zheng; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
15835216779SYingwei Zheng; RV32-NEXT:    li a3, 5
159eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_fetch_or_8
16035216779SYingwei Zheng; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload
16135216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 16
16235216779SYingwei Zheng; RV32-NEXT:    ret
16335216779SYingwei Zheng;
16435216779SYingwei Zheng; RV64-LABEL: amoxor_d_discard:
16535216779SYingwei Zheng; RV64:       # %bb.0:
16693fde2eaSYingwei Zheng; RV64-NEXT:    amoor.d.aqrl zero, a1, (a0)
16735216779SYingwei Zheng; RV64-NEXT:    ret
16835216779SYingwei Zheng  %1 = atomicrmw or ptr %a, i64 %b seq_cst
16935216779SYingwei Zheng  ret void
17035216779SYingwei Zheng}
17135216779SYingwei Zheng
17235216779SYingwei Zhengdefine void @amomax_w_discard(ptr %a, i32 %b) nounwind {
17335216779SYingwei Zheng; RV32-LABEL: amomax_w_discard:
17435216779SYingwei Zheng; RV32:       # %bb.0:
17593fde2eaSYingwei Zheng; RV32-NEXT:    amomax.w.aqrl zero, a1, (a0)
17635216779SYingwei Zheng; RV32-NEXT:    ret
17735216779SYingwei Zheng;
17835216779SYingwei Zheng; RV64-LABEL: amomax_w_discard:
17935216779SYingwei Zheng; RV64:       # %bb.0:
18093fde2eaSYingwei Zheng; RV64-NEXT:    amomax.w.aqrl zero, a1, (a0)
18135216779SYingwei Zheng; RV64-NEXT:    ret
18235216779SYingwei Zheng  %1 = atomicrmw max ptr %a, i32 %b seq_cst
18335216779SYingwei Zheng  ret void
18435216779SYingwei Zheng}
18535216779SYingwei Zheng
18635216779SYingwei Zhengdefine void @amomax_d_discard(ptr %a, i64 %b) nounwind {
18735216779SYingwei Zheng; RV32-LABEL: amomax_d_discard:
18835216779SYingwei Zheng; RV32:       # %bb.0:
18935216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -32
19035216779SYingwei Zheng; RV32-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill
19135216779SYingwei Zheng; RV32-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill
19235216779SYingwei Zheng; RV32-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill
19335216779SYingwei Zheng; RV32-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill
194*9122c523SPengcheng Wang; RV32-NEXT:    mv s0, a2
195*9122c523SPengcheng Wang; RV32-NEXT:    mv s1, a0
19614c4f28eSAlex Bradbury; RV32-NEXT:    lw a4, 0(a0)
19714c4f28eSAlex Bradbury; RV32-NEXT:    lw a5, 4(a0)
19835216779SYingwei Zheng; RV32-NEXT:    mv s2, a1
19935216779SYingwei Zheng; RV32-NEXT:    j .LBB11_2
20035216779SYingwei Zheng; RV32-NEXT:  .LBB11_1: # %atomicrmw.start
20135216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB11_2 Depth=1
20214c4f28eSAlex Bradbury; RV32-NEXT:    sw a4, 8(sp)
20314c4f28eSAlex Bradbury; RV32-NEXT:    sw a5, 12(sp)
20435216779SYingwei Zheng; RV32-NEXT:    addi a1, sp, 8
20535216779SYingwei Zheng; RV32-NEXT:    li a4, 5
20635216779SYingwei Zheng; RV32-NEXT:    li a5, 5
207*9122c523SPengcheng Wang; RV32-NEXT:    mv a0, s1
208eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_compare_exchange_8
20914c4f28eSAlex Bradbury; RV32-NEXT:    lw a4, 8(sp)
21014c4f28eSAlex Bradbury; RV32-NEXT:    lw a5, 12(sp)
21135216779SYingwei Zheng; RV32-NEXT:    bnez a0, .LBB11_6
21235216779SYingwei Zheng; RV32-NEXT:  .LBB11_2: # %atomicrmw.start
21335216779SYingwei Zheng; RV32-NEXT:    # =>This Inner Loop Header: Depth=1
214*9122c523SPengcheng Wang; RV32-NEXT:    beq a5, s0, .LBB11_4
21535216779SYingwei Zheng; RV32-NEXT:  # %bb.3: # %atomicrmw.start
21635216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB11_2 Depth=1
217*9122c523SPengcheng Wang; RV32-NEXT:    slt a0, s0, a5
21814c4f28eSAlex Bradbury; RV32-NEXT:    mv a2, a4
21914c4f28eSAlex Bradbury; RV32-NEXT:    mv a3, a5
22035216779SYingwei Zheng; RV32-NEXT:    bnez a0, .LBB11_1
22135216779SYingwei Zheng; RV32-NEXT:    j .LBB11_5
22235216779SYingwei Zheng; RV32-NEXT:  .LBB11_4: # in Loop: Header=BB11_2 Depth=1
22314c4f28eSAlex Bradbury; RV32-NEXT:    sltu a0, s2, a4
22414c4f28eSAlex Bradbury; RV32-NEXT:    mv a2, a4
22514c4f28eSAlex Bradbury; RV32-NEXT:    mv a3, a5
22635216779SYingwei Zheng; RV32-NEXT:    bnez a0, .LBB11_1
22735216779SYingwei Zheng; RV32-NEXT:  .LBB11_5: # %atomicrmw.start
22835216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB11_2 Depth=1
22935216779SYingwei Zheng; RV32-NEXT:    mv a2, s2
230*9122c523SPengcheng Wang; RV32-NEXT:    mv a3, s0
23135216779SYingwei Zheng; RV32-NEXT:    j .LBB11_1
23235216779SYingwei Zheng; RV32-NEXT:  .LBB11_6: # %atomicrmw.end
23335216779SYingwei Zheng; RV32-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload
23435216779SYingwei Zheng; RV32-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload
23535216779SYingwei Zheng; RV32-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload
23635216779SYingwei Zheng; RV32-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload
23735216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 32
23835216779SYingwei Zheng; RV32-NEXT:    ret
23935216779SYingwei Zheng;
24035216779SYingwei Zheng; RV64-LABEL: amomax_d_discard:
24135216779SYingwei Zheng; RV64:       # %bb.0:
24293fde2eaSYingwei Zheng; RV64-NEXT:    amomax.d.aqrl zero, a1, (a0)
24335216779SYingwei Zheng; RV64-NEXT:    ret
24435216779SYingwei Zheng  %1 = atomicrmw max ptr %a, i64 %b seq_cst
24535216779SYingwei Zheng  ret void
24635216779SYingwei Zheng}
24735216779SYingwei Zheng
24835216779SYingwei Zhengdefine void @amomaxu_w_discard(ptr %a, i32 %b) nounwind {
24935216779SYingwei Zheng; RV32-LABEL: amomaxu_w_discard:
25035216779SYingwei Zheng; RV32:       # %bb.0:
25193fde2eaSYingwei Zheng; RV32-NEXT:    amomaxu.w.aqrl zero, a1, (a0)
25235216779SYingwei Zheng; RV32-NEXT:    ret
25335216779SYingwei Zheng;
25435216779SYingwei Zheng; RV64-LABEL: amomaxu_w_discard:
25535216779SYingwei Zheng; RV64:       # %bb.0:
25693fde2eaSYingwei Zheng; RV64-NEXT:    amomaxu.w.aqrl zero, a1, (a0)
25735216779SYingwei Zheng; RV64-NEXT:    ret
25835216779SYingwei Zheng  %1 = atomicrmw umax ptr %a, i32 %b seq_cst
25935216779SYingwei Zheng  ret void
26035216779SYingwei Zheng}
26135216779SYingwei Zheng
26235216779SYingwei Zhengdefine void @amomaxu_d_discard(ptr %a, i64 %b) nounwind {
26335216779SYingwei Zheng; RV32-LABEL: amomaxu_d_discard:
26435216779SYingwei Zheng; RV32:       # %bb.0:
26535216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -32
26635216779SYingwei Zheng; RV32-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill
26735216779SYingwei Zheng; RV32-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill
26835216779SYingwei Zheng; RV32-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill
26935216779SYingwei Zheng; RV32-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill
270*9122c523SPengcheng Wang; RV32-NEXT:    mv s0, a2
271*9122c523SPengcheng Wang; RV32-NEXT:    mv s1, a0
27214c4f28eSAlex Bradbury; RV32-NEXT:    lw a4, 0(a0)
27314c4f28eSAlex Bradbury; RV32-NEXT:    lw a5, 4(a0)
27435216779SYingwei Zheng; RV32-NEXT:    mv s2, a1
27535216779SYingwei Zheng; RV32-NEXT:    j .LBB13_2
27635216779SYingwei Zheng; RV32-NEXT:  .LBB13_1: # %atomicrmw.start
27735216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB13_2 Depth=1
27814c4f28eSAlex Bradbury; RV32-NEXT:    sw a4, 8(sp)
27914c4f28eSAlex Bradbury; RV32-NEXT:    sw a5, 12(sp)
28035216779SYingwei Zheng; RV32-NEXT:    addi a1, sp, 8
28135216779SYingwei Zheng; RV32-NEXT:    li a4, 5
28235216779SYingwei Zheng; RV32-NEXT:    li a5, 5
283*9122c523SPengcheng Wang; RV32-NEXT:    mv a0, s1
284eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_compare_exchange_8
28514c4f28eSAlex Bradbury; RV32-NEXT:    lw a4, 8(sp)
28614c4f28eSAlex Bradbury; RV32-NEXT:    lw a5, 12(sp)
28735216779SYingwei Zheng; RV32-NEXT:    bnez a0, .LBB13_6
28835216779SYingwei Zheng; RV32-NEXT:  .LBB13_2: # %atomicrmw.start
28935216779SYingwei Zheng; RV32-NEXT:    # =>This Inner Loop Header: Depth=1
290*9122c523SPengcheng Wang; RV32-NEXT:    beq a5, s0, .LBB13_4
29135216779SYingwei Zheng; RV32-NEXT:  # %bb.3: # %atomicrmw.start
29235216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB13_2 Depth=1
293*9122c523SPengcheng Wang; RV32-NEXT:    sltu a0, s0, a5
29414c4f28eSAlex Bradbury; RV32-NEXT:    mv a2, a4
29514c4f28eSAlex Bradbury; RV32-NEXT:    mv a3, a5
29635216779SYingwei Zheng; RV32-NEXT:    bnez a0, .LBB13_1
29735216779SYingwei Zheng; RV32-NEXT:    j .LBB13_5
29835216779SYingwei Zheng; RV32-NEXT:  .LBB13_4: # in Loop: Header=BB13_2 Depth=1
29914c4f28eSAlex Bradbury; RV32-NEXT:    sltu a0, s2, a4
30014c4f28eSAlex Bradbury; RV32-NEXT:    mv a2, a4
30114c4f28eSAlex Bradbury; RV32-NEXT:    mv a3, a5
30235216779SYingwei Zheng; RV32-NEXT:    bnez a0, .LBB13_1
30335216779SYingwei Zheng; RV32-NEXT:  .LBB13_5: # %atomicrmw.start
30435216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB13_2 Depth=1
30535216779SYingwei Zheng; RV32-NEXT:    mv a2, s2
306*9122c523SPengcheng Wang; RV32-NEXT:    mv a3, s0
30735216779SYingwei Zheng; RV32-NEXT:    j .LBB13_1
30835216779SYingwei Zheng; RV32-NEXT:  .LBB13_6: # %atomicrmw.end
30935216779SYingwei Zheng; RV32-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload
31035216779SYingwei Zheng; RV32-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload
31135216779SYingwei Zheng; RV32-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload
31235216779SYingwei Zheng; RV32-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload
31335216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 32
31435216779SYingwei Zheng; RV32-NEXT:    ret
31535216779SYingwei Zheng;
31635216779SYingwei Zheng; RV64-LABEL: amomaxu_d_discard:
31735216779SYingwei Zheng; RV64:       # %bb.0:
31893fde2eaSYingwei Zheng; RV64-NEXT:    amomaxu.d.aqrl zero, a1, (a0)
31935216779SYingwei Zheng; RV64-NEXT:    ret
32035216779SYingwei Zheng  %1 = atomicrmw umax ptr %a, i64 %b seq_cst
32135216779SYingwei Zheng  ret void
32235216779SYingwei Zheng}
32335216779SYingwei Zheng
32435216779SYingwei Zhengdefine void @amomin_w_discard(ptr %a, i32 %b) nounwind {
32535216779SYingwei Zheng; RV32-LABEL: amomin_w_discard:
32635216779SYingwei Zheng; RV32:       # %bb.0:
32793fde2eaSYingwei Zheng; RV32-NEXT:    amomin.w.aqrl zero, a1, (a0)
32835216779SYingwei Zheng; RV32-NEXT:    ret
32935216779SYingwei Zheng;
33035216779SYingwei Zheng; RV64-LABEL: amomin_w_discard:
33135216779SYingwei Zheng; RV64:       # %bb.0:
33293fde2eaSYingwei Zheng; RV64-NEXT:    amomin.w.aqrl zero, a1, (a0)
33335216779SYingwei Zheng; RV64-NEXT:    ret
33435216779SYingwei Zheng  %1 = atomicrmw min ptr %a, i32 %b seq_cst
33535216779SYingwei Zheng  ret void
33635216779SYingwei Zheng}
33735216779SYingwei Zheng
33835216779SYingwei Zhengdefine void @amomin_d_discard(ptr %a, i64 %b) nounwind {
33935216779SYingwei Zheng; RV32-LABEL: amomin_d_discard:
34035216779SYingwei Zheng; RV32:       # %bb.0:
34135216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -32
34235216779SYingwei Zheng; RV32-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill
34335216779SYingwei Zheng; RV32-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill
34435216779SYingwei Zheng; RV32-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill
34535216779SYingwei Zheng; RV32-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill
346*9122c523SPengcheng Wang; RV32-NEXT:    mv s0, a2
347*9122c523SPengcheng Wang; RV32-NEXT:    mv s1, a0
34814c4f28eSAlex Bradbury; RV32-NEXT:    lw a4, 0(a0)
34914c4f28eSAlex Bradbury; RV32-NEXT:    lw a5, 4(a0)
35035216779SYingwei Zheng; RV32-NEXT:    mv s2, a1
35135216779SYingwei Zheng; RV32-NEXT:    j .LBB15_2
35235216779SYingwei Zheng; RV32-NEXT:  .LBB15_1: # %atomicrmw.start
35335216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB15_2 Depth=1
35414c4f28eSAlex Bradbury; RV32-NEXT:    sw a4, 8(sp)
35514c4f28eSAlex Bradbury; RV32-NEXT:    sw a5, 12(sp)
35635216779SYingwei Zheng; RV32-NEXT:    addi a1, sp, 8
35735216779SYingwei Zheng; RV32-NEXT:    li a4, 5
35835216779SYingwei Zheng; RV32-NEXT:    li a5, 5
359*9122c523SPengcheng Wang; RV32-NEXT:    mv a0, s1
360eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_compare_exchange_8
36114c4f28eSAlex Bradbury; RV32-NEXT:    lw a4, 8(sp)
36214c4f28eSAlex Bradbury; RV32-NEXT:    lw a5, 12(sp)
36335216779SYingwei Zheng; RV32-NEXT:    bnez a0, .LBB15_6
36435216779SYingwei Zheng; RV32-NEXT:  .LBB15_2: # %atomicrmw.start
36535216779SYingwei Zheng; RV32-NEXT:    # =>This Inner Loop Header: Depth=1
366*9122c523SPengcheng Wang; RV32-NEXT:    beq a5, s0, .LBB15_4
36735216779SYingwei Zheng; RV32-NEXT:  # %bb.3: # %atomicrmw.start
36835216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB15_2 Depth=1
369*9122c523SPengcheng Wang; RV32-NEXT:    slt a0, s0, a5
37014c4f28eSAlex Bradbury; RV32-NEXT:    mv a2, a4
37114c4f28eSAlex Bradbury; RV32-NEXT:    mv a3, a5
37235216779SYingwei Zheng; RV32-NEXT:    beqz a0, .LBB15_1
37335216779SYingwei Zheng; RV32-NEXT:    j .LBB15_5
37435216779SYingwei Zheng; RV32-NEXT:  .LBB15_4: # in Loop: Header=BB15_2 Depth=1
37514c4f28eSAlex Bradbury; RV32-NEXT:    sltu a0, s2, a4
37614c4f28eSAlex Bradbury; RV32-NEXT:    mv a2, a4
37714c4f28eSAlex Bradbury; RV32-NEXT:    mv a3, a5
37835216779SYingwei Zheng; RV32-NEXT:    beqz a0, .LBB15_1
37935216779SYingwei Zheng; RV32-NEXT:  .LBB15_5: # %atomicrmw.start
38035216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB15_2 Depth=1
38135216779SYingwei Zheng; RV32-NEXT:    mv a2, s2
382*9122c523SPengcheng Wang; RV32-NEXT:    mv a3, s0
38335216779SYingwei Zheng; RV32-NEXT:    j .LBB15_1
38435216779SYingwei Zheng; RV32-NEXT:  .LBB15_6: # %atomicrmw.end
38535216779SYingwei Zheng; RV32-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload
38635216779SYingwei Zheng; RV32-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload
38735216779SYingwei Zheng; RV32-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload
38835216779SYingwei Zheng; RV32-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload
38935216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 32
39035216779SYingwei Zheng; RV32-NEXT:    ret
39135216779SYingwei Zheng;
39235216779SYingwei Zheng; RV64-LABEL: amomin_d_discard:
39335216779SYingwei Zheng; RV64:       # %bb.0:
39493fde2eaSYingwei Zheng; RV64-NEXT:    amomin.d.aqrl zero, a1, (a0)
39535216779SYingwei Zheng; RV64-NEXT:    ret
39635216779SYingwei Zheng  %1 = atomicrmw min ptr %a, i64 %b seq_cst
39735216779SYingwei Zheng  ret void
39835216779SYingwei Zheng}
39935216779SYingwei Zheng
40035216779SYingwei Zhengdefine void @amominu_w_discard(ptr %a, i32 %b) nounwind {
40135216779SYingwei Zheng; RV32-LABEL: amominu_w_discard:
40235216779SYingwei Zheng; RV32:       # %bb.0:
40393fde2eaSYingwei Zheng; RV32-NEXT:    amominu.w.aqrl zero, a1, (a0)
40435216779SYingwei Zheng; RV32-NEXT:    ret
40535216779SYingwei Zheng;
40635216779SYingwei Zheng; RV64-LABEL: amominu_w_discard:
40735216779SYingwei Zheng; RV64:       # %bb.0:
40893fde2eaSYingwei Zheng; RV64-NEXT:    amominu.w.aqrl zero, a1, (a0)
40935216779SYingwei Zheng; RV64-NEXT:    ret
41035216779SYingwei Zheng  %1 = atomicrmw umin ptr %a, i32 %b seq_cst
41135216779SYingwei Zheng  ret void
41235216779SYingwei Zheng}
41335216779SYingwei Zheng
41435216779SYingwei Zhengdefine void @amominu_d_discard(ptr %a, i64 %b) nounwind {
41535216779SYingwei Zheng; RV32-LABEL: amominu_d_discard:
41635216779SYingwei Zheng; RV32:       # %bb.0:
41735216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, -32
41835216779SYingwei Zheng; RV32-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill
41935216779SYingwei Zheng; RV32-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill
42035216779SYingwei Zheng; RV32-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill
42135216779SYingwei Zheng; RV32-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill
422*9122c523SPengcheng Wang; RV32-NEXT:    mv s0, a2
423*9122c523SPengcheng Wang; RV32-NEXT:    mv s1, a0
42414c4f28eSAlex Bradbury; RV32-NEXT:    lw a4, 0(a0)
42514c4f28eSAlex Bradbury; RV32-NEXT:    lw a5, 4(a0)
42635216779SYingwei Zheng; RV32-NEXT:    mv s2, a1
42735216779SYingwei Zheng; RV32-NEXT:    j .LBB17_2
42835216779SYingwei Zheng; RV32-NEXT:  .LBB17_1: # %atomicrmw.start
42935216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB17_2 Depth=1
43014c4f28eSAlex Bradbury; RV32-NEXT:    sw a4, 8(sp)
43114c4f28eSAlex Bradbury; RV32-NEXT:    sw a5, 12(sp)
43235216779SYingwei Zheng; RV32-NEXT:    addi a1, sp, 8
43335216779SYingwei Zheng; RV32-NEXT:    li a4, 5
43435216779SYingwei Zheng; RV32-NEXT:    li a5, 5
435*9122c523SPengcheng Wang; RV32-NEXT:    mv a0, s1
436eabaee0cSFangrui Song; RV32-NEXT:    call __atomic_compare_exchange_8
43714c4f28eSAlex Bradbury; RV32-NEXT:    lw a4, 8(sp)
43814c4f28eSAlex Bradbury; RV32-NEXT:    lw a5, 12(sp)
43935216779SYingwei Zheng; RV32-NEXT:    bnez a0, .LBB17_6
44035216779SYingwei Zheng; RV32-NEXT:  .LBB17_2: # %atomicrmw.start
44135216779SYingwei Zheng; RV32-NEXT:    # =>This Inner Loop Header: Depth=1
442*9122c523SPengcheng Wang; RV32-NEXT:    beq a5, s0, .LBB17_4
44335216779SYingwei Zheng; RV32-NEXT:  # %bb.3: # %atomicrmw.start
44435216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB17_2 Depth=1
445*9122c523SPengcheng Wang; RV32-NEXT:    sltu a0, s0, a5
44614c4f28eSAlex Bradbury; RV32-NEXT:    mv a2, a4
44714c4f28eSAlex Bradbury; RV32-NEXT:    mv a3, a5
44835216779SYingwei Zheng; RV32-NEXT:    beqz a0, .LBB17_1
44935216779SYingwei Zheng; RV32-NEXT:    j .LBB17_5
45035216779SYingwei Zheng; RV32-NEXT:  .LBB17_4: # in Loop: Header=BB17_2 Depth=1
45114c4f28eSAlex Bradbury; RV32-NEXT:    sltu a0, s2, a4
45214c4f28eSAlex Bradbury; RV32-NEXT:    mv a2, a4
45314c4f28eSAlex Bradbury; RV32-NEXT:    mv a3, a5
45435216779SYingwei Zheng; RV32-NEXT:    beqz a0, .LBB17_1
45535216779SYingwei Zheng; RV32-NEXT:  .LBB17_5: # %atomicrmw.start
45635216779SYingwei Zheng; RV32-NEXT:    # in Loop: Header=BB17_2 Depth=1
45735216779SYingwei Zheng; RV32-NEXT:    mv a2, s2
458*9122c523SPengcheng Wang; RV32-NEXT:    mv a3, s0
45935216779SYingwei Zheng; RV32-NEXT:    j .LBB17_1
46035216779SYingwei Zheng; RV32-NEXT:  .LBB17_6: # %atomicrmw.end
46135216779SYingwei Zheng; RV32-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload
46235216779SYingwei Zheng; RV32-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload
46335216779SYingwei Zheng; RV32-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload
46435216779SYingwei Zheng; RV32-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload
46535216779SYingwei Zheng; RV32-NEXT:    addi sp, sp, 32
46635216779SYingwei Zheng; RV32-NEXT:    ret
46735216779SYingwei Zheng;
46835216779SYingwei Zheng; RV64-LABEL: amominu_d_discard:
46935216779SYingwei Zheng; RV64:       # %bb.0:
47093fde2eaSYingwei Zheng; RV64-NEXT:    amominu.d.aqrl zero, a1, (a0)
47135216779SYingwei Zheng; RV64-NEXT:    ret
47235216779SYingwei Zheng  %1 = atomicrmw umin ptr %a, i64 %b seq_cst
47335216779SYingwei Zheng  ret void
47435216779SYingwei Zheng}
475