clang 22.0.0git
OffloadArch.h
Go to the documentation of this file.
1//===--- OffloadArch.h - Definition of offloading architectures --- C++ -*-===//
2//
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
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_CLANG_BASIC_OFFLOADARCH_H
10#define LLVM_CLANG_BASIC_OFFLOADARCH_H
11
12namespace llvm {
13class StringRef;
14} // namespace llvm
15
16namespace clang {
17
18enum class OffloadArch {
19 UNUSED,
20 UNKNOWN,
21 // TODO: Deprecate and remove GPU architectures older than sm_52.
22 SM_20,
23 SM_21,
24 SM_30,
25 // This has a name conflict with sys/mac.h on AIX, rename it as a workaround.
26 SM_32_,
27 SM_35,
28 SM_37,
29 SM_50,
30 SM_52,
31 SM_53,
32 SM_60,
33 SM_61,
34 SM_62,
35 SM_70,
36 SM_72,
37 SM_75,
38 SM_80,
39 SM_86,
40 SM_87,
41 SM_89,
42 SM_90,
43 SM_90a,
44 SM_100,
45 SM_100a,
46 SM_101,
47 SM_101a,
48 SM_103,
49 SM_103a,
50 SM_120,
51 SM_120a,
52 SM_121,
53 SM_121a,
54 GFX600,
55 GFX601,
56 GFX602,
57 GFX700,
58 GFX701,
59 GFX702,
60 GFX703,
61 GFX704,
62 GFX705,
63 GFX801,
64 GFX802,
65 GFX803,
66 GFX805,
67 GFX810,
69 GFX900,
70 GFX902,
71 GFX904,
72 GFX906,
73 GFX908,
74 GFX909,
75 GFX90a,
76 GFX90c,
78 GFX942,
79 GFX950,
81 GFX1010,
82 GFX1011,
83 GFX1012,
84 GFX1013,
86 GFX1030,
87 GFX1031,
88 GFX1032,
89 GFX1033,
90 GFX1034,
91 GFX1035,
92 GFX1036,
94 GFX1100,
95 GFX1101,
96 GFX1102,
97 GFX1103,
98 GFX1150,
99 GFX1151,
100 GFX1152,
101 GFX1153,
103 GFX1200,
104 GFX1201,
105 GFX1250,
107 Generic, // A processor model named 'generic' if the target backend defines a
108 // public one.
109 // Intel CPUs
111 // Intel GPUs
112 BMG_G21,
113 LAST,
114
117};
118
119static inline bool IsNVIDIAOffloadArch(OffloadArch A) {
120 return A >= OffloadArch::SM_20 && A < OffloadArch::GFX600;
121}
122
123static inline bool IsAMDOffloadArch(OffloadArch A) {
124 // Generic processor model is for testing only.
125 return A >= OffloadArch::GFX600 && A < OffloadArch::Generic;
126}
127
130}
131
134}
135
138}
139
140const char *OffloadArchToString(OffloadArch A);
142
143// Convert a string to an OffloadArch enum value. Returns
144// OffloadArch::UNKNOWN if the string is not recognized.
145OffloadArch StringToOffloadArch(llvm::StringRef S);
146
147} // namespace clang
148
149#endif // LLVM_CLANG_BASIC_OFFLOADARCH_H
OffloadArch Arch
Definition: OffloadArch.cpp:10
The JSON file list parser is used to communicate input to InstallAPI.
static bool IsIntelOffloadArch(OffloadArch Arch)
Definition: OffloadArch.h:136
static bool IsIntelCPUOffloadArch(OffloadArch Arch)
Definition: OffloadArch.h:128
static bool IsAMDOffloadArch(OffloadArch A)
Definition: OffloadArch.h:123
OffloadArch
Definition: OffloadArch.h:18
static bool IsNVIDIAOffloadArch(OffloadArch A)
Definition: OffloadArch.h:119
const char * OffloadArchToVirtualArchString(OffloadArch A)
OffloadArch StringToOffloadArch(llvm::StringRef S)
const char * OffloadArchToString(OffloadArch A)
static bool IsIntelGPUOffloadArch(OffloadArch Arch)
Definition: OffloadArch.h:132
@ Generic
not a target-specific vector type
Diagnostic wrappers for TextAPI types for error reporting.
Definition: Dominators.h:30