X86AsmPrinter.h revision 36b56886974eae4f9c5ebc96befd3e7bfe5de338
1//===-- X86AsmPrinter.h - X86 implementation of AsmPrinter ------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef X86ASMPRINTER_H 11#define X86ASMPRINTER_H 12 13#include "X86Subtarget.h" 14#include "llvm/CodeGen/AsmPrinter.h" 15#include "llvm/CodeGen/StackMaps.h" 16#include "llvm/Target/TargetMachine.h" 17 18namespace llvm { 19 20class MCStreamer; 21 22class LLVM_LIBRARY_VISIBILITY X86AsmPrinter : public AsmPrinter { 23 const X86Subtarget *Subtarget; 24 StackMaps SM; 25 26 public: 27 explicit X86AsmPrinter(TargetMachine &TM, MCStreamer &Streamer) 28 : AsmPrinter(TM, Streamer), SM(*this) { 29 Subtarget = &TM.getSubtarget<X86Subtarget>(); 30 } 31 32 const char *getPassName() const override { 33 return "X86 Assembly / Object Emitter"; 34 } 35 36 const X86Subtarget &getSubtarget() const { return *Subtarget; } 37 38 void EmitStartOfAsmFile(Module &M) override; 39 40 void EmitEndOfAsmFile(Module &M) override; 41 42 void EmitInstruction(const MachineInstr *MI) override; 43 44 bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, 45 unsigned AsmVariant, const char *ExtraCode, 46 raw_ostream &OS) override; 47 bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo, 48 unsigned AsmVariant, const char *ExtraCode, 49 raw_ostream &OS) override; 50 51 bool runOnMachineFunction(MachineFunction &F) override; 52}; 53 54} // end namespace llvm 55 56#endif 57