Coverage Report

Created: 2024-01-17 10:31

/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