aboutsummaryrefslogtreecommitdiff
path: root/riscv/disasm.h
diff options
context:
space:
mode:
authorChih-Min Chao <chihmin.chao@sifive.com>2019-06-09 21:01:58 -0700
committerChih-Min Chao <chihmin.chao@sifive.com>2019-06-18 08:56:11 -0700
commit77adcb1ec93903f7c1d79e2c6a63870b8c8e83d3 (patch)
treed40daa339ba223a806abd31ce47c0bdd81d0c6a9 /riscv/disasm.h
parent833b965679f4502f83c66353bfc07a092cfac9f6 (diff)
downloadspike-77adcb1ec93903f7c1d79e2c6a63870b8c8e83d3.zip
spike-77adcb1ec93903f7c1d79e2c6a63870b8c8e83d3.tar.gz
spike-77adcb1ec93903f7c1d79e2c6a63870b8c8e83d3.tar.bz2
rvv: add simple instruction parsing tool
the tool can parse the instruction name from spike debug log to help dsp kernel designer check what instructions have been used Signed-off-by: Jerry Shih <bignose1007@gmail.com>
Diffstat (limited to 'riscv/disasm.h')
-rw-r--r--riscv/disasm.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/riscv/disasm.h b/riscv/disasm.h
index d322731..e465fca 100644
--- a/riscv/disasm.h
+++ b/riscv/disasm.h
@@ -40,6 +40,11 @@ class disasm_insn_t
return (insn.bits() & mask) == match;
}
+ const char* get_name() const
+ {
+ return name;
+ }
+
std::string to_string(insn_t insn) const
{
std::stringstream s;
@@ -83,12 +88,15 @@ class disassembler_t
public:
disassembler_t(int xlen);
~disassembler_t();
+
std::string disassemble(insn_t insn) const;
+ const disasm_insn_t* lookup(insn_t insn) const;
+
void add_insn(disasm_insn_t* insn);
+
private:
static const int HASH_SIZE = 256;
std::vector<const disasm_insn_t*> chain[HASH_SIZE+1];
- const disasm_insn_t* lookup(insn_t insn) const;
};
#endif