Browse Source

Sunway: Add sw_64 support

``sw_64`` is a new RISC ISA, which is a bit like RISC-V.
Verney7 2 months ago
parent
commit
cfbf0480ff

+ 3 - 0
Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst

@@ -123,6 +123,9 @@ targets a UNIX platform.
 ``sparcv9``
   SPARC 64-bit
 
+``sw_64``
+  Sunway
+
 ``x86_64``
   Intel 64-bit
 

+ 2 - 0
Modules/CMakeCompilerABI.h

@@ -114,6 +114,8 @@ static unsigned short const info_byte_order_little_endian[] = {
 #  define ARCHITECTURE_ID "riscv64"
 #elif defined(__riscv) && __riscv_xlen == 32
 #  define ARCHITECTURE_ID "riscv32"
+#elif defined(__sw_64)
+#  define ARCHITECTURE_ID "sw_64"
 #elif defined(__s390x__)
 #  define ARCHITECTURE_ID "s390x"
 #elif defined(__s390__)

+ 2 - 0
Modules/CMakeFortranCompilerABI.F

@@ -113,6 +113,8 @@
         PRINT *, 'INFO:arch[riscv64]'
 #elif defined(__riscv) && __riscv_xlen == 32
         PRINT *, 'INFO:arch[riscv32]'
+#elif defined(__sw_64) || defined(__sw_64__)
+        PRINT *, 'INFO:arch[sw_64]'
 #elif defined(__s390x__)
         PRINT *, 'INFO:arch[s390x]'
 #elif defined(__s390__)

+ 2 - 0
Modules/CMakeFortranCompilerABI.F90

@@ -105,6 +105,8 @@ PRINT *, 'INFO:arch[loongarch64]'
 PRINT *, 'INFO:arch[loongarch32]'
 #elif defined(__m68k__)
 PRINT *, 'INFO:arch[m68k]'
+#elif defined(__sw_64)
+PRINT *, 'INFO:arch[sw_64]'
 #elif defined(__mips64) || defined(__mips64__)
 #  if defined(_MIPSEL)
 PRINT *, 'INFO:arch[mips64el]'

+ 2 - 0
Modules/Internal/CMakeParseCompilerArchitectureId.cmake

@@ -47,6 +47,8 @@ function(cmake_parse_compiler_architecture_id triple arch_id_var)
     set(ARCHITECTURE_ID "riscv64")
   elseif(_dumpmachine_triple MATCHES "^riscv32-")
     set(ARCHITECTURE_ID "riscv32")
+  elseif(_dumpmachine_triple MATCHES "^sunway-")
+    set(ARCHITECTURE_ID "sw_64")
   elseif(_dumpmachine_triple MATCHES "^s390x-")
     set(ARCHITECTURE_ID "s390x")
   elseif(_dumpmachine_triple MATCHES "^s390-")

+ 1 - 1
Utilities/cmlibrhash/librhash/byte_order.h

@@ -77,7 +77,7 @@ extern "C" {
 #elif defined(CPU_IA32) || defined(CPU_X64) || defined(__ia64) || defined(__ia64__) || \
       defined(__alpha__) || defined(_M_ALPHA) || defined(vax) || defined(MIPSEL) || \
       defined(_ARM_) || defined(__arm__) || defined(_M_ARM64) || defined(_M_ARM64EC) || \
-      defined(__loongarch64)
+      defined(__loongarch64) || defined(__sw_64)
 #  define RHASH_BYTE_ORDER RHASH_BYTE_ORDER_LE
 #elif defined(__sparc) || defined(__sparc__) || defined(sparc) || \
       defined(_ARCH_PPC) || defined(_ARCH_PPC64) || defined(_POWER) || \