@@ -580,39 +580,44 @@ void sim_t::interactive_vreg(const std::string& cmd, const std::vector<std::stri
580580 }
581581 }
582582
583+ std::ostream out (sout_.rdbuf ());
584+
583585 // Show all the regs!
584586 processor_t *p = get_core (args[0 ]);
585- const int vlen = (int )(p->VU .get_vlen ()) >> 3 ;
586- const int elen = (int )(p->VU .get_elen ()) >> 3 ;
587- const int num_elem = vlen/elen;
588-
589- std::ostream out (sout_.rdbuf ());
590- out << std::dec << " VLEN=" << (vlen << 3 ) << " bits; ELEN=" << (elen << 3 ) << " bits" << std::endl;
591-
592- for (int r = rstart; r < rend; ++r) {
593- out << std::setfill (' ' ) << std::left << std::setw (4 ) << vr_name[r] << std::right << " : " ;
594- for (int e = num_elem-1 ; e >= 0 ; --e) {
595- uint64_t val;
596- switch (elen) {
597- case 8 :
598- val = p->VU .elt <uint64_t >(r, e);
599- out << std::dec << " [" << e << " ]: 0x" << std::hex << std::setfill (' 0' ) << std::setw (16 ) << val << " " ;
600- break ;
601- case 4 :
602- val = p->VU .elt <uint32_t >(r, e);
603- out << std::dec << " [" << e << " ]: 0x" << std::hex << std::setfill (' 0' ) << std::setw (8 ) << (uint32_t )val << " " ;
604- break ;
605- case 2 :
606- val = p->VU .elt <uint16_t >(r, e);
607- out << std::dec << " [" << e << " ]: 0x" << std::hex << std::setfill (' 0' ) << std::setw (8 ) << (uint16_t )val << " " ;
608- break ;
609- case 1 :
610- val = p->VU .elt <uint8_t >(r, e);
611- out << std::dec << " [" << e << " ]: 0x" << std::hex << std::setfill (' 0' ) << std::setw (8 ) << (int )(uint8_t )val << " " ;
612- break ;
587+ if (p->any_vector_extensions ()) {
588+ const int vlen = (int )(p->VU .get_vlen ()) >> 3 ;
589+ const int elen = (int )(p->VU .get_elen ()) >> 3 ;
590+ const int num_elem = vlen/elen;
591+
592+ out << std::dec << " VLEN=" << (vlen << 3 ) << " bits; ELEN=" << (elen << 3 ) << " bits" << std::endl;
593+
594+ for (int r = rstart; r < rend; ++r) {
595+ out << std::setfill (' ' ) << std::left << std::setw (4 ) << vr_name[r] << std::right << " : " ;
596+ for (int e = num_elem-1 ; e >= 0 ; --e) {
597+ uint64_t val;
598+ switch (elen) {
599+ case 8 :
600+ val = p->VU .elt <uint64_t >(r, e);
601+ out << std::dec << " [" << e << " ]: 0x" << std::hex << std::setfill (' 0' ) << std::setw (16 ) << val << " " ;
602+ break ;
603+ case 4 :
604+ val = p->VU .elt <uint32_t >(r, e);
605+ out << std::dec << " [" << e << " ]: 0x" << std::hex << std::setfill (' 0' ) << std::setw (8 ) << (uint32_t )val << " " ;
606+ break ;
607+ case 2 :
608+ val = p->VU .elt <uint16_t >(r, e);
609+ out << std::dec << " [" << e << " ]: 0x" << std::hex << std::setfill (' 0' ) << std::setw (8 ) << (uint16_t )val << " " ;
610+ break ;
611+ case 1 :
612+ val = p->VU .elt <uint8_t >(r, e);
613+ out << std::dec << " [" << e << " ]: 0x" << std::hex << std::setfill (' 0' ) << std::setw (8 ) << (int )(uint8_t )val << " " ;
614+ break ;
615+ }
613616 }
617+ out << std::endl;
614618 }
615- out << std::endl;
619+ } else {
620+ out << " Processor selected does not support any vector extensions" << std::endl;
616621 }
617622}
618623
0 commit comments