diff --git a/cmake/arch.cmake b/cmake/arch.cmake index 154e59db6..57ee5a4fb 100644 --- a/cmake/arch.cmake +++ b/cmake/arch.cmake @@ -113,6 +113,10 @@ if (MIPS64) set(NO_BINARY_MODE 1) endif () +if (LOONGARCH64) + set(NO_BINARY_MODE 1) +endif () + if (${ARCH} STREQUAL "alpha") set(NO_BINARY_MODE 1) set(BINARY_DEFINED 1) diff --git a/cmake/cc.cmake b/cmake/cc.cmake index ac5e455d5..1794b5e5b 100644 --- a/cmake/cc.cmake +++ b/cmake/cc.cmake @@ -29,6 +29,15 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LS set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64") endif () + if (LOONGARCH64) + if (BINARY64) + set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp64") + else () + set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=lp32") + endif () + set(BINARY_DEFINED 1) + endif () + if (CMAKE_SYSTEM_NAME STREQUAL "AIX") set(BINARY_DEFINED 1) endif () diff --git a/cmake/fc.cmake b/cmake/fc.cmake index fc1f9bb22..631664569 100644 --- a/cmake/fc.cmake +++ b/cmake/fc.cmake @@ -61,6 +61,13 @@ if (${F_COMPILER} STREQUAL "GFORTRAN") set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=n32") endif () endif () + if (LOONGARCH64) + if (BINARY64) + set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp64") + else () + set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=lp32") + endif () + endif () else () if (BINARY64) set(FCOMMON_OPT "${FCOMMON_OPT} -m64") diff --git a/cmake/system_check.cmake b/cmake/system_check.cmake index fdc79c8ce..8d0558c0e 100644 --- a/cmake/system_check.cmake +++ b/cmake/system_check.cmake @@ -38,6 +38,8 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc.*|power.*|Power.*") set(PPC 1) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64.*") set(MIPS64 1) +elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64.*") + set(LOONGARCH64 1) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") if (NOT BINARY) if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") @@ -95,7 +97,7 @@ else() endif () if (NOT BINARY) - if (X86_64 OR ARM64 OR PPC OR MIPS64) + if (X86_64 OR ARM64 OR PPC OR MIPS64 OR LOONGARCH64) set(BINARY 64) else () set(BINARY 32) diff --git a/kernel/loongarch64/KERNEL b/kernel/loongarch64/KERNEL index e96a90e72..1c11df9b6 100644 --- a/kernel/loongarch64/KERNEL +++ b/kernel/loongarch64/KERNEL @@ -234,3 +234,5 @@ endif ifndef ZGEMM3MKERNEL ZGEMM3MKERNEL = zgemm3m_kernel.S endif + +DSDOTKERNEL = dot.S