Implement RoCC and add a dummy RoCC
[riscv-isa-sim.git] / riscv / rocc.h
1 #ifndef _RISCV_ROCC_H
2 #define _RISCV_ROCC_H
3
4 #include "extension.h"
5
6 struct rocc_insn_t
7 {
8 unsigned opcode : 7;
9 unsigned xs2 : 1;
10 unsigned xs1 : 1;
11 unsigned xd : 1;
12 unsigned funct : 7;
13 unsigned rs2 : 5;
14 unsigned rs1 : 5;
15 unsigned rd : 5;
16 };
17
18 class rocc_t : public extension_t
19 {
20 public:
21 virtual reg_t custom0(rocc_insn_t insn, reg_t xs1, reg_t xs2);
22 virtual reg_t custom1(rocc_insn_t insn, reg_t xs1, reg_t xs2);
23 virtual reg_t custom2(rocc_insn_t insn, reg_t xs1, reg_t xs2);
24 virtual reg_t custom3(rocc_insn_t insn, reg_t xs1, reg_t xs2);
25 std::vector<insn_desc_t> get_instructions();
26 };
27
28 #endif