diff options
author | Dave.Wen <dave.wen@sifive.com> | 2020-05-13 20:12:22 -0700 |
---|---|---|
committer | Dave.Wen <dave.wen@sifive.com> | 2020-05-13 20:12:22 -0700 |
commit | 6fe796c4443749169a224358c62a2068d679126d (patch) | |
tree | bc355a62e9de981cca7dfa06e71ee17573772829 /spike_main | |
parent | 170ff9c86f928479d75a08e4f72c2e7d7e5b34a0 (diff) | |
download | spike-6fe796c4443749169a224358c62a2068d679126d.zip spike-6fe796c4443749169a224358c62a2068d679126d.tar.gz spike-6fe796c4443749169a224358c62a2068d679126d.tar.bz2 |
rvv: fractional_lmul when lmul < 1
Diffstat (limited to 'spike_main')
-rw-r--r-- | spike_main/disasm.cc | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/spike_main/disasm.cc b/spike_main/disasm.cc index bae3d51..e62c985 100644 --- a/spike_main/disasm.cc +++ b/spike_main/disasm.cc @@ -1,6 +1,7 @@ // See LICENSE for license details. #include "disasm.h" +#include "assert.h" #include <string> #include <vector> #include <cstdarg> @@ -322,8 +323,27 @@ struct : public arg_t { 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 (lmul != 1) { + if(insn.v_frac_lmul()) { + std::string lmul_str = ""; + switch(lmul){ + case 2: + lmul_str = "f2"; + break; + case 4: + lmul_str = "f4"; + break; + case 8: + lmul_str = "f8"; + break; + default: + assert(true && "unsupport fractional LMUL"); + } + s << ", m" << lmul_str; + } else { + s << ", m" << lmul; + } + } s << ", " << vta << ", " << vma; return s.str(); } |