reg_t npc = sext_xlen(pc + insn_length(OPCODE));
insn_bits_t bits = s_insn.bits();
#ifdef SPIKE_SIMPLEV
- sv_insn_t insn(bits);
+ int vlen = 1;
+ sv_insn_t insn(bits, vlen);
#include "insns/NAME.h"
trace_opcode(p, OPCODE, s_insn);
#else
reg_t npc = sext_xlen(pc + insn_length(OPCODE));
insn_bits_t bits = s_insn.bits();
#ifdef SPIKE_SIMPLEV
- sv_insn_t insn(bits);
+ int vlen = 1;
+ sv_insn_t insn(bits, vlen);
#include "insns/NAME.h"
trace_opcode(p, OPCODE, s_insn);
#else
class sv_insn_t: public insn_t
{
public:
- sv_insn_t(insn_bits_t bits) : insn_t(bits) {}
+ sv_insn_t(insn_bits_t bits, int& v) : insn_t(bits), vlen(v) {}
uint64_t rd () { return remap(insn_t::rd()); }
uint64_t rs1() { return remap(insn_t::rs1()); }
uint64_t rs2() { return remap(insn_t::rs2()); }
uint64_t rs3() { return remap(insn_t::rs3()); }
private:
+ int &vlen;
// remaps the register through the lookup table.
// will need to take the current loop index/offset somehow
uint64_t remap(uint64_t reg) { return reg; } // TODO