Browse Source

Remove Zbpbo, Zpn, and Zpsfoperand from disassembler

pull/1660/head
Andrew Waterman 2 years ago
parent
commit
3a4f1702ed
  1. 319
      disasm/disasm.cc

319
disasm/disasm.cc

@ -1852,31 +1852,6 @@ void disassembler_t::add_instructions(const isa_parser_t* isa)
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);
#define DEFINE_PI6TYPE(code) add_pitype6_insn(this, #code, match_##code, mask_##code);
#define DISASM_8_AND_16_RINSN(code) \
DEFINE_RTYPE(code##8); \
DEFINE_RTYPE(code##16);
#define DISASM_8_AND_16_RINSN_ROUND(code) \
DEFINE_RTYPE(code##8_u); \
DEFINE_RTYPE(code##16_u);
#define DISASM_8_AND_16_PIINSN(code) \
DEFINE_PI3TYPE(code##8); \
DEFINE_PI4TYPE(code##16);
#define DISASM_8_AND_16_PIINSN_ROUND(code) \
DEFINE_PI3TYPE(code##8_u); \
DEFINE_PI4TYPE(code##16_u);
#define DISASM_RINSN_AND_ROUND(code) \
DEFINE_RTYPE(code); \
DEFINE_RTYPE(code##_u); \
if (isa->extension_enabled(EXT_ZMMUL)) {
DEFINE_RTYPE(mul);
@ -1886,300 +1861,6 @@ void disassembler_t::add_instructions(const isa_parser_t* isa)
DEFINE_RTYPE(mulw);
}
if (isa->extension_enabled(EXT_ZBPBO)) {
DEFINE_RTYPE(min);
DEFINE_RTYPE(max);
DEFINE_R3TYPE(cmix);
DEFINE_RTYPE(pack);
DEFINE_RTYPE(packu);
add_insn(new disasm_insn_t("rev", match_grevi | ((isa->get_max_xlen() - 1) << imm_shift), mask_grevi | mask_imm, {&xrd, &xrs1}));
add_insn(new disasm_insn_t("rev8.h", match_grevi | (0x8 << imm_shift), mask_grevi | mask_imm, {&xrd, &xrs1})); // swap16
if (isa->get_max_xlen() == 32) {
DEFINE_R1TYPE(clz);
DEFINE_R3TYPE(fsr);
DEFINE_R3TYPE(fsri);
} else {
DEFINE_R3TYPE(fsrw);
}
}
if (isa->extension_enabled(EXT_ZPSFOPERAND)) {
DEFINE_RTYPE(smal)
DEFINE_RTYPE(radd64);
DEFINE_RTYPE(uradd64);
DEFINE_RTYPE(kadd64);
DEFINE_RTYPE(ukadd64);
DEFINE_RTYPE(rsub64);
DEFINE_RTYPE(ursub64);
DEFINE_RTYPE(ksub64);
DEFINE_RTYPE(uksub64);
DEFINE_RTYPE(smar64);
DEFINE_RTYPE(smsr64);
DEFINE_RTYPE(umar64);
DEFINE_RTYPE(umsr64);
DEFINE_RTYPE(kmar64);
DEFINE_RTYPE(kmsr64);
DEFINE_RTYPE(ukmar64);
DEFINE_RTYPE(ukmsr64);
DEFINE_RTYPE(smalbb);
DEFINE_RTYPE(smalbt);
DEFINE_RTYPE(smaltt);
DEFINE_RTYPE(smalda);
DEFINE_RTYPE(smalxda);
DEFINE_RTYPE(smalds);
DEFINE_RTYPE(smaldrs);
DEFINE_RTYPE(smalxds);
DEFINE_RTYPE(smslda);
DEFINE_RTYPE(smslxda);
DEFINE_RTYPE(mulr64);
DEFINE_RTYPE(mulsr64);
if (isa->get_max_xlen() == 32) {
DEFINE_RTYPE(add64);
DEFINE_RTYPE(sub64);
}
}
if (isa->extension_enabled(EXT_ZPN)) {
DISASM_8_AND_16_RINSN(add);
DISASM_8_AND_16_RINSN(radd);
DISASM_8_AND_16_RINSN(uradd);
DISASM_8_AND_16_RINSN(kadd);
DISASM_8_AND_16_RINSN(ukadd);
DISASM_8_AND_16_RINSN(sub);
DISASM_8_AND_16_RINSN(rsub);
DISASM_8_AND_16_RINSN(ursub);
DISASM_8_AND_16_RINSN(ksub);
DISASM_8_AND_16_RINSN(uksub);
DEFINE_RTYPE(cras16);
DEFINE_RTYPE(rcras16);
DEFINE_RTYPE(urcras16);
DEFINE_RTYPE(kcras16);
DEFINE_RTYPE(ukcras16);
DEFINE_RTYPE(crsa16);
DEFINE_RTYPE(rcrsa16);
DEFINE_RTYPE(urcrsa16);
DEFINE_RTYPE(kcrsa16);
DEFINE_RTYPE(ukcrsa16);
DEFINE_RTYPE(stas16);
DEFINE_RTYPE(rstas16);
DEFINE_RTYPE(urstas16);
DEFINE_RTYPE(kstas16);
DEFINE_RTYPE(ukstas16);
DEFINE_RTYPE(stsa16);
DEFINE_RTYPE(rstsa16);
DEFINE_RTYPE(urstsa16);
DEFINE_RTYPE(kstsa16);
DEFINE_RTYPE(ukstsa16);
DISASM_8_AND_16_RINSN(sra);
DISASM_8_AND_16_RINSN(srl);
DISASM_8_AND_16_RINSN(sll);
DISASM_8_AND_16_RINSN(ksll);
DISASM_8_AND_16_RINSN(kslra);
DISASM_8_AND_16_PIINSN(srai);
DISASM_8_AND_16_PIINSN(srli);
DISASM_8_AND_16_PIINSN(slli);
DISASM_8_AND_16_PIINSN(kslli);
DISASM_8_AND_16_RINSN_ROUND(sra);
DISASM_8_AND_16_RINSN_ROUND(srl);
DISASM_8_AND_16_RINSN_ROUND(kslra);
DISASM_8_AND_16_PIINSN_ROUND(srai);
DISASM_8_AND_16_PIINSN_ROUND(srli);
DISASM_8_AND_16_RINSN(cmpeq);
DISASM_8_AND_16_RINSN(scmplt);
DISASM_8_AND_16_RINSN(scmple);
DISASM_8_AND_16_RINSN(ucmplt);
DISASM_8_AND_16_RINSN(ucmple);
DISASM_8_AND_16_RINSN(smul);
DISASM_8_AND_16_RINSN(smulx);
DISASM_8_AND_16_RINSN(umul);
DISASM_8_AND_16_RINSN(umulx);
DISASM_8_AND_16_RINSN(khm);
DISASM_8_AND_16_RINSN(khmx);
DISASM_8_AND_16_RINSN(smin);
DISASM_8_AND_16_RINSN(umin);
DISASM_8_AND_16_RINSN(smax);
DISASM_8_AND_16_RINSN(umax);
DISASM_8_AND_16_PIINSN(sclip);
DISASM_8_AND_16_PIINSN(uclip);
DEFINE_R1TYPE(kabs16);
DEFINE_R1TYPE(clrs16);
DEFINE_R1TYPE(clz16);
DEFINE_R1TYPE(kabs8);
DEFINE_R1TYPE(clrs8);
DEFINE_R1TYPE(clz8);
DEFINE_R1TYPE(sunpkd810);
DEFINE_R1TYPE(sunpkd820);
DEFINE_R1TYPE(sunpkd830);
DEFINE_R1TYPE(sunpkd831);
DEFINE_R1TYPE(sunpkd832);
DEFINE_R1TYPE(zunpkd810);
DEFINE_R1TYPE(zunpkd820);
DEFINE_R1TYPE(zunpkd830);
DEFINE_R1TYPE(zunpkd831);
DEFINE_R1TYPE(zunpkd832);
DEFINE_RTYPE(pkbb16);
DEFINE_RTYPE(pkbt16);
DEFINE_RTYPE(pktb16);
DEFINE_RTYPE(pktt16);
DISASM_RINSN_AND_ROUND(smmul);
DISASM_RINSN_AND_ROUND(kmmac);
DISASM_RINSN_AND_ROUND(kmmsb);
DISASM_RINSN_AND_ROUND(kwmmul);
DISASM_RINSN_AND_ROUND(smmwb);
DISASM_RINSN_AND_ROUND(smmwt);
DISASM_RINSN_AND_ROUND(kmmawb);
DISASM_RINSN_AND_ROUND(kmmawt);
DISASM_RINSN_AND_ROUND(kmmwb2);
DISASM_RINSN_AND_ROUND(kmmwt2);
DISASM_RINSN_AND_ROUND(kmmawb2);
DISASM_RINSN_AND_ROUND(kmmawt2);
DEFINE_RTYPE(smbb16)
DEFINE_RTYPE(smbt16)
DEFINE_RTYPE(smtt16)
DEFINE_RTYPE(kmda)
DEFINE_RTYPE(kmxda)
DEFINE_RTYPE(smds)
DEFINE_RTYPE(smdrs)
DEFINE_RTYPE(smxds)
DEFINE_RTYPE(kmabb)
DEFINE_RTYPE(kmabt)
DEFINE_RTYPE(kmatt)
DEFINE_RTYPE(kmada)
DEFINE_RTYPE(kmaxda)
DEFINE_RTYPE(kmads)
DEFINE_RTYPE(kmadrs)
DEFINE_RTYPE(kmaxds)
DEFINE_RTYPE(kmsda)
DEFINE_RTYPE(kmsxda)
DEFINE_RTYPE(sclip32)
DEFINE_RTYPE(uclip32)
DEFINE_R1TYPE(clrs32);
DEFINE_R1TYPE(clz32);
DEFINE_RTYPE(pbsad);
DEFINE_RTYPE(pbsada);
DEFINE_RTYPE(smaqa);
DEFINE_RTYPE(umaqa);
DEFINE_RTYPE(smaqa_su);
DEFINE_RTYPE(kaddh);
DEFINE_RTYPE(ksubh);
DEFINE_RTYPE(khmbb);
DEFINE_RTYPE(khmbt);
DEFINE_RTYPE(khmtt);
DEFINE_RTYPE(ukaddh);
DEFINE_RTYPE(uksubh);
DEFINE_RTYPE(kaddw);
DEFINE_RTYPE(ukaddw);
DEFINE_RTYPE(ksubw);
DEFINE_RTYPE(uksubw);
DEFINE_RTYPE(kdmbb);
DEFINE_RTYPE(kdmbt);
DEFINE_RTYPE(kdmtt);
DEFINE_RTYPE(kslraw);
DEFINE_RTYPE(kslraw_u);
DEFINE_RTYPE(ksllw);
DEFINE_PI5TYPE(kslliw);
DEFINE_RTYPE(kdmabb);
DEFINE_RTYPE(kdmabt);
DEFINE_RTYPE(kdmatt);
DEFINE_RTYPE(kabsw);
DEFINE_RTYPE(raddw);
DEFINE_RTYPE(uraddw);
DEFINE_RTYPE(rsubw);
DEFINE_RTYPE(ursubw);
DEFINE_RTYPE(msubr32);
DEFINE_RTYPE(ave);
DEFINE_RTYPE(sra_u);
DEFINE_PI6TYPE(srai_u);
DEFINE_PI3TYPE(insb);
DEFINE_RTYPE(maddr32)
if (isa->get_max_xlen() == 64) {
DEFINE_RTYPE(add32);
DEFINE_RTYPE(radd32);
DEFINE_RTYPE(uradd32);
DEFINE_RTYPE(kadd32);
DEFINE_RTYPE(ukadd32);
DEFINE_RTYPE(sub32);
DEFINE_RTYPE(rsub32);
DEFINE_RTYPE(ursub32);
DEFINE_RTYPE(ksub32);
DEFINE_RTYPE(uksub32);
DEFINE_RTYPE(cras32);
DEFINE_RTYPE(rcras32);
DEFINE_RTYPE(urcras32);
DEFINE_RTYPE(kcras32);
DEFINE_RTYPE(ukcras32);
DEFINE_RTYPE(crsa32);
DEFINE_RTYPE(rcrsa32);
DEFINE_RTYPE(urcrsa32);
DEFINE_RTYPE(kcrsa32);
DEFINE_RTYPE(ukcrsa32);
DEFINE_RTYPE(stas32);
DEFINE_RTYPE(rstas32);
DEFINE_RTYPE(urstas32);
DEFINE_RTYPE(kstas32);
DEFINE_RTYPE(ukstas32);
DEFINE_RTYPE(stsa32);
DEFINE_RTYPE(rstsa32);
DEFINE_RTYPE(urstsa32);
DEFINE_RTYPE(kstsa32);
DEFINE_RTYPE(ukstsa32);
DEFINE_RTYPE(sra32);
DEFINE_PI5TYPE(srai32);
DEFINE_RTYPE(sra32_u);
DEFINE_PI5TYPE(srai32_u);
DEFINE_RTYPE(srl32);
DEFINE_PI5TYPE(srli32);
DEFINE_RTYPE(srl32_u);
DEFINE_PI5TYPE(srli32_u);
DEFINE_RTYPE(sll32);
DEFINE_PI5TYPE(slli32);
DEFINE_RTYPE(ksll32);
DEFINE_PI5TYPE(kslli32);
DEFINE_RTYPE(kslra32);
DEFINE_RTYPE(kslra32_u);
DEFINE_RTYPE(smin32);
DEFINE_RTYPE(umin32);
DEFINE_RTYPE(smax32);
DEFINE_RTYPE(umax32);
DEFINE_R1TYPE(kabs32);
DEFINE_RTYPE(khmbb16);
DEFINE_RTYPE(khmbt16);
DEFINE_RTYPE(khmtt16);
DEFINE_RTYPE(kdmbb16);
DEFINE_RTYPE(kdmbt16);
DEFINE_RTYPE(kdmtt16);
DEFINE_RTYPE(kdmabb16);
DEFINE_RTYPE(kdmabt16);
DEFINE_RTYPE(kdmatt16);
DEFINE_RTYPE(smbt32);
DEFINE_RTYPE(smtt32);
DEFINE_RTYPE(kmabb32);
DEFINE_RTYPE(kmabt32);
DEFINE_RTYPE(kmatt32);
DEFINE_RTYPE(kmda32);
DEFINE_RTYPE(kmxda32);
DEFINE_RTYPE(kmaxda32);
DEFINE_RTYPE(kmads32);
DEFINE_RTYPE(kmadrs32);
DEFINE_RTYPE(kmaxds32);
DEFINE_RTYPE(kmsda32);
DEFINE_RTYPE(kmsxda32);
DEFINE_RTYPE(smds32);
DEFINE_RTYPE(smdrs32);
DEFINE_RTYPE(smxds32);
DEFINE_PI5TYPE(sraiw_u);
DEFINE_RTYPE(pkbt32);
DEFINE_RTYPE(pktb32);
}
}
if (isa->extension_enabled(EXT_ZICBOM)) {
DISASM_INSN("cbo.clean", cbo_clean, 0, {&base_only_address});
DISASM_INSN("cbo.flush", cbo_flush, 0, {&base_only_address});

Loading…
Cancel
Save