1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | #ifndef LLVM_CLANG_BASIC_CUDA_H |
10 | #define LLVM_CLANG_BASIC_CUDA_H |
11 | |
12 | namespace llvm { |
13 | class StringRef; |
14 | class VersionTuple; |
15 | } |
16 | |
17 | namespace clang { |
18 | |
19 | enum class CudaVersion { |
20 | UNKNOWN, |
21 | CUDA_70, |
22 | CUDA_75, |
23 | CUDA_80, |
24 | CUDA_90, |
25 | CUDA_91, |
26 | CUDA_92, |
27 | CUDA_100, |
28 | CUDA_101, |
29 | LATEST = CUDA_101, |
30 | }; |
31 | const char *CudaVersionToString(CudaVersion V); |
32 | |
33 | CudaVersion CudaStringToVersion(llvm::StringRef S); |
34 | |
35 | enum class CudaArch { |
36 | UNKNOWN, |
37 | SM_20, |
38 | SM_21, |
39 | SM_30, |
40 | SM_32, |
41 | SM_35, |
42 | SM_37, |
43 | SM_50, |
44 | SM_52, |
45 | SM_53, |
46 | SM_60, |
47 | SM_61, |
48 | SM_62, |
49 | SM_70, |
50 | SM_72, |
51 | SM_75, |
52 | GFX600, |
53 | GFX601, |
54 | GFX700, |
55 | GFX701, |
56 | GFX702, |
57 | GFX703, |
58 | GFX704, |
59 | GFX801, |
60 | GFX802, |
61 | GFX803, |
62 | GFX810, |
63 | GFX900, |
64 | GFX902, |
65 | GFX904, |
66 | GFX906, |
67 | GFX909, |
68 | LAST, |
69 | }; |
70 | const char *CudaArchToString(CudaArch A); |
71 | |
72 | |
73 | CudaArch StringToCudaArch(llvm::StringRef S); |
74 | |
75 | enum class CudaVirtualArch { |
76 | UNKNOWN, |
77 | COMPUTE_20, |
78 | COMPUTE_30, |
79 | COMPUTE_32, |
80 | COMPUTE_35, |
81 | COMPUTE_37, |
82 | COMPUTE_50, |
83 | COMPUTE_52, |
84 | COMPUTE_53, |
85 | COMPUTE_60, |
86 | COMPUTE_61, |
87 | COMPUTE_62, |
88 | COMPUTE_70, |
89 | COMPUTE_72, |
90 | COMPUTE_75, |
91 | COMPUTE_AMDGCN, |
92 | }; |
93 | const char *CudaVirtualArchToString(CudaVirtualArch A); |
94 | |
95 | |
96 | CudaVirtualArch StringToCudaVirtualArch(llvm::StringRef S); |
97 | |
98 | |
99 | CudaVirtualArch VirtualArchForCudaArch(CudaArch A); |
100 | |
101 | |
102 | CudaVersion MinVersionForCudaArch(CudaArch A); |
103 | |
104 | |
105 | CudaVersion MaxVersionForCudaArch(CudaArch A); |
106 | |
107 | |
108 | enum class CudaFeature { |
109 | |
110 | CUDA_USES_NEW_LAUNCH, |
111 | |
112 | CUDA_USES_FATBIN_REGISTER_END, |
113 | }; |
114 | |
115 | bool CudaFeatureEnabled(llvm::VersionTuple, CudaFeature); |
116 | bool CudaFeatureEnabled(CudaVersion, CudaFeature); |
117 | |
118 | } |
119 | |
120 | #endif |
121 | |