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_featurecannot be found in the available features of arm:vcadd_rot、vcmla、vdotThe feature
i8mmis 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: intrinsicraises 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、vsha512Update #148