summaryrefslogtreecommitdiff
path: root/lib/Target/Mips/Disassembler
diff options
context:
space:
mode:
authorJack Carter <jcarter@mips.com>2013-01-16 00:07:45 +0000
committerJack Carter <jcarter@mips.com>2013-01-16 00:07:45 +0000
commit490c7d97737ea7719efcea7321d3cfa3984b0027 (patch)
treede5ee01765ee31806f32f574d1ac4c7264a10bdf /lib/Target/Mips/Disassembler
parent72f7bfbf0e02bb11d3e7cca1f9598c5f9d9fa2ca (diff)
downloadllvm-490c7d97737ea7719efcea7321d3cfa3984b0027.tar.gz
llvm-490c7d97737ea7719efcea7321d3cfa3984b0027.tar.bz2
llvm-490c7d97737ea7719efcea7321d3cfa3984b0027.tar.xz
Akira,
Hope you are feeling better. The Mips RDHWR (Read Hardware Register) instruction was not tested for assembler or dissassembler consumption. This patch adds that functionality. Contributer: Vladimir Medic git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172579 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Mips/Disassembler')
-rw-r--r--lib/Target/Mips/Disassembler/MipsDisassembler.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/Target/Mips/Disassembler/MipsDisassembler.cpp b/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
index 1efeffd328..9560f3fc52 100644
--- a/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
+++ b/lib/Target/Mips/Disassembler/MipsDisassembler.cpp
@@ -128,6 +128,11 @@ static DecodeStatus DecodeAFGR64RegisterClass(MCInst &Inst,
uint64_t Address,
const void *Decoder);
+static DecodeStatus DecodeHWRegs64RegisterClass(MCInst &Inst,
+ unsigned Insn,
+ uint64_t Address,
+ const void *Decoder);
+
static DecodeStatus DecodeACRegsRegisterClass(MCInst &Inst,
unsigned RegNo,
uint64_t Address,
@@ -454,6 +459,17 @@ static DecodeStatus DecodeAFGR64RegisterClass(MCInst &Inst,
return MCDisassembler::Success;
}
+static DecodeStatus DecodeHWRegs64RegisterClass(MCInst &Inst,
+ unsigned RegNo,
+ uint64_t Address,
+ const void *Decoder) {
+ //Currently only hardware register 29 is supported
+ if (RegNo != 29)
+ return MCDisassembler::Fail;
+ Inst.addOperand(MCOperand::CreateReg(Mips::HWR29_64));
+ return MCDisassembler::Success;
+}
+
static DecodeStatus DecodeACRegsRegisterClass(MCInst &Inst,
unsigned RegNo,
uint64_t Address,