diff options
author | Joseph Huber <jhuber6@vols.utk.edu> | 2023-07-10 11:49:44 -0500 |
---|---|---|
committer | Joseph Huber <jhuber6@vols.utk.edu> | 2023-07-10 13:54:47 -0500 |
commit | a4f553fcde7596aa23ff56d2c9f4f0804311955b (patch) | |
tree | 6722b6abf5d0519a977edd565733c39de6bd48a9 /libc | |
parent | 5942ae8681db20822ac3e0b94cf8089d30647a39 (diff) | |
download | llvm-a4f553fcde7596aa23ff56d2c9f4f0804311955b.zip llvm-a4f553fcde7596aa23ff56d2c9f4f0804311955b.tar.gz llvm-a4f553fcde7596aa23ff56d2c9f4f0804311955b.tar.bz2 |
[libc] Fix using the `libcgpu.a` for NVPTX in non-LTO builds
CUDA requires a PTX feature to be compiled generally, because the
`libcgpu.a` archive contains LLVM-IR we need to have one present to
compile it. Currently, the wrapper fatbinary format we use to
incorporate these into single-source offloading languages has a special
option to provide this. Since this was not present in the builds, if the
user did not specify it via `-foffload-lto` it would not compile from
CUDA or OpenMP due to the missing PTX features. Fix this by passing it
to the packager invocation.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D154864
Diffstat (limited to 'libc')
-rw-r--r-- | libc/cmake/modules/LLVMLibCObjectRules.cmake | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake index 07de67e..2dfa7c0 100644 --- a/libc/cmake/modules/LLVMLibCObjectRules.cmake +++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake @@ -184,8 +184,14 @@ function(_build_gpu_objects fq_target_name internal_target_name) # Append this target to a list of images to package into a single binary. set(input_file $<TARGET_OBJECTS:${gpu_target_name}>) - list(APPEND packager_images - --image=file=${input_file},arch=${gpu_arch},triple=${gpu_target_triple}) + if("${gpu_arch}" IN_LIST all_nvptx_architectures) + string(REGEX MATCH "\\+ptx[0-9]+" nvptx_ptx_feature ${nvptx_options}) + list(APPEND packager_images + --image=file=${input_file},arch=${gpu_arch},triple=${gpu_target_triple},feature=${nvptx_ptx_feature}) + else() + list(APPEND packager_images + --image=file=${input_file},arch=${gpu_arch},triple=${gpu_target_triple}) + endif() list(APPEND gpu_target_names ${gpu_target_name}) endforeach() |