-
Notifications
You must be signed in to change notification settings - Fork 280
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
Complete the remaining neon instructions #1230
Conversation
r? @Amanieu (rust-highfive has picked a reviewer for you, use r? to override) |
4a75f6b
to
818e547
Compare
There seems to be some problems with the CI of aarch64-apple-darwin. Could get some help? |
|
#1231 is now merged, can you rebase? |
Does this mean that we now have 100% coverage of the neon intrinsics? Is there anything still missing? |
|
Except for the following instructions that I cannot complete the implement by myself:
I hope to get some help, or decide whether to not implment them at current. |
7083b3e
to
2873d80
Compare
@Amanieu |
LGTM! Could you update the intrinsic tests (which compare with the C version) to enable all the newly added intrinsics. You just need to edit the first column of crates/intrinsic-test/neon-intrinsics.csv. |
It seems that the intrinsics test tool needs some updates to support multi-vector (such as |
I have actually made that change for the types, and a few other changes to the tool so that it works with the intrinsic's that have constraints on them. I plan to open a pull request by the end of the week for that. I ran this pull request the other day with those changes and there wasn't any differences. @Amanieu To do the constraints I have had to change the data source, so if you want to merge this when I open the pull request for my changes I can add these to that list. |
OK, let's revert the intrinsic checker changes in this PR for now so we can merge this. |
This PR completes the remaining neon instructions, except for the following instructions:
The following instructions are only available in aarch64 now, because the corresponding
target_feature
cannot be found in the available features of arm:vcadd_rot
、vcmla
、vdot
The feature
i8mm
is not valid:vmmla
、vusmmla
: https://rust.godbolt.org/z/8GbKW5ef4LLVM ERROR(Can be reproduced in godbolt):
vsm4e
: https://rust.godbolt.org/z/xhT1xvGTPLLVM ERROR(Normal in gotbolt, but
LLVM ERROR: Cannot select: intrinsic
raises at runtime)vsudot
、vusdot
: https://rust.godbolt.org/z/aMnEvab3nvqshlu
: https://rust.godbolt.org/z/hvGhrhdMTNot implmented in LLVM and cannot be implemented manually:
vmull_p64
(for arm)、vsm3
、vrax1q_u64
、vxarq_u64
、vrnd32
、vrnd64
、vsha512
Update #148