recallmenot added a comment. In D70401#4205333 <https://reviews.llvm.org/D70401#4205333>, @pcwang-thead wrote:
> In D70401#4204511 <https://reviews.llvm.org/D70401#4204511>, @recallmenot > wrote: > >> Hi, I'm working on CH32V003 for rust and it uses RV32EC core. >> I tried replacing my distros llvm and clang with a patched version of this >> like this: >> >> git clone https://aur.archlinux.org/llvm-git.git >> cd llvm-git >> mkdir src >> cd src >> git clone https://github.com/llvm/llvm-project.git >> cd llvm-project >> arc patch D70401 >> cd ../.. >> mv llvm-config.h src/ >> makepkg -es >> sudo pacman -Rd --nodeps clang llvm >> makepkg -eid >> >> but that bricked my xfce-wayland-manjaro DE (one screen black) >> And in config.toml if I put >> >> [build] >> target = "riscv32i-unknown-none-elf" >> rustflags = [ >> "-C", "target-feature=+e,+c" >> ] >> >> then build with cargo build >> LLVM still complains it doesn't implement CodeGen for RV32E yet >> What am I doing wrong? >> Ended up reverting to repository llvm and clang, desktop now works again but >> CodeGen is obviously missing. > > I don't see any obvious problem here. > I am not familiar with rust. Is `riscv32i-unknown-none-elf` a valid target > for `rustc`, it should be something like `riscv32-unknown-elf` in LLVM I > think. And is `target-feature=+e,+c` the right way to specify features? > Can you please provide the whole command/arguments passed to LLVM? Yeah so I looked at the at the target files of rustc, telling rustc to do RV32I will indeed result in RV32 and the way to enable the E and C features seems to be correct, BUT: rust uses their own "special sauce" version of llvm and rustc needs to be built against that to enable the new features. I tried to apply (patch) the diff directly to rusts llvm branch but there were many errors, and I couldn't figure out how to apply them manually since some things are different. I'm stuck, this is all way beyond my understanding. Sorry I can't test it for you guys. What I did was: git clone https://github.com/rust-lang/rust.git cd rust nvim config.toml [llvm] download-ci-llvm = false then I started building with ./x.py build and as soon as the rust-llvm source was downloaded completely I aborted (CTRL+C). then downloaded the raw diff from this page (button top right) into the rust llvm dir, opened a terminal in that dir and tried to patch with patch -p1 < D70401.diff but that gives lots of errors resolving them manually seems way beyond me, especially since patch seems to already use fuzzy matching Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70401/new/ https://reviews.llvm.org/D70401 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits