29 "Generic AMDGCN arch not classified correctly!");
39#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) \
42#include "llvm/TargetParser/AMDGPUTargetParser.def"
50#define R600_GPU(NAME, ENUM, FEATURES) \
53#include "llvm/TargetParser/AMDGPUTargetParser.def"
61#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) .Case(NAME, ENUM)
62#define AMDGCN_GPU_ALIAS(NAME, ENUM) .Case(NAME, ENUM)
63#include "llvm/TargetParser/AMDGPUTargetParser.def"
64 .
Case(
"generic", AMDGPU::GPUKind::GK_GFX600)
65 .
Case(
"generic-hsa", AMDGPU::GPUKind::GK_GFX700)
71#define R600_GPU(NAME, ENUM, FEATURES) .Case(NAME, ENUM)
72#define R600_GPU_ALIAS(NAME, ENUM) .Case(NAME, ENUM)
73#include "llvm/TargetParser/AMDGPUTargetParser.def"
79#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) \
82#include "llvm/TargetParser/AMDGPUTargetParser.def"
90#define R600_GPU(NAME, ENUM, FEATURES) \
93#include "llvm/TargetParser/AMDGPUTargetParser.def"
102#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) NAME,
103#define AMDGCN_GPU_ALIAS(NAME, ENUM) NAME,
104#include "llvm/TargetParser/AMDGPUTargetParser.def"
110#define R600_GPU(NAME, ENUM, FEATURES) NAME,
111#define R600_GPU_ALIAS(NAME, ENUM) NAME,
112#include "llvm/TargetParser/AMDGPUTargetParser.def"
119 if (GPU ==
"generic-hsa")
121 if (GPU ==
"generic")
127#define MAKE_ISAVERSION(A, B, C) {A, B, C}
128#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) \
130 return MAKE_ISAVERSION ISAVERSION;
131#include "llvm/TargetParser/AMDGPUTargetParser.def"
132#undef MAKE_ISAVERSION
147static std::pair<FeatureError, StringRef>
151 const bool IsNullGPU = GPU.
empty();
152 const bool TargetHasWave32 = DefaultFeatures.
count(
"wavefrontsize32");
153 const bool TargetHasWave64 = DefaultFeatures.
count(
"wavefrontsize64");
155 auto Wave32Itr = Features.
find(
"wavefrontsize32");
156 auto Wave64Itr = Features.
find(
"wavefrontsize64");
157 const bool EnableWave32 =
158 Wave32Itr != Features.
end() && Wave32Itr->getValue();
159 const bool EnableWave64 =
160 Wave64Itr != Features.
end() && Wave64Itr->getValue();
161 const bool DisableWave32 =
162 Wave32Itr != Features.
end() && !Wave32Itr->getValue();
163 const bool DisableWave64 =
164 Wave64Itr != Features.
end() && !Wave64Itr->getValue();
166 if (EnableWave32 && EnableWave64)
168 "'+wavefrontsize32' and '+wavefrontsize64' are mutually exclusive"};
169 if (DisableWave32 && DisableWave64)
171 "'-wavefrontsize32' and '-wavefrontsize64' are mutually exclusive"};
174 if (TargetHasWave64) {
181 if (TargetHasWave32) {
191 if (!IsNullGPU && !EnableWave32 && !EnableWave64 && !TargetHasWave32 &&
193 Features.
insert(std::make_pair(
"wavefrontsize32",
true));
195 for (
const auto &Entry : DefaultFeatures) {
196 if (!Features.
count(Entry.getKey()))
197 Features[Entry.getKey()] = Entry.getValue();
211 Features[
"gfx1251-gemm-insts"] =
true;
214 Features[
"swmmac-gfx1200-insts"] =
true;
215 Features[
"swmmac-gfx1250-insts"] =
true;
218 case GK_GFX13_GENERIC:
219 Features[
"cube-insts"] =
true;
220 Features[
"cvt-pknorm-vop2-insts"] =
true;
221 Features[
"lerp-inst"] =
true;
222 Features[
"qsad-insts"] =
true;
223 Features[
"sad-insts"] =
true;
224 Features[
"msad-insts"] =
true;
225 Features[
"mqsad-pk-insts"] =
true;
226 Features[
"mqsad-insts"] =
true;
228 case GK_GFX12_5_GENERIC:
229 Features[
"ci-insts"] =
true;
230 Features[
"dot7-insts"] =
true;
231 Features[
"dot8-insts"] =
true;
232 Features[
"dl-insts"] =
true;
233 Features[
"16-bit-insts"] =
true;
234 Features[
"dpp"] =
true;
235 Features[
"gfx8-insts"] =
true;
236 Features[
"gfx9-insts"] =
true;
237 Features[
"flat-global-insts"] =
true;
238 Features[
"gfx10-insts"] =
true;
239 Features[
"gfx10-3-insts"] =
true;
240 Features[
"gfx11-insts"] =
true;
241 Features[
"gfx12-insts"] =
true;
242 Features[
"gfx1250-insts"] =
true;
243 Features[
"bitop3-insts"] =
true;
244 Features[
"prng-inst"] =
true;
245 Features[
"tanh-insts"] =
true;
246 Features[
"tensor-cvt-lut-insts"] =
true;
247 Features[
"transpose-load-f4f6-insts"] =
true;
248 Features[
"bf16-trans-insts"] =
true;
249 Features[
"bf16-cvt-insts"] =
true;
250 Features[
"bf16-pk-insts"] =
true;
251 Features[
"fp8-conversion-insts"] =
true;
252 Features[
"fp8e5m3-insts"] =
true;
253 Features[
"permlane16-swap"] =
true;
254 Features[
"ashr-pk-insts"] =
true;
255 Features[
"add-min-max-insts"] =
true;
256 Features[
"pk-add-min-max-insts"] =
true;
257 Features[
"atomic-buffer-pk-add-bf16-inst"] =
true;
258 Features[
"vmem-pref-insts"] =
true;
259 Features[
"atomic-fadd-rtn-insts"] =
true;
260 Features[
"atomic-buffer-global-pk-add-f16-insts"] =
true;
261 Features[
"atomic-flat-pk-add-16-insts"] =
true;
262 Features[
"atomic-global-pk-add-bf16-inst"] =
true;
263 Features[
"atomic-ds-pk-add-16-insts"] =
true;
264 Features[
"setprio-inc-wg-inst"] =
true;
265 Features[
"s-wakeup-barrier-inst"] =
true;
266 Features[
"atomic-fmin-fmax-global-f32"] =
true;
267 Features[
"atomic-fmin-fmax-global-f64"] =
true;
268 Features[
"wavefrontsize32"] =
true;
269 Features[
"clusters"] =
true;
270 Features[
"mcast-load-insts"] =
true;
271 Features[
"asynccnt"] =
true;
275 case GK_GFX12_GENERIC:
276 Features[
"ci-insts"] =
true;
277 Features[
"dot7-insts"] =
true;
278 Features[
"dot8-insts"] =
true;
279 Features[
"dot9-insts"] =
true;
280 Features[
"dot10-insts"] =
true;
281 Features[
"dot11-insts"] =
true;
282 Features[
"dot12-insts"] =
true;
283 Features[
"dl-insts"] =
true;
284 Features[
"atomic-ds-pk-add-16-insts"] =
true;
285 Features[
"atomic-flat-pk-add-16-insts"] =
true;
286 Features[
"atomic-buffer-global-pk-add-f16-insts"] =
true;
287 Features[
"atomic-buffer-pk-add-bf16-inst"] =
true;
288 Features[
"atomic-global-pk-add-bf16-inst"] =
true;
289 Features[
"16-bit-insts"] =
true;
290 Features[
"dpp"] =
true;
291 Features[
"gfx8-insts"] =
true;
292 Features[
"gfx9-insts"] =
true;
293 Features[
"flat-global-insts"] =
true;
294 Features[
"gfx10-insts"] =
true;
295 Features[
"gfx10-3-insts"] =
true;
296 Features[
"gfx11-insts"] =
true;
297 Features[
"gfx12-insts"] =
true;
298 Features[
"atomic-fadd-rtn-insts"] =
true;
299 Features[
"image-insts"] =
true;
300 Features[
"cube-insts"] =
true;
301 Features[
"lerp-inst"] =
true;
302 Features[
"sad-insts"] =
true;
303 Features[
"qsad-insts"] =
true;
304 Features[
"msad-insts"] =
true;
305 Features[
"mqsad-pk-insts"] =
true;
306 Features[
"mqsad-insts"] =
true;
307 Features[
"cvt-pknorm-vop2-insts"] =
true;
308 Features[
"fp8-conversion-insts"] =
true;
309 Features[
"wmma-128b-insts"] =
true;
310 Features[
"swmmac-gfx1200-insts"] =
true;
311 Features[
"atomic-fmin-fmax-global-f32"] =
true;
316 case GK_GFX11_7_GENERIC:
317 Features[
"ci-insts"] =
true;
318 Features[
"dot7-insts"] =
true;
319 Features[
"dot8-insts"] =
true;
320 Features[
"dot9-insts"] =
true;
321 Features[
"dot10-insts"] =
true;
322 Features[
"dot12-insts"] =
true;
323 Features[
"dl-insts"] =
true;
324 Features[
"16-bit-insts"] =
true;
325 Features[
"dpp"] =
true;
326 Features[
"gfx8-insts"] =
true;
327 Features[
"gfx9-insts"] =
true;
328 Features[
"flat-global-insts"] =
true;
329 Features[
"gfx10-insts"] =
true;
330 Features[
"gfx10-3-insts"] =
true;
331 Features[
"gfx11-insts"] =
true;
332 Features[
"atomic-fadd-rtn-insts"] =
true;
333 Features[
"image-insts"] =
true;
334 Features[
"cube-insts"] =
true;
335 Features[
"lerp-inst"] =
true;
336 Features[
"sad-insts"] =
true;
337 Features[
"qsad-insts"] =
true;
338 Features[
"msad-insts"] =
true;
339 Features[
"mqsad-pk-insts"] =
true;
340 Features[
"mqsad-insts"] =
true;
341 Features[
"cvt-pknorm-vop2-insts"] =
true;
342 Features[
"gws"] =
true;
343 Features[
"dot11-insts"] =
true;
344 Features[
"fp8-conversion-insts"] =
true;
345 Features[
"wmma-128b-insts"] =
true;
346 Features[
"swmmac-gfx1200-insts"] =
true;
347 Features[
"atomic-fmin-fmax-global-f32"] =
true;
358 case GK_GFX11_GENERIC:
359 Features[
"ci-insts"] =
true;
360 Features[
"dot5-insts"] =
true;
361 Features[
"dot7-insts"] =
true;
362 Features[
"dot8-insts"] =
true;
363 Features[
"dot9-insts"] =
true;
364 Features[
"dot10-insts"] =
true;
365 Features[
"dot12-insts"] =
true;
366 Features[
"dl-insts"] =
true;
367 Features[
"16-bit-insts"] =
true;
368 Features[
"dpp"] =
true;
369 Features[
"gfx8-insts"] =
true;
370 Features[
"gfx9-insts"] =
true;
371 Features[
"flat-global-insts"] =
true;
372 Features[
"gfx10-insts"] =
true;
373 Features[
"gfx10-3-insts"] =
true;
374 Features[
"gfx11-insts"] =
true;
375 Features[
"atomic-fadd-rtn-insts"] =
true;
376 Features[
"image-insts"] =
true;
377 Features[
"cube-insts"] =
true;
378 Features[
"lerp-inst"] =
true;
379 Features[
"sad-insts"] =
true;
380 Features[
"qsad-insts"] =
true;
381 Features[
"msad-insts"] =
true;
382 Features[
"mqsad-pk-insts"] =
true;
383 Features[
"mqsad-insts"] =
true;
384 Features[
"cvt-pknorm-vop2-insts"] =
true;
385 Features[
"gws"] =
true;
386 Features[
"wmma-256b-insts"] =
true;
387 Features[
"atomic-fmin-fmax-global-f32"] =
true;
396 case GK_GFX10_3_GENERIC:
397 Features[
"ci-insts"] =
true;
398 Features[
"dot1-insts"] =
true;
399 Features[
"dot2-insts"] =
true;
400 Features[
"dot5-insts"] =
true;
401 Features[
"dot6-insts"] =
true;
402 Features[
"dot7-insts"] =
true;
403 Features[
"dot10-insts"] =
true;
404 Features[
"dl-insts"] =
true;
405 Features[
"16-bit-insts"] =
true;
406 Features[
"dpp"] =
true;
407 Features[
"gfx8-insts"] =
true;
408 Features[
"gfx9-insts"] =
true;
409 Features[
"flat-global-insts"] =
true;
410 Features[
"gfx10-insts"] =
true;
411 Features[
"gfx10-3-insts"] =
true;
412 Features[
"image-insts"] =
true;
413 Features[
"s-memrealtime"] =
true;
414 Features[
"s-memtime-inst"] =
true;
415 Features[
"gws"] =
true;
416 Features[
"vmem-to-lds-load-insts"] =
true;
417 Features[
"atomic-fmin-fmax-global-f32"] =
true;
418 Features[
"atomic-fmin-fmax-global-f64"] =
true;
419 Features[
"cube-insts"] =
true;
420 Features[
"lerp-inst"] =
true;
421 Features[
"sad-insts"] =
true;
422 Features[
"qsad-insts"] =
true;
423 Features[
"msad-insts"] =
true;
424 Features[
"mqsad-pk-insts"] =
true;
425 Features[
"mqsad-insts"] =
true;
426 Features[
"cvt-pknorm-vop2-insts"] =
true;
430 Features[
"dot1-insts"] =
true;
431 Features[
"dot2-insts"] =
true;
432 Features[
"dot5-insts"] =
true;
433 Features[
"dot6-insts"] =
true;
434 Features[
"dot7-insts"] =
true;
435 Features[
"dot10-insts"] =
true;
439 case GK_GFX10_1_GENERIC:
440 Features[
"dl-insts"] =
true;
441 Features[
"ci-insts"] =
true;
442 Features[
"16-bit-insts"] =
true;
443 Features[
"dpp"] =
true;
444 Features[
"gfx8-insts"] =
true;
445 Features[
"gfx9-insts"] =
true;
446 Features[
"flat-global-insts"] =
true;
447 Features[
"gfx10-insts"] =
true;
448 Features[
"image-insts"] =
true;
449 Features[
"s-memrealtime"] =
true;
450 Features[
"s-memtime-inst"] =
true;
451 Features[
"gws"] =
true;
452 Features[
"vmem-to-lds-load-insts"] =
true;
453 Features[
"atomic-fmin-fmax-global-f32"] =
true;
454 Features[
"atomic-fmin-fmax-global-f64"] =
true;
455 Features[
"cube-insts"] =
true;
456 Features[
"lerp-inst"] =
true;
457 Features[
"sad-insts"] =
true;
458 Features[
"qsad-insts"] =
true;
459 Features[
"msad-insts"] =
true;
460 Features[
"mqsad-pk-insts"] =
true;
461 Features[
"mqsad-insts"] =
true;
462 Features[
"cvt-pknorm-vop2-insts"] =
true;
465 Features[
"bitop3-insts"] =
true;
466 Features[
"fp6bf6-cvt-scale-insts"] =
true;
467 Features[
"fp4-cvt-scale-insts"] =
true;
468 Features[
"bf8-cvt-scale-insts"] =
true;
469 Features[
"fp8-cvt-scale-insts"] =
true;
470 Features[
"f16bf16-to-fp6bf6-cvt-scale-insts"] =
true;
471 Features[
"f32-to-f16bf16-cvt-sr-insts"] =
true;
472 Features[
"prng-inst"] =
true;
473 Features[
"permlane16-swap"] =
true;
474 Features[
"permlane32-swap"] =
true;
475 Features[
"ashr-pk-insts"] =
true;
476 Features[
"dot12-insts"] =
true;
477 Features[
"dot13-insts"] =
true;
478 Features[
"atomic-buffer-pk-add-bf16-inst"] =
true;
479 Features[
"gfx950-insts"] =
true;
482 Features[
"fp8-insts"] =
true;
483 Features[
"fp8-conversion-insts"] =
true;
484 if (Kind != GK_GFX950)
485 Features[
"xf32-insts"] =
true;
487 case GK_GFX9_4_GENERIC:
488 Features[
"gfx940-insts"] =
true;
489 Features[
"atomic-ds-pk-add-16-insts"] =
true;
490 Features[
"atomic-flat-pk-add-16-insts"] =
true;
491 Features[
"atomic-global-pk-add-bf16-inst"] =
true;
492 Features[
"gfx90a-insts"] =
true;
493 Features[
"atomic-buffer-global-pk-add-f16-insts"] =
true;
494 Features[
"atomic-fadd-rtn-insts"] =
true;
495 Features[
"dot3-insts"] =
true;
496 Features[
"dot4-insts"] =
true;
497 Features[
"dot5-insts"] =
true;
498 Features[
"dot6-insts"] =
true;
499 Features[
"mai-insts"] =
true;
500 Features[
"dl-insts"] =
true;
501 Features[
"dot1-insts"] =
true;
502 Features[
"dot2-insts"] =
true;
503 Features[
"dot7-insts"] =
true;
504 Features[
"dot10-insts"] =
true;
505 Features[
"gfx9-insts"] =
true;
506 Features[
"flat-global-insts"] =
true;
507 Features[
"gfx8-insts"] =
true;
508 Features[
"16-bit-insts"] =
true;
509 Features[
"dpp"] =
true;
510 Features[
"s-memrealtime"] =
true;
511 Features[
"ci-insts"] =
true;
512 Features[
"s-memtime-inst"] =
true;
513 Features[
"gws"] =
true;
514 Features[
"vmem-to-lds-load-insts"] =
true;
515 Features[
"atomic-fmin-fmax-global-f64"] =
true;
516 Features[
"wavefrontsize64"] =
true;
517 Features[
"cube-insts"] =
true;
518 Features[
"lerp-inst"] =
true;
519 Features[
"sad-insts"] =
true;
520 Features[
"qsad-insts"] =
true;
521 Features[
"msad-insts"] =
true;
522 Features[
"mqsad-pk-insts"] =
true;
523 Features[
"mqsad-insts"] =
true;
524 Features[
"cvt-pknorm-vop2-insts"] =
true;
527 Features[
"gfx90a-insts"] =
true;
528 Features[
"atomic-buffer-global-pk-add-f16-insts"] =
true;
529 Features[
"atomic-fadd-rtn-insts"] =
true;
530 Features[
"atomic-fmin-fmax-global-f64"] =
true;
533 Features[
"dot3-insts"] =
true;
534 Features[
"dot4-insts"] =
true;
535 Features[
"dot5-insts"] =
true;
536 Features[
"dot6-insts"] =
true;
537 Features[
"mai-insts"] =
true;
540 Features[
"dl-insts"] =
true;
541 Features[
"dot1-insts"] =
true;
542 Features[
"dot2-insts"] =
true;
543 Features[
"dot7-insts"] =
true;
544 Features[
"dot10-insts"] =
true;
551 case GK_GFX9_GENERIC:
552 Features[
"gfx9-insts"] =
true;
553 Features[
"flat-global-insts"] =
true;
554 Features[
"vmem-to-lds-load-insts"] =
true;
561 Features[
"gfx8-insts"] =
true;
562 Features[
"16-bit-insts"] =
true;
563 Features[
"dpp"] =
true;
564 Features[
"s-memrealtime"] =
true;
565 Features[
"ci-insts"] =
true;
566 Features[
"image-insts"] =
true;
567 Features[
"s-memtime-inst"] =
true;
568 Features[
"gws"] =
true;
569 Features[
"wavefrontsize64"] =
true;
570 Features[
"cube-insts"] =
true;
571 Features[
"lerp-inst"] =
true;
572 Features[
"sad-insts"] =
true;
573 Features[
"qsad-insts"] =
true;
574 Features[
"msad-insts"] =
true;
575 Features[
"mqsad-pk-insts"] =
true;
576 Features[
"mqsad-insts"] =
true;
577 Features[
"cvt-pknorm-vop2-insts"] =
true;
585 Features[
"ci-insts"] =
true;
586 Features[
"cube-insts"] =
true;
587 Features[
"lerp-inst"] =
true;
588 Features[
"sad-insts"] =
true;
589 Features[
"qsad-insts"] =
true;
590 Features[
"msad-insts"] =
true;
591 Features[
"mqsad-pk-insts"] =
true;
592 Features[
"mqsad-insts"] =
true;
593 Features[
"cvt-pknorm-vop2-insts"] =
true;
594 Features[
"image-insts"] =
true;
595 Features[
"s-memtime-inst"] =
true;
596 Features[
"gws"] =
true;
597 Features[
"atomic-fmin-fmax-global-f32"] =
true;
598 Features[
"atomic-fmin-fmax-global-f64"] =
true;
599 Features[
"wavefrontsize64"] =
true;
604 Features[
"image-insts"] =
true;
605 Features[
"s-memtime-inst"] =
true;
606 Features[
"gws"] =
true;
607 Features[
"atomic-fmin-fmax-global-f32"] =
true;
608 Features[
"atomic-fmin-fmax-global-f64"] =
true;
609 Features[
"wavefrontsize64"] =
true;
610 Features[
"cube-insts"] =
true;
611 Features[
"lerp-inst"] =
true;
612 Features[
"sad-insts"] =
true;
613 Features[
"msad-insts"] =
true;
614 Features[
"mqsad-pk-insts"] =
true;
615 Features[
"cvt-pknorm-vop2-insts"] =
true;
627std::pair<FeatureError, StringRef>
636 static const Triple AMDGCN(
"amdgcn-amd-amdhsa");
638 for (
auto &&GPU : GPUs) {
640 for (
auto &&[
F,
B] : Tmp)
643 Features[
"wavefrontsize32"] =
true;
644 Features[
"wavefrontsize64"] =
true;
645 }
else if (
T.isAMDGCN()) {
683 TargetTripleString(TT.normalize(
Triple::CanonicalForm::FOUR_IDENT)),
684 XnackSetting(XnackSetting), SramEccSetting(SramEccSetting),
685 IsAMDHSA(TT.getOS() ==
Triple::AMDHSA) {}
690 return TargetIDSetting::Off;
692 return TargetIDSetting::On;
701 for (
const auto &FeatureString : TargetIDSplit) {
702 if (FeatureString.starts_with(
"xnack"))
704 if (FeatureString.starts_with(
"sramecc"))
709std::optional<TargetID>
714 TargetIDDirective.
split(Parts,
'-', 4);
715 if (Parts.
size() < 4)
718 Triple TT(Parts[0], Parts[1], Parts[2], Parts[3]);
723 Parts[4].split(FeatureSplit,
':');
724 if (FeatureSplit.
empty())
734 ? TargetIDSetting::Any
735 : TargetIDSetting::Unsupported;
737 ? TargetIDSetting::Any
738 : TargetIDSetting::Unsupported;
742 if (FeatureString.starts_with(
"xnack"))
744 else if (FeatureString.starts_with(
"sramecc"))
748 return TargetID(Arch, TT, XnackSetting, SramEccSetting);
757 StreamRep <<
":sramecc-";
759 StreamRep <<
":sramecc+";
763 StreamRep <<
":xnack-";
765 StreamRep <<
":xnack+";
777 return Arch ==
Other.Arch && XnackSetting ==
Other.XnackSetting &&
778 SramEccSetting ==
Other.SramEccSetting && IsAMDHSA ==
Other.IsAMDHSA &&
779 TargetTripleString ==
Other.TargetTripleString;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static void fillAMDGCNFeatureMap(StringRef GPU, const Triple &T, StringMap< bool > &Features)
Fills Features map with default values for given target GPU.
static TargetIDSetting getTargetIDSettingFromFeatureString(StringRef FeatureString)
static std::pair< FeatureError, StringRef > insertWaveSizeFeature(StringRef GPU, const Triple &T, const StringMap< bool > &DefaultFeatures, StringMap< bool > &Features)
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
This file defines the SmallVector class.
This file implements the StringSwitch template, which mimics a switch() statement whose cases are str...
static std::optional< TargetID > parseTargetIDString(StringRef TargetIDDirective)
void print(raw_ostream &OS) const
TargetIDSetting getXnackSetting() const
void setTargetIDFromTargetIDStream(StringRef TargetID)
bool operator==(const TargetID &Other) const
TargetID(GPUKind Arch, const Triple &TT, TargetIDSetting XnackSetting, TargetIDSetting SramEccSetting)
std::string toString() const
TargetIDSetting getSramEccSetting() const
Represent a constant reference to an array (0 or more elements consecutively in memory),...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...
iterator find(StringRef Key)
size_type count(StringRef Key) const
count - Return 1 if the element is in the map, 0 otherwise.
bool insert(MapEntryTy *KeyValue)
insert - Insert the specified key/value pair into the map.
Represent a constant reference to a string, i.e.
std::pair< StringRef, StringRef > split(char Separator) const
Split into two substrings around the first occurrence of a separator character.
constexpr bool empty() const
Check if the string is empty.
StringRef take_front(size_t N=1) const
Return a StringRef equal to 'this' but with only the first N elements remaining.
size_t find(char C, size_t From=0) const
Search for the first character C in the string.
bool ends_with(StringRef Suffix) const
Check if this string ends with the given Suffix.
StringRef drop_back(size_t N=1) const
Return a StringRef equal to 'this' but with the last N elements dropped.
A switch()-like statement whose cases are string literals.
StringSwitch & Case(StringLiteral S, T Value)
Triple - Helper class for working with autoconf configuration names.
This class implements an extremely fast bulk output stream that can only output to a stream.
A raw_ostream that writes to an std::string.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
LLVM_ABI StringRef getArchNameR600(GPUKind AK)
GPUKind
GPU kinds supported by the AMDGPU target.
@ GK_AMDGCN_GENERIC_FIRST
LLVM_ABI StringRef getCanonicalArchName(const Triple &T, StringRef Arch)
LLVM_ABI void fillValidArchListR600(SmallVectorImpl< StringRef > &Values)
LLVM_ABI StringRef getArchFamilyNameAMDGCN(GPUKind AK)
LLVM_ABI IsaVersion getIsaVersion(StringRef GPU)
LLVM_ABI void fillValidArchListAMDGCN(SmallVectorImpl< StringRef > &Values)
LLVM_ABI GPUKind parseArchAMDGCN(StringRef CPU)
@ UNSUPPORTED_TARGET_FEATURE
@ INVALID_FEATURE_COMBINATION
AMDGPU::TargetID TargetID
LLVM_ABI std::pair< FeatureError, StringRef > fillAMDGPUFeatureMap(StringRef GPU, const Triple &T, StringMap< bool > &Features)
Fills Features map with default values for given target GPU.
LLVM_ABI StringRef getArchNameAMDGCN(GPUKind AK)
LLVM_ABI unsigned getArchAttrAMDGCN(GPUKind AK)
LLVM_ABI unsigned getArchAttrR600(GPUKind AK)
LLVM_ABI GPUKind parseArchR600(StringRef CPU)
This is an optimization pass for GlobalISel generic memory operations.
RelativeUniformCounterPtr Values
Instruction set architecture version.