diff options
author | Shilei Tian <i@tianshilei.me> | 2025-03-14 14:02:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-14 17:02:15 -0400 |
commit | dccc0a836c20914549fa375905615db49d2f813b (patch) | |
tree | 4275ad4d5fa23780669471d35e83e431381748fa /clang/lib | |
parent | 605a9f590d91a42ae652c2ab13487b5ad57c58a5 (diff) | |
download | llvm-dccc0a836c20914549fa375905615db49d2f813b.zip llvm-dccc0a836c20914549fa375905615db49d2f813b.tar.gz llvm-dccc0a836c20914549fa375905615db49d2f813b.tar.bz2 |
[NFC][AMDGPU] Replace more direct arch comparison with isAMDGCN() (#131379)
This is an extension of #131357. Hopefully this would be the last one.
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Basic/Targets/AMDGPU.h | 20 | ||||
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 6 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains/HIPAMD.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 3 |
4 files changed, 12 insertions, 19 deletions
diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h index 3d6778f..63b0d4b 100644 --- a/clang/lib/Basic/Targets/AMDGPU.h +++ b/clang/lib/Basic/Targets/AMDGPU.h @@ -52,7 +52,7 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo { std::string TargetID; bool hasFP64() const { - return getTriple().getArch() == llvm::Triple::amdgcn || + return getTriple().isAMDGCN() || !!(GPUFeatures & llvm::AMDGPU::FEATURE_FP64); } @@ -62,12 +62,10 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo { } /// Has fast fma f64 - bool hasFastFMA() const { - return getTriple().getArch() == llvm::Triple::amdgcn; - } + bool hasFastFMA() const { return getTriple().isAMDGCN(); } bool hasFMAF() const { - return getTriple().getArch() == llvm::Triple::amdgcn || + return getTriple().isAMDGCN() || !!(GPUFeatures & llvm::AMDGPU::FEATURE_FMA); } @@ -76,13 +74,11 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo { } bool hasLDEXPF() const { - return getTriple().getArch() == llvm::Triple::amdgcn || + return getTriple().isAMDGCN() || !!(GPUFeatures & llvm::AMDGPU::FEATURE_LDEXP); } - static bool isAMDGCN(const llvm::Triple &TT) { - return TT.getArch() == llvm::Triple::amdgcn; - } + static bool isAMDGCN(const llvm::Triple &TT) { return TT.isAMDGCN(); } static bool isR600(const llvm::Triple &TT) { return TT.getArch() == llvm::Triple::r600; @@ -125,7 +121,7 @@ public: } uint64_t getMaxPointerWidth() const override { - return getTriple().getArch() == llvm::Triple::amdgcn ? 64 : 32; + return getTriple().isAMDGCN() ? 64 : 32; } bool hasBFloat16Type() const override { return isAMDGCN(getTriple()); } @@ -269,7 +265,7 @@ public: } bool isValidCPUName(StringRef Name) const override { - if (getTriple().getArch() == llvm::Triple::amdgcn) + if (getTriple().isAMDGCN()) return llvm::AMDGPU::parseArchAMDGCN(Name) != llvm::AMDGPU::GK_NONE; return llvm::AMDGPU::parseArchR600(Name) != llvm::AMDGPU::GK_NONE; } @@ -277,7 +273,7 @@ public: void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override; bool setCPU(const std::string &Name) override { - if (getTriple().getArch() == llvm::Triple::amdgcn) { + if (getTriple().isAMDGCN()) { GPUKind = llvm::AMDGPU::parseArchAMDGCN(Name); GPUFeatures = llvm::AMDGPU::getArchAttrAMDGCN(GPUKind); } else { diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 848b270..056bfcf 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -158,8 +158,7 @@ getHIPOffloadTargetTriple(const Driver &D, const ArgList &Args) { auto TT = getOffloadTargetTriple(D, Args); if (!TT) return std::nullopt; - if (TT->getArch() == llvm::Triple::amdgcn && - TT->getVendor() == llvm::Triple::AMD && + if (TT->isAMDGCN() && TT->getVendor() == llvm::Triple::AMD && TT->getOS() == llvm::Triple::AMDHSA) return TT; if (TT->getArch() == llvm::Triple::spirv64) @@ -3409,8 +3408,7 @@ class OffloadingActionBuilder final { const ToolChain *HostTC = C.getSingleOffloadToolChain<Action::OFK_Host>(); assert(HostTC && "No toolchain for host compilation."); - if (HostTC->getTriple().isNVPTX() || - HostTC->getTriple().getArch() == llvm::Triple::amdgcn) { + if (HostTC->getTriple().isNVPTX() || HostTC->getTriple().isAMDGCN()) { // We do not support targeting NVPTX/AMDGCN for host compilation. Throw // an error and abort pipeline construction early so we don't trip // asserts that assume device-side compilation. diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp b/clang/lib/Driver/ToolChains/HIPAMD.cpp index 271626e..55a8f2c 100644 --- a/clang/lib/Driver/ToolChains/HIPAMD.cpp +++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp @@ -296,7 +296,7 @@ HIPAMDToolChain::TranslateArgs(const llvm::opt::DerivedArgList &Args, } Tool *HIPAMDToolChain::buildLinker() const { - assert(getTriple().getArch() == llvm::Triple::amdgcn || + assert(getTriple().isAMDGCN() || getTriple().getArch() == llvm::Triple::spirv64); return new tools::AMDGCN::Linker(*this); } diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 4eb743a..e708bee 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -4322,8 +4322,7 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, TT.getArch() == llvm::Triple::systemz || TT.getArch() == llvm::Triple::loongarch64 || TT.getArch() == llvm::Triple::nvptx || - TT.getArch() == llvm::Triple::nvptx64 || - TT.getArch() == llvm::Triple::amdgcn || + TT.getArch() == llvm::Triple::nvptx64 || TT.isAMDGCN() || TT.getArch() == llvm::Triple::x86 || TT.getArch() == llvm::Triple::x86_64)) Diags.Report(diag::err_drv_invalid_omp_target) << A->getValue(i); |