@@ -72,23 +72,21 @@ CudaVersion ToCudaVersion(llvm::VersionTuple Version) {
72
72
}
73
73
74
74
namespace {
75
- struct CudaArchToStringMap {
76
- CudaArch arch;
75
+ struct OffloadArchToStringMap {
76
+ OffloadArch arch;
77
77
const char *arch_name;
78
78
const char *virtual_arch_name;
79
79
};
80
80
} // namespace
81
81
82
- #define SM2 (sm, ca ) \
83
- { CudaArch::SM_##sm, " sm_" #sm, ca }
82
+ #define SM2 (sm, ca ) {OffloadArch::SM_##sm, " sm_" #sm, ca}
84
83
#define SM (sm ) SM2(sm, " compute_" #sm)
85
- #define GFX (gpu ) \
86
- { CudaArch::GFX##gpu, " gfx" #gpu, " compute_amdgcn" }
87
- static const CudaArchToStringMap arch_names[] = {
84
+ #define GFX (gpu ) {OffloadArch::GFX##gpu, " gfx" #gpu, " compute_amdgcn" }
85
+ static const OffloadArchToStringMap arch_names[] = {
88
86
// clang-format off
89
- {CudaArch ::UNUSED, " " , " " },
87
+ {OffloadArch ::UNUSED, " " , " " },
90
88
SM2 (20 , " compute_20" ), SM2 (21 , " compute_20" ), // Fermi
91
- SM (30 ), {CudaArch ::SM_32_, " sm_32" , " compute_32" }, SM (35 ), SM (37 ), // Kepler
89
+ SM (30 ), {OffloadArch ::SM_32_, " sm_32" , " compute_32" }, SM (35 ), SM (37 ), // Kepler
92
90
SM (50 ), SM (52 ), SM (53 ), // Maxwell
93
91
SM (60 ), SM (61 ), SM (62 ), // Pascal
94
92
SM (70 ), SM (72 ), // Volta
@@ -112,7 +110,7 @@ static const CudaArchToStringMap arch_names[] = {
112
110
GFX (803 ), // gfx803
113
111
GFX (805 ), // gfx805
114
112
GFX (810 ), // gfx810
115
- {CudaArch ::GFX9_GENERIC, " gfx9-generic" , " compute_amdgcn" },
113
+ {OffloadArch ::GFX9_GENERIC, " gfx9-generic" , " compute_amdgcn" },
116
114
GFX (900 ), // gfx900
117
115
GFX (902 ), // gfx902
118
116
GFX (904 ), // gfx903
@@ -124,126 +122,126 @@ static const CudaArchToStringMap arch_names[] = {
124
122
GFX (940 ), // gfx940
125
123
GFX (941 ), // gfx941
126
124
GFX (942 ), // gfx942
127
- {CudaArch ::GFX10_1_GENERIC, " gfx10-1-generic" , " compute_amdgcn" },
125
+ {OffloadArch ::GFX10_1_GENERIC, " gfx10-1-generic" , " compute_amdgcn" },
128
126
GFX (1010 ), // gfx1010
129
127
GFX (1011 ), // gfx1011
130
128
GFX (1012 ), // gfx1012
131
129
GFX (1013 ), // gfx1013
132
- {CudaArch ::GFX10_3_GENERIC, " gfx10-3-generic" , " compute_amdgcn" },
130
+ {OffloadArch ::GFX10_3_GENERIC, " gfx10-3-generic" , " compute_amdgcn" },
133
131
GFX (1030 ), // gfx1030
134
132
GFX (1031 ), // gfx1031
135
133
GFX (1032 ), // gfx1032
136
134
GFX (1033 ), // gfx1033
137
135
GFX (1034 ), // gfx1034
138
136
GFX (1035 ), // gfx1035
139
137
GFX (1036 ), // gfx1036
140
- {CudaArch ::GFX11_GENERIC, " gfx11-generic" , " compute_amdgcn" },
138
+ {OffloadArch ::GFX11_GENERIC, " gfx11-generic" , " compute_amdgcn" },
141
139
GFX (1100 ), // gfx1100
142
140
GFX (1101 ), // gfx1101
143
141
GFX (1102 ), // gfx1102
144
142
GFX (1103 ), // gfx1103
145
143
GFX (1150 ), // gfx1150
146
144
GFX (1151 ), // gfx1151
147
145
GFX (1152 ), // gfx1152
148
- {CudaArch ::GFX12_GENERIC, " gfx12-generic" , " compute_amdgcn" },
146
+ {OffloadArch ::GFX12_GENERIC, " gfx12-generic" , " compute_amdgcn" },
149
147
GFX (1200 ), // gfx1200
150
148
GFX (1201 ), // gfx1201
151
- {CudaArch ::AMDGCNSPIRV, " amdgcnspirv" , " compute_amdgcn" },
152
- {CudaArch ::Generic, " generic" , " " },
149
+ {OffloadArch ::AMDGCNSPIRV, " amdgcnspirv" , " compute_amdgcn" },
150
+ {OffloadArch ::Generic, " generic" , " " },
153
151
// clang-format on
154
152
};
155
153
#undef SM
156
154
#undef SM2
157
155
#undef GFX
158
156
159
- const char *CudaArchToString (CudaArch A) {
157
+ const char *OffloadArchToString (OffloadArch A) {
160
158
auto result = std::find_if (
161
159
std::begin (arch_names), std::end (arch_names),
162
- [A](const CudaArchToStringMap &map) { return A == map.arch ; });
160
+ [A](const OffloadArchToStringMap &map) { return A == map.arch ; });
163
161
if (result == std::end (arch_names))
164
162
return " unknown" ;
165
163
return result->arch_name ;
166
164
}
167
165
168
- const char *CudaArchToVirtualArchString (CudaArch A) {
166
+ const char *OffloadArchToVirtualArchString (OffloadArch A) {
169
167
auto result = std::find_if (
170
168
std::begin (arch_names), std::end (arch_names),
171
- [A](const CudaArchToStringMap &map) { return A == map.arch ; });
169
+ [A](const OffloadArchToStringMap &map) { return A == map.arch ; });
172
170
if (result == std::end (arch_names))
173
171
return " unknown" ;
174
172
return result->virtual_arch_name ;
175
173
}
176
174
177
- CudaArch StringToCudaArch (llvm::StringRef S) {
175
+ OffloadArch StringToOffloadArch (llvm::StringRef S) {
178
176
auto result = std::find_if (
179
177
std::begin (arch_names), std::end (arch_names),
180
- [S](const CudaArchToStringMap &map) { return S == map.arch_name ; });
178
+ [S](const OffloadArchToStringMap &map) { return S == map.arch_name ; });
181
179
if (result == std::end (arch_names))
182
- return CudaArch ::UNKNOWN;
180
+ return OffloadArch ::UNKNOWN;
183
181
return result->arch ;
184
182
}
185
183
186
- CudaVersion MinVersionForCudaArch (CudaArch A) {
187
- if (A == CudaArch ::UNKNOWN)
184
+ CudaVersion MinVersionForOffloadArch (OffloadArch A) {
185
+ if (A == OffloadArch ::UNKNOWN)
188
186
return CudaVersion::UNKNOWN;
189
187
190
188
// AMD GPUs do not depend on CUDA versions.
191
- if (IsAMDGpuArch (A))
189
+ if (IsAMDOffloadArch (A))
192
190
return CudaVersion::CUDA_70;
193
191
194
192
switch (A) {
195
- case CudaArch ::SM_20:
196
- case CudaArch ::SM_21:
197
- case CudaArch ::SM_30:
198
- case CudaArch ::SM_32_:
199
- case CudaArch ::SM_35:
200
- case CudaArch ::SM_37:
201
- case CudaArch ::SM_50:
202
- case CudaArch ::SM_52:
203
- case CudaArch ::SM_53:
193
+ case OffloadArch ::SM_20:
194
+ case OffloadArch ::SM_21:
195
+ case OffloadArch ::SM_30:
196
+ case OffloadArch ::SM_32_:
197
+ case OffloadArch ::SM_35:
198
+ case OffloadArch ::SM_37:
199
+ case OffloadArch ::SM_50:
200
+ case OffloadArch ::SM_52:
201
+ case OffloadArch ::SM_53:
204
202
return CudaVersion::CUDA_70;
205
- case CudaArch ::SM_60:
206
- case CudaArch ::SM_61:
207
- case CudaArch ::SM_62:
203
+ case OffloadArch ::SM_60:
204
+ case OffloadArch ::SM_61:
205
+ case OffloadArch ::SM_62:
208
206
return CudaVersion::CUDA_80;
209
- case CudaArch ::SM_70:
207
+ case OffloadArch ::SM_70:
210
208
return CudaVersion::CUDA_90;
211
- case CudaArch ::SM_72:
209
+ case OffloadArch ::SM_72:
212
210
return CudaVersion::CUDA_91;
213
- case CudaArch ::SM_75:
211
+ case OffloadArch ::SM_75:
214
212
return CudaVersion::CUDA_100;
215
- case CudaArch ::SM_80:
213
+ case OffloadArch ::SM_80:
216
214
return CudaVersion::CUDA_110;
217
- case CudaArch ::SM_86:
215
+ case OffloadArch ::SM_86:
218
216
return CudaVersion::CUDA_111;
219
- case CudaArch ::SM_87:
217
+ case OffloadArch ::SM_87:
220
218
return CudaVersion::CUDA_114;
221
- case CudaArch ::SM_89:
222
- case CudaArch ::SM_90:
219
+ case OffloadArch ::SM_89:
220
+ case OffloadArch ::SM_90:
223
221
return CudaVersion::CUDA_118;
224
- case CudaArch ::SM_90a:
222
+ case OffloadArch ::SM_90a:
225
223
return CudaVersion::CUDA_120;
226
224
default :
227
225
llvm_unreachable (" invalid enum" );
228
226
}
229
227
}
230
228
231
- CudaVersion MaxVersionForCudaArch (CudaArch A) {
229
+ CudaVersion MaxVersionForOffloadArch (OffloadArch A) {
232
230
// AMD GPUs do not depend on CUDA versions.
233
- if (IsAMDGpuArch (A))
231
+ if (IsAMDOffloadArch (A))
234
232
return CudaVersion::NEW;
235
233
236
234
switch (A) {
237
- case CudaArch ::UNKNOWN:
235
+ case OffloadArch ::UNKNOWN:
238
236
return CudaVersion::UNKNOWN;
239
- case CudaArch ::SM_20:
240
- case CudaArch ::SM_21:
237
+ case OffloadArch ::SM_20:
238
+ case OffloadArch ::SM_21:
241
239
return CudaVersion::CUDA_80;
242
- case CudaArch ::SM_30:
243
- case CudaArch ::SM_32_:
240
+ case OffloadArch ::SM_30:
241
+ case OffloadArch ::SM_32_:
244
242
return CudaVersion::CUDA_102;
245
- case CudaArch ::SM_35:
246
- case CudaArch ::SM_37:
243
+ case OffloadArch ::SM_35:
244
+ case OffloadArch ::SM_37:
247
245
return CudaVersion::CUDA_118;
248
246
default :
249
247
return CudaVersion::NEW;
0 commit comments