X86AsmPrinter.h revision 249423
153913Sarchie//===-- X86AsmPrinter.h - X86 implementation of AsmPrinter ------*- C++ -*-===// 253913Sarchie// 3139823Simp// The LLVM Compiler Infrastructure 4139823Simp// 5139823Simp// This file is distributed under the University of Illinois Open Source 653913Sarchie// License. See LICENSE.TXT for details. 753913Sarchie// 853913Sarchie//===----------------------------------------------------------------------===// 953913Sarchie 1053913Sarchie#ifndef X86ASMPRINTER_H 1153913Sarchie#define X86ASMPRINTER_H 1253913Sarchie 1353913Sarchie#include "X86.h" 1453913Sarchie#include "X86MachineFunctionInfo.h" 1553913Sarchie#include "X86TargetMachine.h" 1653913Sarchie#include "llvm/CodeGen/AsmPrinter.h" 1753913Sarchie#include "llvm/CodeGen/MachineModuleInfo.h" 1853913Sarchie#include "llvm/CodeGen/ValueTypes.h" 1953913Sarchie#include "llvm/Support/Compiler.h" 2053913Sarchie 2153913Sarchienamespace llvm { 2253913Sarchie 2353913Sarchieclass MCStreamer; 2453913Sarchie 2553913Sarchieclass LLVM_LIBRARY_VISIBILITY X86AsmPrinter : public AsmPrinter { 2653913Sarchie const X86Subtarget *Subtarget; 2753913Sarchie public: 2853913Sarchie explicit X86AsmPrinter(TargetMachine &TM, MCStreamer &Streamer) 2953913Sarchie : AsmPrinter(TM, Streamer) { 3053913Sarchie Subtarget = &TM.getSubtarget<X86Subtarget>(); 3153913Sarchie } 3253913Sarchie 3353913Sarchie virtual const char *getPassName() const LLVM_OVERRIDE { 3453913Sarchie return "X86 Assembly / Object Emitter"; 3553913Sarchie } 3653913Sarchie 3753913Sarchie const X86Subtarget &getSubtarget() const { return *Subtarget; } 3867506Sjulian 3953913Sarchie virtual void EmitStartOfAsmFile(Module &M) LLVM_OVERRIDE; 4053913Sarchie 4153913Sarchie virtual void EmitEndOfAsmFile(Module &M) LLVM_OVERRIDE; 4253913Sarchie 4353913Sarchie virtual void EmitInstruction(const MachineInstr *MI) LLVM_OVERRIDE; 44122481Sru 45122481Sru void printSymbolOperand(const MachineOperand &MO, raw_ostream &O); 4653913Sarchie 4753913Sarchie // These methods are used by the tablegen'erated instruction printer. 4853913Sarchie void printOperand(const MachineInstr *MI, unsigned OpNo, raw_ostream &O, 4953913Sarchie const char *Modifier = 0, unsigned AsmVariant = 0); 5053913Sarchie void printPCRelImm(const MachineInstr *MI, unsigned OpNo, raw_ostream &O); 5153998Sarchie 5253998Sarchie bool printAsmMRegister(const MachineOperand &MO, char Mode, raw_ostream &O); 5353998Sarchie virtual bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, 5453913Sarchie unsigned AsmVariant, const char *ExtraCode, 5553998Sarchie raw_ostream &OS) LLVM_OVERRIDE; 5653998Sarchie virtual bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, 5753998Sarchie unsigned AsmVariant, const char *ExtraCode, 5853998Sarchie raw_ostream &OS) LLVM_OVERRIDE; 5953998Sarchie 6053998Sarchie void printMemReference(const MachineInstr *MI, unsigned Op, raw_ostream &O, 6153998Sarchie const char *Modifier=NULL); 6253998Sarchie void printLeaMemReference(const MachineInstr *MI, unsigned Op, raw_ostream &O, 6353998Sarchie const char *Modifier=NULL); 6453913Sarchie 6553913Sarchie void printIntelMemReference(const MachineInstr *MI, unsigned Op, 6653913Sarchie raw_ostream &O, const char *Modifier=NULL, 6753913Sarchie unsigned AsmVariant = 1); 6853913Sarchie 6953913Sarchie virtual bool runOnMachineFunction(MachineFunction &F) LLVM_OVERRIDE; 7053913Sarchie 7153913Sarchie void PrintDebugValueComment(const MachineInstr *MI, raw_ostream &OS); 7253913Sarchie 7353913Sarchie virtual MachineLocation 7453913Sarchie getDebugValueLocation(const MachineInstr *MI) const LLVM_OVERRIDE; 7553913Sarchie}; 7653913Sarchie 7753913Sarchie} // end namespace llvm 7853913Sarchie 7953913Sarchie#endif 8053913Sarchie