riscv-llvm icon indicating copy to clipboard operation
riscv-llvm copied to clipboard

How to build lli (LLVM JIT) for RISCV?

Open Joejiong opened this issue 3 years ago • 1 comments

Hi everyone,

I am trying to build a JIT for the RISC-V platform, but I could not figure out how. Could you provide some hints? Great thanks!

Initially, I found that LLVM has RISCV backend, and I compiled it following the instructions here https://github.com/lowRISC/riscv-llvm. I got a cross-compiler version of clang (running on x86 and the generated binary runs on RISC-V), but the lli is still a X86 tool.

Then, I tried to build LLVM with riscv-gnu-toolchain https://github.com/riscv/riscv-gnu-toolchain, and I got many tools such as llc working on RISC-V properly. However, the lli still could not work properly. When I tried to process the LLVM bytecode file (.ll file) on RISC-V using lli, I got the error: error creating EE: No available targets are compatible with this triple. Furthermore, when I typed: ./lli --version, I got:

Default target:
x86_64-unknown-linux-gnu  
Host CPU: (unknown)

But when I typed: llc -version (llc works fine), I got:

  DEBUG build with assertions.
  Default target: x86_64-unknown-linux-gnu
  Host CPU: (unknown)
  Registered Targets:
    riscv32 - 32-bit RISC-V
    riscv64 - 64-bit RISC-V
    x86     - 32-bit X86: Pentium-Pro and above
    x86-64  - 64-bit X86: EM64T and AMD64

It seems that the lli tool does not support RISC-V target.

Could anyone give me some hints? Thank you so much!!

Best,

Joejiong avatar Aug 28 '21 15:08 Joejiong

Hi,

You aren't doing anything wrong. lli does not, in fact, support RISC-V.

Best, Luís

luismarques avatar Aug 28 '21 20:08 luismarques