Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
clang/lib/Driver/ToolChains/HIPAMD.h
- This file was moved from clang/lib/Driver/ToolChains/HIP.h.
//===--- HIP.h - HIP ToolChain Implementations ------------------*- C++ -*-===// | //===--- HIPAMD.h - HIP ToolChain Implementations ---------------*- C++ -*-===// | ||||
// | // | ||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||||
// See https://llvm.org/LICENSE.txt for license information. | // See https://llvm.org/LICENSE.txt for license information. | ||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||||
// | // | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HIP_H | #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HIPAMD_H | ||||
#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HIP_H | #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HIPAMD_H | ||||
#include "clang/Driver/ToolChain.h" | |||||
#include "clang/Driver/Tool.h" | |||||
#include "AMDGPU.h" | #include "AMDGPU.h" | ||||
#include "clang/Driver/Tool.h" | |||||
#include "clang/Driver/ToolChain.h" | |||||
namespace clang { | namespace clang { | ||||
namespace driver { | namespace driver { | ||||
namespace tools { | namespace tools { | ||||
namespace AMDGCN { | namespace AMDGCN { | ||||
// Construct command for creating HIP fatbin. | |||||
void constructHIPFatbinCommand(Compilation &C, const JobAction &JA, | |||||
StringRef OutputFileName, const InputInfoList &Inputs, | |||||
const llvm::opt::ArgList &TCArgs, const Tool& T); | |||||
// Runs llvm-link/opt/llc/lld, which links multiple LLVM bitcode, together with | // Runs llvm-link/opt/llc/lld, which links multiple LLVM bitcode, together with | ||||
// device library, then compiles it to ISA in a shared object. | // device library, then compiles it to ISA in a shared object. | ||||
class LLVM_LIBRARY_VISIBILITY Linker : public Tool { | class LLVM_LIBRARY_VISIBILITY Linker : public Tool { | ||||
public: | public: | ||||
Linker(const ToolChain &TC) : Tool("AMDGCN::Linker", "amdgcn-link", TC) {} | Linker(const ToolChain &TC) : Tool("AMDGCN::Linker", "amdgcn-link", TC) {} | ||||
bool hasIntegratedCPP() const override { return false; } | bool hasIntegratedCPP() const override { return false; } | ||||
void ConstructJob(Compilation &C, const JobAction &JA, | void ConstructJob(Compilation &C, const JobAction &JA, | ||||
const InputInfo &Output, const InputInfoList &Inputs, | const InputInfo &Output, const InputInfoList &Inputs, | ||||
const llvm::opt::ArgList &TCArgs, | const llvm::opt::ArgList &TCArgs, | ||||
const char *LinkingOutput) const override; | const char *LinkingOutput) const override; | ||||
private: | private: | ||||
void constructLldCommand(Compilation &C, const JobAction &JA, | void constructLldCommand(Compilation &C, const JobAction &JA, | ||||
const InputInfoList &Inputs, const InputInfo &Output, | const InputInfoList &Inputs, const InputInfo &Output, | ||||
const llvm::opt::ArgList &Args) const; | const llvm::opt::ArgList &Args) const; | ||||
// Construct command for creating Object from HIP fatbin. | |||||
void constructGenerateObjFileFromHIPFatBinary(Compilation &C, | |||||
const InputInfo &Output, | |||||
const InputInfoList &Inputs, | |||||
const llvm::opt::ArgList &Args, | |||||
const JobAction &JA) const; | |||||
}; | }; | ||||
} // end namespace AMDGCN | } // end namespace AMDGCN | ||||
} // end namespace tools | } // end namespace tools | ||||
namespace toolchains { | namespace toolchains { | ||||
class LLVM_LIBRARY_VISIBILITY HIPToolChain final : public ROCMToolChain { | class LLVM_LIBRARY_VISIBILITY HIPAMDToolChain final : public ROCMToolChain { | ||||
public: | public: | ||||
HIPToolChain(const Driver &D, const llvm::Triple &Triple, | HIPAMDToolChain(const Driver &D, const llvm::Triple &Triple, | ||||
const ToolChain &HostTC, const llvm::opt::ArgList &Args); | const ToolChain &HostTC, const llvm::opt::ArgList &Args); | ||||
const llvm::Triple *getAuxTriple() const override { | const llvm::Triple *getAuxTriple() const override { | ||||
return &HostTC.getTriple(); | return &HostTC.getTriple(); | ||||
} | } | ||||
llvm::opt::DerivedArgList * | llvm::opt::DerivedArgList * | ||||
TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch, | TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch, | ||||
Action::OffloadKind DeviceOffloadKind) const override; | Action::OffloadKind DeviceOffloadKind) const override; | ||||
void addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, | void | ||||
addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, | |||||
llvm::opt::ArgStringList &CC1Args, | llvm::opt::ArgStringList &CC1Args, | ||||
Action::OffloadKind DeviceOffloadKind) const override; | Action::OffloadKind DeviceOffloadKind) const override; | ||||
void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const override; | void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const override; | ||||
CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; | CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; | ||||
void | void | ||||
AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, | AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, | ||||
llvm::opt::ArgStringList &CC1Args) const override; | llvm::opt::ArgStringList &CC1Args) const override; | ||||
void AddClangCXXStdlibIncludeArgs( | void AddClangCXXStdlibIncludeArgs( | ||||
const llvm::opt::ArgList &Args, | const llvm::opt::ArgList &Args, | ||||
llvm::opt::ArgStringList &CC1Args) const override; | llvm::opt::ArgStringList &CC1Args) const override; | ||||
Show All 18 Lines | |||||
protected: | protected: | ||||
Tool *buildLinker() const override; | Tool *buildLinker() const override; | ||||
}; | }; | ||||
} // end namespace toolchains | } // end namespace toolchains | ||||
} // end namespace driver | } // end namespace driver | ||||
} // end namespace clang | } // end namespace clang | ||||
#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HIP_H | #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_HIPAMD_H |