[llvm-commits] CVS: llvm/lib/Target/ARM/ARMAsmPrinter.cpp

Rafael Espindola rafael.espindola at gmail.com
Thu May 25 05:57:19 PDT 2006



Changes in directory llvm/lib/Target/ARM:

ARMAsmPrinter.cpp updated: 1.2 -> 1.3
---
Log message:

implement initial version of ARMAsmPrinter::printOperand


---
Diffs of the changes:  (+31 -1)

 ARMAsmPrinter.cpp |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/ARM/ARMAsmPrinter.cpp
diff -u llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.2 llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.3
--- llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.2	Mon May 22 21:48:20 2006
+++ llvm/lib/Target/ARM/ARMAsmPrinter.cpp	Thu May 25 07:57:06 2006
@@ -133,7 +133,37 @@
 }
 
 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,






More information about the llvm-commits mailing list