Changes in directory llvm/lib/Target/X86:
X86ATTAsmPrinter.cpp updated: 1.34 -> 1.35 X86ATTAsmPrinter.h updated: 1.10 -> 1.11 X86IntelAsmPrinter.cpp updated: 1.27 -> 1.28 X86IntelAsmPrinter.h updated: 1.11 -> 1.12 --- Log message: Bare-bone X86 inline asm printer support. --- Diffs of the changes: (+66 -2) X86ATTAsmPrinter.cpp | 28 ++++++++++++++++++++++++++++ X86ATTAsmPrinter.h | 6 +++++- X86IntelAsmPrinter.cpp | 28 ++++++++++++++++++++++++++++ X86IntelAsmPrinter.h | 6 +++++- 4 files changed, 66 insertions(+), 2 deletions(-) Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.34 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.35 --- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.34 Sat Apr 22 13:53:45 2006 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp Fri Apr 28 16:19:05 2006 @@ -264,6 +264,34 @@ O << "\"L" << getFunctionNumber() << "$pb\":"; } +/// PrintAsmOperand - Print out an operand for an inline asm expression. +/// +bool X86ATTAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, + unsigned AsmVariant, + const char *ExtraCode) { + // Does this asm operand have a single letter operand modifier? + if (ExtraCode && ExtraCode[0]) { + if (ExtraCode[1] != 0) return true; // Unknown modifier. + + switch (ExtraCode[0]) { + default: return true; // Unknown modifier. + } + } + + printOperand(MI, OpNo); + return false; +} + +bool X86ATTAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, + unsigned OpNo, + unsigned AsmVariant, + const char *ExtraCode) { + if (ExtraCode && ExtraCode[0]) + return true; // Unknown modifier. + printMemReference(MI, OpNo); + return false; +} + /// printMachineInstruction -- Print out a single X86 LLVM instruction /// MI in Intel syntax to the current output stream. /// Index: llvm/lib/Target/X86/X86ATTAsmPrinter.h diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.10 llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.11 --- llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.10 Mon Mar 13 17:20:37 2006 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.h Fri Apr 28 16:19:05 2006 @@ -61,7 +61,11 @@ printMemReference(MI, OpNo); } - void printMachineInstruction(const MachineInstr *MI); + bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, + unsigned AsmVariant, const char *ExtraCode); + bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, + unsigned AsmVariant, const char *ExtraCode); + void printMachineInstruction(const MachineInstr *MI); void printSSECC(const MachineInstr *MI, unsigned Op); void printMemReference(const MachineInstr *MI, unsigned Op); void printPICLabel(const MachineInstr *MI, unsigned Op); Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.27 llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.28 --- llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.27 Sat Apr 22 13:53:45 2006 +++ llvm/lib/Target/X86/X86IntelAsmPrinter.cpp Fri Apr 28 16:19:05 2006 @@ -242,6 +242,34 @@ O << "\"L" << getFunctionNumber() << "$pb\":"; } +/// PrintAsmOperand - Print out an operand for an inline asm expression. +/// +bool X86IntelAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, + unsigned AsmVariant, + const char *ExtraCode) { + // Does this asm operand have a single letter operand modifier? + if (ExtraCode && ExtraCode[0]) { + if (ExtraCode[1] != 0) return true; // Unknown modifier. + + switch (ExtraCode[0]) { + default: return true; // Unknown modifier. + } + } + + printOperand(MI, OpNo); + return false; +} + +bool X86IntelAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI, + unsigned OpNo, + unsigned AsmVariant, + const char *ExtraCode) { + if (ExtraCode && ExtraCode[0]) + return true; // Unknown modifier. + printMemReference(MI, OpNo); + return false; +} + /// printMachineInstruction -- Print out a single X86 LLVM instruction /// MI in Intel syntax to the current output stream. /// Index: llvm/lib/Target/X86/X86IntelAsmPrinter.h diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.11 llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.12 --- llvm/lib/Target/X86/X86IntelAsmPrinter.h:1.11 Mon Mar 13 17:20:37 2006 +++ llvm/lib/Target/X86/X86IntelAsmPrinter.h Fri Apr 28 16:19:05 2006 @@ -80,7 +80,11 @@ printMemReference(MI, OpNo); } - void printMachineInstruction(const MachineInstr *MI); + bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, + unsigned AsmVariant, const char *ExtraCode); + bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, + unsigned AsmVariant, const char *ExtraCode); + void printMachineInstruction(const MachineInstr *MI); void printOp(const MachineOperand &MO, const char *Modifier = 0); void printSSECC(const MachineInstr *MI, unsigned Op); void printMemReference(const MachineInstr *MI, unsigned Op); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits