File 0001-Fix-build-on-riscv64.patch of Package rocMLIR
From 6bdfbddb00d5550902970c05c512c46c2fe5862e Mon Sep 17 00:00:00 2001
From: misaka00251 <liuxin@iscas.ac.cn>
Date: Tue, 26 Nov 2024 15:15:37 +0800
Subject: [PATCH] Fix build on riscv64
diff --git a/external/llvm-project/clang/lib/Basic/Targets/RISCV.h b/external/llvm-project/clang/lib/Basic/Targets/RISCV.h
index 78580b5b1..720ee6989 100644
--- a/external/llvm-project/clang/lib/Basic/Targets/RISCV.h
+++ b/external/llvm-project/clang/lib/Basic/Targets/RISCV.h
@@ -49,6 +49,7 @@ public:
MCountName = "_mcount";
HasFloat16 = true;
HasStrictFP = true;
+ HasFloat128 = true;
}
bool setCPU(const std::string &Name) override {
diff --git a/external/llvm-project/clang/lib/CodeGen/BackendUtil.cpp b/external/llvm-project/clang/lib/CodeGen/BackendUtil.cpp
index 22c3f8642..a1d160411 100644
--- a/external/llvm-project/clang/lib/CodeGen/BackendUtil.cpp
+++ b/external/llvm-project/clang/lib/CodeGen/BackendUtil.cpp
@@ -302,6 +302,7 @@ getCodeModel(const CodeGenOptions &CodeGenOpts) {
.Case("kernel", llvm::CodeModel::Kernel)
.Case("medium", llvm::CodeModel::Medium)
.Case("large", llvm::CodeModel::Large)
+ .Case("extreme", llvm::CodeModel::Large)
.Case("default", ~1u)
.Default(~0u);
assert(CodeModel != ~0u && "invalid code model!");
diff --git a/external/llvm-project/clang/lib/Driver/ToolChains/HIPUtility.cpp b/external/llvm-project/clang/lib/Driver/ToolChains/HIPUtility.cpp
index 08c647dfc..42f91a4e1 100644
--- a/external/llvm-project/clang/lib/Driver/ToolChains/HIPUtility.cpp
+++ b/external/llvm-project/clang/lib/Driver/ToolChains/HIPUtility.cpp
@@ -36,7 +36,7 @@ using llvm::dyn_cast;
#endif
namespace {
-const unsigned HIPCodeObjectAlign = 4096;
+const unsigned HIPCodeObjectAlign = 65536;
} // namespace
// Constructs a triple string for clang offload bundler.
@@ -227,7 +227,12 @@ void HIP::constructHIPFatbinCommand(Compilation &C, const JobAction &JA,
// ToDo: Remove the dummy host binary entry which is required by
// clang-offload-bundler.
+#if defined(__x86_64)
std::string BundlerTargetArg = "-targets=host-x86_64-unknown-linux";
+#elif (defined(__riscv) && __riscv_xlen == 64)
+ std::string BundlerTargetArg = "-targets=host-riscv64-unknown-linux";
+#else
+#endif
// AMDGCN:
// For code object version 2 and 3, the offload kind in bundle ID is 'hip'
// for backward compatibility. For code object version 4 and greater, the
diff --git a/external/llvm-project/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp b/external/llvm-project/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
index 1de1a30a7..718bc1d46 100644
--- a/external/llvm-project/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
+++ b/external/llvm-project/clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp
@@ -404,15 +404,23 @@ fatbinary(ArrayRef<std::pair<StringRef, StringRef>> InputFiles,
SmallVector<StringRef, 16> CmdArgs;
CmdArgs.push_back(*OffloadBundlerPath);
CmdArgs.push_back("-type=o");
+#if defined(__x86_64)
CmdArgs.push_back("-bundle-align=4096");
-
+#elif (defined(__riscv) && __riscv_xlen == 64)
+ CmdArgs.push_back("-bundle-align=4096");
+#else
+#endif
if (Args.hasArg(OPT_compress))
CmdArgs.push_back("-compress");
if (auto *Arg = Args.getLastArg(OPT_compression_level_eq))
CmdArgs.push_back(
Args.MakeArgString(Twine("-compression-level=") + Arg->getValue()));
-
+#if defined(__x86_64)
SmallVector<StringRef> Targets = {"-targets=host-x86_64-unknown-linux"};
+#elif (defined(__riscv) && __riscv_xlen == 64)
+ SmallVector<StringRef> Targets = {"-targets=host-riscv64-unknown-linux"};
+#else
+#endif
for (const auto &[File, Arch] : InputFiles)
Targets.push_back(Saver.save("hipv4-amdgcn-amd-amdhsa--" + Arch));
CmdArgs.push_back(Saver.save(llvm::join(Targets, ",")));
diff --git a/mlir/tools/xmir-runner/CMakeLists.txt b/mlir/tools/xmir-runner/CMakeLists.txt
index 81f484a51..bc88a0a7f 100644
--- a/mlir/tools/xmir-runner/CMakeLists.txt
+++ b/mlir/tools/xmir-runner/CMakeLists.txt
@@ -14,6 +14,10 @@ if(MLIR_ENABLE_ROCM_RUNNER)
${rocmlir_conversion_libs}
${rocmlir_test_libs}
LLVMX86AsmParser
+ LLVMX86Desc
+ LLVMX86CodeGen
+ LLVMX86Info
+ LLVMRISCVArchAsmParser
MLIRMHAL
MLIRMHALTransforms
MLIRMHALPipeline
--
2.47.0