/src/build/lib/Target/NVPTX/NVPTXGenSubtargetInfo.inc
Line | Count | Source (jump to first uncovered line) |
1 | | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
2 | | |* *| |
3 | | |* Subtarget Enumeration Source Fragment *| |
4 | | |* *| |
5 | | |* Automatically generated file, do not edit! *| |
6 | | |* *| |
7 | | \*===----------------------------------------------------------------------===*/ |
8 | | |
9 | | |
10 | | #ifdef GET_SUBTARGETINFO_ENUM |
11 | | #undef GET_SUBTARGETINFO_ENUM |
12 | | |
13 | | namespace llvm { |
14 | | namespace NVPTX { |
15 | | enum { |
16 | | PTX32 = 0, |
17 | | PTX40 = 1, |
18 | | PTX41 = 2, |
19 | | PTX42 = 3, |
20 | | PTX43 = 4, |
21 | | PTX50 = 5, |
22 | | PTX60 = 6, |
23 | | PTX61 = 7, |
24 | | PTX63 = 8, |
25 | | PTX64 = 9, |
26 | | PTX65 = 10, |
27 | | PTX70 = 11, |
28 | | PTX71 = 12, |
29 | | PTX72 = 13, |
30 | | PTX73 = 14, |
31 | | PTX74 = 15, |
32 | | PTX75 = 16, |
33 | | PTX76 = 17, |
34 | | PTX77 = 18, |
35 | | PTX78 = 19, |
36 | | PTX80 = 20, |
37 | | PTX81 = 21, |
38 | | PTX82 = 22, |
39 | | PTX83 = 23, |
40 | | SM20 = 24, |
41 | | SM21 = 25, |
42 | | SM30 = 26, |
43 | | SM32 = 27, |
44 | | SM35 = 28, |
45 | | SM37 = 29, |
46 | | SM50 = 30, |
47 | | SM52 = 31, |
48 | | SM53 = 32, |
49 | | SM60 = 33, |
50 | | SM61 = 34, |
51 | | SM62 = 35, |
52 | | SM70 = 36, |
53 | | SM72 = 37, |
54 | | SM75 = 38, |
55 | | SM80 = 39, |
56 | | SM86 = 40, |
57 | | SM87 = 41, |
58 | | SM89 = 42, |
59 | | SM90 = 43, |
60 | | SM90a = 44, |
61 | | NumSubtargetFeatures = 45 |
62 | | }; |
63 | | } // end namespace NVPTX |
64 | | } // end namespace llvm |
65 | | |
66 | | #endif // GET_SUBTARGETINFO_ENUM |
67 | | |
68 | | |
69 | | #ifdef GET_SUBTARGETINFO_MACRO |
70 | | #undef GET_SUBTARGETINFO_MACRO |
71 | | #endif // GET_SUBTARGETINFO_MACRO |
72 | | |
73 | | |
74 | | #ifdef GET_SUBTARGETINFO_MC_DESC |
75 | | #undef GET_SUBTARGETINFO_MC_DESC |
76 | | |
77 | | namespace llvm { |
78 | | // Sorted (by key) array of values for CPU features. |
79 | | extern const llvm::SubtargetFeatureKV NVPTXFeatureKV[] = { |
80 | | { "ptx32", "Use PTX version 32", NVPTX::PTX32, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
81 | | { "ptx40", "Use PTX version 40", NVPTX::PTX40, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
82 | | { "ptx41", "Use PTX version 41", NVPTX::PTX41, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
83 | | { "ptx42", "Use PTX version 42", NVPTX::PTX42, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
84 | | { "ptx43", "Use PTX version 43", NVPTX::PTX43, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
85 | | { "ptx50", "Use PTX version 50", NVPTX::PTX50, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
86 | | { "ptx60", "Use PTX version 60", NVPTX::PTX60, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
87 | | { "ptx61", "Use PTX version 61", NVPTX::PTX61, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
88 | | { "ptx63", "Use PTX version 63", NVPTX::PTX63, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
89 | | { "ptx64", "Use PTX version 64", NVPTX::PTX64, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
90 | | { "ptx65", "Use PTX version 65", NVPTX::PTX65, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
91 | | { "ptx70", "Use PTX version 70", NVPTX::PTX70, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
92 | | { "ptx71", "Use PTX version 71", NVPTX::PTX71, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
93 | | { "ptx72", "Use PTX version 72", NVPTX::PTX72, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
94 | | { "ptx73", "Use PTX version 73", NVPTX::PTX73, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
95 | | { "ptx74", "Use PTX version 74", NVPTX::PTX74, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
96 | | { "ptx75", "Use PTX version 75", NVPTX::PTX75, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
97 | | { "ptx76", "Use PTX version 76", NVPTX::PTX76, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
98 | | { "ptx77", "Use PTX version 77", NVPTX::PTX77, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
99 | | { "ptx78", "Use PTX version 78", NVPTX::PTX78, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
100 | | { "ptx80", "Use PTX version 80", NVPTX::PTX80, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
101 | | { "ptx81", "Use PTX version 81", NVPTX::PTX81, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
102 | | { "ptx82", "Use PTX version 82", NVPTX::PTX82, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
103 | | { "ptx83", "Use PTX version 83", NVPTX::PTX83, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
104 | | { "sm_20", "Target SM 20", NVPTX::SM20, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
105 | | { "sm_21", "Target SM 21", NVPTX::SM21, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
106 | | { "sm_30", "Target SM 30", NVPTX::SM30, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
107 | | { "sm_32", "Target SM 32", NVPTX::SM32, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
108 | | { "sm_35", "Target SM 35", NVPTX::SM35, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
109 | | { "sm_37", "Target SM 37", NVPTX::SM37, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
110 | | { "sm_50", "Target SM 50", NVPTX::SM50, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
111 | | { "sm_52", "Target SM 52", NVPTX::SM52, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
112 | | { "sm_53", "Target SM 53", NVPTX::SM53, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
113 | | { "sm_60", "Target SM 60", NVPTX::SM60, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
114 | | { "sm_61", "Target SM 61", NVPTX::SM61, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
115 | | { "sm_62", "Target SM 62", NVPTX::SM62, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
116 | | { "sm_70", "Target SM 70", NVPTX::SM70, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
117 | | { "sm_72", "Target SM 72", NVPTX::SM72, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
118 | | { "sm_75", "Target SM 75", NVPTX::SM75, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
119 | | { "sm_80", "Target SM 80", NVPTX::SM80, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
120 | | { "sm_86", "Target SM 86", NVPTX::SM86, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
121 | | { "sm_87", "Target SM 87", NVPTX::SM87, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
122 | | { "sm_89", "Target SM 89", NVPTX::SM89, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
123 | | { "sm_90", "Target SM 90", NVPTX::SM90, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
124 | | { "sm_90a", "Target SM 90a", NVPTX::SM90a, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } }, |
125 | | }; |
126 | | |
127 | | #ifdef DBGFIELD |
128 | | #error "<target>GenSubtargetInfo.inc requires a DBGFIELD macro" |
129 | | #endif |
130 | | #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) |
131 | | #define DBGFIELD(x) x, |
132 | | #else |
133 | | #define DBGFIELD(x) |
134 | | #endif |
135 | | |
136 | | // =============================================================== |
137 | | // Data tables for the new per-operand machine model. |
138 | | |
139 | | // {ProcResourceIdx, ReleaseAtCycle, AcquireAtCycle} |
140 | | extern const llvm::MCWriteProcResEntry NVPTXWriteProcResTable[] = { |
141 | | { 0, 0, 0 }, // Invalid |
142 | | }; // NVPTXWriteProcResTable |
143 | | |
144 | | // {Cycles, WriteResourceID} |
145 | | extern const llvm::MCWriteLatencyEntry NVPTXWriteLatencyTable[] = { |
146 | | { 0, 0}, // Invalid |
147 | | }; // NVPTXWriteLatencyTable |
148 | | |
149 | | // {UseIdx, WriteResourceID, Cycles} |
150 | | extern const llvm::MCReadAdvanceEntry NVPTXReadAdvanceTable[] = { |
151 | | {0, 0, 0}, // Invalid |
152 | | }; // NVPTXReadAdvanceTable |
153 | | |
154 | | #undef DBGFIELD |
155 | | |
156 | | static const llvm::MCSchedModel NoSchedModel = { |
157 | | MCSchedModel::DefaultIssueWidth, |
158 | | MCSchedModel::DefaultMicroOpBufferSize, |
159 | | MCSchedModel::DefaultLoopMicroOpBufferSize, |
160 | | MCSchedModel::DefaultLoadLatency, |
161 | | MCSchedModel::DefaultHighLatency, |
162 | | MCSchedModel::DefaultMispredictPenalty, |
163 | | false, // PostRAScheduler |
164 | | false, // CompleteModel |
165 | | false, // EnableIntervals |
166 | | 0, // Processor ID |
167 | | nullptr, nullptr, 0, 0, // No instruction-level machine model. |
168 | | nullptr, // No Itinerary |
169 | | nullptr // No extra processor descriptor |
170 | | }; |
171 | | |
172 | | // Sorted (by key) array of values for CPU subtype. |
173 | | extern const llvm::SubtargetSubTypeKV NVPTXSubTypeKV[] = { |
174 | | { "sm_20", { { { 0x1000001ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
175 | | { "sm_21", { { { 0x2000001ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
176 | | { "sm_30", { { { 0x4000000ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
177 | | { "sm_32", { { { 0x8000002ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
178 | | { "sm_35", { { { 0x10000001ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
179 | | { "sm_37", { { { 0x20000004ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
180 | | { "sm_50", { { { 0x40000002ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
181 | | { "sm_52", { { { 0x80000004ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
182 | | { "sm_53", { { { 0x100000008ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
183 | | { "sm_60", { { { 0x200000020ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
184 | | { "sm_61", { { { 0x400000020ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
185 | | { "sm_62", { { { 0x800000020ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
186 | | { "sm_70", { { { 0x1000000040ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
187 | | { "sm_72", { { { 0x2000000080ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
188 | | { "sm_75", { { { 0x4000000100ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
189 | | { "sm_80", { { { 0x8000000800ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
190 | | { "sm_86", { { { 0x10000001000ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
191 | | { "sm_87", { { { 0x20000008000ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
192 | | { "sm_89", { { { 0x40000080000ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
193 | | { "sm_90", { { { 0x80000080000ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
194 | | { "sm_90a", { { { 0x100000100000ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } }, &NoSchedModel }, |
195 | | }; |
196 | | |
197 | | namespace NVPTX_MC { |
198 | | unsigned resolveVariantSchedClassImpl(unsigned SchedClass, |
199 | 0 | const MCInst *MI, const MCInstrInfo *MCII, unsigned CPUID) { |
200 | | // Don't know how to resolve this scheduling class. |
201 | 0 | return 0; |
202 | 0 | } |
203 | | } // end namespace NVPTX_MC |
204 | | |
205 | | struct NVPTXGenMCSubtargetInfo : public MCSubtargetInfo { |
206 | | NVPTXGenMCSubtargetInfo(const Triple &TT, |
207 | | StringRef CPU, StringRef TuneCPU, StringRef FS, |
208 | | ArrayRef<SubtargetFeatureKV> PF, |
209 | | ArrayRef<SubtargetSubTypeKV> PD, |
210 | | const MCWriteProcResEntry *WPR, |
211 | | const MCWriteLatencyEntry *WL, |
212 | | const MCReadAdvanceEntry *RA, const InstrStage *IS, |
213 | | const unsigned *OC, const unsigned *FP) : |
214 | | MCSubtargetInfo(TT, CPU, TuneCPU, FS, PF, PD, |
215 | 2 | WPR, WL, RA, IS, OC, FP) { } |
216 | | |
217 | | unsigned resolveVariantSchedClass(unsigned SchedClass, |
218 | | const MCInst *MI, const MCInstrInfo *MCII, |
219 | 0 | unsigned CPUID) const override { |
220 | 0 | return NVPTX_MC::resolveVariantSchedClassImpl(SchedClass, MI, MCII, CPUID); |
221 | 0 | } |
222 | | }; |
223 | | |
224 | 2 | static inline MCSubtargetInfo *createNVPTXMCSubtargetInfoImpl(const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS) { |
225 | 2 | return new NVPTXGenMCSubtargetInfo(TT, CPU, TuneCPU, FS, NVPTXFeatureKV, NVPTXSubTypeKV, |
226 | 2 | NVPTXWriteProcResTable, NVPTXWriteLatencyTable, NVPTXReadAdvanceTable, |
227 | 2 | nullptr, nullptr, nullptr); |
228 | 2 | } |
229 | | |
230 | | } // end namespace llvm |
231 | | |
232 | | #endif // GET_SUBTARGETINFO_MC_DESC |
233 | | |
234 | | |
235 | | #ifdef GET_SUBTARGETINFO_TARGET_DESC |
236 | | #undef GET_SUBTARGETINFO_TARGET_DESC |
237 | | |
238 | | #include "llvm/Support/Debug.h" |
239 | | #include "llvm/Support/raw_ostream.h" |
240 | | |
241 | | // ParseSubtargetFeatures - Parses features string setting specified |
242 | | // subtarget options. |
243 | 2 | void llvm::NVPTXSubtarget::ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS) { |
244 | 2 | LLVM_DEBUG(dbgs() << "\nFeatures:" << FS); |
245 | 2 | LLVM_DEBUG(dbgs() << "\nCPU:" << CPU); |
246 | 2 | LLVM_DEBUG(dbgs() << "\nTuneCPU:" << TuneCPU << "\n\n"); |
247 | 2 | InitMCProcessorInfo(CPU, TuneCPU, FS); |
248 | 2 | const FeatureBitset &Bits = getFeatureBits(); |
249 | 2 | if (Bits[NVPTX::PTX32] && PTXVersion < 32) PTXVersion = 32; |
250 | 2 | if (Bits[NVPTX::PTX40] && PTXVersion < 40) PTXVersion = 40; |
251 | 2 | if (Bits[NVPTX::PTX41] && PTXVersion < 41) PTXVersion = 41; |
252 | 2 | if (Bits[NVPTX::PTX42] && PTXVersion < 42) PTXVersion = 42; |
253 | 2 | if (Bits[NVPTX::PTX43] && PTXVersion < 43) PTXVersion = 43; |
254 | 2 | if (Bits[NVPTX::PTX50] && PTXVersion < 50) PTXVersion = 50; |
255 | 2 | if (Bits[NVPTX::PTX60] && PTXVersion < 60) PTXVersion = 60; |
256 | 2 | if (Bits[NVPTX::PTX61] && PTXVersion < 61) PTXVersion = 61; |
257 | 2 | if (Bits[NVPTX::PTX63] && PTXVersion < 63) PTXVersion = 63; |
258 | 2 | if (Bits[NVPTX::PTX64] && PTXVersion < 64) PTXVersion = 64; |
259 | 2 | if (Bits[NVPTX::PTX65] && PTXVersion < 65) PTXVersion = 65; |
260 | 2 | if (Bits[NVPTX::PTX70] && PTXVersion < 70) PTXVersion = 70; |
261 | 2 | if (Bits[NVPTX::PTX71] && PTXVersion < 71) PTXVersion = 71; |
262 | 2 | if (Bits[NVPTX::PTX72] && PTXVersion < 72) PTXVersion = 72; |
263 | 2 | if (Bits[NVPTX::PTX73] && PTXVersion < 73) PTXVersion = 73; |
264 | 2 | if (Bits[NVPTX::PTX74] && PTXVersion < 74) PTXVersion = 74; |
265 | 2 | if (Bits[NVPTX::PTX75] && PTXVersion < 75) PTXVersion = 75; |
266 | 2 | if (Bits[NVPTX::PTX76] && PTXVersion < 76) PTXVersion = 76; |
267 | 2 | if (Bits[NVPTX::PTX77] && PTXVersion < 77) PTXVersion = 77; |
268 | 2 | if (Bits[NVPTX::PTX78] && PTXVersion < 78) PTXVersion = 78; |
269 | 2 | if (Bits[NVPTX::PTX80] && PTXVersion < 80) PTXVersion = 80; |
270 | 2 | if (Bits[NVPTX::PTX81] && PTXVersion < 81) PTXVersion = 81; |
271 | 2 | if (Bits[NVPTX::PTX82] && PTXVersion < 82) PTXVersion = 82; |
272 | 2 | if (Bits[NVPTX::PTX83] && PTXVersion < 83) PTXVersion = 83; |
273 | 2 | if (Bits[NVPTX::SM20] && FullSmVersion < 200) FullSmVersion = 200; |
274 | 2 | if (Bits[NVPTX::SM21] && FullSmVersion < 210) FullSmVersion = 210; |
275 | 2 | if (Bits[NVPTX::SM30] && FullSmVersion < 300) FullSmVersion = 300; |
276 | 2 | if (Bits[NVPTX::SM32] && FullSmVersion < 320) FullSmVersion = 320; |
277 | 2 | if (Bits[NVPTX::SM35] && FullSmVersion < 350) FullSmVersion = 350; |
278 | 2 | if (Bits[NVPTX::SM37] && FullSmVersion < 370) FullSmVersion = 370; |
279 | 2 | if (Bits[NVPTX::SM50] && FullSmVersion < 500) FullSmVersion = 500; |
280 | 2 | if (Bits[NVPTX::SM52] && FullSmVersion < 520) FullSmVersion = 520; |
281 | 2 | if (Bits[NVPTX::SM53] && FullSmVersion < 530) FullSmVersion = 530; |
282 | 2 | if (Bits[NVPTX::SM60] && FullSmVersion < 600) FullSmVersion = 600; |
283 | 2 | if (Bits[NVPTX::SM61] && FullSmVersion < 610) FullSmVersion = 610; |
284 | 2 | if (Bits[NVPTX::SM62] && FullSmVersion < 620) FullSmVersion = 620; |
285 | 2 | if (Bits[NVPTX::SM70] && FullSmVersion < 700) FullSmVersion = 700; |
286 | 2 | if (Bits[NVPTX::SM72] && FullSmVersion < 720) FullSmVersion = 720; |
287 | 2 | if (Bits[NVPTX::SM75] && FullSmVersion < 750) FullSmVersion = 750; |
288 | 2 | if (Bits[NVPTX::SM80] && FullSmVersion < 800) FullSmVersion = 800; |
289 | 2 | if (Bits[NVPTX::SM86] && FullSmVersion < 860) FullSmVersion = 860; |
290 | 2 | if (Bits[NVPTX::SM87] && FullSmVersion < 870) FullSmVersion = 870; |
291 | 2 | if (Bits[NVPTX::SM89] && FullSmVersion < 890) FullSmVersion = 890; |
292 | 2 | if (Bits[NVPTX::SM90] && FullSmVersion < 900) FullSmVersion = 900; |
293 | 2 | if (Bits[NVPTX::SM90a] && FullSmVersion < 901) FullSmVersion = 901; |
294 | 2 | } |
295 | | #endif // GET_SUBTARGETINFO_TARGET_DESC |
296 | | |
297 | | |
298 | | #ifdef GET_SUBTARGETINFO_HEADER |
299 | | #undef GET_SUBTARGETINFO_HEADER |
300 | | |
301 | | namespace llvm { |
302 | | class DFAPacketizer; |
303 | | namespace NVPTX_MC { |
304 | | unsigned resolveVariantSchedClassImpl(unsigned SchedClass, const MCInst *MI, const MCInstrInfo *MCII, unsigned CPUID); |
305 | | } // end namespace NVPTX_MC |
306 | | |
307 | | struct NVPTXGenSubtargetInfo : public TargetSubtargetInfo { |
308 | | explicit NVPTXGenSubtargetInfo(const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS); |
309 | | public: |
310 | | unsigned resolveSchedClass(unsigned SchedClass, const MachineInstr *DefMI, const TargetSchedModel *SchedModel) const override; |
311 | | unsigned resolveVariantSchedClass(unsigned SchedClass, const MCInst *MI, const MCInstrInfo *MCII, unsigned CPUID) const override; |
312 | | DFAPacketizer *createDFAPacketizer(const InstrItineraryData *IID) const; |
313 | | }; |
314 | | } // end namespace llvm |
315 | | |
316 | | #endif // GET_SUBTARGETINFO_HEADER |
317 | | |
318 | | |
319 | | #ifdef GET_SUBTARGETINFO_CTOR |
320 | | #undef GET_SUBTARGETINFO_CTOR |
321 | | |
322 | | #include "llvm/CodeGen/TargetSchedule.h" |
323 | | |
324 | | namespace llvm { |
325 | | extern const llvm::SubtargetFeatureKV NVPTXFeatureKV[]; |
326 | | extern const llvm::SubtargetSubTypeKV NVPTXSubTypeKV[]; |
327 | | extern const llvm::MCWriteProcResEntry NVPTXWriteProcResTable[]; |
328 | | extern const llvm::MCWriteLatencyEntry NVPTXWriteLatencyTable[]; |
329 | | extern const llvm::MCReadAdvanceEntry NVPTXReadAdvanceTable[]; |
330 | | NVPTXGenSubtargetInfo::NVPTXGenSubtargetInfo(const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS) |
331 | | : TargetSubtargetInfo(TT, CPU, TuneCPU, FS, ArrayRef(NVPTXFeatureKV, 45), ArrayRef(NVPTXSubTypeKV, 21), |
332 | | NVPTXWriteProcResTable, NVPTXWriteLatencyTable, NVPTXReadAdvanceTable, |
333 | 2 | nullptr, nullptr, nullptr) {} |
334 | | |
335 | | unsigned NVPTXGenSubtargetInfo |
336 | 0 | ::resolveSchedClass(unsigned SchedClass, const MachineInstr *MI, const TargetSchedModel *SchedModel) const { |
337 | 0 | report_fatal_error("Expected a variant SchedClass"); |
338 | 0 | } // NVPTXGenSubtargetInfo::resolveSchedClass |
339 | | |
340 | | unsigned NVPTXGenSubtargetInfo |
341 | 0 | ::resolveVariantSchedClass(unsigned SchedClass, const MCInst *MI, const MCInstrInfo *MCII, unsigned CPUID) const { |
342 | 0 | return NVPTX_MC::resolveVariantSchedClassImpl(SchedClass, MI, MCII, CPUID); |
343 | 0 | } // NVPTXGenSubtargetInfo::resolveVariantSchedClass |
344 | | |
345 | | } // end namespace llvm |
346 | | |
347 | | #endif // GET_SUBTARGETINFO_CTOR |
348 | | |
349 | | |
350 | | #ifdef GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS |
351 | | #undef GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS |
352 | | |
353 | | #endif // GET_STIPREDICATE_DECLS_FOR_MC_ANALYSIS |
354 | | |
355 | | |
356 | | #ifdef GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS |
357 | | #undef GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS |
358 | | |
359 | | #endif // GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS |
360 | | |