blob: 2fb1a05361041ee026172eb656ae096a7c5bbfae [file] [log] [blame]
Jacques Pienaarfcef3e42016-03-28 13:09:54 +00001//===-- LanaiTargetMachine.h - Define TargetMachine for Lanai --- 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 Lanai specific subclass of TargetMachine.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H
15#define LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H
16
17#include "LanaiFrameLowering.h"
18#include "LanaiISelLowering.h"
19#include "LanaiInstrInfo.h"
20#include "LanaiSelectionDAGInfo.h"
21#include "LanaiSubtarget.h"
David Blaikie1be62f02017-11-03 22:32:11 +000022#include "llvm/CodeGen/TargetFrameLowering.h"
Jacques Pienaarfcef3e42016-03-28 13:09:54 +000023#include "llvm/Target/TargetMachine.h"
24
25namespace llvm {
26class formatted_raw_ostream;
27
Matthias Braunbb8507e2017-10-12 22:57:28 +000028class LanaiTargetMachine : public LLVMTargetMachine {
Jacques Pienaarfcef3e42016-03-28 13:09:54 +000029 LanaiSubtarget Subtarget;
30 std::unique_ptr<TargetLoweringObjectFile> TLOF;
31
32public:
33 LanaiTargetMachine(const Target &TheTarget, const Triple &TargetTriple,
34 StringRef Cpu, StringRef FeatureString,
Jacques Pienaar813e8372016-05-20 03:21:37 +000035 const TargetOptions &Options,
36 Optional<Reloc::Model> RelocationModel,
Rafael Espindola79e238a2017-08-03 02:16:21 +000037 Optional<CodeModel::Model> CodeModel,
38 CodeGenOpt::Level OptLevel, bool JIT);
Jacques Pienaarfcef3e42016-03-28 13:09:54 +000039
40 const LanaiSubtarget *
Jacques Pienaare2f06992016-07-15 22:38:32 +000041 getSubtargetImpl(const llvm::Function & /*Fn*/) const override {
Jacques Pienaarfcef3e42016-03-28 13:09:54 +000042 return &Subtarget;
43 }
44
45 TargetIRAnalysis getTargetIRAnalysis() override;
46
47 // Pass Pipeline Configuration
48 TargetPassConfig *createPassConfig(PassManagerBase &pass_manager) override;
49
50 TargetLoweringObjectFile *getObjFileLowering() const override {
51 return TLOF.get();
52 }
Matthias Braund6a36ae2017-05-31 18:41:23 +000053
54 bool isMachineVerifierClean() const override {
55 return false;
56 }
Jacques Pienaarfcef3e42016-03-28 13:09:54 +000057};
58} // namespace llvm
59
60#endif // LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H