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