[llvm-commits] [llvm] r73799 - in /llvm/trunk: 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

Chris Lattner sabre at nondot.org
Fri Jun 19 16:59:58 PDT 2009


Author: lattner
Date: Fri Jun 19 18:59:57 2009
New Revision: 73799

URL: http://llvm.org/viewvc/llvm-project?rev=73799&view=rev
Log:
stub out some hacky code for wiring up the new asmprinter interfaces
on X86.  Not useful yet.


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

Modified: llvm/trunk/include/llvm/CodeGen/MachineInstr.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineInstr.h?rev=73799&r1=73798&r2=73799&view=diff

==============================================================================
--- llvm/trunk/include/llvm/CodeGen/MachineInstr.h (original)
+++ llvm/trunk/include/llvm/CodeGen/MachineInstr.h Fri Jun 19 18:59:57 2009
@@ -104,7 +104,7 @@
 
   /// 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.

Modified: llvm/trunk/include/llvm/MC/MCInst.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCInst.h?rev=73799&r1=73798&r2=73799&view=diff

==============================================================================
--- llvm/trunk/include/llvm/MC/MCInst.h (original)
+++ llvm/trunk/include/llvm/MC/MCInst.h Fri Jun 19 18:59:57 2009
@@ -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 @@
 public:
   MCInst() : Opcode(~0U) {}
   
+  unsigned getOpcode() const { return Opcode; }
+  DebugLoc getDebugLoc() const { return DebugLoc(); }
   
+  const MCOperand &getOperand(unsigned i) const { return Operands[i]; }
   
 };
 

Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp?rev=73799&r1=73798&r2=73799&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp Fri Jun 19 18:59:57 2009
@@ -769,21 +769,17 @@
   ++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();
 

Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h?rev=73799&r1=73798&r2=73799&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h (original)
+++ llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h Fri Jun 19 18:59:57 2009
@@ -55,7 +55,6 @@
     AsmPrinter::getAnalysisUsage(AU);
   }
 
-  bool doInitialization(Module &M);
   bool doFinalization(Module &M);
 
   /// printInstruction - This method is automatically generated by tablegen
@@ -64,8 +63,57 @@
   /// 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,

Modified: llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp?rev=73799&r1=73798&r2=73799&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp Fri Jun 19 18:59:57 2009
@@ -15,8 +15,46 @@
 #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){
+}





More information about the llvm-commits mailing list