aboutsummaryrefslogtreecommitdiff
path: root/riscv/processor.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/processor.h')
-rw-r--r--riscv/processor.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/riscv/processor.h b/riscv/processor.h
index d0c5b3f..a27ba97 100644
--- a/riscv/processor.h
+++ b/riscv/processor.h
@@ -66,6 +66,8 @@ struct opcode_map_entry_t
insn_bits_t match;
insn_bits_t mask;
insn_func_t func;
+ uint64_t reorderable : 1;
+ uint64_t count : 63;
};
// regnum, data
@@ -309,6 +311,9 @@ public:
void register_base_insn(insn_desc_t insn) {
register_insn(insn, instructions);
}
+ void register_overlapping_insn(insn_desc_t insn) {
+ register_insn(insn, overlapping_instructions);
+ }
void register_custom_insn(insn_desc_t insn) {
register_insn(insn, custom_instructions);
}
@@ -374,6 +379,7 @@ private:
std::vector<opcode_map_entry_t> opcode_map[128];
std::vector<insn_desc_t> instructions;
+ std::vector<insn_desc_t> overlapping_instructions;
std::vector<insn_desc_t> custom_instructions;
std::unordered_map<reg_t,uint64_t> pc_histogram;