30 lines
747 B
C++
30 lines
747 B
C++
#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
|