1224133Sdim//===-- SparcMCTargetDesc.h - Sparc Target Descriptions ---------*- C++ -*-===//
2224133Sdim//
3224133Sdim//                     The LLVM Compiler Infrastructure
4224133Sdim//
5224133Sdim// This file is distributed under the University of Illinois Open Source
6224133Sdim// License. See LICENSE.TXT for details.
7224133Sdim//
8224133Sdim//===----------------------------------------------------------------------===//
9224133Sdim//
10224133Sdim// This file provides Sparc specific target descriptions.
11224133Sdim//
12224133Sdim//===----------------------------------------------------------------------===//
13224133Sdim
14224133Sdim#ifndef SPARCMCTARGETDESC_H
15224133Sdim#define SPARCMCTARGETDESC_H
16224133Sdim
17263764Sdim#include "llvm/Support/DataTypes.h"
18263764Sdim
19224133Sdimnamespace llvm {
20263764Sdimclass MCAsmBackend;
21263764Sdimclass MCCodeEmitter;
22263764Sdimclass MCContext;
23263764Sdimclass MCInstrInfo;
24263764Sdimclass MCObjectWriter;
25263764Sdimclass MCRegisterInfo;
26263764Sdimclass MCSubtargetInfo;
27224133Sdimclass Target;
28263764Sdimclass StringRef;
29263764Sdimclass raw_ostream;
30224133Sdim
31224133Sdimextern Target TheSparcTarget;
32224133Sdimextern Target TheSparcV9Target;
33224133Sdim
34263764SdimMCCodeEmitter *createSparcMCCodeEmitter(const MCInstrInfo &MCII,
35263764Sdim                                        const MCRegisterInfo &MRI,
36263764Sdim                                        const MCSubtargetInfo &STI,
37263764Sdim                                        MCContext &Ctx);
38263764SdimMCAsmBackend *createSparcAsmBackend(const Target &T,
39263764Sdim                                    const MCRegisterInfo &MRI,
40263764Sdim                                    StringRef TT,
41263764Sdim                                    StringRef CPU);
42263764SdimMCObjectWriter *createSparcELFObjectWriter(raw_ostream &OS,
43263764Sdim                                           bool Is64Bit,
44263764Sdim                                           uint8_t OSABI);
45224133Sdim} // End llvm namespace
46224133Sdim
47224133Sdim// Defines symbolic names for Sparc registers.  This defines a mapping from
48224133Sdim// register name to register number.
49224133Sdim//
50224133Sdim#define GET_REGINFO_ENUM
51224133Sdim#include "SparcGenRegisterInfo.inc"
52224133Sdim
53224133Sdim// Defines symbolic names for the Sparc instructions.
54224133Sdim//
55224133Sdim#define GET_INSTRINFO_ENUM
56224133Sdim#include "SparcGenInstrInfo.inc"
57224133Sdim
58224133Sdim#define GET_SUBTARGETINFO_ENUM
59224133Sdim#include "SparcGenSubtargetInfo.inc"
60224133Sdim
61224133Sdim#endif
62