[llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp

Evan Cheng evan.cheng at apple.com
Wed Jan 25 18:27:54 PST 2006



Changes in directory llvm/lib/Target/X86:

X86ATTAsmPrinter.cpp updated: 1.19 -> 1.20
---
Log message:

Work around some x86 Darwin assembler bugs

---
Diffs of the changes:  (+26 -0)

 X86ATTAsmPrinter.cpp |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+)


Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.19 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.20
--- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.19	Sun Jan 22 17:37:17 2006
+++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp	Wed Jan 25 20:27:43 2006
@@ -220,6 +220,32 @@
 ///
 void X86ATTAsmPrinter::printMachineInstruction(const MachineInstr *MI) {
   ++EmittedInsts;
+  // This works around some Darwin assembler bugs.
+  if (forDarwin) {
+    switch (MI->getOpcode()) {
+    case X86::REP_MOVSB:
+      O << "rep/movsb (%esi),(%edi)\n";
+      return;
+    case X86::REP_MOVSD:
+      O << "rep/movsl (%esi),(%edi)\n";
+      return;
+    case X86::REP_MOVSW:
+      O << "rep/movsw (%esi),(%edi)\n";
+      return;
+    case X86::REP_STOSB:
+      O << "rep/stosb\n";
+      return;
+    case X86::REP_STOSD:
+      O << "rep/stosl\n";
+      return;
+    case X86::REP_STOSW:
+      O << "rep/stosw\n";
+      return;
+    default:
+      break;
+    }
+  }
+
   // Call the autogenerated instruction printer routines.
   printInstruction(MI);
 }






More information about the llvm-commits mailing list