1 //===-- SparcTargetMachine.h - Define TargetMachine for Sparc ---*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file declares the primary interface to machine description for the
13 //===----------------------------------------------------------------------===//
15 #ifndef SPARC_TARGETMACHINE_H
16 #define SPARC_TARGETMACHINE_H
18 #include "llvm/PassManager.h"
19 #include "llvm/Target/TargetFrameInfo.h"
20 #include "llvm/Target/TargetMachine.h"
21 #include "SparcInstrInfo.h"
22 #include "SparcInternals.h"
23 #include "SparcRegInfo.h"
24 #include "SparcFrameInfo.h"
25 #include "SparcJITInfo.h"
29 class SparcTargetMachine : public TargetMachine {
30 SparcInstrInfo instrInfo;
31 SparcSchedInfo schedInfo;
33 SparcFrameInfo frameInfo;
34 SparcCacheInfo cacheInfo;
39 virtual const TargetInstrInfo &getInstrInfo() const { return instrInfo; }
40 virtual const TargetSchedInfo &getSchedInfo() const { return schedInfo; }
41 virtual const TargetRegInfo &getRegInfo() const { return regInfo; }
42 virtual const TargetFrameInfo &getFrameInfo() const { return frameInfo; }
43 virtual const TargetCacheInfo &getCacheInfo() const { return cacheInfo; }
44 virtual TargetJITInfo *getJITInfo() { return &jitInfo; }
46 virtual bool addPassesToEmitAssembly(PassManager &PM, std::ostream &Out);
47 virtual bool addPassesToEmitMachineCode(FunctionPassManager &PM,
48 MachineCodeEmitter &MCE);
51 } // End llvm namespace