Add rudimentary asmprinter support for printing inline asm operands for sparc.
authorAnton Korobeynikov <asl@math.spbu.ru>
Fri, 10 Oct 2008 10:15:03 +0000 (10:15 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Fri, 10 Oct 2008 10:15:03 +0000 (10:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57346 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Sparc/SparcAsmPrinter.cpp

index f6e3f6670f20f50dbf172183c3f9d9a7bec0a9e8..35626fdc07133e5a1635466ec2ef6b147e7829c3 100644 (file)
@@ -65,6 +65,10 @@ namespace {
     bool runOnMachineFunction(MachineFunction &F);
     bool doInitialization(Module &M);
     bool doFinalization(Module &M);
+    bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
+                       unsigned AsmVariant, const char *ExtraCode);
+    bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
+                             unsigned AsmVariant, const char *ExtraCode);
   };
 } // end of anonymous namespace
 
@@ -213,8 +217,6 @@ void SparcAsmPrinter::printCCOperand(const MachineInstr *MI, int opNum) {
   O << SPARCCondCodeToString((SPCC::CondCodes)CC);
 }
 
-
-
 bool SparcAsmPrinter::doInitialization(Module &M) {
   Mang = new Mangler(M);
   return false; // success
@@ -307,3 +309,30 @@ void SparcAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
   O << name << ":\n";
   EmitGlobalConstant(C);
 }
+
+/// PrintAsmOperand - Print out an operand for an inline asm expression.
+///
+bool SparcAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
+                                      unsigned AsmVariant,
+                                      const char *ExtraCode) {
+  if (ExtraCode && ExtraCode[0])
+    return true;  // Unknown modifier
+
+  printOperand(MI, OpNo);
+
+  return false;
+}
+
+bool SparcAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
+                                            unsigned OpNo,
+                                            unsigned AsmVariant,
+                                            const char *ExtraCode) {
+  if (ExtraCode && ExtraCode[0])
+    return true;  // Unknown modifier
+
+  O << '[';
+  printMemOperand(MI, OpNo);
+  O << ']';
+
+  return false;
+}