xref: /openbsd-src/gnu/llvm/clang/lib/Driver/ToolChains/AMDGPUOpenMP.h (revision 12c855180aad702bbcca06e0398d774beeafb155)
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