]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/clang/Basic/Cuda.h
Vendor import of clang trunk r338150:
[FreeBSD/FreeBSD.git] / include / clang / Basic / Cuda.h
1 //===--- Cuda.h - Utilities for compiling CUDA code  ------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef LLVM_CLANG_BASIC_CUDA_H
11 #define LLVM_CLANG_BASIC_CUDA_H
12
13 namespace llvm {
14 class StringRef;
15 } // namespace llvm
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   LATEST = CUDA_92,
28 };
29 const char *CudaVersionToString(CudaVersion V);
30
31 // No string -> CudaVersion conversion function because there's no canonical
32 // spelling of the various CUDA versions.
33
34 enum class CudaArch {
35   UNKNOWN,
36   SM_20,
37   SM_21,
38   SM_30,
39   SM_32,
40   SM_35,
41   SM_37,
42   SM_50,
43   SM_52,
44   SM_53,
45   SM_60,
46   SM_61,
47   SM_62,
48   SM_70,
49   SM_72,
50   GFX600,
51   GFX601,
52   GFX700,
53   GFX701,
54   GFX702,
55   GFX703,
56   GFX704,
57   GFX801,
58   GFX802,
59   GFX803,
60   GFX810,
61   GFX900,
62   GFX902,
63   LAST,
64 };
65 const char *CudaArchToString(CudaArch A);
66
67 // The input should have the form "sm_20".
68 CudaArch StringToCudaArch(llvm::StringRef S);
69
70 enum class CudaVirtualArch {
71   UNKNOWN,
72   COMPUTE_20,
73   COMPUTE_30,
74   COMPUTE_32,
75   COMPUTE_35,
76   COMPUTE_37,
77   COMPUTE_50,
78   COMPUTE_52,
79   COMPUTE_53,
80   COMPUTE_60,
81   COMPUTE_61,
82   COMPUTE_62,
83   COMPUTE_70,
84   COMPUTE_72,
85   COMPUTE_AMDGCN,
86 };
87 const char *CudaVirtualArchToString(CudaVirtualArch A);
88
89 // The input should have the form "compute_20".
90 CudaVirtualArch StringToCudaVirtualArch(llvm::StringRef S);
91
92 /// Get the compute_xx corresponding to an sm_yy.
93 CudaVirtualArch VirtualArchForCudaArch(CudaArch A);
94
95 /// Get the earliest CudaVersion that supports the given CudaArch.
96 CudaVersion MinVersionForCudaArch(CudaArch A);
97
98 /// Get the latest CudaVersion that supports the given CudaArch.
99 CudaVersion MaxVersionForCudaArch(CudaArch A);
100
101 } // namespace clang
102
103 #endif