diff --git a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp index de742ac428de2..857cca31b62cd 100644 --- a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp +++ b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp @@ -736,14 +736,7 @@ DecodeStatus RISCVDisassembler::getInstruction16(MCInst &MI, uint64_t &Size, uint32_t Insn = support::endian::read16le(Bytes.data()); - TRY_TO_DECODE_FEATURE_ANY(XqciFeatureGroup, DecoderTableXqci16, - "Qualcomm uC 16bit"); - TRY_TO_DECODE_FEATURE( - RISCV::FeatureVendorXqccmp, DecoderTableXqccmp16, - "Xqccmp (Qualcomm 16-bit Push/Pop & Double Move Instructions)"); - TRY_TO_DECODE_AND_ADD_SP(STI.hasFeature(RISCV::FeatureVendorXwchc), - DecoderTableXwchc16, "WCH QingKe XW"); - + // Standard Extensions // DecoderTableZicfiss16 must be checked before DecoderTable16. TRY_TO_DECODE(true, DecoderTableZicfiss16, "RVZicfiss (Shadow Stack)"); TRY_TO_DECODE_AND_ADD_SP(true, DecoderTable16, @@ -754,6 +747,15 @@ DecodeStatus RISCVDisassembler::getInstruction16(MCInst &MI, uint64_t &Size, TRY_TO_DECODE(true, DecoderTableZcOverlap16, "ZcOverlap (16-bit Instructions overlapping with Zcf/Zcd)"); + // Vendor Extensions + TRY_TO_DECODE_FEATURE_ANY(XqciFeatureGroup, DecoderTableXqci16, + "Qualcomm uC 16bit"); + TRY_TO_DECODE_FEATURE( + RISCV::FeatureVendorXqccmp, DecoderTableXqccmp16, + "Xqccmp (Qualcomm 16-bit Push/Pop & Double Move Instructions)"); + TRY_TO_DECODE_AND_ADD_SP(STI.hasFeature(RISCV::FeatureVendorXwchc), + DecoderTableXwchc16, "WCH QingKe XW"); + return MCDisassembler::Fail; }