]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/include/clang/Basic/Cuda.h
MFV r316454,316455:
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / 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 };
25 const char *CudaVersionToString(CudaVersion V);
26
27 // No string -> CudaVersion conversion function because there's no canonical
28 // spelling of the various CUDA versions.
29
30 enum class CudaArch {
31   UNKNOWN,
32   SM_20,
33   SM_21,
34   SM_30,
35   SM_32,
36   SM_35,
37   SM_37,
38   SM_50,
39   SM_52,
40   SM_53,
41   SM_60,
42   SM_61,
43   SM_62,
44 };
45 const char *CudaArchToString(CudaArch A);
46
47 // The input should have the form "sm_20".
48 CudaArch StringToCudaArch(llvm::StringRef S);
49
50 enum class CudaVirtualArch {
51   UNKNOWN,
52   COMPUTE_20,
53   COMPUTE_30,
54   COMPUTE_32,
55   COMPUTE_35,
56   COMPUTE_37,
57   COMPUTE_50,
58   COMPUTE_52,
59   COMPUTE_53,
60   COMPUTE_60,
61   COMPUTE_61,
62   COMPUTE_62,
63 };
64 const char *CudaVirtualArchToString(CudaVirtualArch A);
65
66 // The input should have the form "compute_20".
67 CudaVirtualArch StringToCudaVirtualArch(llvm::StringRef S);
68
69 /// Get the compute_xx corresponding to an sm_yy.
70 CudaVirtualArch VirtualArchForCudaArch(CudaArch A);
71
72 /// Get the earliest CudaVersion that supports the given CudaArch.
73 CudaVersion MinVersionForCudaArch(CudaArch A);
74
75 } // namespace clang
76
77 #endif