-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Whitelist v7 feature for ARM and AARCH64. #47826
Conversation
Needed for `v7` features in `coresimd`. See https://github.com/rust-lang-nursery/stdsimd/blob/b2f7be24d5043a88427f9a5258ca9a51ede6d029/coresimd/src/arm/v7.rs#L40 which used to work but doesn't anymore. r? alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override) |
@bors: r+ rollup |
📌 Commit b32dbbc has been approved by |
Whitelist v7 feature for ARM and AARCH64. Needed for `v7` features in `coresimd`. See https://github.com/rust-lang-nursery/stdsimd/blob/b2f7be24d5043a88427f9a5258ca9a51ede6d029/coresimd/src/arm/v7.rs#L40 which used to work but doesn't anymore. r? alexcrichton
Whitelist v7 feature for ARM and AARCH64. Needed for `v7` features in `coresimd`. See https://github.com/rust-lang-nursery/stdsimd/blob/b2f7be24d5043a88427f9a5258ca9a51ede6d029/coresimd/src/arm/v7.rs#L40 which used to work but doesn't anymore. r? alexcrichton
Why was the |
What should: #[target_feature(enabled = "v7")] unsafe fn foo() {} do on AArch64? If the #[cfg_attr(target_arch = "arm", target_feature(enabled = "v7")]
unsafe fn foo() {} |
It should fail to compile. You should use |
I would be fine with that, but the original reason this was white-listed was for code that works on ARM to work on AArch64 "as is", without modifications. |
If this is an issue, probably this should be made consistent for x86 as well. There are many features in |
I don't think this really makes sense for ARM. x86 and x86_64 are practically identical instruction sets and share the same features. However ARM and AArch64 are effectively completely different instruction sets, and have very different feature lists. |
Isn't AArch64 a super-set of ARM ? All the ARM intrinsics that we have currently implemented are available on AArch64 as well (same name, same llvm intrinsic name, same assembly instruction name, etc.). |
So exactly what is the issue with this coding?? Asking strictly out of curiosity. |
IIUC the problem is that |
This is only actually true for the NEON intrinsics. Many of the remaining intrinsics are only available in the 32-bit instruction set, e.g. DSP ( |
The bit manipulation intrinsics ( |
Needed for
v7
features incoresimd
.See https://github.com/rust-lang-nursery/stdsimd/blob/b2f7be24d5043a88427f9a5258ca9a51ede6d029/coresimd/src/arm/v7.rs#L40 which used to work but doesn't anymore.
r? alexcrichton