annotate clang/lib/Basic/Cuda.cpp @ 176:de4ac79aef9d

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 17:13:11 +0900
parents 0572611fdcc8
children 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 #include "clang/Basic/Cuda.h"
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 #include "llvm/ADT/StringRef.h"
anatofuz
parents:
diff changeset
4 #include "llvm/ADT/StringSwitch.h"
anatofuz
parents:
diff changeset
5 #include "llvm/ADT/Twine.h"
anatofuz
parents:
diff changeset
6 #include "llvm/Support/ErrorHandling.h"
anatofuz
parents:
diff changeset
7 #include "llvm/Support/VersionTuple.h"
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 namespace clang {
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 const char *CudaVersionToString(CudaVersion V) {
anatofuz
parents:
diff changeset
12 switch (V) {
anatofuz
parents:
diff changeset
13 case CudaVersion::UNKNOWN:
anatofuz
parents:
diff changeset
14 return "unknown";
anatofuz
parents:
diff changeset
15 case CudaVersion::CUDA_70:
anatofuz
parents:
diff changeset
16 return "7.0";
anatofuz
parents:
diff changeset
17 case CudaVersion::CUDA_75:
anatofuz
parents:
diff changeset
18 return "7.5";
anatofuz
parents:
diff changeset
19 case CudaVersion::CUDA_80:
anatofuz
parents:
diff changeset
20 return "8.0";
anatofuz
parents:
diff changeset
21 case CudaVersion::CUDA_90:
anatofuz
parents:
diff changeset
22 return "9.0";
anatofuz
parents:
diff changeset
23 case CudaVersion::CUDA_91:
anatofuz
parents:
diff changeset
24 return "9.1";
anatofuz
parents:
diff changeset
25 case CudaVersion::CUDA_92:
anatofuz
parents:
diff changeset
26 return "9.2";
anatofuz
parents:
diff changeset
27 case CudaVersion::CUDA_100:
anatofuz
parents:
diff changeset
28 return "10.0";
anatofuz
parents:
diff changeset
29 case CudaVersion::CUDA_101:
anatofuz
parents:
diff changeset
30 return "10.1";
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
31 case CudaVersion::CUDA_102:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
32 return "10.2";
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
33 case CudaVersion::CUDA_110:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
34 return "11.0";
150
anatofuz
parents:
diff changeset
35 }
anatofuz
parents:
diff changeset
36 llvm_unreachable("invalid enum");
anatofuz
parents:
diff changeset
37 }
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 CudaVersion CudaStringToVersion(const llvm::Twine &S) {
anatofuz
parents:
diff changeset
40 return llvm::StringSwitch<CudaVersion>(S.str())
anatofuz
parents:
diff changeset
41 .Case("7.0", CudaVersion::CUDA_70)
anatofuz
parents:
diff changeset
42 .Case("7.5", CudaVersion::CUDA_75)
anatofuz
parents:
diff changeset
43 .Case("8.0", CudaVersion::CUDA_80)
anatofuz
parents:
diff changeset
44 .Case("9.0", CudaVersion::CUDA_90)
anatofuz
parents:
diff changeset
45 .Case("9.1", CudaVersion::CUDA_91)
anatofuz
parents:
diff changeset
46 .Case("9.2", CudaVersion::CUDA_92)
anatofuz
parents:
diff changeset
47 .Case("10.0", CudaVersion::CUDA_100)
anatofuz
parents:
diff changeset
48 .Case("10.1", CudaVersion::CUDA_101)
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
49 .Case("10.2", CudaVersion::CUDA_102)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
50 .Case("11.0", CudaVersion::CUDA_110)
150
anatofuz
parents:
diff changeset
51 .Default(CudaVersion::UNKNOWN);
anatofuz
parents:
diff changeset
52 }
anatofuz
parents:
diff changeset
53
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
54 struct CudaArchToStringMap {
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
55 CudaArch arch;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
56 const char *arch_name;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
57 const char *virtual_arch_name;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
58 };
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
59
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
60 #define SM2(sm, ca) \
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
61 { CudaArch::SM_##sm, "sm_" #sm, ca }
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
62 #define SM(sm) SM2(sm, "compute_" #sm)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
63 #define GFX(gpu) \
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
64 { CudaArch::GFX##gpu, "gfx" #gpu, "compute_amdgcn" }
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
65 CudaArchToStringMap arch_names[] = {
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
66 // clang-format off
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
67 SM2(20, "compute_20"), SM2(21, "compute_20"), // Fermi
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
68 SM(30), SM(32), SM(35), SM(37), // Kepler
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
69 SM(50), SM(52), SM(53), // Maxwell
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
70 SM(60), SM(61), SM(62), // Pascal
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
71 SM(70), SM(72), // Volta
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
72 SM(75), // Turing
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
73 SM(80), // Ampere
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
74 GFX(600), // tahiti
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
75 GFX(601), // pitcairn, verde, oland,hainan
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
76 GFX(700), // kaveri
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
77 GFX(701), // hawaii
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
78 GFX(702), // 290,290x,R390,R390x
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
79 GFX(703), // kabini mullins
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
80 GFX(704), // bonaire
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
81 GFX(801), // carrizo
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
82 GFX(802), // tonga,iceland
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
83 GFX(803), // fiji,polaris10
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
84 GFX(810), // stoney
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
85 GFX(900), // vega, instinct
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
86 GFX(902), GFX(904), GFX(906), GFX(908), GFX(909),
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
87 GFX(1010), GFX(1011), GFX(1012),
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
88 // clang-format on
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
89 };
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
90 #undef SM
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
91 #undef SM2
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
92 #undef GFX
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
93
150
anatofuz
parents:
diff changeset
94 const char *CudaArchToString(CudaArch A) {
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
95 auto result = std::find_if(
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
96 std::begin(arch_names), std::end(arch_names),
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
97 [A](const CudaArchToStringMap &map) { return A == map.arch; });
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
98 if (result == std::end(arch_names))
150
anatofuz
parents:
diff changeset
99 return "unknown";
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
100 return result->arch_name;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
101 }
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
102
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
103 const char *CudaArchToVirtualArchString(CudaArch A) {
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
104 auto result = std::find_if(
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
105 std::begin(arch_names), std::end(arch_names),
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
106 [A](const CudaArchToStringMap &map) { return A == map.arch; });
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
107 if (result == std::end(arch_names))
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
108 return "unknown";
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
109 return result->virtual_arch_name;
150
anatofuz
parents:
diff changeset
110 }
anatofuz
parents:
diff changeset
111
anatofuz
parents:
diff changeset
112 CudaArch StringToCudaArch(llvm::StringRef S) {
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
113 auto result = std::find_if(
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
114 std::begin(arch_names), std::end(arch_names),
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
115 [S](const CudaArchToStringMap &map) { return S == map.arch_name; });
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
116 if (result == std::end(arch_names))
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
117 return CudaArch::UNKNOWN;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
118 return result->arch;
150
anatofuz
parents:
diff changeset
119 }
anatofuz
parents:
diff changeset
120
anatofuz
parents:
diff changeset
121 CudaVersion MinVersionForCudaArch(CudaArch A) {
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
122 if (A == CudaArch::UNKNOWN)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
123 return CudaVersion::UNKNOWN;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
124
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
125 // AMD GPUs do not depend on CUDA versions.
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
126 if (IsAMDGpuArch(A))
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
127 return CudaVersion::CUDA_70;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
128
150
anatofuz
parents:
diff changeset
129 switch (A) {
anatofuz
parents:
diff changeset
130 case CudaArch::SM_20:
anatofuz
parents:
diff changeset
131 case CudaArch::SM_21:
anatofuz
parents:
diff changeset
132 case CudaArch::SM_30:
anatofuz
parents:
diff changeset
133 case CudaArch::SM_32:
anatofuz
parents:
diff changeset
134 case CudaArch::SM_35:
anatofuz
parents:
diff changeset
135 case CudaArch::SM_37:
anatofuz
parents:
diff changeset
136 case CudaArch::SM_50:
anatofuz
parents:
diff changeset
137 case CudaArch::SM_52:
anatofuz
parents:
diff changeset
138 case CudaArch::SM_53:
anatofuz
parents:
diff changeset
139 return CudaVersion::CUDA_70;
anatofuz
parents:
diff changeset
140 case CudaArch::SM_60:
anatofuz
parents:
diff changeset
141 case CudaArch::SM_61:
anatofuz
parents:
diff changeset
142 case CudaArch::SM_62:
anatofuz
parents:
diff changeset
143 return CudaVersion::CUDA_80;
anatofuz
parents:
diff changeset
144 case CudaArch::SM_70:
anatofuz
parents:
diff changeset
145 return CudaVersion::CUDA_90;
anatofuz
parents:
diff changeset
146 case CudaArch::SM_72:
anatofuz
parents:
diff changeset
147 return CudaVersion::CUDA_91;
anatofuz
parents:
diff changeset
148 case CudaArch::SM_75:
anatofuz
parents:
diff changeset
149 return CudaVersion::CUDA_100;
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
150 case CudaArch::SM_80:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
151 return CudaVersion::CUDA_110;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
152 default:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
153 llvm_unreachable("invalid enum");
150
anatofuz
parents:
diff changeset
154 }
anatofuz
parents:
diff changeset
155 }
anatofuz
parents:
diff changeset
156
anatofuz
parents:
diff changeset
157 CudaVersion MaxVersionForCudaArch(CudaArch A) {
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
158 // AMD GPUs do not depend on CUDA versions.
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
159 if (IsAMDGpuArch(A))
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
160 return CudaVersion::LATEST;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
161
150
anatofuz
parents:
diff changeset
162 switch (A) {
anatofuz
parents:
diff changeset
163 case CudaArch::UNKNOWN:
anatofuz
parents:
diff changeset
164 return CudaVersion::UNKNOWN;
anatofuz
parents:
diff changeset
165 case CudaArch::SM_20:
anatofuz
parents:
diff changeset
166 case CudaArch::SM_21:
anatofuz
parents:
diff changeset
167 return CudaVersion::CUDA_80;
anatofuz
parents:
diff changeset
168 default:
anatofuz
parents:
diff changeset
169 return CudaVersion::LATEST;
anatofuz
parents:
diff changeset
170 }
anatofuz
parents:
diff changeset
171 }
anatofuz
parents:
diff changeset
172
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
173 CudaVersion ToCudaVersion(llvm::VersionTuple Version) {
150
anatofuz
parents:
diff changeset
174 int IVer =
anatofuz
parents:
diff changeset
175 Version.getMajor() * 10 + Version.getMinor().getValueOr(0);
anatofuz
parents:
diff changeset
176 switch(IVer) {
anatofuz
parents:
diff changeset
177 case 70:
anatofuz
parents:
diff changeset
178 return CudaVersion::CUDA_70;
anatofuz
parents:
diff changeset
179 case 75:
anatofuz
parents:
diff changeset
180 return CudaVersion::CUDA_75;
anatofuz
parents:
diff changeset
181 case 80:
anatofuz
parents:
diff changeset
182 return CudaVersion::CUDA_80;
anatofuz
parents:
diff changeset
183 case 90:
anatofuz
parents:
diff changeset
184 return CudaVersion::CUDA_90;
anatofuz
parents:
diff changeset
185 case 91:
anatofuz
parents:
diff changeset
186 return CudaVersion::CUDA_91;
anatofuz
parents:
diff changeset
187 case 92:
anatofuz
parents:
diff changeset
188 return CudaVersion::CUDA_92;
anatofuz
parents:
diff changeset
189 case 100:
anatofuz
parents:
diff changeset
190 return CudaVersion::CUDA_100;
anatofuz
parents:
diff changeset
191 case 101:
anatofuz
parents:
diff changeset
192 return CudaVersion::CUDA_101;
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
193 case 102:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
194 return CudaVersion::CUDA_102;
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
195 case 110:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
196 return CudaVersion::CUDA_110;
150
anatofuz
parents:
diff changeset
197 default:
anatofuz
parents:
diff changeset
198 return CudaVersion::UNKNOWN;
anatofuz
parents:
diff changeset
199 }
anatofuz
parents:
diff changeset
200 }
anatofuz
parents:
diff changeset
201
anatofuz
parents:
diff changeset
202 bool CudaFeatureEnabled(llvm::VersionTuple Version, CudaFeature Feature) {
anatofuz
parents:
diff changeset
203 return CudaFeatureEnabled(ToCudaVersion(Version), Feature);
anatofuz
parents:
diff changeset
204 }
anatofuz
parents:
diff changeset
205
anatofuz
parents:
diff changeset
206 bool CudaFeatureEnabled(CudaVersion Version, CudaFeature Feature) {
anatofuz
parents:
diff changeset
207 switch (Feature) {
anatofuz
parents:
diff changeset
208 case CudaFeature::CUDA_USES_NEW_LAUNCH:
anatofuz
parents:
diff changeset
209 return Version >= CudaVersion::CUDA_92;
anatofuz
parents:
diff changeset
210 case CudaFeature::CUDA_USES_FATBIN_REGISTER_END:
anatofuz
parents:
diff changeset
211 return Version >= CudaVersion::CUDA_101;
anatofuz
parents:
diff changeset
212 }
anatofuz
parents:
diff changeset
213 llvm_unreachable("Unknown CUDA feature.");
anatofuz
parents:
diff changeset
214 }
anatofuz
parents:
diff changeset
215 } // namespace clang