Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/M68k/M68kTargetMachine.h
35266 views
1
//===-- M68kTargetMachine.h - Define TargetMachine for M68k -----*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
///
9
/// \file
10
/// This file declares the M68k specific subclass of TargetMachine.
11
///
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_LIB_TARGET_M68K_M68KTARGETMACHINE_H
15
#define LLVM_LIB_TARGET_M68K_M68KTARGETMACHINE_H
16
17
#include "M68kSubtarget.h"
18
#include "MCTargetDesc/M68kMCTargetDesc.h"
19
20
#include "llvm/CodeGen/Passes.h"
21
#include "llvm/CodeGen/SelectionDAGISel.h"
22
#include "llvm/CodeGen/TargetFrameLowering.h"
23
#include "llvm/Target/TargetMachine.h"
24
25
#include <optional>
26
27
namespace llvm {
28
class formatted_raw_ostream;
29
class M68kRegisterInfo;
30
31
class M68kTargetMachine : public LLVMTargetMachine {
32
std::unique_ptr<TargetLoweringObjectFile> TLOF;
33
M68kSubtarget Subtarget;
34
35
mutable StringMap<std::unique_ptr<M68kSubtarget>> SubtargetMap;
36
37
public:
38
M68kTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
39
StringRef FS, const TargetOptions &Options,
40
std::optional<Reloc::Model> RM,
41
std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,
42
bool JIT);
43
44
~M68kTargetMachine() override;
45
46
const M68kSubtarget *getSubtargetImpl() const { return &Subtarget; }
47
48
const M68kSubtarget *getSubtargetImpl(const Function &F) const override;
49
50
MachineFunctionInfo *
51
createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,
52
const TargetSubtargetInfo *STI) const override;
53
54
// Pass Pipeline Configuration
55
TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
56
57
TargetLoweringObjectFile *getObjFileLowering() const override {
58
return TLOF.get();
59
}
60
};
61
} // namespace llvm
62
63
#endif // LLVM_LIB_TARGET_M68K_M68KTARGETMACHINE_H
64
65