lowRISC / riscv-llvm

RISC-V support for LLVM projects (LLVM, Clang, ...)
http://www.lowrisc.org/llvm/status/
249 stars 52 forks source link

How to build lli (LLVM JIT) for RISCV? #70

Open Joejiong opened 3 years ago

Joejiong commented 3 years ago

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,

luismarques commented 3 years ago

Hi,

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

Best, Luís