Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/Xtensa/XtensaTargetMachine.h
35271 views
1
//===-- XtensaTargetMachine.h - Define TargetMachine for Xtensa -*- C++ -*-===//
2
//
3
// The LLVM Compiler Infrastructure
4
//
5
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
6
// See https://llvm.org/LICENSE.txt for license information.
7
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8
//
9
//===----------------------------------------------------------------------===//
10
//
11
// This file declares the Xtensa specific subclass of TargetMachine.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H
16
#define LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H
17
18
#include "XtensaSubtarget.h"
19
#include "llvm/Target/TargetMachine.h"
20
#include <optional>
21
22
namespace llvm {
23
extern Target TheXtensaTarget;
24
25
class XtensaTargetMachine : public LLVMTargetMachine {
26
std::unique_ptr<TargetLoweringObjectFile> TLOF;
27
public:
28
XtensaTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
29
StringRef FS, const TargetOptions &Options,
30
std::optional<Reloc::Model> RM,
31
std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,
32
bool JIT, bool isLittle);
33
34
XtensaTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
35
StringRef FS, const TargetOptions &Options,
36
std::optional<Reloc::Model> RM,
37
std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,
38
bool JIT);
39
40
const XtensaSubtarget *getSubtargetImpl(const Function &F) const override;
41
42
TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
43
44
TargetLoweringObjectFile *getObjFileLowering() const override {
45
return TLOF.get();
46
}
47
48
protected:
49
mutable StringMap<std::unique_ptr<XtensaSubtarget>> SubtargetMap;
50
};
51
} // end namespace llvm
52
53
#endif // LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H
54
55