diff options
author | Chih-Min Chao <chihmin.chao@sifive.com> | 2019-06-09 21:01:58 -0700 |
---|---|---|
committer | Chih-Min Chao <chihmin.chao@sifive.com> | 2019-06-18 08:56:11 -0700 |
commit | 77adcb1ec93903f7c1d79e2c6a63870b8c8e83d3 (patch) | |
tree | d40daa339ba223a806abd31ce47c0bdd81d0c6a9 /riscv/disasm.h | |
parent | 833b965679f4502f83c66353bfc07a092cfac9f6 (diff) | |
download | spike-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.h | 10 |
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 |