revamp hwacha; now runs in physical mode
[riscv-isa-sim.git] / hwacha / hwacha.cc
1 #include "hwacha.h"
2
3 void ct_state_t::reset()
4 {
5 vl = 0;
6 maxvl = 32;
7 nxpr = 32;
8 nfpr = 32;
9
10 vf_pc = -1;
11 }
12
13 void ut_state_t::reset()
14 {
15 run = false;
16 XPR.reset();
17 FPR.reset();
18 }
19
20 hwacha_t::hwacha_t()
21 {
22 ct_state.reset();
23 for (int i=0; i<max_uts; i++)
24 ut_state[i].reset();
25 }
26
27 std::vector<insn_desc_t> hwacha_t::get_instructions()
28 {
29 std::vector<insn_desc_t> insns;
30 #define DECLARE_INSN(name, match, mask) \
31 extern reg_t hwacha_##name(processor_t*, insn_t, reg_t); \
32 insns.push_back((insn_desc_t){match, mask, &::illegal_instruction, hwacha_##name});
33 #include "opcodes_hwacha.h"
34 #undef DECLARE_INSN
35 return insns;
36 }
37
38 bool hwacha_t::vf_active()
39 {
40 for (int i=0; i<get_ct_state()->vl; i++) {
41 if (get_ut_state(i)->run)
42 return true;
43 }
44
45 return false;
46 }