LLVM: lib/Target/ARM/ARMAsmPrinter.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_LIB_TARGET_ARM_ARMASMPRINTER_H
10#define LLVM_LIB_TARGET_ARM_ARMASMPRINTER_H
11
14
15namespace llvm {
16
23
24namespace ARM {
29}
30
32public:
34
35private:
36
37
39
40
41
43
44
45
46 bool InConstantPool;
47
48
49
51
52
53
54
55 int OptimizationGoals;
56
57
58
59
60
62
63
64
66
67public:
69 std::unique_ptr Streamer);
70
72 return "ARM Assembly Printer";
73 }
74
76
78
80 bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
81 const char *ExtraCode, raw_ostream &O) override;
82 bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNum,
83 const char *ExtraCode, raw_ostream &O) override;
84
87
90 void emitJumpTableTBInst(const MachineInstr *MI, unsigned OffsetWidth);
91 void emitInstruction(const MachineInstr *MI) override;
95 getCodeViewJumpTableInfo(int JTI, const MachineInstr *BranchInstr,
96 const MCSymbol *BranchLabel) const override;
97
101 void emitFunctionBodyEnd() override;
102 void emitFunctionEntryLabel() override;
103 void emitStartOfAsmFile(Module &M) override;
104 void emitEndOfAsmFile(Module &M) override;
106 void emitGlobalVariable(const GlobalVariable *GV) override;
107
108 MCSymbol *GetCPISymbol(unsigned CPID) const override;
109
110
112
113
114
115
116public:
117
118 void LowerPATCHABLE_FUNCTION_ENTER(const MachineInstr &MI);
119 void LowerPATCHABLE_FUNCTION_EXIT(const MachineInstr &MI);
120 void LowerPATCHABLE_TAIL_CALL(const MachineInstr &MI);
121
122
124
125private:
126 void EmitSled(const MachineInstr &MI, SledKind Kind);
127
128
129 void EmitKCFI_CHECK_ARM32(Register AddrReg, int64_t Type,
131 void EmitKCFI_CHECK_Thumb2(Register AddrReg, int64_t Type,
133 void EmitKCFI_CHECK_Thumb1(Register AddrReg, int64_t Type,
135
136
137 void emitAttributes();
138
139 void EmitUnwindingInstruction(const MachineInstr *MI);
140
141
143
144public:
146
147 const Triple &TT = TM.getTargetTriple();
148 if (!TT.isOSBinFormatMachO())
149 return 0;
150 bool isThumb = TT.isThumb() ||
154 }
155
156private:
158 MCSymbol *GetARMJTIPICJumpTableLabel(unsigned uid) const;
159
160 MCSymbol *GetARMGVSymbol(const GlobalValue *GV, unsigned char TargetFlags);
161
162public:
163
164
166};
167
168}
169
170#endif
static bool isThumb(const MCSubtargetInfo &STI)
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
#define LLVM_LIBRARY_VISIBILITY
static MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol, HexagonAsmPrinter &Printer, bool MustExtend)
const GCNTargetMachine & getTM(const GCNSubtarget *STI)
static bool printOperand(raw_ostream &OS, const SelectionDAG *G, const SDValue Value)
void emitConstantPool() override
Print to the current output stream assembly representations of the constants in the constant pool MCP...
Definition ARMAsmPrinter.h:98
unsigned getISAEncoding() override
Get the value for DW_AT_APPLE_isa. Zero if no isa encoding specified.
Definition ARMAsmPrinter.h:145
ARMAsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > Streamer)
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
Definition ARMAsmPrinter.h:71
static char ID
Definition ARMAsmPrinter.h:33
ARMFunctionInfo - This class is derived from MachineFunctionInfo and contains private ARM-specific in...
TargetMachine & TM
Target machine description.
AsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > Streamer, char &ID=AsmPrinter::ID)
This is an important base class in LLVM.
A parsed version of the target data layout string in and methods for querying it.
Instances of this class represent a single low-level machine instruction.
Instances of this class represent operands of the MCInst class.
Generic base class for all target subtargets.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Abstract base class for all machine specific constantpool value subclasses.
The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...
Representation of each machine instruction.
MachineOperand class - Representation of each machine instruction operand.
A Module instance is used to store all the information related to an LLVM module.
Wrapper class representing virtual and physical registers.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
Primary interface to the complete machine description for the target machine.
Triple - Helper class for working with autoconf configuration names.
The instances of the Type class are immutable: once they are created, they are never changed.
This class implements an extremely fast bulk output stream that can only output to a stream.
Define some predicates that are used for node matching.
DW_ISA
Definition ARMAsmPrinter.h:25
@ DW_ISA_ARM_arm
Definition ARMAsmPrinter.h:27
@ DW_ISA_ARM_thumb
Definition ARMAsmPrinter.h:26
This is an optimization pass for GlobalISel generic memory operations.