llvm-project version:dd8a2013dc1804be1b7d9cffacad2e984300bd22
Instructons to build LLVM+clang:
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/home/llvm/workspace/llvm/llvm-project/llvm_install -DCMAKE_BUILD_TYPE="Release" -DDEFAULT_SYSROOT="/home/llvm/workspace/riscv/riscv-tc-20200220/bin/riscv32-unknown-elf" -DGCC_INSTALL_PREFIX="/home/llvm/workspace/riscv/riscv-tc-20200220" -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf" -DLLVM_ENABLE_PROJECTS="clang;lld;libc" -DLLVM_TARGETS_TO_BUILD="RISCV" ../llvm
When compiling the obj file for the RTL simulation platform, everything is ok.
But when I try to run the bc file using lli, I have such an error.
#../llvm/llvm-project/llvm_install/bin/lli main.ll
../llvm/llvm-project/llvm_install/bin/lli: error: error creating EE: Unable to find target for this triple (no targets are registered)
Clang & lli version(Confusion About " riscv32-unknown-unknown-elf " WITH " riscv32-unknown-elf "):
$ ../llvm/llvm-project/llvm_install/bin/clang --version
clang version 11.0.0 ([https://github.com/llvm/llvm-project.git](https://github.com/llvm/llvm-project.git) dd8a2013dc1804be1b7d9cffacad2e984300bd22)
Target: riscv32-unknown-unknown-elf
Thread model: posix
InstalledDir: /home/llvm/workspace/test_lli/../llvm/llvm-project/llvm_install/bin
$ ../llvm/llvm-project/llvm_install/bin/lli --version
LLVM ([http://llvm.org/](http://llvm.org/)):
LLVM version 11.0.0git
Optimized build.
Default target: riscv32-unknown-elf
Host CPU: skylake
Instructons to generate main.ll:
../llvm/llvm-project/llvm_install/bin/clang --target=riscv32-unknown-elf --sysroot=/home/llvm/workspace/riscv/riscv-tc-20200220/bin/riscv32-unknown-elf --gcc-toolchain=/home/llvm/workspace/riscv/riscv-tc-20200220 -march=rv32imac -mabi=ilp32 -I/home/llvm/workspace/llvm/llvm-project/llvm_install/riscv32-unknown-elf/include -S -emit-llvm main.c
#include <stdio.h>
int main(){
int a,b,c;
a = 5;
b = 2;
asm volatile
(
"norm %[z], %[x]\n\t"
: [z] "=r" (c)
: [x] "r" (a)
) ;
if ( c != 28 ){
printf("\nHAAWKING TEST: FAILED\n");
return -1;
}
printf("\nHAAWKING TEST: PASSED\n");
return 0;
}
Since I add some custom instructions to the RISC-V ISA and have not got a simulator, so I want to check out whether these instructions using lli.
Can anyone figure out why this happens?