MSP430TargetMachine.h revision cbd9a19b5d6ff93efa82c467508ede78b8af3bac
1//===-- MSP430TargetMachine.h - Define TargetMachine for MSP430 -*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file declares the MSP430 specific subclass of TargetMachine.
11//
12//===----------------------------------------------------------------------===//
13
14
15#ifndef LLVM_TARGET_MSP430_TARGETMACHINE_H
16#define LLVM_TARGET_MSP430_TARGETMACHINE_H
17
18#include "MSP430InstrInfo.h"
19#include "MSP430ISelLowering.h"
20#include "MSP430FrameLowering.h"
21#include "MSP430SelectionDAGInfo.h"
22#include "MSP430RegisterInfo.h"
23#include "MSP430Subtarget.h"
24#include "llvm/DataLayout.h"
25#include "llvm/Target/TargetFrameLowering.h"
26#include "llvm/Target/TargetMachine.h"
27#include "llvm/Target/TargetTransformImpl.h"
28
29namespace llvm {
30
31/// MSP430TargetMachine
32///
33class MSP430TargetMachine : public LLVMTargetMachine {
34  MSP430Subtarget        Subtarget;
35  const DataLayout       DL;       // Calculates type size & alignment
36  MSP430InstrInfo        InstrInfo;
37  MSP430TargetLowering   TLInfo;
38  MSP430SelectionDAGInfo TSInfo;
39  MSP430FrameLowering    FrameLowering;
40  ScalarTargetTransformImpl STTI;
41  VectorTargetTransformImpl VTTI;
42
43public:
44  MSP430TargetMachine(const Target &T, StringRef TT,
45                      StringRef CPU, StringRef FS, const TargetOptions &Options,
46                      Reloc::Model RM, CodeModel::Model CM,
47                      CodeGenOpt::Level OL);
48
49  virtual const TargetFrameLowering *getFrameLowering() const {
50    return &FrameLowering;
51  }
52  virtual const MSP430InstrInfo *getInstrInfo() const  { return &InstrInfo; }
53  virtual const DataLayout *getDataLayout() const     { return &DL;}
54  virtual const MSP430Subtarget *getSubtargetImpl() const { return &Subtarget; }
55
56  virtual const TargetRegisterInfo *getRegisterInfo() const {
57    return &InstrInfo.getRegisterInfo();
58  }
59
60  virtual const MSP430TargetLowering *getTargetLowering() const {
61    return &TLInfo;
62  }
63
64  virtual const MSP430SelectionDAGInfo* getSelectionDAGInfo() const {
65    return &TSInfo;
66  }
67  virtual const ScalarTargetTransformInfo *getScalarTargetTransformInfo()const {
68    return &STTI;
69  }
70  virtual const VectorTargetTransformInfo *getVectorTargetTransformInfo()const {
71    return &VTTI;
72  }
73  virtual TargetPassConfig *createPassConfig(PassManagerBase &PM);
74}; // MSP430TargetMachine.
75
76} // end namespace llvm
77
78#endif // LLVM_TARGET_MSP430_TARGETMACHINE_H
79