diff options
Diffstat (limited to 'llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp')
-rw-r--r-- | llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp index 8f7aeb2..81c1868 100644 --- a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp +++ b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp @@ -44,6 +44,7 @@ public: bool hasMips32r6() const { return STI.getFeatureBits()[Mips::FeatureMips32r6]; } + bool isFP64() const { return STI.getFeatureBits()[Mips::FeatureFP64Bit]; } bool isGP64() const { return STI.getFeatureBits()[Mips::FeatureGP64Bit]; } @@ -919,9 +920,9 @@ DecodeStatus MipsDisassembler::getInstruction(MCInst &Instr, uint64_t &Size, return Result; } - if (hasMips32r6()) { - DEBUG(dbgs() << "Trying MicroMips32r6FPU table (32-bit opcodes):\n"); - Result = decodeInstruction(DecoderTableMicroMips32r6FPU32, Instr, Insn, + if (hasMips32r6() && isFP64()) { + DEBUG(dbgs() << "Trying MicroMips32r6FP64 table (32-bit opcodes):\n"); + Result = decodeInstruction(DecoderTableMicroMips32r6FP6432, Instr, Insn, Address, this, STI); if (Result != MCDisassembler::Fail) { Size = 4; |