stub out some hacky code for wiring up the new asmprinter interfaces
authorChris Lattner <sabre@nondot.org>
Fri, 19 Jun 2009 23:59:57 +0000 (23:59 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 19 Jun 2009 23:59:57 +0000 (23:59 +0000)
on X86.  Not useful yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73799 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineInstr.h
include/llvm/MC/MCInst.h
lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp

index ab749287b9865746bf5850825823ceedfba18e5c..2b2f24a88371ea293bafa1a52d2f40defa52115a 100644 (file)
@@ -104,7 +104,7 @@ public:
 
   /// getDebugLoc - Returns the debug location id of this MachineInstr.
   ///
-  const DebugLoc getDebugLoc() const { return debugLoc; }
+  DebugLoc getDebugLoc() const { return debugLoc; }
   
   /// getDesc - Returns the target instruction descriptor of this
   /// MachineInstr.
index 4ed9dc7e3fea4c3fd16bd1707b6e6a5d1d4521df..4f7e6cf0b493f95b28e7d6e30e558a797a640407 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/Support/DataTypes.h"
+#include "llvm/Support/DebugLoc.h"
 
 namespace llvm {
 
@@ -84,7 +85,10 @@ class MCInst {
 public:
   MCInst() : Opcode(~0U) {}
   
+  unsigned getOpcode() const { return Opcode; }
+  DebugLoc getDebugLoc() const { return DebugLoc(); }
   
+  const MCOperand &getOperand(unsigned i) const { return Operands[i]; }
   
 };
 
index f5f90aa4c0ecf627932abb4564abe610de81d5f7..7e48855e08d2974ea4e73259aae44297703dc02f 100644 (file)
@@ -769,21 +769,17 @@ void X86ATTAsmPrinter::printMachineInstruction(const MachineInstr *MI) {
   ++EmittedInsts;
 
   if (NewAsmPrinter) {
+    O << "NEW: ";
     MCInst TmpInst;
     // FIXME: Convert TmpInst.
-    printInstruction(TmpInst);
+    printInstruction(&TmpInst);
+    O << "OLD: ";
   }
   
   // Call the autogenerated instruction printer routines.
   printInstruction(MI);
 }
 
-/// doInitialization
-bool X86ATTAsmPrinter::doInitialization(Module &M) {
-  return AsmPrinter::doInitialization(M);
-}
-
-
 void X86ATTAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
   const TargetData *TD = TM.getTargetData();
 
index 9dd2938e835c7d5aaec49f04cc99c7d58a9dbe6b..31c7a1f044e1fc51fbbbfcee480db237696cf18c 100644 (file)
@@ -55,7 +55,6 @@ class VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter {
     AsmPrinter::getAnalysisUsage(AU);
   }
 
-  bool doInitialization(Module &M);
   bool doFinalization(Module &M);
 
   /// printInstruction - This method is automatically generated by tablegen
@@ -64,8 +63,57 @@ class VISIBILITY_HIDDEN X86ATTAsmPrinter : public AsmPrinter {
   /// returns false.
   bool printInstruction(const MachineInstr *MI);
   
-  bool printInstruction(const MCInst &TmpInst);
+  
+  // New MCInst printing stuff.
+  bool printInstruction(const MCInst *MI);
+
+  void printOperand(const MCInst *MI, unsigned OpNo,
+                    const char *Modifier = 0, bool NotRIPRel = false);
+  void printMemReference(const MCInst *MI, unsigned Op,
+                         const char *Modifier=NULL, bool NotRIPRel = false);
+  void printLeaMemReference(const MCInst *MI, unsigned Op,
+                            const char *Modifier=NULL, bool NotRIPRel = false);
+  void printSSECC(const MCInst *MI, unsigned Op);
+  void printPICLabel(const MCInst *MI, unsigned Op);
 
+  void printi8mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printi16mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printi32mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printi64mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printi128mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printf32mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printf64mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printf80mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printf128mem(const MCInst *MI, unsigned OpNo) {
+    printMemReference(MI, OpNo);
+  }
+  void printlea32mem(const MCInst *MI, unsigned OpNo) {
+    printLeaMemReference(MI, OpNo);
+  }
+  void printlea64mem(const MCInst *MI, unsigned OpNo) {
+    printLeaMemReference(MI, OpNo);
+  }
+  void printlea64_32mem(const MCInst *MI, unsigned OpNo) {
+    printLeaMemReference(MI, OpNo, "subreg64");
+  }
+  
+  
 
   // These methods are used by the tablegen'erated instruction printer.
   void printOperand(const MachineInstr *MI, unsigned OpNo,
index 3b78d7dedffeb307c7621b30b648d343f632c711..934e45aa8157e0dcefb7a10131852e7528a4d470 100644 (file)
 #define DEBUG_TYPE "asm-printer"
 #include "llvm/MC/MCInst.h"
 #include "X86ATTAsmPrinter.h"
+#include "llvm/Support/raw_ostream.h"
 using namespace llvm;
 
-bool X86ATTAsmPrinter::printInstruction(const MCInst &TmpInst) {
-  return true;
-}
\ No newline at end of file
+// Include the auto-generated portion of the assembly writer.
+#define MachineInstr MCInst
+#define NO_ASM_WRITER_BOILERPLATE
+#include "X86GenAsmWriter.inc"
+#undef MachineInstr
+
+void X86ATTAsmPrinter::printSSECC(const MCInst *MI, unsigned Op) {
+  unsigned char value = MI->getOperand(Op).getImm();
+  assert(value <= 7 && "Invalid ssecc argument!");
+  switch (value) {
+    case 0: O << "eq"; break;
+    case 1: O << "lt"; break;
+    case 2: O << "le"; break;
+    case 3: O << "unord"; break;
+    case 4: O << "neq"; break;
+    case 5: O << "nlt"; break;
+    case 6: O << "nle"; break;
+    case 7: O << "ord"; break;
+  }
+}
+
+
+void X86ATTAsmPrinter::printPICLabel(const MCInst *MI, unsigned Op) {
+  assert(0 &&
+         "This is only used for MOVPC32r, should lower before asm printing!");
+}
+
+
+void X86ATTAsmPrinter::printOperand(const MCInst *MI, unsigned OpNo,
+                                    const char *Modifier, bool NotRIPRel) {
+}
+
+void X86ATTAsmPrinter::printLeaMemReference(const MCInst *MI, unsigned Op,
+                                            const char *Modifier,
+                                            bool NotRIPRel) {
+}
+
+void X86ATTAsmPrinter::printMemReference(const MCInst *MI, unsigned Op,
+                                         const char *Modifier, bool NotRIPRel){
+}