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