0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 //===-- SparcTargetMachine.h - Define TargetMachine for Sparc ---*- C++ -*-===//
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 //
|
147
|
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
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 //
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 //===----------------------------------------------------------------------===//
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 //
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 // This file declares the Sparc specific subclass of TargetMachine.
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 //
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 //===----------------------------------------------------------------------===//
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12
|
77
|
13 #ifndef LLVM_LIB_TARGET_SPARC_SPARCTARGETMACHINE_H
|
|
14 #define LLVM_LIB_TARGET_SPARC_SPARCTARGETMACHINE_H
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 #include "SparcInstrInfo.h"
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 #include "SparcSubtarget.h"
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 #include "llvm/Target/TargetMachine.h"
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 namespace llvm {
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 class SparcTargetMachine : public LLVMTargetMachine {
|
83
|
23 std::unique_ptr<TargetLoweringObjectFile> TLOF;
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 SparcSubtarget Subtarget;
|
120
|
25 bool is64Bit;
|
|
26 mutable StringMap<std::unique_ptr<SparcSubtarget>> SubtargetMap;
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 public:
|
95
|
28 SparcTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
|
|
29 StringRef FS, const TargetOptions &Options,
|
121
|
30 Optional<Reloc::Model> RM, Optional<CodeModel::Model> CM,
|
|
31 CodeGenOpt::Level OL, bool JIT, bool is64bit);
|
83
|
32 ~SparcTargetMachine() override;
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33
|
120
|
34 const SparcSubtarget *getSubtargetImpl() const { return &Subtarget; }
|
|
35 const SparcSubtarget *getSubtargetImpl(const Function &) const override;
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 // Pass Pipeline Configuration
|
77
|
38 TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
|
83
|
39 TargetLoweringObjectFile *getObjFileLowering() const override {
|
|
40 return TLOF.get();
|
|
41 }
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 };
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43
|
120
|
44 /// Sparc 32-bit target machine
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 ///
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 class SparcV8TargetMachine : public SparcTargetMachine {
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 virtual void anchor();
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 public:
|
95
|
49 SparcV8TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
|
|
50 StringRef FS, const TargetOptions &Options,
|
121
|
51 Optional<Reloc::Model> RM, Optional<CodeModel::Model> CM,
|
|
52 CodeGenOpt::Level OL, bool JIT);
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 };
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54
|
120
|
55 /// Sparc 64-bit target machine
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 ///
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 class SparcV9TargetMachine : public SparcTargetMachine {
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 virtual void anchor();
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59 public:
|
95
|
60 SparcV9TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
|
|
61 StringRef FS, const TargetOptions &Options,
|
121
|
62 Optional<Reloc::Model> RM, Optional<CodeModel::Model> CM,
|
|
63 CodeGenOpt::Level OL, bool JIT);
|
95
|
64 };
|
|
65
|
|
66 class SparcelTargetMachine : public SparcTargetMachine {
|
|
67 virtual void anchor();
|
|
68
|
|
69 public:
|
|
70 SparcelTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
|
|
71 StringRef FS, const TargetOptions &Options,
|
121
|
72 Optional<Reloc::Model> RM, Optional<CodeModel::Model> CM,
|
|
73 CodeGenOpt::Level OL, bool JIT);
|
0
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
74 };
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
75
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
76 } // end namespace llvm
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
77
|
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
78 #endif
|