10 #ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CUDA_H 11 #define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CUDA_H 19 #include "llvm/ADT/Optional.h" 20 #include "llvm/ADT/SmallSet.h" 21 #include "llvm/Support/Compiler.h" 34 std::string InstallPath;
37 std::string LibDevicePath;
38 std::string IncludePath;
39 llvm::StringMap<std::string> LibDeviceMap;
43 mutable llvm::SmallSet<CudaArch, 4> ArchsWithBadVersion;
47 const llvm::opt::ArgList &Args);
50 llvm::opt::ArgStringList &CC1Args)
const;
61 void print(raw_ostream &OS)
const;
77 return LibDeviceMap.lookup(Gpu);
88 :
Tool(
"NVPTX::Assembler",
"ptxas", TC, RF_Full,
llvm::sys::WEM_UTF8,
95 const llvm::opt::ArgList &TCArgs,
96 const char *LinkingOutput)
const override;
104 :
Tool(
"NVPTX::Linker",
"fatbinary", TC, RF_Full,
llvm::sys::WEM_UTF8,
111 const llvm::opt::ArgList &TCArgs,
112 const char *LinkingOutput)
const override;
118 :
Tool(
"NVPTX::OpenMPLinker",
"fatbinary", TC, RF_Full,
llvm::sys::WEM_UTF8,
125 const llvm::opt::ArgList &TCArgs,
126 const char *LinkingOutput)
const override;
132 namespace toolchains {
137 const ToolChain &HostTC,
const llvm::opt::ArgList &Args,
144 std::string getInputFilename(
const InputInfo &Input)
const override;
146 llvm::opt::DerivedArgList *
147 TranslateArgs(
const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
149 void addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
150 llvm::opt::ArgStringList &CC1Args,
164 llvm::opt::ArgStringList &CC1Args)
const override;
166 void addClangWarningOptions(llvm::opt::ArgStringList &CC1Args)
const override;
167 CXXStdlibType GetCXXStdlibType(
const llvm::opt::ArgList &Args)
const override;
169 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
170 llvm::opt::ArgStringList &CC1Args)
const override;
171 void AddClangCXXStdlibIncludeArgs(
172 const llvm::opt::ArgList &Args,
173 llvm::opt::ArgStringList &CC1Args)
const override;
174 void AddIAMCUIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
175 llvm::opt::ArgStringList &CC1Args)
const override;
180 computeMSVCVersion(
const Driver *D,
181 const llvm::opt::ArgList &Args)
const override;
187 Tool *buildAssembler()
const override;
188 Tool *buildLinker()
const override;
198 #endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_CUDA_H StringRef getLibPath() const
Get the detected Cuda library path.
Represents a version number in the form major[.minor[.subminor[.build]]].
DominatorTree GraphTraits specialization so the DominatorTree can be iterable by generic graph iterat...
CudaInstallationDetector(const Driver &D, const llvm::Triple &HostTriple, const llvm::opt::ArgList &Args)
void print(raw_ostream &OS) const
Print information about the detected CUDA installation.
A class to find a viable CUDA installation.
StringRef getInstallPath() const
Get the detected Cuda installation path.
void CheckCudaVersionSupportsArch(CudaArch Arch) const
Emit an error if Version does not support the given Arch.
std::string getLibDeviceFile(StringRef Gpu) const
Get libdevice file for given architecture.
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
StringRef getLibDevicePath() const
Get the detected Cuda device library path.
void AddCudaIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const
CudaVersion version() const
Get the detected Cuda install's version.
bool isValid() const
Check whether we detected a valid Cuda install.
StringRef getIncludePath() const
Get the detected Cuda Include path.
Dataflow Directional Tag Classes.
Compilation - A set of tasks to perform for a single driver invocation.
Defines the clang::VersionTuple class, which represents a version in the form major[.minor[.subminor]].
StringRef getBinPath() const
Get the detected path to Cuda's bin directory.