diff options
Diffstat (limited to 'llvm/lib/Target/MBlaze/AsmPrinter/MBlazeAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/MBlaze/AsmPrinter/MBlazeAsmPrinter.cpp | 127 |
1 files changed, 64 insertions, 63 deletions
diff --git a/llvm/lib/Target/MBlaze/AsmPrinter/MBlazeAsmPrinter.cpp b/llvm/lib/Target/MBlaze/AsmPrinter/MBlazeAsmPrinter.cpp index ee2c7c8e05f..eec5a61ead1 100644 --- a/llvm/lib/Target/MBlaze/AsmPrinter/MBlazeAsmPrinter.cpp +++ b/llvm/lib/Target/MBlaze/AsmPrinter/MBlazeAsmPrinter.cpp @@ -64,12 +64,12 @@ namespace { bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, unsigned AsmVariant, const char *ExtraCode); - void printOperand(const MachineInstr *MI, int opNum); - void printUnsignedImm(const MachineInstr *MI, int opNum); - void printFSLImm(const MachineInstr *MI, int opNum); - void printMemOperand(const MachineInstr *MI, int opNum, + void printOperand(const MachineInstr *MI, int opNum, raw_ostream &O); + void printUnsignedImm(const MachineInstr *MI, int opNum, raw_ostream &O); + void printFSLImm(const MachineInstr *MI, int opNum, raw_ostream &O); + void printMemOperand(const MachineInstr *MI, int opNum, raw_ostream &O, const char *Modifier = 0); - void printFCCOperand(const MachineInstr *MI, int opNum, + void printFCCOperand(const MachineInstr *MI, int opNum, raw_ostream &O, const char *Modifier = 0); void printSavedRegsBitmask(); void printHex32(unsigned int Value); @@ -77,17 +77,16 @@ namespace { const char *emitCurrentABIString(); void emitFrameDirective(); - void printInstruction(const MachineInstr *MI); // autogenerated. + void printInstruction(const MachineInstr *MI, raw_ostream &O); void EmitInstruction(const MachineInstr *MI) { - printInstruction(MI); - O << '\n'; + printInstruction(MI, O); + O << '\n'; } virtual void EmitFunctionBodyStart(); virtual void EmitFunctionBodyEnd(); static const char *getRegisterName(unsigned RegNo); virtual void EmitFunctionEntryLabel(); - void EmitStartOfAsmFile(Module &M); }; } // end of anonymous namespace @@ -212,90 +211,92 @@ PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, if (ExtraCode && ExtraCode[0]) return true; // Unknown modifier. - printOperand(MI, OpNo); + printOperand(MI, OpNo, O); return false; } -void MBlazeAsmPrinter::printOperand(const MachineInstr *MI, int opNum) { +void MBlazeAsmPrinter::printOperand(const MachineInstr *MI, int opNum, + raw_ostream &O) { const MachineOperand &MO = MI->getOperand(opNum); switch (MO.getType()) { - case MachineOperand::MO_Register: - O << getRegisterName(MO.getReg()); - break; - - case MachineOperand::MO_Immediate: - O << (int)MO.getImm(); - break; - - case MachineOperand::MO_FPImmediate: { - const ConstantFP* fp = MO.getFPImm(); - printHex32(fp->getValueAPF().bitcastToAPInt().getZExtValue()); - O << ";\t# immediate = " << *fp; - break; - } - - case MachineOperand::MO_MachineBasicBlock: - O << *MO.getMBB()->getSymbol(); - return; - - case MachineOperand::MO_GlobalAddress: - O << *Mang->getSymbol(MO.getGlobal()); - break; - - case MachineOperand::MO_ExternalSymbol: - O << *GetExternalSymbolSymbol(MO.getSymbolName()); - break; - - case MachineOperand::MO_JumpTableIndex: - O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() - << '_' << MO.getIndex(); - break; - - case MachineOperand::MO_ConstantPoolIndex: - O << MAI->getPrivateGlobalPrefix() << "CPI" - << getFunctionNumber() << "_" << MO.getIndex(); - if (MO.getOffset()) - O << "+" << MO.getOffset(); - break; - - default: - llvm_unreachable("<unknown operand type>"); + case MachineOperand::MO_Register: + O << getRegisterName(MO.getReg()); + break; + + case MachineOperand::MO_Immediate: + O << (int)MO.getImm(); + break; + + case MachineOperand::MO_FPImmediate: { + const ConstantFP* fp = MO.getFPImm(); + printHex32(fp->getValueAPF().bitcastToAPInt().getZExtValue()); + O << ";\t# immediate = " << *fp; + break; + } + + case MachineOperand::MO_MachineBasicBlock: + O << *MO.getMBB()->getSymbol(); + return; + + case MachineOperand::MO_GlobalAddress: + O << *Mang->getSymbol(MO.getGlobal()); + break; + + case MachineOperand::MO_ExternalSymbol: + O << *GetExternalSymbolSymbol(MO.getSymbolName()); + break; + + case MachineOperand::MO_JumpTableIndex: + O << MAI->getPrivateGlobalPrefix() << "JTI" << getFunctionNumber() + << '_' << MO.getIndex(); + break; + + case MachineOperand::MO_ConstantPoolIndex: + O << MAI->getPrivateGlobalPrefix() << "CPI" + << getFunctionNumber() << "_" << MO.getIndex(); + if (MO.getOffset()) + O << "+" << MO.getOffset(); + break; + + default: + llvm_unreachable("<unknown operand type>"); } } -void MBlazeAsmPrinter::printUnsignedImm(const MachineInstr *MI, int opNum) { +void MBlazeAsmPrinter::printUnsignedImm(const MachineInstr *MI, int opNum, + raw_ostream &O) { const MachineOperand &MO = MI->getOperand(opNum); if (MO.getType() == MachineOperand::MO_Immediate) O << (unsigned int)MO.getImm(); else - printOperand(MI, opNum); + printOperand(MI, opNum, O); } -void MBlazeAsmPrinter::printFSLImm(const MachineInstr *MI, int opNum) { +void MBlazeAsmPrinter::printFSLImm(const MachineInstr *MI, int opNum, + raw_ostream &O) { const MachineOperand &MO = MI->getOperand(opNum); if (MO.getType() == MachineOperand::MO_Immediate) O << "rfsl" << (unsigned int)MO.getImm(); else - printOperand(MI, opNum); + printOperand(MI, opNum, O); } void MBlazeAsmPrinter:: -printMemOperand(const MachineInstr *MI, int opNum, const char *Modifier) { - printOperand(MI, opNum+1); +printMemOperand(const MachineInstr *MI, int opNum, raw_ostream &O, + const char *Modifier) { + printOperand(MI, opNum+1, O); O << ", "; - printOperand(MI, opNum); + printOperand(MI, opNum, O); } void MBlazeAsmPrinter:: -printFCCOperand(const MachineInstr *MI, int opNum, const char *Modifier) { +printFCCOperand(const MachineInstr *MI, int opNum, raw_ostream &O, + const char *Modifier) { const MachineOperand& MO = MI->getOperand(opNum); O << MBlaze::MBlazeFCCToString((MBlaze::CondCode)MO.getImm()); } -void MBlazeAsmPrinter::EmitStartOfAsmFile(Module &M) { -} - // Force static initialization. extern "C" void LLVMInitializeMBlazeAsmPrinter() { RegisterAsmPrinter<MBlazeAsmPrinter> X(TheMBlazeTarget); |