aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
diff options
context:
space:
mode:
authorJozef Kolek <jozef.kolek@imgtec.com>2015-01-28 17:27:26 +0000
committerJozef Kolek <jozef.kolek@imgtec.com>2015-01-28 17:27:26 +0000
commite10a02ecf02d1f25643b9a16ef839c3ed699d07b (patch)
tree81a1aae721528b83d44911c3f96db6bc21c682ec /llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
parentfdbc5adbb60845f632131b9bbda155c97dc07f3a (diff)
downloadllvm-e10a02ecf02d1f25643b9a16ef839c3ed699d07b.zip
llvm-e10a02ecf02d1f25643b9a16ef839c3ed699d07b.tar.gz
llvm-e10a02ecf02d1f25643b9a16ef839c3ed699d07b.tar.bz2
[mips][microMIPS] Implement LWGP instruction
Differential Revision: http://reviews.llvm.org/D6650 llvm-svn: 227325
Diffstat (limited to 'llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp')
-rw-r--r--llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
index 1744b51..29998e9 100644
--- a/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
+++ b/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
@@ -289,6 +289,11 @@ static DecodeStatus DecodeMemMMSPImm5Lsl2(MCInst &Inst,
uint64_t Address,
const void *Decoder);
+static DecodeStatus DecodeMemMMGPImm7Lsl2(MCInst &Inst,
+ unsigned Insn,
+ uint64_t Address,
+ const void *Decoder);
+
static DecodeStatus DecodeMemMMImm12(MCInst &Inst,
unsigned Insn,
uint64_t Address,
@@ -1261,6 +1266,22 @@ static DecodeStatus DecodeMemMMSPImm5Lsl2(MCInst &Inst,
return MCDisassembler::Success;
}
+static DecodeStatus DecodeMemMMGPImm7Lsl2(MCInst &Inst,
+ unsigned Insn,
+ uint64_t Address,
+ const void *Decoder) {
+ unsigned Offset = Insn & 0x7F;
+ unsigned Reg = fieldFromInstruction(Insn, 7, 3);
+
+ Reg = getReg(Decoder, Mips::GPR32RegClassID, Reg);
+
+ Inst.addOperand(MCOperand::CreateReg(Reg));
+ Inst.addOperand(MCOperand::CreateReg(Mips::GP));
+ Inst.addOperand(MCOperand::CreateImm(Offset << 2));
+
+ return MCDisassembler::Success;
+}
+
static DecodeStatus DecodeMemMMImm12(MCInst &Inst,
unsigned Insn,
uint64_t Address,