LLVM 22.0.0git
AArch64MCTargetDesc.h
Go to the documentation of this file.
1//===-- AArch64MCTargetDesc.h - AArch64 Target Descriptions -----*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file provides AArch64 specific target descriptions.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCTARGETDESC_H
14#define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCTARGETDESC_H
15
16#include "llvm/MC/MCInstrDesc.h"
18
19#include <memory>
20
21namespace llvm {
23class MCAsmBackend;
24class MCCodeEmitter;
25class MCContext;
26class MCInst;
27class MCInstrInfo;
28class MCInstPrinter;
29class MCRegisterInfo;
31class MCStreamer;
32class MCSubtargetInfo;
33class MCTargetOptions;
35class Target;
36class Triple;
37
39 MCContext &Ctx);
41 const MCSubtargetInfo &STI,
42 const MCRegisterInfo &MRI,
45 const MCSubtargetInfo &STI,
46 const MCRegisterInfo &MRI,
48
49std::unique_ptr<MCObjectTargetWriter>
50createAArch64ELFObjectWriter(uint8_t OSABI, bool IsILP32);
51
52std::unique_ptr<MCObjectTargetWriter>
53createAArch64MachObjectWriter(uint32_t CPUType, uint32_t CPUSubtype,
54 bool IsILP32);
55
56std::unique_ptr<MCObjectTargetWriter>
58
61 MCInstPrinter *InstPrint);
62
63namespace AArch64_MC {
65bool isHForm(const MCInst &MI, const MCInstrInfo *MCII);
66bool isQForm(const MCInst &MI, const MCInstrInfo *MCII);
67bool isFpOrNEON(const MCInst &MI, const MCInstrInfo *MCII);
68} // namespace AArch64_MC
69
70namespace AArch64 {
75} // namespace AArch64
76
77} // namespace llvm
78
79// Defines symbolic names for AArch64 registers. This defines a mapping from
80// register name to register number.
81//
82#define GET_REGINFO_ENUM
83#include "AArch64GenRegisterInfo.inc"
84
85// Defines symbolic names for the AArch64 instructions.
86//
87#define GET_INSTRINFO_ENUM
88#define GET_INSTRINFO_MC_HELPER_DECLS
89#include "AArch64GenInstrInfo.inc"
90
91#define GET_SUBTARGETINFO_ENUM
92#include "AArch64GenSubtargetInfo.inc"
93
94#endif
unsigned const MachineRegisterInfo * MRI
IRTranslator LLVM IR MI
static LVOptions Options
Definition LVOptions.cpp:25
#define T
Generic interface to target specific assembler backends.
MCCodeEmitter - Generic instruction encoding interface.
Context object for machine code objects.
Definition MCContext.h:83
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.
Definition MCInst.h:188
Interface to description of machine instruction set.
Definition MCInstrInfo.h:27
Base class for classes that define behaviour that is specific to both the target and the object forma...
MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...
Streaming machine code generation interface.
Definition MCStreamer.h:220
Generic base class for all target subtargets.
Target specific streamer interface.
Definition MCStreamer.h:93
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
Definition Triple.h:47
formatted_raw_ostream - A raw_ostream that wraps another one and keeps track of line and column posit...
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)
@ OPERAND_FIRST_TARGET
Definition MCInstrDesc.h:79
This is an optimization pass for GlobalISel generic memory operations.
MCTargetStreamer * createAArch64AsmTargetStreamer(MCStreamer &S, formatted_raw_ostream &OS, MCInstPrinter *InstPrint)
std::unique_ptr< MCObjectTargetWriter > createAArch64WinCOFFObjectWriter(const Triple &TheTriple)
MCAsmBackend * createAArch64leAsmBackend(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
std::unique_ptr< MCObjectTargetWriter > createAArch64MachObjectWriter(uint32_t CPUType, uint32_t CPUSubtype, bool IsILP32)
MCAsmBackend * createAArch64beAsmBackend(const Target &T, const MCSubtargetInfo &STI, const MCRegisterInfo &MRI, const MCTargetOptions &Options)
std::unique_ptr< MCObjectTargetWriter > createAArch64ELFObjectWriter(uint8_t OSABI, bool IsILP32)
MCCodeEmitter * createAArch64MCCodeEmitter(const MCInstrInfo &MCII, MCContext &Ctx)