llvm.org GIT mirror llvm / release_33 lib / Target / X86 / X86AsmPrinter.h
release_33

Tree @release_33 (Download .tar.gz)

X86AsmPrinter.h @release_33

faec9a3
b36cbd0
 
 
4ee451d
 
b36cbd0
 
 
0dc32ea
 
b36cbd0
aef4035
 
 
75b6882
 
b36cbd0
75b6882
b36cbd0
 
 
40e3c7a
75b6882
16d8f8b
75b6882
57f0db8
b23569a
 
75b6882
 
b36cbd0
a01098c
faec9a3
b36cbd0
a20e1e7
8fea32f
b36cbd0
a01098c
1bd1e6d
a01098c
a20e1e7
a01098c
a20e1e7
88db786
b36cbd0
a3b8c57
88db786
3b132fa
35c6889
9947bbb
88db786
a01098c
 
 
 
 
 
 
88db786
18c5987
88db786
18c5987
75b6882
34448ae
 
a01098c
34448ae
a01098c
a20e1e7
bfbab35
28ff35d
a01098c
 
b36cbd0
 
 
 
 
//===-- X86AsmPrinter.h - X86 implementation of AsmPrinter ------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef X86ASMPRINTER_H
#define X86ASMPRINTER_H

#include "X86.h"
#include "X86MachineFunctionInfo.h"
#include "X86TargetMachine.h"
#include "llvm/CodeGen/AsmPrinter.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/Support/Compiler.h"

namespace llvm {

class MCStreamer;

class LLVM_LIBRARY_VISIBILITY X86AsmPrinter : public AsmPrinter {
  const X86Subtarget *Subtarget;
 public:
  explicit X86AsmPrinter(TargetMachine &TM, MCStreamer &Streamer)
    : AsmPrinter(TM, Streamer) {
    Subtarget = &TM.getSubtarget<X86Subtarget>();
  }

  virtual const char *getPassName() const LLVM_OVERRIDE {
    return "X86 Assembly / Object Emitter";
  }

  const X86Subtarget &getSubtarget() const { return *Subtarget; }

  virtual void EmitStartOfAsmFile(Module &M) LLVM_OVERRIDE;

  virtual void EmitEndOfAsmFile(Module &M) LLVM_OVERRIDE;

  virtual void EmitInstruction(const MachineInstr *MI) LLVM_OVERRIDE;

  void printSymbolOperand(const MachineOperand &MO, raw_ostream &O);

  // These methods are used by the tablegen'erated instruction printer.
  void printOperand(const MachineInstr *MI, unsigned OpNo, raw_ostream &O,
                    const char *Modifier = 0, unsigned AsmVariant = 0);
  void printPCRelImm(const MachineInstr *MI, unsigned OpNo, raw_ostream &O);

  bool printAsmMRegister(const MachineOperand &MO, char Mode, raw_ostream &O);
  virtual bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
                               unsigned AsmVariant, const char *ExtraCode,
                               raw_ostream &OS) LLVM_OVERRIDE;
  virtual bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
                                     unsigned AsmVariant, const char *ExtraCode,
                                     raw_ostream &OS) LLVM_OVERRIDE;

  void printMemReference(const MachineInstr *MI, unsigned Op, raw_ostream &O,
                         const char *Modifier=NULL);
  void printLeaMemReference(const MachineInstr *MI, unsigned Op, raw_ostream &O,
                            const char *Modifier=NULL);

  void printIntelMemReference(const MachineInstr *MI, unsigned Op,
                              raw_ostream &O, const char *Modifier=NULL,
                              unsigned AsmVariant = 1);

  virtual bool runOnMachineFunction(MachineFunction &F) LLVM_OVERRIDE;

  void PrintDebugValueComment(const MachineInstr *MI, raw_ostream &OS);

  virtual MachineLocation
    getDebugValueLocation(const MachineInstr *MI) const LLVM_OVERRIDE;
};

} // end namespace llvm

#endif