提交 248a2d10 编写于 作者: Z Zihao Yu

engine,rv64,spill: better name for some functions

上级 d2607a15
......@@ -382,7 +382,7 @@ make_rtl(host_sm, void *addr, const rtlreg_t *src1, int len) {
// we use tmp0 to store x86.pc of the next basic block
make_rtl(j, vaddr_t target) {
#ifdef REG_SPILLING
spill_out_all();
spill_writeback_all();
#endif
if (!load_imm_big(tmp0, target)) rv64_addiw(tmp0, tmp0, target & 0xfff);
tran_next_pc = NEXT_PC_JMP;
......@@ -391,7 +391,7 @@ make_rtl(j, vaddr_t target) {
make_rtl(jr, rtlreg_t *target) {
rv64_addi(tmp0, reg_ptr2idx(s, target), 0);
#ifdef REG_SPILLING
spill_out_all();
spill_writeback_all();
#endif
tran_next_pc = NEXT_PC_JMP;
}
......@@ -427,12 +427,12 @@ make_rtl(jrelop, uint32_t relop, const rtlreg_t *src1, const rtlreg_t *src2, vad
// generate instrutions to load the not-taken target
load_imm_no_opt(tmp0, s->seq_pc); // only two instructions
#ifdef REG_SPILLING
spill_out_all();
spill_writeback_all();
#endif
// generate instrutions to load the taken target
load_imm_no_opt(tmp0, target); // only two instructions
#ifdef REG_SPILLING
spill_out_all();
spill_writeback_all();
#endif
tran_next_pc = NEXT_PC_BRANCH;
......@@ -445,6 +445,6 @@ make_rtl(jrelop, uint32_t relop, const rtlreg_t *src1, const rtlreg_t *src2, vad
make_rtl(kill, const rtlreg_t* src1) {
#ifdef REG_SPILLING
uint32_t tmpidx = reg_ptr2tmpidx(s, src1);
spill_clean(tmpidx);
spill_flush(tmpidx);
#endif
}
\ No newline at end of file
}
......@@ -90,18 +90,21 @@ void cal_suffix_inst() {
}
}
void spill_out_all() { // can be 0/3/6 inst
uint32_t addr;
for (int i = 0; i < TMP_REG_NUM; i++) {
if (tmp_regs[i].map_ptr != 0) {
addr = SCRATCHPAD_BASE_ADDR + 4 * (tmp_regs[i].map_ptr);
load_imm_no_opt(spill_tmp_reg.idx, addr);
rv64_sw(tmp_regs[i].idx, spill_tmp_reg.idx, 0);
}
}
void spill_writeback(uint32_t i) {
if (tmp_regs[i].map_ptr != 0) {
uint32_t addr = SCRATCHPAD_BASE_ADDR + 4 * (tmp_regs[i].map_ptr);
load_imm_no_opt(spill_tmp_reg.idx, addr);
rv64_sw(tmp_regs[i].idx, spill_tmp_reg.idx, 0);
}
}
void spill_writeback_all() { // can be 0/3/6 inst
for (int i = 0; i < TMP_REG_NUM; i++) {
spill_writeback(i);
}
}
void spill_clean(uint32_t tmp_idx) {
void spill_flush(uint32_t tmp_idx) {
for (int i = 0; i < TMP_REG_NUM; i++) {
if (tmp_regs[i].map_ptr == tmp_idx) {
tmp_regs[i].used = 0;
......@@ -110,8 +113,8 @@ void spill_clean(uint32_t tmp_idx) {
}
}
void spill_cleanall() {
void spill_flush_all() {
for (int i = 0; i < TMP_REG_NUM; i++) {
tmp_regs[i].used = 0;
}
}
\ No newline at end of file
}
......@@ -29,9 +29,9 @@ void tmp_regs_init();
void tmp_regs_reset();
uint32_t check_tmp_reg(uint32_t);
uint32_t spill_out_and_remap(DecodeExecState*, uint32_t);
void spill_clean(uint32_t);
void spill_cleanall();
void spill_flush(uint32_t);
void spill_flush_all();
void cal_suffix_inst();
void spill_out_all();
void spill_writeback_all();
#endif
\ No newline at end of file
......@@ -106,7 +106,7 @@ void mainloop() {
__attribute__((unused)) vaddr_t seq_pc = isa_exec_once();
guest_nr_instr ++;
#ifdef REG_SPILLING
spill_cleanall();
spill_flush_all();
#endif
if (nemu_state.state != NEMU_RUNNING) tran_next_pc = NEXT_PC_END;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册