diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2008-10-10 10:15:03 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2008-10-10 10:15:03 +0000 |
| commit | 3db217302150d3d7de362eb3a24607512993aee5 (patch) | |
| tree | abcaec2141af12937fd08f7f6c0721c3474d6cb3 /llvm/lib/Target/Sparc | |
| parent | 9aaaa4035e6b43b7c164d15136c3639ead237616 (diff) | |
| download | bcm5719-llvm-3db217302150d3d7de362eb3a24607512993aee5.tar.gz bcm5719-llvm-3db217302150d3d7de362eb3a24607512993aee5.zip | |
Add rudimentary asmprinter support for printing inline asm operands for sparc.
llvm-svn: 57346
Diffstat (limited to 'llvm/lib/Target/Sparc')
| -rw-r--r-- | llvm/lib/Target/Sparc/SparcAsmPrinter.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp index f6e3f6670f2..35626fdc071 100644 --- a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp +++ b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp @@ -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; +} |

