diff options
author | Chih-Min Chao <chihmin.chao@sifive.com> | 2020-03-03 20:24:49 -0800 |
---|---|---|
committer | Chih-Min Chao <chihmin.chao@sifive.com> | 2020-03-03 22:48:23 -0800 |
commit | eb6224d34a9847d3c8044464c57683efe85f5f7f (patch) | |
tree | 1bab94d0928e3905e37159a4aa4b64f9e0d57db5 /riscv/execute.cc | |
parent | 7d761774f6351aba824ab1627a32e88779ae6956 (diff) | |
download | spike-eb6224d34a9847d3c8044464c57683efe85f5f7f.zip spike-eb6224d34a9847d3c8044464c57683efe85f5f7f.tar.gz spike-eb6224d34a9847d3c8044464c57683efe85f5f7f.tar.bz2 |
commitlog: enhance vector dump
1. don't duplicate vconfig for lmul >=2 case
2. add l# to show prenset vl value
Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
Diffstat (limited to 'riscv/execute.cc')
-rw-r--r-- | riscv/execute.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/riscv/execute.cc b/riscv/execute.cc index 6eaa1ff..a030555 100644 --- a/riscv/execute.cc +++ b/riscv/execute.cc @@ -63,6 +63,7 @@ static void commit_log_print_insn(processor_t* p, reg_t pc, insn_t insn) fprintf(stderr, " ("); commit_log_print_value(insn.length() * 8, 0, insn.bits()); fprintf(stderr, ")"); + bool show_vec = false; for (auto item : reg) { if (item.first == 0) @@ -72,6 +73,7 @@ static void commit_log_print_insn(processor_t* p, reg_t pc, insn_t insn) int size; int rd = item.first >> 2; bool is_vec = false; + bool is_vreg = false; switch (item.first & 3) { case 0: size = xlen; @@ -84,6 +86,9 @@ static void commit_log_print_insn(processor_t* p, reg_t pc, insn_t insn) case 2: size = p->VU.VLEN; prefix = 'v'; + is_vreg = true; + break; + case 3: is_vec = true; break; default: @@ -91,14 +96,18 @@ static void commit_log_print_insn(processor_t* p, reg_t pc, insn_t insn) break; } - if (is_vec) - fprintf(stderr, " e%ld m%ld", p->VU.vsew, p->VU.vlmul); + if (!show_vec && (is_vreg || is_vec)) { + fprintf(stderr, " e%ld m%ld l%ld", p->VU.vsew, p->VU.vlmul, p->VU.vl); + show_vec = true; + } - fprintf(stderr, " %c%2d ", prefix, rd); - if (is_vec) + if (!is_vec) { + fprintf(stderr, " %c%2d ", prefix, rd); + if (is_vreg) commit_log_print_value(size, &p->VU.elt<uint8_t>(rd, 0)); - else + else commit_log_print_value(size, item.second.v[1], item.second.v[0]); + } } for (auto item : load) { |