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