#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