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;
36263508Sdimextern Target ThePPC64LETarget;
37224133Sdim
38226633SdimMCCodeEmitter *createPPCMCCodeEmitter(const MCInstrInfo &MCII,
39239462Sdim                                      const MCRegisterInfo &MRI,
40226633Sdim                                      const MCSubtargetInfo &STI,
41226633Sdim                                      MCContext &Ctx);
42226633Sdim
43263508SdimMCAsmBackend *createPPCAsmBackend(const Target &T, const MCRegisterInfo &MRI,
44263508Sdim                                  StringRef TT, StringRef CPU);
45234353Sdim
46234353Sdim/// createPPCELFObjectWriter - Construct an PPC ELF object writer.
47234353SdimMCObjectWriter *createPPCELFObjectWriter(raw_ostream &OS,
48234353Sdim                                         bool Is64Bit,
49234353Sdim                                         uint8_t OSABI);
50263508Sdim/// createPPCELFObjectWriter - Construct a PPC Mach-O object writer.
51263508SdimMCObjectWriter *createPPCMachObjectWriter(raw_ostream &OS, bool Is64Bit,
52263508Sdim                                          uint32_t CPUType,
53263508Sdim                                          uint32_t CPUSubtype);
54224133Sdim} // End llvm namespace
55224133Sdim
56249423Sdim// Generated files will use "namespace PPC". To avoid symbol clash,
57249423Sdim// undefine PPC here. PPC may be predefined on some hosts.
58249423Sdim#undef PPC
59249423Sdim
60224133Sdim// Defines symbolic names for PowerPC registers.  This defines a mapping from
61224133Sdim// register name to register number.
62224133Sdim//
63224133Sdim#define GET_REGINFO_ENUM
64224133Sdim#include "PPCGenRegisterInfo.inc"
65224133Sdim
66224133Sdim// Defines symbolic names for the PowerPC instructions.
67224133Sdim//
68224133Sdim#define GET_INSTRINFO_ENUM
69224133Sdim#include "PPCGenInstrInfo.inc"
70224133Sdim
71224133Sdim#define GET_SUBTARGETINFO_ENUM
72224133Sdim#include "PPCGenSubtargetInfo.inc"
73224133Sdim
74224133Sdim#endif
75