| 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 | |