1a9ac8606Spatrick //===- AMDGPUOpenMP.h - AMDGPUOpenMP ToolChain Implementation -*- C++ -*---===// 2a9ac8606Spatrick // 3a9ac8606Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4a9ac8606Spatrick // See https://llvm.org/LICENSE.txt for license information. 5a9ac8606Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6a9ac8606Spatrick // 7a9ac8606Spatrick //===----------------------------------------------------------------------===// 8a9ac8606Spatrick 9a9ac8606Spatrick #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AMDGPUOPENMP_H 10a9ac8606Spatrick #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AMDGPUOPENMP_H 11a9ac8606Spatrick 12a9ac8606Spatrick #include "AMDGPU.h" 13a9ac8606Spatrick #include "clang/Driver/Tool.h" 14a9ac8606Spatrick #include "clang/Driver/ToolChain.h" 15a9ac8606Spatrick 16a9ac8606Spatrick namespace clang { 17a9ac8606Spatrick namespace driver { 18a9ac8606Spatrick 19a9ac8606Spatrick namespace toolchains { 20a9ac8606Spatrick class AMDGPUOpenMPToolChain; 21a9ac8606Spatrick } 22a9ac8606Spatrick 23a9ac8606Spatrick namespace toolchains { 24a9ac8606Spatrick 25a9ac8606Spatrick class LLVM_LIBRARY_VISIBILITY AMDGPUOpenMPToolChain final 26a9ac8606Spatrick : public ROCMToolChain { 27a9ac8606Spatrick public: 28a9ac8606Spatrick AMDGPUOpenMPToolChain(const Driver &D, const llvm::Triple &Triple, 29a9ac8606Spatrick const ToolChain &HostTC, 30a9ac8606Spatrick const llvm::opt::ArgList &Args); 31a9ac8606Spatrick getAuxTriple()32a9ac8606Spatrick const llvm::Triple *getAuxTriple() const override { 33a9ac8606Spatrick return &HostTC.getTriple(); 34a9ac8606Spatrick } 35a9ac8606Spatrick 36a9ac8606Spatrick llvm::opt::DerivedArgList * 37a9ac8606Spatrick TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch, 38a9ac8606Spatrick Action::OffloadKind DeviceOffloadKind) const override; 39a9ac8606Spatrick void 40a9ac8606Spatrick addClangTargetOptions(const llvm::opt::ArgList &DriverArgs, 41a9ac8606Spatrick llvm::opt::ArgStringList &CC1Args, 42a9ac8606Spatrick Action::OffloadKind DeviceOffloadKind) const override; 43a9ac8606Spatrick void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args) const override; 44a9ac8606Spatrick CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const override; 45a9ac8606Spatrick void 46a9ac8606Spatrick AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, 47a9ac8606Spatrick llvm::opt::ArgStringList &CC1Args) const override; 48a9ac8606Spatrick void AddIAMCUIncludeArgs(const llvm::opt::ArgList &DriverArgs, 49a9ac8606Spatrick llvm::opt::ArgStringList &CC1Args) const override; 50a9ac8606Spatrick 51a9ac8606Spatrick SanitizerMask getSupportedSanitizers() const override; 52a9ac8606Spatrick 53a9ac8606Spatrick VersionTuple 54a9ac8606Spatrick computeMSVCVersion(const Driver *D, 55a9ac8606Spatrick const llvm::opt::ArgList &Args) const override; 56a9ac8606Spatrick 57*12c85518Srobert llvm::SmallVector<BitCodeLibraryInfo, 12> 58*12c85518Srobert getDeviceLibs(const llvm::opt::ArgList &Args) const override; 59a9ac8606Spatrick 60*12c85518Srobert const ToolChain &HostTC; 61a9ac8606Spatrick }; 62a9ac8606Spatrick 63a9ac8606Spatrick } // end namespace toolchains 64a9ac8606Spatrick } // end namespace driver 65a9ac8606Spatrick } // end namespace clang 66a9ac8606Spatrick 67a9ac8606Spatrick #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_AMDGPUOPENMP_H 68