aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/ELFObjectFile.cpp
diff options
context:
space:
mode:
authorJoseph Huber <huberjn@outlook.com>2025-09-17 14:39:39 -0500
committerGitHub <noreply@github.com>2025-09-17 14:39:39 -0500
commitdffd7f3d9a3294d21205251b986e76ec841cc750 (patch)
tree6d4f6e8c4d39fd6591714efa86c7a2827185b2ff /llvm/lib/Object/ELFObjectFile.cpp
parent5cb7bf63eda283fb2b079458010467f00d52d78c (diff)
downloadllvm-dffd7f3d9a3294d21205251b986e76ec841cc750.zip
llvm-dffd7f3d9a3294d21205251b986e76ec841cc750.tar.gz
llvm-dffd7f3d9a3294d21205251b986e76ec841cc750.tar.bz2
[LLVM] Fix offload and update CUDA ABI for all SM values (#159354)
Summary: Turns out the new CUDA ABI now applies retroactively to all the other SMs if you upgrade to CUDA 13.0. This patch changes the scheme, keeping all the SM flags consistent but using an offset. Fixes: https://github.com/llvm/llvm-project/issues/159088
Diffstat (limited to 'llvm/lib/Object/ELFObjectFile.cpp')
-rw-r--r--llvm/lib/Object/ELFObjectFile.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Object/ELFObjectFile.cpp b/llvm/lib/Object/ELFObjectFile.cpp
index aff047c..7e7e36d 100644
--- a/llvm/lib/Object/ELFObjectFile.cpp
+++ b/llvm/lib/Object/ELFObjectFile.cpp
@@ -622,7 +622,8 @@ StringRef ELFObjectFileBase::getNVPTXCPUName() const {
assert(getEMachine() == ELF::EM_CUDA);
unsigned SM = getEIdentABIVersion() == ELF::ELFABIVERSION_CUDA_V1
? getPlatformFlags() & ELF::EF_CUDA_SM
- : getPlatformFlags() & ELF::EF_CUDA_SM_MASK;
+ : (getPlatformFlags() & ELF::EF_CUDA_SM_MASK) >>
+ ELF::EF_CUDA_SM_OFFSET;
switch (SM) {
// Fermi architecture.
@@ -674,6 +675,8 @@ StringRef ELFObjectFileBase::getNVPTXCPUName() const {
return "sm_86";
case ELF::EF_CUDA_SM87:
return "sm_87";
+ case ELF::EF_CUDA_SM88:
+ return "sm_88";
// Ada architecture.
case ELF::EF_CUDA_SM89:
@@ -694,6 +697,9 @@ StringRef ELFObjectFileBase::getNVPTXCPUName() const {
case ELF::EF_CUDA_SM103:
return getPlatformFlags() & ELF::EF_CUDA_ACCELERATORS ? "sm_103a"
: "sm_103";
+ case ELF::EF_CUDA_SM110:
+ return getPlatformFlags() & ELF::EF_CUDA_ACCELERATORS ? "sm_110a"
+ : "sm_110";
// Rubin architecture.
case ELF::EF_CUDA_SM120: