diff options
Diffstat (limited to 'clang/lib/Driver/ToolChains/AMDGPU.h')
-rw-r--r-- | clang/lib/Driver/ToolChains/AMDGPU.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h index 55ef6e01967e..50ed3b3ded9a 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.h +++ b/clang/lib/Driver/ToolChains/AMDGPU.h @@ -64,6 +64,13 @@ public: bool IsIntegratedAssemblerDefault() const override { return true; } bool IsMathErrnoDefault() const override { return false; } + bool useIntegratedAs() const override { return true; } + bool isCrossCompiling() const override { return true; } + bool isPICDefault() const override { return false; } + bool isPIEDefault() const override { return false; } + bool isPICDefaultForced() const override { return false; } + bool SupportsProfiling() const override { return false; } + llvm::opt::DerivedArgList * TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; @@ -93,12 +100,32 @@ public: /// Should skip argument. bool shouldSkipArgument(const llvm::opt::Arg *Arg) const; + /// Uses amdgpu_arch tool to get arch of the system GPU. Will return error + /// if unable to find one. + llvm::Error getSystemGPUArch(const llvm::opt::ArgList &Args, + std::string &GPUArch) const; + protected: /// Check and diagnose invalid target ID specified by -mcpu. - void checkTargetID(const llvm::opt::ArgList &DriverArgs) const; + virtual void checkTargetID(const llvm::opt::ArgList &DriverArgs) const; + + /// The struct type returned by getParsedTargetID. + struct ParsedTargetIDType { + Optional<std::string> OptionalTargetID; + Optional<std::string> OptionalGPUArch; + Optional<llvm::StringMap<bool>> OptionalFeatures; + }; + + /// Get target ID, GPU arch, and target ID features if the target ID is + /// specified and valid. + ParsedTargetIDType + getParsedTargetID(const llvm::opt::ArgList &DriverArgs) const; /// Get GPU arch from -mcpu without checking. StringRef getGPUArch(const llvm::opt::ArgList &DriverArgs) const; + + llvm::Error detectSystemGPUs(const llvm::opt::ArgList &Args, + SmallVector<std::string, 1> &GPUArchs) const; }; class LLVM_LIBRARY_VISIBILITY ROCMToolChain : public AMDGPUToolChain { |