blob: 902abb0745a5034bb57679d205174646c3513833 [file] [log] [blame]
Misha Brukmanf2ccb772004-08-17 04:55:41 +00001//===-- PPC32TargetMachine.h - Define TargetMachine for PowerPC -*- C++ -*-=//
Misha Brukmanb5f662f2005-04-21 23:30:14 +00002//
Misha Brukman3d9a6c22004-08-11 00:09:42 +00003// The LLVM Compiler Infrastructure
4//
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.
Misha Brukmanb5f662f2005-04-21 23:30:14 +00007//
Misha Brukman3d9a6c22004-08-11 00:09:42 +00008//===----------------------------------------------------------------------===//
Misha Brukmanb5f662f2005-04-21 23:30:14 +00009//
Misha Brukmanf2ccb772004-08-17 04:55:41 +000010// This file declares the PowerPC specific subclass of TargetMachine.
Misha Brukman3d9a6c22004-08-11 00:09:42 +000011//
12//===----------------------------------------------------------------------===//
13
Misha Brukmanf2ccb772004-08-17 04:55:41 +000014#ifndef POWERPC32_TARGETMACHINE_H
15#define POWERPC32_TARGETMACHINE_H
Misha Brukman3d9a6c22004-08-11 00:09:42 +000016
Misha Brukman3d9a6c22004-08-11 00:09:42 +000017#include "PowerPCTargetMachine.h"
Chris Lattnere4fce6f2004-11-23 05:56:40 +000018#include "PPC32JITInfo.h"
Misha Brukmanf2ccb772004-08-17 04:55:41 +000019#include "PPC32InstrInfo.h"
20#include "llvm/PassManager.h"
Misha Brukman3d9a6c22004-08-11 00:09:42 +000021
22namespace llvm {
23
Misha Brukman3d9a6c22004-08-11 00:09:42 +000024class IntrinsicLowering;
25
26class PPC32TargetMachine : public PowerPCTargetMachine {
Misha Brukmanf2ccb772004-08-17 04:55:41 +000027 PPC32InstrInfo InstrInfo;
Chris Lattnere4fce6f2004-11-23 05:56:40 +000028 PPC32JITInfo JITInfo;
Misha Brukmanf2ccb772004-08-17 04:55:41 +000029
Misha Brukman3d9a6c22004-08-11 00:09:42 +000030public:
Jim Laskeyb1e11802005-09-01 21:38:21 +000031 PPC32TargetMachine(const Module &M, IntrinsicLowering *IL,
32 const std::string &FS);
Misha Brukmanf2ccb772004-08-17 04:55:41 +000033 virtual const PPC32InstrInfo *getInstrInfo() const { return &InstrInfo; }
34 virtual const MRegisterInfo *getRegisterInfo() const {
35 return &InstrInfo.getRegisterInfo();
36 }
Misha Brukman3d9a6c22004-08-11 00:09:42 +000037
Chris Lattnere4fce6f2004-11-23 05:56:40 +000038 virtual TargetJITInfo *getJITInfo() {
39 return &JITInfo;
40 }
41
42 static unsigned getJITMatchQuality();
43
Misha Brukman3d9a6c22004-08-11 00:09:42 +000044 static unsigned getModuleMatchQuality(const Module &M);
Misha Brukmanf2ccb772004-08-17 04:55:41 +000045
46 bool addPassesToEmitMachineCode(FunctionPassManager &PM,
47 MachineCodeEmitter &MCE);
Misha Brukman3d9a6c22004-08-11 00:09:42 +000048};
49
50} // end namespace llvm
51
52#endif