-
Notifications
You must be signed in to change notification settings - Fork 12.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crash when trying to compile i32x4 type with VE backend #64420
Comments
I'm sorry, but the VE backend doesn't handle the fixed length SIMD type vectors from LLVM-IR. It needs VP intrinsics like mentioned in https://llvm.org/docs/Proposals/VectorPredication.html |
are there plans to support them? currently rustc uses fixed length vectors to avoid memcpy for small integer arrays and clang emits them when using ve intrinsics. The second occurrence may be superseded by VP intrinsics, but the first most likely won't, and going back to using memcpy in rustc will worsen codegen. |
The unstable portable simd support of rust also uses fixed length vectors. |
Hi @lenawanel , thank you for the informing problem for us. I have a similar error if I run llc like below.
Our implementation has following two problems.
If I use
This error caused by 2nd reason, "VP part is not upstreamed completely." I'll investigate it this week to see what I can do for this. |
Just an update, we have following 3 problems actually. I've fixed 1 and 2. Both are merged upstream. I'm working on 3 now.
So, if you want to run your TP under scalar mode, it works fine like below now.
|
alright, thank you very much. I'm closing the issue now, since you gave a solution. |
@lenawanel -san, I've fixed 3rd problem at 2e23956 and merged it also.
Need to optimize it, though. I'll improve it to broadcast to v4i32 instead of v256i32 and use scalar code if the length is not long enough. |
compiling the following code with llc:
crashes with
backtrace
this issue was encountered while trying to port rust to the NEC Vector Engine and doesn't occur when using SX-Aurora TSUBASA Research's llvm fork.
this requires llvm to be built with the VE backend enabled. (-DLLVM_TARGETS_TO_BUILD="X86;VE")
tested on commit 16a0fc2.
The text was updated successfully, but these errors were encountered: