Планирование инструкций 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
Другие вопросы по тегам