implement initial version of ARMAsmPrinter::printOperand
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 25 May 2006 12:57:06 +0000 (12:57 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 25 May 2006 12:57:06 +0000 (12:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28470 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMAsmPrinter.cpp

index 2e4dd17066924c2e0aba1717ecb0da0ea14b471c..0ef22be2e64d2a5209ffb05d0e16339e30032a60 100644 (file)
@@ -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,