35#define GET_INSTRINFO_MC_DESC
36#define GET_INSTRINFO_MC_HELPERS
37#define ENABLE_INSTR_PREDICATE_VERIFIER
38#include "AArch64GenInstrInfo.inc"
40#define GET_SUBTARGETINFO_MC_DESC
41#include "AArch64GenSubtargetInfo.inc"
43#define GET_REGINFO_MC_DESC
44#include "AArch64GenRegisterInfo.inc"
48 InitAArch64MCInstrInfo(
X);
63 return createAArch64MCSubtargetInfoImpl(TT, CPU, CPU, FS);
72 {codeview::RegisterId::ARM64_W0, AArch64::W0},
73 {codeview::RegisterId::ARM64_W1, AArch64::W1},
74 {codeview::RegisterId::ARM64_W2, AArch64::W2},
75 {codeview::RegisterId::ARM64_W3, AArch64::W3},
76 {codeview::RegisterId::ARM64_W4, AArch64::W4},
77 {codeview::RegisterId::ARM64_W5, AArch64::W5},
78 {codeview::RegisterId::ARM64_W6, AArch64::W6},
79 {codeview::RegisterId::ARM64_W7, AArch64::W7},
80 {codeview::RegisterId::ARM64_W8, AArch64::W8},
81 {codeview::RegisterId::ARM64_W9, AArch64::W9},
82 {codeview::RegisterId::ARM64_W10, AArch64::W10},
83 {codeview::RegisterId::ARM64_W11, AArch64::W11},
84 {codeview::RegisterId::ARM64_W12, AArch64::W12},
85 {codeview::RegisterId::ARM64_W13, AArch64::W13},
86 {codeview::RegisterId::ARM64_W14, AArch64::W14},
87 {codeview::RegisterId::ARM64_W15, AArch64::W15},
88 {codeview::RegisterId::ARM64_W16, AArch64::W16},
89 {codeview::RegisterId::ARM64_W17, AArch64::W17},
90 {codeview::RegisterId::ARM64_W18, AArch64::W18},
91 {codeview::RegisterId::ARM64_W19, AArch64::W19},
92 {codeview::RegisterId::ARM64_W20, AArch64::W20},
93 {codeview::RegisterId::ARM64_W21, AArch64::W21},
94 {codeview::RegisterId::ARM64_W22, AArch64::W22},
95 {codeview::RegisterId::ARM64_W23, AArch64::W23},
96 {codeview::RegisterId::ARM64_W24, AArch64::W24},
97 {codeview::RegisterId::ARM64_W25, AArch64::W25},
98 {codeview::RegisterId::ARM64_W26, AArch64::W26},
99 {codeview::RegisterId::ARM64_W27, AArch64::W27},
100 {codeview::RegisterId::ARM64_W28, AArch64::W28},
101 {codeview::RegisterId::ARM64_W29, AArch64::W29},
102 {codeview::RegisterId::ARM64_W30, AArch64::W30},
103 {codeview::RegisterId::ARM64_WZR, AArch64::WZR},
104 {codeview::RegisterId::ARM64_X0, AArch64::X0},
105 {codeview::RegisterId::ARM64_X1, AArch64::X1},
106 {codeview::RegisterId::ARM64_X2, AArch64::X2},
107 {codeview::RegisterId::ARM64_X3, AArch64::X3},
108 {codeview::RegisterId::ARM64_X4, AArch64::X4},
109 {codeview::RegisterId::ARM64_X5, AArch64::X5},
110 {codeview::RegisterId::ARM64_X6, AArch64::X6},
111 {codeview::RegisterId::ARM64_X7, AArch64::X7},
112 {codeview::RegisterId::ARM64_X8, AArch64::X8},
113 {codeview::RegisterId::ARM64_X9, AArch64::X9},
114 {codeview::RegisterId::ARM64_X10, AArch64::X10},
115 {codeview::RegisterId::ARM64_X11, AArch64::X11},
116 {codeview::RegisterId::ARM64_X12, AArch64::X12},
117 {codeview::RegisterId::ARM64_X13, AArch64::X13},
118 {codeview::RegisterId::ARM64_X14, AArch64::X14},
119 {codeview::RegisterId::ARM64_X15, AArch64::X15},
120 {codeview::RegisterId::ARM64_X16, AArch64::X16},
121 {codeview::RegisterId::ARM64_X17, AArch64::X17},
122 {codeview::RegisterId::ARM64_X18, AArch64::X18},
123 {codeview::RegisterId::ARM64_X19, AArch64::X19},
124 {codeview::RegisterId::ARM64_X20, AArch64::X20},
125 {codeview::RegisterId::ARM64_X21, AArch64::X21},
126 {codeview::RegisterId::ARM64_X22, AArch64::X22},
127 {codeview::RegisterId::ARM64_X23, AArch64::X23},
128 {codeview::RegisterId::ARM64_X24, AArch64::X24},
129 {codeview::RegisterId::ARM64_X25, AArch64::X25},
130 {codeview::RegisterId::ARM64_X26, AArch64::X26},
131 {codeview::RegisterId::ARM64_X27, AArch64::X27},
132 {codeview::RegisterId::ARM64_X28, AArch64::X28},
133 {codeview::RegisterId::ARM64_FP, AArch64::FP},
134 {codeview::RegisterId::ARM64_LR, AArch64::LR},
135 {codeview::RegisterId::ARM64_SP, AArch64::SP},
136 {codeview::RegisterId::ARM64_ZR, AArch64::XZR},
137 {codeview::RegisterId::ARM64_NZCV, AArch64::NZCV},
138 {codeview::RegisterId::ARM64_S0, AArch64::S0},
139 {codeview::RegisterId::ARM64_S1, AArch64::S1},
140 {codeview::RegisterId::ARM64_S2, AArch64::S2},
141 {codeview::RegisterId::ARM64_S3, AArch64::S3},
142 {codeview::RegisterId::ARM64_S4, AArch64::S4},
143 {codeview::RegisterId::ARM64_S5, AArch64::S5},
144 {codeview::RegisterId::ARM64_S6, AArch64::S6},
145 {codeview::RegisterId::ARM64_S7, AArch64::S7},
146 {codeview::RegisterId::ARM64_S8, AArch64::S8},
147 {codeview::RegisterId::ARM64_S9, AArch64::S9},
148 {codeview::RegisterId::ARM64_S10, AArch64::S10},
149 {codeview::RegisterId::ARM64_S11, AArch64::S11},
150 {codeview::RegisterId::ARM64_S12, AArch64::S12},
151 {codeview::RegisterId::ARM64_S13, AArch64::S13},
152 {codeview::RegisterId::ARM64_S14, AArch64::S14},
153 {codeview::RegisterId::ARM64_S15, AArch64::S15},
154 {codeview::RegisterId::ARM64_S16, AArch64::S16},
155 {codeview::RegisterId::ARM64_S17, AArch64::S17},
156 {codeview::RegisterId::ARM64_S18, AArch64::S18},
157 {codeview::RegisterId::ARM64_S19, AArch64::S19},
158 {codeview::RegisterId::ARM64_S20, AArch64::S20},
159 {codeview::RegisterId::ARM64_S21, AArch64::S21},
160 {codeview::RegisterId::ARM64_S22, AArch64::S22},
161 {codeview::RegisterId::ARM64_S23, AArch64::S23},
162 {codeview::RegisterId::ARM64_S24, AArch64::S24},
163 {codeview::RegisterId::ARM64_S25, AArch64::S25},
164 {codeview::RegisterId::ARM64_S26, AArch64::S26},
165 {codeview::RegisterId::ARM64_S27, AArch64::S27},
166 {codeview::RegisterId::ARM64_S28, AArch64::S28},
167 {codeview::RegisterId::ARM64_S29, AArch64::S29},
168 {codeview::RegisterId::ARM64_S30, AArch64::S30},
169 {codeview::RegisterId::ARM64_S31, AArch64::S31},
170 {codeview::RegisterId::ARM64_D0, AArch64::D0},
171 {codeview::RegisterId::ARM64_D1, AArch64::D1},
172 {codeview::RegisterId::ARM64_D2, AArch64::D2},
173 {codeview::RegisterId::ARM64_D3, AArch64::D3},
174 {codeview::RegisterId::ARM64_D4, AArch64::D4},
175 {codeview::RegisterId::ARM64_D5, AArch64::D5},
176 {codeview::RegisterId::ARM64_D6, AArch64::D6},
177 {codeview::RegisterId::ARM64_D7, AArch64::D7},
178 {codeview::RegisterId::ARM64_D8, AArch64::D8},
179 {codeview::RegisterId::ARM64_D9, AArch64::D9},
180 {codeview::RegisterId::ARM64_D10, AArch64::D10},
181 {codeview::RegisterId::ARM64_D11, AArch64::D11},
182 {codeview::RegisterId::ARM64_D12, AArch64::D12},
183 {codeview::RegisterId::ARM64_D13, AArch64::D13},
184 {codeview::RegisterId::ARM64_D14, AArch64::D14},
185 {codeview::RegisterId::ARM64_D15, AArch64::D15},
186 {codeview::RegisterId::ARM64_D16, AArch64::D16},
187 {codeview::RegisterId::ARM64_D17, AArch64::D17},
188 {codeview::RegisterId::ARM64_D18, AArch64::D18},
189 {codeview::RegisterId::ARM64_D19, AArch64::D19},
190 {codeview::RegisterId::ARM64_D20, AArch64::D20},
191 {codeview::RegisterId::ARM64_D21, AArch64::D21},
192 {codeview::RegisterId::ARM64_D22, AArch64::D22},
193 {codeview::RegisterId::ARM64_D23, AArch64::D23},
194 {codeview::RegisterId::ARM64_D24, AArch64::D24},
195 {codeview::RegisterId::ARM64_D25, AArch64::D25},
196 {codeview::RegisterId::ARM64_D26, AArch64::D26},
197 {codeview::RegisterId::ARM64_D27, AArch64::D27},
198 {codeview::RegisterId::ARM64_D28, AArch64::D28},
199 {codeview::RegisterId::ARM64_D29, AArch64::D29},
200 {codeview::RegisterId::ARM64_D30, AArch64::D30},
201 {codeview::RegisterId::ARM64_D31, AArch64::D31},
202 {codeview::RegisterId::ARM64_Q0, AArch64::Q0},
203 {codeview::RegisterId::ARM64_Q1, AArch64::Q1},
204 {codeview::RegisterId::ARM64_Q2, AArch64::Q2},
205 {codeview::RegisterId::ARM64_Q3, AArch64::Q3},
206 {codeview::RegisterId::ARM64_Q4, AArch64::Q4},
207 {codeview::RegisterId::ARM64_Q5, AArch64::Q5},
208 {codeview::RegisterId::ARM64_Q6, AArch64::Q6},
209 {codeview::RegisterId::ARM64_Q7, AArch64::Q7},
210 {codeview::RegisterId::ARM64_Q8, AArch64::Q8},
211 {codeview::RegisterId::ARM64_Q9, AArch64::Q9},
212 {codeview::RegisterId::ARM64_Q10, AArch64::Q10},
213 {codeview::RegisterId::ARM64_Q11, AArch64::Q11},
214 {codeview::RegisterId::ARM64_Q12, AArch64::Q12},
215 {codeview::RegisterId::ARM64_Q13, AArch64::Q13},
216 {codeview::RegisterId::ARM64_Q14, AArch64::Q14},
217 {codeview::RegisterId::ARM64_Q15, AArch64::Q15},
218 {codeview::RegisterId::ARM64_Q16, AArch64::Q16},
219 {codeview::RegisterId::ARM64_Q17, AArch64::Q17},
220 {codeview::RegisterId::ARM64_Q18, AArch64::Q18},
221 {codeview::RegisterId::ARM64_Q19, AArch64::Q19},
222 {codeview::RegisterId::ARM64_Q20, AArch64::Q20},
223 {codeview::RegisterId::ARM64_Q21, AArch64::Q21},
224 {codeview::RegisterId::ARM64_Q22, AArch64::Q22},
225 {codeview::RegisterId::ARM64_Q23, AArch64::Q23},
226 {codeview::RegisterId::ARM64_Q24, AArch64::Q24},
227 {codeview::RegisterId::ARM64_Q25, AArch64::Q25},
228 {codeview::RegisterId::ARM64_Q26, AArch64::Q26},
229 {codeview::RegisterId::ARM64_Q27, AArch64::Q27},
230 {codeview::RegisterId::ARM64_Q28, AArch64::Q28},
231 {codeview::RegisterId::ARM64_Q29, AArch64::Q29},
232 {codeview::RegisterId::ARM64_Q30, AArch64::Q30},
233 {codeview::RegisterId::ARM64_Q31, AArch64::Q31},
234 {codeview::RegisterId::ARM64_B0, AArch64::B0},
235 {codeview::RegisterId::ARM64_B1, AArch64::B1},
236 {codeview::RegisterId::ARM64_B2, AArch64::B2},
237 {codeview::RegisterId::ARM64_B3, AArch64::B3},
238 {codeview::RegisterId::ARM64_B4, AArch64::B4},
239 {codeview::RegisterId::ARM64_B5, AArch64::B5},
240 {codeview::RegisterId::ARM64_B6, AArch64::B6},
241 {codeview::RegisterId::ARM64_B7, AArch64::B7},
242 {codeview::RegisterId::ARM64_B8, AArch64::B8},
243 {codeview::RegisterId::ARM64_B9, AArch64::B9},
244 {codeview::RegisterId::ARM64_B10, AArch64::B10},
245 {codeview::RegisterId::ARM64_B11, AArch64::B11},
246 {codeview::RegisterId::ARM64_B12, AArch64::B12},
247 {codeview::RegisterId::ARM64_B13, AArch64::B13},
248 {codeview::RegisterId::ARM64_B14, AArch64::B14},
249 {codeview::RegisterId::ARM64_B15, AArch64::B15},
250 {codeview::RegisterId::ARM64_B16, AArch64::B16},
251 {codeview::RegisterId::ARM64_B17, AArch64::B17},
252 {codeview::RegisterId::ARM64_B18, AArch64::B18},
253 {codeview::RegisterId::ARM64_B19, AArch64::B19},
254 {codeview::RegisterId::ARM64_B20, AArch64::B20},
255 {codeview::RegisterId::ARM64_B21, AArch64::B21},
256 {codeview::RegisterId::ARM64_B22, AArch64::B22},
257 {codeview::RegisterId::ARM64_B23, AArch64::B23},
258 {codeview::RegisterId::ARM64_B24, AArch64::B24},
259 {codeview::RegisterId::ARM64_B25, AArch64::B25},
260 {codeview::RegisterId::ARM64_B26, AArch64::B26},
261 {codeview::RegisterId::ARM64_B27, AArch64::B27},
262 {codeview::RegisterId::ARM64_B28, AArch64::B28},
263 {codeview::RegisterId::ARM64_B29, AArch64::B29},
264 {codeview::RegisterId::ARM64_B30, AArch64::B30},
265 {codeview::RegisterId::ARM64_B31, AArch64::B31},
266 {codeview::RegisterId::ARM64_H0, AArch64::H0},
267 {codeview::RegisterId::ARM64_H1, AArch64::H1},
268 {codeview::RegisterId::ARM64_H2, AArch64::H2},
269 {codeview::RegisterId::ARM64_H3, AArch64::H3},
270 {codeview::RegisterId::ARM64_H4, AArch64::H4},
271 {codeview::RegisterId::ARM64_H5, AArch64::H5},
272 {codeview::RegisterId::ARM64_H6, AArch64::H6},
273 {codeview::RegisterId::ARM64_H7, AArch64::H7},
274 {codeview::RegisterId::ARM64_H8, AArch64::H8},
275 {codeview::RegisterId::ARM64_H9, AArch64::H9},
276 {codeview::RegisterId::ARM64_H10, AArch64::H10},
277 {codeview::RegisterId::ARM64_H11, AArch64::H11},
278 {codeview::RegisterId::ARM64_H12, AArch64::H12},
279 {codeview::RegisterId::ARM64_H13, AArch64::H13},
280 {codeview::RegisterId::ARM64_H14, AArch64::H14},
281 {codeview::RegisterId::ARM64_H15, AArch64::H15},
282 {codeview::RegisterId::ARM64_H16, AArch64::H16},
283 {codeview::RegisterId::ARM64_H17, AArch64::H17},
284 {codeview::RegisterId::ARM64_H18, AArch64::H18},
285 {codeview::RegisterId::ARM64_H19, AArch64::H19},
286 {codeview::RegisterId::ARM64_H20, AArch64::H20},
287 {codeview::RegisterId::ARM64_H21, AArch64::H21},
288 {codeview::RegisterId::ARM64_H22, AArch64::H22},
289 {codeview::RegisterId::ARM64_H23, AArch64::H23},
290 {codeview::RegisterId::ARM64_H24, AArch64::H24},
291 {codeview::RegisterId::ARM64_H25, AArch64::H25},
292 {codeview::RegisterId::ARM64_H26, AArch64::H26},
293 {codeview::RegisterId::ARM64_H27, AArch64::H27},
294 {codeview::RegisterId::ARM64_H28, AArch64::H28},
295 {codeview::RegisterId::ARM64_H29, AArch64::H29},
296 {codeview::RegisterId::ARM64_H30, AArch64::H30},
297 {codeview::RegisterId::ARM64_H31, AArch64::H31},
299 for (
const auto &
I : RegMap)
300 MRI->mapLLVMRegToCVReg(
I.Reg,
static_cast<int>(
I.CVReg));
304 const auto &FPR128 = AArch64MCRegisterClasses[AArch64::FPR128RegClassID];
306 return Op.isReg() && FPR128.contains(Op.getReg());
311 const auto &FPR128 = AArch64MCRegisterClasses[AArch64::FPR128RegClassID];
312 const auto &FPR64 = AArch64MCRegisterClasses[AArch64::FPR64RegClassID];
313 const auto &FPR32 = AArch64MCRegisterClasses[AArch64::FPR32RegClassID];
314 const auto &FPR16 = AArch64MCRegisterClasses[AArch64::FPR16RegClassID];
315 const auto &FPR8 = AArch64MCRegisterClasses[AArch64::FPR8RegClassID];
320 auto Reg = Op.getReg();
321 return FPR128.contains(Reg) || FPR64.contains(Reg) || FPR32.contains(Reg) ||
322 FPR16.contains(Reg) || FPR8.contains(Reg);
330 InitAArch64MCRegisterInfo(
X, AArch64::LR);
351 unsigned Reg =
MRI.getDwarfRegNum(AArch64::SP,
true);
359 unsigned SyntaxVariant,
363 if (SyntaxVariant == 0)
365 if (SyntaxVariant == 1)
372 std::unique_ptr<MCAsmBackend> &&TAB,
373 std::unique_ptr<MCObjectWriter> &&OW,
374 std::unique_ptr<MCCodeEmitter> &&
Emitter,
381 std::unique_ptr<MCAsmBackend> &&TAB,
382 std::unique_ptr<MCObjectWriter> &&OW,
383 std::unique_ptr<MCCodeEmitter> &&
Emitter,
385 bool DWARFMustBeAtTheEnd) {
387 std::move(
Emitter), RelaxAll, DWARFMustBeAtTheEnd,
393 std::unique_ptr<MCObjectWriter> &&OW,
394 std::unique_ptr<MCCodeEmitter> &&
Emitter,
bool RelaxAll,
395 bool IncrementalLinkerCompatible) {
398 IncrementalLinkerCompatible);
418 else if (Inst.
getOpcode() == AArch64::ADRP)
428 std::vector<std::pair<uint64_t, uint64_t>>
431 const Triple &TargetTriple)
const override {
433 std::vector<std::pair<uint64_t, uint64_t>>
Result;
434 for (
uint64_t Byte = 0, End = PltContents.
size(); Byte + 7 < End;
439 if (
Insn == 0xd503245f) {
444 if ((
Insn & 0x9f000000) != 0x90000000)
448 (((
Insn >> 29) & 3) << 12) + (((
Insn >> 5) & 0x3ffff) << 14);
452 if (Insn2 >> 22 == 0x3e5) {
453 Imm += ((Insn2 >> 10) & 0xfff) << 3;
454 Result.push_back(std::make_pair(PltSectionVA + Byte, Imm));
465 return new AArch64MCInstrAnalysis(
Info);
unsigned const MachineRegisterInfo * MRI
static MCStreamer * createWinCOFFStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter, bool RelaxAll, bool IncrementalLinkerCompatible)
static MCInstPrinter * createAArch64MCInstPrinter(const Triple &T, unsigned SyntaxVariant, const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI)
static MCStreamer * createELFStreamer(const Triple &T, MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter, bool RelaxAll)
static MCSubtargetInfo * createAArch64MCSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS)
static MCRegisterInfo * createAArch64MCRegisterInfo(const Triple &Triple)
static MCInstrInfo * createAArch64MCInstrInfo()
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64TargetMC()
static MCInstrAnalysis * createAArch64InstrAnalysis(const MCInstrInfo *Info)
static MCAsmInfo * createAArch64MCAsmInfo(const MCRegisterInfo &MRI, const Triple &TheTriple, const MCTargetOptions &Options)
static MCStreamer * createMachOStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter, bool RelaxAll, bool DWARFMustBeAtTheEnd)
SmallVector< AArch64_IMM::ImmInsnModel, 4 > Insn
Analysis containing CSE Info
#define LLVM_EXTERNAL_VISIBILITY
dxil DXContainer Global Emitter
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
size_t size() const
size - Get the array size.
This class is intended to be used as a base class for asm properties and features specific to the tar...
void addInitialFrameState(const MCCFIInstruction &Inst)
static MCCFIInstruction cfiDefCfa(MCSymbol *L, unsigned Register, int Offset)
.cfi_def_cfa defines a rule for computing CFA as: take address from Register and add Offset to it.
Context object for machine code objects.
This is an instance of a target assembly language printer that converts an MCInst to valid target ass...
Instances of this class represent a single low-level machine instruction.
unsigned getNumOperands() const
unsigned getOpcode() const
const MCOperand & getOperand(unsigned i) const
virtual bool evaluateBranch(const MCInst &Inst, uint64_t Addr, uint64_t Size, uint64_t &Target) const
Given a branch instruction try to get the address the branch targets.
virtual std::vector< std::pair< uint64_t, uint64_t > > findPltEntries(uint64_t PltSectionVA, ArrayRef< uint8_t > PltContents, uint64_t GotPltSectionVA, const Triple &TargetTriple) const
Returns (PLT virtual address, GOT virtual address) pairs for PLT entries.
Interface to description of machine instruction set.
Instances of this class represent operands of the MCInst class.
MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...
Streaming machine code generation interface.
Generic base class for all target subtargets.
StringRef - Represent a constant reference to a string, i.e.
constexpr bool empty() const
empty - Check if the string is empty.
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
bool isOSBinFormatMachO() const
Tests whether the environment is MachO.
ArchType getArch() const
Get the parsed architecture type of this triple.
bool isOSBinFormatCOFF() const
Tests whether the OS uses the COFF binary format.
bool isOSBinFormatELF() const
Tests whether the OS uses the ELF binary format.
bool isWindowsMSVCEnvironment() const
Checks if the environment could be MSVC.
void initLLVMToCVRegMapping(MCRegisterInfo *MRI)
bool isQForm(const MCInst &MI, const MCInstrInfo *MCII)
bool isFpOrNEON(const MCInst &MI, const MCInstrInfo *MCII)
uint32_t read32le(const void *P)
This is an optimization pass for GlobalISel generic memory operations.
MCELFStreamer * createAArch64ELFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll)
Target & getTheAArch64beTarget()
Target & getTheAArch64leTarget()
MCTargetStreamer * createAArch64NullTargetStreamer(MCStreamer &S)
bool any_of(R &&range, UnaryPredicate P)
Provide wrappers to std::any_of which take ranges instead of having to pass begin/end explicitly.
MCAsmBackend * createAArch64leAsmBackend(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
Target & getTheAArch64_32Target()
Target & getTheARM64_32Target()
MCTargetStreamer * createAArch64AsmTargetStreamer(MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint, bool isVerboseAsm)
MCWinCOFFStreamer * createAArch64WinCOFFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll, bool IncrementalLinkerCompatible)
Target & getTheARM64Target()
MCAsmBackend * createAArch64beAsmBackend(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
MCTargetStreamer * createAArch64ObjectTargetStreamer(MCStreamer &S, const MCSubtargetInfo &STI)
MCCodeEmitter * createAArch64MCCodeEmitter(const MCInstrInfo &MCII, MCContext &Ctx)
RegisterMCAsmInfoFn - Helper template for registering a target assembly info implementation.
static void RegisterMCRegInfo(Target &T, Target::MCRegInfoCtorFnTy Fn)
RegisterMCRegInfo - Register a MCRegisterInfo implementation for the given target.
static void RegisterMCAsmBackend(Target &T, Target::MCAsmBackendCtorTy Fn)
RegisterMCAsmBackend - Register a MCAsmBackend implementation for the given target.
static void RegisterMCCodeEmitter(Target &T, Target::MCCodeEmitterCtorTy Fn)
RegisterMCCodeEmitter - Register a MCCodeEmitter implementation for the given target.
static void RegisterMCSubtargetInfo(Target &T, Target::MCSubtargetInfoCtorFnTy Fn)
RegisterMCSubtargetInfo - Register a MCSubtargetInfo implementation for the given target.
static void RegisterObjectTargetStreamer(Target &T, Target::ObjectTargetStreamerCtorTy Fn)
static void RegisterMCInstrAnalysis(Target &T, Target::MCInstrAnalysisCtorFnTy Fn)
RegisterMCInstrAnalysis - Register a MCInstrAnalysis implementation for the given target.
static void RegisterELFStreamer(Target &T, Target::ELFStreamerCtorTy Fn)
static void RegisterNullTargetStreamer(Target &T, Target::NullTargetStreamerCtorTy Fn)
static void RegisterMCInstPrinter(Target &T, Target::MCInstPrinterCtorTy Fn)
RegisterMCInstPrinter - Register a MCInstPrinter implementation for the given target.
static void RegisterCOFFStreamer(Target &T, Target::COFFStreamerCtorTy Fn)
static void RegisterMCInstrInfo(Target &T, Target::MCInstrInfoCtorFnTy Fn)
RegisterMCInstrInfo - Register a MCInstrInfo implementation for the given target.
static void RegisterMachOStreamer(Target &T, Target::MachOStreamerCtorTy Fn)
static void RegisterAsmTargetStreamer(Target &T, Target::AsmTargetStreamerCtorTy Fn)