summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
diff options
context:
space:
mode:
authorHrvoje Varga <Hrvoje.Varga@imgtec.com>2016-03-24 08:02:09 +0000
committerHrvoje Varga <Hrvoje.Varga@imgtec.com>2016-03-24 08:02:09 +0000
commit2cb74ac3c3f4bc747b697a44001c1ac7df34c960 (patch)
tree1e9d09baebe8f3c84d459aaa4516d057c4153a71 /llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
parentdbea1a1e51f0b5a2185c7393c294a460b759693d (diff)
downloadbcm5719-llvm-2cb74ac3c3f4bc747b697a44001c1ac7df34c960.tar.gz
bcm5719-llvm-2cb74ac3c3f4bc747b697a44001c1ac7df34c960.zip
[mips][microMIPS] Implement MTC*, MTHC* and DMTC* instructions
Differential Revision: http://reviews.llvm.org/D17328 llvm-svn: 264246
Diffstat (limited to 'llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp')
-rw-r--r--llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
index e2d96ff5427..8f7aeb286d2 100644
--- a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
+++ b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
@@ -918,6 +918,17 @@ DecodeStatus MipsDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
Size = 4;
return Result;
}
+
+ if (hasMips32r6()) {
+ DEBUG(dbgs() << "Trying MicroMips32r6FPU table (32-bit opcodes):\n");
+ Result = decodeInstruction(DecoderTableMicroMips32r6FPU32, Instr, Insn,
+ Address, this, STI);
+ if (Result != MCDisassembler::Fail) {
+ Size = 4;
+ return Result;
+ }
+ }
+
// This is an invalid instruction. Let the disassembler move forward by the
// minimum instruction size.
Size = 2;
OpenPOWER on IntegriCloud