Browse Source

Don't print vregs if no V exts

pull/1715/head
abejgonzalez 2 years ago
parent
commit
3947fa0e1c
  1. 63
      riscv/interactive.cc

63
riscv/interactive.cc

@ -580,39 +580,44 @@ void sim_t::interactive_vreg(const std::string& cmd, const std::vector<std::stri
}
}
std::ostream out(sout_.rdbuf());
// Show all the regs!
processor_t *p = get_core(args[0]);
const int vlen = (int)(p->VU.get_vlen()) >> 3;
const int elen = (int)(p->VU.get_elen()) >> 3;
const int num_elem = vlen/elen;
std::ostream out(sout_.rdbuf());
out << std::dec << "VLEN=" << (vlen << 3) << " bits; ELEN=" << (elen << 3) << " bits" << std::endl;
for (int r = rstart; r < rend; ++r) {
out << std::setfill (' ') << std::left << std::setw(4) << vr_name[r] << std::right << ": ";
for (int e = num_elem-1; e >= 0; --e) {
uint64_t val;
switch (elen) {
case 8:
val = p->VU.elt<uint64_t>(r, e);
out << std::dec << "[" << e << "]: 0x" << std::hex << std::setfill ('0') << std::setw(16) << val << " ";
break;
case 4:
val = p->VU.elt<uint32_t>(r, e);
out << std::dec << "[" << e << "]: 0x" << std::hex << std::setfill ('0') << std::setw(8) << (uint32_t)val << " ";
break;
case 2:
val = p->VU.elt<uint16_t>(r, e);
out << std::dec << "[" << e << "]: 0x" << std::hex << std::setfill ('0') << std::setw(8) << (uint16_t)val << " ";
break;
case 1:
val = p->VU.elt<uint8_t>(r, e);
out << std::dec << "[" << e << "]: 0x" << std::hex << std::setfill ('0') << std::setw(8) << (int)(uint8_t)val << " ";
break;
if (p->any_vector_extensions()) {
const int vlen = (int)(p->VU.get_vlen()) >> 3;
const int elen = (int)(p->VU.get_elen()) >> 3;
const int num_elem = vlen/elen;
out << std::dec << "VLEN=" << (vlen << 3) << " bits; ELEN=" << (elen << 3) << " bits" << std::endl;
for (int r = rstart; r < rend; ++r) {
out << std::setfill (' ') << std::left << std::setw(4) << vr_name[r] << std::right << ": ";
for (int e = num_elem-1; e >= 0; --e) {
uint64_t val;
switch (elen) {
case 8:
val = p->VU.elt<uint64_t>(r, e);
out << std::dec << "[" << e << "]: 0x" << std::hex << std::setfill ('0') << std::setw(16) << val << " ";
break;
case 4:
val = p->VU.elt<uint32_t>(r, e);
out << std::dec << "[" << e << "]: 0x" << std::hex << std::setfill ('0') << std::setw(8) << (uint32_t)val << " ";
break;
case 2:
val = p->VU.elt<uint16_t>(r, e);
out << std::dec << "[" << e << "]: 0x" << std::hex << std::setfill ('0') << std::setw(8) << (uint16_t)val << " ";
break;
case 1:
val = p->VU.elt<uint8_t>(r, e);
out << std::dec << "[" << e << "]: 0x" << std::hex << std::setfill ('0') << std::setw(8) << (int)(uint8_t)val << " ";
break;
}
}
out << std::endl;
}
out << std::endl;
} else {
out << "Processor selected does not support any vector extensions" << std::endl;
}
}

Loading…
Cancel
Save