[backend]后端流水线引入-O1
This commit is contained in:
@@ -227,13 +227,15 @@ std::string RISCv64CodeGen::function_gen(Function* func) {
|
|||||||
<< ss_after_eli.str();
|
<< ss_after_eli.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 阶段 2.1: 除法强度削弱优化 (Division Strength Reduction)
|
if (optLevel > 0) {
|
||||||
DivStrengthReduction div_strength_reduction;
|
// 阶段 2.1: 除法强度削弱优化 (Division Strength Reduction)
|
||||||
div_strength_reduction.runOnMachineFunction(mfunc.get());
|
DivStrengthReduction div_strength_reduction;
|
||||||
|
div_strength_reduction.runOnMachineFunction(mfunc.get());
|
||||||
|
|
||||||
// // 阶段 2.2: 指令调度 (Instruction Scheduling)
|
// 阶段 2.2: 指令调度 (Instruction Scheduling)
|
||||||
// PreRA_Scheduler scheduler;
|
PreRA_Scheduler scheduler;
|
||||||
// scheduler.runOnMachineFunction(mfunc.get());
|
scheduler.runOnMachineFunction(mfunc.get());
|
||||||
|
}
|
||||||
|
|
||||||
// 阶段 3: 物理寄存器分配 (Register Allocation)
|
// 阶段 3: 物理寄存器分配 (Register Allocation)
|
||||||
bool allocation_succeeded = false;
|
bool allocation_succeeded = false;
|
||||||
@@ -341,13 +343,15 @@ std::string RISCv64CodeGen::function_gen(Function* func) {
|
|||||||
mfunc->dumpStackFrameInfo(std::cerr);
|
mfunc->dumpStackFrameInfo(std::cerr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 阶段 4: 窥孔优化 (Peephole Optimization)
|
if (optLevel > 0) {
|
||||||
PeepholeOptimizer peephole;
|
// 阶段 4: 窥孔优化 (Peephole Optimization)
|
||||||
peephole.runOnMachineFunction(mfunc.get());
|
PeepholeOptimizer peephole;
|
||||||
|
peephole.runOnMachineFunction(mfunc.get());
|
||||||
|
|
||||||
// // 阶段 5: 局部指令调度 (Local Scheduling)
|
// 阶段 5: 局部指令调度 (Local Scheduling)
|
||||||
// PostRA_Scheduler local_scheduler;
|
PostRA_Scheduler local_scheduler;
|
||||||
// local_scheduler.runOnMachineFunction(mfunc.get());
|
local_scheduler.runOnMachineFunction(mfunc.get());
|
||||||
|
}
|
||||||
|
|
||||||
// 阶段 3.2: 插入序言和尾声
|
// 阶段 3.2: 插入序言和尾声
|
||||||
PrologueEpilogueInsertionPass pei_pass;
|
PrologueEpilogueInsertionPass pei_pass;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
extern int DEBUG;
|
extern int DEBUG;
|
||||||
extern int DEEPDEBUG;
|
extern int DEEPDEBUG;
|
||||||
|
extern int optLevel;
|
||||||
|
|
||||||
namespace sysy {
|
namespace sysy {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user