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

Reply via email to