diff options
author | Chih-Min Chao <chihmin.chao@sifive.com> | 2020-05-27 00:48:10 -0700 |
---|---|---|
committer | Chih-Min Chao <chihmin.chao@sifive.com> | 2020-05-28 22:36:14 -0700 |
commit | fb84a685a89603eb91bd36261addc0fd13d2b576 (patch) | |
tree | 8bdfc2b3d7a4dcc69bbf746ed230c7f31e7b7c68 /spike_main | |
parent | d4f881d0ecce46c6f011603aeb74ad3a72b28fbf (diff) | |
download | spike-fb84a685a89603eb91bd36261addc0fd13d2b576.zip spike-fb84a685a89603eb91bd36261addc0fd13d2b576.tar.gz spike-fb84a685a89603eb91bd36261addc0fd13d2b576.tar.bz2 |
rvv: extenc VU structure to support 0.9 new fields
Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
Diffstat (limited to 'spike_main')
-rw-r--r-- | spike_main/disasm.cc | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/spike_main/disasm.cc b/spike_main/disasm.cc index d52cc91..4ec3d4b 100644 --- a/spike_main/disasm.cc +++ b/spike_main/disasm.cc @@ -1,6 +1,7 @@ // See LICENSE for license details. #include "disasm.h" +#include <cassert> #include <string> #include <vector> #include <cstdarg> @@ -319,9 +320,29 @@ struct : public arg_t { std::stringstream s; int sew = insn.v_sew(); int lmul = insn.v_lmul(); + auto vta = insn.v_vta() == 1 ? "ta" : "tu"; + auto vma = insn.v_vma() == 1 ? "ma" : "mu"; s << "e" << sew; - if (lmul != 1) - s << ",m" << lmul; + if(insn.v_frac_lmul()) { + std::string lmul_str = ""; + switch(lmul){ + case 3: + lmul_str = "f2"; + break; + case 2: + lmul_str = "f4"; + break; + case 1: + lmul_str = "f8"; + break; + default: + assert(true && "unsupport fractional LMUL"); + } + s << ", m" << lmul_str; + } else { + s << ", m" << (1 << lmul); + } + s << ", " << vta << ", " << vma; return s.str(); } } v_vtype; |