blob: f129c0482c91dcb5e2fdbb4e786e12d20f81c3a6 [file] [log] [blame]
Chris Lattnerfd603822009-10-19 19:56:26 +00001//===-- ARMInstPrinter.h - Convert ARM MCInst to assembly syntax ----------===//
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// This class prints an ARM MCInst to a .s file.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef ARMINSTPRINTER_H
15#define ARMINSTPRINTER_H
16
17#include "llvm/MC/MCInstPrinter.h"
18
19namespace llvm {
20 class MCOperand;
21
22class ARMInstPrinter : public MCInstPrinter {
Chris Lattner61d35c22009-10-19 21:21:39 +000023 bool VerboseAsm;
Chris Lattnerfd603822009-10-19 19:56:26 +000024public:
Chris Lattner61d35c22009-10-19 21:21:39 +000025 ARMInstPrinter(raw_ostream &O, const MCAsmInfo &MAI, bool verboseAsm)
26 : MCInstPrinter(O, MAI), VerboseAsm(verboseAsm) {}
Chris Lattnerfd603822009-10-19 19:56:26 +000027
28 virtual void printInst(const MCInst *MI);
29
30 // Autogenerated by tblgen.
31 void printInstruction(const MCInst *MI);
32 static const char *getRegisterName(unsigned RegNo);
33
34
35 void printOperand(const MCInst *MI, unsigned OpNo,
Chris Lattner8bc86cb2009-10-19 20:59:55 +000036 const char *Modifier = 0);
Chris Lattnerfd603822009-10-19 19:56:26 +000037
Chris Lattner61d35c22009-10-19 21:21:39 +000038 void printSOImmOperand(const MCInst *MI, unsigned OpNum);
39
40
Chris Lattnerfd603822009-10-19 19:56:26 +000041 void printSOImm2PartOperand(const MCInst *MI, unsigned OpNum) {}
42 void printSORegOperand(const MCInst *MI, unsigned OpNum) {}
Chris Lattner084f87d2009-10-19 21:57:05 +000043 void printAddrMode2Operand(const MCInst *MI, unsigned OpNum);
Chris Lattnerfd603822009-10-19 19:56:26 +000044 void printAddrMode2OffsetOperand(const MCInst *MI, unsigned OpNum) {}
45 void printAddrMode3Operand(const MCInst *MI, unsigned OpNum) {}
46 void printAddrMode3OffsetOperand(const MCInst *MI, unsigned OpNum) {}
47 void printAddrMode4Operand(const MCInst *MI, unsigned OpNum,
48 const char *Modifier = 0) {}
49 void printAddrMode5Operand(const MCInst *MI, unsigned OpNum,
50 const char *Modifier = 0) {}
51 void printAddrMode6Operand(const MCInst *MI, unsigned OpNum) {}
52 void printAddrModePCOperand(const MCInst *MI, unsigned OpNum,
53 const char *Modifier = 0) {}
54 void printBitfieldInvMaskImmOperand (const MCInst *MI, unsigned OpNum) {}
55
56 void printThumbITMask(const MCInst *MI, unsigned OpNum) {}
57 void printThumbAddrModeRROperand(const MCInst *MI, unsigned OpNum) {}
58 void printThumbAddrModeRI5Operand(const MCInst *MI, unsigned OpNum,
59 unsigned Scale) {}
60 void printThumbAddrModeS1Operand(const MCInst *MI, unsigned OpNum) {}
61 void printThumbAddrModeS2Operand(const MCInst *MI, unsigned OpNum) {}
62 void printThumbAddrModeS4Operand(const MCInst *MI, unsigned OpNum) {}
63 void printThumbAddrModeSPOperand(const MCInst *MI, unsigned OpNum) {}
64
65 void printT2SOOperand(const MCInst *MI, unsigned OpNum) {}
66 void printT2AddrModeImm12Operand(const MCInst *MI, unsigned OpNum) {}
67 void printT2AddrModeImm8Operand(const MCInst *MI, unsigned OpNum) {}
68 void printT2AddrModeImm8s4Operand(const MCInst *MI, unsigned OpNum) {}
69 void printT2AddrModeImm8OffsetOperand(const MCInst *MI, unsigned OpNum) {}
70 void printT2AddrModeSoRegOperand(const MCInst *MI, unsigned OpNum) {}
71
72 void printPredicateOperand(const MCInst *MI, unsigned OpNum) {}
73 void printSBitModifierOperand(const MCInst *MI, unsigned OpNum) {}
74 void printPCLabel(const MCInst *MI, unsigned OpNum) {}
75 void printRegisterList(const MCInst *MI, unsigned OpNum) {}
76 void printCPInstOperand(const MCInst *MI, unsigned OpNum,
77 const char *Modifier) {}
78 void printJTBlockOperand(const MCInst *MI, unsigned OpNum) {}
79 void printJT2BlockOperand(const MCInst *MI, unsigned OpNum) {}
80 void printTBAddrMode(const MCInst *MI, unsigned OpNum) {}
81 void printNoHashImmediate(const MCInst *MI, unsigned OpNum) {}
82
83
84 // FIXME:
85 void PrintSpecial(const MCInst *MI, const char *Kind) {}
86};
87
88}
89
90#endif