#include "PreRA_Scheduler.h"

namespace sysy {

char PreRA_Scheduler::ID = 0;

bool PreRA_Scheduler::runOnFunction(Function *F, AnalysisManager& AM) {
  // TODO: 在此实现寄存器分配前的指令调度。
  // 遍历mfunc中的每一个MachineBasicBlock。
  // 对每个基本块内的MachineInstr列表进行重排。
  //
  // 实现思路:
  // 1. 分析每个基本块内指令的数据依赖关系，构建依赖图(DAG)。
  // 2.
  // 根据目标处理器的流水线特性（指令延迟等），使用列表调度等算法对指令进行重排。
  // 3. 此时操作的是虚拟寄存器，只存在真依赖，调度自由度最大。
  //
  // std::cout << "Running Pre-RA Instruction Scheduler..." << std::endl;
  return false;
}

void PreRA_Scheduler::runOnMachineFunction(MachineFunction *mfunc) {
  // TODO: 在此实现寄存器分配前的指令调度。
  // 遍历mfunc中的每一个MachineBasicBlock。
  // 对每个基本块内的MachineInstr列表进行重排。
  //
  // 实现思路:
  // 1. 分析每个基本块内指令的数据依赖关系，构建依赖图(DAG)。
  // 2.
  // 根据目标处理器的流水线特性（指令延迟等），使用列表调度等算法对指令进行重排。
  // 3. 此时操作的是虚拟寄存器，只存在真依赖，调度自由度最大。
  //
  // std::cout << "Running Pre-RA Instruction Scheduler..." << std::endl;
}

} // namespace sysy