summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/llvm-roc/files/llvm-roc-4.3.0-hip-location.patch')
-rw-r--r--sys-devel/llvm-roc/files/llvm-roc-4.3.0-hip-location.patch198
1 files changed, 0 insertions, 198 deletions
diff --git a/sys-devel/llvm-roc/files/llvm-roc-4.3.0-hip-location.patch b/sys-devel/llvm-roc/files/llvm-roc-4.3.0-hip-location.patch
deleted file mode 100644
index f3d22b996915..000000000000
--- a/sys-devel/llvm-roc/files/llvm-roc-4.3.0-hip-location.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-replace hardcoded hip finder with Gentoo paths.
-
-It is not necessary to check HIP runtime each time.
-
-Author: Benda Xu <heroxbd@gentoo.org>
-Author: Yiyang Wu <xgreenlandforwyy@gmail.com>
-
---- orig/clang/lib/Driver/ToolChains/AMDGPU.cpp
-+++ llvm-project-rocm-4.3.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
-@@ -165,133 +165,8 @@ bool RocmInstallationDetector::parseHIPV
- /// cached and populated only once.
- const SmallVectorImpl<RocmInstallationDetector::Candidate> &
- RocmInstallationDetector::getInstallationPathCandidates() {
--
-- // Return the cached candidate list if it has already been populated.
-- if (!ROCmSearchDirs.empty())
-- return ROCmSearchDirs;
--
-- auto DoPrintROCmSearchDirs = [&]() {
-- if (PrintROCmSearchDirs)
-- for (auto Cand : ROCmSearchDirs) {
-- llvm::errs() << "ROCm installation search path";
-- if (Cand.isSPACK())
-- llvm::errs() << " (Spack " << Cand.SPACKReleaseStr << ")";
-- llvm::errs() << ": " << Cand.Path << '\n';
-- }
-- };
--
-- // For candidate specified by --rocm-path we do not do strict check, i.e.,
-- // checking existence of HIP version file and device library files.
-- if (!RocmPathArg.empty()) {
-- ROCmSearchDirs.emplace_back(RocmPathArg.str());
-- DoPrintROCmSearchDirs();
-- return ROCmSearchDirs;
-- } else if (const char *RocmPathEnv = ::getenv("ROCM_PATH")) {
-- if (!StringRef(RocmPathEnv).empty()) {
-- ROCmSearchDirs.emplace_back(RocmPathEnv);
-- DoPrintROCmSearchDirs();
-- return ROCmSearchDirs;
-- }
-- }
--
-- // Try to find relative to the compiler binary.
-- const char *InstallDir = D.getInstalledDir();
--
-- // Check both a normal Unix prefix position of the clang binary, as well as
-- // the Windows-esque layout the ROCm packages use with the host architecture
-- // subdirectory of bin.
-- auto DeduceROCmPath = [](StringRef ClangPath) {
-- // Strip off directory (usually bin)
-- StringRef ParentDir = llvm::sys::path::parent_path(ClangPath);
-- StringRef ParentName = llvm::sys::path::filename(ParentDir);
--
-- // Some builds use bin/{host arch}, so go up again.
-- if (ParentName == "bin") {
-- ParentDir = llvm::sys::path::parent_path(ParentDir);
-- ParentName = llvm::sys::path::filename(ParentDir);
-- }
--
-- // Detect ROCm packages built with SPACK.
-- // clang is installed at
-- // <rocm_root>/llvm-amdgpu-<rocm_release_string>-<hash>/bin directory.
-- // We only consider the parent directory of llvm-amdgpu package as ROCm
-- // installation candidate for SPACK.
-- if (ParentName.startswith("llvm-amdgpu-")) {
-- auto SPACKPostfix =
-- ParentName.drop_front(strlen("llvm-amdgpu-")).split('-');
-- auto SPACKReleaseStr = SPACKPostfix.first;
-- if (!SPACKReleaseStr.empty()) {
-- ParentDir = llvm::sys::path::parent_path(ParentDir);
-- return Candidate(ParentDir.str(), /*StrictChecking=*/true,
-- SPACKReleaseStr);
-- }
-- }
--
-- // Some versions of the rocm llvm package install to /opt/rocm/llvm/bin
-- // Some versions of the aomp package install to /opt/rocm/aomp/bin
-- if (ParentName == "llvm" || ParentName.startswith("aomp"))
-- ParentDir = llvm::sys::path::parent_path(ParentDir);
--
-- return Candidate(ParentDir.str(), /*StrictChecking=*/true);
-- };
--
-- // Deduce ROCm path by the path used to invoke clang. Do not resolve symbolic
-- // link of clang itself.
-- ROCmSearchDirs.emplace_back(DeduceROCmPath(InstallDir));
--
-- // Deduce ROCm path by the real path of the invoked clang, resolving symbolic
-- // link of clang itself.
-- llvm::SmallString<256> RealClangPath;
-- llvm::sys::fs::real_path(D.getClangProgramPath(), RealClangPath);
-- auto ParentPath = llvm::sys::path::parent_path(RealClangPath);
-- if (ParentPath != InstallDir)
-- ROCmSearchDirs.emplace_back(DeduceROCmPath(ParentPath));
--
-- // Device library may be installed in clang resource directory.
-- ROCmSearchDirs.emplace_back(D.ResourceDir,
-- /*StrictChecking=*/true);
--
-- ROCmSearchDirs.emplace_back(D.SysRoot + "/opt/rocm",
-- /*StrictChecking=*/true);
--
-- // Find the latest /opt/rocm-{release} directory.
-- std::error_code EC;
-- std::string LatestROCm;
-- llvm::VersionTuple LatestVer;
-- // Get ROCm version from ROCm directory name.
-- auto GetROCmVersion = [](StringRef DirName) {
-- llvm::VersionTuple V;
-- std::string VerStr = DirName.drop_front(strlen("rocm-")).str();
-- // The ROCm directory name follows the format of
-- // rocm-{major}.{minor}.{subMinor}[-{build}]
-- std::replace(VerStr.begin(), VerStr.end(), '-', '.');
-- V.tryParse(VerStr);
-- return V;
-- };
-- for (llvm::vfs::directory_iterator
-- File = D.getVFS().dir_begin(D.SysRoot + "/opt", EC),
-- FileEnd;
-- File != FileEnd && !EC; File.increment(EC)) {
-- llvm::StringRef FileName = llvm::sys::path::filename(File->path());
-- if (!FileName.startswith("rocm-"))
-- continue;
-- if (LatestROCm.empty()) {
-- LatestROCm = FileName.str();
-- LatestVer = GetROCmVersion(LatestROCm);
-- continue;
-- }
-- auto Ver = GetROCmVersion(FileName);
-- if (LatestVer < Ver) {
-- LatestROCm = FileName.str();
-- LatestVer = Ver;
-- }
-- }
-- if (!LatestROCm.empty())
-- ROCmSearchDirs.emplace_back(D.SysRoot + "/opt/" + LatestROCm,
-- /*StrictChecking=*/true);
--
-- DoPrintROCmSearchDirs();
-- return ROCmSearchDirs;
-+ ROCmSearchDirs.emplace_back(D.SysRoot + "/usr", /*StrictChecking=*/true);
-+ return ROCmSearchDirs;
- }
-
- RocmInstallationDetector::RocmInstallationDetector(
-@@ -397,7 +272,7 @@ void RocmInstallationDetector::detectDev
- // - ${ROCM_ROOT}/lib/bitcode/*
- // so try to detect these layouts.
- static constexpr std::array<const char *, 2> SubDirsList[] = {
-- {"amdgcn", "bitcode"},
-+ {"lib/amdgcn", "bitcode"},
- {"lib", ""},
- {"lib", "bitcode"},
- };
-@@ -423,42 +298,7 @@ void RocmInstallationDetector::detectDev
- }
-
- void RocmInstallationDetector::detectHIPRuntime() {
-- SmallVector<Candidate, 4> HIPSearchDirs;
-- if (!HIPPathArg.empty())
-- HIPSearchDirs.emplace_back(HIPPathArg.str(), /*StrictChecking=*/true);
-- else
-- HIPSearchDirs.append(getInstallationPathCandidates());
-- auto &FS = D.getVFS();
--
-- for (const auto &Candidate : HIPSearchDirs) {
-- InstallPath = Candidate.Path;
-- if (InstallPath.empty() || !FS.exists(InstallPath))
-- continue;
-- // HIP runtime built by SPACK is installed to
-- // <rocm_root>/hip-<rocm_release_string>-<hash> directory.
-- auto SPACKPath = findSPACKPackage(Candidate, "hip");
-- InstallPath = SPACKPath.empty() ? InstallPath : SPACKPath;
--
-- BinPath = InstallPath;
-- llvm::sys::path::append(BinPath, "bin");
-- IncludePath = InstallPath;
-- llvm::sys::path::append(IncludePath, "include");
-- LibPath = InstallPath;
-- llvm::sys::path::append(LibPath, "lib");
--
-- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> VersionFile =
-- FS.getBufferForFile(BinPath + "/.hipVersion");
-- if (!VersionFile && Candidate.StrictChecking)
-- continue;
--
-- if (HIPVersionArg.empty() && VersionFile)
-- if (parseHIPVersionFile((*VersionFile)->getBuffer()))
-- continue;
--
-- HasHIPRuntime = true;
-- return;
-- }
-- HasHIPRuntime = false;
-+ HasHIPRuntime = true;
- }
-
- void RocmInstallationDetector::print(raw_ostream &OS) const {