PPCMCTargetDesc.h revision 249423
1224133Sdim//===-- PPCMCTargetDesc.h - PowerPC 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 PowerPC specific target descriptions.
11224133Sdim//
12224133Sdim//===----------------------------------------------------------------------===//
13224133Sdim
14224133Sdim#ifndef PPCMCTARGETDESC_H
15224133Sdim#define PPCMCTARGETDESC_H
16224133Sdim
17249423Sdim// GCC #defines PPC on Linux but we use it as our namespace name
18249423Sdim#undef PPC
19249423Sdim
20234353Sdim#include "llvm/Support/DataTypes.h"
21234353Sdim
22224133Sdimnamespace llvm {
23226633Sdimclass MCAsmBackend;
24226633Sdimclass MCCodeEmitter;
25226633Sdimclass MCContext;
26226633Sdimclass MCInstrInfo;
27234353Sdimclass MCObjectWriter;
28239462Sdimclass MCRegisterInfo;
29224133Sdimclass MCSubtargetInfo;
30224133Sdimclass Target;
31224133Sdimclass StringRef;
32234353Sdimclass raw_ostream;
33224133Sdim
34224133Sdimextern Target ThePPC32Target;
35224133Sdimextern Target ThePPC64Target;
36224133Sdim
37226633SdimMCCodeEmitter *createPPCMCCodeEmitter(const MCInstrInfo &MCII,
38239462Sdim                                      const MCRegisterInfo &MRI,
39226633Sdim                                      const MCSubtargetInfo &STI,
40226633Sdim                                      MCContext &Ctx);
41226633Sdim
42241430SdimMCAsmBackend *createPPCAsmBackend(const Target &T, StringRef TT, StringRef CPU);
43234353Sdim
44234353Sdim/// createPPCELFObjectWriter - Construct an PPC ELF object writer.
45234353SdimMCObjectWriter *createPPCELFObjectWriter(raw_ostream &OS,
46234353Sdim                                         bool Is64Bit,
47234353Sdim                                         uint8_t OSABI);
48224133Sdim} // End llvm namespace
49224133Sdim
50249423Sdim// Generated files will use "namespace PPC". To avoid symbol clash,
51249423Sdim// undefine PPC here. PPC may be predefined on some hosts.
52249423Sdim#undef PPC
53249423Sdim
54224133Sdim// Defines symbolic names for PowerPC registers.  This defines a mapping from
55224133Sdim// register name to register number.
56224133Sdim//
57224133Sdim#define GET_REGINFO_ENUM
58224133Sdim#include "PPCGenRegisterInfo.inc"
59224133Sdim
60224133Sdim// Defines symbolic names for the PowerPC instructions.
61224133Sdim//
62224133Sdim#define GET_INSTRINFO_ENUM
63224133Sdim#include "PPCGenInstrInfo.inc"
64224133Sdim
65224133Sdim#define GET_SUBTARGETINFO_ENUM
66224133Sdim#include "PPCGenSubtargetInfo.inc"
67224133Sdim
68224133Sdim#endif
69