Added C6000 LLVM target specialization files.
[opencl/llvm.git] / lib / Target / C6000 / C6000TargetMachine.h
1 //===-- C6000TargetMachine.h - Define TargetMachine for C6000 ---*- 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 C6000 specific subclass of TargetMachine.
11 //
12 //===----------------------------------------------------------------------===//
14 #ifndef C6000TARGETMACHINE_H
15 #define C6000TARGETMACHINE_H
17 #include "llvm/IR/DataLayout.h"
18 #include "llvm/Target/TargetFrameLowering.h"
19 #include "llvm/Target/TargetMachine.h"
21 namespace llvm {
23 class C6000TargetMachine : public LLVMTargetMachine {
24   const DataLayout DL;       // Calculates type size & alignment
25 public:
26   C6000TargetMachine(const Target &T, StringRef TT,
27                      StringRef CPU, StringRef FS, const TargetOptions &Options,
28                      Reloc::Model RM, CodeModel::Model CM,
29                      CodeGenOpt::Level OL);
31   const DataLayout       *getDataLayout() const override { return &DL; }
33   /// \brief Register C6000 analysis passes with a pass manager.
34   void addAnalysisPasses(PassManagerBase &PM) override;
36   // Pass Pipeline Configuration
37   TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
38 };
40 } // end namespace llvm
42 #endif