1//===-- SparcMCTargetDesc.h - Sparc 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 Sparc specific target descriptions.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef SPARCMCTARGETDESC_H
15#define SPARCMCTARGETDESC_H
16
17#include "llvm/Support/DataTypes.h"
18
19namespace llvm {
20class MCAsmBackend;
21class MCCodeEmitter;
22class MCContext;
23class MCInstrInfo;
24class MCObjectWriter;
25class MCRegisterInfo;
26class MCSubtargetInfo;
27class Target;
28class StringRef;
29class raw_ostream;
30
31extern Target TheSparcTarget;
32extern Target TheSparcV9Target;
33
34MCCodeEmitter *createSparcMCCodeEmitter(const MCInstrInfo &MCII,
35                                        const MCRegisterInfo &MRI,
36                                        const MCSubtargetInfo &STI,
37                                        MCContext &Ctx);
38MCAsmBackend *createSparcAsmBackend(const Target &T,
39                                    const MCRegisterInfo &MRI,
40                                    StringRef TT,
41                                    StringRef CPU);
42MCObjectWriter *createSparcELFObjectWriter(raw_ostream &OS,
43                                           bool Is64Bit,
44                                           uint8_t OSABI);
45} // End llvm namespace
46
47// Defines symbolic names for Sparc registers.  This defines a mapping from
48// register name to register number.
49//
50#define GET_REGINFO_ENUM
51#include "SparcGenRegisterInfo.inc"
52
53// Defines symbolic names for the Sparc instructions.
54//
55#define GET_INSTRINFO_ENUM
56#include "SparcGenInstrInfo.inc"
57
58#define GET_SUBTARGETINFO_ENUM
59#include "SparcGenSubtargetInfo.inc"
60
61#endif
62