mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
sink handling of target-independent machine instrs (other
than DEBUG_VALUE :( ) into the target indep AsmPrinter.cpp file. This allows elimination of the NO_ASM_WRITER_BOILERPLATE hack among other things. llvm-svn: 95177
This commit is contained in:
parent
2b798aafd0
commit
cd07a3a0b7
@ -346,8 +346,25 @@ void AsmPrinter::EmitFunctionBody() {
|
||||
// FIXME: Clean up processDebugLoc.
|
||||
processDebugLoc(II, true);
|
||||
|
||||
EmitInstruction(II);
|
||||
|
||||
switch (II->getOpcode()) {
|
||||
case TargetInstrInfo::DBG_LABEL:
|
||||
case TargetInstrInfo::EH_LABEL:
|
||||
case TargetInstrInfo::GC_LABEL:
|
||||
printLabel(II);
|
||||
break;
|
||||
case TargetInstrInfo::INLINEASM:
|
||||
printInlineAsm(II);
|
||||
break;
|
||||
case TargetInstrInfo::IMPLICIT_DEF:
|
||||
printImplicitDef(II);
|
||||
break;
|
||||
case TargetInstrInfo::KILL:
|
||||
printKill(II);
|
||||
break;
|
||||
default:
|
||||
EmitInstruction(II);
|
||||
break;
|
||||
}
|
||||
if (VerboseAsm)
|
||||
EmitComments(*II);
|
||||
O << '\n';
|
||||
|
@ -1154,20 +1154,6 @@ void ARMAsmPrinter::printInstructionThroughMCStreamer(const MachineInstr *MI) {
|
||||
case ARM::t2MOVi32imm:
|
||||
assert(0 && "Should be lowered by thumb2it pass");
|
||||
default: break;
|
||||
case TargetInstrInfo::DBG_LABEL:
|
||||
case TargetInstrInfo::EH_LABEL:
|
||||
case TargetInstrInfo::GC_LABEL:
|
||||
printLabel(MI);
|
||||
return;
|
||||
case TargetInstrInfo::KILL:
|
||||
printKill(MI);
|
||||
return;
|
||||
case TargetInstrInfo::INLINEASM:
|
||||
printInlineAsm(MI);
|
||||
return;
|
||||
case TargetInstrInfo::IMPLICIT_DEF:
|
||||
printImplicitDef(MI);
|
||||
return;
|
||||
case ARM::PICADD: { // FIXME: Remove asm string from td file.
|
||||
// This is a pseudo op for a label + instruction sequence, which looks like:
|
||||
// LPC0:
|
||||
|
@ -24,7 +24,6 @@ using namespace llvm;
|
||||
// Include the auto-generated portion of the assembly writer.
|
||||
#define MachineInstr MCInst
|
||||
#define ARMAsmPrinter ARMInstPrinter // FIXME: REMOVE.
|
||||
#define NO_ASM_WRITER_BOILERPLATE
|
||||
#include "ARMGenAsmWriter.inc"
|
||||
#undef MachineInstr
|
||||
#undef ARMAsmPrinter
|
||||
|
@ -181,27 +181,8 @@ bool MSP430AsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
|
||||
void MSP430AsmPrinter::EmitInstruction(const MachineInstr *MI) {
|
||||
MSP430MCInstLower MCInstLowering(OutContext, *Mang, *this);
|
||||
|
||||
switch (MI->getOpcode()) {
|
||||
case TargetInstrInfo::DBG_LABEL:
|
||||
case TargetInstrInfo::EH_LABEL:
|
||||
case TargetInstrInfo::GC_LABEL:
|
||||
printLabel(MI);
|
||||
return;
|
||||
case TargetInstrInfo::KILL:
|
||||
printKill(MI);
|
||||
return;
|
||||
case TargetInstrInfo::INLINEASM:
|
||||
printInlineAsm(MI);
|
||||
return;
|
||||
case TargetInstrInfo::IMPLICIT_DEF:
|
||||
printImplicitDef(MI);
|
||||
return;
|
||||
default: break;
|
||||
}
|
||||
|
||||
MCInst TmpInst;
|
||||
MCInstLowering.Lower(MI, TmpInst);
|
||||
|
||||
printMCInst(&TmpInst);
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,6 @@ using namespace llvm;
|
||||
|
||||
// Include the auto-generated portion of the assembly writer.
|
||||
#define MachineInstr MCInst
|
||||
#define NO_ASM_WRITER_BOILERPLATE
|
||||
#include "MSP430GenAsmWriter.inc"
|
||||
#undef MachineInstr
|
||||
|
||||
|
@ -24,7 +24,6 @@ using namespace llvm;
|
||||
|
||||
// Include the auto-generated portion of the assembly writer.
|
||||
#define MachineInstr MCInst
|
||||
#define NO_ASM_WRITER_BOILERPLATE
|
||||
#include "X86GenAsmWriter.inc"
|
||||
#undef MachineInstr
|
||||
|
||||
|
@ -24,7 +24,6 @@ using namespace llvm;
|
||||
|
||||
// Include the auto-generated portion of the assembly writer.
|
||||
#define MachineInstr MCInst
|
||||
#define NO_ASM_WRITER_BOILERPLATE
|
||||
#include "X86GenAsmWriter1.inc"
|
||||
#undef MachineInstr
|
||||
|
||||
|
@ -411,11 +411,6 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
|
||||
void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) {
|
||||
X86MCInstLower MCInstLowering(OutContext, Mang, *this);
|
||||
switch (MI->getOpcode()) {
|
||||
case TargetInstrInfo::DBG_LABEL:
|
||||
case TargetInstrInfo::EH_LABEL:
|
||||
case TargetInstrInfo::GC_LABEL:
|
||||
printLabel(MI);
|
||||
return;
|
||||
case TargetInstrInfo::DEBUG_VALUE: {
|
||||
// FIXME: if this is implemented for another target before it goes
|
||||
// away completely, the common part should be moved into AsmPrinter.
|
||||
@ -455,15 +450,6 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) {
|
||||
printOperand(MI, NOps-2);
|
||||
return;
|
||||
}
|
||||
case TargetInstrInfo::INLINEASM:
|
||||
printInlineAsm(MI);
|
||||
return;
|
||||
case TargetInstrInfo::IMPLICIT_DEF:
|
||||
printImplicitDef(MI);
|
||||
return;
|
||||
case TargetInstrInfo::KILL:
|
||||
printKill(MI);
|
||||
return;
|
||||
case X86::MOVPC32r: {
|
||||
MCInst TmpInst;
|
||||
// This is a pseudo op for a two instruction sequence with a label, which
|
||||
|
@ -692,24 +692,6 @@ void AsmWriterEmitter::EmitPrintInstruction(raw_ostream &O) {
|
||||
StringTable.EmitString(O);
|
||||
O << ";\n\n";
|
||||
|
||||
O << "\n#ifndef NO_ASM_WRITER_BOILERPLATE\n";
|
||||
|
||||
O << " if (MI->getOpcode() == TargetInstrInfo::INLINEASM) {\n"
|
||||
<< " printInlineAsm(MI);\n"
|
||||
<< " return;\n"
|
||||
<< " } else if (MI->isLabel()) {\n"
|
||||
<< " printLabel(MI);\n"
|
||||
<< " return;\n"
|
||||
<< " } else if (MI->getOpcode() == TargetInstrInfo::IMPLICIT_DEF) {\n"
|
||||
<< " printImplicitDef(MI);\n"
|
||||
<< " return;\n"
|
||||
<< " } else if (MI->getOpcode() == TargetInstrInfo::KILL) {\n"
|
||||
<< " printKill(MI);\n"
|
||||
<< " return;\n"
|
||||
<< " }\n\n";
|
||||
|
||||
O << "\n#endif\n";
|
||||
|
||||
O << " O << \"\\t\";\n\n";
|
||||
|
||||
O << " // Emit the opcode for the instruction.\n"
|
||||
|
Loading…
Reference in New Issue
Block a user