[clang] 175e423 - AMDGPU: Make HIPToolChain a subclass of AMDGPUToolChain
Matt Arsenault via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 31 15:22:54 PDT 2020
Author: Matt Arsenault
Date: 2020-03-31T18:22:46-04:00
New Revision: 175e42303bb2a4253c65126666b1ae05b32b0004
URL: https://github.com/llvm/llvm-project/commit/175e42303bb2a4253c65126666b1ae05b32b0004
DIFF: https://github.com/llvm/llvm-project/commit/175e42303bb2a4253c65126666b1ae05b32b0004.diff
LOG: AMDGPU: Make HIPToolChain a subclass of AMDGPUToolChain
This fixes some code duplication. This is also a step towards
consolidating builtin library handling.
Added:
Modified:
clang/lib/Driver/ToolChains/HIP.cpp
clang/lib/Driver/ToolChains/HIP.h
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/HIP.cpp b/clang/lib/Driver/ToolChains/HIP.cpp
index 0a9ec68e13e4..d21b3f5f0b19 100644
--- a/clang/lib/Driver/ToolChains/HIP.cpp
+++ b/clang/lib/Driver/ToolChains/HIP.cpp
@@ -268,40 +268,12 @@ void AMDGCN::Linker::ConstructJob(Compilation &C, const JobAction &JA,
HIPToolChain::HIPToolChain(const Driver &D, const llvm::Triple &Triple,
const ToolChain &HostTC, const ArgList &Args)
- : ToolChain(D, Triple, Args), HostTC(HostTC) {
+ : AMDGPUToolChain(D, Triple, Args), HostTC(HostTC) {
// Lookup binaries into the driver directory, this is used to
// discover the clang-offload-bundler executable.
getProgramPaths().push_back(getDriver().Dir);
}
-// FIXME: Duplicated in AMDGPUToolChain
-llvm::DenormalMode HIPToolChain::getDefaultDenormalModeForType(
- const llvm::opt::ArgList &DriverArgs, Action::OffloadKind DeviceOffloadKind,
- const llvm::fltSemantics *FPType) const {
- // Denormals should always be enabled for f16 and f64.
- if (!FPType || FPType != &llvm::APFloat::IEEEsingle())
- return llvm::DenormalMode::getIEEE();
-
- if (DeviceOffloadKind == Action::OFK_Cuda) {
- if (FPType && FPType == &llvm::APFloat::IEEEsingle() &&
- DriverArgs.hasFlag(options::OPT_fcuda_flush_denormals_to_zero,
- options::OPT_fno_cuda_flush_denormals_to_zero,
- false))
- return llvm::DenormalMode::getPreserveSign();
- }
-
- const StringRef GpuArch = DriverArgs.getLastArgValue(options::OPT_mcpu_EQ);
- auto Kind = llvm::AMDGPU::parseArchAMDGCN(GpuArch);
-
- // TODO: There are way too many flags that change this. Do we need to check
- // them all?
- bool DAZ = DriverArgs.hasArg(options::OPT_cl_denorms_are_zero) ||
- !AMDGPUToolChain::getDefaultDenormsAreZeroForTarget(Kind);
- // Outputs are flushed to zero, preserving sign
- return DAZ ? llvm::DenormalMode::getPreserveSign() :
- llvm::DenormalMode::getIEEE();
-}
-
void HIPToolChain::addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args,
diff --git a/clang/lib/Driver/ToolChains/HIP.h b/clang/lib/Driver/ToolChains/HIP.h
index 32eb8704feb5..b6a3a2718635 100644
--- a/clang/lib/Driver/ToolChains/HIP.h
+++ b/clang/lib/Driver/ToolChains/HIP.h
@@ -11,6 +11,7 @@
#include "clang/Driver/ToolChain.h"
#include "clang/Driver/Tool.h"
+#include "AMDGPU.h"
namespace clang {
namespace driver {
@@ -72,7 +73,7 @@ class LLVM_LIBRARY_VISIBILITY Linker : public Tool {
namespace toolchains {
-class LLVM_LIBRARY_VISIBILITY HIPToolChain : public ToolChain {
+class LLVM_LIBRARY_VISIBILITY HIPToolChain final : public AMDGPUToolChain {
public:
HIPToolChain(const Driver &D, const llvm::Triple &Triple,
const ToolChain &HostTC, const llvm::opt::ArgList &Args);
@@ -115,11 +116,6 @@ class LLVM_LIBRARY_VISIBILITY HIPToolChain : public ToolChain {
unsigned GetDefaultDwarfVersion() const override { return 4; }
- llvm::DenormalMode getDefaultDenormalModeForType(
- const llvm::opt::ArgList &DriverArgs,
- Action::OffloadKind DeviceOffloadKind,
- const llvm::fltSemantics *FPType = nullptr) const override;
-
const ToolChain &HostTC;
protected:
More information about the cfe-commits
mailing list