~ubuntu-branches/ubuntu/maverick/clamav/maverick-backports

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.h

  • Committer: Bazaar Package Importer
  • Author(s): Stephen Gran, Stephen Gran, Michael Tautschnig
  • Date: 2010-04-26 21:41:18 UTC
  • mfrom: (2.1.6 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100426214118-i6lo606wnh7ywfj6
Tags: 0.96+dfsg-4
[ Stephen Gran ]
* Fixed typo in clamav-milter's postinst

[ Michael Tautschnig ]
* Fixed typo in clamav-freshclam's postinst (closes: #579271)
* Debconf translation updates
  - Portuguese (closes: #579068)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//===-- X86AsmPrinter.h - Convert X86 LLVM code to assembly -----*- 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
// AT&T assembly code printer class.
 
11
//
 
12
//===----------------------------------------------------------------------===//
 
13
 
 
14
#ifndef X86ASMPRINTER_H
 
15
#define X86ASMPRINTER_H
 
16
 
 
17
#include "../X86.h"
 
18
#include "../X86MachineFunctionInfo.h"
 
19
#include "../X86TargetMachine.h"
 
20
#include "llvm/ADT/StringSet.h"
 
21
#include "llvm/CodeGen/AsmPrinter.h"
 
22
#include "llvm/CodeGen/DwarfWriter.h"
 
23
#include "llvm/CodeGen/MachineModuleInfo.h"
 
24
#include "llvm/CodeGen/ValueTypes.h"
 
25
#include "llvm/Support/Compiler.h"
 
26
 
 
27
namespace llvm {
 
28
 
 
29
class MachineJumpTableInfo;
 
30
class MCContext;
 
31
class MCInst;
 
32
class MCStreamer;
 
33
class MCSymbol;
 
34
 
 
35
class VISIBILITY_HIDDEN X86AsmPrinter : public AsmPrinter {
 
36
  const X86Subtarget *Subtarget;
 
37
 public:
 
38
  explicit X86AsmPrinter(formatted_raw_ostream &O, TargetMachine &TM,
 
39
                         MCContext &Ctx, MCStreamer &Streamer,
 
40
                         const MCAsmInfo *T)
 
41
    : AsmPrinter(O, TM, Ctx, Streamer, T) {
 
42
    Subtarget = &TM.getSubtarget<X86Subtarget>();
 
43
  }
 
44
 
 
45
  virtual const char *getPassName() const {
 
46
    return "X86 AT&T-Style Assembly Printer";
 
47
  }
 
48
  
 
49
  const X86Subtarget &getSubtarget() const { return *Subtarget; }
 
50
 
 
51
  void getAnalysisUsage(AnalysisUsage &AU) const {
 
52
    AU.setPreservesAll();
 
53
    AU.addRequired<MachineModuleInfo>();
 
54
    AU.addRequired<DwarfWriter>();
 
55
    AsmPrinter::getAnalysisUsage(AU);
 
56
  }
 
57
 
 
58
  
 
59
  virtual void EmitEndOfAsmFile(Module &M);
 
60
  
 
61
  virtual void EmitInstruction(const MachineInstr *MI);
 
62
  
 
63
  void printSymbolOperand(const MachineOperand &MO);
 
64
  virtual MCSymbol *GetGlobalValueSymbol(const GlobalValue *GV) const;
 
65
 
 
66
  // These methods are used by the tablegen'erated instruction printer.
 
67
  void printOperand(const MachineInstr *MI, unsigned OpNo,
 
68
                    const char *Modifier = 0);
 
69
  void print_pcrel_imm(const MachineInstr *MI, unsigned OpNo);
 
70
 
 
71
  void printopaquemem(const MachineInstr *MI, unsigned OpNo) {
 
72
    printMemReference(MI, OpNo);
 
73
  }
 
74
 
 
75
  void printi8mem(const MachineInstr *MI, unsigned OpNo) {
 
76
    printMemReference(MI, OpNo);
 
77
  }
 
78
  void printi16mem(const MachineInstr *MI, unsigned OpNo) {
 
79
    printMemReference(MI, OpNo);
 
80
  }
 
81
  void printi32mem(const MachineInstr *MI, unsigned OpNo) {
 
82
    printMemReference(MI, OpNo);
 
83
  }
 
84
  void printi64mem(const MachineInstr *MI, unsigned OpNo) {
 
85
    printMemReference(MI, OpNo);
 
86
  }
 
87
  void printi128mem(const MachineInstr *MI, unsigned OpNo) {
 
88
    printMemReference(MI, OpNo);
 
89
  }
 
90
  void printf32mem(const MachineInstr *MI, unsigned OpNo) {
 
91
    printMemReference(MI, OpNo);
 
92
  }
 
93
  void printf64mem(const MachineInstr *MI, unsigned OpNo) {
 
94
    printMemReference(MI, OpNo);
 
95
  }
 
96
  void printf80mem(const MachineInstr *MI, unsigned OpNo) {
 
97
    printMemReference(MI, OpNo);
 
98
  }
 
99
  void printf128mem(const MachineInstr *MI, unsigned OpNo) {
 
100
    printMemReference(MI, OpNo);
 
101
  }
 
102
  void printlea32mem(const MachineInstr *MI, unsigned OpNo) {
 
103
    printLeaMemReference(MI, OpNo);
 
104
  }
 
105
  void printlea64mem(const MachineInstr *MI, unsigned OpNo) {
 
106
    printLeaMemReference(MI, OpNo);
 
107
  }
 
108
  void printlea64_32mem(const MachineInstr *MI, unsigned OpNo) {
 
109
    printLeaMemReference(MI, OpNo, "subreg64");
 
110
  }
 
111
 
 
112
  bool printAsmMRegister(const MachineOperand &MO, char Mode);
 
113
  bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
 
114
                       unsigned AsmVariant, const char *ExtraCode);
 
115
  bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNo,
 
116
                             unsigned AsmVariant, const char *ExtraCode);
 
117
 
 
118
  void printMachineInstruction(const MachineInstr *MI);
 
119
  void printSSECC(const MachineInstr *MI, unsigned Op);
 
120
  void printMemReference(const MachineInstr *MI, unsigned Op,
 
121
                         const char *Modifier=NULL);
 
122
  void printLeaMemReference(const MachineInstr *MI, unsigned Op,
 
123
                            const char *Modifier=NULL);
 
124
 
 
125
  void printPICLabel(const MachineInstr *MI, unsigned Op);
 
126
 
 
127
  void PrintPICBaseSymbol() const;
 
128
  
 
129
  bool runOnMachineFunction(MachineFunction &F);
 
130
};
 
131
 
 
132
} // end namespace llvm
 
133
 
 
134
#endif