| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 1 | //===-- AArch64MCTargetDesc.h - AArch64 Target Descriptions -----*- C++ -*-===// |
| 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file is distributed under the University of Illinois Open Source |
| 6 | // License. See LICENSE.TXT for details. |
| 7 | // |
| 8 | //===----------------------------------------------------------------------===// |
| 9 | // |
| 10 | // This file provides AArch64 specific target descriptions. |
| 11 | // |
| 12 | //===----------------------------------------------------------------------===// |
| 13 | |
| Benjamin Kramer | a7c40ef | 2014-08-13 16:26:38 +0000 | [diff] [blame] | 14 | #ifndef LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCTARGETDESC_H |
| 15 | #define LLVM_LIB_TARGET_AARCH64_MCTARGETDESC_AARCH64MCTARGETDESC_H |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 16 | |
| 17 | #include "llvm/Support/DataTypes.h" |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 18 | |
| Lang Hames | 60fbc7c | 2017-10-10 16:28:07 +0000 | [diff] [blame] | 19 | #include <memory> |
| 20 | |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 21 | namespace llvm { |
| Chad Rosier | dcd2a30 | 2014-10-22 20:35:57 +0000 | [diff] [blame] | 22 | class formatted_raw_ostream; |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 23 | class MCAsmBackend; |
| 24 | class MCCodeEmitter; |
| 25 | class MCContext; |
| 26 | class MCInstrInfo; |
| Chad Rosier | dcd2a30 | 2014-10-22 20:35:57 +0000 | [diff] [blame] | 27 | class MCInstPrinter; |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 28 | class MCRegisterInfo; |
| Peter Collingbourne | dcd7d6c | 2018-05-21 19:20:29 +0000 | [diff] [blame] | 29 | class MCObjectTargetWriter; |
| Chad Rosier | dcd2a30 | 2014-10-22 20:35:57 +0000 | [diff] [blame] | 30 | class MCStreamer; |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 31 | class MCSubtargetInfo; |
| Joel Jones | 373d7d3 | 2016-07-25 17:18:28 +0000 | [diff] [blame] | 32 | class MCTargetOptions; |
| Rafael Espindola | 73870dd | 2015-03-16 21:43:42 +0000 | [diff] [blame] | 33 | class MCTargetStreamer; |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 34 | class StringRef; |
| 35 | class Target; |
| Daniel Sanders | 50f1723 | 2015-09-15 16:17:27 +0000 | [diff] [blame] | 36 | class Triple; |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 37 | class raw_ostream; |
| Rafael Espindola | 5560a4c | 2015-04-14 22:14:34 +0000 | [diff] [blame] | 38 | class raw_pwrite_stream; |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 39 | |
| Mehdi Amini | f42454b | 2016-10-09 23:00:34 +0000 | [diff] [blame] | 40 | Target &getTheAArch64leTarget(); |
| 41 | Target &getTheAArch64beTarget(); |
| 42 | Target &getTheARM64Target(); |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 43 | |
| 44 | MCCodeEmitter *createAArch64MCCodeEmitter(const MCInstrInfo &MCII, |
| Eric Christopher | 0169e42 | 2015-03-10 22:03:14 +0000 | [diff] [blame] | 45 | const MCRegisterInfo &MRI, |
| 46 | MCContext &Ctx); |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 47 | MCAsmBackend *createAArch64leAsmBackend(const Target &T, |
| Alex Bradbury | b22f751 | 2018-01-03 08:53:05 +0000 | [diff] [blame] | 48 | const MCSubtargetInfo &STI, |
| Daniel Sanders | 418caf5 | 2015-06-10 10:35:34 +0000 | [diff] [blame] | 49 | const MCRegisterInfo &MRI, |
| Joel Jones | 373d7d3 | 2016-07-25 17:18:28 +0000 | [diff] [blame] | 50 | const MCTargetOptions &Options); |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 51 | MCAsmBackend *createAArch64beAsmBackend(const Target &T, |
| Alex Bradbury | b22f751 | 2018-01-03 08:53:05 +0000 | [diff] [blame] | 52 | const MCSubtargetInfo &STI, |
| Daniel Sanders | 418caf5 | 2015-06-10 10:35:34 +0000 | [diff] [blame] | 53 | const MCRegisterInfo &MRI, |
| Joel Jones | 373d7d3 | 2016-07-25 17:18:28 +0000 | [diff] [blame] | 54 | const MCTargetOptions &Options); |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 55 | |
| Peter Collingbourne | dcd7d6c | 2018-05-21 19:20:29 +0000 | [diff] [blame] | 56 | std::unique_ptr<MCObjectTargetWriter> |
| 57 | createAArch64ELFObjectWriter(uint8_t OSABI, bool IsILP32); |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 58 | |
| Peter Collingbourne | dcd7d6c | 2018-05-21 19:20:29 +0000 | [diff] [blame] | 59 | std::unique_ptr<MCObjectTargetWriter> |
| 60 | createAArch64MachObjectWriter(uint32_t CPUType, uint32_t CPUSubtype); |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 61 | |
| Peter Collingbourne | dcd7d6c | 2018-05-21 19:20:29 +0000 | [diff] [blame] | 62 | std::unique_ptr<MCObjectTargetWriter> createAArch64WinCOFFObjectWriter(); |
| Mandeep Singh Grang | 0c72172 | 2017-06-27 23:58:19 +0000 | [diff] [blame] | 63 | |
| Rafael Espindola | 73870dd | 2015-03-16 21:43:42 +0000 | [diff] [blame] | 64 | MCTargetStreamer *createAArch64AsmTargetStreamer(MCStreamer &S, |
| 65 | formatted_raw_ostream &OS, |
| 66 | MCInstPrinter *InstPrint, |
| 67 | bool isVerboseAsm); |
| Rafael Espindola | cd584a8 | 2015-03-19 01:50:16 +0000 | [diff] [blame] | 68 | |
| 69 | MCTargetStreamer *createAArch64ObjectTargetStreamer(MCStreamer &S, |
| 70 | const MCSubtargetInfo &STI); |
| 71 | |
| Mandeep Singh Grang | d41ac89 | 2017-07-20 20:20:00 +0000 | [diff] [blame] | 72 | namespace AArch64_MC { |
| 73 | void initLLVMToCVRegMapping(MCRegisterInfo *MRI); |
| 74 | } |
| 75 | |
| Alexander Kornienko | f00654e | 2015-06-23 09:49:53 +0000 | [diff] [blame] | 76 | } // End llvm namespace |
| Tim Northover | 3b0846e | 2014-05-24 12:50:23 +0000 | [diff] [blame] | 77 | |
| 78 | // Defines symbolic names for AArch64 registers. This defines a mapping from |
| 79 | // register name to register number. |
| 80 | // |
| 81 | #define GET_REGINFO_ENUM |
| 82 | #include "AArch64GenRegisterInfo.inc" |
| 83 | |
| 84 | // Defines symbolic names for the AArch64 instructions. |
| 85 | // |
| 86 | #define GET_INSTRINFO_ENUM |
| 87 | #include "AArch64GenInstrInfo.inc" |
| 88 | |
| 89 | #define GET_SUBTARGETINFO_ENUM |
| 90 | #include "AArch64GenSubtargetInfo.inc" |
| 91 | |
| 92 | #endif |