30 lines
765 B
C++
30 lines
765 B
C++
#ifndef POST_RA_SCHEDULER_H
|
||
#define POST_RA_SCHEDULER_H
|
||
|
||
#include "RISCv64LLIR.h"
|
||
#include "Pass.h"
|
||
|
||
namespace sysy {
|
||
|
||
/**
|
||
* @class PostRA_Scheduler
|
||
* @brief 寄存器分配后的局部指令调度器
|
||
* * 主要目标是优化寄存器分配器插入的spill/fill代码(lw/sw),
|
||
* 尝试将加载指令提前,以隐藏其访存延迟。
|
||
*/
|
||
class PostRA_Scheduler : public Pass {
|
||
public:
|
||
static char ID;
|
||
|
||
PostRA_Scheduler() : Pass("post-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 // POST_RA_SCHEDULER_H
|