diff options
Diffstat (limited to 'lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp')
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp b/lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp index 610beb5..7e0a9bb 100644 --- a/lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp @@ -28,14 +28,17 @@ using namespace llvm; #include "X86GenAsmWriter1.inc" #undef MachineInstr -void X86IntelInstPrinter::printInst(const MCInst *MI) { printInstruction(MI); } +void X86IntelInstPrinter::printInst(const MCInst *MI, raw_ostream &OS) { + printInstruction(MI, OS); +} StringRef X86IntelInstPrinter::getOpcodeName(unsigned Opcode) const { return getInstructionName(Opcode); } -void X86IntelInstPrinter::printSSECC(const MCInst *MI, unsigned Op) { +void X86IntelInstPrinter::printSSECC(const MCInst *MI, unsigned Op, + raw_ostream &O) { switch (MI->getOperand(Op).getImm()) { - default: llvm_unreachable("Invalid ssecc argument!"); + default: assert(0 && "Invalid ssecc argument!"); case 0: O << "eq"; break; case 1: O << "lt"; break; case 2: O << "le"; break; @@ -49,7 +52,8 @@ void X86IntelInstPrinter::printSSECC(const MCInst *MI, unsigned Op) { /// print_pcrel_imm - This is used to print an immediate value that ends up /// being encoded as a pc-relative value. -void X86IntelInstPrinter::print_pcrel_imm(const MCInst *MI, unsigned OpNo) { +void X86IntelInstPrinter::print_pcrel_imm(const MCInst *MI, unsigned OpNo, + raw_ostream &O) { const MCOperand &Op = MI->getOperand(OpNo); if (Op.isImm()) O << Op.getImm(); @@ -65,9 +69,7 @@ static void PrintRegName(raw_ostream &O, StringRef RegName) { } void X86IntelInstPrinter::printOperand(const MCInst *MI, unsigned OpNo, - const char *Modifier) { - assert(Modifier == 0 && "Modifiers should not be used"); - + raw_ostream &O) { const MCOperand &Op = MI->getOperand(OpNo); if (Op.isReg()) { PrintRegName(O, getRegisterName(Op.getReg())); @@ -79,7 +81,8 @@ void X86IntelInstPrinter::printOperand(const MCInst *MI, unsigned OpNo, } } -void X86IntelInstPrinter::printLeaMemReference(const MCInst *MI, unsigned Op) { +void X86IntelInstPrinter::printLeaMemReference(const MCInst *MI, unsigned Op, + raw_ostream &O) { const MCOperand &BaseReg = MI->getOperand(Op); unsigned ScaleVal = MI->getOperand(Op+1).getImm(); const MCOperand &IndexReg = MI->getOperand(Op+2); @@ -89,7 +92,7 @@ void X86IntelInstPrinter::printLeaMemReference(const MCInst *MI, unsigned Op) { bool NeedPlus = false; if (BaseReg.getReg()) { - printOperand(MI, Op); + printOperand(MI, Op, O); NeedPlus = true; } @@ -97,7 +100,7 @@ void X86IntelInstPrinter::printLeaMemReference(const MCInst *MI, unsigned Op) { if (NeedPlus) O << " + "; if (ScaleVal != 1) O << ScaleVal << '*'; - printOperand(MI, Op+2); + printOperand(MI, Op+2, O); NeedPlus = true; } @@ -124,11 +127,12 @@ void X86IntelInstPrinter::printLeaMemReference(const MCInst *MI, unsigned Op) { O << ']'; } -void X86IntelInstPrinter::printMemReference(const MCInst *MI, unsigned Op) { +void X86IntelInstPrinter::printMemReference(const MCInst *MI, unsigned Op, + raw_ostream &O) { // If this has a segment register, print it. if (MI->getOperand(Op+4).getReg()) { - printOperand(MI, Op+4); + printOperand(MI, Op+4, O); O << ':'; } - printLeaMemReference(MI, Op); + printLeaMemReference(MI, Op, O); } |