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