Support cmake build for loongarch64.

Change-Id: Ida10b617a28f217776332a716387422007383c31
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/76969
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 35003b4..275b717 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -60,6 +60,12 @@
     else()
         message(FATAL_ERROR "Architecture is not supported")
     endif()
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^loongarch.*")
+    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
+        set(ARCH "loongarch64")
+    else()
+        message(FATAL_ERROR "Architecture is not supported")
+    endif()
 else()
     if(CMAKE_SIZEOF_VOID_P EQUAL 8)
         set(ARCH "x86_64")
@@ -204,9 +210,15 @@
 set(REACTOR_BACKEND ${DEFAULT_REACTOR_BACKEND} CACHE STRING "JIT compiler back-end used by Reactor")
 set_property(CACHE REACTOR_BACKEND PROPERTY STRINGS LLVM LLVM-Submodule Subzero)
 
-set(DEFAULT_SWIFTSHADER_LLVM_VERSION "10.0")
-set(SWIFTSHADER_LLVM_VERSION ${DEFAULT_SWIFTSHADER_LLVM_VERSION} CACHE STRING "LLVM version to use")
-set_property(CACHE SWIFTSHADER_LLVM_VERSION PROPERTY STRINGS "10.0")
+if(ARCH STREQUAL "loongarch64")
+  set(DEFAULT_SWIFTSHADER_LLVM_VERSION "16.0")
+  set(SWIFTSHADER_LLVM_VERSION ${DEFAULT_SWIFTSHADER_LLVM_VERSION} CACHE STRING "LLVM version to use")
+  set_property(CACHE SWIFTSHADER_LLVM_VERSION PROPERTY STRINGS "16.0")
+else()
+  set(DEFAULT_SWIFTSHADER_LLVM_VERSION "10.0")
+  set(SWIFTSHADER_LLVM_VERSION ${DEFAULT_SWIFTSHADER_LLVM_VERSION} CACHE STRING "LLVM version to use")
+  set_property(CACHE SWIFTSHADER_LLVM_VERSION PROPERTY STRINGS "10.0")
+endif()
 
 # If defined, overrides the default optimization level of the current reactor backend.
 # Set to one of the rr::Optimization::Level enum values.