Clang RISC-V中的LLVM指令调度

Clang RISC-V中的LLVM指令调度,clang,llvm,compiler-optimization,cpu-architecture,riscv,Clang,Llvm,Compiler Optimization,Cpu Architecture,Riscv,我正在研究RISC-V后端LLVM中的指令调度。我知道有两种调度方式(ScheduleDAGRRList和MachineScheduler)。从调试日志中我可以看出RISC-V使用ScheduleDAGRRList方法 MachineScheduler是否优于ScheduleDAGRRList?如果是,我如何为RISC-V启用MachineScheduler 我尝试了llc-启用misched file.ll,但没有成功。RISC-V后端在LLVM 10.0版中添加了对机器调度器(misched

我正在研究RISC-V后端LLVM中的指令调度。我知道有两种调度方式(ScheduleDAGRRList和MachineScheduler)。从调试日志中我可以看出RISC-V使用ScheduleDAGRRList方法

MachineScheduler是否优于ScheduleDAGRRList?如果是,我如何为RISC-V启用MachineScheduler


我尝试了
llc-启用misched file.ll
,但没有成功。

RISC-V后端在LLVM 10.0版中添加了对机器调度器(misched)的支持

RISCVSchedRocket64.td中的TableGen SchedMachineModel描述将其描述为有序处理器

// Rocket machine model for scheduling and other instruction cost heuristics.
def Rocket64Model : SchedMachineModel {
  let MicroOpBufferSize = 0; // Explicitly set to zero since Rocket is in-order.
  let IssueWidth = 1;        // 1 micro-ops are dispatched per cycle.
  let LoadLatency = 3;
  let MispredictPenalty = 3;
}
您可以通过以下方式启用rocket-rv64的机器调度:

-O3 -mllvm -enable-misched -mllvm -enable-post-misched -mcpu=rocket-rv64