SparcTargetMachine.h revision 6f0d024a534af18d9e60b3ea757376cd8a3a980e
1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines//===-- SparcTargetMachine.h - Define TargetMachine for Sparc ---*- C++ -*-===// 2dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// The LLVM Compiler Infrastructure 47967c95891c5f65f6312fbbcb999ac257d776914Warren Hunt// 5dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// This file is distributed under the University of Illinois Open Source 6dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// License. See LICENSE.TXT for details. 7dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// 8dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt//===----------------------------------------------------------------------===// 9dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// 10dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// This file declares the Sparc specific subclass of TargetMachine. 11dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt// 12dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt//===----------------------------------------------------------------------===// 13dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 14dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt#ifndef SPARCTARGETMACHINE_H 15dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt#define SPARCTARGETMACHINE_H 16dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 17dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt#include "llvm/Target/TargetMachine.h" 18dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt#include "llvm/Target/TargetData.h" 19dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt#include "llvm/Target/TargetFrameInfo.h" 20dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt#include "SparcInstrInfo.h" 21dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt#include "SparcSubtarget.h" 22dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 23dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntnamespace llvm { 24dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 25dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntclass Module; 26dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 27dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntclass SparcTargetMachine : public LLVMTargetMachine { 28dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt const TargetData DataLayout; // Calculates type size & alignment 29dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt SparcSubtarget Subtarget; 30dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt SparcInstrInfo InstrInfo; 31dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt TargetFrameInfo FrameInfo; 32dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 33dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntprotected: 34dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt virtual const TargetAsmInfo *createTargetAsmInfo() const; 35dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 36dc58180432868cfa9c060d5c41114634e4b841c7Warren Huntpublic: 37dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt SparcTargetMachine(const Module &M, const std::string &FS); 38dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt 39dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt virtual const SparcInstrInfo *getInstrInfo() const { return &InstrInfo; } 40dc58180432868cfa9c060d5c41114634e4b841c7Warren Hunt virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; } 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines virtual const TargetSubtarget *getSubtargetImpl() const{ return &Subtarget; } 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines virtual const TargetRegisterInfo *getRegisterInfo() const { 43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return &InstrInfo.getRegisterInfo(); 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines } 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines virtual const TargetData *getTargetData() const { return &DataLayout; } 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines static unsigned getModuleMatchQuality(const Module &M); 47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // Pass Pipeline Configuration 49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines virtual bool addInstSelector(FunctionPassManager &PM, bool Fast); 50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines virtual bool addPreEmitPass(FunctionPassManager &PM, bool Fast); 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines virtual bool addAssemblyEmitter(FunctionPassManager &PM, bool Fast, 52651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines std::ostream &Out); 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}; 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} // end namespace llvm 56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#endif 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines