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
This commit is contained in:
Wesley Peck
2010-12-20 21:18:04 +00:00
parent d149186e15
commit d66a32c35f
3 changed files with 89 additions and 10 deletions

View File

@ -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: