Changeset View
Changeset View
Standalone View
Standalone View
clang/lib/Driver/ToolChains/AMDGPUOpenMP.h
Show All 14 Lines | |||||
namespace clang { | namespace clang { | ||||
namespace driver { | namespace driver { | ||||
namespace toolchains { | namespace toolchains { | ||||
class AMDGPUOpenMPToolChain; | class AMDGPUOpenMPToolChain; | ||||
} | } | ||||
namespace tools { | |||||
namespace AMDGCN { | |||||
// Runs llvm-link/opt/llc/lld, which links multiple LLVM bitcode, together with | |||||
// device library, then compiles it to ISA in a shared object. | |||||
class LLVM_LIBRARY_VISIBILITY OpenMPLinker : public Tool { | |||||
public: | |||||
OpenMPLinker(const ToolChain &TC) | |||||
: Tool("AMDGCN::OpenMPLinker", "amdgcn-link", TC) {} | |||||
bool hasIntegratedCPP() const override { return false; } | |||||
void ConstructJob(Compilation &C, const JobAction &JA, | |||||
const InputInfo &Output, const InputInfoList &Inputs, | |||||
const llvm::opt::ArgList &TCArgs, | |||||
const char *LinkingOutput) const override; | |||||
private: | |||||
/// \return llvm-link output file name. | |||||
const char *constructLLVMLinkCommand( | |||||
const toolchains::AMDGPUOpenMPToolChain &AMDGPUOpenMPTC, Compilation &C, | |||||
const JobAction &JA, const InputInfoList &Inputs, | |||||
const llvm::opt::ArgList &Args, llvm::StringRef SubArchName, | |||||
llvm::StringRef OutputFilePrefix) const; | |||||
/// \return llc output file name. | |||||
const char *constructLlcCommand(Compilation &C, const JobAction &JA, | |||||
const InputInfoList &Inputs, | |||||
const llvm::opt::ArgList &Args, | |||||
llvm::StringRef SubArchName, | |||||
llvm::StringRef OutputFilePrefix, | |||||
const char *InputFileName, | |||||
bool OutputIsAsm = false) const; | |||||
void constructLldCommand(Compilation &C, const JobAction &JA, | |||||
const InputInfoList &Inputs, const InputInfo &Output, | |||||
const llvm::opt::ArgList &Args, | |||||
const char *InputFileName) const; | |||||
}; | |||||
} // end namespace AMDGCN | |||||
} // end namespace tools | |||||
namespace toolchains { | namespace toolchains { | ||||
class LLVM_LIBRARY_VISIBILITY AMDGPUOpenMPToolChain final | class LLVM_LIBRARY_VISIBILITY AMDGPUOpenMPToolChain final | ||||
: public ROCMToolChain { | : public ROCMToolChain { | ||||
public: | public: | ||||
AMDGPUOpenMPToolChain(const Driver &D, const llvm::Triple &Triple, | AMDGPUOpenMPToolChain(const Driver &D, const llvm::Triple &Triple, | ||||
const ToolChain &HostTC, | const ToolChain &HostTC, | ||||
const llvm::opt::ArgList &Args); | const llvm::opt::ArgList &Args); | ||||
Show All 19 Lines | public: | ||||
SanitizerMask getSupportedSanitizers() const override; | SanitizerMask getSupportedSanitizers() const override; | ||||
VersionTuple | VersionTuple | ||||
computeMSVCVersion(const Driver *D, | computeMSVCVersion(const Driver *D, | ||||
const llvm::opt::ArgList &Args) const override; | const llvm::opt::ArgList &Args) const override; | ||||
const ToolChain &HostTC; | const ToolChain &HostTC; | ||||
protected: | |||||
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_AMDGPUOPENMP_H | #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AMDGPUOPENMP_H |