[llvm] [Offload] Add support for loongarch64 to host plugin (PR #120173)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 16 18:35:15 PST 2024
https://github.com/wangleiat created https://github.com/llvm/llvm-project/pull/120173
This adds support for the loongarch64 architecture to the offload host
plugin.
Similar to #115773
>From 94fd3789cc55c3f482884a06a7ad9e83964d35e2 Mon Sep 17 00:00:00 2001
From: wanglei <wanglei at loongson.cn>
Date: Tue, 17 Dec 2024 10:35:01 +0800
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
=?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.5-bogner
---
offload/CMakeLists.txt | 2 ++
offload/plugins-nextgen/common/src/Utils/ELF.cpp | 2 ++
offload/plugins-nextgen/host/CMakeLists.txt | 6 +++++-
offload/plugins-nextgen/host/dynamic_ffi/ffi.h | 2 +-
offload/plugins-nextgen/host/src/rtl.cpp | 2 ++
5 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/offload/CMakeLists.txt b/offload/CMakeLists.txt
index 8da95c5c74e445..f6e894d3996859 100644
--- a/offload/CMakeLists.txt
+++ b/offload/CMakeLists.txt
@@ -207,6 +207,8 @@ set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} s390x-ibm-linux-gnu")
set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} s390x-ibm-linux-gnu-LTO")
set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} riscv64-unknown-linux-gnu")
set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} riscv64-unknown-linux-gnu-LTO")
+set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} loongarch64-unknown-linux-gnu")
+set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} loongarch64-unknown-linux-gnu-LTO")
# Once the plugins for the different targets are validated, they will be added to
# the list of supported targets in the current system.
diff --git a/offload/plugins-nextgen/common/src/Utils/ELF.cpp b/offload/plugins-nextgen/common/src/Utils/ELF.cpp
index 10b32440dc8778..44d1c737e2efb9 100644
--- a/offload/plugins-nextgen/common/src/Utils/ELF.cpp
+++ b/offload/plugins-nextgen/common/src/Utils/ELF.cpp
@@ -47,6 +47,8 @@ uint16_t utils::elf::getTargetMachine() {
return EM_PPC64;
#elif defined(__riscv)
return EM_RISCV;
+#elif defined(__loongarch__)
+ return EM_LOONGARCH;
#else
#warning "Unknown ELF compilation target architecture"
return EM_NONE;
diff --git a/offload/plugins-nextgen/host/CMakeLists.txt b/offload/plugins-nextgen/host/CMakeLists.txt
index cbfe4b951af453..e6b3bdf83d7408 100644
--- a/offload/plugins-nextgen/host/CMakeLists.txt
+++ b/offload/plugins-nextgen/host/CMakeLists.txt
@@ -1,4 +1,4 @@
-set(supported_targets x86_64 aarch64 ppc64 ppc64le riscv64 s390x)
+set(supported_targets x86_64 aarch64 ppc64 ppc64le riscv64 s390x loongarch64)
if(NOT ${CMAKE_SYSTEM_PROCESSOR} IN_LIST supported_targets)
message(STATUS "Not building ${machine} NextGen offloading plugin")
return()
@@ -63,4 +63,8 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64$")
list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
"riscv64-unknown-linux-gnu" "riscv64-unknown-linux-gnu-LTO")
set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64$")
+ list(APPEND LIBOMPTARGET_SYSTEM_TARGETS
+ "loongarch64-unknown-linux-gnu" "loongarch64-unknown-linux-gnu-LTO")
+ set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS}" PARENT_SCOPE)
endif()
diff --git a/offload/plugins-nextgen/host/dynamic_ffi/ffi.h b/offload/plugins-nextgen/host/dynamic_ffi/ffi.h
index 8b4e0286d65e3c..4a9e88cc4dc9cc 100644
--- a/offload/plugins-nextgen/host/dynamic_ffi/ffi.h
+++ b/offload/plugins-nextgen/host/dynamic_ffi/ffi.h
@@ -44,7 +44,7 @@ typedef enum ffi_abi {
#if (defined(_M_X64) || defined(__x86_64__))
FFI_DEFAULT_ABI = 2, // FFI_UNIX64.
#elif defined(__aarch64__) || defined(__arm64__) || defined(_M_ARM64) || \
- defined(__riscv)
+ defined(__riscv) || defined(__loongarch__)
FFI_DEFAULT_ABI = 1, // FFI_SYSV.
#elif defined(__powerpc64__)
FFI_DEFAULT_ABI = 8, // FFI_LINUX.
diff --git a/offload/plugins-nextgen/host/src/rtl.cpp b/offload/plugins-nextgen/host/src/rtl.cpp
index 915c41e88c5828..171c202e3e39ea 100644
--- a/offload/plugins-nextgen/host/src/rtl.cpp
+++ b/offload/plugins-nextgen/host/src/rtl.cpp
@@ -442,6 +442,8 @@ struct GenELF64PluginTy final : public GenericPluginTy {
#endif
#elif defined(__riscv) && (__riscv_xlen == 64)
return llvm::Triple::riscv64;
+#elif defined(__loongarch__) && (__loongarch_grlen == 64)
+ return llvm::Triple::loongarch64;
#else
return llvm::Triple::UnknownArch;
#endif
More information about the llvm-commits
mailing list