1//===-- MSP430MCTargetDesc.h - MSP430 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 MSP430 specific target descriptions.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_MSP430_MCTARGETDESC_MSP430MCTARGETDESC_H
14#define LLVM_LIB_TARGET_MSP430_MCTARGETDESC_MSP430MCTARGETDESC_H
15
16#include "llvm/Support/DataTypes.h"
17#include <memory>
18
19namespace llvm {
20class Target;
21class MCAsmBackend;
22class MCCodeEmitter;
23class MCInstrInfo;
24class MCSubtargetInfo;
25class MCRegisterInfo;
26class MCContext;
27class MCTargetOptions;
28class MCObjectTargetWriter;
29class MCStreamer;
30class MCTargetStreamer;
31
32/// Creates a machine code emitter for MSP430.
33MCCodeEmitter *createMSP430MCCodeEmitter(const MCInstrInfo &MCII,
34 MCContext &Ctx);
35
36MCAsmBackend *createMSP430MCAsmBackend(const Target &T,
37 const MCSubtargetInfo &STI,
38 const MCRegisterInfo &MRI,
39 const MCTargetOptions &Options);
40
41MCTargetStreamer *
42createMSP430ObjectTargetStreamer(MCStreamer &S, const MCSubtargetInfo &STI);
43
44std::unique_ptr<MCObjectTargetWriter>
45createMSP430ELFObjectWriter(uint8_t OSABI);
46
47} // End llvm namespace
48
49// Defines symbolic names for MSP430 registers.
50// This defines a mapping from register name to register number.
51#define GET_REGINFO_ENUM
52#include "MSP430GenRegisterInfo.inc"
53
54// Defines symbolic names for the MSP430 instructions.
55#define GET_INSTRINFO_ENUM
56#define GET_INSTRINFO_MC_HELPER_DECLS
57#include "MSP430GenInstrInfo.inc"
58
59#define GET_SUBTARGETINFO_ENUM
60#include "MSP430GenSubtargetInfo.inc"
61
62#endif
63