1 //===-- AArch64MCTargetDesc.h - AArch64 Target Descriptions -----*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 // This file provides AArch64 specific target descriptions.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCTARGETDESC_H
14 #define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCTARGETDESC_H
16 #include "llvm/Support/DataTypes.h"
21 class formatted_raw_ostream
;
28 class MCObjectTargetWriter
;
30 class MCSubtargetInfo
;
31 class MCTargetOptions
;
32 class MCTargetStreamer
;
37 class raw_pwrite_stream
;
39 MCCodeEmitter
*createAArch64MCCodeEmitter(const MCInstrInfo
&MCII
,
40 const MCRegisterInfo
&MRI
,
42 MCAsmBackend
*createAArch64leAsmBackend(const Target
&T
,
43 const MCSubtargetInfo
&STI
,
44 const MCRegisterInfo
&MRI
,
45 const MCTargetOptions
&Options
);
46 MCAsmBackend
*createAArch64beAsmBackend(const Target
&T
,
47 const MCSubtargetInfo
&STI
,
48 const MCRegisterInfo
&MRI
,
49 const MCTargetOptions
&Options
);
51 std::unique_ptr
<MCObjectTargetWriter
>
52 createAArch64ELFObjectWriter(uint8_t OSABI
, bool IsILP32
);
54 std::unique_ptr
<MCObjectTargetWriter
>
55 createAArch64MachObjectWriter(uint32_t CPUType
, uint32_t CPUSubtype
,
58 std::unique_ptr
<MCObjectTargetWriter
> createAArch64WinCOFFObjectWriter();
60 MCTargetStreamer
*createAArch64AsmTargetStreamer(MCStreamer
&S
,
61 formatted_raw_ostream
&OS
,
62 MCInstPrinter
*InstPrint
,
65 MCTargetStreamer
*createAArch64ObjectTargetStreamer(MCStreamer
&S
,
66 const MCSubtargetInfo
&STI
);
68 namespace AArch64_MC
{
69 void initLLVMToCVRegMapping(MCRegisterInfo
*MRI
);
72 } // End llvm namespace
74 // Defines symbolic names for AArch64 registers. This defines a mapping from
75 // register name to register number.
77 #define GET_REGINFO_ENUM
78 #include "AArch64GenRegisterInfo.inc"
80 // Defines symbolic names for the AArch64 instructions.
82 #define GET_INSTRINFO_ENUM
83 #define GET_INSTRINFO_MC_HELPER_DECLS
84 #include "AArch64GenInstrInfo.inc"
86 #define GET_SUBTARGETINFO_ENUM
87 #include "AArch64GenSubtargetInfo.inc"