From 70c3fff10669e28fc9648e2aa1aed7e9237d0b89 Mon Sep 17 00:00:00 2001 From: Zhou Yaoyang Date: Sun, 15 Nov 2020 12:04:58 +0800 Subject: [PATCH] Removed and, or, and xor --- include/rtl/pseudo.h | 6 +++--- src/engine/interpreter/c_op.h | 6 +++--- src/isa/riscv64/clint.c | 2 +- src/isa/riscv64/exec/amo.h | 6 +++--- src/isa/riscv64/exec/compute.h | 24 ++++++++++++------------ src/isa/riscv64/exec/control.h | 2 +- src/isa/riscv64/exec/exec.c | 8 ++++---- src/isa/riscv64/exec/muldiv.h | 2 +- src/isa/riscv64/exec/system.h | 10 +++++----- 9 files changed, 33 insertions(+), 33 deletions(-) diff --git a/include/rtl/pseudo.h b/include/rtl/pseudo.h index 9aff818c..6a247cb1 100644 --- a/include/rtl/pseudo.h +++ b/include/rtl/pseudo.h @@ -15,10 +15,10 @@ static inline make_rtl(mv, rtlreg_t* dest, const rtlreg_t *src1) { if (dest != src1) rtl_add(s, dest, src1, rz); } -static inline make_rtl(not, rtlreg_t *dest, const rtlreg_t* src1) { +static inline make_rtl(nemunot, rtlreg_t *dest, const rtlreg_t* src1) { // dest <- ~src1 // TODO(); - rtl_xori(s, dest, src1, -1); + rtl_nemuxori(s, dest, src1, -1); } static inline make_rtl(neg, rtlreg_t *dest, const rtlreg_t* src1) { @@ -60,7 +60,7 @@ static inline make_rtl(msb, rtlreg_t* dest, const rtlreg_t* src1, int width) { // TODO(); rtl_shri(s, dest, src1, width * 8 - 1); if (width != 4) { - rtl_andi(s, dest, dest, 0x1); + rtl_nemuandi(s, dest, dest, 0x1); } } diff --git a/src/engine/interpreter/c_op.h b/src/engine/interpreter/c_op.h index 4dc64e1f..3ef3fba9 100644 --- a/src/engine/interpreter/c_op.h +++ b/src/engine/interpreter/c_op.h @@ -11,9 +11,9 @@ #define c_add(a, b) ((a) + (b)) #define c_sub(a, b) ((a) - (b)) -#define c_and(a, b) ((a) & (b)) -#define c_or(a, b) ((a) | (b)) -#define c_xor(a, b) ((a) ^ (b)) +#define c_nemuand(a, b) ((a) & (b)) +#define c_nemuor(a, b) ((a) | (b)) +#define c_nemuxor(a, b) ((a) ^ (b)) #define c_shl(a, b) ((a) << ((b) & c_shift_mask)) #define c_shr(a, b) ((a) >> ((b) & c_shift_mask)) #define c_sar(a, b) ((sword_t)(a) >> ((b) & c_shift_mask)) diff --git a/src/isa/riscv64/clint.c b/src/isa/riscv64/clint.c index 78ceb85d..f659e159 100644 --- a/src/isa/riscv64/clint.c +++ b/src/isa/riscv64/clint.c @@ -25,7 +25,7 @@ static void clint_io_handler(uint32_t offset, int len, nemu_bool is_write) { } void init_clint(void) { - clint_base = (void *)new_space(0x10000); + clint_base = (uint64_t *)new_space(0x10000); add_mmio_map("clint", CLINT_MMIO, (uint8_t *)clint_base, 0x10000, clint_io_handler); add_alarm_handle(clint_intr); } diff --git a/src/isa/riscv64/exec/amo.h b/src/isa/riscv64/exec/amo.h index 702ad0cc..4de7ac10 100644 --- a/src/isa/riscv64/exec/amo.h +++ b/src/isa/riscv64/exec/amo.h @@ -70,7 +70,7 @@ static inline make_EHelper(amoadd) { static inline make_EHelper(amoor) { amo_load(s); return_on_mem_ex(); - rtl_or(s, s1, s0, dsrc2); + rtl_nemuor(s, s1, s0, dsrc2); amo_update(s); return_on_mem_ex(); print_asm_template3(amoor); @@ -79,7 +79,7 @@ static inline make_EHelper(amoor) { static inline make_EHelper(amoand) { amo_load(s); return_on_mem_ex(); - rtl_and(s, s1, s0, dsrc2); + rtl_nemuand(s, s1, s0, dsrc2); amo_update(s); return_on_mem_ex(); print_asm_template3(amoand); @@ -124,7 +124,7 @@ static inline make_EHelper(amomin) { static inline make_EHelper(amoxor) { amo_load(s); return_on_mem_ex(); - rtl_xor(s, s1, s0, dsrc2); + rtl_nemuxor(s, s1, s0, dsrc2); amo_update(s); return_on_mem_ex(); print_asm_template3(amoxor); diff --git a/src/isa/riscv64/exec/compute.h b/src/isa/riscv64/exec/compute.h index 5c1bfa1a..a6137835 100644 --- a/src/isa/riscv64/exec/compute.h +++ b/src/isa/riscv64/exec/compute.h @@ -39,24 +39,24 @@ static inline make_EHelper(sltu) { print_asm_template3(sltu); } -static inline make_EHelper(xor) { - rtl_xor(s, ddest, dsrc1, dsrc2); +static inline make_EHelper(nemuxor) { + rtl_nemuxor(s, ddest, dsrc1, dsrc2); print_asm_template3(xor); } -static inline make_EHelper(or) { - rtl_or(s, ddest, dsrc1, dsrc2); +static inline make_EHelper(nemuor) { + rtl_nemuor(s, ddest, dsrc1, dsrc2); print_asm_template3(or); } -static inline make_EHelper(and) { - rtl_and(s, ddest, dsrc1, dsrc2); - print_asm_template3(and); +static inline make_EHelper(nemuand) { + rtl_nemuand(s, ddest, dsrc1, dsrc2); + print_asm_template3(nemuand); } static inline make_EHelper(addi) { rtl_addi(s, ddest, dsrc1, id_src2->imm); - print_asm_template3(addi); + print_asm_template3(nemuaddi); } static inline make_EHelper(slli) { @@ -91,17 +91,17 @@ static inline make_EHelper(sltui) { } static inline make_EHelper(xori) { - rtl_xori(s, ddest, dsrc1, id_src2->imm); + rtl_nemuxori(s, ddest, dsrc1, id_src2->imm); print_asm_template3(xori); } static inline make_EHelper(ori) { - rtl_ori(s, ddest, dsrc1, id_src2->imm); + rtl_nemuori(s, ddest, dsrc1, id_src2->imm); print_asm_template3(ori); } -static inline make_EHelper(andi) { - rtl_andi(s, ddest, dsrc1, id_src2->imm); +static inline make_EHelper(nemuandi) { + rtl_nemuandi(s, ddest, dsrc1, id_src2->imm); print_asm_template3(andi); } diff --git a/src/isa/riscv64/exec/control.h b/src/isa/riscv64/exec/control.h index cc45e375..dc30a6ae 100644 --- a/src/isa/riscv64/exec/control.h +++ b/src/isa/riscv64/exec/control.h @@ -10,7 +10,7 @@ static inline make_EHelper(jal) { static inline make_EHelper(jalr) { rtl_addi(s, s0, dsrc1, id_src2->imm); #ifdef __ENGINE_interpreter__ - rtl_andi(s, s0, s0, ~0x1lu); + rtl_nemuandi(s, s0, s0, ~0x1lu); #endif rtl_jr(s, s0); diff --git a/src/isa/riscv64/exec/exec.c b/src/isa/riscv64/exec/exec.c index 4275f8d9..f58f9d76 100644 --- a/src/isa/riscv64/exec/exec.c +++ b/src/isa/riscv64/exec/exec.c @@ -60,7 +60,7 @@ static inline make_EHelper(op_fp){ static inline make_EHelper(op_imm) { switch (s->isa.instr.i.funct3) { EX(0, addi) EX(1, slli) EX(2, slti) EX(3, sltui) - EX(4, xori) EX(5, srli) EX(6, ori) EX(7, andi) + EX(4, xori) EX(5, srli) EX(6, ori) EX(7, nemuandi) } } @@ -78,7 +78,7 @@ static inline make_EHelper(op) { #define pair(x, y) (((x) << 3) | (y)) switch (pair(idx, s->isa.instr.r.funct3)) { EX(pair(0, 0), add) EX(pair(0, 1), sll) EX(pair(0, 2), slt) EX(pair(0, 3), sltu) - EX(pair(0, 4), xor) EX(pair(0, 5), srl) EX(pair(0, 6), or) EX(pair(0, 7), and) + EX(pair(0, 4), nemuxor) EX(pair(0, 5), srl) EX(pair(0, 6), nemuor) EX(pair(0, 7), nemuand) EX(pair(1, 0), mul) EX(pair(1, 1), mulh) EX(pair(1,2), mulhsu)EX(pair(1, 3), mulhu) EX(pair(1, 4), div) EX(pair(1, 5), divu) EX(pair(1, 6), rem) EX(pair(1, 7), remu) EX(pair(2, 0), sub) EX(pair(2, 5), sra) @@ -173,14 +173,14 @@ static inline make_EHelper(misc_alu) { if (op == 3) { uint32_t op2 = (BITS(instr, 12, 12) << 2) | BITS(instr, 6, 5); switch (op2) { - IDEX (0, CS, sub) IDEX (1, CS, xor) IDEX (2, CS, or) IDEX (3, CS, and) + IDEX (0, CS, sub) IDEX (1, CS, nemuxor) IDEX (2, CS, nemuor) IDEX (3, CS, nemuand) IDEX (4, CS, subw)IDEX (5, CS, addw)EMPTY(6) EMPTY(7) } } else { switch (op) { IDEX (0, CB_shift, srli) IDEX (1, CB_shift, srai) - IDEX (2, CB_andi, andi) + IDEX (2, CB_andi, nemuandi) } } } diff --git a/src/isa/riscv64/exec/muldiv.h b/src/isa/riscv64/exec/muldiv.h index 93d005d4..b684597b 100644 --- a/src/isa/riscv64/exec/muldiv.h +++ b/src/isa/riscv64/exec/muldiv.h @@ -29,7 +29,7 @@ static inline make_EHelper(mulhsu) { // = mulhu(a, b) - (a < 0 ? b : 0) rtl_sari(s, s0, dsrc1, 63); - rtl_and(s, s0, dsrc2, s0); // s0 = (id_src1->val < 0 ? id_src2->val : 0) + rtl_nemuand(s, s0, dsrc2, s0); // s0 = (id_src1->val < 0 ? id_src2->val : 0) rtl_mul_hi(s, s1, dsrc1, dsrc2); rtl_sub(s, ddest, s1, s0); diff --git a/src/isa/riscv64/exec/system.h b/src/isa/riscv64/exec/system.h index d937db93..f47e5ee1 100644 --- a/src/isa/riscv64/exec/system.h +++ b/src/isa/riscv64/exec/system.h @@ -25,7 +25,7 @@ static inline make_EHelper(csrrs) { if (!csr_check(s, addr)) return; csr_read(s0, addr); if (id_src1->reg != 0) { - rtl_or(s, s1, s0, dsrc1); + rtl_nemuor(s, s1, s0, dsrc1); csr_write(addr, s1); } rtl_mv(s, ddest, s0); @@ -38,8 +38,8 @@ static inline make_EHelper(csrrc) { if (!csr_check(s, addr)) return; csr_read(s0, addr); if (id_src1->reg != 0) { - rtl_not(s, s1, dsrc1); - rtl_and(s, s1, s0, s1); + rtl_nemunot(s, s1, dsrc1); + rtl_nemuand(s, s1, s0, s1); csr_write(addr, s1); } rtl_mv(s, ddest, s0); @@ -63,7 +63,7 @@ static inline make_EHelper(csrrsi) { if (!csr_check(s, addr)) return; csr_read(s0, addr); if (id_src1->reg != 0) { - rtl_ori(s, s1, s0, id_src1->imm); + rtl_nemuori(s, s1, s0, id_src1->imm); csr_write(addr, s1); } rtl_mv(s, ddest, s0); @@ -76,7 +76,7 @@ static inline make_EHelper(csrrci) { if (!csr_check(s, addr)) return; csr_read(s0, addr); if (id_src1->reg != 0) { - rtl_andi(s, s1, s0, ~id_src1->imm); + rtl_nemuandi(s, s1, s0, ~id_src1->imm); csr_write(addr, s1); } rtl_mv(s, ddest, s0); -- GitLab