1 //===-- ARMInstPrinter.h - Convert ARM MCInst to assembly syntax ----------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This class prints an ARM MCInst to a .s file.
12 //===----------------------------------------------------------------------===//
14 #ifndef ARMINSTPRINTER_H
15 #define ARMINSTPRINTER_H
17 #include "llvm/MC/MCInstPrinter.h"
22 class ARMInstPrinter : public MCInstPrinter {
25 ARMInstPrinter(raw_ostream &O, const MCAsmInfo &MAI, bool verboseAsm)
26 : MCInstPrinter(O, MAI), VerboseAsm(verboseAsm) {}
28 virtual void printInst(const MCInst *MI);
30 // Autogenerated by tblgen.
31 void printInstruction(const MCInst *MI);
32 static const char *getRegisterName(unsigned RegNo);
35 void printOperand(const MCInst *MI, unsigned OpNo,
36 const char *Modifier = 0);
38 void printSOImmOperand(const MCInst *MI, unsigned OpNum);
39 void printSOImm2PartOperand(const MCInst *MI, unsigned OpNum);
41 void printSORegOperand(const MCInst *MI, unsigned OpNum);
42 void printAddrMode2Operand(const MCInst *MI, unsigned OpNum);
43 void printAddrMode2OffsetOperand(const MCInst *MI, unsigned OpNum);
44 void printAddrMode3Operand(const MCInst *MI, unsigned OpNum);
45 void printAddrMode3OffsetOperand(const MCInst *MI, unsigned OpNum);
46 void printAddrMode4Operand(const MCInst *MI, unsigned OpNum,
47 const char *Modifier = 0);
48 void printAddrMode5Operand(const MCInst *MI, unsigned OpNum,
49 const char *Modifier = 0);
50 void printAddrMode6Operand(const MCInst *MI, unsigned OpNum);
51 void printAddrModePCOperand(const MCInst *MI, unsigned OpNum,
52 const char *Modifier = 0);
54 void printBitfieldInvMaskImmOperand(const MCInst *MI, unsigned OpNum);
56 void printThumbS4ImmOperand(const MCInst *MI, unsigned OpNum);
57 void printThumbITMask(const MCInst *MI, unsigned OpNum);
58 void printThumbAddrModeRROperand(const MCInst *MI, unsigned OpNum);
59 void printThumbAddrModeRI5Operand(const MCInst *MI, unsigned OpNum,
61 void printThumbAddrModeS1Operand(const MCInst *MI, unsigned OpNum);
62 void printThumbAddrModeS2Operand(const MCInst *MI, unsigned OpNum);
63 void printThumbAddrModeS4Operand(const MCInst *MI, unsigned OpNum);
64 void printThumbAddrModeSPOperand(const MCInst *MI, unsigned OpNum);
66 void printT2SOOperand(const MCInst *MI, unsigned OpNum);
67 void printT2AddrModeImm12Operand(const MCInst *MI, unsigned OpNum);
68 void printT2AddrModeImm8Operand(const MCInst *MI, unsigned OpNum);
69 void printT2AddrModeImm8s4Operand(const MCInst *MI, unsigned OpNum);
70 void printT2AddrModeImm8OffsetOperand(const MCInst *MI, unsigned OpNum);
71 void printT2AddrModeImm8s4OffsetOperand(const MCInst *MI, unsigned OpNum);
72 void printT2AddrModeSoRegOperand(const MCInst *MI, unsigned OpNum);
74 void printCPSOptionOperand(const MCInst *MI, unsigned OpNum);
75 void printMSRMaskOperand(const MCInst *MI, unsigned OpNum);
76 void printNegZeroOperand(const MCInst *MI, unsigned OpNum);
77 void printPredicateOperand(const MCInst *MI, unsigned OpNum);
78 void printMandatoryPredicateOperand(const MCInst *MI, unsigned OpNum);
79 void printSBitModifierOperand(const MCInst *MI, unsigned OpNum);
80 void printRegisterList(const MCInst *MI, unsigned OpNum);
81 void printCPInstOperand(const MCInst *MI, unsigned OpNum,
82 const char *Modifier);
83 void printJTBlockOperand(const MCInst *MI, unsigned OpNum) {}
84 void printJT2BlockOperand(const MCInst *MI, unsigned OpNum) {}
85 void printTBAddrMode(const MCInst *MI, unsigned OpNum);
86 void printNoHashImmediate(const MCInst *MI, unsigned OpNum);
87 void printVFPf32ImmOperand(const MCInst *MI, unsigned OpNum);
88 void printVFPf64ImmOperand(const MCInst *MI, unsigned OpNum);
89 void printHex8ImmOperand(const MCInst *MI, int OpNum) {}
90 void printHex16ImmOperand(const MCInst *MI, int OpNum) {}
91 void printHex32ImmOperand(const MCInst *MI, int OpNum) {}
92 void printHex64ImmOperand(const MCInst *MI, int OpNum) {}
94 void printPCLabel(const MCInst *MI, unsigned OpNum);
96 void PrintSpecial(const MCInst *MI, const char *Kind) {}