aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2006-05-25 12:57:06 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2006-05-25 12:57:06 +0000
commit2f99b6bd9601ae8d4fd248f9bb701283795c38a8 (patch)
tree40527112dce9b90655be0835e55331d81d7405fe
parentc3c1a86aa0fe3ccda2de383330b90b77aaccd710 (diff)
implement initial version of ARMAsmPrinter::printOperand
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28470 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/ARMAsmPrinter.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp
index 2e4dd17066..0ef22be2e6 100644
--- a/lib/Target/ARM/ARMAsmPrinter.cpp
+++ b/lib/Target/ARM/ARMAsmPrinter.cpp
@@ -133,7 +133,37 @@ bool ARMAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
}
void ARMAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
- assert(0 && "not implemented");
+ const MachineOperand &MO = MI->getOperand (opNum);
+ const MRegisterInfo &RI = *TM.getRegisterInfo();
+ switch (MO.getType()) {
+ case MachineOperand::MO_Register:
+ if (MRegisterInfo::isPhysicalRegister(MO.getReg()))
+ O << LowercaseString (RI.get(MO.getReg()).Name);
+ else
+ assert(0 && "not implemented");
+ break;
+ case MachineOperand::MO_Immediate:
+ O << "#" << (int)MO.getImmedValue();
+ break;
+ case MachineOperand::MO_MachineBasicBlock:
+ assert(0 && "not implemented");
+ abort();
+ return;
+ case MachineOperand::MO_GlobalAddress:
+ assert(0 && "not implemented");
+ abort();
+ break;
+ case MachineOperand::MO_ExternalSymbol:
+ assert(0 && "not implemented");
+ abort();
+ break;
+ case MachineOperand::MO_ConstantPoolIndex:
+ assert(0 && "not implemented");
+ abort();
+ break;
+ default:
+ O << "<unknown operand type>"; abort (); break;
+ }
}
void ARMAsmPrinter::printMemOperand(const MachineInstr *MI, int opNum,