LLVM API Documentation

PPCMCTargetDesc.h
Go to the documentation of this file.
00001 //===-- PPCMCTargetDesc.h - PowerPC Target Descriptions ---------*- C++ -*-===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 //
00010 // This file provides PowerPC specific target descriptions.
00011 //
00012 //===----------------------------------------------------------------------===//
00013 
00014 #ifndef PPCMCTARGETDESC_H
00015 #define PPCMCTARGETDESC_H
00016 
00017 // GCC #defines PPC on Linux but we use it as our namespace name
00018 #undef PPC
00019 
00020 #include "llvm/Support/DataTypes.h"
00021 
00022 namespace llvm {
00023 class MCAsmBackend;
00024 class MCCodeEmitter;
00025 class MCContext;
00026 class MCInstrInfo;
00027 class MCObjectWriter;
00028 class MCRegisterInfo;
00029 class MCSubtargetInfo;
00030 class Target;
00031 class StringRef;
00032 class raw_ostream;
00033 
00034 extern Target ThePPC32Target;
00035 extern Target ThePPC64Target;
00036   
00037 MCCodeEmitter *createPPCMCCodeEmitter(const MCInstrInfo &MCII,
00038                                       const MCRegisterInfo &MRI,
00039                                       const MCSubtargetInfo &STI,
00040                                       MCContext &Ctx);
00041 
00042 MCAsmBackend *createPPCAsmBackend(const Target &T, StringRef TT, StringRef CPU);
00043 
00044 /// createPPCELFObjectWriter - Construct an PPC ELF object writer.
00045 MCObjectWriter *createPPCELFObjectWriter(raw_ostream &OS,
00046                                          bool Is64Bit,
00047                                          uint8_t OSABI);
00048 } // End llvm namespace
00049 
00050 // Generated files will use "namespace PPC". To avoid symbol clash,
00051 // undefine PPC here. PPC may be predefined on some hosts.
00052 #undef PPC
00053 
00054 // Defines symbolic names for PowerPC registers.  This defines a mapping from
00055 // register name to register number.
00056 //
00057 #define GET_REGINFO_ENUM
00058 #include "PPCGenRegisterInfo.inc"
00059 
00060 // Defines symbolic names for the PowerPC instructions.
00061 //
00062 #define GET_INSTRINFO_ENUM
00063 #include "PPCGenInstrInfo.inc"
00064 
00065 #define GET_SUBTARGETINFO_ENUM
00066 #include "PPCGenSubtargetInfo.inc"
00067 
00068 #endif