Browse Source

Use xlen, not xprlen, to refer to x-register width

pull/18/head
Andrew Waterman 12 years ago
parent
commit
e671e75198
  1. 4
      hwacha/insn_template_hwacha.cc
  2. 4
      hwacha/insn_template_hwacha_ut.cc
  3. 10
      riscv/decode.h
  4. 8
      riscv/insn_template.cc
  5. 2
      riscv/insns/add.h
  6. 2
      riscv/insns/addi.h
  7. 2
      riscv/insns/auipc.h
  8. 2
      riscv/insns/csrrc.h
  9. 2
      riscv/insns/csrrci.h
  10. 2
      riscv/insns/csrrs.h
  11. 2
      riscv/insns/csrrsi.h
  12. 2
      riscv/insns/csrrw.h
  13. 2
      riscv/insns/csrrwi.h
  14. 6
      riscv/insns/div.h
  15. 6
      riscv/insns/divu.h
  16. 2
      riscv/insns/mul.h
  17. 6
      riscv/insns/rem.h
  18. 8
      riscv/insns/remu.h
  19. 2
      riscv/insns/sll.h
  20. 2
      riscv/insns/sra.h
  21. 2
      riscv/insns/sub.h

4
hwacha/insn_template_hwacha.cc

@ -3,8 +3,8 @@
reg_t hwacha_NAME(processor_t* p, insn_t insn, reg_t pc)
{
int xprlen = 64;
reg_t npc = sext_xprlen(pc + insn_length(OPCODE));
int xlen = 64;
reg_t npc = sext_xlen(pc + insn_length(OPCODE));
hwacha_t* h = static_cast<hwacha_t*>(p->get_extension());
rocc_insn_union_t u;
u.i = insn;

4
hwacha/insn_template_hwacha_ut.cc

@ -3,8 +3,8 @@
reg_t hwacha_NAME(processor_t* p, insn_t insn, reg_t pc)
{
int xprlen = 64;
reg_t npc = sext_xprlen(pc + insn_length(OPCODE));
int xlen = 64;
reg_t npc = sext_xlen(pc + insn_length(OPCODE));
hwacha_t* h = static_cast<hwacha_t*>(p->get_extension());
do {
#include "insns_ut/NAME.h"

10
riscv/decode.h

@ -135,7 +135,7 @@ private:
if(rm > 4) throw trap_illegal_instruction(); \
rm; })
#define xpr64 (xprlen == 64)
#define xpr64 (xlen == 64)
#define require_supervisor if(unlikely(!(STATE.sr & SR_S))) throw trap_privileged_instruction()
#define require_xpr64 if(unlikely(!xpr64)) throw trap_illegal_instruction()
@ -147,16 +147,16 @@ private:
#endif
#define require_accelerator if(unlikely(!(STATE.sr & SR_EA))) throw trap_accelerator_disabled()
#define cmp_trunc(reg) (reg_t(reg) << (64-xprlen))
#define cmp_trunc(reg) (reg_t(reg) << (64-xlen))
#define set_fp_exceptions ({ STATE.fflags |= softfloat_exceptionFlags; \
softfloat_exceptionFlags = 0; })
#define sext32(x) ((sreg_t)(int32_t)(x))
#define zext32(x) ((reg_t)(uint32_t)(x))
#define sext_xprlen(x) (((sreg_t)(x) << (64-xprlen)) >> (64-xprlen))
#define zext_xprlen(x) (((reg_t)(x) << (64-xprlen)) >> (64-xprlen))
#define sext_xlen(x) (((sreg_t)(x) << (64-xlen)) >> (64-xlen))
#define zext_xlen(x) (((reg_t)(x) << (64-xlen)) >> (64-xlen))
#define set_pc(x) (npc = sext_xprlen(x))
#define set_pc(x) (npc = sext_xlen(x))
#define validate_csr(which, write) ({ \
unsigned my_priv = (STATE.sr & SR_S) ? 1 : 0; \

8
riscv/insn_template.cc

@ -4,16 +4,16 @@
reg_t rv32_NAME(processor_t* p, insn_t insn, reg_t pc)
{
int xprlen = 32;
reg_t npc = sext_xprlen(pc + insn_length(OPCODE));
int xlen = 32;
reg_t npc = sext_xlen(pc + insn_length(OPCODE));
#include "insns/NAME.h"
return npc;
}
reg_t rv64_NAME(processor_t* p, insn_t insn, reg_t pc)
{
int xprlen = 64;
reg_t npc = sext_xprlen(pc + insn_length(OPCODE));
int xlen = 64;
reg_t npc = sext_xlen(pc + insn_length(OPCODE));
#include "insns/NAME.h"
return npc;
}

2
riscv/insns/add.h

@ -1 +1 @@
WRITE_RD(sext_xprlen(RS1 + RS2));
WRITE_RD(sext_xlen(RS1 + RS2));

2
riscv/insns/addi.h

@ -1 +1 @@
WRITE_RD(sext_xprlen(RS1 + insn.i_imm()));
WRITE_RD(sext_xlen(RS1 + insn.i_imm()));

2
riscv/insns/auipc.h

@ -1 +1 @@
WRITE_RD(sext_xprlen(insn.u_imm() + pc));
WRITE_RD(sext_xlen(insn.u_imm() + pc));

2
riscv/insns/csrrc.h

@ -1,4 +1,4 @@
int csr = validate_csr(insn.csr(), true);
reg_t old = p->get_pcr(csr);
p->set_pcr(csr, old & ~RS1);
WRITE_RD(sext_xprlen(old));
WRITE_RD(sext_xlen(old));

2
riscv/insns/csrrci.h

@ -1,4 +1,4 @@
int csr = validate_csr(insn.csr(), true);
reg_t old = p->get_pcr(csr);
p->set_pcr(csr, old & ~(reg_t)insn.rs1());
WRITE_RD(sext_xprlen(old));
WRITE_RD(sext_xlen(old));

2
riscv/insns/csrrs.h

@ -1,4 +1,4 @@
int csr = validate_csr(insn.csr(), insn.rs1() != 0);
reg_t old = p->get_pcr(csr);
p->set_pcr(csr, old | RS1);
WRITE_RD(sext_xprlen(old));
WRITE_RD(sext_xlen(old));

2
riscv/insns/csrrsi.h

@ -1,4 +1,4 @@
int csr = validate_csr(insn.csr(), true);
reg_t old = p->get_pcr(csr);
p->set_pcr(csr, old | insn.rs1());
WRITE_RD(sext_xprlen(old));
WRITE_RD(sext_xlen(old));

2
riscv/insns/csrrw.h

@ -1,4 +1,4 @@
int csr = validate_csr(insn.csr(), true);
reg_t old = p->get_pcr(csr);
p->set_pcr(csr, RS1);
WRITE_RD(sext_xprlen(old));
WRITE_RD(sext_xlen(old));

2
riscv/insns/csrrwi.h

@ -1,4 +1,4 @@
int csr = validate_csr(insn.csr(), true);
reg_t old = p->get_pcr(csr);
p->set_pcr(csr, insn.rs1());
WRITE_RD(sext_xprlen(old));
WRITE_RD(sext_xlen(old));

6
riscv/insns/div.h

@ -1,8 +1,8 @@
sreg_t lhs = sext_xprlen(RS1);
sreg_t rhs = sext_xprlen(RS2);
sreg_t lhs = sext_xlen(RS1);
sreg_t rhs = sext_xlen(RS2);
if(rhs == 0)
WRITE_RD(UINT64_MAX);
else if(lhs == INT64_MIN && rhs == -1)
WRITE_RD(lhs);
else
WRITE_RD(sext_xprlen(lhs / rhs));
WRITE_RD(sext_xlen(lhs / rhs));

6
riscv/insns/divu.h

@ -1,6 +1,6 @@
reg_t lhs = zext_xprlen(RS1);
reg_t rhs = zext_xprlen(RS2);
reg_t lhs = zext_xlen(RS1);
reg_t rhs = zext_xlen(RS2);
if(rhs == 0)
WRITE_RD(UINT64_MAX);
else
WRITE_RD(sext_xprlen(lhs / rhs));
WRITE_RD(sext_xlen(lhs / rhs));

2
riscv/insns/mul.h

@ -1 +1 @@
WRITE_RD(sext_xprlen(RS1 * RS2));
WRITE_RD(sext_xlen(RS1 * RS2));

6
riscv/insns/rem.h

@ -1,8 +1,8 @@
sreg_t lhs = sext_xprlen(RS1);
sreg_t rhs = sext_xprlen(RS2);
sreg_t lhs = sext_xlen(RS1);
sreg_t rhs = sext_xlen(RS2);
if(rhs == 0)
WRITE_RD(lhs);
else if(lhs == INT64_MIN && rhs == -1)
WRITE_RD(0);
else
WRITE_RD(sext_xprlen(lhs % rhs));
WRITE_RD(sext_xlen(lhs % rhs));

8
riscv/insns/remu.h

@ -1,6 +1,6 @@
reg_t lhs = zext_xprlen(RS1);
reg_t rhs = zext_xprlen(RS2);
reg_t lhs = zext_xlen(RS1);
reg_t rhs = zext_xlen(RS2);
if(rhs == 0)
WRITE_RD(sext_xprlen(RS1));
WRITE_RD(sext_xlen(RS1));
else
WRITE_RD(sext_xprlen(lhs % rhs));
WRITE_RD(sext_xlen(lhs % rhs));

2
riscv/insns/sll.h

@ -1 +1 @@
WRITE_RD(sext_xprlen(RS1 << (RS2 & (xprlen-1))));
WRITE_RD(sext_xlen(RS1 << (RS2 & (xlen-1))));

2
riscv/insns/sra.h

@ -1 +1 @@
WRITE_RD(sext_xprlen(sext_xprlen(RS1) >> (RS2 & (xprlen-1))));
WRITE_RD(sext_xlen(sext_xlen(RS1) >> (RS2 & (xlen-1))));

2
riscv/insns/sub.h

@ -1 +1 @@
WRITE_RD(sext_xprlen(RS1 - RS2));
WRITE_RD(sext_xlen(RS1 - RS2));

Loading…
Cancel
Save