Планирование инструкций LLVM в RISC-V
Я смотрю на планирование команд в LLVM для бэкэнда RISC-V. Я понял, что есть два способа планирования (ScheduleDAGRRList & MachineScheduler). Из журналов отладки я могу RISC-V использует подход ScheduleDAGRRList.
Является ли MachineScheduler лучше, чем ScheduleDAGRRList? Если так, как я могу включить MachineScheduler для RISC-V?
Я старался llc -enable-misched file.ll
, но без удачи.
0 ответов
Серверная часть RISC-V добавила поддержку планировщика машин (MISched) в версии 10.0 LLVM.
https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html
Описания TableGen SchedMachineModel в RISCVSchedRocket64.td описывают его как рабочий процессор.
// 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