aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/MBlaze/Disassembler
diff options
context:
space:
mode:
authorWesley Peck <peckw@wesleypeck.com>2010-11-08 19:40:01 +0000
committerWesley Peck <peckw@wesleypeck.com>2010-11-08 19:40:01 +0000
commit0a67d92938d77b6a8cde6e1676750264b274cebc (patch)
tree0c6b0c4c8679380835d14ad474b4e38c0a5c54b7 /lib/Target/MBlaze/Disassembler
parent554375b707d741c357a78650160ba5d093b4993a (diff)
downloadexternal_llvm-0a67d92938d77b6a8cde6e1676750264b274cebc.zip
external_llvm-0a67d92938d77b6a8cde6e1676750264b274cebc.tar.gz
external_llvm-0a67d92938d77b6a8cde6e1676750264b274cebc.tar.bz2
Adding working version of assembly parser for the MBlaze backend
Major cleanup of whitespace and formatting issues in MBlaze backend git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118434 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/MBlaze/Disassembler')
-rw-r--r--lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp103
1 files changed, 50 insertions, 53 deletions
diff --git a/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp b/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp
index 01a48b2..e09829c 100644
--- a/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp
+++ b/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp
@@ -56,38 +56,38 @@ static unsigned mblazeBinary2Opcode[] = {
MBlaze::SBI, MBlaze::SHI, MBlaze::SWI, UNSUPPORTED, //3C,3D,3E,3F
};
-static unsigned getRD( uint32_t insn ) {
- return MBlazeRegisterInfo::getRegisterFromNumbering( (insn>>21)&0x1F );
+static unsigned getRD(uint32_t insn) {
+ return MBlazeRegisterInfo::getRegisterFromNumbering((insn>>21)&0x1F);
}
-static unsigned getRA( uint32_t insn ) {
- return MBlazeRegisterInfo::getRegisterFromNumbering( (insn>>16)&0x1F );
+static unsigned getRA(uint32_t insn) {
+ return MBlazeRegisterInfo::getRegisterFromNumbering((insn>>16)&0x1F);
}
-static unsigned getRB( uint32_t insn ) {
- return MBlazeRegisterInfo::getRegisterFromNumbering( (insn>>11)&0x1F );
+static unsigned getRB(uint32_t insn) {
+ return MBlazeRegisterInfo::getRegisterFromNumbering((insn>>11)&0x1F);
}
-static int64_t getRS( uint32_t insn ) {
+static int64_t getRS(uint32_t insn) {
int16_t val = (insn & 0x3FFF);
return val;
}
-static int64_t getIMM( uint32_t insn ) {
+static int64_t getIMM(uint32_t insn) {
int16_t val = (insn & 0xFFFF);
return val;
}
-static int64_t getSHT( uint32_t insn ) {
+static int64_t getSHT(uint32_t insn) {
int16_t val = (insn & 0x1F);
return val;
}
-static unsigned getFLAGS( int32_t insn ) {
+static unsigned getFLAGS(int32_t insn) {
return (insn & 0x7FF);
}
-static int64_t getFSL( uint32_t insn ) {
+static int64_t getFSL(uint32_t insn) {
int16_t val = (insn & 0xF);
return val;
}
@@ -412,7 +412,7 @@ static unsigned decodeRTSD(uint32_t insn) {
}
}
-static unsigned getOPCODE( uint32_t insn ) {
+static unsigned getOPCODE(uint32_t insn) {
unsigned opcode = mblazeBinary2Opcode[ (insn>>26)&0x3F ];
switch (opcode) {
case MBlaze::MUL: return decodeMUL(insn);
@@ -465,102 +465,99 @@ bool MBlazeDisassembler::getInstruction(MCInst &instr,
// Get the MCInst opcode from the binary instruction and make sure
// that it is a valid instruction.
- unsigned opcode = getOPCODE( insn );
- if( opcode == UNSUPPORTED )
+ unsigned opcode = getOPCODE(insn);
+ if (opcode == UNSUPPORTED)
return false;
instr.setOpcode(opcode);
uint64_t tsFlags = MBlazeInsts[opcode].TSFlags;
- switch( (tsFlags & MBlazeII::FormMask) ) {
- default:
- errs() << "Opcode: " << MBlazeInsts[opcode].Name << "\n";
- errs() << "Flags: "; errs().write_hex( tsFlags ); errs() << "\n";
- return false;
+ switch ((tsFlags & MBlazeII::FormMask)) {
+ default: llvm_unreachable("unknown instruction encoding");
case MBlazeII::FRRR:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
- instr.addOperand( MCOperand::CreateReg( getRB(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
+ instr.addOperand(MCOperand::CreateReg(getRB(insn)));
break;
case MBlazeII::FRRI:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getIMM(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
+ instr.addOperand(MCOperand::CreateImm(getIMM(insn)));
break;
case MBlazeII::FCRR:
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
- instr.addOperand( MCOperand::CreateReg( getRB(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
+ instr.addOperand(MCOperand::CreateReg(getRB(insn)));
break;
case MBlazeII::FCRI:
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getIMM(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
+ instr.addOperand(MCOperand::CreateImm(getIMM(insn)));
break;
case MBlazeII::FRCR:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateReg( getRB(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateReg(getRB(insn)));
break;
case MBlazeII::FRCI:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getIMM(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateImm(getIMM(insn)));
break;
case MBlazeII::FCCR:
- instr.addOperand( MCOperand::CreateReg( getRB(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRB(insn)));
break;
case MBlazeII::FCCI:
- instr.addOperand( MCOperand::CreateImm( getIMM(insn) ) );
+ instr.addOperand(MCOperand::CreateImm(getIMM(insn)));
break;
case MBlazeII::FRRCI:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getSHT(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
+ instr.addOperand(MCOperand::CreateImm(getSHT(insn)));
break;
case MBlazeII::FRRC:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
break;
case MBlazeII::FRCX:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getFSL(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateImm(getFSL(insn)));
break;
case MBlazeII::FRCS:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getRS(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateImm(getRS(insn)));
break;
case MBlazeII::FCRCS:
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getRS(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
+ instr.addOperand(MCOperand::CreateImm(getRS(insn)));
break;
case MBlazeII::FCRCX:
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getFSL(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
+ instr.addOperand(MCOperand::CreateImm(getFSL(insn)));
break;
case MBlazeII::FCX:
- instr.addOperand( MCOperand::CreateImm( getFSL(insn) ) );
+ instr.addOperand(MCOperand::CreateImm(getFSL(insn)));
break;
case MBlazeII::FCR:
- instr.addOperand( MCOperand::CreateReg( getRB(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRB(insn)));
break;
case MBlazeII::FRIR:
- instr.addOperand( MCOperand::CreateReg( getRD(insn) ) );
- instr.addOperand( MCOperand::CreateImm( getIMM(insn) ) );
- instr.addOperand( MCOperand::CreateReg( getRA(insn) ) );
+ instr.addOperand(MCOperand::CreateReg(getRD(insn)));
+ instr.addOperand(MCOperand::CreateImm(getIMM(insn)));
+ instr.addOperand(MCOperand::CreateReg(getRA(insn)));
break;
}