#ifndef PRE_RA_SCHEDULER_H #define PRE_RA_SCHEDULER_H #include "RISCv64LLIR.h" #include "Pass.h" namespace sysy { /** * @class PreRA_Scheduler * @brief 寄存器分配前的指令调度器 * * 在虚拟寄存器上进行操作,此时调度自由度最大, * 主要目标是隐藏指令延迟,提高流水线效率。 */ class PreRA_Scheduler : public Pass { public: static char ID; PreRA_Scheduler() : Pass("pre-ra-scheduler", Granularity::Function, PassKind::Optimization) {} void *getPassID() const override { return &ID; } bool runOnFunction(Function *F, AnalysisManager& AM) override; void runOnMachineFunction(MachineFunction* mfunc); }; } // namespace sysy #endif // PRE_RA_SCHEDULER_H