diff options
Diffstat (limited to 'clang/lib/Driver/ToolChains/Cuda.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Cuda.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 7d803be..fdfcea8 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -88,6 +88,8 @@ CudaVersion getCudaVersion(uint32_t raw_version) { return CudaVersion::CUDA_126; if (raw_version < 12090) return CudaVersion::CUDA_128; + if (raw_version < 13000) + return CudaVersion::CUDA_129; return CudaVersion::NEW; } @@ -547,22 +549,16 @@ void NVPTX::FatBinary::ConstructJob(Compilation &C, const JobAction &JA, auto *A = II.getAction(); assert(A->getInputs().size() == 1 && "Device offload action is expected to have a single input"); - const char *gpu_arch_str = A->getOffloadingArch(); - assert(gpu_arch_str && + StringRef GpuArch = A->getOffloadingArch(); + assert(!GpuArch.empty() && "Device action expected to have associated a GPU architecture!"); - OffloadArch gpu_arch = StringToOffloadArch(gpu_arch_str); - if (II.getType() == types::TY_PP_Asm && - !shouldIncludePTX(Args, gpu_arch_str)) + if (II.getType() == types::TY_PP_Asm && !shouldIncludePTX(Args, GpuArch)) continue; - // We need to pass an Arch of the form "sm_XX" for cubin files and - // "compute_XX" for ptx. - const char *Arch = (II.getType() == types::TY_PP_Asm) - ? OffloadArchToVirtualArchString(gpu_arch) - : gpu_arch_str; - CmdArgs.push_back( - Args.MakeArgString(llvm::Twine("--image=profile=") + Arch + - ",file=" + getToolChain().getInputFilename(II))); + StringRef Kind = (II.getType() == types::TY_PP_Asm) ? "ptx" : "elf"; + CmdArgs.push_back(Args.MakeArgString( + "--image3=kind=" + Kind + ",sm=" + GpuArch.drop_front(3) + + ",file=" + getToolChain().getInputFilename(II))); } for (const auto &A : Args.getAllArgValues(options::OPT_Xcuda_fatbinary)) @@ -683,6 +679,7 @@ void NVPTX::getNVPTXTargetFeatures(const Driver &D, const llvm::Triple &Triple, case CudaVersion::CUDA_##CUDA_VER: \ PtxFeature = "+ptx" #PTX_VER; \ break; + CASE_CUDA_VERSION(129, 88); CASE_CUDA_VERSION(128, 87); CASE_CUDA_VERSION(126, 85); CASE_CUDA_VERSION(125, 85); |