diff options
author | Joseph Huber <huberjn@outlook.com> | 2025-09-17 14:39:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-17 14:39:39 -0500 |
commit | dffd7f3d9a3294d21205251b986e76ec841cc750 (patch) | |
tree | 6d4f6e8c4d39fd6591714efa86c7a2827185b2ff /llvm/lib/Object/ELFObjectFile.cpp | |
parent | 5cb7bf63eda283fb2b079458010467f00d52d78c (diff) | |
download | llvm-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.cpp | 8 |
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: |