36#define GET_INSTRINFO_MC_DESC
37#define GET_INSTRINFO_MC_HELPERS
38#define ENABLE_INSTR_PREDICATE_VERIFIER
39#include "AArch64GenInstrInfo.inc"
41#define GET_SUBTARGETINFO_MC_DESC
42#include "AArch64GenSubtargetInfo.inc"
44#define GET_REGINFO_MC_DESC
45#include "AArch64GenRegisterInfo.inc"
49 InitAArch64MCInstrInfo(
X);
66 return createAArch64MCSubtargetInfoImpl(TT, CPU, CPU, FS);
75 {codeview::RegisterId::ARM64_W0, AArch64::W0},
76 {codeview::RegisterId::ARM64_W1, AArch64::W1},
77 {codeview::RegisterId::ARM64_W2, AArch64::W2},
78 {codeview::RegisterId::ARM64_W3, AArch64::W3},
79 {codeview::RegisterId::ARM64_W4, AArch64::W4},
80 {codeview::RegisterId::ARM64_W5, AArch64::W5},
81 {codeview::RegisterId::ARM64_W6, AArch64::W6},
82 {codeview::RegisterId::ARM64_W7, AArch64::W7},
83 {codeview::RegisterId::ARM64_W8, AArch64::W8},
84 {codeview::RegisterId::ARM64_W9, AArch64::W9},
85 {codeview::RegisterId::ARM64_W10, AArch64::W10},
86 {codeview::RegisterId::ARM64_W11, AArch64::W11},
87 {codeview::RegisterId::ARM64_W12, AArch64::W12},
88 {codeview::RegisterId::ARM64_W13, AArch64::W13},
89 {codeview::RegisterId::ARM64_W14, AArch64::W14},
90 {codeview::RegisterId::ARM64_W15, AArch64::W15},
91 {codeview::RegisterId::ARM64_W16, AArch64::W16},
92 {codeview::RegisterId::ARM64_W17, AArch64::W17},
93 {codeview::RegisterId::ARM64_W18, AArch64::W18},
94 {codeview::RegisterId::ARM64_W19, AArch64::W19},
95 {codeview::RegisterId::ARM64_W20, AArch64::W20},
96 {codeview::RegisterId::ARM64_W21, AArch64::W21},
97 {codeview::RegisterId::ARM64_W22, AArch64::W22},
98 {codeview::RegisterId::ARM64_W23, AArch64::W23},
99 {codeview::RegisterId::ARM64_W24, AArch64::W24},
100 {codeview::RegisterId::ARM64_W25, AArch64::W25},
101 {codeview::RegisterId::ARM64_W26, AArch64::W26},
102 {codeview::RegisterId::ARM64_W27, AArch64::W27},
103 {codeview::RegisterId::ARM64_W28, AArch64::W28},
104 {codeview::RegisterId::ARM64_W29, AArch64::W29},
105 {codeview::RegisterId::ARM64_W30, AArch64::W30},
106 {codeview::RegisterId::ARM64_WZR, AArch64::WZR},
107 {codeview::RegisterId::ARM64_X0, AArch64::X0},
108 {codeview::RegisterId::ARM64_X1, AArch64::X1},
109 {codeview::RegisterId::ARM64_X2, AArch64::X2},
110 {codeview::RegisterId::ARM64_X3, AArch64::X3},
111 {codeview::RegisterId::ARM64_X4, AArch64::X4},
112 {codeview::RegisterId::ARM64_X5, AArch64::X5},
113 {codeview::RegisterId::ARM64_X6, AArch64::X6},
114 {codeview::RegisterId::ARM64_X7, AArch64::X7},
115 {codeview::RegisterId::ARM64_X8, AArch64::X8},
116 {codeview::RegisterId::ARM64_X9, AArch64::X9},
117 {codeview::RegisterId::ARM64_X10, AArch64::X10},
118 {codeview::RegisterId::ARM64_X11, AArch64::X11},
119 {codeview::RegisterId::ARM64_X12, AArch64::X12},
120 {codeview::RegisterId::ARM64_X13, AArch64::X13},
121 {codeview::RegisterId::ARM64_X14, AArch64::X14},
122 {codeview::RegisterId::ARM64_X15, AArch64::X15},
123 {codeview::RegisterId::ARM64_X16, AArch64::X16},
124 {codeview::RegisterId::ARM64_X17, AArch64::X17},
125 {codeview::RegisterId::ARM64_X18, AArch64::X18},
126 {codeview::RegisterId::ARM64_X19, AArch64::X19},
127 {codeview::RegisterId::ARM64_X20, AArch64::X20},
128 {codeview::RegisterId::ARM64_X21, AArch64::X21},
129 {codeview::RegisterId::ARM64_X22, AArch64::X22},
130 {codeview::RegisterId::ARM64_X23, AArch64::X23},
131 {codeview::RegisterId::ARM64_X24, AArch64::X24},
132 {codeview::RegisterId::ARM64_X25, AArch64::X25},
133 {codeview::RegisterId::ARM64_X26, AArch64::X26},
134 {codeview::RegisterId::ARM64_X27, AArch64::X27},
135 {codeview::RegisterId::ARM64_X28, AArch64::X28},
136 {codeview::RegisterId::ARM64_FP, AArch64::FP},
137 {codeview::RegisterId::ARM64_LR, AArch64::LR},
138 {codeview::RegisterId::ARM64_SP, AArch64::SP},
139 {codeview::RegisterId::ARM64_ZR, AArch64::XZR},
140 {codeview::RegisterId::ARM64_NZCV, AArch64::NZCV},
141 {codeview::RegisterId::ARM64_S0, AArch64::S0},
142 {codeview::RegisterId::ARM64_S1, AArch64::S1},
143 {codeview::RegisterId::ARM64_S2, AArch64::S2},
144 {codeview::RegisterId::ARM64_S3, AArch64::S3},
145 {codeview::RegisterId::ARM64_S4, AArch64::S4},
146 {codeview::RegisterId::ARM64_S5, AArch64::S5},
147 {codeview::RegisterId::ARM64_S6, AArch64::S6},
148 {codeview::RegisterId::ARM64_S7, AArch64::S7},
149 {codeview::RegisterId::ARM64_S8, AArch64::S8},
150 {codeview::RegisterId::ARM64_S9, AArch64::S9},
151 {codeview::RegisterId::ARM64_S10, AArch64::S10},
152 {codeview::RegisterId::ARM64_S11, AArch64::S11},
153 {codeview::RegisterId::ARM64_S12, AArch64::S12},
154 {codeview::RegisterId::ARM64_S13, AArch64::S13},
155 {codeview::RegisterId::ARM64_S14, AArch64::S14},
156 {codeview::RegisterId::ARM64_S15, AArch64::S15},
157 {codeview::RegisterId::ARM64_S16, AArch64::S16},
158 {codeview::RegisterId::ARM64_S17, AArch64::S17},
159 {codeview::RegisterId::ARM64_S18, AArch64::S18},
160 {codeview::RegisterId::ARM64_S19, AArch64::S19},
161 {codeview::RegisterId::ARM64_S20, AArch64::S20},
162 {codeview::RegisterId::ARM64_S21, AArch64::S21},
163 {codeview::RegisterId::ARM64_S22, AArch64::S22},
164 {codeview::RegisterId::ARM64_S23, AArch64::S23},
165 {codeview::RegisterId::ARM64_S24, AArch64::S24},
166 {codeview::RegisterId::ARM64_S25, AArch64::S25},
167 {codeview::RegisterId::ARM64_S26, AArch64::S26},
168 {codeview::RegisterId::ARM64_S27, AArch64::S27},
169 {codeview::RegisterId::ARM64_S28, AArch64::S28},
170 {codeview::RegisterId::ARM64_S29, AArch64::S29},
171 {codeview::RegisterId::ARM64_S30, AArch64::S30},
172 {codeview::RegisterId::ARM64_S31, AArch64::S31},
173 {codeview::RegisterId::ARM64_D0, AArch64::D0},
174 {codeview::RegisterId::ARM64_D1, AArch64::D1},
175 {codeview::RegisterId::ARM64_D2, AArch64::D2},
176 {codeview::RegisterId::ARM64_D3, AArch64::D3},
177 {codeview::RegisterId::ARM64_D4, AArch64::D4},
178 {codeview::RegisterId::ARM64_D5, AArch64::D5},
179 {codeview::RegisterId::ARM64_D6, AArch64::D6},
180 {codeview::RegisterId::ARM64_D7, AArch64::D7},
181 {codeview::RegisterId::ARM64_D8, AArch64::D8},
182 {codeview::RegisterId::ARM64_D9, AArch64::D9},
183 {codeview::RegisterId::ARM64_D10, AArch64::D10},
184 {codeview::RegisterId::ARM64_D11, AArch64::D11},
185 {codeview::RegisterId::ARM64_D12, AArch64::D12},
186 {codeview::RegisterId::ARM64_D13, AArch64::D13},
187 {codeview::RegisterId::ARM64_D14, AArch64::D14},
188 {codeview::RegisterId::ARM64_D15, AArch64::D15},
189 {codeview::RegisterId::ARM64_D16, AArch64::D16},
190 {codeview::RegisterId::ARM64_D17, AArch64::D17},
191 {codeview::RegisterId::ARM64_D18, AArch64::D18},
192 {codeview::RegisterId::ARM64_D19, AArch64::D19},
193 {codeview::RegisterId::ARM64_D20, AArch64::D20},
194 {codeview::RegisterId::ARM64_D21, AArch64::D21},
195 {codeview::RegisterId::ARM64_D22, AArch64::D22},
196 {codeview::RegisterId::ARM64_D23, AArch64::D23},
197 {codeview::RegisterId::ARM64_D24, AArch64::D24},
198 {codeview::RegisterId::ARM64_D25, AArch64::D25},
199 {codeview::RegisterId::ARM64_D26, AArch64::D26},
200 {codeview::RegisterId::ARM64_D27, AArch64::D27},
201 {codeview::RegisterId::ARM64_D28, AArch64::D28},
202 {codeview::RegisterId::ARM64_D29, AArch64::D29},
203 {codeview::RegisterId::ARM64_D30, AArch64::D30},
204 {codeview::RegisterId::ARM64_D31, AArch64::D31},
205 {codeview::RegisterId::ARM64_Q0, AArch64::Q0},
206 {codeview::RegisterId::ARM64_Q1, AArch64::Q1},
207 {codeview::RegisterId::ARM64_Q2, AArch64::Q2},
208 {codeview::RegisterId::ARM64_Q3, AArch64::Q3},
209 {codeview::RegisterId::ARM64_Q4, AArch64::Q4},
210 {codeview::RegisterId::ARM64_Q5, AArch64::Q5},
211 {codeview::RegisterId::ARM64_Q6, AArch64::Q6},
212 {codeview::RegisterId::ARM64_Q7, AArch64::Q7},
213 {codeview::RegisterId::ARM64_Q8, AArch64::Q8},
214 {codeview::RegisterId::ARM64_Q9, AArch64::Q9},
215 {codeview::RegisterId::ARM64_Q10, AArch64::Q10},
216 {codeview::RegisterId::ARM64_Q11, AArch64::Q11},
217 {codeview::RegisterId::ARM64_Q12, AArch64::Q12},
218 {codeview::RegisterId::ARM64_Q13, AArch64::Q13},
219 {codeview::RegisterId::ARM64_Q14, AArch64::Q14},
220 {codeview::RegisterId::ARM64_Q15, AArch64::Q15},
221 {codeview::RegisterId::ARM64_Q16, AArch64::Q16},
222 {codeview::RegisterId::ARM64_Q17, AArch64::Q17},
223 {codeview::RegisterId::ARM64_Q18, AArch64::Q18},
224 {codeview::RegisterId::ARM64_Q19, AArch64::Q19},
225 {codeview::RegisterId::ARM64_Q20, AArch64::Q20},
226 {codeview::RegisterId::ARM64_Q21, AArch64::Q21},
227 {codeview::RegisterId::ARM64_Q22, AArch64::Q22},
228 {codeview::RegisterId::ARM64_Q23, AArch64::Q23},
229 {codeview::RegisterId::ARM64_Q24, AArch64::Q24},
230 {codeview::RegisterId::ARM64_Q25, AArch64::Q25},
231 {codeview::RegisterId::ARM64_Q26, AArch64::Q26},
232 {codeview::RegisterId::ARM64_Q27, AArch64::Q27},
233 {codeview::RegisterId::ARM64_Q28, AArch64::Q28},
234 {codeview::RegisterId::ARM64_Q29, AArch64::Q29},
235 {codeview::RegisterId::ARM64_Q30, AArch64::Q30},
236 {codeview::RegisterId::ARM64_Q31, AArch64::Q31},
237 {codeview::RegisterId::ARM64_B0, AArch64::B0},
238 {codeview::RegisterId::ARM64_B1, AArch64::B1},
239 {codeview::RegisterId::ARM64_B2, AArch64::B2},
240 {codeview::RegisterId::ARM64_B3, AArch64::B3},
241 {codeview::RegisterId::ARM64_B4, AArch64::B4},
242 {codeview::RegisterId::ARM64_B5, AArch64::B5},
243 {codeview::RegisterId::ARM64_B6, AArch64::B6},
244 {codeview::RegisterId::ARM64_B7, AArch64::B7},
245 {codeview::RegisterId::ARM64_B8, AArch64::B8},
246 {codeview::RegisterId::ARM64_B9, AArch64::B9},
247 {codeview::RegisterId::ARM64_B10, AArch64::B10},
248 {codeview::RegisterId::ARM64_B11, AArch64::B11},
249 {codeview::RegisterId::ARM64_B12, AArch64::B12},
250 {codeview::RegisterId::ARM64_B13, AArch64::B13},
251 {codeview::RegisterId::ARM64_B14, AArch64::B14},
252 {codeview::RegisterId::ARM64_B15, AArch64::B15},
253 {codeview::RegisterId::ARM64_B16, AArch64::B16},
254 {codeview::RegisterId::ARM64_B17, AArch64::B17},
255 {codeview::RegisterId::ARM64_B18, AArch64::B18},
256 {codeview::RegisterId::ARM64_B19, AArch64::B19},
257 {codeview::RegisterId::ARM64_B20, AArch64::B20},
258 {codeview::RegisterId::ARM64_B21, AArch64::B21},
259 {codeview::RegisterId::ARM64_B22, AArch64::B22},
260 {codeview::RegisterId::ARM64_B23, AArch64::B23},
261 {codeview::RegisterId::ARM64_B24, AArch64::B24},
262 {codeview::RegisterId::ARM64_B25, AArch64::B25},
263 {codeview::RegisterId::ARM64_B26, AArch64::B26},
264 {codeview::RegisterId::ARM64_B27, AArch64::B27},
265 {codeview::RegisterId::ARM64_B28, AArch64::B28},
266 {codeview::RegisterId::ARM64_B29, AArch64::B29},
267 {codeview::RegisterId::ARM64_B30, AArch64::B30},
268 {codeview::RegisterId::ARM64_B31, AArch64::B31},
269 {codeview::RegisterId::ARM64_H0, AArch64::H0},
270 {codeview::RegisterId::ARM64_H1, AArch64::H1},
271 {codeview::RegisterId::ARM64_H2, AArch64::H2},
272 {codeview::RegisterId::ARM64_H3, AArch64::H3},
273 {codeview::RegisterId::ARM64_H4, AArch64::H4},
274 {codeview::RegisterId::ARM64_H5, AArch64::H5},
275 {codeview::RegisterId::ARM64_H6, AArch64::H6},
276 {codeview::RegisterId::ARM64_H7, AArch64::H7},
277 {codeview::RegisterId::ARM64_H8, AArch64::H8},
278 {codeview::RegisterId::ARM64_H9, AArch64::H9},
279 {codeview::RegisterId::ARM64_H10, AArch64::H10},
280 {codeview::RegisterId::ARM64_H11, AArch64::H11},
281 {codeview::RegisterId::ARM64_H12, AArch64::H12},
282 {codeview::RegisterId::ARM64_H13, AArch64::H13},
283 {codeview::RegisterId::ARM64_H14, AArch64::H14},
284 {codeview::RegisterId::ARM64_H15, AArch64::H15},
285 {codeview::RegisterId::ARM64_H16, AArch64::H16},
286 {codeview::RegisterId::ARM64_H17, AArch64::H17},
287 {codeview::RegisterId::ARM64_H18, AArch64::H18},
288 {codeview::RegisterId::ARM64_H19, AArch64::H19},
289 {codeview::RegisterId::ARM64_H20, AArch64::H20},
290 {codeview::RegisterId::ARM64_H21, AArch64::H21},
291 {codeview::RegisterId::ARM64_H22, AArch64::H22},
292 {codeview::RegisterId::ARM64_H23, AArch64::H23},
293 {codeview::RegisterId::ARM64_H24, AArch64::H24},
294 {codeview::RegisterId::ARM64_H25, AArch64::H25},
295 {codeview::RegisterId::ARM64_H26, AArch64::H26},
296 {codeview::RegisterId::ARM64_H27, AArch64::H27},
297 {codeview::RegisterId::ARM64_H28, AArch64::H28},
298 {codeview::RegisterId::ARM64_H29, AArch64::H29},
299 {codeview::RegisterId::ARM64_H30, AArch64::H30},
300 {codeview::RegisterId::ARM64_H31, AArch64::H31},
302 for (
const auto &
I : RegMap)
303 MRI->mapLLVMRegToCVReg(
I.Reg,
static_cast<int>(
I.CVReg));
307 const auto &FPR16 = AArch64MCRegisterClasses[AArch64::FPR16RegClassID];
309 return Op.isReg() && FPR16.contains(
Op.getReg());
314 const auto &FPR128 = AArch64MCRegisterClasses[AArch64::FPR128RegClassID];
316 return Op.isReg() && FPR128.contains(
Op.getReg());
321 const auto &FPR128 = AArch64MCRegisterClasses[AArch64::FPR128RegClassID];
322 const auto &FPR64 = AArch64MCRegisterClasses[AArch64::FPR64RegClassID];
323 const auto &FPR32 = AArch64MCRegisterClasses[AArch64::FPR32RegClassID];
324 const auto &FPR16 = AArch64MCRegisterClasses[AArch64::FPR16RegClassID];
325 const auto &FPR8 = AArch64MCRegisterClasses[AArch64::FPR8RegClassID];
330 auto Reg =
Op.getReg();
331 return FPR128.contains(Reg) || FPR64.contains(Reg) || FPR32.contains(Reg) ||
332 FPR16.contains(Reg) || FPR8.contains(Reg);
340 InitAArch64MCRegisterInfo(
X, AArch64::LR);
361 unsigned Reg =
MRI.getDwarfRegNum(AArch64::SP,
true);
369 unsigned SyntaxVariant,
373 if (SyntaxVariant == 0)
375 if (SyntaxVariant == 1)
382 std::unique_ptr<MCAsmBackend> &&TAB,
383 std::unique_ptr<MCObjectWriter> &&OW,
384 std::unique_ptr<MCCodeEmitter> &&
Emitter) {
391 std::unique_ptr<MCObjectWriter> &&OW,
392 std::unique_ptr<MCCodeEmitter> &&
Emitter) {
400 std::unique_ptr<MCObjectWriter> &&OW,
401 std::unique_ptr<MCCodeEmitter> &&
Emitter) {
423 else if (Inst.
getOpcode() == AArch64::ADRP)
434 APInt &Mask)
const override {
436 unsigned NumDefs =
Desc.getNumDefs();
437 unsigned NumImplicitDefs =
Desc.implicit_defs().size();
438 assert(
Mask.getBitWidth() == NumDefs + NumImplicitDefs &&
439 "Unexpected number of bits in the mask!");
448 MRI.getRegClass(AArch64::FPR128RegClassID);
450 auto ClearsSuperReg = [=](
unsigned RegID) {
467 for (
unsigned I = 0, E = NumDefs;
I < E; ++
I) {
469 if (ClearsSuperReg(
Op.getReg()))
473 for (
unsigned I = 0, E = NumImplicitDefs;
I < E; ++
I) {
475 if (ClearsSuperReg(Reg))
476 Mask.setBit(NumDefs +
I);
479 return Mask.getBoolValue();
482 std::vector<std::pair<uint64_t, uint64_t>>
484 const Triple &TargetTriple)
const override {
486 std::vector<std::pair<uint64_t, uint64_t>>
Result;
492 if (
Insn == 0xd503245f) {
497 if ((
Insn & 0x9f000000) != 0x90000000)
501 (((
Insn >> 29) & 3) << 12) + (((
Insn >> 5) & 0x3ffff) << 14);
505 if (Insn2 >> 22 == 0x3e5) {
506 Imm += ((Insn2 >> 10) & 0xfff) << 3;
507 Result.push_back(std::make_pair(PltSectionVA + Byte, Imm));
518 return new AArch64MCInstrAnalysis(
Info);
unsigned const MachineRegisterInfo * MRI
static MCStreamer * createELFStreamer(const Triple &T, MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter)
static MCStreamer * createWinCOFFStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter)
static MCInstPrinter * createAArch64MCInstPrinter(const Triple &T, unsigned SyntaxVariant, const MCAsmInfo &MAI, const MCInstrInfo &MII, const MCRegisterInfo &MRI)
static MCSubtargetInfo * createAArch64MCSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS)
static MCRegisterInfo * createAArch64MCRegisterInfo(const Triple &Triple)
static MCStreamer * createMachOStreamer(MCContext &Ctx, std::unique_ptr< MCAsmBackend > &&TAB, std::unique_ptr< MCObjectWriter > &&OW, std::unique_ptr< MCCodeEmitter > &&Emitter)
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)
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())
Class for arbitrary precision integers.
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 represents an Operation in the Expression.
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, int64_t Offset, SMLoc Loc={})
.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, const Triple &TargetTriple) const
Returns (PLT virtual address, GOT virtual address) pairs for PLT entries.
virtual bool clearsSuperRegisters(const MCRegisterInfo &MRI, const MCInst &Inst, APInt &Writes) const
Returns true if at least one of the register writes performed by.
Describe properties that are true of each instruction in the target description file.
Interface to description of machine instruction set.
Instances of this class represent operands of the MCInst class.
MCRegisterClass - Base class of TargetRegisterClass.
bool contains(MCRegister Reg) const
contains - Return true if the specified register is included in this register 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.
bool isHForm(const MCInst &MI, const MCInstrInfo *MCII)
void initLLVMToCVRegMapping(MCRegisterInfo *MRI)
bool isQForm(const MCInst &MI, const MCInstrInfo *MCII)
bool isFpOrNEON(const MCInst &MI, const MCInstrInfo *MCII)
StringRef resolveCPUAlias(StringRef CPU)
constexpr std::underlying_type_t< E > Mask()
Get a bitmask with 1s in all places up to the high-order bit of E's largest value.
Reg
All possible values of the reg field in the ModR/M byte.
uint32_t read32le(const void *P)
This is an optimization pass for GlobalISel generic memory operations.
MCTargetStreamer * createAArch64AsmTargetStreamer(MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint)
Target & getTheAArch64beTarget()
MCWinCOFFStreamer * createAArch64WinCOFFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
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()
Target & getTheARM64Target()
DWARFExpression::Operation Op
MCAsmBackend * createAArch64beAsmBackend(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
MCELFStreamer * createAArch64ELFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
MCTargetStreamer * createAArch64ObjectTargetStreamer(MCStreamer &S, const MCSubtargetInfo &STI)
MCCodeEmitter * createAArch64MCCodeEmitter(const MCInstrInfo &MCII, MCContext &Ctx)
Description of the encoding of one expression Op.
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)