Browse Source

Merge pull request #586 from chihminchao/rvv-fix-2020-10-26

Rvv fix 2020 10 26
pull/588/head
Andrew Waterman 6 years ago
committed by GitHub
parent
commit
1d30acb2d4
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 27
      riscv/decode.h
  2. 2
      riscv/execute.cc

27
riscv/decode.h

@ -487,19 +487,22 @@ static inline bool is_aligned(const unsigned val, const unsigned pos)
#define VI_CHECK_LD_INDEX(elt_width) \
VI_CHECK_ST_INDEX(elt_width); \
if (elt_width > P.VU.vsew) { \
if (insn.rd() != insn.rs2()) \
require_noover(insn.rd(), P.VU.vflmul, insn.rs2(), vemul); \
} else if (elt_width < P.VU.vsew) { \
if (vemul < 1) {\
require_noover(insn.rd(), P.VU.vflmul, insn.rs2(), vemul); \
} else {\
require_noover_widen(insn.rd(), P.VU.vflmul, insn.rs2(), vemul); \
for (reg_t idx = 0; idx < nf; ++idx) { \
reg_t flmul = P.VU.vflmul < 1 ? 1 : P.VU.vflmul; \
reg_t seg_vd = insn.rd() + flmul * idx; \
if (elt_width > P.VU.vsew) { \
if (seg_vd != insn.rs2()) \
require_noover(seg_vd, P.VU.vflmul, insn.rs2(), vemul); \
} else if (elt_width < P.VU.vsew) { \
if (vemul < 1) {\
require_noover(seg_vd, P.VU.vflmul, insn.rs2(), vemul); \
} else {\
require_noover_widen(seg_vd, P.VU.vflmul, insn.rs2(), vemul); \
} \
} \
if (nf >= 2) { \
require_noover(seg_vd, P.VU.vflmul, insn.rs2(), vemul); \
} \
} \
if (insn.v_nf() > 0) {\
require_noover(insn.rd(), P.VU.vflmul, insn.rs2(), vemul); \
require_noover(vd, nf, insn.rs2(), 1); \
} \
require_vm; \

2
riscv/execute.cc

@ -76,7 +76,7 @@ static void commit_log_print_insn(processor_t *p, reg_t pc, insn_t insn)
int flen = p->get_state()->last_inst_flen;
// print core id on all lines so it is easy to grep
fprintf(log_file, "core%4" PRId64 ": ", p->get_id());
fprintf(log_file, "core%4" PRId32 ": ", p->get_id());
fprintf(log_file, "%1d ", priv);
commit_log_print_value(log_file, xlen, pc);

Loading…
Cancel
Save