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 printT2AddrModeSoRegOperand(const MCInst *MI, unsigned OpNum) {}
73 void printCPSOptionOperand(const MCInst *MI, unsigned OpNum) {}
74 void printMSRMaskOperand(const MCInst *MI, unsigned OpNum) {}
75 void printNegZeroOperand(const MCInst *MI, unsigned OpNum) {}
76 void printPredicateOperand(const MCInst *MI, unsigned OpNum);
77 void printMandatoryPredicateOperand(const MCInst *MI, unsigned OpNum);
78 void printSBitModifierOperand(const MCInst *MI, unsigned OpNum);
79 void printRegisterList(const MCInst *MI, unsigned OpNum);
80 void printCPInstOperand(const MCInst *MI, unsigned OpNum,
81 const char *Modifier);
82 void printJTBlockOperand(const MCInst *MI, unsigned OpNum) {}
83 void printJT2BlockOperand(const MCInst *MI, unsigned OpNum) {}
84 void printTBAddrMode(const MCInst *MI, unsigned OpNum) {}
85 void printNoHashImmediate(const MCInst *MI, unsigned OpNum);
86 void printVFPf32ImmOperand(const MCInst *MI, int OpNum) {}
87 void printVFPf64ImmOperand(const MCInst *MI, int OpNum) {}
88 void printHex8ImmOperand(const MCInst *MI, int OpNum) {}
89 void printHex16ImmOperand(const MCInst *MI, int OpNum) {}
90 void printHex32ImmOperand(const MCInst *MI, int OpNum) {}
91 void printHex64ImmOperand(const MCInst *MI, int OpNum) {}
93 void printPCLabel(const MCInst *MI, unsigned OpNum);
95 void PrintSpecial(const MCInst *MI, const char *Kind) {}