Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3cd4a79

Browse files
authored
clang: Avoid hardcoding some offload triple strings (#193811)
This will make it easier to use the subarch field in the future.
1 parent 8ebc730 commit 3cd4a79

4 files changed

Lines changed: 34 additions & 19 deletions

File tree

clang/lib/Basic/OffloadArch.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,15 +152,20 @@ OffloadArch StringToOffloadArch(llvm::StringRef S) {
152152
llvm::Triple OffloadArchToTriple(const llvm::Triple &DefaultToolchainTriple,
153153
OffloadArch ID) {
154154
if (ID == OffloadArch::AMDGCNSPIRV)
155-
return llvm::Triple("spirv64-amd-amdhsa");
155+
return llvm::Triple(llvm::Triple::spirv64, llvm::Triple::NoSubArch,
156+
llvm::Triple::AMD, llvm::Triple::AMDHSA);
156157

157-
if (IsNVIDIAOffloadArch(ID))
158-
return DefaultToolchainTriple.isArch64Bit()
159-
? llvm::Triple("nvptx64-nvidia-cuda")
160-
: llvm::Triple("nvptx-nvidia-cuda");
158+
if (IsNVIDIAOffloadArch(ID)) {
159+
llvm::Triple::ArchType Arch = DefaultToolchainTriple.isArch64Bit()
160+
? llvm::Triple::nvptx64
161+
: llvm::Triple::nvptx;
162+
return llvm::Triple(Arch, llvm::Triple::NoSubArch, llvm::Triple::NVIDIA,
163+
llvm::Triple::CUDA);
164+
}
161165

162166
if (IsAMDOffloadArch(ID))
163-
return llvm::Triple("amdgcn-amd-amdhsa");
167+
return llvm::Triple(llvm::Triple::amdgcn, llvm::Triple::NoSubArch,
168+
llvm::Triple::AMD, llvm::Triple::AMDHSA);
164169

165170
return {};
166171
}

clang/lib/Basic/Targets/SPIR.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@ void SPIRV64TargetInfo::getTargetDefines(const LangOptions &Opts,
108108
DefineStd(Builder, "SPIRV64", Opts);
109109
}
110110

111-
static const AMDGPUTargetInfo AMDGPUTI(llvm::Triple("amdgcn-amd-amdhsa"), {});
111+
static const AMDGPUTargetInfo
112+
AMDGPUTI(llvm::Triple(llvm::Triple::amdgcn, llvm::Triple::NoSubArch,
113+
llvm::Triple::AMD, llvm::Triple::AMDHSA),
114+
{});
112115

113116
ArrayRef<const char *> SPIRV64AMDGCNTargetInfo::getGCCRegNames() const {
114117
return AMDGPUTI.getGCCRegNames();

clang/lib/Driver/Driver.cpp

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -973,8 +973,10 @@ static TripleSet inferOffloadToolchains(Compilation &C,
973973
for (llvm::StringRef Arch : Archs) {
974974
OffloadArch ID = StringToOffloadArch(Arch);
975975
if (ID == OffloadArch::Unknown)
976-
ID = StringToOffloadArch(
977-
getProcessorFromTargetID(llvm::Triple("amdgcn-amd-amdhsa"), Arch));
976+
ID = StringToOffloadArch(getProcessorFromTargetID(
977+
llvm::Triple(llvm::Triple::amdgcn, llvm::Triple::NoSubArch,
978+
llvm::Triple::AMD, llvm::Triple::AMDHSA),
979+
Arch));
978980

979981
if (Kind == Action::OFK_HIP && !IsAMDOffloadArch(ID)) {
980982
C.getDriver().Diag(clang::diag::err_drv_offload_bad_gpu_arch)
@@ -1020,17 +1022,20 @@ static TripleSet inferOffloadToolchains(Compilation &C,
10201022

10211023
// Infer the default target triple if no specific architectures are given.
10221024
if (Archs.empty() && Kind == Action::OFK_HIP)
1023-
Triples.insert(llvm::Triple("amdgcn-amd-amdhsa"));
1024-
else if (Archs.empty() && Kind == Action::OFK_Cuda)
1025+
Triples.insert(llvm::Triple(llvm::Triple::amdgcn, llvm::Triple::NoSubArch,
1026+
llvm::Triple::AMD, llvm::Triple::AMDHSA));
1027+
else if (Archs.empty() && Kind == Action::OFK_Cuda) {
1028+
llvm::Triple::ArchType Arch =
1029+
C.getDefaultToolChain().getTriple().isArch64Bit()
1030+
? llvm::Triple::nvptx64
1031+
: llvm::Triple::nvptx;
1032+
Triples.insert(llvm::Triple(Arch, llvm::Triple::NoSubArch,
1033+
llvm::Triple::NVIDIA, llvm::Triple::CUDA));
1034+
} else if (Archs.empty() && Kind == Action::OFK_SYCL)
10251035
Triples.insert(
10261036
llvm::Triple(C.getDefaultToolChain().getTriple().isArch64Bit()
1027-
? "nvptx64-nvidia-cuda"
1028-
: "nvptx-nvidia-cuda"));
1029-
else if (Archs.empty() && Kind == Action::OFK_SYCL)
1030-
Triples.insert(
1031-
llvm::Triple(C.getDefaultToolChain().getTriple().isArch64Bit()
1032-
? "spirv64-unknown-unknown"
1033-
: "spirv32-unknown-unknown"));
1037+
? llvm::Triple::spirv64
1038+
: llvm::Triple::spirv32));
10341039

10351040
// We need to dispatch these to the appropriate toolchain now.
10361041
C.getArgs().eraseArg(options::OPT_offload_arch_EQ);

clang/lib/Sema/SemaAMDGPU.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,9 @@ bool DiagnoseUnguardedBuiltins::VisitCallExpr(CallExpr *CE) {
10241024
for (auto &&F : llvm::split(BInfo.getRequiredFeatures(GID), ','))
10251025
FeatureMap[F] = true;
10261026
} else {
1027-
static const llvm::Triple AMDGCN("amdgcn-amd-amdhsa");
1027+
static const llvm::Triple AMDGCN(llvm::Triple::amdgcn,
1028+
llvm::Triple::NoSubArch, llvm::Triple::AMD,
1029+
llvm::Triple::AMDHSA);
10281030
llvm::AMDGPU::fillAMDGPUFeatureMap(CurrentGFXIP.back().second, AMDGCN,
10291031
FeatureMap);
10301032
}

0 commit comments

Comments
 (0)