llvm-16.0: Fix some issues in Reactor/LLVMJIT for LoongArch. This CL fixes issues same as RISCV: https://issuetracker.google.com/issues/217573066#comment2 1) JIT Linking on LoongArch is only supported with ObjectLinkingLayer. 2) jitTargetMachineBuilder.getFeatures() on LoongArch does not return the LoongArch CPU extensions, so they are manually added. Bug: swiftshader:178 Change-Id: Ie454f353d617eb96b46f0c082ce6cd205cb43718 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/73328 Reviewed-by: Geoff Lang <geofflang@google.com> Presubmit-Ready: Ben Clayton <bclayton@google.com> Commit-Queue: Geoff Lang <geofflang@google.com> Kokoro-Result: kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Tested-by: Ben Clayton <bclayton@google.com>
diff --git a/src/Reactor/LLVMJIT.cpp b/src/Reactor/LLVMJIT.cpp index 0f61e07..262c69e 100644 --- a/src/Reactor/LLVMJIT.cpp +++ b/src/Reactor/LLVMJIT.cpp
@@ -28,8 +28,8 @@ // See https://groups.google.com/g/llvm-dev/c/CAE7Va57h2c/m/74ITeXFEAQAJ // for information about `RTDyldObjectLinkingLayer` vs `ObjectLinkingLayer`. -// On RISC-V, only `ObjectLinkingLayer` is supported. -#if defined(__riscv) +// On RISC-V and LoongArch, only `ObjectLinkingLayer` is supported. +#if defined(__riscv) || defined(__loongarch__) #define USE_LEGACY_OBJECT_LINKING_LAYER 0 #else #define USE_LEGACY_OBJECT_LINKING_LAYER 1 @@ -250,6 +250,11 @@ // On RISC-V, using the default code model results in an // "Unsupported riscv relocation" error. jitTargetMachineBuilder.setCodeModel(llvm::CodeModel::Medium); +#elif defined(__loongarch__) + // jitTargetMachineBuilder.getFeatures() on LoongArch does + // not return the LoongArch CPU extensions, so they are + // manually added. + jitTargetMachineBuilder.getFeatures().AddFeature("+d"); #endif jitTargetMachineBuilder.setCPU(std::string(llvm::sys::getHostCPUName()));