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