xref: /llvm-project/llvm/test/CodeGen/RISCV/machine-combiner-strategies.ll (revision 37b474a20e8a731bec9db7033e02013c07bd6fa4)
12693efa8SAnton Sidorenko; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22693efa8SAnton Sidorenko; RUN: llc -mtriple=riscv32 -verify-machineinstrs -mcpu=syntacore-scr1-max \
32693efa8SAnton Sidorenko; RUN: -O1 -riscv-enable-machine-combiner=true -riscv-force-machine-combiner-strategy=local < %s | \
4*37b474a2SJim Lin; RUN: FileCheck %s --check-prefixes=CHECK_LOCAL_SCR1
52693efa8SAnton Sidorenko
62693efa8SAnton Sidorenko; RUN: llc -mtriple=riscv32 -verify-machineinstrs -mcpu=syntacore-scr1-max \
72693efa8SAnton Sidorenko; RUN: -O1 -riscv-enable-machine-combiner=true -riscv-force-machine-combiner-strategy=min-instr < %s | \
8*37b474a2SJim Lin; RUN: FileCheck %s --check-prefixes=CHECK_GLOBAL_SCR1
92693efa8SAnton Sidorenko
102693efa8SAnton Sidorenko; RUN: llc -mtriple=riscv64 -verify-machineinstrs -mcpu=sifive-u74 \
112693efa8SAnton Sidorenko; RUN: -O1 -riscv-enable-machine-combiner=true -riscv-force-machine-combiner-strategy=local < %s | \
12*37b474a2SJim Lin; RUN: FileCheck %s --check-prefixes=CHECK_LOCAL_SIFIVE_U74
132693efa8SAnton Sidorenko
142693efa8SAnton Sidorenko; RUN: llc -mtriple=riscv64 -verify-machineinstrs -mcpu=sifive-u74 \
152693efa8SAnton Sidorenko; RUN: -O1 -riscv-enable-machine-combiner=true -riscv-force-machine-combiner-strategy=min-instr < %s | \
16*37b474a2SJim Lin; RUN: FileCheck %s --check-prefixes=CHECK_GLOBAL_SIFIVE_U74
172693efa8SAnton Sidorenko
182693efa8SAnton Sidorenkodefine i32 @test_local_strategy(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) {
192693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-LABEL: test_local_strategy:
202693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1:       # %bb.0: # %entry
212693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:    div a0, a0, a1
222693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:    sub a0, a0, a2
232693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:    beqz a0, .LBB0_2
242693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:  # %bb.1: # %b2
252693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:    ret
262693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:  .LBB0_2: # %b1
272693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:    add a3, a3, a4
282693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:    add a0, a0, a5
292693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:    add a0, a0, a3
302693efa8SAnton Sidorenko; CHECK_LOCAL_SCR1-NEXT:    ret
312693efa8SAnton Sidorenko;
322693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-LABEL: test_local_strategy:
332693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1:       # %bb.0: # %entry
342693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:    div a0, a0, a1
352693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:    sub a0, a0, a2
362693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:    beqz a0, .LBB0_2
372693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:  # %bb.1: # %b2
382693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:    ret
392693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:  .LBB0_2: # %b1
402693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:    add a3, a3, a4
412693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:    add a3, a3, a5
422693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:    add a0, a0, a3
432693efa8SAnton Sidorenko; CHECK_GLOBAL_SCR1-NEXT:    ret
442693efa8SAnton Sidorenko;
452693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-LABEL: test_local_strategy:
462693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74:       # %bb.0: # %entry
472693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:    divw a0, a0, a1
482693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:    subw a0, a0, a2
492693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:    beqz a0, .LBB0_2
502693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:  # %bb.1: # %b2
512693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:    ret
522693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:  .LBB0_2: # %b1
532693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:    add a3, a3, a4
542693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:    add a0, a0, a5
552693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:    addw a0, a0, a3
562693efa8SAnton Sidorenko; CHECK_LOCAL_SIFIVE_U74-NEXT:    ret
572693efa8SAnton Sidorenko;
582693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-LABEL: test_local_strategy:
592693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74:       # %bb.0: # %entry
602693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:    divw a0, a0, a1
612693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:    subw a0, a0, a2
622693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:    beqz a0, .LBB0_2
632693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:  # %bb.1: # %b2
642693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:    ret
652693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:  .LBB0_2: # %b1
662693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:    add a3, a3, a4
672693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:    add a3, a3, a5
682693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:    addw a0, a0, a3
692693efa8SAnton Sidorenko; CHECK_GLOBAL_SIFIVE_U74-NEXT:    ret
702693efa8SAnton Sidorenkoentry:
712693efa8SAnton Sidorenko  %div = sdiv i32 %a0, %a1
722693efa8SAnton Sidorenko  %sub0 = sub i32 %div, %a2
732693efa8SAnton Sidorenko  %cmp = icmp eq i32 %sub0, 0
742693efa8SAnton Sidorenko  br i1 %cmp, label %b1, label %b2
752693efa8SAnton Sidorenkob1:
762693efa8SAnton Sidorenko  %sub1 = add i32 %a3, %a4
772693efa8SAnton Sidorenko  %sub2 = add i32 %a5, %sub1
782693efa8SAnton Sidorenko  %sub3 = add i32 %sub2, %sub0
792693efa8SAnton Sidorenko  ret i32 %sub3
802693efa8SAnton Sidorenkob2:
812693efa8SAnton Sidorenko  ret i32 %sub0
822693efa8SAnton Sidorenko}
83