Clang RISC-V中的LLVM指令调度
我正在研究RISC-V后端LLVM中的指令调度。我知道有两种调度方式(ScheduleDAGRRList和MachineScheduler)。从调试日志中我可以看出RISC-V使用ScheduleDAGRRList方法 MachineScheduler是否优于ScheduleDAGRRList?如果是,我如何为RISC-V启用MachineSchedulerClang 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
我尝试了
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