Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/Lanai/LanaiTargetMachine.h
35271 views
1
//===-- LanaiTargetMachine.h - Define TargetMachine for Lanai --- 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
// This file declares the Lanai specific subclass of TargetMachine.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H
14
#define LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H
15
16
#include "LanaiISelLowering.h"
17
#include "LanaiInstrInfo.h"
18
#include "LanaiSelectionDAGInfo.h"
19
#include "LanaiSubtarget.h"
20
#include "llvm/Target/TargetMachine.h"
21
#include <optional>
22
23
namespace llvm {
24
25
class LanaiTargetMachine : public LLVMTargetMachine {
26
LanaiSubtarget Subtarget;
27
std::unique_ptr<TargetLoweringObjectFile> TLOF;
28
29
public:
30
LanaiTargetMachine(const Target &TheTarget, const Triple &TargetTriple,
31
StringRef Cpu, StringRef FeatureString,
32
const TargetOptions &Options,
33
std::optional<Reloc::Model> RM,
34
std::optional<CodeModel::Model> CodeModel,
35
CodeGenOptLevel OptLevel, bool JIT);
36
37
const LanaiSubtarget *
38
getSubtargetImpl(const llvm::Function & /*Fn*/) const override {
39
return &Subtarget;
40
}
41
42
TargetTransformInfo getTargetTransformInfo(const Function &F) const override;
43
44
// Pass Pipeline Configuration
45
TargetPassConfig *createPassConfig(PassManagerBase &pass_manager) override;
46
47
TargetLoweringObjectFile *getObjFileLowering() const override {
48
return TLOF.get();
49
}
50
51
MachineFunctionInfo *
52
createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,
53
const TargetSubtargetInfo *STI) const override;
54
55
bool isMachineVerifierClean() const override {
56
return false;
57
}
58
};
59
} // namespace llvm
60
61
#endif // LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H
62
63