diff options
author | Wesley Peck <peckw@wesleypeck.com> | 2010-12-20 21:18:04 +0000 |
---|---|---|
committer | Wesley Peck <peckw@wesleypeck.com> | 2010-12-20 21:18:04 +0000 |
commit | d66a32c35f06067a2c361e6b92ba86a09ec5cdc6 (patch) | |
tree | d99e4ad63af14ed35f8cd51921c33bdb776821e2 /lib/Target/MBlaze | |
parent | d149186e156fdd44e3cca988949cf3e5e6940863 (diff) | |
download | llvm-d66a32c35f06067a2c361e6b92ba86a09ec5cdc6.tar.gz llvm-d66a32c35f06067a2c361e6b92ba86a09ec5cdc6.tar.bz2 llvm-d66a32c35f06067a2c361e6b92ba86a09ec5cdc6.tar.xz |
Teach the MBlaze disassembler to disassemble special purpose registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122269 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/MBlaze')
-rw-r--r-- | lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp | 7 | ||||
-rw-r--r-- | lib/Target/MBlaze/MBlazeInstrInfo.td | 12 |
2 files changed, 11 insertions, 8 deletions
diff --git a/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp b/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp index b2a2474422..3379ac2169 100644 --- a/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp +++ b/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp @@ -69,8 +69,7 @@ static unsigned getRB(uint32_t insn) { } static int64_t getRS(uint32_t insn) { - int16_t val = (insn & 0x3FFF); - return val; + return MBlazeRegisterInfo::getSpecialRegisterFromNumbering(insn&0x3FFF); } static int64_t getIMM(uint32_t insn) { @@ -606,12 +605,12 @@ bool MBlazeDisassembler::getInstruction(MCInst &instr, case MBlazeII::FRCS: instr.addOperand(MCOperand::CreateReg(getRD(insn))); - instr.addOperand(MCOperand::CreateImm(getRS(insn))); + instr.addOperand(MCOperand::CreateReg(getRS(insn))); break; case MBlazeII::FCRCS: + instr.addOperand(MCOperand::CreateReg(getRS(insn))); instr.addOperand(MCOperand::CreateReg(getRA(insn))); - instr.addOperand(MCOperand::CreateImm(getRS(insn))); break; case MBlazeII::FCRCX: diff --git a/lib/Target/MBlaze/MBlazeInstrInfo.td b/lib/Target/MBlaze/MBlazeInstrInfo.td index 186ede5feb..3de608ceff 100644 --- a/lib/Target/MBlaze/MBlazeInstrInfo.td +++ b/lib/Target/MBlaze/MBlazeInstrInfo.td @@ -599,11 +599,15 @@ let isCodeGenOnly=1 in { //===----------------------------------------------------------------------===// // Misc. instructions //===----------------------------------------------------------------------===// -def MFS : SPC<0x25, 0x2, (outs GPR:$dst), (ins SPR:$src), - "mfs $dst, $src", [], IIAlu>; +let Form=FRCS in { + def MFS : SPC<0x25, 0x2, (outs GPR:$dst), (ins SPR:$src), + "mfs $dst, $src", [], IIAlu>; +} -def MTS : SPC<0x25, 0x3, (outs SPR:$dst), (ins GPR:$src), - "mts $dst, $src", [], IIAlu>; +let Form=FCRCS in { + def MTS : SPC<0x25, 0x3, (outs SPR:$dst), (ins GPR:$src), + "mts $dst, $src", [], IIAlu>; +} def MSRSET : MSR<0x25, 0x20, (outs GPR:$dst), (ins uimm15:$set), "msrset $dst, $set", [], IIAlu>; |