83 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -verify-machineinstrs -mcpu=syntacore-scr1-max \3; RUN: -O1 -riscv-enable-machine-combiner=true -riscv-force-machine-combiner-strategy=local < %s | \4; RUN: FileCheck %s --check-prefixes=CHECK_LOCAL_SCR15 6; RUN: llc -mtriple=riscv32 -verify-machineinstrs -mcpu=syntacore-scr1-max \7; RUN: -O1 -riscv-enable-machine-combiner=true -riscv-force-machine-combiner-strategy=min-instr < %s | \8; RUN: FileCheck %s --check-prefixes=CHECK_GLOBAL_SCR19 10; RUN: llc -mtriple=riscv64 -verify-machineinstrs -mcpu=sifive-u74 \11; RUN: -O1 -riscv-enable-machine-combiner=true -riscv-force-machine-combiner-strategy=local < %s | \12; RUN: FileCheck %s --check-prefixes=CHECK_LOCAL_SIFIVE_U7413 14; RUN: llc -mtriple=riscv64 -verify-machineinstrs -mcpu=sifive-u74 \15; RUN: -O1 -riscv-enable-machine-combiner=true -riscv-force-machine-combiner-strategy=min-instr < %s | \16; RUN: FileCheck %s --check-prefixes=CHECK_GLOBAL_SIFIVE_U7417 18define i32 @test_local_strategy(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) {19; CHECK_LOCAL_SCR1-LABEL: test_local_strategy:20; CHECK_LOCAL_SCR1: # %bb.0: # %entry21; CHECK_LOCAL_SCR1-NEXT: div a0, a0, a122; CHECK_LOCAL_SCR1-NEXT: sub a0, a0, a223; CHECK_LOCAL_SCR1-NEXT: beqz a0, .LBB0_224; CHECK_LOCAL_SCR1-NEXT: # %bb.1: # %b225; CHECK_LOCAL_SCR1-NEXT: ret26; CHECK_LOCAL_SCR1-NEXT: .LBB0_2: # %b127; CHECK_LOCAL_SCR1-NEXT: add a3, a3, a428; CHECK_LOCAL_SCR1-NEXT: add a0, a0, a529; CHECK_LOCAL_SCR1-NEXT: add a0, a0, a330; CHECK_LOCAL_SCR1-NEXT: ret31;32; CHECK_GLOBAL_SCR1-LABEL: test_local_strategy:33; CHECK_GLOBAL_SCR1: # %bb.0: # %entry34; CHECK_GLOBAL_SCR1-NEXT: div a0, a0, a135; CHECK_GLOBAL_SCR1-NEXT: sub a0, a0, a236; CHECK_GLOBAL_SCR1-NEXT: beqz a0, .LBB0_237; CHECK_GLOBAL_SCR1-NEXT: # %bb.1: # %b238; CHECK_GLOBAL_SCR1-NEXT: ret39; CHECK_GLOBAL_SCR1-NEXT: .LBB0_2: # %b140; CHECK_GLOBAL_SCR1-NEXT: add a3, a3, a441; CHECK_GLOBAL_SCR1-NEXT: add a3, a3, a542; CHECK_GLOBAL_SCR1-NEXT: add a0, a0, a343; CHECK_GLOBAL_SCR1-NEXT: ret44;45; CHECK_LOCAL_SIFIVE_U74-LABEL: test_local_strategy:46; CHECK_LOCAL_SIFIVE_U74: # %bb.0: # %entry47; CHECK_LOCAL_SIFIVE_U74-NEXT: divw a0, a0, a148; CHECK_LOCAL_SIFIVE_U74-NEXT: subw a0, a0, a249; CHECK_LOCAL_SIFIVE_U74-NEXT: beqz a0, .LBB0_250; CHECK_LOCAL_SIFIVE_U74-NEXT: # %bb.1: # %b251; CHECK_LOCAL_SIFIVE_U74-NEXT: ret52; CHECK_LOCAL_SIFIVE_U74-NEXT: .LBB0_2: # %b153; CHECK_LOCAL_SIFIVE_U74-NEXT: add a3, a3, a454; CHECK_LOCAL_SIFIVE_U74-NEXT: add a0, a0, a555; CHECK_LOCAL_SIFIVE_U74-NEXT: addw a0, a0, a356; CHECK_LOCAL_SIFIVE_U74-NEXT: ret57;58; CHECK_GLOBAL_SIFIVE_U74-LABEL: test_local_strategy:59; CHECK_GLOBAL_SIFIVE_U74: # %bb.0: # %entry60; CHECK_GLOBAL_SIFIVE_U74-NEXT: divw a0, a0, a161; CHECK_GLOBAL_SIFIVE_U74-NEXT: subw a0, a0, a262; CHECK_GLOBAL_SIFIVE_U74-NEXT: beqz a0, .LBB0_263; CHECK_GLOBAL_SIFIVE_U74-NEXT: # %bb.1: # %b264; CHECK_GLOBAL_SIFIVE_U74-NEXT: ret65; CHECK_GLOBAL_SIFIVE_U74-NEXT: .LBB0_2: # %b166; CHECK_GLOBAL_SIFIVE_U74-NEXT: add a3, a3, a467; CHECK_GLOBAL_SIFIVE_U74-NEXT: add a3, a3, a568; CHECK_GLOBAL_SIFIVE_U74-NEXT: addw a0, a0, a369; CHECK_GLOBAL_SIFIVE_U74-NEXT: ret70entry:71 %div = sdiv i32 %a0, %a172 %sub0 = sub i32 %div, %a273 %cmp = icmp eq i32 %sub0, 074 br i1 %cmp, label %b1, label %b275b1:76 %sub1 = add i32 %a3, %a477 %sub2 = add i32 %a5, %sub178 %sub3 = add i32 %sub2, %sub079 ret i32 %sub380b2:81 ret i32 %sub082}83