aboutsummaryrefslogtreecommitdiff
path: root/disasm
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2023-06-06 15:14:02 -0700
committerGitHub <noreply@github.com>2023-06-06 15:14:02 -0700
commit97fbfec1c21895ccf0b82f777fba684457fde8fe (patch)
treeab8bd46acfd5bf688546fd5b9bd3a8c761f8cabb /disasm
parent58d2dbe17da09d515db50c20d923ab9d0f81de49 (diff)
parent8e800d05a4e4322048c942a9925684d6ce4f9de4 (diff)
downloadriscv-isa-sim-97fbfec1c21895ccf0b82f777fba684457fde8fe.zip
riscv-isa-sim-97fbfec1c21895ccf0b82f777fba684457fde8fe.tar.gz
riscv-isa-sim-97fbfec1c21895ccf0b82f777fba684457fde8fe.tar.bz2
Merge pull request #1321 from plctlab/plct-bf16-dev
Add support for BF16 extensions
Diffstat (limited to 'disasm')
-rw-r--r--disasm/disasm.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/disasm/disasm.cc b/disasm/disasm.cc
index 2fce1a1..25de783 100644
--- a/disasm/disasm.cc
+++ b/disasm/disasm.cc
@@ -1196,14 +1196,17 @@ void disassembler_t::add_instructions(const isa_parser_t* isa)
}
if (isa->extension_enabled(EXT_ZFHMIN)) {
- DEFINE_FLOAD(flh)
- DEFINE_FSTORE(fsh)
DEFINE_FR1TYPE(fcvt_h_s);
DEFINE_FR1TYPE(fcvt_h_d);
DEFINE_FR1TYPE(fcvt_h_q);
DEFINE_FR1TYPE(fcvt_s_h);
DEFINE_FR1TYPE(fcvt_d_h);
DEFINE_FR1TYPE(fcvt_q_h);
+ }
+
+ if (isa->extension_enabled(EXT_INTERNAL_ZFH_MOVE)) {
+ DEFINE_FLOAD(flh)
+ DEFINE_FSTORE(fsh)
DEFINE_XFTYPE(fmv_h_x);
DEFINE_FXTYPE(fmv_x_h);
}
@@ -1251,6 +1254,11 @@ void disassembler_t::add_instructions(const isa_parser_t* isa)
DEFINE_FX2TYPE(fle_q);
}
+ if (isa->extension_enabled(EXT_ZFBFMIN)) {
+ DEFINE_FR1TYPE(fcvt_bf16_s);
+ DEFINE_FR1TYPE(fcvt_s_bf16);
+ }
+
// ext-h
if (isa->extension_enabled('H')) {
DEFINE_XLOAD_BASE(hlv_b)
@@ -1799,6 +1807,16 @@ void disassembler_t::add_instructions(const isa_parser_t* isa)
}
}
+ if (isa->extension_enabled(EXT_ZVFBFMIN)) {
+ DEFINE_VECTOR_V(vfncvtbf16_f_f_w);
+ DEFINE_VECTOR_V(vfwcvtbf16_f_f_v);
+ }
+
+ if (isa->extension_enabled(EXT_ZVFBFWMA)) {
+ DEFINE_VECTOR_VV(vfwmaccbf16_vv);
+ DEFINE_VECTOR_VF(vfwmaccbf16_vf);
+ }
+
#define DEFINE_PI3TYPE(code) add_pitype3_insn(this, #code, match_##code, mask_##code);
#define DEFINE_PI4TYPE(code) add_pitype4_insn(this, #code, match_##code, mask_##code);
#define DEFINE_PI5TYPE(code) add_pitype5_insn(this, #code, match_##code, mask_##code);