X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FAlpha%2FAlphaTargetMachine.h;h=c00e71c87531e87b55074f883615899b5f16800f;hb=fde1b3bb2f15b74c713d98a79fcddaff1ac00dd1;hp=75d1353238ddf9e7e3c35f96ab088ee7f3ac9e82;hpb=2d6f022a9877bf08cad6f94d29c1c11596ec9499;p=oota-llvm.git diff --git a/lib/Target/Alpha/AlphaTargetMachine.h b/lib/Target/Alpha/AlphaTargetMachine.h index 75d1353238d..c00e71c8753 100644 --- a/lib/Target/Alpha/AlphaTargetMachine.h +++ b/lib/Target/Alpha/AlphaTargetMachine.h @@ -1,12 +1,12 @@ -//===-- AlphaTargetMachine.h - Define TargetMachine for Alpha -*- C++ -*-----=// -// +//===-- AlphaTargetMachine.h - Define TargetMachine for Alpha ---*- C++ -*-===// +// // The LLVM Compiler Infrastructure // // This file was developed by the LLVM research group and is distributed under // the University of Illinois Open Source License. See LICENSE.TXT for details. -// +// //===----------------------------------------------------------------------===// -// +// // This file declares the Alpha-specific subclass of TargetMachine. // //===----------------------------------------------------------------------===// @@ -15,30 +15,50 @@ #define ALPHA_TARGETMACHINE_H #include "llvm/Target/TargetMachine.h" +#include "llvm/Target/TargetData.h" #include "llvm/Target/TargetFrameInfo.h" -#include "llvm/PassManager.h" #include "AlphaInstrInfo.h" +#include "AlphaJITInfo.h" +#include "AlphaSubtarget.h" namespace llvm { class GlobalValue; -class IntrinsicLowering; -class AlphaTargetMachine : public TargetMachine { +class AlphaTargetMachine : public LLVMTargetMachine { + const TargetData DataLayout; // Calculates type size & alignment AlphaInstrInfo InstrInfo; TargetFrameInfo FrameInfo; - -public: - AlphaTargetMachine(const Module &M, IntrinsicLowering *IL); + AlphaJITInfo JITInfo; + AlphaSubtarget Subtarget; - virtual const AlphaInstrInfo *getInstrInfo() const { return &InstrInfo; } +protected: + virtual const TargetAsmInfo *createTargetAsmInfo() const; + +public: + AlphaTargetMachine(const Module &M, const std::string &FS); + + virtual const AlphaInstrInfo *getInstrInfo() const { return &InstrInfo; } virtual const TargetFrameInfo *getFrameInfo() const { return &FrameInfo; } + virtual const TargetSubtarget *getSubtargetImpl() const{ return &Subtarget; } virtual const MRegisterInfo *getRegisterInfo() const { return &InstrInfo.getRegisterInfo(); } - - virtual bool addPassesToEmitAssembly(PassManager &PM, std::ostream &Out); + virtual const TargetData *getTargetData() const { return &DataLayout; } + virtual TargetJITInfo* getJITInfo() { + return &JITInfo; + } + + static unsigned getJITMatchQuality(); + static unsigned getModuleMatchQuality(const Module &M); + // Pass Pipeline Configuration + virtual bool addInstSelector(FunctionPassManager &PM, bool Fast); + virtual bool addPreEmitPass(FunctionPassManager &PM, bool Fast); + virtual bool addAssemblyEmitter(FunctionPassManager &PM, bool Fast, + std::ostream &Out); + virtual bool addCodeEmitter(FunctionPassManager &PM, bool Fast, + MachineCodeEmitter &MCE); }; } // end namespace llvm